Flutter 仓库中的 bare-agent:一个无技能、无人设的“干净”Agent 配置详解
本文以 Flutter 仓库 .agents/agents/bare-agent/README.md 为核心,结合同目录下的 agent.json 与 config.yaml 实际配置,讲清楚 bare-agent(裸 Agent)的定位、触发场景及其“零技能、零人设”的精确实现方式,并对比仓库内其他 Agent 的配置差异,帮助你在贡献 Flutter 代码时正确选择并使用这类 Agent。
什么是 bare-agent,以及什么时候该用它
bare-agent 是 Flutter 仓库 .agents/agents/ 目录下维护的一组自主 Agent 配置之一。根据 README 的说明,其使用场景非常明确:
- 当你想要一块“白板”(clean slate),不加载任何预配置的技能(skills)或定制化人设(persona) 时,应选用 bare-agent;
- 它依然可以访问已安装的 MCP(Model Context Protocol)服务器,但其行为完全由你自己的提示词(prompts)来引导;
- 它最适合通用型任务——那些你不想让任何专业化指令或工具集开销(toolset overhead)污染上下文(pollute the context)的场景。
从 agent.json 中的描述可以看到,官方对其定位的一句话概括是:
"An agent that only inherits MCP servers and only includes proven reliable skills." (一个只继承 MCP 服务器、只包含经过验证的可靠技能的 Agent。)
这与 README 的“无预配置技能”表述互补:bare-agent 继承了 MCP 服务器的工具能力,但刻意剥离了技能注入和人设提示词,把“行为定义权”完全交还给使用者的提示词。
配置文件解析:bare-agent 的“干净”是如何实现的
bare-agent 目录只有两个配置文件,这正是它极简设计的体现。
agent.json:Agent 的身份声明
agent.json 的完整内容只有三个字段:
{
"name": "bare-agent",
"description": "An agent that only inherits MCP servers and only includes proven reliable skills.",
"configPath": {
"relativePathToConfig": "config.yaml"
}
}
name:Agent 的唯一标识,与目录名bare-agent一致;description:供使用者快速判断是否选它的摘要描述;configPath.relativePathToConfig:指向同目录下的config.yaml,声明具体的行为配置位置。
config.yaml:关闭技能继承的最小化配置
config.yaml 全文如下:
coding_agent:
agentic_mode: true
google_mode: false
customization_config:
customization_discovery_config:
skills:
inherit_user: false
skills_paths: []
逐字段解读:
| 字段 | 取值 | 含义 |
|---|---|---|
coding_agent.agentic_mode |
true |
启用 agentic 模式,允许 Agent 以自主方式多轮调用工具完成任务 |
coding_agent.google_mode |
false |
关闭 Google 模式 |
customization_config.customization_discovery_config.skills.inherit_user |
false |
不继承用户个人技能——这是“白板”的关键:即使你本地或仓库中存在其他技能,也不会被注入该 Agent 的上下文 |
customization_config.customization_discovery_config.skills.skills_paths |
[] |
不挂载任何额外的技能路径 |
对比同目录下其他 Agent 的配置,bare-agent 的“空”是刻意为之:
- android-agent 的 config.yaml 在
prompt_section_customization.append_prompt_sections中注入了identity段落(“You are an Android-focused agent in the Flutter codebase...”)和Environment Verification段落(要求 Agent 在每次新会话的第一步检查.agents/skills目录是否存在技能,若缺失则提示用户执行cd .agents/agents/android-agent && npx skills experimental_install拉取),且inherit_user: true; - ios-agent 的 config.yaml 同样注入 iOS/Swift/Objective-C/Xcode 方向的
identity段落,并通过skills_paths挂载workspace_relative: ".agents/agents/ios-agent/skills"; - reidbaker-agent 的 config.yaml 则注入了一段长度可观的个人化“世界级专家”人设提示词,并挂载本地技能路径
.agents/agents/reidbaker-agent/skills。
也就是说,bare-agent 与其余 Agent 的差异恰好体现在三个维度:没有 prompt_section_customization 人设段落、inherit_user 设为 false、skills_paths 为空数组。这也印证了 .agents/agents/README.md 中对 Agent 体系的总体设计哲学:仓库长期目标是维护“按角色或团队划分的技能与 Agent 集合”(如 android-agent),而 bare-agent 则作为其中不带任何偏向的通用底座存在。
选型建议:bare-agent 与角色 Agent 如何取舍
结合上述配置差异,可以给出实用的选型规则:
- 选 bare-agent 的情形:任务横跨多个子领域、难以归入 Android/iOS 等单一方向;或者你需要 Agent 的行为完全由当前提示词决定,不希望任何仓库内置的人设措辞或技能文档挤占上下文预算。此时你提供的提示词就是唯一的“系统指令”。
- 选角色 Agent 的情形:任务明确落在 Android 嵌入层、Java/Kotlin/Gradle(选 android-agent)或 iOS/Xcode 工具链(选 ios-agent)范围内。这类 Agent 的
identity段落会预先约束 Agent 的专业焦点,Environment Verification段落还会在技能缺失时主动中止并给出安装命令,减少跑偏概率。 - 关于 MCP 能力:无论选用哪种 Agent,bare-agent 保留了对已安装 MCP 服务器的访问权限;区别仅在于是否额外叠加技能与人设。因此“不加载技能”不等于“没有工具”,MCP 提供的工具能力依然可用。
在仓库中定位与扩展 Agent 的规范
如果你需要查看 bare-agent 或为其周边添加 Agent,仓库给出了明确的组织与验证规范(见 .agents/agents/README.md):
- CODEOWNERS 归属:与独立技能一样,每个 Agent 目录都必须在仓库根目录的
CODEOWNERS文件中指派明确的负责人或团队; - 技能验证注册:任何为 Agent 撰写的本地技能(即
.agents/agents/<agent_name>/skills/下的文件,而非通过npx安装的第三方依赖)必须注册进仓库的技能验证测试套件dev/tools/test/validate_skills_test.dart; - 个人化 Agent 的归宿:像
reidbaker-agent这样的个人 Agent 目前保留在中心仓库,主要是为了让贡献者体验完整的端到端 Agent 工作流;仓库方声明,一旦个性化配置数量达到临界点,个人 Agent 将被弃用并移出中心仓库,转由作者托管在自己的 GitHub 仓库中。
这一治理规则对理解 bare-agent 的定位也有帮助:它不属于“个人 Agent”,而是面向全体贡献者的通用基础设施级配置,因此其“零配置”设计必须保持稳定的最小语义——只继承 MCP 服务器,不继承技能。
小结
bare-agent 的价值在于用最少的配置面换取最大的提示词自由度:config.yaml 中 inherit_user: false 加空 skills_paths 的组合,从机制上杜绝了技能注入与人设污染;agent.json 则明确了它“仅继承 MCP 服务器”的能力边界。当你在 Flutter 仓库中发起一次与具体平台团队无关的通用型 Agent 会话时,它是上下文最干净、行为最可预期的选择;而当任务明确落入 Android 或 iOS 的专业领域时,带 identity 段落的角色 Agent 会是更高效的选择。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00