为什么要这张表

一个 agent 文件顶部的 frontmatter 写什么、怎么写,决定了这个 agent 能干什么、会不会乱跑。官方文档把 16 个字段分散在多处,这里集中成一张表,方便你对着自己的 .md 文件逐行核对。用不上的字段不填即可,只有 namedescription 是必填的。


字段全集表(16 个)

字段是否必填类型含义举例
name必填stringagent 唯一标识,只用小写字母和连字符my-reviewer
description必填string什么时候交给它——这是 Claude 判断”该不该派它”的主要依据;写 "PROACTIVELY" 可触发 Claude 主动调用Review code after edits. PROACTIVELY suggest when files change.
tools选填string / list允许使用的工具白名单,逗号分隔;不填则继承所有工具;支持 Agent(agent_type) 语法限制可派生的子 agentRead, Grep, Glob
disallowedTools选填string / list禁止使用的工具黑名单,从已继承或已指定的列表里移除Bash, Write
model选填string使用哪个模型:sonnet / opus / haiku / 完整模型 ID / inherit(默认)haiku
permissionMode选填string权限模式:default / acceptEdits / auto / dontAsk / bypassPermissions / planacceptEdits
maxTurns选填integer最多跑几轮 agentic turn,超过后自动停5
skills选填list启动时预加载的 skill 名称列表(完整内容注入,不是只让它”知道”)[kb-compile, kb-lint]
mcpServers选填list该 agent 专用的 MCP 服务器,写服务器名字符串或内联 {name: config} 对象[context7]
hooks选填object该 agent 作用域内的生命周期钩子,支持所有 hook 事件,最常用的是 PreToolUse / PostToolUse / Stop{Stop: [{type: command, command: echo done}]}
memory选填string持久记忆范围:user / project / localproject
background选填boolean设为 true 则始终以后台任务方式运行(默认 falsetrue
effort选填string覆盖当前 session 的算力档位:low / medium / high / max(仅 Opus 4.6 支持);默认继承 sessionlow
isolation选填string设为 "worktree" 则在临时 git worktree 里跑,没有变更时自动清理"worktree"
initialPrompt选填string当 agent 以主 session 身份启动(--agentagent 设置)时,自动作为第一个用户 turn 提交,会处理其中的 commands 和 skills,并前置于用户输入"先读 CLAUDE.md,再等待任务。"
color选填string该 agent 在任务列表和对话记录里显示的颜色:red / blue / green / yellow / purple / orange / pink / cyanblue

常用 3 个字段的深讲

model — 省钱最直接的一个字段

“Model to use: sonnet, opus, haiku, a full model ID (e.g., claude-opus-4-6), or inherit (default: inherit)” — CCBP 原文

人话:不填就跟主 session 用同一个模型。但如果某个 agent 只做搜索和读文件,写 model: haiku 能明显省 token。反过来,负责最终决策的 agent 可以单独升到 opus。这个字段是”按需定级”最简单的入口。

permissionMode — 控制它能不能直接改文件

“Permission mode: default, acceptEdits, auto, dontAsk, bypassPermissions, or plan — CCBP 原文

人话:default 每次改文件都问你确认;acceptEdits 静默接受所有文件编辑但其他操作还问;bypassPermissions 完全跳过确认(危险,谨慎用);plan 只出计划不动文件。如果你让一个 agent 做评审,设成 plan 最稳——它物理上就写不了东西。

tools — 角色边界最具体的一环

“Comma-separated allowlist of tools (e.g., Read, Write, Edit, Bash). Inherits all tools if omitted. Supports Agent(agent_type) syntax to restrict spawnable subagents” — CCBP 原文

人话:不填等于什么工具都能用,风险最大。一个只做代码审查的 agent,填 Read, Grep, Glob 就够了——它连 Write 都没有,物理上改不了文件,边界最清晰。Agent(agent_type) 是进阶写法,限制这个 agent 只能派特定类型的子 agent,防止它随便开分支。


容易踩坑的字段

坑 1:description 写太模糊

description 是 Claude 判断”现在该派哪个 agent”的主要依据。写”帮我处理任务”这种话,Claude 不知道什么时候该触发它。应该写具体场景,比如”审查改完的代码,找可读性问题和潜在风险”。如果想让 Claude 主动调用,在 description 里写上 PROACTIVELY

坑 2:tools 不填以为”没关系”

不填 tools 等于继承所有工具,包括 Bash(可以跑任意命令)。如果你的 agent 只是一个”读-分析-输出”角色,给它 Bash 权限等于留了一个后门。最小权限原则:只填它真正需要的工具。

坑 3:skills 和”让 agent 知道有哪些 skill”是两回事

skills 字段设计是”预加载”——把 skill 的完整内容直接注入 agent 的 context,不是告诉它”有这个 skill 可以调”。所以列越多,context 越重。只加真正每次都要用的 skill,其余的按需调用。


关联

  • 基础定义见 02-agent(agent 是什么、三件事、常见误解)
  • 被派出去独立跑时的机制见 04-subagent
  • 这 16 个字段与具体运行环境的关系,见正本”技术机制”一节

来源/Users/chenbin/Documents/Personal Kingdom/知识库/素材_AI使用/项目样本/claude-code-best-practice/github-mirror/claude-code-best-practice/best-practice/claude-subagents.md(CCBP v2.1.101 · 原版 Frontmatter Fields 表,字段数 = 16)