命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
为当前会话指定一个 agent(覆盖默认设置)
--agent <name>claude --agent my-custom-agent--agent <name> 用于指定当前会话使用哪个 agent(subagent 定义),效果是把整个主线程变身为该 agent 的角色,而不是像 Task 委派那样另外派生一个并行的子 agent。
指定后会同时替换三样东西:
--system-prompt)接受值是一个 agent 名字字符串,对应 .claude/agents/(项目级)、~/.claude/agents/(个人级)下某个 markdown 文件 frontmatter 里的 name 字段,或通过 --agents CLI flag 以 JSON 内联定义的 agent。未指定 --agent 时,若 .claude/settings.json 配置了 "agent" 键,会话默认使用该 agent;两者都没有则使用 Claude Code 默认系统提示词。
一个例外:即便 agent 定义中设置了 omitClaudeMd: true,CLAUDE.md 文件仍会通过消息流正常加载。
claude --agent my-custom-agent
对应的 agent 定义文件(项目级示例):
---
name: code-reviewer
description: Reviews code for quality and best practices
tools: Read, Glob, Grep
model: sonnet
permissionMode: default
---
You are a code reviewer. When invoked, analyze the code and provide
specific, actionable feedback on quality, security, and best practices.
也可以不落文件,直接用 --agents 以 JSON 一次性定义并配合 --agent 选用:
claude --agents '{
"code-reviewer": {
"description": "Expert code reviewer",
"prompt": "You are a senior code reviewer...",
"tools": ["Read", "Grep", "Glob", "Bash"],
"model": "sonnet"
}
}' --agent code-reviewer
未见到与之对应的环境变量。
--bg:可组合,让指定 agent 以后台 agent 方式运行某个任务,例如 claude --bg --agent my-custom-agent "task description"。--resume:会话被恢复时,之前选定的 agent 会持续生效;若该 agent 已不存在,会话会继续使用默认工具,并显示点名该 agent 的警告,而不是报错终止。--agents:常搭配使用——先用 --agents 以 JSON 内联定义一个或多个 agent,再用 --agent <name> 选中其中之一运行。--system-prompt:官方文档指出 --agent 对系统提示词的效果"等价于使用 --system-prompt",即用 agent 定义里的内容整体替换默认系统提示词,二者本质上作用在同一处(都是替换系统提示词)。--append-subagent-system-prompt / --append-subagent-system-prompt-file:用于向 subagent 的系统提示词追加内容,与 --agent 属于相关但不同的机制。| flag | env | settings.json |
|---|---|---|
--agent <name> | 未见到已文档化的等价 env var | "agent": "<name>" |
CLI flag 优先级更高:若 .claude/settings.json 里设置了 "agent",命令行传入的 --agent 会覆盖它。
| 约束 | 原因 |
|---|---|
传入的 agent 名必须已在 .claude/agents/、~/.claude/agents/ 或当前会话 --agents JSON 中定义 | 否则 resume 会话时找不到该 agent,会话会继续使用默认工具,并显示点名该 agent 的警告 |
CLAUDE.md 依然会加载,即使 agent frontmatter 设了 omitClaudeMd: true | 官方文档明确将其列为该机制下的例外行为 |
--agent,而不是每次用 @agent-<name> 这类 @-mention 指定某个 subagent 去处理任务。--bg 组合,让指定 agent 以后台方式独立跑一个任务。--agent 与 @-mention 调用方式的区别容易混淆:@agent-<name>(或在选择器里选中 code-reviewer (agent))只是指定 Claude 调用哪个 subagent,不会把主线程变成该 agent;而 --agent 是把整个主线程变成该 agent,作用范围是整个会话。--agent 启动的会话被 resume,而对应的 agent 定义文件已被删除或改名,Claude Code 不会报错中止,而是继续使用默认工具并显示警告——容易在没注意到警告的情况下,误以为仍在用原 agent 的受限工具集工作。修复 `--agent` 会话中子 agent 被告知某个内置工具已在整个会话中禁用的问题(实际只是其自身工具列表未包含该工具)。
修复 `claude agents` 自动更新后丢失 flag
修复无法找到未加 plugin: 前缀的插件贡献的 agent 的问题
现在遵守 agent 定义的 permissionMode
现在支持在 SessionStart hook 中填充 agent_type 字段
新增 CLI 参数覆盖当前会话的 agent 配置