SpyBara
Go Premium

Documentation 2026-10-18 22:59 UTC to 2026-10-19 23:58 UTC

68 files changed +1,304 −748. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

291| :- | :- | :- |291| :- | :- | :- |

292| **系统提示** | 每个请求 | 小的固定成本,始终存在 |292| **系统提示** | 每个请求 | 小的固定成本,始终存在 |

293| **CLAUDE.md 文件** | 会话开始,通过 [`settingSources`](/docs/zh-CN/agent-sdk/claude-code-features) | 每个请求中的完整内容(但提示缓存,所以仅第一个请求支付全部成本) |293| **CLAUDE.md 文件** | 会话开始,通过 [`settingSources`](/docs/zh-CN/agent-sdk/claude-code-features) | 每个请求中的完整内容(但提示缓存,所以仅第一个请求支付全部成本) |

294| **工具定义** | 每个请求;MCP 架构默认延迟 | 内置工具架构在每个请求中加载。[工具搜索](/docs/zh-CN/agent-sdk/mcp#mcp-tool-search)默认延迟 MCP 工具架构,在不支持的模型和某些平台上回退到预先加载。有关完整矩阵,请参阅[配置工具搜索](/docs/zh-CN/agent-sdk/tool-search#configure-tool-search) |294| **工具定义** | 对于 Bash、Read 和 Edit 等核心内置工具,每个请求都会加载;对于 MCP 工具和其他内置工具则按需加载,[工具搜索](/docs/zh-CN/agent-sdk/mcp#mcp-tool-search)默认会延迟加载这些工具 | 在[配置工具搜索](/docs/zh-CN/agent-sdk/tool-search#configure-tool-search)中列出的情况下,所有 schema 都会预先加载 |

295| **对话历史** | 在轮次中累积 | 随着每个轮次增长:提示、响应、工具输入、工具输出 |295| **对话历史** | 在轮次中累积 | 随着每个轮次增长:提示、响应、工具输入、工具输出 |

296| **技能描述** | 会话开始,通过设置源 | 简短摘要;完整内容仅在调用时加载 |296| **技能描述** | 会话开始,通过设置源 | 简短摘要;完整内容仅在调用时加载 |

297 297 


331 331 

332对于长时间运行的代理的几个策略:332对于长时间运行的代理的几个策略:

333 333 

334* **为子任务使用子代理。** 每个子代理以全新的对话开始(没有先前的消息历史,但它确实会加载自己的系统提示词和项目级上下文,如 CLAUDE.md)。它看不到父级的轮次,只有其最终回复会返回给父级。主 Agent 的上下文只会增加该摘要,而不是完整的子任务会话记录。有关详情,请参阅[子代理继承什么](/docs/zh-CN/agent-sdk/subagents#what-subagents-inherit)。334* **为子任务使用子代理。** 子代理只返回其最终回复,因此主 Agent 的上下文只会增加一份摘要,而不是子任务的会话记录。

335* **对工具有选择性。** 每个工具定义占用上下文空间。在 [`AgentDefinition`](/docs/zh-CN/agent-sdk/subagents#agentdefinition-configuration) 上使用 `tools` 字段将子代理限制在它们需要的最小集合。335* **对工具有选择性。** 每个工具定义占用上下文空间。在 [`AgentDefinition`](/docs/zh-CN/agent-sdk/subagents#agentdefinition-configuration) 上使用 `tools` 字段将子代理限制在它们需要的最小集合。

336* **监视 MCP 服务器成本。** [MCP 工具搜索](/docs/zh-CN/agent-sdk/mcp#mcp-tool-search)默认延迟 MCP 工具架构,并按需加载它们。当工具搜索关闭或已回退到预先加载时,每个 MCP 服务器将其所有工具架构添加到每个请求,因此具有许多工具的几个服务器可以在代理执行任何工作之前消耗大量上下文。有关应用回退的配置,请参阅[配置工具搜索](/docs/zh-CN/agent-sdk/tool-search#configure-tool-search)。336* **监视 MCP 服务器成本。** [MCP 工具搜索](/docs/zh-CN/agent-sdk/mcp#mcp-tool-search)默认延迟 MCP 工具架构,并按需加载它们。当工具搜索关闭或已回退到预先加载时,每个 MCP 服务器将其所有工具架构添加到每个请求,因此具有许多工具的几个服务器可以在代理执行任何工作之前消耗大量上下文。有关应用回退的配置,请参阅[配置工具搜索](/docs/zh-CN/agent-sdk/tool-search#configure-tool-search)。

337* **对常规任务使用较低的努力。** 为仅需要读取文件或列出目录的代理设置[努力](#effort-level)为 `"low"`。这减少了令牌使用和成本。337* **对常规任务使用较低的努力。** 为仅需要读取文件或列出目录的代理设置[努力](#effort-level)为 `"low"`。这减少了令牌使用和成本。

Details

212* **定价模式**:按秒、按请求或按小时固定计费。按秒定价适合突发的临时工作负载。按小时定价适合长期运行的会话。212* **定价模式**:按秒、按请求或按小时固定计费。按秒定价适合突发的临时工作负载。按小时定价适合长期运行的会话。

213* **网络**:支持自定义出站规则、出站代理和私有 VPC 对等互联,用于受管制的环境。213* **网络**:支持自定义出站规则、出站代理和私有 VPC 对等互联,用于受管制的环境。

214 214 

215有关自托管选项(如 Docker、gVisor 和 Firecracker)以及详细的隔离配置,请参阅 [Isolation Technologies](/docs/zh-CN/agent-sdk/secure-deployment#isolation-technologies)。215有关自托管选项(如 Docker、gVisor 和 Firecracker)以及详细的隔离配置,请参阅 [隔离技术](/docs/zh-CN/agent-sdk/secure-deployment#isolation-technologies)。

216 216 

217<h3 id="runtime-dependencies">217<h3 id="runtime-dependencies">

218 运行时依赖项218 运行时依赖项


229 资源229 资源

230</h3>230</h3>

231 231 

232对于新启动的实例,每个代理 1 GiB RAM、5 GiB 磁盘和 1 个 CPU 是一个合理的起点。内存使用量随会话长度和工具活动而增长,因此应根据您实际需要的会话长度和并发性进行调整,而不是根据空闲基线。有关如何计算每个主机的代理数,请参阅 [Scaling and concurrency](#scaling-and-concurrency)。232对于新启动的实例,每个代理 1 GiB RAM、5 GiB 磁盘和 1 个 CPU 是一个合理的起点。内存使用量随会话长度和工具活动而增长,因此应根据您实际需要的会话长度和并发性进行调整,而不是根据空闲基线。有关如何计算每个主机的代理数,请参阅 [扩展和并发](#scaling-and-concurrency)。

233 233 

234<h3 id="network">234<h3 id="network">

235 网络235 网络

236</h3>236</h3>

237 237 

238SDK 需要对 `api.anthropic.com` 的出站 HTTPS,或在 Amazon Bedrock 或 Google Cloud 的 Agent Platform 上运行时对您的提供商的区域端点的出站 HTTPS。如果您的代理使用 [MCP servers](/docs/zh-CN/agent-sdk/mcp) 或外部工具,它们还需要对这些端点的出站访问。对于生产环境,通过强制执行域允许列表、注入凭据和记录请求的出站代理路由出站流量。有关完整模式,请参阅 [安全部署](/docs/zh-CN/agent-sdk/secure-deployment)。238SDK 需要对 `api.anthropic.com` 的出站 HTTPS,或在 Amazon Bedrock 或 Google Cloud 的 Agent Platform 上运行时对您的提供商的区域端点的出站 HTTPS。如果您的代理使用 [MCP 服务器](/docs/zh-CN/agent-sdk/mcp) 或外部工具,它们还需要对这些端点的出站访问。对于生产环境,通过强制执行域允许列表、注入凭据和记录请求的出站代理路由出站流量。有关完整模式,请参阅 [安全部署](/docs/zh-CN/agent-sdk/secure-deployment)。

239 239 

240对于入站流量,在容器上公开 HTTP 或 WebSocket 端口。您的应用程序在该端口上处理客户端请求并在内部调用 SDK;子进程本身不在网络上侦听。240对于入站流量,在容器上公开 HTTP 或 WebSocket 端口。您的应用程序在该端口上处理客户端请求并在内部调用 SDK;子进程本身不在网络上侦听。

241 241 

Details

123 123 

124权限模式提供对 Claude 如何使用工具的全局控制。您可以在调用 `query()` 时设置权限模式,或在流式会话期间动态更改它。124权限模式提供对 Claude 如何使用工具的全局控制。您可以在调用 `query()` 时设置权限模式,或在流式会话期间动态更改它。

125 125 

126如果您没有设置权限模式,Claude Code 会根据[会话启动时的模式](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in)中的规则选择起始权限模式:126在 Claude Code v2.1.302 或更高版本中,您的应用会以 `default` 模式启动,除非您设置了权限模式,或者应用从其设置文件中的 [`permissions.defaultMode`](/docs/zh-CN/settings-reference#permissions-defaultmode) 获取权限模式。在 `default` 模式下,Claude Code 会拒绝任何需要批准的工具调用,除非您通过允许规则、hook、`canUseTool` 回调或权限提示工具批准它。如果工具调用被拒绝,请参阅[在 `claude -p` 和 Agent SDK 运行中工具调用被拒绝](/docs/zh-CN/permission-modes#which-mode-a-non-interactive-run-starts-in)。

127 

128* 当适用时,来自会话的[设置文件](/docs/zh-CN/settings#where-settings-live)中的 `permissions.defaultMode`

129* 否则使用内置默认值,可以是[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)

130 

131在自动模式下启动的会话会放弃广泛的允许规则,例如裸 `Bash` 条目,如[自动模式如何评估操作](/docs/zh-CN/permission-modes#how-auto-mode-evaluates-actions)所述。如果您的应用程序依赖于 `default` 模式或此类规则,请显式传递 `default`。

132 

133在 TypeScript Agent SDK v0.3.286 之前,省略 `permissionMode` 与传递 `default` 相同。

134 127 

135<h3 id="available-modes">128<h3 id="available-modes">

136 可用模式129 可用模式

Details

1035)1035)

1036```1036```

1037 1037 

1038* `API_TIMEOUT_MS`:Anthropic 客户端上的每个请求超时时间,以毫秒为单位。默认 `600000`。适用于主循环和所有子代理。1038* [`API_TIMEOUT_MS`](/docs/zh-CN/env-vars):每次请求尝试可以等待响应标头的时长,以毫秒为单位。它不限制标头到达后流式响应的持续时间。默认 `600000`。适用于主循环和所有子代理。

1039* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重试次数。默认 `10`,上限为 `15`。每次重试都有自己的 `API_TIMEOUT_MS` 窗口。1039* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重试次数。默认 `10`,上限为 `15`。每次重试都有自己的 `API_TIMEOUT_MS` 窗口。

1040 1040 

1041 对于需要等待更长时间中断的无人值守运行,设置 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/zh-CN/errors#tune-retry-behavior):它会无限期重试瞬时容量错误,并且在 Claude Code v2.1.199 或更高版本上,将其他瞬时错误的默认值提高到 `300` 并移除此变量的上限。1041 对于需要等待更长时间中断的无人值守运行,设置 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/zh-CN/errors#tune-retry-behavior):它会无限期重试瞬时容量错误,并且在 Claude Code v2.1.199 或更高版本上,将其他瞬时错误的默认值提高到 `300` 并移除此变量的上限。

Details

90 90 

91`SessionKey` 寻址一个记录。`projectKey` 是工作目录的稳定的、文件系统安全的编码,`sessionId` 是会话 UUID,`subpath` 在条目属于子代理记录或边车文件而不是主对话时设置。91`SessionKey` 寻址一个记录。`projectKey` 是工作目录的稳定的、文件系统安全的编码,`sessionId` 是会话 UUID,`subpath` 在条目属于子代理记录或边车文件而不是主对话时设置。

92 92 

93因为 `projectKey` 编码了工作目录,请从与原始运行的工作目录匹配的工作目录中从存储恢复或继续。在 TypeScript 中,如果在查询的 [`env` 选项](/docs/zh-CN/agent-sdk/typescript#options)中在 `CLAUDE_CONFIG_DIR` 旁边设置 [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/zh-CN/sessions#name-the-project-directory-yourself),SDK 会按该名称对该查询的条目以及其 `resume` 和 `continue` 查找进行键控。因为 `listSessions` 和 `deleteSession` 等独立帮助程序不接受 `env` 并读取进程环境,也要在主机进程环境中设置 `CLAUDE_CONFIG_DIR` 和相同的名称。需要 Agent SDK v0.3.234 或更高版本。93因为 `projectKey` 编码了工作目录,请从与原始运行的工作目录匹配的工作目录中从存储恢复或继续。在 TypeScript 中,如果在查询的 [`env` 选项](/docs/zh-CN/agent-sdk/typescript#options)中在 `CLAUDE_CONFIG_DIR` 旁边设置 [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/zh-CN/sessions#name-the-project-directory-yourself),SDK 会改用该名称作为该查询的条目及其 `resume` 和 `continue` 查找的键。因为 `listSessions` 和 `deleteSession` 等独立帮助程序不接受 `env` 并读取进程环境,也要在主机进程环境中设置 `CLAUDE_CONFIG_DIR` 和相同的名称。需要 Agent SDK v0.3.234 或更高版本。

94 94 

95将 `subpath` 视为不透明的键后缀;它遵循磁盘上的布局,例如 `subagents/agent-<id>`。当 `subpath` 未定义时,该键指的是主记录。95将 `subpath` 视为不透明的键后缀;它遵循磁盘上的布局,例如 `subagents/agent-<id>`。当 `subpath` 未定义时,该键指的是主记录。

96 96 

Details

172 172 

173在 Python SDK 中,多词字段名称如 `disallowedTools` 和 `mcpServers` 保持其 camelCase 拼写以匹配线路格式,而不是遵循 Python 的 snake\_case 约定。有关详细信息,请参阅[`AgentDefinition` 参考](/docs/zh-CN/agent-sdk/python#agentdefinition)。173在 Python SDK 中,多词字段名称如 `disallowedTools` 和 `mcpServers` 保持其 camelCase 拼写以匹配线路格式,而不是遵循 Python 的 snake\_case 约定。有关详细信息,请参阅[`AgentDefinition` 参考](/docs/zh-CN/agent-sdk/python#agentdefinition)。

174 174 

175子代理默认在后台运行。省略 [`run_in_background`](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background) 输入的 Agent 工具调用启动后台子代理,当 Claude 需要结果后才继续时设置 `run_in_background: false`。设置 `background` 字段为 `true` 以强制特定代理的后台执行,无论 Claude 请求什么。在 Claude Code v2.1.198 之前,后台默认逐步推出,省略 `run_in_background` 的 Agent 工具调用可能同步运行子代理。175<h4 id="choose-whether-claude-waits-for-subagents">

176 选择 Claude 是否等待子代理

177</h4>

176 178 

177子代理也可以生成自己的子代理。要限制嵌套的深度、同时运行的子代理数量以及查询花费的金额,请参阅[限制子代理深度、并发和支出](#cap-subagent-depth-concurrency-and-spend)。179默认情况下,主 Agent 生成的子代理[在后台运行](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)。Agent 工具结果包含 `status: "async_launched"`,报告会在之后的轮次中送达。

180 

181当 Claude 的下一步操作需要该报告时,它会等待:调用会阻塞并返回 `status: "completed"`。要自行做出此选择:

182 

183* **在提示词中**:要求 Claude 等待,例如"run the test-runner agent and wait for it"

184* **在定义中**:将 `background` 设置为 `true`,使该 Agent 保持在后台运行

178 185 

179<h3 id="filesystem-based-definition-alternative">186<h3 id="filesystem-based-definition-alternative">

180 基于文件系统的定义(替代方案)187 基于文件系统的定义(替代方案)


242 249 

243这会绕过自动匹配,直接调用指定的子代理。250这会绕过自动匹配,直接调用指定的子代理。

244 251 

252<h3 id="forked-subagents">

253 分叉子代理

254</h3>

255 

256[分叉](/docs/zh-CN/sub-agents#fork-the-current-conversation)是一种复制当前已有对话、而非从头开始的子代理。从 Claude Code v2.1.302 开始,无需任何配置,Claude 即可在您的应用程序中启动分叉,方法是调用 Agent 工具并传入 `subagent_type: "fork"`。

257 

258要阻止 Claude 启动分叉,请添加 [`Agent(fork)` 拒绝规则](/docs/zh-CN/agent-sdk/permissions#allow-and-deny-rules):

259 

260<CodeGroup>

261 ```python Python theme={null}

262 options = ClaudeAgentOptions(

263 # 仅拒绝 fork 子代理类型;其他子代理仍会运行

264 disallowed_tools=["Agent(fork)"],

265 )

266 ```

267 

268 ```typescript TypeScript theme={null}

269 const options = {

270 // 仅拒绝 fork 子代理类型;其他子代理仍会运行

271 disallowedTools: ["Agent(fork)"]

272 };

273 ```

274</CodeGroup>

275 

245<h3 id="dynamic-agent-configuration">276<h3 id="dynamic-agent-configuration">

246 动态代理配置277 动态代理配置

247</h3>278</h3>

Details

154 实时显示进度154 实时显示进度

155</h3>155</h3>

156 156 

157以下示例监视助手流中的 `TaskCreate` 和 `TaskUpdate` `tool_use` 块,并在 `TaskTracker` 类中保持由任务 ID 键入的任务映射,在每次更改时重新呈现进度摘要。摘要计算已完成和进行中的任务,并显示每个活跃项目的 `activeForm` 标签代替其 `subject`。当您的应用程序维护进度显示而不是记录每个事件时,请使用此形状。157以下示例监视助手流中的 `TaskCreate` 和 `TaskUpdate` `tool_use` 块,并在 `TaskTracker` 类中保持以任务 ID 为键的任务映射,在每次更改时重新呈现进度摘要。摘要计算已完成和进行中的任务,并显示每个活跃项目的 `activeForm` 标签代替其 `subject`。当您的应用程序维护进度显示而不是记录每个事件时,请使用此形状。

158 158 

159分配的任务 ID 不在 `TaskCreate` 输入中。Claude Code 在携带其 `tool_result` 块的用户消息上传递每个工具的结构化输出,在 `tool_use_result` 字段中。对于 `TaskCreate`,该对象在 TypeScript 中记录为[工具输出类型](/docs/zh-CN/agent-sdk/typescript#tool-output-types)下的 `TaskCreateOutput`,在 Python 中该字段是相同形状的普通字典。跟踪器通过 `tool_use_id` 将每个 `tool_result` 块与其 `tool_use` 调用配对,并从配对消息的 `tool_use_result` 中读取 `task.id`。Claude 可以使用 `TaskList` 读取列表,使用 `TaskGet` 读取一个任务的完整详细信息。159分配的任务 ID 不在 `TaskCreate` 输入中。Claude Code 在携带其 `tool_result` 块的用户消息上传递每个工具的结构化输出,在 `tool_use_result` 字段中。对于 `TaskCreate`,该对象在 TypeScript 中记录为[工具输出类型](/docs/zh-CN/agent-sdk/typescript#tool-output-types)下的 `TaskCreateOutput`,在 Python 中该字段是相同形状的普通字典。跟踪器通过 `tool_use_id` 将每个 `tool_result` 块与其 `tool_use` 调用配对,并从配对消息的 `tool_use_result` 中读取 `task.id`。Claude 可以使用 `TaskList` 读取列表,使用 `TaskGet` 读取一个任务的完整详细信息。

160 160 

Details

610| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | 定义 Agent 结果的输出格式。详情请参阅[结构化输出](/docs/zh-CN/agent-sdk/structured-outputs) |610| `outputFormat` | `{ type: 'json_schema', schema: JSONSchema }` | `undefined` | 定义 Agent 结果的输出格式。详情请参阅[结构化输出](/docs/zh-CN/agent-sdk/structured-outputs) |

611| `outputStyle` | `string` | `undefined` | 不是 `Options` 字段。请改为在内联 [`settings`](/docs/zh-CN/settings) 对象或设置文件中设置 `outputStyle`。请参阅[激活输出样式](/docs/zh-CN/agent-sdk/modifying-system-prompts#activate-an-output-style) |611| `outputStyle` | `string` | `undefined` | 不是 `Options` 字段。请改为在内联 [`settings`](/docs/zh-CN/settings) 对象或设置文件中设置 `outputStyle`。请参阅[激活输出样式](/docs/zh-CN/agent-sdk/modifying-system-prompts#activate-an-output-style) |

612| `pathToClaudeCodeExecutable` | `string` | 从捆绑的原生二进制文件自动解析 | Claude Code 可执行文件的路径。仅当安装期间跳过了可选依赖或您的平台不在支持范围内时才需要 |612| `pathToClaudeCodeExecutable` | `string` | 从捆绑的原生二进制文件自动解析 | Claude Code 可执行文件的路径。仅当安装期间跳过了可选依赖或您的平台不在支持范围内时才需要 |

613| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | 会话的权限模式。如果省略,会话可能以自动模式启动。有关 Claude Code 如何选择初始权限模式,请参阅[权限模式](/docs/zh-CN/agent-sdk/permissions#permission-modes) |613| `permissionMode` | [`PermissionMode`](#permissionmode) | `undefined` | 会话的权限模式。如果省略它且没有其他内容设置权限模式(例如 [`permissions.defaultMode`](/docs/zh-CN/settings-reference#permissions-defaultmode) 设置),会话将以 `default` 启动。请参阅[权限模式](/docs/zh-CN/agent-sdk/permissions#permission-modes) |

614| `permissionPromptToolName` | `string` | `undefined` | 用于权限提示的 MCP 工具名称 |614| `permissionPromptToolName` | `string` | `undefined` | 用于权限提示的 MCP 工具名称 |

615| `permissionPrompts` | `'host' \| 'none'` | `'host'` | 由谁回答权限提示:`'host'` 将其路由到您的 [`canUseTool`](#canusetool) 回调或 `permissionPromptToolName` 工具,`'none'` 则[拒绝本应触发提示的调用](/docs/zh-CN/agent-sdk/permissions#how-permissions-are-evaluated)。需要 Claude Code v2.1.259 或更高版本 |615| `permissionPrompts` | `'host' \| 'none'` | `'host'` | 由谁回答权限提示:`'host'` 将其路由到您的 [`canUseTool`](#canusetool) 回调或 `permissionPromptToolName` 工具,`'none'` 则[拒绝本应触发提示的调用](/docs/zh-CN/agent-sdk/permissions#how-permissions-are-evaluated)。需要 Claude Code v2.1.259 或更高版本 |

616| `persistSession` | `boolean` | `true` | 为 `false` 时,禁用会话持久化到磁盘。会话之后将无法恢复 |616| `persistSession` | `boolean` | `true` | 为 `false` 时,禁用会话持久化到磁盘。会话之后将无法恢复 |


662});662});

663```663```

664 664 

665* `API_TIMEOUT_MS`:Anthropic 客户端上的每请求超时时间,以毫秒为单位。默认值为 `600000`。适用于主循环和所有子代理。665* [`API_TIMEOUT_MS`](/docs/zh-CN/env-vars):每次请求尝试等待响应标头的时长(毫秒)。它不限制标头到达后流式响应持续的时间。默认值为 `600000`。适用于主循环和所有子代理。

666* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重试次数。默认值为 `10`,上限为 `15`。每次重试都有各自的 `API_TIMEOUT_MS` 时间窗口。666* `CLAUDE_CODE_MAX_RETRIES`:最大 API 重试次数。默认值为 `10`,上限为 `15`。每次重试都有各自的 `API_TIMEOUT_MS` 时间窗口。

667 667 

668 对于需要挺过较长中断的无人值守运行,请设置 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/zh-CN/errors#tune-retry-behavior):它会无限期重试临时性容量错误,并且在 Claude Code v2.1.199 或更高版本上,会将其他临时性错误的默认重试次数提高到 `300`,并取消此变量的上限。668 对于需要挺过较长中断的无人值守运行,请设置 [`CLAUDE_CODE_RETRY_WATCHDOG=1`](/docs/zh-CN/errors#tune-retry-behavior):它会无限期重试临时性容量错误,并且在 Claude Code v2.1.199 或更高版本上,会将其他临时性错误的默认重试次数提高到 `300`,并取消此变量的上限。

agent-teams.md +1 −1

Details

557* **关闭可能很慢**:队友在关闭前完成他们的当前请求或工具调用,这可能需要时间。557* **关闭可能很慢**:队友在关闭前完成他们的当前请求或工具调用,这可能需要时间。

558* **每个会话一个团队**:一个会话恰好有一个团队,作用域限于该会话。你无法创建额外的命名团队或在会话间共享团队。558* **每个会话一个团队**:一个会话恰好有一个团队,作用域限于该会话。你无法创建额外的命名团队或在会话间共享团队。

559* **没有嵌套团队**:队友无法生成自己的队友。只有负责人可以管理团队。559* **没有嵌套团队**:队友无法生成自己的队友。只有负责人可以管理团队。

560* **没有来自 in-process 队友的后台子代理**:in-process 队友自己的子代理在前台运行,因为队友的后台工作无法超越负责人的进程。Claude Code 在队友生成定义设置 `background: true` 的子代理时返回错误。队友的 `run_in_background: true` 请求也会失败,要么返回错误,要么如 [Claude Code 如何选择前台或后台](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background) 中所述在前台静默运行。从主对话启动的子代理遵循[后台默认值](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)。560* **没有来自 in-process 队友的后台子代理**:in-process 队友自己的子代理在前台运行,因为队友的后台工作无法超越负责人的进程。Claude Code 在队友生成定义设置 `background: true` 的子代理时返回错误。队友的 `run_in_background: true` 请求也会失败,要么返回错误,要么在前台静默运行。从主对话启动的子代理遵循[后台默认值](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)。

561* **负责人是固定的**:主会话在其生命周期内是其团队的负责人。你无法将队友提升为负责人或转移领导权。561* **负责人是固定的**:主会话在其生命周期内是其团队的负责人。你无法将队友提升为负责人或转移领导权。

562* **权限在生成时设置**:队友从 [权限](#permissions) 下描述的权限模式开始。你可以在生成后更改个别队友的权限模式,但在生成时无法设置每个队友的权限模式。562* **权限在生成时设置**:队友从 [权限](#permissions) 下描述的权限模式开始。你可以在生成后更改个别队友的权限模式,但在生成时无法设置每个队友的权限模式。

563* **分割窗格需要 tmux 或 iTerm2**:默认 in-process 模式在任何终端中工作。VS Code 的集成终端、Windows Terminal 或 Ghostty 不支持分割窗格模式。563* **分割窗格需要 tmux 或 iTerm2**:默认 in-process 模式在任何终端中工作。VS Code 的集成终端、Windows Terminal 或 Ghostty 不支持分割窗格模式。

agent-view.md +9 −1

Details

479 479 

480fork 之后,两个对话彼此独立:副本所做的任何事情都不会自行进入原始对话,不过在启用了 [跨会话消息](/docs/zh-CN/cross-session-messaging) 的会话中,任一会话的 Claude 都可以显式地向另一个发送消息。480fork 之后,两个对话彼此独立:副本所做的任何事情都不会自行进入原始对话,不过在启用了 [跨会话消息](/docs/zh-CN/cross-session-messaging) 的会话中,任一会话的 Claude 都可以显式地向另一个发送消息。

481 481 

482复制会话需要 Claude Code v2.1.212 或更高版本;在 v2.1.161 到 v2.1.211 上,`/fork` 启动的是 [fork 出的子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation),该功能现在为 `/subtask`。当 [Agent 视图已关闭](#turn-off-agent-view) 时,`/fork` 保持 fork 子代理的行为,且 `/subtask` 不可用。482当 [Agent 视图已关闭](#turn-off-agent-view) 时,`/fork` 会启动一个 [fork 出的子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation),而不是复制会话。

483 483 

484传递一个提示词,例如 `/fork open a draft pull request with the work so far`,副本会立即开始处理。不带提示词时,副本会等待第一条指令:在 `claude agents` 中选择其行并按 `Space` 发送一条,或运行 `claude attach <id>`。等待期间,所选行会显示 `space to send it a prompt`。484传递一个提示词,例如 `/fork open a draft pull request with the work so far`,副本会立即开始处理。不带提示词时,副本会等待第一条指令:在 `claude agents` 中选择其行并按 `Space` 发送一条,或运行 `claude attach <id>`。等待期间,所选行会显示 `space to send it a prompt`。

485 485 


957 957 

958运行 `/tasks` 来查看正在运行的所有内容,然后确认后台处理或选择 `Stay` 来让工作先完成。请参阅[后台处理时转移的内容](#what-carries-over-when-you-background),了解哪些类型的工作会转移,哪些 Claude Code 会停止。958运行 `/tasks` 来查看正在运行的所有内容,然后确认后台处理或选择 `Stay` 来让工作先完成。请参阅[后台处理时转移的内容](#what-carries-over-when-you-background),了解哪些类型的工作会转移,哪些 Claude Code 会停止。

959 959 

960<h3 id="carried-into-this-session-and-not-resumed">

961 对话显示某个后台 Agent `was carried into this session and not resumed`

962</h3>

963 

964此通知指明了一个未在此会话中运行的后台[子代理](/docs/zh-CN/sub-agents)。

965 

966Claude 会看到此通知并自行回复,因此您无需提示它。如果阅读 Claude 的回复后您仍需要该子代理的工作成果,请向 Claude 提出。

967 

960<h3 id="prompt-rejected-as-too-short">968<h3 id="prompt-rejected-as-too-short">

961 提示词被拒绝为过短969 提示词被拒绝为过短

962</h3>970</h3>

Details

182export AWS_PROFILE=your-profile-name182export AWS_PROFILE=your-profile-name

183```183```

184 184 

185Claude Code 从配置文件的 `sso_region` 命名的 IAM Identity Center 区域请求角色凭证,这不需要与您运行 Amazon Bedrock 的区域匹配。在 v2.1.207 中,Amazon Bedrock 区域覆盖了 `sso_region`,因此 IAM Identity Center 实例在不同区域的配置文件无法使用 `Session token not found or invalid` 错误进行身份验证。185Claude Code 从配置文件的 `sso_region` 命名的 IAM Identity Center 区域请求角色凭据,这不需要与您运行 Amazon Bedrock 的区域匹配。

186 186 

187<h4 id="use-aws-management-console-credentials">187<h4 id="use-aws-management-console-credentials">

188 使用 AWS 管理控制台凭据188 使用 AWS 管理控制台凭据


419 419 

420模型别名(如 `opus`)不充当固定版本,Claude Code 无法识别的模型 ID(如应用推理配置文件 ARN)也不充当固定版本。420模型别名(如 `opus`)不充当固定版本,Claude Code 无法识别的模型 ID(如应用推理配置文件 ARN)也不充当固定版本。

421 421 

422当这些检查发现您的账户无法调用的模型时,Claude Code 会在这台机器上记住该拒绝长达一天,在此期间启动时会跳过记住的模型,而不再询问 Amazon Bedrock。Claude Code 会在距离上次检查已过十分钟后再次检查当前默认模型的记住拒绝,因此您的管理员重新启用的默认模型会恢复。要关闭此内存功能,请设置 [`CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY=1`](/docs/zh-CN/env-vars)。422当这些检查发现您的账户无法调用的模型时,Claude Code 会在这台机器上记住该拒绝长达一天,在此期间启动时会跳过记住的模型,而不再询问 Amazon Bedrock。Claude Code 会在距离上次检查已过十分钟后再次检查当前默认模型的记住拒绝,因此您的管理员重新启用的默认模型会恢复。要关闭此记忆功能,请设置 [`CLAUDE_CODE_SKIP_MODEL_ACCESS_MEMORY=1`](/docs/zh-CN/env-vars)。

423 423 

424<h3 id="when-your-organization-enforces-a-model-allowlist">424<h3 id="when-your-organization-enforces-a-model-allowlist">

425 当您的组织强制执行模型允许列表时425 当您的组织强制执行模型允许列表时


444 444 

445如果您的账户失去对会话正在运行的模型的访问权限,例如因为管理员在您的 Amazon Bedrock 账户中禁用了它,Claude Code 会将会话切换到另一个模型,而不是使每个请求都失败,并显示 `Switched to <fallback> because <model> is not available`。它尝试与启动回退相同的模型:首先尝试同一层级的早期版本,对于没有可用 Opus 版本的 Opus 会话,则使用默认 Sonnet 模型。445如果您的账户失去对会话正在运行的模型的访问权限,例如因为管理员在您的 Amazon Bedrock 账户中禁用了它,Claude Code 会将会话切换到另一个模型,而不是使每个请求都失败,并显示 `Switched to <fallback> because <model> is not available`。它尝试与启动回退相同的模型:首先尝试同一层级的早期版本,对于没有可用 Opus 版本的 Opus 会话,则使用默认 Sonnet 模型。

446 446 

447切换仅适用于您未固定的层级,这与启动回退的条件相同。在您选择的特定版本上的会话,或在[应用推理配置文件 ARN](#map-each-model-version-to-an-inference-profile) 上的会话,会保持其模型,没有回退模型链,请求会失败。在[自动模式](/docs/zh-CN/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry)中,Claude Code 仅切换到自动模式在 Amazon Bedrock 上支持的模型。如果这些模型中也没有可用的,请求会失败并显示 [AWS 身份验证失败](/docs/zh-CN/errors#aws-authentication-failed),并提示启用该模型。447切换仅适用于您未固定的层级,这与启动回退的条件相同。在您选择的特定版本上的会话,或在[应用推理配置文件 ARN](#map-each-model-version-to-an-inference-profile) 上的会话,会保持其模型;如果没有备用模型链,请求会改为失败。在[自动模式](/docs/zh-CN/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry)中,Claude Code 仅切换到自动模式在 Amazon Bedrock 上支持的模型。如果这些模型中也没有可用的,请求会失败并显示 [AWS 身份验证失败](/docs/zh-CN/errors#aws-authentication-failed),并提示启用该模型。

448 448 

449您配置的[回退模型链](/docs/zh-CN/model-config#fallback-model-chains)会替换层级切换:在这些拒绝上,Claude Code 会切换到您配置的回退模型。要使被拒绝的请求失败而不是切换,请设置 [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](/docs/zh-CN/env-vars)。您配置的回退链仍会在这些拒绝上切换;如果您希望每个被拒绝的请求都失败,也请移除该链。449您配置的[备用模型链](/docs/zh-CN/model-config#fallback-model-chains)会替换层级切换:在这些拒绝上,Claude Code 会切换到您配置的备用模型。要使被拒绝的请求失败而不是切换,请设置 [`CLAUDE_CODE_DISABLE_MODEL_ACCESS_FALLBACK=1`](/docs/zh-CN/env-vars)。您配置的备用链仍会在这些拒绝上切换;如果您希望每个被拒绝的请求都失败,也请移除该链。

450 450 

451<h2 id="cross-region-inference-profile-prefixes">451<h2 id="cross-region-inference-profile-prefixes">

452 跨区域推理配置文件前缀452 跨区域推理配置文件前缀

artifacts.md +1 −1

Details

105 再次查找一个artifact105 再次查找一个artifact

106</h2>106</h2>

107 107 

108在Claude Code中运行`/artifacts`,以列出您拥有的Artifact以及与您共享的Artifact。当前会话的Artifact排在最前面,位于**This session**下。需要Claude Code v2.1.208或更高版本。108在Claude Code中运行`/artifacts`,以列出您拥有的Artifact以及与您共享的Artifact。当前会话的Artifact排在最前面,位于**This session**下。

109 109 

110选择一个Artifact,然后按以下任一按键:110选择一个Artifact,然后按以下任一按键:

111 111 

Details

317claude auto-mode defaults317claude auto-mode defaults

318```318```

319 319 

320要读取一条规则的完整措辞而不通过 `jq` 管道,请传递 `--label` 和规则标签的开头,例如 `claude auto-mode defaults --label 'Git Destructive'`。匹配是对每条规则标签的不区分大小写的前缀,没有匹配的部分将打印为空列表。需要 Claude Code v2.1.208 或更高版本。320要读取一条规则的完整措辞而不通过 `jq` 管道,请传递 `--label` 和规则标签的开头,例如 `claude auto-mode defaults --label 'Git Destructive'`。匹配是对每条规则标签的不区分大小写的前缀,没有匹配的部分将打印为空列表。

321 321 

322打印分类器实际使用的内容为 JSON,其中应用了您的设置(如果已设置)或使用默认值:322打印分类器实际使用的内容为 JSON,其中应用了您的设置(如果已设置)或使用默认值:

323 323 


355 355 

356如果您编写了自定义规则,`claude auto-mode critique` 会审查它们并标记模糊、冗余或可能导致误报的条目。356如果您编写了自定义规则,`claude auto-mode critique` 会审查它们并标记模糊、冗余或可能导致误报的条目。

357 357 

358要放弃您的自定义设置并返回内置默认值,请运行 reset 子命令。它需要 Claude Code v2.1.212 或更高版本,并从您的用户设置文件中删除 `autoMode` 部分:358要放弃您的自定义设置并返回内置默认值,请运行 reset 子命令,该命令会从您的用户设置文件中删除 `autoMode` 部分:

359 359 

360```bash theme={null}360```bash theme={null}

361claude auto-mode reset361claude auto-mode reset

Details

493| `request_id` | 从 `a`-`z` 中抽取的五个小写字母,不包括 `l`,因此在手机上输入时永远不会读作 `1` 或 `I`。将其包含在您的出站提示中,以便可以在回复中回显。Claude Code 仅接受携带其发出的 ID 的判决。本地终端对话不显示此 ID,因此您的出站处理程序是了解它的唯一方式。 |493| `request_id` | 从 `a`-`z` 中抽取的五个小写字母,不包括 `l`,因此在手机上输入时永远不会读作 `1` 或 `I`。将其包含在您的出站提示中,以便可以在回复中回显。Claude Code 仅接受携带其发出的 ID 的判决。本地终端对话不显示此 ID,因此您的出站处理程序是了解它的唯一方式。 |

494| `tool_name` | Claude 想要使用的工具的名称,例如 `Bash` 或 `Write`。 |494| `tool_name` | Claude 想要使用的工具的名称,例如 `Bash` 或 `Write`。 |

495| `description` | 此特定工具调用执行的操作的人类可读摘要,永远不是命令本身。对于 Bash 调用,这是 Claude 对命令的描述;当模型不给出描述时,该字段是常数 `Run shell command`,不包含任何命令详情。在有空间时呈现 `input_preview`。 |495| `description` | 此特定工具调用执行的操作的人类可读摘要,永远不是命令本身。对于 Bash 调用,这是 Claude 对命令的描述;当模型不给出描述时,该字段是常数 `Run shell command`,不包含任何命令详情。在有空间时呈现 `input_preview`。 |

496| `input_preview` | 工具的参数作为 JSON 形状的显示文本,按顶级字段键入。对于 Bash,这是命令;对于 Write,是文件路径和内容。如果您只有一行消息的空间,请从您的提示中省略它。您的服务器决定显示什么。 |496| `input_preview` | 工具的参数作为 JSON 形状的显示文本,以各顶级字段为键。对于 Bash,这是命令;对于 Write,是文件路径和内容。如果您只有一行消息的空间,请从您的提示中省略它。您的服务器决定显示什么。 |

497 497 

498Claude Code v2.1.211 或更高版本的客户端在中继前清理 `description` 和 `input_preview`。期望您收到的文本中有三个变化:498Claude Code v2.1.211 或更高版本的客户端在中继前清理 `description` 和 `input_preview`。期望您收到的文本中有三个变化:

499 499 

chrome.md +3 −3

Details

113 113 

114启用该设置且使用 Claude Code v2.1.287 或更高版本时,每个 VS Code 会话在启动时就会连接到您的浏览器,因此 Claude 无需您键入 `@browser` 即可使用它。在更早的版本中,或在关闭该设置时,VS Code 会话会在您键入 `@browser` 时连接。114启用该设置且使用 Claude Code v2.1.287 或更高版本时,每个 VS Code 会话在启动时就会连接到您的浏览器,因此 Claude 无需您键入 `@browser` 即可使用它。在更早的版本中,或在关闭该设置时,VS Code 会话会在您键入 `@browser` 时连接。

115 115 

116当 Chrome 未运行时,Claude Code 正常启动。在 v2.1.211 之前,当启用了 Chrome 集成但 Chrome 未运行时,启动可能会挂起。116当 Chrome 未运行时,Claude Code 正常启动。

117 117 

118<Note>118<Note>

119 默认启用 Chrome 会增加上下文使用,因为浏览器工具及其说明始终被加载。如果您注意到上下文消耗增加,请关闭此设置,仅在需要时连接:在 CLI 中使用 `--chrome`,或在 VS Code 输入框中键入 [`@browser`](/docs/zh-CN/vs-code#automate-browser-tasks-with-chrome)。119 默认启用 Chrome 会增加上下文使用,因为浏览器工具及其说明始终被加载。如果您注意到上下文消耗增加,请关闭此设置,仅在需要时连接:在 CLI 中使用 `--chrome`,或在 VS Code 输入框中键入 [`@browser`](/docs/zh-CN/vs-code#automate-browser-tasks-with-chrome)。


192 将文件上传到网页192 将文件上传到网页

193</h3>193</h3>

194 194 

195Claude 可以将您计算机中的文件附加到页面上的上传字段。Claude Code 读取文件并将其内容发送到浏览器,因此上传在本地和远程会话中都有效。需要 Claude Code v2.1.211 或更高版本。195Claude 可以将您计算机中的文件附加到页面上的上传字段。Claude Code 读取文件并将其内容发送到浏览器,因此上传在本地和远程会话中都有效。

196 196 

197此示例将日志文件附加到表单:197此示例将日志文件附加到表单:

198 198 


271Take a screenshot of the checkout page and save it to disk271Take a screenshot of the checkout page and save it to disk

272```272```

273 273 

274Claude 将图像保存到磁盘并报告文件路径。在 v2.1.211 之前,屏幕截图工具的 `save_to_disk` 选项没有写入文件。274Claude 将图像保存到磁盘并报告文件路径。

275 275 

276<h2 id="troubleshooting">276<h2 id="troubleshooting">

277 故障排除277 故障排除

Details

261 连接开发人员261 连接开发人员

262</h2>262</h2>

263 263 

264开发人员从自己的笔记本电脑使用一次浏览器登录进行连接,使用他们的公司工作账户。他们不需要 claude.ai 账户、API 密钥或订阅,因为对模型的请求通过网关使用组织的上游凭据。连接由您通过 MDM 推送的[客户端托管设置](/docs/zh-CN/claude-apps-gateway-config#client-side-managed-settings)驱动,本部分涵盖管理员配置的内容。264开发人员在自己的笔记本电脑上使用企业工作账户,通过一次浏览器登录即可连接。他们不需要 claude.ai 账户、API 密钥或订阅,因为发往模型的请求会通过网关,使用组织的上游凭据。连接由您通过 MDM 推送的[客户端托管设置](/docs/zh-CN/claude-apps-gateway-config#client-side-managed-settings)驱动,本节介绍管理员需要配置的内容。

265 265 

266CLI 在首次连接时对网关的 TLS 叶证书进行指纹识别,并按主机名固定它。它在登录期间、静默会话刷新期间和托管设置获取期间再次检查该固定,而推理请求使用标准 TLS 验证而不使用固定。通过 HTTPS 代理路由的请求跳过固定检查,因此将网关主机添加到 `NO_PROXY` 以保持它们直接连接。266CLI 在首次连接时会对网关的 TLS 叶证书生成指纹,并按主机名固定该指纹。在登录、静默会话刷新以及获取托管设置时,它会再次检查该固定指纹,而推理请求使用标准 TLS 验证,不检查固定指纹。通过 HTTPS 代理路由的请求会跳过固定指纹检查,因此请将网关主机添加到 `NO_PROXY`,使这些请求直接连接。

267 267 

268发布预期的 SHA-256 指纹以及网关 URL,以便开发人员有东西可以比较。`/login` 提示显示指纹的前 16 个字符作为小写十六进制,无冒号。要从证书文件以该形式打印完整指纹,请运行:268请将预期的 SHA-256 指纹与网关 URL 一起发布,以便开发人员有可比对的依据。`/login` 提示会以不带冒号的小写十六进制形式显示指纹的前 16 个字符。要从证书文件中以该形式输出完整指纹,请运行:

269 269 

270```bash theme={null}270```bash theme={null}

271openssl x509 -noout -fingerprint -sha256 -in cert.pem | cut -d= -f2 | tr -d : | tr 'A-F' 'a-f'271openssl x509 -noout -fingerprint -sha256 -in cert.pem | cut -d= -f2 | tr -d : | tr 'A-F' 'a-f'

272```272```

273 273 

274当证书轮换时,每个开发人员都会再次看到信任提示,因此将轮换视为计划事件并重新发布指纹。如果您的网关策略包含[需要批准的设置](/docs/zh-CN/server-managed-settings#security-approval-dialogs),开发人员在接受新证书后也会再次看到该批准对话框,因为 Claude Code 将[批准记忆](/docs/zh-CN/server-managed-settings#approval-memory)关键到固定的证书。274证书轮换时,每位开发人员都会再次看到信任提示,因此请将轮换视为计划内事件并重新发布指纹。如果您的网关策略包含[需要批准的设置](/docs/zh-CN/server-managed-settings#security-approval-dialogs),开发人员在接受新证书后还会再次看到该批准对话框,因为 Claude Code 将[批准记忆](/docs/zh-CN/server-managed-settings#approval-memory)与固定的证书绑定。

275 275 

276网关可以在其令牌响应中返回可选的 `email` 字段,以命名登录使用的账户。当它这样做时,开发人员在 Claude Code 保存凭证之前确认账户。确认登录后,`/status` 显示账户。276网关可以在其令牌响应中返回可选的 `email` 字段,以指明某次登录所使用的账户。返回该字段时,开发人员需要在 Claude Code 保存凭据之前确认该账户。确认登录后,`/status` 会显示该账户。

277 277 

278确认需要开发人员机器上的 Claude Code v2.1.275 或更高版本;低于该版本的客户端忽略该字段。`claude` 二进制文件中的网关服务器不返回该字段,因此其登录完成时没有确认。278该确认要求开发人员机器上的 Claude Code 为 v2.1.275 或更高版本;低于该版本的客户端会忽略此字段。`claude` 二进制文件中的网关服务器不返回该字段,因此通过它的登录会在没有确认的情况下完成。

279 279 

280开发人员登录后,[模型选择器](/docs/zh-CN/model-config)显示其 `availableModels` 允许列表中的模型。托管设置在启动时应用并每小时刷新一次,遥测路由到您的收集器。280开发人员登录后,[模型选择器](/docs/zh-CN/model-config)会显示其 `availableModels` 允许列表中的模型。托管设置在启动时生效并每小时刷新一次,遥测会路由到您的收集器。

281 281 

282会话在 `ttl_hours` 过期前静默刷新。当 IdP 取消配置后刷新失败时,Claude Code 会提示开发人员重新登录。282会话会在 `ttl_hours` 到期前静默刷新。当 IdP 取消配置后刷新失败时,Claude Code 会提示开发人员重新登录。

283 283 

284<h3 id="set-the-gateway-url">284<h3 id="set-the-gateway-url">

285 设置网关 URL285 设置网关 URL

286</h3>286</h3>

287 287 

288三个密钥进入您通过 MDM 或直接在磁盘上部署的每个操作系统[托管设置文件](/docs/zh-CN/managed-settings#delivery-mechanisms)。对于没有托管设置的机器,请改为参阅[在用户设置中设置网关 URL](#set-the-gateway-url-in-user-settings)。`forceLoginMethod` 和 `forceLoginGatewayUrl` 在**Cloud gateway** 屏幕上直接打开 `/login`,URL 已填入,`parentSettingsBehavior: "merge"` 让 Claude Desktop 将网关的出口允许列表传递给它启动的 Claude Code 会话,在[将策略传递给 Claude Desktop 会话](#deliver-policy-to-claude-desktop-sessions)中解释:288以下三个键需放入您通过 MDM 或直接在磁盘上部署的各操作系统对应的[托管设置文件](/docs/zh-CN/managed-settings#delivery-mechanisms)中。对于没有托管设置的机器,请改为参阅[在用户设置中设置网关 URL](#set-the-gateway-url-in-user-settings)。`forceLoginMethod` 和 `forceLoginGatewayUrl` 会让 `/login` 直接在 **Cloud gateway** 界面打开并填入 URL,而 `parentSettingsBehavior: "merge"` 允许 Claude Desktop 将网关的出站允许列表传递给它启动的 Claude Code 会话,详见[向 Claude Desktop 会话传递策略](#deliver-policy-to-claude-desktop-sessions):

289 289 

290```json theme={null}290```json theme={null}

291{291{


295}295}

296```296```

297 297 

298开发人员按 Enter 连接。[首次连接 TLS 指纹提示](#connect-developers)仍然出现。文件在机器上后,未完成网关登录的开发人员会看到[管理员策略需要 Cloud 网关登录](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)下描述的消息之一。通过环境变量(如 `CLAUDE_CODE_USE_BEDROCK`)选择云提供商的开发人员不需要网关登录。298开发人员按 Enter 即可连接。[首次连接的 TLS 指纹提示](#connect-developers)仍会出现。文件部署到机器上后,尚未完成网关登录的开发人员会看到[管理员策略要求进行 Cloud gateway 登录](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)中描述的某条消息。通过 `CLAUDE_CODE_USE_BEDROCK` 等环境变量选择云提供商的开发人员不需要进行网关登录。

299 299 

300登录选择器中没有网关选项,而在托管设置中,单独的 `forceLoginMethod`(没有 URL)会将开发人员留在"联系您的 IT 管理员"消息处。登录密钥属于您推送到机器的文件中,而不是网关的 `managed.policies[].cli` 块中,该块仅到达已连接的客户端。300登录选择器中没有网关选项,而在托管设置中只设置 `forceLoginMethod` 而不设置 URL,会让开发人员停留在“Contact your IT administrator”消息处。登录相关的键应放在您推送到机器的文件中,而不是网关的 `managed.policies[].cli` 块中,后者只会到达已连接的客户端。

301 301 

302<h4 id="set-the-gateway-url-in-user-settings">302<h4 id="set-the-gateway-url-in-user-settings">

303 在用户设置中设置网关 URL303 在用户设置中设置网关 URL

304</h4>304</h4>

305 305 

306在没有托管设置的机器上,让每位开发人员将 `forceLoginMethod` 和 `forceLoginGatewayUrl` 添加到其自己的用户设置文件 `~/.claude/settings.json` 中。这需要开发人员机器上的 Claude Code v2.1.295 或更高版本。此示例指定位于 `claude-gateway.internal.example.com` 的网关:306在没有托管设置的机器上,请让每位开发人员将 `forceLoginMethod` 和 `forceLoginGatewayUrl` 添加到自己的用户设置文件 `~/.claude/settings.json` 中。这要求开发人员机器上的 Claude Code 为 v2.1.295 或更高版本。以下示例指定了位于 `claude-gateway.internal.example.com` 的网关:

307 307 

308```json theme={null}308```json theme={null}

309{309{


312}312}

313```313```

314 314 

315当开发人员在 Claude Code 提示符处运行 `/login` 时,**Cloud gateway** 屏幕会以该地址打开,开发人员按 Enter 即可连接。[首次连接 TLS 指纹提示](#connect-developers)仍然出现。以这种方式设置的设置项受以下限制:315当开发人员在 Claude Code 输入框中运行 `/login` 时,**Cloud gateway** 界面会以该地址打开,开发人员按 Enter 即可连接。[首次连接的 TLS 指纹提示](#connect-developers)仍会出现。以这种方式设置的键受以下限制:

316 316 

317* **仅限用户设置**:Claude Code 从 `~/.claude/settings.json` 读取这两个设置项,而不是从项目的 `.claude/settings.json` 或 `.claude/settings.local.json` 读取。317* **仅限用户设置**:Claude Code 从 `~/.claude/settings.json` 读取这两个键,而不会从项目的 `.claude/settings.json` 或 `.claude/settings.local.json` 读取。

318* **托管设置会使其失效**:一旦管理员的设置通过托管设置文件、macOS plist 或 Windows HKLM 策略,或[策略助手](/docs/zh-CN/settings-reference#policyhelper)到达机器,Claude Code 就会忽略用户设置中指定的网关。318* **托管设置会使其失效**:一旦管理员的设置通过托管设置文件、macOS plist 或 Windows HKLM 策略,或[策略帮助程序](/docs/zh-CN/settings-reference#policyhelper)到达该机器,Claude Code 就会忽略用户设置中指定的网关。

319 319 

320<h3 id="allow-a-gateway-on-public-address-space-you-own">320<h3 id="allow-a-gateway-on-public-address-space-you-own">

321 在您拥有的公共地址空间上允许网关321 允许位于您自有公网地址空间的网关

322</h3>322</h3>

323 323 

324某些组织从他们拥有的公共 IPv4 块对其内部网络进行编号,例如运营商自己的地址空间或遗留的 `/8`,因此他们的网关没有私有地址。在 `gatewayInternalNetworks` 托管设置中列出这些块。当开发人员的机器从同一块内的地址连接到它时,`/login` 然后接受列出块内的网关。这需要开发人员机器上的 Claude Code v2.1.268 或更高版本;早期版本忽略该设置项并应用私有地址规则。324有些组织使用自己拥有的公网 IPv4 地址块为内部网络编址,例如运营商自己的地址空间或遗留的 `/8`,因此其网关没有私有地址。请在 `gatewayInternalNetworks` 托管设置中列出这些地址块。之后,当开发人员的机器从某个已列出地址块内的地址连接到位于同一地址块内的网关时,`/login` 会接受该网关。这要求开发人员机器上的 Claude Code 为 v2.1.268 或更高版本;更早的版本会忽略该键并应用私有地址规则。

325 325 

326<Warning>326<Warning>

327 `gatewayInternalNetworks` 用于恰好从公共地址空间编号的内部网络。它不会使将网关暴露到互联网变得安全:受信任的网关可以推送在开发人员机器上运行命令的设置。327 `gatewayInternalNetworks` 适用于恰好使用公网地址空间编址的内部网络。它并不能让网关暴露在互联网上变得安全:受信任的网关可以推送在开发人员机器上运行命令的设置。

328 328 

329 使用您的防火墙或负载均衡器规则将网关保持在网络外部无法访问。将网关的 [`access_control.allow_cidrs`](/docs/zh-CN/claude-apps-gateway-config#http-tuning) 设置为您在此处声明的相同块,以便网关本身拒绝来自其他任何地方的客户端。在负载均衡器或入口后面,也将 `listen.trusted_proxies` 设置为该前端,因为网关否则会针对前端自己的地址而不是开发人员的地址匹配 `allow_cidrs`。329 请通过防火墙或负载均衡器规则,确保从您的网络外部无法访问网关。将网关的 [`access_control.allow_cidrs`](/docs/zh-CN/claude-apps-gateway-config#http-tuning) 设置为您在此处声明的相同地址块,使网关本身拒绝来自其他任何地方的客户端。如果网关位于负载均衡器或入口之后,还需将 `listen.trusted_proxies` 设置为该前端,否则网关会用前端自身的地址而不是开发人员的地址来匹配 `allow_cidrs`。

330</Warning>330</Warning>

331 331 

332将密钥添加到与登录密钥相同的托管设置源:托管设置文件、MDM 配置文件或注册表策略。Claude Code 在用户、项目和服务器托管设置中忽略它。332请将该键添加到与登录键相同的托管设置来源中:托管设置文件、MDM 配置描述文件或注册表策略。Claude Code 会忽略用户设置、项目设置和服务器托管设置中的该键。

333 333 

334此示例声明一个块。将 `203.0.113.0/24` 替换为您自己的块。它是文档范围,Claude Code 拒绝这些。334以下示例声明了一个地址块。请将 `203.0.113.0/24` 替换为您自己的地址块。它是文档专用范围,Claude Code 会拒绝此类范围。

335 335 

336```json theme={null}336```json theme={null}

337{337{


339}339}

340```340```

341 341 

342Claude Code 在 `/login` 处验证列表,然后再联系任何网关:342Claude Code 会在 `/login` 联系任何网关之前验证该列表:

343 343 

344* 每个条目是一个 IPv4 块,写成其第一个地址和从 `/8` 到 `/32` 的前缀。344* 每个条目都是一个 IPv4 地址块,以其起始地址和 `/8` 到 `/32` 之间的前缀表示。

345* 列表最多包含四个块,没有两个重叠。345* 列表最多包含四个地址块,且任意两个不得重叠。

346* 没有块与私有地址空间重叠:`10.0.0.0/8`、`172.16.0.0/12`、`192.168.0.0/16`、`127.0.0.0/8`、`169.254.0.0/16` 和 `100.64.0.0/10`。`/login` 已经在没有此密钥的情况下接受那里的网关。346* 任何地址块都不得与私有地址空间重叠:`10.0.0.0/8`、`172.16.0.0/12`、`192.168.0.0/16`、`127.0.0.0/8`、`169.254.0.0/16` 和 `100.64.0.0/10`。`/login` 无需此键即可接受位于这些范围内的网关。

347* 没有块与从不是组织网络的空间重叠:`198.18.0.0/15` 和 `192.0.0.0/24`,VPN 和 NAT64 客户端将其作为本地地址;文档范围 `192.0.2.0/24`、`198.51.100.0/24` 和 `203.0.113.0/24`;以及保留范围 `0.0.0.0/8`、`192.88.99.0/24` 和多播 `224.0.0.0/4`。您可以声明 `240.0.0.0/4` 内的块,某些大型网络将其用作内部单播空间。347* 任何地址块都不得与绝不可能是组织网络的空间重叠:VPN 和 NAT64 客户端用作本地地址的 `198.18.0.0/15` 和 `192.0.0.0/24`;文档专用范围 `192.0.2.0/24`、`198.51.100.0/24` 和 `203.0.113.0/24`;以及保留范围 `0.0.0.0/8`、`192.88.99.0/24` 和组播 `224.0.0.0/4`。您可以声明 `240.0.0.0/4` 内的地址块,一些大型网络将其用作内部单播空间。

348 348 

349来自 `managed-settings.json` 及其 `managed-settings.d/` 插入文件的块合并为一个列表,这些限制适用于合并列表。要缩小块,请替换其条目而不是在插入中添加第二个重叠的;`/login` 拒绝重叠。349来自 `managed-settings.json` 及其 `managed-settings.d/` 附加文件的地址块会合并为一个列表,上述限制适用于合并后的列表。要缩小某个地址块,请替换其条目,而不是在附加文件中再添加一个重叠的条目;`/login` 会拒绝重叠。

350 350 

351如果条目违反规则,或值不是字符串列表,Claude Code 拒绝该机器上的每个新网关登录并在消息中命名问题。登录到私有地址上的网关也失败,现有登录继续工作。在部署前在一台机器上尝试该值。Claude Code 还在[它报告的无效托管设置](/docs/zh-CN/managed-settings#keys-that-fail-closed)中列出错误类型的值。351如果某个条目违反规则,或者值不是字符串列表,Claude Code 会拒绝该机器上的所有新网关登录,并在消息中指出问题。对位于私有地址的网关的登录也会失败,而现有登录会继续有效。请先在一台机器上试用该值,再进行部署。Claude Code 还会将类型错误的值列入[其报告的无效托管设置](/docs/zh-CN/managed-settings#keys-that-fail-closed)中。

352 352 

353使用有效列表,`/login` 对地址在列出块内的网关应用三个检查:353在列表有效的情况下,`/login` 会对地址位于已列出地址块内的网关执行三项检查:

354 354 

355* 网关主机名解析到的每个地址都在该块内。Claude Code 拒绝也在块外有记录的名称,包括私有和 IPv6 地址。355* 网关主机名解析到的每个地址都位于同一个地址块内。如果某个名称还有位于该地址块之外的记录(包括私有地址和 IPv6 地址),Claude Code 会拒绝它。

356* 开发人员的机器从同一块内连接。Claude Code 拒绝 NAT 后面、容器或 WSL2 内或 VPN 上的机器,其地址池位于块外,并命名机器连接的地址。356* 开发人员的机器从同一地址块内进行连接。如果机器位于 NAT 之后、位于容器或 WSL2 内,或者使用地址池位于该地址块之外的 VPN,Claude Code 会拒绝,并指出该机器用于连接的地址。

357* 连接是直接的。如果 `HTTPS_PROXY` 适用于网关主机,`/login` 拒绝并命名要添加的 `NO_PROXY` 条目。357* 连接是直接的。如果 `HTTPS_PROXY` 适用于网关主机,`/login` 会拒绝,并指出需要添加的 `NO_PROXY` 条目。

358 358 

359当所有三个通过时,[信任提示](#connect-developers)添加一行命名机器的地址、网关的地址和包含两者的声明块。359三项检查全部通过后,[信任提示](#connect-developers)会增加一行,指明机器的地址、网关的地址以及同时包含两者的已声明地址块。

360 360 

361该密钥对其他网关不改变任何内容:登录到私有地址上的网关像以前一样工作,登录到每个列出块外的公共地址上的网关像以前一样被拒绝。361该键对其他网关没有任何影响:对位于私有地址的网关的登录照常有效,对位于所有已列出地址块之外的公网地址的网关的登录照常被拒绝。

362 362 

363声明的块缩小了谁可以登录但不证明机器在哪里,因此仅声明您的组织控制的地址空间。与其他租户共享的块,例如云提供商的公共范围,让其中的任何人通过相同的检查。363已声明的地址块会缩小可登录的范围,但无法证明机器所在的位置,因此请只声明您的组织所控制的地址空间。与其他租户共享的地址块(例如云提供商的公网范围)会让其中的任何人都能通过同样的检查。

364 364 

365<h3 id="deliver-policy-to-claude-desktop-sessions">365<h3 id="deliver-policy-to-claude-desktop-sessions">

366 将策略传递给 Claude Desktop 会话366 向 Claude Desktop 会话传递策略

367</h3>367</h3>

368 368 

369Claude Desktop 在嵌入式 Claude Code 会话上运行其 Cowork 和 Code 选项卡,以及启用时的 Chat 选项卡,并通过网关发送其模型请求。它将策略传递给每个会话,从网关在 `/user/bootstrap` 处提供的配置构建:模型允许列表、禁用的工具和从匹配策略的 `cli` 或 `code` 块派生的出口允许列表,加上[`desktop` 覆盖](/docs/zh-CN/claude-apps-gateway-config#claude-desktop-overlay)。369Claude Desktop 在嵌入式 Claude Code 会话上运行其 Cowork 和 Code 标签页(以及在您启用时的 Chat 标签页),并通过网关发送这些会话的模型请求。它会向每个这样的会话传递策略,该策略基于网关在 `/user/bootstrap` 提供给它的配置构建:模型允许列表、已禁用的工具,以及从匹配策略的 `cli` 或 `code` 块派生的出站允许列表,外加 [`desktop` 覆盖层](/docs/zh-CN/claude-apps-gateway-config#claude-desktop-overlay)。

370 370 

371该块的其他设置项,例如 hook、`env` 和作用域权限规则(如 `Bash(npm *)`),会到达通过 `/login` 登录的客户端。在 `code` 下,当[Code 选项卡的条件](/docs/zh-CN/claude-apps-gateway-config#apply-code-settings-in-the-code-tab)成立时,它们也会到达 Code 选项卡的会话。它们不会到达 Cowork 或 Chat 会话。Claude Desktop 从其自己的托管配置读取网关 URL,并使用其自己的流程登录,与[设置网关 URL](#set-the-gateway-url)中的 `forceLoginMethod` 和 `forceLoginGatewayUrl` 设置项分开。371该块中的其他键,例如 hook、`env` 以及 `Bash(npm *)` 这类限定范围的权限规则,会到达通过 `/login` 登录的客户端。在 `code` 下,当满足 [Code 标签页的条件](/docs/zh-CN/claude-apps-gateway-config#apply-code-settings-in-the-code-tab)时,它们也会到达 Code 标签页的会话。它们不会到达 Cowork 或 Chat 会话。Claude Desktop 从其自身的托管配置中读取网关 URL,并使用自己的流程登录,与[设置网关 URL](#set-the-gateway-url) 中的 `forceLoginMethod` 和 `forceLoginGatewayUrl` 键无关。

372 372 

373由启动过程传递的设置是父设置。Claude Code 在任何具有管理员部署的托管源的机器上忽略父设置,除非[传递策略的源](/docs/zh-CN/managed-settings#which-managed-source-claude-code-uses)设置 `parentSettingsBehavior: "merge"`。373由启动进程传递的设置称为父设置。在任何具有管理员部署的托管来源的机器上,Claude Code 都会忽略父设置,除非[传递策略的来源](/docs/zh-CN/managed-settings#which-managed-source-claude-code-uses)设置了 `parentSettingsBehavior: "merge"`。

374 374 

375<h4 id="which-machines-need-the-opt-in">375<h4 id="which-machines-need-the-opt-in">

376 哪些机器需要选择加入376 哪些机器需要启用该选项

377</h4>377</h4>

378 378 

379仅运行 Claude Desktop 的机器需要它。Claude Desktop 将模型列表和禁用工具列表应用于嵌入式会话本身,但出口允许列表仅作为父设置到达它们,形式为 `WebFetch` 域规则和沙箱网络规则。没有选择加入,这些会话运行时没有出口限制,没有任何警告。网关仍然拒绝策略未授予的模型的推理请求。379仅运行 Claude Desktop 的机器需要启用。Claude Desktop 会自行将模型列表和已禁用工具列表应用于嵌入式会话,但出站允许列表只能以父设置的形式到达这些会话,形式为 `WebFetch` 域规则和沙箱网络规则。如果不启用该选项,这些会话将在没有出站限制的情况下运行,而且不会有任何警告。网关仍会拒绝针对策略未授予的模型的推理请求。

380 380 

381插件市场允许列表也仅作为父设置到达嵌入式会话。当您在 Claude Desktop 的托管配置中关闭用户添加的插件市场时,Claude Desktop 2.16120.0 或更高版本隐藏您的组织未配置的市场,并拒绝从它们安装。要停止嵌入式会话加载已从这些市场安装的插件,它将 `strictKnownMarketplaces` 列表作为父设置发送给它们。没有选择加入,Claude Code 忽略该列表,这些插件继续加载。381插件市场允许列表也只能以父设置的形式到达嵌入式会话。当您在 Claude Desktop 的托管配置中关闭用户添加的插件市场时,Claude Desktop 2.16120.0 或更高版本会隐藏您的组织未配置的市场,并拒绝从这些市场安装。为阻止嵌入式会话加载已从这些市场安装的插件,它会以父设置的形式向这些会话发送 `strictKnownMarketplaces` 列表。如果不启用该选项,Claude Code 会忽略该列表,这些插件会继续加载。

382 382 

383开发人员通过 `/login` 登录的机器不需要它;每个 Claude Code 会话从网关获取其策略。383开发人员通过 `/login` 登录的机器不需要启用;每个 Claude Code 会话都会从网关获取其策略。

384 384 

385其[`policyHelper`](/docs/zh-CN/settings-reference#policyhelper)提供托管设置的舰队无法使用它:Claude Code 从不在这些舰队上合并父设置,因为它仅从助手的输出读取托管设置。385由 [`policyHelper`](/docs/zh-CN/settings-reference#policyhelper) 提供托管设置的机器群无法使用该选项:在这些机器群上,Claude Code 从不合并父设置,因为它仅从帮助程序的输出中读取托管设置。

386 386 

387<h4 id="set-the-opt-in">387<h4 id="set-the-opt-in">

388 设置选择加入388 启用该选项

389</h4>389</h4>

390 390 

391从[设置网关 URL](#set-the-gateway-url)部署托管设置片段,将其镜像到任何优先于文件的客户端源,然后验证。391部署[设置网关 URL](#set-the-gateway-url) 中的托管设置片段,将其同步到任何优先级高于该文件的客户端来源,然后进行验证。

392 392 

393<Steps>393<Steps>

394 <Step title="在托管设置文件中部署选择加入">394 <Step title="在托管设置文件中部署该选项">

395 上面的[片段](#set-the-gateway-url)已包含 `parentSettingsBehavior: "merge"`,因此您推送到机器的文件携带它。395 [上方的片段](#set-the-gateway-url)已包含 `parentSettingsBehavior: "merge"`,因此您推送到机器的文件会带有该选项。

396 </Step>396 </Step>

397 397 

398 <Step title="将片段镜像到任何优先于文件的源">398 <Step title="将片段同步到任何优先级高于该文件的来源">

399 Claude Code 仅从[选定的源](/docs/zh-CN/managed-settings#which-managed-source-claude-code-uses)读取 `parentSettingsBehavior`。向源添加任何策略设置项可以使该源成为选定的源,因此在客户端源中,镜像整个片段而不仅仅是 `parentSettingsBehavior`。[客户端托管设置](/docs/zh-CN/claude-apps-gateway-config#client-side-managed-settings)涵盖通过组策略或配置文件传递策略的舰队。macOS 上的托管首选项 plist 或 Windows 上的 HKLM 策略优先于 `managed-settings.json` 文件,网关自己的远程托管设置优先于两者,因此在登录到网关的机器上,也在网关策略的 [`cli` 或 `code` 块](/docs/zh-CN/claude-apps-gateway-config#managed)中设置 `parentSettingsBehavior`。399 Claude Code 只从[选定的来源](/docs/zh-CN/managed-settings#which-managed-source-claude-code-uses)读取 `parentSettingsBehavior`。向某个来源添加任何策略键都可能使该来源成为选定来源,因此在客户端来源中,请同步整个片段,而不仅仅是 `parentSettingsBehavior`。[客户端托管设置](/docs/zh-CN/claude-apps-gateway-config#client-side-managed-settings)介绍了通过组策略或配置描述文件传递策略的机器群。macOS 上的托管偏好设置 plist 或 Windows 上的 HKLM 策略优先级高于 `managed-settings.json` 文件,而网关自身的远程托管设置优先级高于这两者,因此在登录网关的机器上,还需在网关策略的 [`cli` 或 `code` 块](/docs/zh-CN/claude-apps-gateway-config#managed)中设置 `parentSettingsBehavior`。

400 </Step>400 </Step>

401 401 

402 <Step title="检查选定的源">402 <Step title="检查选定的来源">

403 在仅运行 Claude Desktop 的机器上,调用 Agent SDK 的 [`resolveSettings()`](/docs/zh-CN/agent-sdk/typescript#resolvesettings) 并在其 `sources` 列表中的 `managed` 条目上读取 `policyOrigin`。该值命名选定的客户端源,`plist`、`hklm` 或 `file`,这是必须携带片段的源。403 在仅运行 Claude Desktop 的机器上,调用 Agent SDK 的 [`resolveSettings()`](/docs/zh-CN/agent-sdk/typescript#resolvesettings),并读取其 `sources` 列表中 `managed` 条目上的 `policyOrigin`。该值指明选定的客户端来源:`plist`、`hklm` 或 `file`,即必须包含该片段的来源。

404 404 

405 Cowork 和 Chat 会话不获取网关策略,因此网关的块不是它们的选定源。405 Cowork 和 Chat 会话不会获取网关策略,因此对它们而言,网关的块不是选定来源。

406 406 

407 当策略的设置位于 `code` 下且[Code 选项卡的条件](/docs/zh-CN/claude-apps-gateway-config#apply-code-settings-in-the-code-tab)成立时,Code 选项卡会话会获取该策略。此时网关的 `code` 设置就是该会话的选定源。407 当策略的设置位于 `code` 下且满足 [Code 标签页的条件](/docs/zh-CN/claude-apps-gateway-config#apply-code-settings-in-the-code-tab)时,Code 标签页会话会获取网关策略。此时网关的 `code` 设置就是该会话的选定来源。

408 </Step>408 </Step>

409</Steps>409</Steps>

410 410 


412 限制父设置412 限制父设置

413</h3>413</h3>

414 414 

415一旦您部署 `parentSettingsBehavior: "merge"`,任何启动 Claude Code 的主机进程都可以提供父设置,不仅是 Claude Desktop,还有 Agent SDK 应用程序或 IDE 扩展。415部署 `parentSettingsBehavior: "merge"` 后,任何启动 Claude Code 的宿主进程都可以提供父设置,不仅是 Claude Desktop,还包括 Agent SDK 应用程序或 IDE 扩展。

416 416 

417Claude Code 根据限制性密钥的允许列表过滤父设置,但某些允许的密钥可以授予访问权限而不是限制它。除非您设置 `allowManaged*Only` 锁,主机提供的权限允许规则和沙箱允许列表仍然适用。您的策略的拒绝和询问规则无论如何都保持有效;[它们在任何允许规则之前被评估](/docs/zh-CN/permissions#manage-permissions)。417Claude Code 会根据一个限制性键的允许列表过滤父设置,但某些被允许的键可能授予访问权限而非限制访问。除非您设置了 `allowManaged*Only` 锁定,否则宿主提供的权限允许规则和沙箱允许列表仍然有效。无论哪种情况,您策略中的拒绝和询问规则都会保持有效;[它们会在任何允许规则之前进行评估](/docs/zh-CN/permissions#manage-permissions)。

418 418 

419Claude Code 以剥离形式转发父提供的 [`sandbox.credentials`](/docs/zh-CN/settings-reference#sandbox-credentials) 条目:419Claude Code 会以精简形式转发父进程提供的 [`sandbox.credentials`](/docs/zh-CN/settings-reference#sandbox-credentials) 条目:

420 420 

421* **`deny` 条目**:仅使用其 `path` 或 `name` 和模式转发。421* **`deny` 条目**:仅转发其 `path` 或 `name` 以及模式。

422* **具有 [`mode: mask`](/docs/zh-CN/sandboxing#mask-credential-files) 的文件条目**:转发为仅哨兵,作为整个文件掩码,其 `injectHosts` 是空列表,因此代理从不在任何平台上用真实值替换父提供的条目。所有结构化掩码字段也被删除,因此父提供的提取模式无法替代另一个源为同一路径设置的更严格掩码。422* **使用 [`mode: mask`](/docs/zh-CN/sandboxing#mask-credential-files) 的文件条目**:仅以哨兵形式转发,作为 `injectHosts` 为空列表的整文件掩码,因此在任何平台上,代理都不会为父进程提供的条目替换真实值。所有结构化掩码字段也会被丢弃,因此父进程提供的提取模式无法取代其他来源为同一路径设置的更严格掩码。

423* **具有 `mode: mask` 的 `envVars` 条目**:不转发。`deny` 是父通道可以通过 `envVars` 条目表达的唯一限制。423* **使用 `mode: mask` 的 `envVars` 条目**:不转发。`deny` 是父通道通过 `envVars` 条目可以表达的唯一限制。

424* **[`awsPairs` 和 `sigv4`](/docs/zh-CN/sandboxing#re-sign-aws-requests)**:仅转发限制。从 `sigv4`,仅保留 `deny` 值,定义 `sigv4` 块的父将所有三种请求形式 `streaming`、`presigned` 和 `sigv4a` 固定到 `deny`。`awsPairs` 对从不以可以重新签名的形式转发;命名常规 AWS 变量之一的对被替换为保持 `AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY` 和 `AWS_SESSION_TOKEN` 自动配对被抑制的惯性条目。424* **[`awsPairs` 和 `sigv4`](/docs/zh-CN/sandboxing#re-sign-aws-requests)**:仅以限制形式转发。对于 `sigv4`,只保留 `deny` 值,只要父进程定义了 `sigv4` 块,就会将全部三种请求形式 `streaming`、`presigned` 和 `sigv4a` 固定为 `deny`。`awsPairs` 中的配对绝不会以可重新签名的形式转发;指明某个常规 AWS 变量的配对会被替换为一个无效条目,该条目会继续抑制 `AWS_ACCESS_KEY_ID`、`AWS_SECRET_ACCESS_KEY` 和 `AWS_SESSION_TOKEN` 的自动配对。

425 425 

426<h4 id="deploy-the-locks">426<h4 id="deploy-the-locks">

427 部署锁427 部署锁定

428</h4>428</h4>

429 429 

430要将父设置保持尽可能接近仅限制,将所有五个 `allowManaged*Only` 锁和它们管理的允许列表添加到与合并选择加入相同的源:430为了让父设置在过滤器支持的范围内尽可能接近纯限制性,请将全部五个 `allowManaged*Only` 锁定及其管控的允许列表添加到与合并选项相同的来源中:

431 431 

432```json theme={null}432```json theme={null}

433{433{


452}452}

453```453```

454 454 

455操作系统策略(例如 HKLM 注册表策略或托管首选项 plist)优先于此文件,因此通过它而不是文件传递整个片段。网关的远程托管设置优先于操作系统策略和文件源,但仅到达已连接的客户端。将锁、允许列表和合并选择加入镜像到策略的 [`cli` 或 `code` 块](/docs/zh-CN/claude-apps-gateway-config#managed)中,并保持此文件部署,因为从不连接的机器仅从文件获取其策略。455操作系统策略(例如 HKLM 注册表策略或托管偏好设置 plist)的优先级高于该文件,因此请通过它而不是该文件传递整个片段。网关的远程托管设置优先级高于操作系统策略和文件来源,但只能到达已连接的客户端。请将锁定、允许列表和合并选项同步到策略的 [`cli` 或 `code` 块](/docs/zh-CN/claude-apps-gateway-config#managed)中,并保留此文件的部署,因为从未连接的机器只能从该文件获取策略。

456 456 

457<h4 id="lock-behavior-across-sources">457<h4 id="lock-behavior-across-sources">

458 跨源的锁行为458 跨来源的锁定行为

459</h4>459</h4>

460 460 

461设置一个锁不会限制其他锁;每个密钥都在[设置参考](/docs/zh-CN/settings-reference#all-settings)中记录。461设置某个锁定不会限制其他锁定;每个键都记录在[设置参考](/docs/zh-CN/settings-reference#all-settings)中。

462 462 

463从赢家下方的管理员源,两个沙箱锁仍然适用,`allowManagedPermissionRulesOnly` 仍然阻止父提供的允许规则和 `additionalDirectories`。在 Claude Code v2.1.273 或更高版本上,MCP 服务器锁也从赢家下方的源应用,当它打开时,托管 `allowedMcpServers` 列表来自设置一个的最高优先级管理员源。463来自优先级低于胜出来源的管理员来源时,两个沙箱锁定仍然有效,`allowManagedPermissionRulesOnly` 仍会阻止父进程提供的允许规则和 `additionalDirectories`。在 Claude Code v2.1.273 或更高版本中,MCP 服务器锁定在来自优先级低于胜出来源的来源时也有效,并且在其开启期间,托管的 `allowedMcpServers` 列表来自设置了该列表的最高优先级管理员来源。

464 464 

465hooks 锁和 `allowManagedPermissionRulesOnly` 对开发人员自己规则的影响默认需要赢家源;在[Claude Code 如何组合托管源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)中的 `managedSourcesBehavior` 合并选择加入下,Claude Code 应用任何源为每个锁设置的最严格值。在 [`policyHelper`](/docs/zh-CN/settings-reference#policyhelper) 舰队上,锁仅从助手的输出读取。465默认情况下,hook 锁定以及 `allowManagedPermissionRulesOnly` 对开发人员自身规则的作用需要由胜出来源设置;在 [Claude Code 如何组合托管来源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)中所述的 `managedSourcesBehavior` 合并选项下,Claude Code 会对每个锁定应用任何来源所设置的最严格值。在 [`policyHelper`](/docs/zh-CN/settings-reference#policyhelper) 机器群上,Claude Code 仅从帮助程序的输出中读取锁定。

466 466 

467每个锁使 Claude Code 忽略开发人员对该设置的自己条目,因此在锁旁边包含您组织的允许列表:467每个锁定都会让 Claude Code 忽略开发人员自己针对该设置的条目,因此请在锁定旁边包含您组织的允许列表:

468 468 

469* **网络域**:使用空托管域列表锁定会阻止所有沙箱出站流量。469* **网络域**:使用空的托管域列表进行锁定会阻止所有沙箱化的出站流量。

470* **MCP 服务器**:使用任何管理员源或父提供的设置中都没有 `allowedMcpServers` 的锁会加载 `deniedMcpServers` 不阻止的每个服务器。470* **MCP 服务器**:如果任何管理员来源或父进程提供的设置中都没有 `allowedMcpServers`,进行锁定会加载所有未被 `deniedMcpServers` 阻止的服务器。

471* **读取路径**:`allowRead` 条目仅重新允许 `denyRead` 区域内的路径,因此将它们与托管 `denyRead` 配对。471* **读取路径**:`allowRead` 条目只会重新允许 `denyRead` 区域内的路径,因此请将它们与托管的 `denyRead` 搭配使用。

472 472 

473<h4 id="settings-the-locks-don’t-cover">473<h4 id="settings-the-locks-don’t-cover">

474 锁不涵盖的设置474 锁定未覆盖的设置

475</h4>475</h4>

476 476 

477即使设置了所有五个锁,这些父提供的设置也会通过过滤器:477即使设置了全部五个锁定,以下父进程提供的设置仍会通过过滤器:

478 478 

479* **`forceLoginOrgUUID`**:当最高优先级管理员源未设置组织 UUID 时,Claude Code 尊重父提供的值。网关登录不检查此密钥。最高优先级管理员源中的组织 UUID 阻止父的值,是 Claude Code 强制执行的值。479* **`forceLoginOrgUUID`**:当最高优先级的管理员来源未设置组织 UUID 时,Claude Code 会采用父进程提供的值。网关登录不检查此键。最高优先级管理员来源中的组织 UUID 会阻止父进程的值,并成为 Claude Code 强制执行的值。

480* **`allowedMcpServers`**:当没有生效的管理员列表时,Claude Code 尊重父提供的允许列表。`allowManagedMcpServersOnly` 不阻止它,因为锁强制执行任何赢家列表作为托管值,包括当没有管理员源提供列表时的父提供列表。最高优先级管理员源中的列表阻止父的并是 Claude Code 强制执行的列表,因此在那里设置 `allowedMcpServers`,在锁旁边。在 v2.1.223 之前,任何管理员源中任一密钥的值都阻止父的。480* **`allowedMcpServers`**:当没有生效的管理员列表时,Claude Code 会采用父进程提供的允许列表。`allowManagedMcpServersOnly` 不会阻止它,因为该锁定会将胜出的列表作为托管值强制执行,在没有管理员来源提供列表时,这也包括父进程提供的列表。最高优先级管理员来源中的列表会阻止父进程的列表,并成为 Claude Code 强制执行的列表,因此请在那里、在锁定旁边设置 `allowedMcpServers`。在 v2.1.223 之前,任何管理员来源中这两个键之一的值都会阻止父进程的值。

481* **`availableModels`**:当赢家托管源未设置模型列表时,Claude Code 尊重父提供的模型列表。如果您的舰队限制模型,在赢家源中设置 `availableModels`。481* **`availableModels`**:当胜出的托管来源未设置模型列表时,Claude Code 会采用父进程提供的模型列表。如果您的机器群限制模型,请在胜出来源中设置 `availableModels`。

482* **`allowedProviders`**:当赢家托管源未设置 API 提供商允许列表时,Claude Code 尊重父提供的 API 提供商允许列表。如果您的舰队限制开发人员可以使用的 API 提供商,在赢家源中设置 `allowedProviders`。需要 Claude Code v2.1.285 或更高版本。482* **`allowedProviders`**:当胜出的托管来源未设置 API 提供商允许列表时,Claude Code 会采用父进程提供的该列表。如果您的机器群限制开发人员可以使用的 API 提供商,请在胜出来源中设置 `allowedProviders`。需要 Claude Code v2.1.285 或更高版本。

483* **`strictKnownMarketplaces`**:当赢家托管源未设置一个时,Claude Code 尊重父提供的插件市场允许列表。Claude Desktop 2.16120.0 或更高版本在其托管配置关闭用户添加的插件市场时发送一个。如果您的舰队限制市场,在赢家源中设置 `strictKnownMarketplaces`。需要 Claude Code v2.1.282 或更高版本。483* **`strictKnownMarketplaces`**:当胜出的托管来源未设置插件市场允许列表时,Claude Code 会采用父进程提供的该列表。当 Claude Desktop 2.16120.0 或更高版本的托管配置关闭用户添加的插件市场时,它会发送该列表。如果您的机器群限制市场,请在胜出来源中设置 `strictKnownMarketplaces`。需要 Claude Code v2.1.282 或更高版本。

484* **`blockedMarketplaces`**:父提供的市场阻止列表通过并添加到任何托管源设置的阻止列表,因为阻止列表只能进一步限制。需要 Claude Code v2.1.282 或更高版本。484* **`blockedMarketplaces`**:父进程提供的市场拒绝列表会通过,并添加到托管来源设置的任何拒绝列表中,因为拒绝列表只会进一步增加限制。需要 Claude Code v2.1.282 或更高版本。

485* **`strictPluginOnlyCustomization`**:此密钥无论任何锁都通过过滤器,它使 Claude Code 忽略开发人员的自己定制,包括保护性 hooks。没有锁阻止它。485* **`strictPluginOnlyCustomization`**:无论设置了何种锁定,此键都会通过过滤器,并且它会让 Claude Code 忽略开发人员自己的自定义内容,包括保护性 hook。没有任何锁定能阻止它。

486 486 

487在默认的先赢设置下,管理员值仅当位于最高优先级管理员源中时才阻止父的值,但 [MCP 服务器锁](#lock-behavior-across-sources)打开时的 `allowedMcpServers` 除外。在 `managedSourcesBehavior` 合并选择加入下,[Claude Code 如何组合托管源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)说明哪个源的值改为适用。487在默认的“先到先得”设置下,只有当管理员值位于最高优先级管理员来源中时,才会阻止父进程的值,但在 [MCP 服务器锁定](#lock-behavior-across-sources)开启期间的 `allowedMcpServers` 除外。在 `managedSourcesBehavior` 合并选项下,改由 [Claude Code 如何组合托管来源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)说明应用哪个来源的值。

488 488 

489<h3 id="connect-claude-desktop">489<h3 id="connect-claude-desktop">

490 连接 Claude Desktop490 连接 Claude Desktop

491</h3>491</h3>

492 492 

493[Claude Desktop](/docs/zh-CN/desktop)通过不同的 MDM 密钥连接到同一网关:在 Claude Desktop 的[托管配置](https://claude.com/docs/third-party/claude-desktop/configuration)中设置 `bootstrapUrl` 为 `<listen.public_url>/user/bootstrap`,并使用 `desktop` 密钥选择加入用户的策略。[Claude Desktop 覆盖](/docs/zh-CN/claude-apps-gateway-config#claude-desktop-overlay)涵盖两个部分。需要网关服务器上的 Claude Code v2.1.203 或更高版本。493[Claude Desktop](/docs/zh-CN/desktop) 通过另一个 MDM 键连接到同一网关:在 Claude Desktop 的[托管配置](https://claude.com/docs/third-party/claude-desktop/configuration)中将 `bootstrapUrl` 设置为 `<listen.public_url>/user/bootstrap`,并通过 `desktop` 键让用户的策略启用该功能。[Claude Desktop 覆盖层](/docs/zh-CN/claude-apps-gateway-config#claude-desktop-overlay)介绍了这两部分。需要网关服务器上的 Claude Code 为 v2.1.203 或更高版本。

494 494 

495Claude Desktop 通过网关的身份提供商使用相同的浏览器 SSO 步骤对开发人员进行签名,然后从网关而不是从 Anthropic 获取其配置。模型访问和策略遵循与 CLI 相同的每组规则。同时使用 CLI 和 Claude Desktop 的开发人员分别登录到每个;网关会话不在它们之间共享。495Claude Desktop 通过网关的身份提供商、使用相同的浏览器 SSO 步骤让开发人员登录,然后从网关而不是从 Anthropic 获取其配置。模型访问和策略遵循与 CLI 相同的按组规则。同时使用 CLI 和 Claude Desktop 的开发人员需要分别登录两者;网关会话不会在它们之间共享。

496 496 

497连接后,Claude Desktop 从每个启用的选项卡通过网关发送模型请求。它默认显示 Cowork 和 Code 选项卡。要同时打开 Chat 选项卡,在 Claude Desktop 的[托管配置](https://claude.com/docs/third-party/claude-desktop/configuration)中设置 `chatTabEnabled` 为 `true`,或在运行 Claude Code v2.1.227 或更高版本的网关上的策略的 [`desktop` 块](/docs/zh-CN/claude-apps-gateway-config#claude-desktop-overlay)中。497连接后,Claude Desktop 会通过网关发送来自每个已启用标签页的模型请求。它默认显示 Cowork 和 Code 标签页。要同时启用 Chat 标签页,请在 Claude Desktop 的[托管配置](https://claude.com/docs/third-party/claude-desktop/configuration)中将 `chatTabEnabled` 设置为 `true`,或者在运行 Claude Code v2.1.227 或更高版本的网关上,在策略的 [`desktop` 块](/docs/zh-CN/claude-apps-gateway-config#claude-desktop-overlay)中进行设置。

498 498 

499<h3 id="ci-pipelines-and-remote-machines">499<h3 id="ci-pipelines-and-remote-machines">

500 CI 管道和远程机器500 CI 流水线和远程机器

501</h3>501</h3>

502 502 

503没有用于无人值守管道的服务令牌流。网关登录始终运行浏览器设备流,因此没有开发人员批准登录的 CI 作业无法进行身份验证;针对您的提供商直接配置这些。503没有面向无人值守流水线的服务令牌流程。网关登录始终运行浏览器设备流程,因此没有开发人员批准登录的 CI 作业无法完成身份验证;请将这些作业直接配置为使用您的提供商。请将 `forceLoginMethod` 和 `forceLoginGatewayUrl` 部署到开发人员机器上,不要部署到 CI 运行器上。在托管设置中设置了这两个键的机器上,使用 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 进行身份验证的会话会[在启动时退出](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)。

504 504 

505开发人员登录后,该机器上的每个 Claude Code 会话都使用网关会话,包括非交互式 `claude -p` 运行和由 Agent SDK 启动的会话。Claude Code 将[网关策略](/docs/zh-CN/claude-apps-gateway-config#managed)应用于每个会话。505开发人员登录后,该机器上的每个 Claude Code 会话都会使用网关会话,包括非交互式 `claude -p` 运行以及由 Agent SDK 启动的会话。Claude Code 会对其中每一个应用[网关策略](/docs/zh-CN/claude-apps-gateway-config#managed)。

506 506 

507设备流将轮询 CLI 与批准浏览器分开,因此没有显示的远程开发框仍然有效:开发人员通过 SSH 在远程机器上运行 `/login`,并在笔记本电脑上的浏览器中打开验证链接。507设备流程将轮询的 CLI 与进行批准的浏览器分离开来,因此没有显示器的远程开发机也能正常使用:开发人员通过 SSH 在远程机器上运行 `/login`,然后在笔记本电脑的浏览器中打开验证链接。

508 508 

509<h3 id="whats-enforced-on-developers">509<h3 id="whats-enforced-on-developers">

510 对开发人员强制执行的内容510 对开发人员强制执行的内容

511</h3>511</h3>

512 512 

513这些保证适用于每个通过 `/login` 登录的会话。Claude Desktop 启动的嵌入式会话按[将策略传递给 Claude Desktop 会话](#deliver-policy-to-claude-desktop-sessions)中所述获取其策略,遥测项目说明其导出的去向。513以下保证适用于通过 `/login` 登录的每个会话。Claude Desktop 启动的嵌入式会话按照[向 Claude Desktop 会话传递策略](#deliver-policy-to-claude-desktop-sessions)中所述的方式获取策略,遥测一项说明了它们的导出数据发往何处。

514 514 

515* **模型访问**:对策略未授予的模型的请求返回 400,`/model` 选择器被过滤到策略的 `availableModels` 允许列表。这包括开发人员选择模型之前会话启动时使用的模型;请参阅[在策略允许的模型上启动会话](/docs/zh-CN/claude-apps-gateway-config#start-sessions-on-a-model-the-policy-allows)。515* **模型访问**:针对策略未授予的模型的请求会返回 400,`/model` 选择器会被筛选为策略的 `availableModels` 允许列表。这也包括开发人员选择模型之前会话所使用的起始模型;请参阅[让会话以策略允许的模型启动](/docs/zh-CN/claude-apps-gateway-config#start-sessions-on-a-model-the-policy-allows)。

516* **遥测目标**:在通过 `/login` 登录的会话中,CLI 将其 OTLP/HTTP 导出发送到网关,而不是任何本地设置的 `OTEL_EXPORTER_OTLP_ENDPOINT`,除非策略[将您的收集器命名为端点](/docs/zh-CN/claude-apps-gateway-config#export-directly-to-your-collector)。网关将它接收的导出中继到 [`telemetry.forward_to`](/docs/zh-CN/claude-apps-gateway-config#telemetry) 中的目标。516* **遥测目标**:在通过 `/login` 登录的会话中,CLI 会将其 OTLP/HTTP 导出数据发送到网关,而不是发送到本地设置的 `OTEL_EXPORTER_OTLP_ENDPOINT`,除非策略[将您的收集器指定为端点](/docs/zh-CN/claude-apps-gateway-config#export-directly-to-your-collector)。网关会将收到的导出数据中继到 [`telemetry.forward_to`](/docs/zh-CN/claude-apps-gateway-config#telemetry) 中的目标。

517 * 在[Claude Desktop 启动](#connect-claude-desktop)的嵌入式会话中,CLI 将其导出发送到配置的 `OTEL_EXPORTER_OTLP_ENDPOINT`。CLI 仅当该端点指向网关本身时才将网关会话令牌附加到这些导出。517 * 在 [Claude Desktop 启动](#connect-claude-desktop)的嵌入式会话中,CLI 会将其导出数据发送到已配置的 `OTEL_EXPORTER_OTLP_ENDPOINT`。只有当该端点指向网关本身时,CLI 才会在这些导出数据中附加网关会话令牌。

518 * 没有为信号配置目标时,网关接受并丢弃它。518 * 如果某个信号没有配置目标,网关会接收并丢弃它。

519 * 如果您已直接收集 Claude Code 遥测,将您的收集器添加为 `forward_to` 目标,或在策略中命名它以跳过中继。519 * 如果您已经在直接收集 Claude Code 遥测数据,请将您的收集器添加为 `forward_to` 目标,或者在策略中指定它以跳过中继。

520* **凭证**:网关令牌是会话的唯一凭证。[Anthropic 配置文件](/docs/zh-CN/authentication#anthropic-profiles-and-federation-credentials)和任何早期的 claude.ai 登录在登录时被忽略,因此开发人员不需要首先从 claude.ai 注销。对于配置的 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 凭证,或早期 Claude Console 登录保存的 API 密钥,请参阅[管理员策略需要 Cloud 网关登录](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)。520* **凭据**:网关令牌是会话唯一的凭据。登录期间,[Anthropic 配置文件](/docs/zh-CN/authentication#anthropic-profiles-and-federation-credentials)以及任何之前的 claude.ai 登录都会被忽略,因此开发人员无需先注销 claude.ai。对于已配置的 `ANTHROPIC_API_KEY`、`ANTHROPIC_AUTH_TOKEN` 或 `apiKeyHelper` 凭据,或者之前 Claude Console 登录所保存的 API 密钥,请参阅[管理员策略要求进行 Cloud gateway 登录](/docs/zh-CN/errors#administrator-policy-requires-a-cloud-gateway-sign-in)。

521* **托管设置**:锁定的密钥无法在本地覆盖。CLI 在启动时应用策略,并在每个小时轮询时应用更改,除了[仅在下一次启动时应用的更改](/docs/zh-CN/server-managed-settings#fetch-and-caching-behavior)。521* **托管设置**:已锁定的键无法在本地覆盖。CLI 在启动时应用策略,并在每小时一次的轮询中应用更改,但[仅在下次启动时生效的更改](/docs/zh-CN/server-managed-settings#fetch-and-caching-behavior)除外。

522* **启动时网关无法访问**:已登录的会话在启动时约 10 秒后以错误退出,而不是在没有其设置的情况下启动。522* **网关不可达时启动**:已登录的会话会在大约 10 秒后以错误退出,而不是在没有设置的情况下启动。

523* **启动后网关结束会话**:请参阅[强制执行故障关闭启动](/docs/zh-CN/server-managed-settings#enforce-fail-closed-startup),了解哪些启动从网关登出打开,哪些在网关以 `401` 应答时退出。523* **网关终止会话后启动**:有关以网关注销状态打开的启动,以及在网关返回 `401` 时退出的启动,请参阅[强制执行失败即关闭的启动](/docs/zh-CN/server-managed-settings#enforce-fail-closed-startup)。

524* **取消配置**:用户在 IdP 中被禁用的会话在下一次刷新失败时在 `ttl_hours` 内过期。524* **取消配置**:当用户在 IdP 中被禁用时,其会话会在下一次刷新失败时于 `ttl_hours` 内过期。

525* **登出**:`/logout` 从开发人员的机器删除网关凭证。525* **注销**:`/logout` 会从开发人员的机器上删除网关凭据。

526 * 当网关的发现文档在网关 URL 自己的方案、主机和端口上宣传 `revocation_endpoint` 时,`/logout` 也将存储的令牌发送到该端点,以便网关可以在其端结束会话。请求是尽力而为的,因此登出在开发人员的机器上完成,无论端点是否应答。撤销需要开发人员机器上的 Claude Code v2.1.275 或更高版本。526 * 当网关的发现文档在与网关 URL 相同的协议、主机和端口上公布了 `revocation_endpoint` 时,`/logout` 还会将存储的令牌发送到该端点,以便网关在其一侧终止会话。该请求为尽力而为,因此无论端点是否响应,开发人员机器上的注销都会完成。该撤销功能要求开发人员机器上的 Claude Code 为 v2.1.275 或更高版本。

527 * `claude` 二进制文件中的网关服务器不宣传任何,因此从它登出仅在开发人员的机器上结束会话。要强制会话从服务器端退出,请参阅 [JWT 密钥轮换](/docs/zh-CN/claude-apps-gateway-deploy#jwt-secret-rotation)。527 * `claude` 二进制文件中的网关服务器不公布任何撤销端点,因此从它注销只会终止开发人员机器上的会话。要在服务器端强制终止会话,请参阅 [JWT 密钥轮换](/docs/zh-CN/claude-apps-gateway-deploy#jwt-secret-rotation)。

528 528 

529<h3 id="what-the-organization-can-see">529<h3 id="what-the-organization-can-see">

530 组织可以看到什么530 组织可以看到的内容

531</h3>531</h3>

532 532 

533使用情况遥测携带开发人员的身份、令牌计数、模型和延迟到组织的收集器。网关不记录或存储提示或完成内容。是否收集更丰富的遥测(如日志和跟踪),可能包括命令和文件路径,是组织的[按目标选择](/docs/zh-CN/claude-apps-gateway-config#telemetry)。533使用遥测会将开发人员的身份、token 数量、模型和延迟传送到组织的收集器。网关不会记录或存储提示词或补全内容。是否收集更丰富的遥测数据(例如日志和追踪,其中可能包含命令和文件路径)由组织[按目标自行选择](/docs/zh-CN/claude-apps-gateway-config#telemetry)。

534 534 

535<h2 id="availability-and-limitations">535<h2 id="availability-and-limitations">

536 可用性和限制536 可用性和限制

Details

340 340 

341仅在 `base_url` 是您操作的代理的上游上设置 `forward_user_identity`。网关将开发人员电子邮件发送到该 `base_url` 命名的任何服务器。如果 `base_url` 是 Anthropic API(默认),网关拒绝启动。341仅在 `base_url` 是您操作的代理的上游上设置 `forward_user_identity`。网关将开发人员电子邮件发送到该 `base_url` 命名的任何服务器。如果 `base_url` 是 Anthropic API(默认),网关拒绝启动。

342 342 

343<Note>

344 如果您在 Amazon Bedrock 上游上设置 `forward_user_identity`,网关会在启动时退出并显示 `Unrecognized key(s) in object: 'forward_user_identity'`。如果您的代理位于 Bedrock 前面,请改为将其列为 `provider: anthropic` 上游。网关向该上游发送 Anthropic Messages 格式,因此您的代理必须[为 Bedrock 转换请求](/docs/zh-CN/llm-gateway-protocol#format-mismatch-with-the-upstream)。若要改为向 AWS 标明每个开发人员,请参阅[每开发人员 AWS 成本属性](#per-developer-aws-cost-attribution)。

345</Note>

346 

343<h4 id="amazon-bedrock">347<h4 id="amazon-bedrock">

344 Amazon Bedrock348 Amazon Bedrock

345</h4>349</h4>


566| `auth.aws_access_key_id` / `auth.aws_secret_access_key` | 否 | 显式 SigV4 凭据。在没有另一个的情况下设置一个在启动时失败。`auth.aws_session_token` 在它们旁边被接受。 |570| `auth.aws_access_key_id` / `auth.aws_secret_access_key` | 否 | 显式 SigV4 凭据。在没有另一个的情况下设置一个在启动时失败。`auth.aws_session_token` 在它们旁边被接受。 |

567| `base_url` | 否 | 覆盖派生的端点 |571| `base_url` | 否 | 覆盖派生的端点 |

568 572 

569因为平台解析第一方模型 ID,内置目录路由到它而不带 [`models:`](#models) 块。当您策划 `models:` 列表时,使用第一方 ID 键入条目 `anthropicAws:`。573因为平台解析第一方模型 ID,内置目录路由到它而不带 [`models:`](#models) 块。当您策划 `models:` 列表时,使用第一方 ID 作为 `anthropicAws:` 条目的值。

570 574 

571<h4 id="google-cloud-agent-platform">575<h4 id="google-cloud-agent-platform">

572 Google Cloud Agent Platform576 Google Cloud Agent Platform


716 auth:720 auth:

717 api_key: ${ANTHROPIC_API_KEY}721 api_key: ${ANTHROPIC_API_KEY}

718 722 

719# 按上游模型 ID 在上游的 `name:` 上键入。723# 每个上游的模型 ID 以上游的 `name:` 为键。

720models:724models:

721 - id: claude-opus-4-8725 - id: claude-opus-4-8

722 label: Claude Opus 4.8726 label: Claude Opus 4.8


1133 1137 

1134* 模型列表,来自 `availableModels`。[Claude Desktop 中的扩展上下文](#extended-context-in-claude-desktop)介绍每个模型的 1M 上下文选项1138* 模型列表,来自 `availableModels`。[Claude Desktop 中的扩展上下文](#extended-context-in-claude-desktop)介绍每个模型的 1M 上下文选项

1135* 禁用的工具,来自裸工具名称 `permissions.deny` 条目。如果您在策略的 `desktop` 块中设置 `disabledBuiltinTools`,网关提供您的值和派生列表的并集,因此您可以通过这种方式禁用更多工具,但无法重新启用您通过 `permissions.deny` 禁用的工具1139* 禁用的工具,来自裸工具名称 `permissions.deny` 条目。如果您在策略的 `desktop` 块中设置 `disabledBuiltinTools`,网关提供您的值和派生列表的并集,因此您可以通过这种方式禁用更多工具,但无法重新启用您通过 `permissions.deny` 禁用的工具

1136* 出口允许列表,来自 `sandbox.network.allowedDomains`。如果您在策略的 `desktop` 块中设置 `coworkEgressAllowedHosts`,网关使用该值而不是派生列表1140* 出站允许列表,来自 `sandbox.network.allowedDomains`。如果您在策略的 `desktop` 块中设置了 `coworkEgressAllowedHosts`,网关会使用该值而不是派生列表。如果网关提供的允许列表包含 `*`,且网关未同时提供 Claude Desktop 的 [`allowedWorkspaceFolders`](https://claude.com/docs/third-party/claude-desktop/code#applied-as-managed-policy),则 Claude Desktop 不会在 Code 标签页中启用 [Bash 沙箱](/docs/zh-CN/sandboxing)

1137* 指向网关本身的 OTLP 端点,以及已登录用户的身份属性。网关将它在该端点接收的导出中继到您的 `forward_to` 目的地。当您同时设置 [`telemetry.forward_to`](#telemetry) 和 `listen.public_url` 时,它包括端点和属性。1141* 指向网关本身的 OTLP 端点,以及已登录用户的身份属性。网关将它在该端点接收的导出中继到您的 `forward_to` 目的地。当您同时设置 [`telemetry.forward_to`](#telemetry) 和 `listen.public_url` 时,它包括端点和属性。

1138 1142 

1139 Claude Desktop 以一种编码导出每个信号:`http/protobuf`,或当您在策略的 `env` 中将 `OTEL_EXPORTER_OTLP_PROTOCOL` 或其每个信号变体设置为 `http/json` 时为 `http/json`。在网关服务器上的 Claude Code v2.1.261 之前,响应设置 `http/json` 无论如何,因此仅接受 protobuf 的收集器拒绝了 Claude Desktop 的导出1143 Claude Desktop 以一种编码导出每个信号:`http/protobuf`,或当您在策略的 `env` 中将 `OTEL_EXPORTER_OTLP_PROTOCOL` 或其每个信号变体设置为 `http/json` 时为 `http/json`。在网关服务器上的 Claude Code v2.1.261 之前,响应设置 `http/json` 无论如何,因此仅接受 protobuf 的收集器拒绝了 Claude Desktop 的导出


1374 1378 

1375protobuf 和 JSON OTLP 编码都被中继,任何 OpenTelemetry 兼容的后端都可以作为目的地。1379protobuf 和 JSON OTLP 编码都被中继,任何 OpenTelemetry 兼容的后端都可以作为目的地。

1376 1380 

1381<h4 id="send-cumulative-metrics">

1382 发送累积指标

1383</h4>

1384 

1385如果您的收集器仅接受累积指标,请将 [`OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE`](/docs/zh-CN/monitoring-usage#common-configuration-variables) 设置为 `cumulative`。Claude Code 默认发送增量指标,网关在转发时不会对其进行转换。请在每种会话读取该变量的位置进行设置:

1386 

1387* **终端会话**:在策略 [`cli` 或 `code` 键](#choose-cli-or-code)下的 `env` 块中

1388* **[在用户机器上运行](/docs/zh-CN/managed-settings#where-and-when-a-policy-applies)的 Cowork 会话**:在该机器上[客户端托管设置](#client-side-managed-settings)的 `env` 块中

1389* **`code` 策略下的 Code 标签页会话**:在满足[`code` 设置生效的条件](#apply-code-settings-in-the-code-tab)后,在策略的 `env` 块中

1390* **`cli` 策略下的 Code 标签页会话**:在运行该会话的机器上客户端托管设置的 `env` 块中。通过 SSH 时,即远程主机。

1391 

1392如果您将该变量添加到机器的托管设置中,还需在该机器上优先级最高的来源中设置 [`parentSettingsBehavior: "merge"`](/docs/zh-CN/claude-apps-gateway#set-the-opt-in)。否则,Cowork 会话和 `cli` 策略下的 Code 标签页会话将在没有出站允许列表以及 Claude Desktop 作为父级设置传递给它们的其他策略的情况下运行。

1393 

1377<h4 id="add-your-own-labels">1394<h4 id="add-your-own-labels">

1378 添加您自己的标签1395 添加您自己的标签

1379</h4>1396</h4>

Details

1706claude purge ~/work/my-repo --yes1706claude purge ~/work/my-repo --yes

1707```1707```

1708 1708 

1709传递 `--all` 而不是路径以一次清除所有项目的状态,这会直接删除 `history.jsonl` 而不是过滤它。传递 `-i` 以逐项逐步执行删除计划。1709其他选项:

1710 

1711* 传递 `--all` 而不是路径,以一次清除所有项目的状态,这会直接删除 `history.jsonl` 而不是对其进行过滤。

1712* 传递 `-i` 以逐项执行删除计划。

1710 1713 

1711该命令不理会 `shell-snapshots/` 和 `backups/`,因为这些不是项目范围的,并在计划输出中警告它们。如果有人在该机器上运行过 [`/heapdump`](/docs/zh-CN/troubleshooting#high-cpu-or-memory-usage),也请删除它写入的 `.heapsnapshot` 文件。堆快照包含完整的对话以及进程持有的所有凭据,保留扫描和清除都不会触及它。1714该命令不理会 `shell-snapshots/` 和 `backups/`,因为这些不是项目范围的,并在计划输出中警告它们。如果有人在该机器上运行过 [`/heapdump`](/docs/zh-CN/troubleshooting#high-cpu-or-memory-usage),也请删除它写入的 `.heapsnapshot` 文件。堆快照包含完整的对话以及进程持有的所有凭据,保留扫描和清除都不会触及它。

1712 1715 

1713您也可以手动删除上面的任何应用数据路径,除了 [state files to keep](#state-files-to-keep)。新会话不受影响。下表显示您对过去会话失去的内容。1716除[需保留的状态文件](#state-files-to-keep)外,您也可以自行删除上面的任何应用数据路径。

1714 1717 

1715| 删除 | 您失去 |1718| 删除 | 您失去 |

1716| - | - |1719| - | - |


1726| `~/.claude/remote-settings.json` | 无。在下次启动时重新获取。 |1729| `~/.claude/remote-settings.json` | 无。在下次启动时重新获取。 |

1727| `~/.claude/cache/changelog.md` | 无。在后台刷新。 |1730| `~/.claude/cache/changelog.md` | 无。在后台刷新。 |

1728| `~/.claude/policy-limits.json` | 无。自动刷新。 |1731| `~/.claude/policy-limits.json` | 无。自动刷新。 |

1729| `~/.claude/tasks/` | 恢复的会话会拾取的任务列表 |1732| `~/.claude/tasks/` | 您的[任务列表](/docs/zh-CN/interactive-mode#task-list),包括仍在使用中的列表 |

1730| `~/.claude/skills/.trash/`、`~/.claude/plugins/.trash/` | 恢复 [synced skills](/docs/zh-CN/skills#how-synced-skills-behave) 和 [synced plugins](/docs/zh-CN/plugins/loading#synced-plugins) 的机会,Claude Code 已删除 |1733| `~/.claude/skills/.trash/`、`~/.claude/plugins/.trash/` | 恢复 [synced skills](/docs/zh-CN/skills#how-synced-skills-behave) 和 [synced plugins](/docs/zh-CN/plugins/loading#synced-plugins) 的机会,Claude Code 已删除 |

1731| `~/.claude/plugins/installed_plugins.set-aside.<date>.<hash>.json`、`~/.claude/plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Claude Code 删除的 plugin 安装记录副本或无法读取的文件副本。没有任何内容读取它们 |1734| `~/.claude/plugins/installed_plugins.set-aside.<date>.<hash>.json`、`~/.claude/plugins/installed_plugins.unreadable.<date>.<hash>.kept` | Claude Code 删除的 plugin 安装记录副本或无法读取的文件副本。没有任何内容读取它们 |

1732| `~/.claude/debug/`、`~/.claude/plans/`、`~/.claude/session-env/`、`~/.claude/shell-snapshots/`、`~/.claude/backups/` | 没有面向用户的内容 |1735| `~/.claude/debug/`、`~/.claude/plans/`、`~/.claude/session-env/`、`~/.claude/shell-snapshots/`、`~/.claude/backups/` | 没有面向用户的内容 |

Details

115| `--no-session-persistence` | 禁用会话持久性,以便会话不保存到磁盘且无法恢复。仅限 print 模式。[`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/zh-CN/env-vars) 环境变量在任何模式下执行相同操作 | `claude -p --no-session-persistence "query"` |115| `--no-session-persistence` | 禁用会话持久性,以便会话不保存到磁盘且无法恢复。仅限 print 模式。[`CLAUDE_CODE_SKIP_PROMPT_HISTORY`](/docs/zh-CN/env-vars) 环境变量在任何模式下执行相同操作 | `claude -p --no-session-persistence "query"` |

116| `--output-format` | 为 print 模式指定输出格式(选项:`text`、`json`、`stream-json`) | `claude -p "query" --output-format json` |116| `--output-format` | 为 print 模式指定输出格式(选项:`text`、`json`、`stream-json`) | `claude -p "query" --output-format json` |

117| `--permission-mode` | 在指定的[权限模式](/docs/zh-CN/permission-modes)中开始。接受 `default`、`acceptEdits`、`plan`、`auto`、`dontAsk`、`bypassPermissions` 或 `manual`(作为 `default` 的别名)。`manual` 别名选择 UI 标记为 Manual 的权限模式,需要 Claude Code v2.1.200 或更高版本;`claude --help` 列出它来代替 `default`,两个值都有效。覆盖设置文件中的 `defaultMode`。没有此标志或 `--dangerously-skip-permissions` 时,新会话以[会话以哪种权限模式启动](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in)中描述的权限模式启动,该部分也涵盖了 `-p` 运行以何种模式启动 | `claude --permission-mode plan` |117| `--permission-mode` | 在指定的[权限模式](/docs/zh-CN/permission-modes)中开始。接受 `default`、`acceptEdits`、`plan`、`auto`、`dontAsk`、`bypassPermissions` 或 `manual`(作为 `default` 的别名)。`manual` 别名选择 UI 标记为 Manual 的权限模式,需要 Claude Code v2.1.200 或更高版本;`claude --help` 列出它来代替 `default`,两个值都有效。覆盖设置文件中的 `defaultMode`。没有此标志或 `--dangerously-skip-permissions` 时,新会话以[会话以哪种权限模式启动](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in)中描述的权限模式启动,该部分也涵盖了 `-p` 运行以何种模式启动 | `claude --permission-mode plan` |

118| `--permission-prompt-tool` | 指定 MCP 工具以在非交互模式下处理权限提示。Claude Code 在运行第一轮之前等待该工具的 MCP 服务器连接,最多等待 [`MCP_TIMEOUT`](/docs/zh-CN/env-vars) 启动超时时间,默认 30 秒。<br /><br />该提示工具无法批准标记为[需要用户交互](/docs/zh-CN/mcp#require-approval-for-a-specific-tool)的 MCP 工具:Claude Code 会将此类工具的 `allow` 结果转换为拒绝。此限制需要 Claude Code v2.1.199 或更高版本 | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |118| `--permission-prompt-tool` | 指定 MCP 工具以在非交互模式下处理权限提示。传递本次运行所加载的 MCP 服务器上某个工具的完整名称,例如 `mcp__<server>__<tool>`。Claude Code 在运行第一轮之前等待该工具的 MCP 服务器连接,最多等待 [`MCP_TIMEOUT`](/docs/zh-CN/env-vars) 启动超时时间,默认 30 秒。<br /><br />该提示工具无法批准标记为[需要用户交互](/docs/zh-CN/mcp#require-approval-for-a-specific-tool)的 MCP 工具:Claude Code 会将此类工具的 `allow` 结果转换为拒绝。此限制需要 Claude Code v2.1.199 或更高版本 | `claude -p --mcp-config ./mcp.json --permission-prompt-tool mcp__permissions__approve "query"` |

119| `--permission-prompts` | 在 print 模式下设置由谁回答权限提示。使用默认值 `host` 时,Claude Code 将它们发送到 Agent SDK 主机或 `--permission-prompt-tool` 工具。当没有人可以回答时传递 `none`,Claude Code 会改为拒绝它们。请参阅[在无人值守运行中关闭权限提示](/docs/zh-CN/headless#turn-off-permission-prompts-in-unattended-runs)。需要 Claude Code v2.1.259 或更高版本 | `claude -p --permission-prompts none "query"` |119| `--permission-prompts` | 在 print 模式下设置由谁回答权限提示。使用默认值 `host` 时,Claude Code 将它们发送到 Agent SDK 主机或 `--permission-prompt-tool` 工具。当没有人可以回答时传递 `none`,Claude Code 会改为拒绝它们。请参阅[在无人值守运行中关闭权限提示](/docs/zh-CN/headless#turn-off-permission-prompts-in-unattended-runs)。需要 Claude Code v2.1.259 或更高版本 | `claude -p --permission-prompts none "query"` |

120| `--plugin-dir` | 从目录或 `.zip` 存档加载插件,或从[插件文件夹](/docs/zh-CN/plugins/create#load-a-directory-or-archive-for-one-session)加载多个插件,仅用于此会话。每个标志接受一个路径。重复标志以传递更多路径:`--plugin-dir A --plugin-dir B.zip`。传递插件文件夹需要 Claude Code v2.1.265 或更高版本 | `claude --plugin-dir ./my-plugin` |120| `--plugin-dir` | 从目录或 `.zip` 存档加载插件,或从[插件文件夹](/docs/zh-CN/plugins/create#load-a-directory-or-archive-for-one-session)加载多个插件,仅用于此会话。每个标志接受一个路径。重复标志以传递更多路径:`--plugin-dir A --plugin-dir B.zip`。传递插件文件夹需要 Claude Code v2.1.265 或更高版本 | `claude --plugin-dir ./my-plugin` |

121| `--plugin-url` | 从 URL 获取插件 `.zip` 存档,仅用于此会话。重复标志以获取多个插件,或在单个带引号的值中传递空格分隔的 URL | `claude --plugin-url https://example.com/plugin.zip` |121| `--plugin-url` | 从 URL 获取插件 `.zip` 存档,仅用于此会话。重复标志以获取多个插件,或在单个带引号的值中传递空格分隔的 URL | `claude --plugin-url https://example.com/plugin.zip` |

Details

117 117 

118* **仓库设置为 Manual**:如何通过评论请求审查118* **仓库设置为 Manual**:如何通过评论请求审查

119* **Pull Request 来自复刻**:维护者可以请求审查119* **Pull Request 来自复刻**:维护者可以请求审查

120* **机器人或没有写入权限的人评论了 `@claude review`**:未启动审查,以及谁可以请求审查120* **机器人,或者既没有写入权限、也不是该 Pull Request 作者的人,评论了 `@claude review`**:未启动审查,以及谁可以请求审查

121* **GitHub 组织未关联到您的 Claude 组织**:审查已暂停,以及如何进行关联121* **GitHub 组织未关联到您的 Claude 组织**:审查已暂停,以及如何进行关联

122 122 

123关闭此设置即可停止发布这些评论。123关闭此设置即可停止发布这些评论。

Details

38 38 

39* **此仓库未启用 Code Review**:Claude 不会针对该命令发布任何评论或检查运行。请让 Owner [添加该仓库](/docs/zh-CN/code-review-setup#add-more-repositories)。39* **此仓库未启用 Code Review**:Claude 不会针对该命令发布任何评论或检查运行。请让 Owner [添加该仓库](/docs/zh-CN/code-review-setup#add-more-repositories)。

40* **评论不满足某个条件**:评论是内联评论或审查正文,而不是新的顶层评论,或者命令不在评论开头。编辑先前的评论而不是发布新评论也不算数,并且 Pull Request 必须处于打开状态。请参阅[评论命令的条件](/docs/zh-CN/code-review-pull-requests#comment-commands),并发布一条满足这些条件的新评论。40* **评论不满足某个条件**:评论是内联评论或审查正文,而不是新的顶层评论,或者命令不在评论开头。编辑先前的评论而不是发布新评论也不算数,并且 Pull Request 必须处于打开状态。请参阅[评论命令的条件](/docs/zh-CN/code-review-pull-requests#comment-commands),并发布一条满足这些条件的新评论。

41* **您没有写入权限**:您需要拥有该仓库的 write、maintain 或 admin 权限;对于来自 fork 的 Pull Request,起作用的是基础仓库上的权限。如果您的组织启用了提示,Claude 会回复 "No review was started: manual reviews can only be requested by someone with write access to this repository."。请让具有写入权限的人来发表评论。41* **您没有写入权限**:您需要拥有该仓库的 write、maintain 或 admin 权限;对于来自 fork 的 Pull Request,起作用的是基础仓库上的权限。除非该 Pull Request 是您自己的,否则 Claude 可能会回复一条[提示](/docs/zh-CN/code-review-setup#turn-tip-comments-on-or-off):"No review was started: manual reviews can only be requested by someone with write access to this repository."。请让具有写入权限的人来发表评论。

42* **预算已用尽**:Claude 会发布一条以 "⚠️ Code review skipped" 开头的评论。请参阅[审查未运行且 PR 显示预算消息](#review-didn’t-run-and-the-pr-shows-a-budget-message)。42* **预算已用尽**:Claude 会发布一条以 "⚠️ Code review skipped" 开头的评论。请参阅[审查未运行且 PR 显示预算消息](#review-didn’t-run-and-the-pr-shows-a-budget-message)。

43 43 

44<h3 id="review-didn’t-run-and-the-pr-shows-a-budget-message">44<h3 id="review-didn’t-run-and-the-pr-shows-a-budget-message">

commands.md +5 −5

Details

65| `/background [prompt]` | 将当前会话分离,作为[后台 Agent](/docs/zh-CN/agent-view) 运行,并释放此终端。传递提示词可在分离前再发送一条指令。使用 `claude agents` 监视该会话。要将对话复制到新的后台会话中,同时让当前会话继续运行,请使用 `/fork`。别名:`/bg` |65| `/background [prompt]` | 将当前会话分离,作为[后台 Agent](/docs/zh-CN/agent-view) 运行,并释放此终端。传递提示词可在分离前再发送一条指令。使用 `claude agents` 监视该会话。要将对话复制到新的后台会话中,同时让当前会话继续运行,请使用 `/fork`。别名:`/bg` |

66| `/batch <instruction>` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 在代码库中并行编排大规模更改。研究代码库,将工作分解为 5 到 30 个独立单元,并呈现计划。获得批准后,为每个单元在隔离的 [worktree](/docs/zh-CN/worktrees) 中生成一个[后台子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)。每个子代理实现其单元、运行测试并发布其更改。需要 git 仓库,或一个用于创建 worktree 的 [`WorktreeCreate` hook](/docs/zh-CN/worktrees#non-git-version-control)。在 git 仓库之外,`/batch` 需要 Claude Code v2.1.281 或更高版本。示例:`/batch migrate src/ from JavaScript to TypeScript` |66| `/batch <instruction>` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 在代码库中并行编排大规模更改。研究代码库,将工作分解为 5 到 30 个独立单元,并呈现计划。获得批准后,为每个单元在隔离的 [worktree](/docs/zh-CN/worktrees) 中生成一个[后台子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)。每个子代理实现其单元、运行测试并发布其更改。需要 git 仓库,或一个用于创建 worktree 的 [`WorktreeCreate` hook](/docs/zh-CN/worktrees#non-git-version-control)。在 git 仓库之外,`/batch` 需要 Claude Code v2.1.281 或更高版本。示例:`/batch migrate src/ from JavaScript to TypeScript` |

67| `/branch [name]` | 在此处创建当前对话的分支,以便您可以尝试不同的方向而不丢失当前的对话。会将您切换到该分支并保留原始对话,您可以使用 `/resume` 返回原始对话。要将副本作为单独的[后台会话](/docs/zh-CN/agent-view)运行而不切换进去,请使用 `/fork`;要将附带任务交给会向此对话汇报结果的[子代理](/docs/zh-CN/sub-agents),请使用 `/subtask` |67| `/branch [name]` | 在此处创建当前对话的分支,以便您可以尝试不同的方向而不丢失当前的对话。会将您切换到该分支并保留原始对话,您可以使用 `/resume` 返回原始对话。要将副本作为单独的[后台会话](/docs/zh-CN/agent-view)运行而不切换进去,请使用 `/fork`;要将附带任务交给会向此对话汇报结果的[子代理](/docs/zh-CN/sub-agents),请使用 `/subtask` |

68| `/btw [question]` | 询问有关当前会话的[附带问题](/docs/zh-CN/interactive-mode#side-questions-with-%2Fbtw),而不将其添加到对话中。如果不带问题运行 `/btw`,Claude Code 会显示您最近的附带问题,以便您浏览之前的回答;如果您还没有提问过,Claude Code 会输出一行用法说明。在 v2.1.212 之前,`/btw` 必须提供问题 |68| `/btw [question]` | 询问有关当前会话的[附带问题](/docs/zh-CN/interactive-mode#side-questions-with-%2Fbtw),而不将其添加到对话中。如果不带问题运行 `/btw`,Claude Code 会显示您最近的附带问题,以便您浏览之前的回答;如果您还没有提问过,Claude Code 会输出一行用法说明 |

69| `/bug [report]` | 报告 bug 或分享您的对话。您可以选择包含多少会话历史,并在发送任何内容之前在同意屏幕上确认。当您通过第一方连接登录 Anthropic 时,报告会发送给 Anthropic;在第三方提供商上,或没有 Anthropic 凭据时,Claude Code 会将报告写入[位于 `~/.claude/feedback-bundles/` 下的本地归档](/docs/zh-CN/data-usage#telemetry-services),由您自行转发。在 [VS Code 扩展](/docs/zh-CN/vs-code#use-the-prompt-box)中,`/bug` 会改为打开扩展自己的反馈对话框;需要 Claude Code v2.1.229 或更高版本。如果在 Claude 回复时运行此命令,Claude Code 会立即打开对话框。在 v2.1.232 之前,Claude Code 会将该命令排队,直到该轮次结束。别名:`/share`。在 v2.1.212 之前,`/bug` 和 `/share` 是 `/feedback` 的别名 |69| `/bug [report]` | 报告 bug 或分享您的对话。您可以选择包含多少会话历史,并在发送任何内容之前在同意屏幕上确认。当您通过第一方连接登录 Anthropic 时,报告会发送给 Anthropic;在第三方提供商上,或没有 Anthropic 凭据时,Claude Code 会将报告写入[位于 `~/.claude/feedback-bundles/` 下的本地归档](/docs/zh-CN/data-usage#telemetry-services),由您自行转发。在 [VS Code 扩展](/docs/zh-CN/vs-code#use-the-prompt-box)中,`/bug` 会改为打开扩展自己的反馈对话框;需要 Claude Code v2.1.229 或更高版本。如果在 Claude 回复时运行此命令,Claude Code 会立即打开对话框。在 v2.1.232 之前,Claude Code 会将该命令排队,直到该轮次结束。别名:`/share`。在 v2.1.212 之前,`/bug` 和 `/share` 是 `/feedback` 的别名 |

70| `/cd <path>` | 将此会话移动到新的工作目录,同时保留对话。输入部分路径可查看匹配的目录建议;按 `Tab` 接受其中一个。有关移动后 Claude Code 会立即从新目录应用哪些内容,以及 `/cd` 与 `/add-dir` 的区别,请参阅[将会话移动到另一个目录](/docs/zh-CN/permissions#move-the-session-to-another-directory) |70| `/cd <path>` | 将此会话移动到新的工作目录,同时保留对话。输入部分路径可查看匹配的目录建议;按 `Tab` 接受其中一个。有关移动后 Claude Code 会立即从新目录应用哪些内容,以及 `/cd` 与 `/add-dir` 的区别,请参阅[将会话移动到另一个目录](/docs/zh-CN/permissions#move-the-session-to-another-directory) |

71| `/chrome` | 配置 [Claude in Chrome](/docs/zh-CN/chrome) 设置 |71| `/chrome` | 配置 [Claude in Chrome](/docs/zh-CN/chrome) 设置 |


95| `/feedback [report]` | 发送有关 Claude Code 的产品反馈。打开与 [`/bug`](#all-commands) 相同的对话框,具有相同的同意步骤、发送规则和轮次中途行为。在具有 [Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior)的会话中,不带参数的 `/feedback` 会改为打开草稿队列,您可以在其中审阅、编辑、发送或丢弃 Claude 排入队列的草稿;该队列包含一个在对话框中撰写新报告的选项。带参数时,以及对于 `/bug` 始终如此,对话框会直接打开 |95| `/feedback [report]` | 发送有关 Claude Code 的产品反馈。打开与 [`/bug`](#all-commands) 相同的对话框,具有相同的同意步骤、发送规则和轮次中途行为。在具有 [Claude 起草的反馈](/docs/zh-CN/tools-reference#sendfeedback-tool-behavior)的会话中,不带参数的 `/feedback` 会改为打开草稿队列,您可以在其中审阅、编辑、发送或丢弃 Claude 排入队列的草稿;该队列包含一个在对话框中撰写新报告的选项。带参数时,以及对于 `/bug` 始终如此,对话框会直接打开 |

96| `/fewer-permission-prompts` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 扫描您的会话记录,查找常见的只读 Bash 和 MCP 工具调用,然后将按优先级排序的允许列表添加到项目的 `.claude/settings.json` 中,以减少权限提示 |96| `/fewer-permission-prompts` | **[Skill](/docs/zh-CN/skills#bundled-skills)。** 扫描您的会话记录,查找常见的只读 Bash 和 MCP 工具调用,然后将按优先级排序的允许列表添加到项目的 `.claude/settings.json` 中,以减少权限提示 |

97| `/focus` | 切换专注视图,该视图仅显示您的最后一条提示词、带有编辑 diffstat 的单行工具调用摘要以及最终回复。工具调用摘要还会统计该轮次中启动的子代理数量,并将已完成的后台任务通知合并为单个计数。该选择会跨会话保持;在设置中设置 [`viewMode`](/docs/zh-CN/settings-reference#viewmode) 可覆盖它。仅在[全屏渲染](/docs/zh-CN/fullscreen)中可用。在 [Remote Control](/docs/zh-CN/remote-control) 客户端中,运行 `/focus [on\|off]` 可仅为当前会话开启或关闭专注视图,而不更改您保存的选择;这需要 Claude Code v2.1.281 或更高版本。[VS Code 扩展](/docs/zh-CN/vs-code#use-the-prompt-box)提供其自己的 Focus 视图,作为命令菜单中的开关,存储为扩展设置,独立于 `viewMode` |97| `/focus` | 切换专注视图,该视图仅显示您的最后一条提示词、带有编辑 diffstat 的单行工具调用摘要以及最终回复。工具调用摘要还会统计该轮次中启动的子代理数量,并将已完成的后台任务通知合并为单个计数。该选择会跨会话保持;在设置中设置 [`viewMode`](/docs/zh-CN/settings-reference#viewmode) 可覆盖它。仅在[全屏渲染](/docs/zh-CN/fullscreen)中可用。在 [Remote Control](/docs/zh-CN/remote-control) 客户端中,运行 `/focus [on\|off]` 可仅为当前会话开启或关闭专注视图,而不更改您保存的选择;这需要 Claude Code v2.1.281 或更高版本。[VS Code 扩展](/docs/zh-CN/vs-code#use-the-prompt-box)提供其自己的 Focus 视图,作为命令菜单中的开关,存储为扩展设置,独立于 `viewMode` |

98| `/fork [prompt]` | [将当前对话复制](/docs/zh-CN/agent-view#copy-the-session-with-%2Ffork)到新的后台会话中,并在此处继续工作。传递提示词后,副本会立即开始处理;不传递时,副本会在 Agent 视图中等待其第一条提示词。除非副本[就地编辑](/docs/zh-CN/agent-view#how-file-edits-are-isolated),否则 Claude Code 会指示它在进行代码更改之前创建自己的 worktree;该隔离指令需要 Claude Code v2.1.221 或更高版本。要将附带任务交给结果会返回到此对话的子代理,请使用 `/subtask`;要自己切换到副本中,请使用 `/branch`。需要 Claude Code v2.1.212 或更高版本;在 v2.1.161 至 v2.1.211 上,以及每当[关闭 Agent 视图](/docs/zh-CN/agent-view#turn-off-agent-view)时,`/fork` 会改为启动[分叉子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation) |98| `/fork [prompt]` | [将当前对话复制](/docs/zh-CN/agent-view#copy-the-session-with-%2Ffork)到新的后台会话中,并在此处继续工作。传递提示词后,副本会立即开始处理;不传递时,副本会在 Agent 视图中等待其第一条提示词。除非副本[就地编辑](/docs/zh-CN/agent-view#how-file-edits-are-isolated),否则 Claude Code 会指示它在进行代码更改之前创建自己的 worktree;该隔离指令需要 Claude Code v2.1.221 或更高版本。要将附带任务交给结果会返回到此对话的子代理,请使用 `/subtask`;要自己切换到副本中,请使用 `/branch`。当[关闭 Agent 视图](/docs/zh-CN/agent-view#turn-off-agent-view)时,`/fork` 会改为启动[分叉子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation) |

99| `/goal [condition\|clear]` | 设置[目标](/docs/zh-CN/goal):Claude 会跨轮次持续工作,直到满足条件或目标[因其他原因被清除](/docs/zh-CN/goal#how-evaluation-works)。不带参数时,显示当前目标或最近达成的目标。`clear`、`stop`、`off`、`reset`、`none` 或 `cancel` 可提前移除活动目标 |99| `/goal [condition\|clear]` | 设置[目标](/docs/zh-CN/goal):Claude 会跨轮次持续工作,直到满足条件或目标[因其他原因被清除](/docs/zh-CN/goal#how-evaluation-works)。不带参数时,显示当前目标或最近达成的目标。`clear`、`stop`、`off`、`reset`、`none` 或 `cancel` 可提前移除活动目标 |

100| `/heapdump` | 将 JavaScript 堆快照和内存明细写入 `~/Desktop`(在没有 Desktop 文件夹的 Linux 上则写入主目录),用于诊断高内存使用率。报告内存问题时只附加 `-diagnostics.json` 文件;`.heapsnapshot` 包含您的完整对话和凭据,因此请勿分享它。[在命令菜单中隐藏](#how-the-command-menu-matches-what-you-type);需要完整输入。请参阅[如何处理输出](/docs/zh-CN/troubleshooting#high-cpu-or-memory-usage) |100| `/heapdump` | 将 JavaScript 堆快照和内存明细写入 `~/Desktop`(在没有 Desktop 文件夹的 Linux 上则写入主目录),用于诊断高内存使用率。报告内存问题时只附加 `-diagnostics.json` 文件;`.heapsnapshot` 包含您的完整对话和凭据,因此请勿分享它。[在命令菜单中隐藏](#how-the-command-menu-matches-what-you-type);需要完整输入。请参阅[如何处理输出](/docs/zh-CN/troubleshooting#high-cpu-or-memory-usage) |

101| `/help` | 显示帮助和可用命令 |101| `/help` | 显示帮助和可用命令 |

102| `/hooks` | 查看 [hook](/docs/zh-CN/hooks#the-%2Fhooks-menu) 配置 |102| `/hooks` | 查看 [hook](/docs/zh-CN/hooks#the-%2Fhooks-menu) 配置 |

103| `/ide` | 管理 IDE 集成并显示状态 |103| `/ide` | 管理 IDE 集成并显示状态 |

104| `/import [codex\|gemini\|cursor] [--dry-run] [--yes]` | 将您计算机上 OpenAI Codex、Google Gemini CLI 或 Cursor 中的配置导入 Claude Code,包括指令文件、MCP 服务器、命令、子代理和 skill。在使用 `-p` 的[非交互模式](/docs/zh-CN/headless)中,`/import` 会列出它找到的内容,并给出用于确认导入的命令。添加 `--dry-run` 可预览而不写入任何内容,或添加 `--yes` 以跳过交互式选择器。在 Amazon Bedrock、Google Cloud's Agent Platform、Microsoft Foundry 或 Claude Platform on AWS 上,或通过 [Claude apps gateway](/docs/zh-CN/claude-apps-gateway#availability-and-limitations) 使用时不可用。当您关闭[功能标志获取](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)时也不可用。需要 Claude Code v2.1.213 或更高版本。从 Cursor 导入需要 v2.1.265 或更高版本 |104| `/import [codex\|gemini\|cursor] [--dry-run] [--yes]` | 将您计算机上 OpenAI Codex、Google Gemini CLI 或 Cursor 中的配置导入 Claude Code,包括指令文件、MCP 服务器、命令、子代理和 skill。在使用 `-p` 的[非交互模式](/docs/zh-CN/headless)中,`/import` 会列出它找到的内容,并给出用于确认导入的命令。添加 `--dry-run` 可预览而不写入任何内容,或添加 `--yes` 以跳过交互式选择器。在 Amazon Bedrock、Google Cloud's Agent Platform、Microsoft Foundry 或 Claude Platform on AWS 上,或通过 [Claude apps gateway](/docs/zh-CN/claude-apps-gateway#availability-and-limitations) 使用时不可用。当您关闭[功能标志获取](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)时也不可用。从 Cursor 导入需要 v2.1.265 或更高版本 |

105| `/init` | 使用 `CLAUDE.md` 指南初始化项目。设置 `CLAUDE_CODE_NEW_INIT=1` 可使用交互式流程,该流程还会引导您完成 skill、hook 和个人记忆文件的设置。如果 `/init` 发现 OpenAI Codex 或 Google Gemini CLI 配置,它会提议使用 `/import` 将其迁移过来 |105| `/init` | 使用 `CLAUDE.md` 指南初始化项目。设置 `CLAUDE_CODE_NEW_INIT=1` 可使用交互式流程,该流程还会引导您完成 skill、hook 和个人记忆文件的设置。如果 `/init` 发现 OpenAI Codex 或 Google Gemini CLI 配置,它会提议使用 `/import` 将其迁移过来 |

106| `/insights` | 生成 HTML 报告,分析您在此计算机上的最近会话:您在哪些项目中工作、如何使用 Claude Code、哪里出现问题,以及值得尝试的功能。在[云端会话](/docs/zh-CN/claude-code-on-the-web)中不可用。有关报告位置、保留期限和开销,请参阅[分析您的使用模式](/docs/zh-CN/costs#analyze-your-usage-patterns) |106| `/insights` | 生成 HTML 报告,分析您在此计算机上的最近会话:您在哪些项目中工作、如何使用 Claude Code、哪里出现问题,以及值得尝试的功能。在[云端会话](/docs/zh-CN/claude-code-on-the-web)中不可用。有关报告位置、保留期限和开销,请参阅[分析您的使用模式](/docs/zh-CN/costs#analyze-your-usage-patterns) |

107| `/install-github-app` | 为仓库安装 Claude GitHub App,并可选择设置 [GitHub Actions](/docs/zh-CN/github-actions) 工作流和密钥。引导您选择仓库并配置集成。仅适用于 github.com 仓库。当您仓库的 git 远程位于 gitlab.com 或 bitbucket.org 上时,该命令会输出一条通知并退出,而不是开始设置。要从 GitLab 流水线运行 Claude Code,请参阅 [GitLab CI/CD](/docs/zh-CN/gitlab-ci-cd) |107| `/install-github-app` | 为仓库安装 Claude GitHub App,并可选择设置 [GitHub Actions](/docs/zh-CN/github-actions) 工作流和密钥。引导您选择仓库并配置集成。仅适用于 github.com 仓库。当您仓库的 git 远程位于 gitlab.com 或 bitbucket.org 上时,该命令会输出一条通知并退出,而不是开始设置。要从 GitLab 流水线运行 Claude Code,请参阅 [GitLab CI/CD](/docs/zh-CN/gitlab-ci-cd) |


153| `/statusline` | 配置 Claude Code 的[状态栏](/docs/zh-CN/statusline)。描述您想要的内容,或不带参数运行以根据您的 shell 提示符自动配置 |153| `/statusline` | 配置 Claude Code 的[状态栏](/docs/zh-CN/statusline)。描述您想要的内容,或不带参数运行以根据您的 shell 提示符自动配置 |

154| `/stickers` | 订购 Claude Code 贴纸 |154| `/stickers` | 订购 Claude Code 贴纸 |

155| `/stop` | 停止您已附加到的[后台会话](/docs/zh-CN/agent-view),或您以[窥视回复](/docs/zh-CN/agent-view#peek-and-reply)方式发送此命令的目标会话;会话记录和任何 worktree 都会保留。要分离而不停止,请使用 `/exit` 或按 `←` |155| `/stop` | 停止您已附加到的[后台会话](/docs/zh-CN/agent-view),或您以[窥视回复](/docs/zh-CN/agent-view#peek-and-reply)方式发送此命令的目标会话;会话记录和任何 worktree 都会保留。要分离而不停止,请使用 `/exit` 或按 `←` |

156| `/subtask <task>` | 生成一个[分叉子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation):一个继承完整对话的后台子代理,在您继续工作的同时处理该任务。完成后,其结果会返回到此对话。要改为将对话复制到单独的后台会话中,请使用 `/fork`。需要 Claude Code v2.1.212 或更高版本;在 v2.1.161 至 v2.1.211 上,此命令为 `/fork`。当[关闭 Agent 视图](/docs/zh-CN/agent-view#turn-off-agent-view)时,`/subtask` 不可用,`/fork` 保留分叉子代理行为 |156| `/subtask <task>` | 生成一个[分叉子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation):一个继承完整对话的后台子代理,在您继续工作的同时处理该任务。完成后,其结果会返回到此对话。要改为将对话复制到单独的后台会话中,请使用 `/fork`。当[关闭 Agent 视图](/docs/zh-CN/agent-view#turn-off-agent-view)时,`/subtask` 不可用,`/fork` 会改为生成分叉子代理 |

157| `/tasks` | 查看和管理当前会话中的后台工作,包括已完成的子代理。也可作为 `/bashes` 使用 |157| `/tasks` | 查看和管理当前会话中的后台工作,包括已完成的子代理。也可作为 `/bashes` 使用 |

158| `/team-onboarding` | 根据您的 Claude Code 使用历史生成团队入门指南。Claude 会分析您过去 30 天的会话、命令和 MCP 服务器使用情况,并生成一份 markdown 指南,队友可以将其作为第一条消息粘贴以快速完成设置。对于 Pro、Max、Team 和 Enterprise 套餐的 claude.ai 订阅者,还会返回一个分享链接,队友可以直接在 Claude Code 中打开 |158| `/team-onboarding` | 根据您的 Claude Code 使用历史生成团队入门指南。Claude 会分析您过去 30 天的会话、命令和 MCP 服务器使用情况,并生成一份 markdown 指南,队友可以将其作为第一条消息粘贴以快速完成设置。对于 Team 和 Enterprise 套餐的 claude.ai 订阅者,还会返回一个分享链接,队友可以直接在 Claude Code 中打开 |

159| `/teleport` | 将[云端会话](/docs/zh-CN/claude-code-on-the-web#from-cloud-to-terminal)拉取到此终端。打开选择器,然后获取分支和对话。也可作为 `/tp` 使用。需要 claude.ai 订阅 |159| `/teleport` | 将[云端会话](/docs/zh-CN/claude-code-on-the-web#from-cloud-to-terminal)拉取到此终端。打开选择器,然后获取分支和对话。也可作为 `/tp` 使用。需要 claude.ai 订阅 |

160| `/terminal-setup` | 在 VS Code、Cursor、Devin Desktop、Alacritty 或 Zed 中[安装用于换行的 Shift+Enter 快捷键](/docs/zh-CN/terminal-config#enter-multiline-prompts)。在 Apple Terminal 中,则改为[启用 Option+Enter 换行并关闭提示音](/docs/zh-CN/terminal-config#enable-option-key-shortcuts-on-macos)。在 iTerm2 中,[开启剪贴板访问,使 `/copy` 能够正常工作](/docs/zh-CN/terminal-config#enable-option-key-shortcuts-on-macos) |160| `/terminal-setup` | 在 VS Code、Cursor、Devin Desktop、Alacritty 或 Zed 中[安装用于换行的 Shift+Enter 快捷键](/docs/zh-CN/terminal-config#enter-multiline-prompts)。在 Apple Terminal 中,则改为[启用 Option+Enter 换行并关闭提示音](/docs/zh-CN/terminal-config#enable-option-key-shortcuts-on-macos)。在 iTerm2 中,[开启剪贴板访问,使 `/copy` 能够正常工作](/docs/zh-CN/terminal-config#enable-option-key-shortcuts-on-macos) |

161| `/theme` | 更改颜色主题。包括与终端浅色或深色背景匹配的 `auto` 选项、浅色和深色变体、色盲友好(daltonized)主题、使用终端调色板的 ANSI 主题,以及来自 `~/.claude/themes/` 或插件的任何[自定义主题](/docs/zh-CN/terminal-config#create-a-custom-theme)。选择 **New custom theme…** 可创建一个主题 |161| `/theme` | 更改颜色主题。包括与终端浅色或深色背景匹配的 `auto` 选项、浅色和深色变体、色盲友好(daltonized)主题、使用终端调色板的 ANSI 主题,以及来自 `~/.claude/themes/` 或插件的任何[自定义主题](/docs/zh-CN/terminal-config#create-a-custom-theme)。选择 **New custom theme…** 可创建一个主题 |

Details

120当启动器无法运行时,Claude Code 拒绝启动进程,而不是启动它未包装。在 Windows 上,[该变量被忽略](#what-the-launcher-covers)并且进程启动未包装。Claude Code 对脚本持有这些规则:120当启动器无法运行时,Claude Code 拒绝启动进程,而不是启动它未包装。在 Windows 上,[该变量被忽略](#what-the-launcher-covers)并且进程启动未包装。Claude Code 对脚本持有这些规则:

121 121 

122* **以 `exec "$@"` 结尾。** 启动器分叉子进程并退出会留下孤立的 Claude Code 进程,后台服务无法跟踪。代理视图用命名启动器的消息标记此类会话失败,服务收割启动器留下的内容。122* **以 `exec "$@"` 结尾。** 启动器分叉子进程并退出会留下孤立的 Claude Code 进程,后台服务无法跟踪。代理视图用命名启动器的消息标记此类会话失败,服务收割启动器留下的内容。

123* **不要重新排序、吸收或前置参数。** 第一个参数是 Claude Code 二进制文件,其后的所有内容都是其 argv。123* **不要重新排序、吸收或添加 Claude Code 的参数。** 移除排在最前面的启动器[自身参数](#pass-arguments-to-the-launcher),并将其余参数按原样传递给 `exec`。

124* **将每个继承的环境变量传递给 `exec`。** 添加变量(例如注入的凭证)很好;删除继承的变量不是。124* **将每个继承的环境变量传递给 `exec`。** 添加变量(例如注入的凭证)很好;删除继承的变量不是。

125 * 每个会话的身份验证令牌、模型和提供程序选择以及 `CLAUDE_CODE_PROCESS_WRAPPER` 本身都在继承的环境中传输,因此从允许列表重建它的启动器会破坏它启动的会话,`/status` 报告启动器不匹配。125 * 每个会话的身份验证令牌、模型和提供程序选择以及 `CLAUDE_CODE_PROCESS_WRAPPER` 本身都在继承的环境中传输,因此从允许列表重建它的启动器会破坏它启动的会话,`/status` 报告启动器不匹配。

126 * 如果启动器必须进入重置环境的命名空间或沙箱,请在其内部逐字重新导出继承的环境。126 * 如果启动器必须进入重置环境的命名空间或沙箱,请在其内部逐字重新导出继承的环境。

127* **在大约三秒内到达 `exec`,每次启动器运行。** 冷后台调度在第一个输出字节之前连续运行启动器两次,因此请懒惰地或从缓存中执行单点登录交换等缓慢工作。127* **每次启动器运行时,都要在大约三秒内到达 `exec`。** 后台会话在产生第一个输出之前可能会连续运行启动器三次。请以懒加载方式或从缓存中执行单点登录交换等缓慢工作,并为任何需要等待网络的步骤设置单独的时间限制。

128* **容忍从内部调用自己。** Claude Code 将启动器应用于每个嵌套的自生成,因此获取独占资源的启动器必须检测它是否已持有它。128* **容忍从内部调用自己。** Claude Code 将启动器应用于每个嵌套的自生成,因此获取独占资源的启动器必须检测它是否已持有它。

129* **不要在 Claude Code 启动前写入终端。** 在 `exec` 前打印的任何内容都会在会话在初始化前死亡时报告为崩溃原因。129* **不要在 Claude Code 启动前写入终端或标准输出。** 在 `exec` 前打印的任何内容都会在会话在初始化前终止时被报告为崩溃原因。标准输出上的文本还会传给读取 Claude Code 输出的程序,例如解析 `claude -p` 结果的脚本。

130* **不要依赖参数的书写方式。** 标志的值可能作为独立参数传入(`--flag value`),也可能与标志连在一起(`--flag=value`)。标志使用哪种形式可能会在不同版本之间发生变化。130* **不要依赖参数的书写方式。** 标志的值可能作为独立参数传入(`--flag value`),也可能与标志连在一起(`--flag=value`)。标志使用哪种形式可能会在不同版本之间发生变化。

131* **从启动器启动时所在的目录运行 `exec`。** Claude Code 在其启动时所在的目录中工作,因此更改目录的启动器可能会在错误的项目中启动会话。如果启动器必须进入重置工作目录的命名空间或沙箱,请在其内部、`exec` 之前切换回起始目录。131* **从启动器启动时所在的目录运行 `exec`。** Claude Code 在其启动时所在的目录中工作,因此更改目录的启动器可能会在错误的项目中启动会话。如果启动器必须进入重置工作目录的命名空间或沙箱,请在其内部、`exec` 之前切换回起始目录。

132* **不要读取标准输入。** 在 `exec` 之前读取标准输入的命令(例如要求输入密码的命令)可能会等待永远不会到来的输入,导致会话卡住。它还可能取走本应传给 Claude Code 的输入,之后会话可能在缺少该输入的情况下运行且不报告任何错误。请将此类命令的输入重定向自 `/dev/null`。

133* **通过绝对路径调用其他程序。** 启动器启动时的 `PATH` 可能不包含您的 shell 配置文件所添加的目录。

132 134 

133<h3 id="format-of-the-launcher-value">135<h3 id="format-of-the-launcher-value">

134 启动器值的格式136 启动器值的格式


138 140 

139要传递启动器自己的参数,请在路径后写入它们。Claude Code 将值解析为参数列表,而不是 shell 命令:141要传递启动器自己的参数,请在路径后写入它们。Claude Code 将值解析为参数列表,而不是 shell 命令:

140 142 

141* 空格分隔令牌,双引号将包含空格的令牌分组。143* 空白字符分隔各个 token,双引号将包含空格的 token 组合在一起。单引号是普通字符,因此 `'a b'` 是两个 token。

142* 以 `[` 开头的值被读取为 JSON 字符串数组,例如 `["/opt/corp/launcher", "--profile", "cc"]`。144* 以 `[` 开头的值被读取为 JSON 字符串数组,例如 `["/opt/corp/launcher", "--profile", "cc"]`。

143* Shell 语法不起作用:没有变量扩展或通配符,未引用的运算符(例如 `;`、`|`、`&` 或 `$(`)被拒绝为配置错误,而不是重新解释。145* Shell 语法不起作用:没有变量扩展或通配符,未引用的运算符(例如 `;`、`|`、`&` 或 `$(`)被拒绝为配置错误,而不是重新解释。

144 146 

145当无法使用该值时,Claude Code 拒绝启动受影响的进程并[报告原因](/docs/zh-CN/errors#claude_code_process_wrapper-launcher-errors)。147当无法使用该值时,Claude Code 拒绝启动受影响的进程并[报告原因](/docs/zh-CN/errors#claude_code_process_wrapper-launcher-errors)。

146 148 

149在设置文件中,请将数组形式写在 JSON 字符串内并转义其中的引号:`"[\"/opt/corp/launcher\", \"--profile\", \"cc\"]"`。

150 

151<h3 id="pass-arguments-to-the-launcher">

152 向启动器传递参数

153</h3>

154 

155在[该值](#format-of-the-launcher-value)中将启动器自身的参数写在其路径之后,并在脚本中于 `exec` 调用之前将其移除。这些参数会最先到达脚本,排在 Claude Code 命令之前。以下脚本针对值 `/opt/corp/launcher --profile cc` 编写,它保存配置档案名称,然后使用 `shift` 移除这两个参数:

156 

157```bash theme={null}

158#!/bin/sh

159if [ "$1" = "--profile" ]; then

160 profile="$2"

161 shift 2

162fi

163# Your organization's setup for "$profile".

164exec "$@"

165```

166 

167使用[验证步骤](#set-up-the-launcher)查看 Claude Code 根据该值解析出的启动命令。

168 

147<h2 id="relationship-to-claude_code_shell_prefix">169<h2 id="relationship-to-claude_code_shell_prefix">

148 与 `CLAUDE_CODE_SHELL_PREFIX` 的关系170 与 `CLAUDE_CODE_SHELL_PREFIX` 的关系

149</h2>171</h2>

costs.md +1 −1

Details

67 67 

68* **Attribution(归属)**:最近使用情况归属于 skills、subagents、plugins 和各个 MCP 服务器,每个都显示为总数的百分比。MCP 服务器的份额仅计算消耗其工具结果之一的请求。在 v2.1.222 之前,在调用 MCP 服务器一次后,Claude Code 将每个后续请求归属于该服务器,高估了其份额。68* **Attribution(归属)**:最近使用情况归属于 skills、subagents、plugins 和各个 MCP 服务器,每个都显示为总数的百分比。MCP 服务器的份额仅计算消耗其工具结果之一的请求。在 v2.1.222 之前,在调用 MCP 服务器一次后,Claude Code 将每个后续请求归属于该服务器,高估了其份额。

69* **Behavior flags(行为标志)**:行为,例如长上下文或缓存未命中,当其占最近使用情况的 10% 或更多时标记。69* **Behavior flags(行为标志)**:行为,例如长上下文或缓存未命中,当其占最近使用情况的 10% 或更多时标记。

70* **Loops(循环)**:最近运行的每个最重的 [`/loop` 或其他计划任务](/docs/zh-CN/scheduled-tasks) 的行,按总令牌排序,其余的计数。Claude Code 报告每个任务触发的频率、运行次数、其总令牌和每次运行令牌,以及最后一次运行的时间。Claude Code 通过任务的提示键入行,因此您停止并重新创建的循环保持为一行。需要 Claude Code v2.1.242 或更高版本。70* **Loops(循环)**:最近运行的每个最重的 [`/loop` 或其他计划任务](/docs/zh-CN/scheduled-tasks) 的行,按总令牌排序,其余的计数。Claude Code 报告每个任务触发的频率、运行次数、其总令牌和每次运行令牌,以及最后一次运行的时间。Claude Code 以任务的提示作为行的键,因此您停止并重新创建的循环保持为一行。需要 Claude Code v2.1.242 或更高版本。

71 71 

72按 `d` 或 `w` 在过去 24 小时和过去 7 天之间切换。这些数据是近似值,从此机器上的本地会话历史记录计算,因此不包括来自其他设备或 claude.ai 的使用情况。72按 `d` 或 `w` 在过去 24 小时和过去 7 天之间切换。这些数据是近似值,从此机器上的本地会话历史记录计算,因此不包括来自其他设备或 claude.ai 的使用情况。

73 73 

desktop.md +333 −71

Details

44 启动会话44 启动会话

45</h2>45</h2>

46 46 

47在发送第一条消息之前,在提示区域配置四件事:47在发送第一条消息之前,请在输入框下方的一行中选择环境、项目文件夹、权限模式和模型:

48 48 

49* **环境**:选择 Claude 运行的位置。选择 **Local** 在您的机器上运行,选择 **Cloud** 使用[云端会话](#cloud-sessions),该会话在您关闭应用后仍会继续运行;选择 [**SSH 连接**](#ssh-sessions)使用您管理的远程机器;或在 Windows 上选择 [**WSL 发行版**](/docs/zh-CN/desktop-wsl)。SSH 会话中的任务可以[在 Desktop 断开连接时继续运行](#keep-a-task-running-while-desktop-is-disconnected),但如果使用 Claude 账户,任务可能会在登录过期时停止。请参阅[环境配置](#environment-configuration)。49* **环境**:使用环境选择器(该行中的第一个控件)选择 Claude 运行的位置。请参阅[环境配置](#environment-configuration)。

50* **项目文件夹**:选择 Claude 工作的文件夹或存储库。对于云会话,你可以添加[多个存储库](#run-long-running-tasks-in-the-cloud)。50 * 如果新会话的输入框下方没有环境选择器,请按照[早期布局的步骤](#check-which-layout-you-have)操作。

51* **模型**:从发送按钮旁的下拉菜单中选择一个[模型](/docs/zh-CN/model-config#available-models)。你可以在会话期间更改此设置。51* **项目文件夹**:点击环境选择器旁边的项目文件夹控件,选择 Claude 工作的文件夹。

52* **权限模式**:从[模式选择器](#choose-a-permission-mode)中选择 Claude 拥有多少自主权。你可以在会话期间更改此设置。52 * **云端会话**:选择[仓库](#run-long-running-tasks-in-the-cloud)而不是文件夹

53 * **[已保存的本地或 SSH 环境](#create-a-saved-environment)**:该环境已包含其文件夹,因此该行不显示项目文件夹控件。要更改文件夹,请[编辑该环境](#use-edit-or-remove-a-saved-environment)。

54* **权限模式**:使用[模式选择器](#choose-a-permission-mode)选择 Claude 拥有多少自主权。您可以在会话期间更改权限模式。

55* **模型**:从该行靠右端的模型选择器中选择一个[模型](/docs/zh-CN/model-config#available-models)。您可以在会话期间更改模型。

53 56 

54输入你的任务并按 **Enter** 启动。每个会话独立跟踪其自己的上下文和更改。57输入你的任务并按 **Enter** 启动。每个会话独立跟踪其自己的上下文和更改。

55 58 


65 68 

66输入您想让 Claude 做的事情,然后按 **Enter** 发送。Claude 会读取您的项目文件,进行更改,并根据您的[权限模式](#choose-a-permission-mode)运行命令。您可以随时重定向 Claude:点击停止按钮立即中断,或输入更正并按 **Enter** 发送,无需停止正在运行的操作。Claude 会在当前操作完成后立即读取更正,并在下一步之前进行调整。69输入您想让 Claude 做的事情,然后按 **Enter** 发送。Claude 会读取您的项目文件,进行更改,并根据您的[权限模式](#choose-a-permission-mode)运行命令。您可以随时重定向 Claude:点击停止按钮立即中断,或输入更正并按 **Enter** 发送,无需停止正在运行的操作。Claude 会在当前操作完成后立即读取更正,并在下一步之前进行调整。

67 70 

68提示框旁边的 **+** 按钮让您可以访问文件附件、[skill](#use-skills)、[连接器](#connect-external-tools) 和[插件](#install-plugins)。71点击提示框旁边的 **+** 按钮,可以访问文件附件、[skill](#use-skills)、[连接器](#connect-external-tools) 和[插件](#install-plugins)。

69 72 

70<h3 id="accept-a-suggested-prompt">73<h3 id="accept-a-suggested-prompt">

71 接受建议的提示词74 接受建议的提示词


82 向提示添加文件和上下文85 向提示添加文件和上下文

83</h3>86</h3>

84 87 

85提示框支持两种方式来引入外部上下文:88要向 Claude 提供文件,请在输入框中 @mention 它或附加它:

86 89 

87* **@mention 文件**:输入 `@` 后跟文件名,将文件添加到对话上下文。Claude 随后可以读取和引用该文件。@mention 在云端或 WSL 会话中不可用。90* **@mention 文件**:输入 `@` 后跟文件名,将文件添加到对话上下文。

88* **附加文件**:使用附件按钮将图像、PDF 和其他文件附加到您的提示,或直接将文件拖放到提示中。这对于共享错误的屏幕截图、设计模型或参考文档很有用。91 * **在云端会话中**:`@` 只有在您发送第一条消息后才能列出文件。如果 `@` 未列出任何文件,请先发送不含该文件的第一条消息,然后在下一条消息中 @mention 该文件。

92* **附加文件**:通过输入框旁边的 **+** 按钮将图像、PDF 和其他文件附加到您的提示词,或直接将文件拖放到提示词中。这对于共享错误的屏幕截图、设计模型或参考文档很有用。

93 * **在 [WSL 会话](/docs/zh-CN/desktop-wsl)中**:如果 **+** 菜单显示 **Add image** 而不是 **Add files or photos**,则您只能附加图像。要向 Claude 提供会话文件夹中的任何其他文件,请 @mention 它。

89 94 

90<h3 id="choose-a-permission-mode">95<h3 id="choose-a-permission-mode">

91 选择权限模式96 选择权限模式

92</h3>97</h3>

93 98 

94权限模式控制 Claude 在会话期间的自主程度:它是否在编辑文件、运行命令或两者之前询问。您可以随时使用发送按钮旁边的模式选择器切换权限模式。要自己批准每项更改,请切换到 Manual。99权限模式控制 Claude 在会话期间的自主程度:它是否在编辑文件、运行命令或两者之前询问。您可以随时使用输入框下方一行中的模式选择器切换权限模式。要自己批准每项更改,请切换到 Manual。

95 100 

96要为新的本地会话设置默认模式,请将 `permissions.defaultMode` 添加到您的[设置文件](/docs/zh-CN/settings#where-settings-live)。桌面应用读取与 CLI 相同的设置文件。您在选择器中选择的模式会被记住(按文件夹),并对该文件夹优先于 `defaultMode`,除了 Plan,它仅适用于当前会话。101要为新的本地会话设置默认模式,请将 `permissions.defaultMode` 添加到您的[设置文件](/docs/zh-CN/settings#where-settings-live)。桌面应用读取与 CLI 相同的设置文件。您在选择器中选择的模式会被记住(按文件夹),并对该文件夹优先于 `defaultMode`,除了 Plan,它仅适用于当前会话。

97 102 


129 134 

130Claude 可以启动开发服务器并在浏览器窗格中打开它以验证其更改。这适用于前端 Web 应用以及后端服务器:Claude 可以测试 API 端点、查看服务器日志,并迭代它发现的问题。在大多数情况下,Claude 在编辑项目文件后自动启动服务器。您也可以随时要求 Claude 进行预览。默认情况下,Claude [自动验证](#auto-verify-changes)每次编辑后的更改。135Claude 可以启动开发服务器并在浏览器窗格中打开它以验证其更改。这适用于前端 Web 应用以及后端服务器:Claude 可以测试 API 端点、查看服务器日志,并迭代它发现的问题。在大多数情况下,Claude 在编辑项目文件后自动启动服务器。您也可以随时要求 Claude 进行预览。默认情况下,Claude [自动验证](#auto-verify-changes)每次编辑后的更改。

131 136 

132浏览器窗格也可以打开项目中的静态 HTML 文件、PDF、图像和视频。在聊天中点击 HTML、PDF、图像或视频路径以在那里打开它。137在本地会话中,点击聊天中的 HTML、PDF 或视频路径,即可在浏览器窗格中打开它。

133 138 

134<Note>139<Note>

135 在 [SSH 会话](#ssh-sessions)中,Claude 无法在浏览器窗格中打开您的应用,因为它在那里没有该窗格的工具。要自己查看应用,请[将其端口转发到您的计算机](#reach-a-port-on-the-remote-machine)。140 在 [SSH 会话](#ssh-sessions)中,Claude 无法在浏览器窗格中打开您的应用,因为它在那里没有该窗格的工具。要自己查看应用,请[将其端口转发到您的计算机](#reach-a-port-on-the-remote-machine)。

136</Note>141</Note>

137 142 

143如果在本地会话中 Claude 启动服务器后浏览器窗格没有打开,请点击聊天中该服务器卡片上的 **Open**。

144 

138从浏览器窗格,您可以:145从浏览器窗格,您可以:

139 146 

140* 直接在浏览器窗格中与运行的应用交互147* 直接在浏览器窗格中与运行的应用交互


185 使用 diff 视图审查更改192 使用 diff 视图审查更改

186</h3>193</h3>

187 194 

188Claude 对您的代码进行更改后,diff 视图让您在创建 Pull Request 之前逐个文件审查修改。195Claude 对您的代码进行更改后,diff 视图让您在创建 Pull Request 之前逐个文件审查修改。要打开 diff 视图,请点击[会话详情面板](#see-session-details)的 **Changes** 卡片中的行数统计,例如 `+12 -1`。您也可以点击会话标题栏中的 **Changes**。

189 

190当 Claude 更改文件时,会出现一个 diff 统计指示器,显示添加和删除的行数,例如 `+12 -1`。点击此指示器打开 diff 查看器,它在左侧显示文件列表,在右侧显示每个文件的更改。

191 196 

192要对特定行进行评论,点击 diff 中的任何行以打开评论框。输入您的反馈并按 **Enter** 添加评论。在多行添加评论后,一次提交所有评论:197要对特定行进行评论,点击 diff 中的任何行以打开评论框。输入您的反馈并按 **Enter** 添加评论。在多行添加评论后,一次提交所有评论:

193 198 


213 监控 Pull Request 状态218 监控 Pull Request 状态

214</h3>219</h3>

215 220 

216打开 Pull Request 后,CI 状态栏会出现在会话中。Claude Code 使用 GitHub CLI 轮询检查结果并显示失败。221要让 Claude 修复失败的检查,或让 GitHub 合并 Pull Request,请打开 **Auto-fix** 或 **Merge when ready**。打开 Pull Request 后,它会连同其 CI 检查状态一起显示在[会话详情面板](#see-session-details)的 **Changes** 卡片中。打开其标题旁边的 **⋮** 菜单:

217 222 

218* **Auto-fix CI & address comments**:启用后,Claude 会通过读取失败输出并迭代来自动尝试修复失败的 CI 检查。在本地会话中,当评论作者是仓库所有者、组织成员、协作者或 GitHub App 时,Claude 还会处理除您之外的其他人留下的新审查评论。223* **Auto-fix**:在本地会话中,Claude 还会处理除您之外的其他人留下的新审查评论。评论作者必须是仓库所有者、组织成员、协作者或 GitHub App。

219* **Auto-merge when ready**:启用后,Claude 在所有检查通过后合并 PR。合并方法是 squash。请先在您的 [GitHub 仓库设置](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository)中启用自动合并;没有它,Claude 无法合并 PR。224* **Merge when ready**:为该 PR 启用 GitHub 的自动合并。在本地会话中,除非基础分支使用合并队列,否则 Desktop 会请求 squash 合并。

225 * **在 SSH 和 WSL 会话中**:**Merge when ready** 处于禁用状态,因此请在 GitHub 上为该 Pull Request 启用自动合并

226 * **如果仓库不允许自动合并**:**Merge when ready** 无法打开,因此请先在您的 [GitHub 仓库设置](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-auto-merge-for-pull-requests-in-your-repository)中启用自动合并

227* **[早期布局](#check-which-layout-you-have)**:会话有 Pull Request 后,点击其状态栏上的 **CI**。

220 228 

221要启用这些选项,请点击状态栏中的 **CI**。要在 PR 合并或关闭后自动归档会话,请在 **Settings > Claude Code** 中打开[自动归档](#work-in-parallel-with-sessions)。229要在 PR 合并或关闭后自动归档会话,请在 **Settings > Claude Code** 中打开[自动归档](#archive-a-session)。

222 230 

223<Note>231<Note>

224 PR 监控需要在您的机器上安装并认证 [GitHub CLI (`gh`)](https://cli.github.com/)。如果未安装 `gh`,Desktop 会在您第一次尝试创建 PR 时提示您安装它。232 PR 监控需要在您的机器上安装并认证 [GitHub CLI (`gh`)](https://cli.github.com/)。如果未安装 `gh`,Desktop 会在您第一次尝试创建 PR 时提示您安装它。


235要在多个屏幕上工作,可以将 diff 或终端等窗格弹出到其自己的窗口中,完成后再停靠回来。Claude 继续在主窗口中工作。243要在多个屏幕上工作,可以将 diff 或终端等窗格弹出到其自己的窗口中,完成后再停靠回来。Claude 继续在主窗口中工作。

236 244 

237<Note>245<Note>

238 本部分中的窗格布局、终端、文件编辑器和视图模式需要 Claude Desktop v1.2581.0 或更高版本。在 macOS 上打开 **Claude → Check for Updates** 或在 Windows 上打开 **Help → Check for Updates** 来更新。246 本部分中的窗格布局、终端、文件编辑器和视图模式需要 Claude Desktop v1.2581.0 或更高版本。在 macOS 上打开 **Claude > Check for Updates…** 或在 Windows 上打开 **Help > Check for Updates…** 来更新。

239</Note>247</Note>

240 248 

249<h3 id="see-session-details">

250 查看会话详细信息

251</h3>

252 

253会话详细信息面板是聊天旁的一组卡片,显示会话在何处运行、它更改了什么以及它正在运行什么。该面板在您启动会话后出现,前提是聊天区域足够宽。

254 

255<h4 id="hide-or-show-the-session-details-panel">

256 隐藏或显示会话详细信息面板

257</h4>

258 

259要隐藏或显示该面板,请点击会话标题栏中的 **Hide session rail** 或 **Show session rail**;窗口较窄时,则在标题栏的 **⋮** 菜单中点击。如果仍然看不到该面板,请[检查您使用的是哪种 Code 选项卡布局](#check-which-layout-you-have)。

260 

241<h3 id="run-commands-in-the-terminal">261<h3 id="run-commands-in-the-terminal">

242 在终端中运行命令262 在终端中运行命令

243</h3>263</h3>

244 264 

245集成终端让您无需切换到另一个应用即可在会话旁运行命令。点击会话标题栏中的 **Terminal**,或在 macOS 或 Windows 上按 **Ctrl+\`**。终端在您的会话工作目录中打开,并与 Claude 共享相同的环境,因此 `npm test` 或 `git status` 等命令看到 Claude 正在编辑的相同文件。要打开第二个终端选项卡,点击终端窗格标题中的 **+** 或右键点击聊天中的文件夹来选择 **Open in terminal**。265集成终端让您无需切换到另一个应用即可在会话旁运行命令。点击会话标题栏中的 **Terminal**,或在 macOS 或 Windows 上按 **Ctrl+\`**。终端在您的会话工作目录中打开,并与 Claude 共享相同的环境,因此 `npm test` 或 `git status` 等命令看到 Claude 正在编辑的相同文件。要打开第二个终端选项卡,点击终端窗格标题中的 **+** 或右键点击聊天中的文件夹来选择 **Open in terminal**。

246 266 

247终端在本地和 [SSH](#ssh-sessions) 会话中可用,但在 [Windows 远程机器](#windows-remote-machines)上存在限制。267如果 WSL 会话中没有终端,请参阅[如果终端或连接器不可用](/docs/zh-CN/desktop-wsl#check-for-the-terminal-and-connectors)。终端在本地和 [SSH](#ssh-sessions) 会话中可用,但在 [Windows 远程机器](#windows-remote-machines)上存在限制。

248 268 

249<h3 id="open-and-edit-files">269<h3 id="open-and-edit-files">

250 打开和编辑文件270 打开和编辑文件

251</h3>271</h3>

252 272 

253点击聊天或 diff 查看器中的文件路径在文件窗格中打开它。HTML、PDF、图像和视频路径改为在[浏览器窗格](#preview-your-app)中打开。进行现场编辑并点击 **Save** 来写回。如果文件自您打开它以来在磁盘上更改,窗格会警告您并让您覆盖或丢弃。点击 **Discard** 来恢复您的编辑,或点击窗格标题中的路径来复制绝对路径。273要打开 Claude 提到的文件,请点击聊天中的文件路径。

254 274 

255文件窗格在本地和 SSH 会话中可用。对于云端会话,要求 Claude 进行更改。275要自己编辑文件,请使用[文件窗格](#arrange-your-workspace):

276 

277* **本地会话**:您可以编辑会话工作目录中的文件,但 `.mcp.json` 和 `.claude/settings.json` 等部分文件为只读。要更改这些文件,请[在其他应用中打开](#open-files-in-other-apps)。

278* **云端、SSH 和 WSL 会话**:文件窗格为只读,因此请要求 Claude 进行编辑。

279 

280<h4 id="save-edits-in-the-file-pane">

281 在文件窗格中保存编辑

282</h4>

283 

284默认情况下,您在文件窗格中的编辑会自动保存,因此窗格中不显示 **Save** 按钮。要自行保存编辑,请在窗格的 **⋮** 菜单中取消勾选 **Auto save**。关闭 **Auto save** 后,更改文件后点击 **Save** 来写入您的编辑,或点击 **Cancel** 来撤销编辑。

285 

286如果窗格警告文件已在磁盘上更改,请点击 **Override** 用您的编辑覆盖磁盘上的版本,或点击 **Discard** 放弃您的编辑。

256 287 

257<h3 id="open-files-in-other-apps">288<h3 id="open-files-in-other-apps">

258 在其他应用中打开文件289 在其他应用中打开文件


283 快捷键314 快捷键

284</h3>315</h3>

285 316 

286在 macOS 上按 **Cmd+/** 或在 Windows 上按 **Ctrl+/** 来查看 Code 选项卡中可用的所有快捷键。在 Windows 上,对下面的快捷键使用 **Ctrl** 代替 **Cmd**。会话循环、终端切换和视图模式切换在每个平台上使用 **Ctrl**。317在 macOS 上按 **Cmd+/** 或在 Windows 上按 **Ctrl+/** 来查看 Code 选项卡中可用的所有快捷键。本部分中的表格显示的是 macOS 按键。在 Windows 和 Linux 上,请按如下方式替换这些按键:

318 

319* **Cmd+Option**:按 **Alt**

320* **Cmd**:按 **Ctrl**

321 

322会话循环、终端切换和视图模式切换在每个平台上使用 **Ctrl**。

287 323 

288| 快捷键 | 操作 |324| 快捷键 | 操作 |

289| - | - |325| - | - |

290| `Cmd` `/` | 显示快捷键 |326| `Cmd` `/` | 显示快捷键 |

291| `Cmd` `N` | 新会话 |327| `Cmd` `N` | 新会话 |

328| `Cmd` `Option` `1`–`9` | 在[当前布局](#check-which-layout-you-have)的新会话屏幕上,选择一个环境 |

329| `Cmd` `Option` `0` | 在当前布局的新会话屏幕上,打开 [**New environment** 对话框](#create-a-saved-environment) |

292| `Cmd` `W` | 关闭会话 |330| `Cmd` `W` | 关闭会话 |

293| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | 下一个或上一个会话 |331| `Ctrl` `Tab` / `Ctrl` `Shift` `Tab` | 下一个或上一个会话 |

294| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | 下一个或上一个会话 |332| `Cmd` `Shift` `]` / `Cmd` `Shift` `[` | 下一个或上一个会话 |


404 使用会话并行工作442 使用会话并行工作

405</h3>443</h3>

406 444 

407点击侧边栏中的 **+ New session**,或在 macOS 上按 **Cmd+N**、在 Windows 上按 **Ctrl+N**,即可并行处理多个任务。按 **Ctrl+Tab** 和 **Ctrl+Shift+Tab** 可在侧边栏中循环切换会话。对于 Git 仓库,选择分支名称旁边的 **worktree** 选项,即可使用 [Git worktrees](/docs/zh-CN/worktrees) 为会话提供项目的独立隔离副本。445点击侧边栏中的 **+ New**,或在 macOS 上按 **Cmd+N**、在 Windows 上按 **Ctrl+N**,即可并行处理多个任务。按 **Ctrl+Tab** 和 **Ctrl+Shift+Tab** 可在侧边栏中循环切换会话。

408 446 

409要同时查看两个会话,请在 macOS 上按住 **Cmd** 或在 Windows 上按住 **Ctrl** 并点击侧边栏中的会话。该会话会在第二个窗格中打开,与您已打开的会话并排显示。分屏处于活跃状态时,点击侧边栏中的另一个会话会替换当前具有焦点的窗格。在 macOS 上按 **Cmd+\\** 或在 Windows 上按 **Ctrl+\\** 可关闭具有焦点的窗格并返回单个会话。447要同时查看两个会话,请在 macOS 上按住 **Cmd** 或在 Windows 上按住 **Ctrl** 并点击侧边栏中的会话。该会话会在第二个窗格中打开,与您已打开的会话并排显示。分屏处于活跃状态时,点击侧边栏中的另一个会话会替换当前具有焦点的窗格。在 macOS 上按 **Cmd+\\** 或在 Windows 上按 **Ctrl+\\** 可关闭具有焦点的窗格并返回单个会话。

410 448 

411Worktree 默认存储在 `<project-root>/.claude/worktrees/` 中。您可以将其更改为自定义目录:449<h4 id="run-a-session-in-its-own-worktree">

450 在独立的 worktree 中运行会话

451</h4>

452 

453在属于 Git 仓库的项目中,请在启动会话前打开 **Worktree**,使会话在其自己的 [Git worktree](/docs/zh-CN/worktrees)(项目的隔离副本)中运行。默认情况下,**Worktree** 处于关闭状态,Claude 直接在项目文件夹中工作。点击[输入框下方一行](#start-a-session)中的项目文件夹控件,然后打开 **Worktree**。

454 

455* **使用[已保存的环境](#create-a-saved-environment)时**:在创建或编辑环境时设置 **Worktree**

456* **[早期布局](#check-which-layout-you-have)**:选中输入框上方分支名称旁边的 **worktree** 复选框

457 

458Worktree 默认存储在 `<project-root>/.claude/worktrees/` 中。要改为将其存储在自定义目录中:

412 459 

413* **本地会话**:在 **Settings > Claude Code** 中设置 **Worktree location**460* **本地会话**:在 **Settings > Claude Code** 中设置 **Worktree location**

414* **SSH 会话**:在 [SSH 连接](#choose-where-ssh-session-worktrees-go)上设置 **Worktree folder**461* **SSH 会话**:在 [SSH 连接](#choose-where-ssh-session-worktrees-go)上设置 **Worktree folder**

415 462 

416您还可以在 **Settings > Claude Code** 中设置 **Branch prefix**。Desktop 会将其添加到每个 worktree 分支名称的前面,这有助于让 Claude 创建的分支保持条理。463您还可以在 **Settings > Claude Code** 中设置 **Branch prefix**。Desktop 会将其添加到每个 worktree 分支名称的前面,这有助于让 Claude 创建的分支保持条理。

417 464 

418完成后要删除 worktree,请将鼠标悬停在侧边栏中的会话上并点击存档图标。要让会话在其 Pull Request 合并或关闭时自动存档,请在 **Settings > Claude Code** 中打开 **Auto-archive after PR merge or close**。自动存档仅适用于已完成运行的本地会话。

419 

420要在新 worktree 中包含被 gitignore 的文件(如 `.env`),请在项目根目录中创建一个 [`.worktreeinclude` 文件](/docs/zh-CN/worktrees#copy-gitignored-files-into-worktrees)。有关 worktree 会话从何处读取项目设置、hook 和 skill,请参阅 [worktree 与主检出共享的内容](/docs/zh-CN/worktrees#what-worktrees-share-with-the-main-checkout)。465要在新 worktree 中包含被 gitignore 的文件(如 `.env`),请在项目根目录中创建一个 [`.worktreeinclude` 文件](/docs/zh-CN/worktrees#copy-gitignored-files-into-worktrees)。有关 worktree 会话从何处读取项目设置、hook 和 skill,请参阅 [worktree 与主检出共享的内容](/docs/zh-CN/worktrees#what-worktrees-share-with-the-main-checkout)。

421 466 

422<Note>467<Note>

423 会话隔离需要 [Git](https://git-scm.com/downloads)。大多数 Mac 默认已包含 Git。在终端中运行 `git --version` 进行检查;如果输出了版本号,则说明 Git 已安装。如果遇到 Git 错误,请在 [Cowork 选项卡](https://claude.com/product/cowork)中请 Claude 帮助排查您的设置。468 会话隔离需要 [Git](https://git-scm.com/downloads)。大多数 Mac 默认已包含 Git。在终端中运行 `git --version` 进行检查;如果输出了版本号,则说明 Git 已安装。如果遇到 Git 错误,请在 [Cowork 选项卡](https://claude.com/product/cowork)中请 Claude 帮助排查您的设置。

424</Note>469</Note>

425 470 

426使用侧边栏顶部的控件可按状态、项目或环境筛选会话,并按项目对会话分组。要重命名会话,请点击活跃会话顶部工具栏中的会话标题。471<h3 id="add-folders-to-a-session">

472 向会话添加文件夹

473</h3>

474 

475您可以在会话启动前或运行期间添加文件夹:

476 

477* **本地会话启动前**:在[创建已保存的环境](#create-a-saved-environment)或编辑已保存的环境时,在 **Folders** 下添加文件夹,然后[从该已保存的环境启动会话](#use-edit-or-remove-a-saved-environment)。

478* **本地或 [SSH](#ssh-sessions) 会话运行期间**:点击输入框旁边的 **+** 并选择 **Add folder**。Claude 会直接在该文件夹中工作,不使用 [worktree](#run-a-session-in-its-own-worktree)。

479 

480<h3 id="archive-a-session">

481 存档会话

482</h3>

483 

484在存档 worktree 中有未提交更改的会话之前,请参阅[存档会话时保留未提交的更改](#keep-uncommitted-changes-when-a-session-is-archived)。要存档会话,请将鼠标悬停在侧边栏中的该会话上,打开其菜单,然后选择 **Archive**。该会话会移至您的[已存档会话](#organize-and-find-sessions)。

485 

486要让会话在其 Pull Request 合并或关闭时自动存档,请在 **Settings > Claude Code** 中打开 **Auto-archive after PR merge or close**。云端会话和仍在运行的会话不会自动存档。

487 

488<h4 id="keep-uncommitted-changes-when-a-session-is-archived">

489 存档会话时保留未提交的更改

490</h4>

491 

492会话被存档时,该会话 worktree 中未提交的更改可能会丢失,因此请先提交您想保留的内容:

493 

494* **如果 Desktop 询问这些更改**:选择 **Archive anyway** 以丢弃它们,或取消并提交它们

495* **如果更改仅为未跟踪的文件**:请在 Claude 于该会话中创建的 Pull Request 合并之前,提交您想保留的文件,因为届时 Desktop 可能会在不询问的情况下删除它们

496* **其他任何情况**:worktree 及其更改会保留在磁盘上。对于本地会话,Desktop 会在会话被存档或您最后一次打开它(以较晚者为准)约 30 天后将两者一并删除。要保留这些更改,请从 [**Archived** 选项卡](#organize-and-find-sessions)打开该会话并选择 **Unarchive**

497 

498<h3 id="organize-and-find-sessions">

499 整理和查找会话

500</h3>

501 

502您可以通过侧边栏会话列表中的图标对会话进行分组、排序和查找:

503 

504* **当前布局**:将鼠标悬停在会话列表中的标题上以显示 **Group and sort** 图标,然后点击它。要查找已存档的会话,请选择菜单最后一行的 **View all**,然后打开 **Archived** 选项卡。

505* **[早期布局](#check-which-layout-you-have)**:**Filter** 图标无需悬停即会显示。点击它可使用 **Group by** 或 **Sort by** 排列列表。要显示已存档的会话,请选择 **Status**,然后选择 **Archived**。

506 

507要重命名会话,请打开该会话并点击标题栏中的会话标题。

508 

509<h3 id="check-and-free-up-context">

510 检查并释放上下文

511</h3>

427 512 

428要检查上下文使用情况,请参阅[检查使用情况](#check-usage)。当上下文填满时,Claude 会自动总结对话并继续工作。您也可以输入 `/compact` 提前触发总结并释放上下文空间。有关压缩工作原理的详细信息,请参阅[上下文窗口](/docs/zh-CN/how-claude-code-works#the-context-window)。513要检查上下文使用情况,请参阅[检查使用情况](#check-usage)。当上下文填满时,Claude 会自动总结对话并继续工作。您也可以输入 `/compact` 提前触发总结并释放上下文空间。有关压缩工作原理的详细信息,请参阅[上下文窗口](/docs/zh-CN/how-claude-code-works#the-context-window)。

429 514 

515<h3 id="get-notified-when-a-session-finishes">

516 在会话完成时获得通知

517</h3>

518 

430当 Code 会话完成任务且您当前未在查看该会话时,桌面应用会发送操作系统通知。对于属于某个[项目](/docs/zh-CN/claude-projects#see-what-needs-you-in-overview)的会话,您将收到该项目的通知。519当 Code 会话完成任务且您当前未在查看该会话时,桌面应用会发送操作系统通知。对于属于某个[项目](/docs/zh-CN/claude-projects#see-what-needs-you-in-overview)的会话,您将收到该项目的通知。

431 520 

432<h3 id="ask-a-side-question-without-derailing-the-session">521<h3 id="ask-a-side-question-without-derailing-the-session">


451 跨会话工作540 跨会话工作

452</h3>541</h3>

453 542 

454Claude 可以列出您的其他 Code 选项卡会话,读取每个会话一直在做的工作,并在它们之间发送消息。用自然语言提问即可:"哪个会话涉及了身份验证重构?"、"API 会话得出了什么结论?"或"告诉支付会话 schema 已更改"。您也可以请 Claude 重命名或存档会话。Claude 存档会话的方式与侧边栏的存档图标相同,因此可以让它清理 PR 已合并的会话。543Claude 可以列出您的其他 Code 选项卡会话,读取每个会话一直在做的工作,并在它们之间发送消息。用自然语言提问即可:"哪个会话涉及了身份验证重构?"、"API 会话得出了什么结论?"或"告诉支付会话 schema 已更改"。

544 

545您也可以请 Claude 重命名或存档会话。例如,请它存档 PR 已合并的会话。

455 546 

456通过此使用入口,Claude 只能看到桌面应用自身运行的会话:Code 选项卡中的本地、[SSH](#ssh-sessions) 和 [WSL](/docs/zh-CN/desktop-wsl) 会话。Claude 看不到云端会话,也看不到您从终端 CLI 或 VS Code 扩展启动的会话,即使它们位于同一项目的 worktree 中也是如此。因此,如果打开了九个终端 worktree 和两个桌面会话,在其中一个桌面会话中回答的 Claude 只会报告另一个桌面会话。Claude 从不会列出您正在提问的那个会话。默认情况下,它可以看到最近活跃的 20 个会话,并跳过已存档的会话,除非您明确要求。[跨会话消息传递](/docs/zh-CN/cross-session-messaging)则另外让 Claude 可以向[您的其他 Claude Code 会话](/docs/zh-CN/cross-session-messaging#see-which-sessions-claude-can-reach)发送消息,包括终端会话。547通过此使用入口,Claude 只能看到桌面应用自身运行的会话:Code 选项卡中的本地、[SSH](#ssh-sessions) 和 [WSL](/docs/zh-CN/desktop-wsl) 会话。Claude 看不到云端会话,也看不到您从终端 CLI 或 VS Code 扩展启动的会话,即使它们位于同一项目的 worktree 中也是如此。因此,如果打开了九个终端 worktree 和两个桌面会话,在其中一个桌面会话中回答的 Claude 只会报告另一个桌面会话。Claude 从不会列出您正在提问的那个会话。默认情况下,它可以看到最近活跃的 20 个会话,并跳过已存档的会话,除非您明确要求。[跨会话消息传递](/docs/zh-CN/cross-session-messaging)则另外让 Claude 可以向[您的其他 Claude Code 会话](/docs/zh-CN/cross-session-messaging#see-which-sessions-claude-can-reach)发送消息,包括终端会话。

457 548 


470 在云端运行长时间运行的任务561 在云端运行长时间运行的任务

471</h3>562</h3>

472 563 

473对于大型重构、测试套件、迁移或其他长时间运行的任务,请在启动会话时选择 **Cloud** 而不是 **Local**。云端会话默认在 Anthropic 管理的基础设施上运行,即使您关闭应用或关闭计算机也会继续运行。您可以随时回来查看进度,或引导 Claude 转向不同的方向。您也可以从 [claude.ai/code](https://claude.ai/code) 或 [Claude 移动应用](/docs/zh-CN/mobile)监控云端会话。564对于大型重构、测试套件、迁移或其他长时间运行的任务,请在启动会话时,在[环境选择器](#start-a-session)中选择 **Cloud** 下的某个环境。云端会话默认在 Anthropic 管理的基础设施上运行,即使您关闭应用或关闭计算机也会继续运行。您可以随时回来查看进度,或引导 Claude 转向不同的方向。您也可以从 [claude.ai/code](https://claude.ai/code) 或 [Claude 移动应用](/docs/zh-CN/mobile)监控云端会话。

565 

566云端会话还支持多个仓库。选择仓库的位置:

474 567 

475云端会话还支持多个仓库。选择云端环境后,点击所选仓库旁边的 **+** 按钮即可向会话添加更多仓库。每个仓库都有自己的分支选择器。这对于跨越多个代码库的任务很有用,例如更新共享库及其使用方。568* **当前布局**:选择云端环境后,在输入框下方的一行中选择。

569* **[早期布局](#check-which-layout-you-have)**:在输入框上方选择。要添加另一个仓库,请点击所选仓库旁边的 **+**。

476 570 

477有关云端会话工作方式的更多信息,请参阅[在云端使用 Claude Code](/docs/zh-CN/claude-code-on-the-web)。当一项工作需要许多云端会话时,请在侧边栏中选择 **Projects** 创建一个[项目](/docs/zh-CN/claude-projects),Claude 会在一个对话中为您启动并跟踪这些会话。571有关云端会话工作方式的更多信息,请参阅[在云端使用 Claude Code](/docs/zh-CN/claude-code-on-the-web)。当一项工作需要许多云端会话时,请在侧边栏中选择 **Projects** 创建一个[项目](/docs/zh-CN/claude-projects),Claude 会在一个对话中为您启动并跟踪这些会话。

478 572 


500* **您为该会话打开它**:使用该会话的 **Remote Control** 开关,或在其输入框中输入 `/remote-control`。594* **您为该会话打开它**:使用该会话的 **Remote Control** 开关,或在其输入框中输入 `/remote-control`。

501* **在启动时连接**:当 **Settings > Claude Code** 中的 **Connect new sessions to Remote Control** 处于打开状态时,新会话会自动连接。如果您从未更改过该设置,Desktop 会遵循您的用户设置或托管设置中的 [`remoteControlAtStartup`](/docs/zh-CN/settings-reference#remotecontrolatstartup),其次是您组织的默认值。595* **在启动时连接**:当 **Settings > Claude Code** 中的 **Connect new sessions to Remote Control** 处于打开状态时,新会话会自动连接。如果您从未更改过该设置,Desktop 会遵循您的用户设置或托管设置中的 [`remoteControlAtStartup`](/docs/zh-CN/settings-reference#remotecontrolatstartup),其次是您组织的默认值。

502 596 

503要查看会话是否已连接,请查看工具栏中会话标题前的笔记本电脑图标。会话已连接或正在连接时,该图标会高亮显示。点击它可打开该会话的 **Remote Control** 开关。597要查看会话是否已连接,请查看其[会话详情面板](#see-session-details)中 **Environment** 卡片内的 **Remote Control** 开关。

504 598 

505要让会话不出现在您的其他设备上,请在所需的级别关闭 Remote Control:599要让会话不出现在您的其他设备上,请在所需的级别关闭 Remote Control:

506 600 


538 连接外部工具632 连接外部工具

539</h3>633</h3>

540 634 

541对于本地和 [SSH](#ssh-sessions) 会话,点击提示框旁的 **+** 按钮并选择 **Connectors** 来添加集成,如 Google Calendar、Slack、GitHub、Linear、Notion 等。你可以在会话之前或期间添加连接器。**+** 按钮在云会话或 WSL 会话中不可用,但 [routines](/docs/zh-CN/routines) 在 routine 创建时配置连接器。635连接器是具有图形设置流程的 [MCP 服务器](/docs/zh-CN/mcp)。

636 

637在会话开始之前或期间,点击提示框旁的 **+**,即可在使用 Claude 账户的本地或 [SSH](#ssh-sessions) 会话中添加连接器。选择 **Add connectors** 打开连接器目录。如果菜单显示的是 **Connectors**,请选择它,然后选择 **Browse connectors**。

638 

639<Note>

640 以下情况在其他页面中介绍:

542 641 

543要管理或断开连接器,请在桌面应用中转到设置 → Connectors,或从提示框中的 Connectors 菜单中选择 **Manage connectors**。642 * **WSL 会话中 Connectors 显示为灰色**:请参阅[如果终端或连接器不可用](/docs/zh-CN/desktop-wsl#check-for-the-terminal-and-connectors)

643 * **云端会话**:请参阅[连接器如何接入 Claude Code](/docs/zh-CN/mcp#how-connectors-reach-claude-code)

644</Note>

544 645 

545连接后,Claude 可以读取你的日历、发送消息、创建问题并直接与你的工具交互。你可以询问 Claude 在你的会话中配置了哪些连接器。646连接后,Claude 可以读取您的日历、发送消息、创建问题并直接与您的工具交互。您可以询问 Claude 在您的会话中配置了哪些连接器。要管理或断开连接器,请在桌面应用中转到 **Settings > Connectors**。

546 647 

547连接器是[MCP servers](/docs/zh-CN/mcp),具有图形设置流程。使用它们快速与支持的服务集成。对于连接器中未列出的集成,通过[设置文件](/docs/zh-CN/mcp#installing-mcp-servers)手动添加 MCP servers。你也可以[创建自定义连接器](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp)。648对于 Connectors 中未列出的集成,通过[设置文件](/docs/zh-CN/mcp#installing-mcp-servers)手动添加 MCP 服务器。您也可以[创建自定义连接器](https://support.claude.com/en/articles/11175166-getting-started-with-custom-connectors-using-remote-mcp)。

548 649 

549<h3 id="use-skills">650<h3 id="use-skills">

550 使用 skills651 使用 skills


564 665 

565[Plugins](/docs/zh-CN/plugins/overview)是可重用的包,为 Claude Code 添加 skills、agents、hooks、MCP servers 和 LSP 配置。你可以从桌面应用安装插件,而无需使用终端。666[Plugins](/docs/zh-CN/plugins/overview)是可重用的包,为 Claude Code 添加 skills、agents、hooks、MCP servers 和 LSP 配置。你可以从桌面应用安装插件,而无需使用终端。

566 667 

567对于本地和 [SSH](#ssh-sessions) 会话,点击提示框旁的 **+** 按钮并选择 **Plugins** 来查看你已安装的插件及其 skills。要添加插件,从子菜单中选择 **Add plugin** 来打开插件浏览器,它显示来自你配置的[市场](/docs/zh-CN/plugins/overview)的可用插件,包括官方 Anthropic 市场。选择 **Manage plugins** 来启用、禁用或卸载插件。668在本地会话或 [SSH 会话](#ssh-sessions)中,点击提示框旁的 **+** 并选择 **Add plugins** 打开插件浏览器。如果菜单显示的是 **Plugins**,请选择它,然后选择 **Browse plugins**,或选择 **Manage plugins** 来启用、禁用或卸载插件。

568 669 

569你可以将插件限定到你的用户账户、特定项目或仅本地。如果你的组织集中管理插件,这些插件在桌面会话中的可用方式与在 CLI 中相同,除了桌面应用在 [`disableSideloadFlags`](/docs/zh-CN/settings-reference#disablesideloadflags) 下扣留的那些。670你可以将插件限定到你的用户账户、特定项目或仅本地。如果你的组织集中管理插件,这些插件在桌面会话中的可用方式与在 CLI 中相同,除了桌面应用在 [`disableSideloadFlags`](/docs/zh-CN/settings-reference#disablesideloadflags) 下扣留的那些。

570 671 


632| `runtimeArgs` | string\[] | 传递给 `runtimeExecutable` 的参数,例如 `["run", "dev"]` |733| `runtimeArgs` | string\[] | 传递给 `runtimeExecutable` 的参数,例如 `["run", "dev"]` |

633| `port` | number | 你的服务器监听的端口。默认为 3000 |734| `port` | number | 你的服务器监听的端口。默认为 3000 |

634| `cwd` | string | 相对于你的项目根目录的工作目录。默认为项目根目录。使用 `${workspaceFolder}` 显式引用项目根目录 |735| `cwd` | string | 相对于你的项目根目录的工作目录。默认为项目根目录。使用 `${workspaceFolder}` 显式引用项目根目录 |

635| `env` | object | 其他环境变量作为键值对,例如 `{ "NODE_ENV": "development" }`。不要在这里放置秘密,因为此文件被提交到你的存储库。要将秘密传递给你的开发服务器,在[本地环境编辑器](#local-sessions)中设置它们。 |736| `env` | object | 其他环境变量作为键值对,例如 `{ "NODE_ENV": "development" }`。不要在这里放置秘密,因为此文件会被提交到您的仓库。有关秘密,请参阅[为开发服务器设置环境变量](#set-environment-variables-for-dev-servers)。 |

636| `autoPort` | boolean | 如何处理端口冲突。请参阅[端口冲突](#port-conflicts) |737| `autoPort` | boolean | 如何处理端口冲突。请参阅[端口冲突](#port-conflicts) |

637| `program` | string | 用 `node` 运行的脚本。请参阅[何时使用 `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |738| `program` | string | 用 `node` 运行的脚本。请参阅[何时使用 `program` vs `runtimeExecutable`](#when-to-use-program-vs-runtimeexecutable) |

638| `args` | string\[] | 传递给 `program` 的参数。仅在设置 `program` 时使用 |739| `args` | string\[] | 传递给 `program` 的参数。仅在设置 `program` 时使用 |


795* **SSH**:在您通过 SSH 连接的远程计算机上运行,例如您自己的服务器、云虚拟机或开发容器。正在运行的任务可以[在 Desktop 断开连接时继续运行](#keep-a-task-running-while-desktop-is-disconnected),但使用 Claude 账户时,任务可能会在其登录过期时停止。896* **SSH**:在您通过 SSH 连接的远程计算机上运行,例如您自己的服务器、云虚拟机或开发容器。正在运行的任务可以[在 Desktop 断开连接时继续运行](#keep-a-task-running-while-desktop-is-disconnected),但使用 Claude 账户时,任务可能会在其登录过期时停止。

796* **WSL**(Windows):在您计算机上的 [WSL 2 发行版](/docs/zh-CN/desktop-wsl)内运行,使用该发行版的 Linux 工具链和原生路径897* **WSL**(Windows):在您计算机上的 [WSL 2 发行版](/docs/zh-CN/desktop-wsl)内运行,使用该发行版的 Linux 工具链和原生路径

797 898 

899<h3 id="create-a-saved-environment">

900 创建已保存的环境

901</h3>

902 

903已保存的环境是[环境选择器](#start-a-session)中的一个条目,它记录了 Claude 的运行位置,以便您之后在那里启动会话。本地或 SSH 环境还会保存 Claude 工作所在的文件夹。已保存的本地和 SSH 环境[需要 Claude Desktop v2.37337.0 或更高版本](#check-which-layout-you-have)。

904 

905<Steps>

906 <Step title="打开 New environment 对话框">

907 打开输入框下方的环境选择器,然后选择其菜单底部的 **New environment**。

908 </Step>

909 

910 <Step title="选择 Claude 的运行位置">

911 选择 **Local**、**SSH** 或 [**Cloud**](#cloud-sessions) 选项卡,并填写该选项卡上的表单。在 **SSH** 选项卡上,选择一个[连接](#ssh-sessions)以及远程机器上的一个文件夹。

912 </Step>

913 

914 <Step title="保存环境">

915 选择 **Create environment**,或在 **Cloud** 选项卡上选择 **Add environment**。

916 </Step>

917</Steps>

918 

919<h4 id="environments-that-desktop-creates-for-you">

920 Desktop 为您创建的环境

921</h4>

922 

923如果环境选择器中列出了并非由您创建的本地或 SSH 环境,则它们是 Desktop 为您创建的。当您首次在[当前布局](#check-which-layout-you-have)中打开 Code 选项卡时,Desktop 会创建最多八个环境。这些环境来自您在过去一个月中最常使用的本地和 SSH 文件夹。您可以[编辑或删除它们](#use-edit-or-remove-a-saved-environment)。

924 

925<h4 id="use-edit-or-remove-a-saved-environment">

926 使用、编辑或移除已保存的环境

927</h4>

928 

929在[环境选择器](#start-a-session)中找到该环境的条目:

930 

931* **启动会话**:选择该条目。

932* **编辑或删除**:将鼠标悬停在条目上并点击齿轮图标。要删除本地或 SSH 环境,请在 **Edit environment** 中点击 **Delete environment**。

933* **归档云端环境**:请参阅[归档环境](/docs/zh-CN/cloud-environments#archive-an-environment)。

934 

798<h3 id="local-sessions">935<h3 id="local-sessions">

799 本地会话936 本地会话

800</h3>937</h3>

801 938 

802桌面应用并不总是继承您完整的 shell 环境。在 macOS 上,当您从 Dock 或 Finder 启动应用时,它会读取您的 shell profile 文件(例如 `~/.zshrc` 或 `~/.bashrc`),为 Claude Code 提供 `PATH` 和一组固定的 Claude Code 变量,但不包括您在其中导出的其他变量。在 Windows 上,应用会继承用户和系统环境变量,但不会读取 PowerShell profile 文件。939桌面应用并不总是继承您完整的 shell 环境。在 macOS 上,当您从 Dock 或 Finder 启动应用时,它会读取您的 shell profile 文件(例如 `~/.zshrc` 或 `~/.bashrc`),为 Claude Code 提供 `PATH` 和一组固定的 Claude Code 变量,但不包括您在其中导出的其他变量。在 Windows 上,应用会继承用户和系统环境变量,但不会读取 PowerShell profile 文件。

803 940 

804若要在任何平台上为本地会话和开发服务器设置环境变量,请打开输入框中的环境下拉菜单,将鼠标悬停在 **Local** 上,然后点击齿轮图标以打开本地环境编辑器。您在此处保存的变量会加密存储在您的计算机上,并应用于您启动的每个本地会话和预览服务器。您也可以将变量添加到 `~/.claude/settings.json` 文件中的 `env` 键,但这些变量只会传递给 Claude 会话,不会传递给开发服务器。有关受支持变量的完整列表,请参阅[环境变量](/docs/zh-CN/env-vars)。941<h4 id="set-environment-variables-for-local-sessions">

942 为本地会话设置环境变量

943</h4>

944 

945将变量添加到已保存的本地环境中,并从该环境启动会话。Desktop [会自行设置某些变量](#environment-variables-desktop-sets-itself),例如 `API_TIMEOUT_MS`,对于这些变量,您的会话将获得 Desktop 的值,而不是您的值。

946 

947<Note>

948 如果您的环境选择器位于输入框上方,则您使用的是[早期布局](#check-which-layout-you-have),该布局没有已保存的本地环境。请改用[本地环境编辑器](#use-the-local-environment-editor)。

949</Note>

950 

951<Steps>

952 <Step title="打开环境的表单">

953 打开 [**New environment**](#create-a-saved-environment) 或 [**Edit environment**](#use-edit-or-remove-a-saved-environment)。

954 </Step>

955 

956 <Step title="输入变量">

957 选择 **Environment variables**,每行输入一个 `KEY=value`,然后选择 **Done**。

958 </Step>

959 

960 <Step title="保存环境">

961 选择 **Create environment** 或 **Save**。

962 </Step>

963</Steps>

964 

965只有从该环境启动的会话才会获得这些变量。

966 

967要为每个本地会话设置变量,请将其添加到 `~/.claude/settings.json` 文件中的 [`env` 键](/docs/zh-CN/env-vars#set-variables-in-settings-files)。如果该变量已存在于 Desktop 启动会话时所用的环境中,Claude Code 会[忽略该值](/docs/zh-CN/settings-reference#how-env-values-interact-with-your-shell)。有关支持的变量的完整列表,请参阅[环境变量](/docs/zh-CN/env-vars)。

968 

969<h4 id="set-environment-variables-for-dev-servers">

970 为开发服务器设置环境变量

971</h4>

972 

973要在不将密钥提交到 [`launch.json`](#configure-preview-servers) 的情况下为开发服务器提供密钥,请在以下位置之一进行设置,然后重启 Desktop:

974 

975* **macOS 和 Linux**:在您的 shell 配置文件中导出它

976* **Windows**:将其添加到您的用户或系统环境变量中

977* **任何平台**:如果您能打开[本地环境编辑器](#use-the-local-environment-editor),请将其保存在其中

978 

979开发服务器不会获得您添加到[已保存的环境](#create-a-saved-environment)或 `~/.claude/settings.json` 中的变量。

980 

981<h4 id="use-the-local-environment-editor">

982 使用本地环境编辑器

983</h4>

984 

985要打开本地环境编辑器,请点击代表您自己计算机的条目上的齿轮图标,而不是已保存环境上的齿轮图标:

986 

987* **输入框下方的选择器**:将鼠标悬停在代表您计算机的条目上,即 **Local** 下的第一个条目。如果出现齿轮图标,请点击它。如果没有出现,则表示编辑器不可用,请通过其他方式为[本地会话](#set-environment-variables-for-local-sessions)或[开发服务器](#set-environment-variables-for-dev-servers)设置变量。

988* **输入框上方的选择器**:将鼠标悬停在 **Local** 上并点击齿轮图标

989 

990每行输入一个 `KEY=value`,然后选择 **Save changes**。您在此处保存的变量会以加密方式存储在您的机器上。本地会话会获得这些变量,但 [Desktop 自行设置的](#environment-variables-desktop-sets-itself)任何变量(例如 `API_TIMEOUT_MS`)除外。重启 Desktop 即可将您的变量提供给开发服务器。

991 

992<h4 id="environment-variables-desktop-sets-itself">

993 Desktop 自行设置的环境变量

994</h4>

995 

996如果您设置了 `API_TIMEOUT_MS` 或 `ANTHROPIC_BASE_URL`,但本地会话中没有任何变化,这是因为 Desktop 会自行设置这些[变量](/docs/zh-CN/env-vars#variables)以及其他一些变量。无论您是在 shell 配置文件、Windows 用户或系统变量、本地环境编辑器还是已保存的环境中设置自己的值,本地会话都会获得 Desktop 的值。将您的值移到设置文件中也无济于事,因为 Claude Code 在本地会话中会[忽略该值](/docs/zh-CN/settings-reference#how-env-values-interact-with-your-shell)。

997 

998* `API_TIMEOUT_MS`:本地会话获得的值为 `900000`,即 15 分钟。如需更长的超时时间,请[安装 Claude Code CLI](/docs/zh-CN/quickstart) 并使用它来代替 Desktop。[在您的 shell 中设置该变量](/docs/zh-CN/env-vars#set-variables-in-your-shell),然后在终端中运行 `claude`。

999* `ANTHROPIC_BASE_URL`:当您使用 Claude 账户登录时,本地会话获得的是 Anthropic 的 API 主机。要使用网关,请改为设置 Desktop 的[第三方推理配置](/docs/zh-CN/llm-gateway-connect#desktop-app)。

1000 

1001<h4 id="turn-off-extended-thinking">

1002 关闭扩展思考

1003</h4>

805 1004 

806[扩展思考](/docs/zh-CN/model-config#extended-thinking)默认启用,这可以提升复杂推理任务的表现,但会消耗额外的 token。在 Anthropic API 上,在本地环境编辑器中将 `MAX_THINKING_TOKENS` 设置为 `0` 即可关闭思考;这对 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 模型无效,这些模型始终使用扩展思考。在 Anthropic API 上关闭思考后,对于 Claude Code 已知[不接受该组合](/docs/zh-CN/errors#effort-isnt-available-with-thinking-turned-off)的模型(例如 Opus 5),Claude Code 会发送 effort `high`,而不是更高的级别。1005[扩展思考](/docs/zh-CN/model-config#extended-thinking)默认启用,它可以提升复杂推理任务的表现,但会消耗额外的 token。要关闭它,请在[已保存的本地环境](#set-environment-variables-for-local-sessions)或[本地环境编辑器](#use-the-local-environment-editor)中将 `MAX_THINKING_TOKENS` 设置为 `0`。随后,思考功能会在 Anthropic API 上关闭,但 Opus 5.5、Sonnet 5.5、Haiku 5.5 和 Fable 模型除外,这些模型始终使用扩展思考。

1006 

1007在 Opus 5 上,还需要在启动会话之前选择 `high` 或更低的 effort。在[当前布局](#check-which-layout-you-have)中,打开模型选择器并在 **Effort** 下选择一个级别。如果您以更高的级别启动了会话,请以 `high` 或更低的级别启动一个新会话。

1008 

1009<h4 id="fixed-thinking-budgets">

1010 固定思考预算

1011</h4>

807 1012 

808在支持[自适应推理](/docs/zh-CN/model-config#adjust-effort-level)的模型上,Claude Code 会忽略正值 `MAX_THINKING_TOKENS` 中的具体数值,因为自适应推理会改为控制思考深度。在 Opus 4.6 和 Sonnet 4.6 上,将 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 设置为 `1` 可使用固定的思考预算;Fable 模型、Sonnet 5 及更高版本、Haiku 5.5 以及 Opus 4.7 及更高版本始终使用自适应推理,没有固定预算模式。1013在支持[自适应推理](/docs/zh-CN/model-config#adjust-effort-level)的模型上,Claude Code 会忽略正值 `MAX_THINKING_TOKENS` 中的具体数值,因为自适应推理会改为控制思考深度。在 Opus 4.6 和 Sonnet 4.6 上,将 `CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING` 设置为 `1` 可使用固定的思考预算;Fable 模型、Sonnet 5 及更高版本、Haiku 5.5 以及 Opus 4.7 及更高版本始终使用自适应推理,没有固定预算模式。

809 1014 


811 托管设备上的本地会话1016 托管设备上的本地会话

812</h4>1017</h4>

813 1018 

814您的管理员可以通过 [`disableDesktopLocalSessions` 托管设置](#managed-settings)关闭本地会话。关闭后,**Local** 仍会显示在环境下拉菜单中,但呈灰色且无法选择,并带有说明您的组织已将其关闭的工具提示;在 Windows 上,[WSL](/docs/zh-CN/desktop-wsl) 条目(其在托管设备上的可用性[另行管控](/docs/zh-CN/admin-setup#wsl-sessions-in-claude-code-desktop))也会以同样方式呈灰色。如果已配置 SSH 连接,新会话默认使用第一个 SSH 连接;如果您尝试继续现有的本地会话,Desktop 会显示一条消息,说明本设备上无法使用本地会话。请改为选择 [SSH](#ssh-sessions) 或[云端](#cloud-sessions)环境,或联系您的 IT 团队。1019如果代表您计算机的条目在环境选择器中显示为灰色,并带有工具提示 **Disabled by your organization**,则表示您的管理员已[关闭本地会话](#managed-settings)。在 Windows 上,[WSL](/docs/zh-CN/desktop-wsl) 条目也会以同样的方式显示为灰色,其在受管设备上的可用性[另行管控](/docs/zh-CN/admin-setup#wsl-sessions-in-claude-code-desktop)。

1020 

1021如果已配置 SSH 连接,新会话默认使用第一个 SSH 连接。如果您尝试继续现有的本地会话,Desktop 会显示一条消息,说明此设备上无法使用本地会话。当您选择[已保存的本地环境](#create-a-saved-environment)时,会显示此错误:`Couldn’t switch environments: the Local environment isn’t available anymore.` 请改为选择 [SSH](#ssh-sessions) 或[云端](#cloud-sessions)环境,或联系您的 IT 团队。

815 1022 

816<h3 id="cloud-sessions">1023<h3 id="cloud-sessions">

817 云端会话1024 云端会话


819 1026 

820即使您关闭应用,云端会话也会在后台继续运行。用量计入您的[订阅套餐限额](/docs/zh-CN/costs),不单独收取计算费用。1027即使您关闭应用,云端会话也会在后台继续运行。用量计入您的[订阅套餐限额](/docs/zh-CN/costs),不单独收取计算费用。

821 1028 

822您可以创建具有不同网络访问级别和环境变量的自定义云端环境。若要管理这些环境,请打开输入框中的环境下拉菜单并选择 **Cloud**:1029要添加、编辑或[归档](/docs/zh-CN/cloud-environments#archive-an-environment)云端环境,请打开[环境选择器](#start-a-session):

823 1030 

824* **添加环境**:选择 **Add cloud environment**1031* **添加环境**:选择选择器菜单底部的 **New environment**,然后选择 [**New environment** 对话框](#create-a-saved-environment)中的 **Cloud** 选项卡

825* **编辑或归档您自己的某个环境**:将鼠标悬停在该环境上,然后点击齿轮图标1032* **编辑或归档您自己的某个环境**:将鼠标悬停在该环境上,然后点击齿轮图标

826 1033 

827有关配置网络访问和环境变量的详细信息,请参阅[配置云端环境](/docs/zh-CN/cloud-environments)。1034有关配置网络访问和环境变量的详细信息,请参阅[配置云端环境](/docs/zh-CN/cloud-environments)。


836 如果您将 Desktop 与[第三方提供商](/docs/zh-CN/third-party-integrations)配合使用,SSH 会话需要单独设置。请参阅 [3P 上 Claude Desktop 中的 SSH 远程会话](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。1043 如果您将 Desktop 与[第三方提供商](/docs/zh-CN/third-party-integrations)配合使用,SSH 会话需要单独设置。请参阅 [3P 上 Claude Desktop 中的 SSH 远程会话](https://claude.com/docs/third-party/claude-desktop/ssh-remote-sessions)。

837</Note>1044</Note>

838 1045 

839若要添加 SSH 连接,请在开始会话之前打开输入框中的环境下拉菜单,然后选择 **SSH > Add SSH connection…** 并填写连接详细信息:1046在 [**New environment** 对话框](#create-a-saved-environment)中添加 SSH 连接,然后在该连接上启动会话。如果新会话的输入框下方没有环境选择器,则您使用的是早期布局。请参阅[检查您使用的布局](#check-which-layout-you-have)。

1047 

1048<Steps>

1049 <Step title="打开 New environment 对话框">

1050 在启动会话之前,打开输入框下方的环境选择器,然后选择其菜单底部的 **New environment**。

1051 </Step>

1052 

1053 <Step title="添加连接">

1054 在 **New environment** 对话框的 **SSH** 选项卡上,打开 **Host** 列表,选择 **Add SSH connection…**,然后填写连接详细信息:

840 1055 

841* **Name**:此连接的友好标签1056 * **Name**:此连接的友好标签。

842* **SSH host**:`user@hostname` 或在 `~/.ssh/config` 中定义的主机1057 * **SSH host**:`user@hostname` 或 `~/.ssh/config` 中定义的主机。

843* **SSH port**:留空时默认为 22,或使用您 SSH 配置中的端口1058 * **SSH port**:留空时默认为 22,或使用您的 SSH 配置中的端口。

844* **SSH key (optional)**:您的私钥路径,例如 `~/.ssh/id_ed25519`。留空则使用您的 SSH 配置或 SSH agent。1059 * **SSH key (optional)**:您的私钥路径,例如 `~/.ssh/id_ed25519`。留空则使用您的 SSH 配置或 SSH agent。

845* **Worktree folder**:远程计算机上的一个文件夹(例如 `~/worktrees`),新会话会在其中创建 worktree。留空则使用[远程计算机的默认位置](#choose-where-ssh-session-worktrees-go)。1060 * **Worktree folder**:远程机器上的一个文件夹,例如 `~/worktrees`,新会话会在其中创建 worktree。留空则使用[远程机器的默认值](#choose-where-ssh-session-worktrees-go)。

846 1061 

847添加后,该连接会显示在环境下拉菜单的 **SSH** 下。选择它即可在该计算机上启动会话。Claude 在远程计算机上运行,可以访问其文件和工具。1062 然后选择 **Add SSH connection**。

1063 </Step>

1064 

1065 <Step title="在该连接上启动会话">

1066 选择远程机器上的一个文件夹,然后点击 **Create environment**。您会将该机器和文件夹作为[已保存的环境](#create-a-saved-environment)保留下来,供以后的会话使用。Desktop 会为新会话选择它,因此请输入您的任务并按 **Enter**。

1067 </Step>

1068</Steps>

848 1069 

849远程计算机可以运行 Linux、macOS 或 [Windows](#windows-remote-machines)。首次连接时,Desktop 会自动在远程计算机上安装 Claude Code。连接后,SSH 会话支持权限模式、连接器、插件和 MCP 服务器。1070远程计算机可以运行 Linux、macOS 或 [Windows](#windows-remote-machines)。首次连接时,Desktop 会自动在远程计算机上安装 Claude Code。连接后,SSH 会话支持权限模式、连接器、插件和 MCP 服务器。

850 1071 


1175 1396 

1176在 Desktop 断开连接期间,文件编辑和某些工具可能会失败。如果任务需要它们,请保持 Desktop 连接:1397在 Desktop 断开连接期间,文件编辑和某些工具可能会失败。如果任务需要它们,请保持 Desktop 连接:

1177 1398 

1178* **Worktree**:在使用 [worktree](#work-in-parallel-with-sessions) 的会话中,Desktop 会在 Claude 进行每次文件编辑之前对其进行检查。在 Desktop 断开连接期间,每次编辑会等待约 30 秒,然后失败。Shell 命令仍会运行。在 Linux 或 macOS 远程计算机上,[编辑可以继续工作](#worktree-edits-while-disconnected)。如果您不确定,请在不使用 worktree 的情况下启动会话。1399* **Worktree**:在使用 [worktree](#run-a-session-in-its-own-worktree) 的会话中,Desktop 会在 Claude 进行每次文件编辑之前对其进行检查。在 Desktop 断开连接期间,每次编辑会等待约 30 秒然后失败。Shell 命令仍会运行。在 Linux 或 macOS 远程机器上,[编辑可以继续正常进行](#worktree-edits-while-disconnected)。如果您不确定,请在不使用 worktree 的情况下启动会话。

1179* **文件夹限制**:如果您的组织限制了会话可以使用的文件夹,无论是否使用 worktree,Desktop 都会检查每次文件读取、搜索和编辑。在 Desktop 断开连接期间,每项操作最多等待 10 分钟,然后失败。1400* **文件夹限制**:如果您的组织限制了会话可以使用的文件夹,无论是否使用 worktree,Desktop 都会检查每次文件读取、搜索和编辑。在 Desktop 断开连接期间,每项操作最多等待 10 分钟,然后失败。

1180* **连接器**:[连接器](#connect-external-tools)和 Desktop 提供的其他工具通过 Desktop 运行,因此在其断开连接期间,每次调用都会在约 30 秒后失败1401* **连接器**:[连接器](#connect-external-tools)和 Desktop 提供的其他工具通过 Desktop 运行,因此在其断开连接期间,每次调用都会在约 30 秒后失败

1181* **工作流**:Desktop 会在每个新[工作流](/docs/zh-CN/workflows)启动前对其进行检查,因此在 Desktop 断开连接期间,新工作流最多等待 10 分钟,然后失败1402* **工作流**:Desktop 会在每个新[工作流](/docs/zh-CN/workflows)启动前对其进行检查,因此在 Desktop 断开连接期间,新工作流最多等待 10 分钟,然后失败


1264 选择 SSH 会话 worktree 的位置1485 选择 SSH 会话 worktree 的位置

1265</h4>1486</h4>

1266 1487 

1267除非您的组织限制了会话可以使用的文件夹,新的 SSH 会话会在以下各项中第一个已设置的位置创建其 [worktree](#work-in-parallel-with-sessions):1488除非您的组织限制了会话可使用的文件夹,否则新的 SSH 会话会在以下已设置位置中的第一个位置创建其 [worktree](#run-a-session-in-its-own-worktree):

1268 1489 

12691. SSH 连接上的 **Worktree folder**14901. SSH 连接上的 **Worktree folder**

12702. 远程计算机上 `~/.claude/settings.json` 中的 [`worktree.location`](/docs/zh-CN/settings-reference#worktree-location)14912. 远程计算机上 `~/.claude/settings.json` 中的 [`worktree.location`](/docs/zh-CN/settings-reference#worktree-location)


1272 1493 

1273每个项目都会在您设置的文件夹中拥有自己的子文件夹,因此如果设置为 `~/worktrees`,worktree 的路径为 `~/worktrees/<project>-<id>/<worktree-name>`。如果您设置的文件夹位于项目内部,Desktop 会对该项目忽略它并使用默认位置。在 [Windows 远程计算机](#windows-remote-machines)上,Desktop 始终使用默认位置。1494每个项目都会在您设置的文件夹中拥有自己的子文件夹,因此如果设置为 `~/worktrees`,worktree 的路径为 `~/worktrees/<project>-<id>/<worktree-name>`。如果您设置的文件夹位于项目内部,Desktop 会对该项目忽略它并使用默认位置。在 [Windows 远程计算机](#windows-remote-machines)上,Desktop 始终使用默认位置。

1274 1495 

1275若要为您之前添加的连接或您的组织管理的连接设置 **Worktree folder**,请在环境下拉菜单中将鼠标悬停在该连接上,然后点击齿轮图标。1496<a id="set-the-worktree-folder-on-an-existing-connection" />

1276 1497 

1277该字段需要 Claude Desktop v1.44121.0 或更高版本。如果您的组织限制了会话可以使用的文件夹,Desktop 会隐藏该字段并将 worktree 保留在项目内。1498<h5 id="set-the-worktree-folder-on-an-existing-connection">

1499 在现有连接上设置 worktree 文件夹

1500</h5>

1501 

1502在您之前添加的连接或您组织管理的连接的设置中设置 **Worktree folder**。该字段需要 Claude Desktop v1.44121.0 或更高版本。如果您的组织限制了会话可使用的文件夹,Desktop 会隐藏该字段并将 worktree 保留在项目内部。

1503 

1504<Steps>

1505 <Step title="找到连接">

1506 打开[环境选择器](#start-a-session),在 **SSH** 下找到该连接。

1507 </Step>

1508 

1509 <Step title="打开连接的设置">

1510 将鼠标悬停在连接上并点击齿轮图标。如果打开的对话框在 **Host** 旁边显示 **Edit connection…**,请选择 **Edit connection…**。

1511 </Step>

1512 

1513 <Step title="设置文件夹">

1514 在 **Worktree folder** 中,输入远程机器上的一个文件夹,例如 `~/worktrees`,然后选择 **Save changes**。

1515 </Step>

1516</Steps>

1278 1517 

1279<h4 id="files-and-processes-on-the-remote-machine">1518<h4 id="files-and-processes-on-the-remote-machine">

1280 远程计算机上的文件和进程1519 远程计算机上的文件和进程


1321 结束单个会话的进程1560 结束单个会话的进程

1322</h5>1561</h5>

1323 1562 

1324若要结束单个会话的 Claude Code 进程,请在 Desktop 连接到远程计算机时,在 Desktop 中[归档该会话](#work-in-parallel-with-sessions)。该进程在其任务完成后以及您退出 Desktop 后会继续运行。1563要结束单个会话的 Claude Code 进程,请在 Desktop 连接到远程机器时,在 Desktop 中[归档该会话](#archive-a-session)。该进程在其任务完成后以及您退出 Desktop 后都会继续运行。

1325 1564 

1326在归档带有 worktree 的会话之前,请参阅[使用会话并行工作](#work-in-parallel-with-sessions)。1565在归档 worktree 中有未提交更改的会话之前,请参阅[在会话被归档时保留未提交的更改](#keep-uncommitted-changes-when-a-session-is-archived)。

1327 1566 

1328<h5 id="see-which-user-the-processes-run-as">1567<h5 id="see-which-user-the-processes-run-as">

1329 查看进程以哪个用户身份运行1568 查看进程以哪个用户身份运行


1474 为您的团队预配置 SSH 连接1713 为您的团队预配置 SSH 连接

1475</h4>1714</h4>

1476 1715 

1477管理员可以通过在[托管设置](/docs/zh-CN/managed-settings)中设置 `sshConfigs`,向团队成员分发 SSH 连接。以这种方式定义的连接会自动出现在每个用户的环境下拉菜单中,并显示为托管连接。用户可以选择它们,并为其[设置自己的 **Worktree folder**](#choose-where-ssh-session-worktrees-go),但无法在应用中编辑其他任何内容或删除它们。1716管理员可以通过在[托管设置](/docs/zh-CN/managed-settings)中设置 `sshConfigs`,向团队成员分发 SSH 连接。

1717 

1718* **用户看到的内容**:以这种方式定义的连接会自动出现在每个用户的环境选择器中。

1719* **用户可以更改的内容**:用户可以选择托管连接,并为其[设置自己的 **Worktree folder**](#set-the-worktree-folder-on-an-existing-connection)。他们无法在应用中编辑其其他字段或删除它。

1478 1720 

1479以下示例预配置了一个连接:1721以下示例预配置了一个连接:

1480 1722 


1563若要确认设置已生效,请检查开发者的计算机:1805若要确认设置已生效,请检查开发者的计算机:

1564 1806 

1565<Steps>1807<Steps>

1566 <Step title="检查环境下拉菜单">1808 <Step title="检查环境选择器">

1567 退出并重新打开 Desktop,然后打开输入框中的环境下拉菜单。**Local** 呈灰色,且 **Shared Dev VM** 出现在 **SSH** 下。如果 **Local** 仍然可用,请检查 Desktop 版本、文件是否为有效的 JSON,以及计算机读取的是哪个托管来源。1809 退出并重新打开 Desktop,然后打开[环境选择器](#start-a-session)。如果显示以下内容,则说明设置已生效:

1810 

1811 * 该计算机的条目显示为灰色

1812 * **SSH** 下的 **Shared Dev VM**。如果其中未列出,请点击单独的 **SSH** 行,或该组末尾的 **More**。

1813 

1814 如果该计算机的条目仍然可用,请排查以下原因:

1815 

1816 * **Desktop 版本**:如果 Desktop 版本早于 v1.37937.0,请更新 Desktop。

1817 * **托管设置文件**:确保该文件是有效的 JSON。

1818 * **托管来源**:确保该计算机读取的是包含这些键的[托管来源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)。

1568 </Step>1819 </Step>

1569 1820 

1570 <Step title="添加不在允许列表中的主机">1821 <Step title="添加不在允许列表中的主机">

1571 使用不在允许列表中的主机名(例如 `other.example.com`)[添加 SSH 连接](#ssh-sessions)。Desktop 会保存该连接但拒绝连接,并说明您组织的设置不允许该连接。1822 使用不在允许列表中的主机名(例如 `other.example.com`)[添加 SSH 连接](#ssh-sessions)。Desktop 会保存该连接但拒绝连接,并提示您组织的设置不允许该连接。

1572 </Step>1823 </Step>

1573</Steps>1824</Steps>

1574 1825 


1612| `browserExternalPageTools` | 设置为 `"disabled"` 以防止 Claude 使用工具在[浏览器窗格](#browse-external-sites)中读取或作用于外部页面。用户仍然可以自己导航到外部网站,本地开发服务器预览不受影响。 |1863| `browserExternalPageTools` | 设置为 `"disabled"` 以防止 Claude 使用工具在[浏览器窗格](#browse-external-sites)中读取或作用于外部页面。用户仍然可以自己导航到外部网站,本地开发服务器预览不受影响。 |

1613| `disableMobileSimulatorTools` | 设置为 `true` 以阻止 Claude 在 [iOS Simulator 窗格](/docs/zh-CN/desktop-ios-simulator#turn-off-simulator-access)中控制和捕获设备的工具。该窗格仍可用于用户自己的点击;仅删除 Claude 的访问权限。该值必须是 JSON 布尔值 `true`;字符串 `"true"` 被忽略。 |1864| `disableMobileSimulatorTools` | 设置为 `true` 以阻止 Claude 在 [iOS Simulator 窗格](/docs/zh-CN/desktop-ios-simulator#turn-off-simulator-access)中控制和捕获设备的工具。该窗格仍可用于用户自己的点击;仅删除 Claude 的访问权限。该值必须是 JSON 布尔值 `true`;字符串 `"true"` 被忽略。 |

1614| `disableBrowserExternalNavigation` | 设置为 `true` 以完全关闭[浏览器窗格](#browse-external-sites)中的外部浏览。用户和 Claude 都无法导航到外部网站,localhost 开发服务器预览不受影响。该值必须是 JSON 布尔值 `true`;字符串 `"true"` 被忽略。 |1865| `disableBrowserExternalNavigation` | 设置为 `true` 以完全关闭[浏览器窗格](#browse-external-sites)中的外部浏览。用户和 Claude 都无法导航到外部网站,localhost 开发服务器预览不受影响。该值必须是 JSON 布尔值 `true`;字符串 `"true"` 被忽略。 |

1615| `sshConfigs` | 预配置[SSH 连接](#pre-configure-ssh-connections-for-your-team),在环境下拉菜单中显示。用户无法删除托管连接,也无法编辑除其自己的 **Worktree folder** 之外的任何内容。 |1866| `sshConfigs` | 预配置[SSH 连接](#pre-configure-ssh-connections-for-your-team),在环境选择器中显示。用户无法删除托管连接,也无法编辑除其自己的 **Worktree folder** 之外的任何内容。 |

1616| `sshHostAllowlist` | 限制 [SSH 会话](#restrict-which-ssh-hosts-users-can-connect-to)连接到已解析主机名与这些模式之一匹配的主机。仅从托管设置中读取。 |1867| `sshHostAllowlist` | 限制 [SSH 会话](#restrict-which-ssh-hosts-users-can-connect-to)连接到已解析主机名与这些模式之一匹配的主机。仅从托管设置中读取。 |

1617| `disableDesktopLocalSessions` | 设置为 `true` 以关闭[在设备上运行的 Code 会话](#local-sessions-on-managed-devices),仅保留到其他主机的 SSH 会话和云端会话可用。该值必须是 JSON 布尔值 `true`。仅从托管设置中读取。需要 Claude Desktop v1.37937.0 或更高版本。 |1868| `disableDesktopLocalSessions` | 设置为 `true` 以关闭[在设备上运行的 Code 会话](#local-sessions-on-managed-devices),仅保留到其他主机的 SSH 会话和云端会话可用。该值必须是 JSON 布尔值 `true`。仅从托管设置中读取。需要 Claude Desktop v1.37937.0 或更高版本。 |

1618| `disableSshSavedPasswords` | 设置为 `true` 以阻止 Desktop 提供记住 SSH 密码的选项,并阻止其使用或显示之前保存的密码。启用此设置不会删除这些密码。仅从托管设置中读取。需要 Claude Desktop v1.49585.0 或更高版本。 |1869| `disableSshSavedPasswords` | 设置为 `true` 以阻止 Desktop 提供记住 SSH 密码的选项,并阻止其使用或显示之前保存的密码。启用此设置不会删除这些密码。仅从托管设置中读取。需要 Claude Desktop v1.49585.0 或更高版本。 |


1756 2007 

1757| CLI | Desktop 等效项 |2008| CLI | Desktop 等效项 |

1758| - | - |2009| - | - |

1759| `--model sonnet` | 发送按钮旁的模型下拉菜单 |2010| `--model sonnet` | 输入框下方一行中的模型选择器 |

1760| `--resume`, `--continue` | 点击侧边栏中的会话,或在输入框中输入 `/resume` 来选择您从 CLI 启动的会话 |2011| `--resume`, `--continue` | 点击侧边栏中的会话,或在输入框中输入 `/resume` 来选择您从 CLI 启动的会话 |

1761| `--permission-mode` | 发送按钮旁的模式选择器 |2012| `--permission-mode` | 输入框下方一行中的模式选择器 |

1762| `--dangerously-skip-permissions` | 绕过权限模式。在 Pro 和 Max 套餐上,在设置 → Claude Code → "允许绕过权限模式"中启用它;在 Team 和 Enterprise 套餐上,由组织策略控制 |2013| `--dangerously-skip-permissions` | 绕过权限模式。在 Pro 和 Max 套餐上,在设置 → Claude Code → "允许绕过权限模式"中启用它;在 Team 和 Enterprise 套餐上,由组织策略控制 |

1763| `--add-dir` | 在云端会话中使用 **+** 按钮添加多个存储库 |2014| `--add-dir` | 在本地和 SSH 会话中[向会话添加文件夹](#add-folders-to-a-session),或在云端会话中选择[多个仓库](#run-long-running-tasks-in-the-cloud) |

1764| `--allowedTools`, `--disallowedTools` | 无每个会话的等效项。[设置文件](/docs/zh-CN/settings)中的权限规则仍然适用。 |2015| `--allowedTools`, `--disallowedTools` | 无每个会话的等效项。[设置文件](/docs/zh-CN/settings)中的权限规则仍然适用。 |

1765| `--verbose` | [Verbose 视图模式](#switch-view-modes) |2016| `--verbose` | [Verbose 视图模式](#switch-view-modes) |

1766| `--print`, `--output-format` | 不可用。Desktop 仅是交互式的。 |2017| `--print`, `--output-format` | 不可用。Desktop 仅是交互式的。 |

1767| `ANTHROPIC_MODEL` 环境变量 | 发送按钮旁的模型下拉菜单 |2018| `ANTHROPIC_MODEL` 环境变量 | 输入框下方一行中的模型选择器 |

1768| `MAX_THINKING_TOKENS` 环境变量 | 在本地环境编辑器中设置。请参阅[环境配置](#environment-configuration)。 |2019| `MAX_THINKING_TOKENS` 环境变量 | 请参阅[关闭扩展思考](#turn-off-extended-thinking) |

1769 2020 

1770<h3 id="shared-configuration">2021<h3 id="shared-configuration">

1771 共享配置2022 共享配置


1777* 在 `~/.claude.json` 或 `.mcp.json` 中配置的 **[MCP 服务器](/docs/zh-CN/mcp)** 在两者中均可使用2028* 在 `~/.claude.json` 或 `.mcp.json` 中配置的 **[MCP 服务器](/docs/zh-CN/mcp)** 在两者中均可使用

1778* 在设置中定义的 **[hook](/docs/zh-CN/hooks)** 和 **[skill](/docs/zh-CN/skills)** 适用于两者2029* 在设置中定义的 **[hook](/docs/zh-CN/hooks)** 和 **[skill](/docs/zh-CN/skills)** 适用于两者

1779* `~/.claude.json` 和 `~/.claude/settings.json` 中的 **[设置](/docs/zh-CN/settings)** 是共享的。权限规则、允许的工具和 `settings.json` 中的其他设置适用于 Desktop 会话。2030* `~/.claude.json` 和 `~/.claude/settings.json` 中的 **[设置](/docs/zh-CN/settings)** 是共享的。权限规则、允许的工具和 `settings.json` 中的其他设置适用于 Desktop 会话。

1780* **模型**:相同的[模型](/docs/zh-CN/model-config#available-models)在两者中都可用。在 Desktop 中,从发送按钮旁的下拉菜单中选择模型。您可以在会话期间从相同的下拉菜单更改模型。2031* **模型**:相同的[模型](/docs/zh-CN/model-config#available-models)在两者中都可用。在 Desktop 中,从输入框下方一行中的模型选择器中选择模型。您可以在会话期间从同一选择器更改模型。

1781 2032 

1782<h4 id="mcp-servers-from-the-claude-desktop-chat-app">2033<h4 id="mcp-servers-from-the-claude-desktop-chat-app">

1783 来自 Claude Desktop 聊天应用的 MCP 服务器2034 来自 Claude Desktop 聊天应用的 MCP 服务器


1805| [第三方提供商](/docs/zh-CN/third-party-integrations) | Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry | 默认使用 Anthropic 的 API。对于网关路由,请参阅[将桌面应用连接到网关](/docs/zh-CN/llm-gateway-connect#desktop-app)。要在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或自托管 LLM 网关上运行 Code 选项卡,请参阅 [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview)。 |2056| [第三方提供商](/docs/zh-CN/third-party-integrations) | Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry | 默认使用 Anthropic 的 API。对于网关路由,请参阅[将桌面应用连接到网关](/docs/zh-CN/llm-gateway-connect#desktop-app)。要在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或自托管 LLM 网关上运行 Code 选项卡,请参阅 [Claude Desktop on 3P](https://claude.com/docs/third-party/claude-desktop/overview)。 |

1806| [MCP 服务器](/docs/zh-CN/mcp) | 在设置文件中配置 | 本地和 SSH 会话的连接器 UI,或设置文件 |2057| [MCP 服务器](/docs/zh-CN/mcp) | 在设置文件中配置 | 本地和 SSH 会话的连接器 UI,或设置文件 |

1807| [插件](/docs/zh-CN/plugins/overview) | `/plugin` 命令 | 插件管理器 UI |2058| [插件](/docs/zh-CN/plugins/overview) | `/plugin` 命令 | 插件管理器 UI |

1808| @mention 文件 | 基于文本 | 带自动完成;仅本地和 SSH 会话 |2059| @mention 文件 | 基于文本 | 带自动完成,云端会话的第一条消息除外 |

1809| 文件附件 | 不可用 | 图像、PDF |2060| 文件附件 | 不可用 | 图像、PDF |

1810| 会话隔离 | [`--worktree`](/docs/zh-CN/cli-reference) 标志 | 启动会话时的 **worktree** 选项 |2061| 会话隔离 | [`--worktree`](/docs/zh-CN/cli-reference) 标志 | [在独立的 worktree 中运行会话](#run-a-session-in-its-own-worktree) |

1811| 多个会话 | 单独的终端 | 侧边栏选项卡 |2062| 多个会话 | 单独的终端 | 侧边栏选项卡 |

1812| 定期任务 | Cron 作业、CI 管道 | [定时任务](/docs/zh-CN/desktop-scheduled-tasks) |2063| 定期任务 | Cron 作业、CI 管道 | [定时任务](/docs/zh-CN/desktop-scheduled-tasks) |

1813| 计算机使用 | [在 macOS 上通过 `/mcp` 启用](/docs/zh-CN/computer-use) | 在 macOS 和 Windows 上的[应用和屏幕控制](#let-claude-use-your-computer) |2064| 计算机使用 | [在 macOS 上通过 `/mcp` 启用](/docs/zh-CN/computer-use) | 在 macOS 和 Windows 上的[应用和屏幕控制](#let-claude-use-your-computer) |


1833 故障排除2084 故障排除

1834</h2>2085</h2>

1835 2086 

1836下面的部分涵盖特定于桌面应用的问题。对于出现在聊天中的运行时 API 错误,如 `API Error: 500`、`529 Overloaded`、`429` 或 `Prompt is too long`,请参阅[错误参考](/docs/zh-CN/errors)。这些错误及其修复在 CLI、Desktop 和 Web 中是相同的。2087下面的部分涵盖特定于桌面应用的问题。对于出现在聊天中的运行时 API 错误,如 `API Error: 500`、`529 Overloaded`、`429` 或 `Prompt is too long`,请参阅[错误参考](/docs/zh-CN/errors)。

1837 2088 

1838<h3 id="check-your-version">2089<h3 id="check-your-version">

1839 检查你的版本2090 检查你的版本


1852 2103 

1853要查看会话运行的 Claude Code 版本,请在 **Code** 选项卡的本地会话中输入 `/status`,然后查看 **Claude Code** 行,其中会显示版本号,例如 `2.1.286`。2104要查看会话运行的 Claude Code 版本,请在 **Code** 选项卡的本地会话中输入 `/status`,然后查看 **Claude Code** 行,其中会显示版本号,例如 `2.1.286`。

1854 2105 

1855要为本地会话获取更新的版本,请在 macOS 上打开 **Claude → Check for Updates**,或在 Windows 上打开 **Help → Check for Updates**,然后启动新会话。2106要为本地会话获取更新的版本,请在 macOS 上打开 **Claude > Check for Updates…**,或在 Windows 上打开 **Help > Check for Updates…**,然后启动新会话。

1856 2107 

1857在本地会话中,**Code** 选项卡运行其自己的 Claude Code 副本,该副本有自己的版本号。桌面应用会下载并更新该副本,因此它可能与终端中的 `claude` 命令版本不同,并且更新其中一个不会更新另一个。2108在本地会话中,**Code** 选项卡运行其自己的 Claude Code 副本,该副本有自己的版本号。桌面应用会下载并更新该副本,因此它可能与终端中的 `claude` 命令版本不同,并且更新其中一个不会更新另一个。

1858 2109 

2110<h3 id="check-which-layout-you-have">

2111 检查您使用的布局

2112</h3>

2113 

2114如果新会话的输入框下方没有[环境选择器](#start-a-session),则说明您使用的是早期布局:

2115 

2116* **[低于 v2.37337.0 的 Desktop](#check-your-version)**:请更新以获取当前布局。在 macOS 上选择 **Claude > Check for Updates…**,或在 Windows 上选择 **Help > Check for Updates…**。

2117* **[第三方提供商](/docs/zh-CN/third-party-integrations)**:您将保留早期布局,因此无需执行任何操作。

2118 

2119在早期布局中,在输入框上方选择环境和项目文件夹,在其下方的一行中选择权限模式和模型。早期布局没有[会话详细信息面板](#see-session-details)和[已保存的本地和 SSH 环境](#create-a-saved-environment)。

2120 

1859<h3 id="403-or-authentication-errors-in-the-code-tab">2121<h3 id="403-or-authentication-errors-in-the-code-tab">

1860 Code 选项卡中的 403 或身份验证错误2122 Code 选项卡中的 403 或身份验证错误

1861</h3>2123</h3>

Details

160* 确认 Xcode 和 iOS 模拟器已安装,并且你的 Xcode 版本符合[要求](#requirements)。160* 确认 Xcode 和 iOS 模拟器已安装,并且你的 Xcode 版本符合[要求](#requirements)。

161* 如果你的组织管理 Claude Code,[模拟器工具可能被策略禁用](#turn-off-simulator-access)。161* 如果你的组织管理 Claude Code,[模拟器工具可能被策略禁用](#turn-off-simulator-access)。

162* 如果你在启用了 HIPAA 配置的 Enterprise 组织中,模拟器窗格对你不可用。162* 如果你在启用了 HIPAA 配置的 Enterprise 组织中,模拟器窗格对你不可用。

163* 模拟器窗格需要 Claude Desktop v1.24012.0 或更高版本。打开**Claude → Check for Updates**,然后重启应用。163* 模拟器窗格需要 Claude Desktop v1.24012.0 或更高版本。打开 **Claude > Check for Updates…**,然后重启应用。

164 164 

165<h3 id="the-simulator-pane-says-no-simulators-were-found">165<h3 id="the-simulator-pane-says-no-simulators-were-found">

166 模拟器窗格显示未找到模拟器166 模拟器窗格显示未找到模拟器


174 174 

175* [Desktop 中的计算机使用](/docs/zh-CN/desktop#let-claude-use-your-computer):没有专用窗格的应用的屏幕控制175* [Desktop 中的计算机使用](/docs/zh-CN/desktop#let-claude-use-your-computer):没有专用窗格的应用的屏幕控制

176* [CLI 中的计算机使用](/docs/zh-CN/computer-use):CLI 如何访问 iOS Simulator176* [CLI 中的计算机使用](/docs/zh-CN/computer-use):CLI 如何访问 iOS Simulator

177* [与会话并行工作](/docs/zh-CN/desktop#work-in-parallel-with-sessions):会话如何隔离更改177* [在独立的 worktree 中运行会话](/docs/zh-CN/desktop#run-a-session-in-its-own-worktree):会话如何隔离更改

178* [开始使用 Claude Code Desktop](/docs/zh-CN/desktop-quickstart)178* [开始使用 Claude Code Desktop](/docs/zh-CN/desktop-quickstart)

Details

63 63 

64<Steps>64<Steps>

65 <Step title="选择环境和文件夹">65 <Step title="选择环境和文件夹">

66 选择**本地**以在您的机器上运行 Claude,直接使用您的文件。点击**选择文件夹**并选择您的项目目录。66 在[输入框下方的一行](/docs/zh-CN/desktop#start-a-session)中,点击第一个控件(即环境选择器),然后选择**本地**分组中的第一项。接着点击环境选择器旁边的项目文件夹控件,选择**打开文件夹…**,并选择您的项目目录。

67 

68 如果输入框下方没有出现环境选择器,说明您使用的是早期布局。请参阅[检查您使用的布局](/docs/zh-CN/desktop#check-which-layout-you-have)。

67 69 

68 <Tip>70 <Tip>

69 从一个您熟悉的小项目开始。这是查看 Claude Code 能做什么的最快方式。71 从一个您熟悉的小项目开始。这是查看 Claude Code 能做什么的最快方式。


72 您也可以选择:74 您也可以选择:

73 75 

74 * **云**:在云中运行会话,即使关闭应用也能继续。请参阅 [在云中使用 Claude Code](/docs/zh-CN/claude-code-on-the-web) 了解云会话的工作原理。76 * **云**:在云中运行会话,即使关闭应用也能继续。请参阅 [在云中使用 Claude Code](/docs/zh-CN/claude-code-on-the-web) 了解云会话的工作原理。

75 * **SSH**:通过 SSH 连接到远程机器,例如您自己的服务器、云虚拟机或开发容器。桌面版在您第一次连接时会自动在远程机器上安装 Claude Code。正在运行的任务可以[在桌面版断开连接时继续运行](/docs/zh-CN/desktop#keep-a-task-running-while-desktop-is-disconnected),但如果使用 Claude 账户,任务可能会在其登录过期时停止。77 * **SSH**:通过 SSH 连接到远程机器,例如您自己的服务器、云虚拟机或开发容器。请先[添加连接](/docs/zh-CN/desktop#ssh-sessions)。桌面版在您第一次连接时会自动在远程机器上安装 Claude Code。正在运行的任务可以[在桌面版断开连接时继续运行](/docs/zh-CN/desktop#keep-a-task-running-while-desktop-is-disconnected),但如果使用 Claude 账户,任务可能会在其登录过期时停止。

76 * **WSL**(Windows):在 [WSL 2 发行版](/docs/zh-CN/desktop-wsl) 内运行会话;Claude Code、工具和 git 在 Linux 端执行,使用本机路径。78 * **WSL**(Windows):在 [WSL 2 发行版](/docs/zh-CN/desktop-wsl) 内运行会话;Claude Code、工具和 git 在 Linux 端执行,使用本机路径。

77 </Step>79 </Step>

78 80 

79 <Step title="选择模型">81 <Step title="选择模型">

80 从发送按钮旁的下拉菜单中选择一个模型。请参阅 [模型](/docs/zh-CN/model-config#available-models) 以比较可用的模型。您可以稍后从同一下拉菜单更改模型。82 从输入框下方一行靠右侧的模型选择器中选择一个模型。请参阅 [模型](/docs/zh-CN/model-config#available-models) 以比较可用的模型。您可以稍后从模型选择器更改模型。

81 </Step>83 </Step>

82 84 

83 <Step title="告诉 Claude 要做什么">85 <Step title="告诉 Claude 要做什么">

84 输入您想让 Claude 做的事情:86 输入您想让 Claude 做的事情:

85 87 

86 * `查找 TODO 注释并修复它`88 * `Find a TODO comment and fix it`

87 * `为主函数添加测试`89 * `Add tests for the main function`

88 * `为此代码库创建一个 CLAUDE.md 文件,包含说明`90 * `Create a CLAUDE.md with instructions for this codebase`

89 91 

90 [会话](/docs/zh-CN/desktop#work-in-parallel-with-sessions) 是与 Claude 关于您的代码的对话。每个会话跟踪自己的上下文和更改。92 [会话](/docs/zh-CN/desktop#work-in-parallel-with-sessions) 是与 Claude 关于您的代码的对话。每个会话跟踪自己的上下文和更改。

91 </Step>93 </Step>

92 94 

93 <Step title="审查并接受更改">95 <Step title="审查并接受更改">

94 接下来发生的情况取决于发送按钮旁的选择器中显示的 [权限模式](/docs/zh-CN/desktop#choose-a-permission-mode):96 查看输入框下方一行中的[权限模式](/docs/zh-CN/desktop#choose-a-permission-mode),了解 Claude 是否会等待您的批准:

95 97 

96 * **自动或接受编辑**:Claude 应用其文件更改,并显示一个指示器(如 `+12 -1`),以便您可以在差异视图中审查它们98 * **自动或接受编辑**:Claude 应用其文件更改,并显示一个指示器(如 `+12 -1`),以便您可以在差异视图中审查它们

97 * **手动**:Claude 提议每项更改并等待您的批准后再应用。在您接受之前,您的文件不会被修改,如果您拒绝更改,Claude 会询问您希望如何继续99 * **手动**:Claude 提议每项更改,并在应用前等待您的批准

98 100 

99 在手动模式下,您将看到:101 在手动模式下,您将看到:

100 102 


112 114 

113**中断并调整方向。** 您可以随时重定向 Claude。点击停止按钮立即中断,或输入更正并按 **Enter** 发送,无需停止正在运行的操作。无论哪种方式,您都不必等待它完成或重新开始。115**中断并调整方向。** 您可以随时重定向 Claude。点击停止按钮立即中断,或输入更正并按 **Enter** 发送,无需停止正在运行的操作。无论哪种方式,您都不必等待它完成或重新开始。

114 116 

115**为 Claude 提供更多上下文。** 在提示框中输入 `@filename` 以将特定文件拉入对话,使用附件按钮附加图像和 PDF,或直接将文件拖放到提示框中。Claude 拥有的上下文越多,结果就越好。请参阅 [添加文件和上下文](/docs/zh-CN/desktop#add-files-and-context-to-prompts)。117**为 Claude 提供更多上下文。** 在提示框中输入 `@filename` 以将特定文件拉入对话。Claude 拥有的上下文越多,结果就越好。请参阅 [添加文件和上下文](/docs/zh-CN/desktop#add-files-and-context-to-prompts)。

116 118 

117**使用 skills 处理可重复的任务。** 输入 `/` 或点击 **+** → **Slash commands** 以浏览 [内置命令](/docs/zh-CN/commands)、[自定义 skills](/docs/zh-CN/skills) 和插件 skills。Skills 是可重用的提示,您可以在需要时调用它们,例如代码审查清单或部署步骤。119**使用 skills 处理可重复的任务。** 输入 `/` 或点击 **+** → **Slash commands** 以浏览 [内置命令](/docs/zh-CN/commands)、[自定义 skills](/docs/zh-CN/skills) 和插件 skills。Skills 是可重用的提示,您可以在需要时调用它们,例如代码审查清单或部署步骤。

118 120 


125* **Accept edits**:Claude 自动接受文件编辑以加快迭代。127* **Accept edits**:Claude 自动接受文件编辑以加快迭代。

126* **Plan**:Claude 提出一种方法而不编辑任何文件,这在大型重构前很有用。128* **Plan**:Claude 提出一种方法而不编辑任何文件,这在大型重构前很有用。

127 129 

128**添加插件以获得更多功能。** 点击提示框旁边的 **+** 按钮并选择 **Plugins** 以浏览和安装 [插件](/docs/zh-CN/desktop#install-plugins),这些插件添加 skills、agents、MCP servers 等。130**添加插件以获得更多功能。** 安装 [插件](/docs/zh-CN/desktop#install-plugins),这些插件可添加 skills、Agent、MCP 服务器等。

129 131 

130**整理您的工作区。** 将聊天、diff、终端、文件和浏览器窗格拖动到您想要的任何布局中。使用 **Ctrl+\`** 打开终端以在您的会话旁边运行命令,或点击文件路径以在文件窗格中打开它。请参阅 [整理您的工作区](/docs/zh-CN/desktop#arrange-your-workspace)。132**整理您的工作区。** 将聊天、diff、终端、文件和浏览器窗格拖动到您想要的任何布局中。使用 **Ctrl+\`** 打开终端以在您的会话旁边运行命令,或点击文件路径以打开它。请参阅 [整理您的工作区](/docs/zh-CN/desktop#arrange-your-workspace)。

131 133 

132**预览您的应用。** 当您在 desktop 中运行开发服务器时,您的应用会在浏览器窗格中打开,该窗格也可以 [打开外部网站](/docs/zh-CN/desktop#browse-external-sites)。Claude 可以查看正在运行的应用、测试端点、检查日志并对其看到的内容进行迭代。请参阅 [预览您的应用](/docs/zh-CN/desktop#preview-your-app)。134**预览您的应用。** 当您在 desktop 中运行开发服务器时,您的应用会在浏览器窗格中打开,该窗格也可以 [打开外部网站](/docs/zh-CN/desktop#browse-external-sites)。Claude 可以查看正在运行的应用、测试端点、检查日志并对其看到的内容进行迭代。请参阅 [预览您的应用](/docs/zh-CN/desktop#preview-your-app)。

133 135 

134**跟踪您的拉取请求。** 打开 PR 后,Claude Code 会监控 CI 检查结果,并可以自动修复失败,或在所有检查通过后合并 PR。请参阅 [监控拉取请求状态](/docs/zh-CN/desktop#monitor-pull-request-status)。136**跟踪您的拉取请求。** 打开 PR 后,Claude Code 会监控 CI 检查结果,并可以自动修复失败。请参阅 [监控拉取请求状态](/docs/zh-CN/desktop#monitor-pull-request-status)。

135 137 

136**将 Claude 放在日程上。** 设置 [定时任务](/docs/zh-CN/desktop-scheduled-tasks) 以定期自动运行 Claude:每天早上进行代码审查、每周进行依赖项审计,或从您连接的工具中提取信息的简报。138**将 Claude 放在日程上。** 设置 [定时任务](/docs/zh-CN/desktop-scheduled-tasks) 以定期自动运行 Claude:每天早上进行代码审查、每周进行依赖项审计,或从您连接的工具中提取信息的简报。

137 139 

Details

33</Tip>33</Tip>

34 34 

35<Note>35<Note>

36 默认情况下,定期任务针对您的工作目录的任何状态运行,包括未提交的更改。在创建任务时启用 worktree 切换,为每次运行提供其自己的隔离 Git worktree,与 [parallel sessions](/docs/zh-CN/desktop#work-in-parallel-with-sessions) 的工作方式相同。36 默认情况下,定时任务针对您的工作目录的任何状态运行,包括未提交的更改。在创建任务时启用 worktree 切换,为每次运行提供其自己的[隔离 Git worktree](/docs/zh-CN/desktop#run-a-session-in-its-own-worktree)。

37</Note>37</Note>

38 38 

39<h2 id="create-a-scheduled-task">39<h2 id="create-a-scheduled-task">

desktop-wsl.md +20 −6

Details

24 24 

25<Steps>25<Steps>

26 <Step title="选择发行版">26 <Step title="选择发行版">

27 在 Code 选项卡中启动新会话并打开环境选择器。您安装的 WSL 2 发行版会出现在 **WSL** 部分中。选择一个。27 在 Code 选项卡中启动新会话,然后打开输入框下方(在[早期布局](/docs/zh-CN/desktop#check-which-layout-you-have)中则位于输入框上方)的[环境选择器](/docs/zh-CN/desktop#start-a-session)。您安装的 WSL 2 发行版会出现在 **WSL** 部分中。选择一个。

28 </Step>28 </Step>

29 29 

30 <Step title="选择文件夹">30 <Step title="选择文件夹">


32 </Step>32 </Step>

33 33 

34 <Step title="信任文件夹">34 <Step title="信任文件夹">

35 文件夹中的第一个会话会显示工作区信任对话框。信任按发行版和文件夹授予;在一个发行版中信任文件夹不适用于另一个发行版或 Windows 上的相同路径。35 文件夹中的第一个会话会显示工作区信任对话框。信任按发行版和文件夹授予。在一个发行版中信任的文件夹,在另一个发行版中或在 Windows 上的相同路径下不会被信任。

36 </Step>36 </Step>

37</Steps>37</Steps>

38 38 

39发行版中的第一个会话需要花费更长时间,而 Claude 在其中进行设置。您也可以从普通文件夹选择器打开 `\\wsl.localhost\...` 文件夹,它会在该发行版内重新打开。39发行版中的第一个会话需要稍长时间,因为 Claude 需要在其中进行设置。您也可以从普通文件夹选择器打开 `\\wsl.localhost\...` 文件夹,它会在该发行版内重新打开。

40 

41您最近使用过的文件夹会按发行版出现在选择器中,因此重新连接到项目只需一次点击。

42 40 

43<h2 id="what-works-in-a-wsl-session">41<h2 id="what-works-in-a-wsl-session">

44 WSL 会话中的工作内容42 WSL 会话中的工作内容


46 44 

47并行会话、侧边聊天、可视化差异审查、分支和拉取请求状态以及 worktrees 都可以工作,由发行版内的 git 和工具链支持。"在编辑器中打开"会打开通过 [Remote - WSL](https://code.visualstudio.com/docs/remote/wsl) 连接到发行版的 VS Code。45并行会话、侧边聊天、可视化差异审查、分支和拉取请求状态以及 worktrees 都可以工作,由发行版内的 git 和工具链支持。"在编辑器中打开"会打开通过 [Remote - WSL](https://code.visualstudio.com/docs/remote/wsl) 连接到发行版的 VS Code。

48 46 

49WSL 会话中还没有提供一些功能:集成终端、连接器和插件、会话分叉、文件浏览器窗格以及在编辑器中键入 `@` 时的文件建议。47如果某项 Desktop 功能在 WSL 会话中不可用或受限,请检查它是否属于以下情况之一:

48 

49* **终端和连接器**:您的会话可能缺少[集成终端](/docs/zh-CN/desktop#run-commands-in-the-terminal)、[连接器](/docs/zh-CN/desktop#connect-external-tools),或两者都缺少。请参阅[如果终端或连接器不可用](#check-for-the-terminal-and-connectors)。

50* **[插件](/docs/zh-CN/desktop#install-plugins)**:在 WSL 会话中不可用

51* **文件编辑**:您可以在[文件窗格](/docs/zh-CN/desktop#open-and-edit-files)中查看文件,但无法在其中编辑,因此请让 Claude 进行更改

52* **附件**:如果 **+** 菜单显示的是 **Add image** 而不是 **Add files or photos**,则您只能附加图片。请参阅[向提示词添加文件和上下文](/docs/zh-CN/desktop#add-files-and-context-to-prompts)。

53 

54<a id="check-for-the-terminal-and-connectors" />

55 

56<h3 id="if-the-terminal-or-connectors-are-unavailable">

57 如果终端或连接器不可用

58</h3>

59 

60您无法自行为 WSL 会话启用集成终端或连接器:

61 

62* **Claude 账户**:这两项功能正在分别推出。请选择 **Help > Check for Updates…**,如果更新后某项功能仍然缺失,则无需进行任何操作。

63* **[第三方提供商](/docs/zh-CN/third-party-integrations)**:WSL 会话不提供终端或连接器,更新 Desktop 也不会改变这一点

50 64 

51<h2 id="managed-devices">65<h2 id="managed-devices">

52 受管设备66 受管设备

env-vars.md +7 −11

Details

196| `ANTHROPIC_VERTEX_PROJECT_ID` | Google Cloud's Agent Platform 请求所指向的 GCP 项目 ID。请参阅[配置 GCP 凭据](/docs/zh-CN/google-vertex-ai#3-configure-gcp-credentials) |196| `ANTHROPIC_VERTEX_PROJECT_ID` | Google Cloud's Agent Platform 请求所指向的 GCP 项目 ID。请参阅[配置 GCP 凭据](/docs/zh-CN/google-vertex-ai#3-configure-gcp-credentials) |

197| `ANTHROPIC_WORKSPACE_ID` | [工作负载身份联合](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation)的工作区 ID。当您的联合规则的范围涵盖多个工作区时设置此变量,以便令牌交换知道要定位哪个工作区 |197| `ANTHROPIC_WORKSPACE_ID` | [工作负载身份联合](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation)的工作区 ID。当您的联合规则的范围涵盖多个工作区时设置此变量,以便令牌交换知道要定位哪个工作区 |

198| `API_FORCE_IDLE_TIMEOUT` | 覆盖 5 分钟的响应体空闲超时,该超时会在没有字节到达时中止流式模型响应。设置为 `0` 可关闭该超时,例如当缓慢的[网关](/docs/zh-CN/llm-gateway)或本地模型在数据块之间暂停超过 5 分钟时;设置为 `1` 可对所有提供商保持启用。未设置时,该超时在直接 Anthropic API、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 以及设置了 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` 的 Amazon Bedrock 以外的提供商上处于启用状态。[流式看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs)独立于它运行,即使您在此处设置 `0`,也会中止长时间的静默暂停 |198| `API_FORCE_IDLE_TIMEOUT` | 覆盖 5 分钟的响应体空闲超时,该超时会在没有字节到达时中止流式模型响应。设置为 `0` 可关闭该超时,例如当缓慢的[网关](/docs/zh-CN/llm-gateway)或本地模型在数据块之间暂停超过 5 分钟时;设置为 `1` 可对所有提供商保持启用。未设置时,该超时在直接 Anthropic API、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 以及设置了 `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` 的 Amazon Bedrock 以外的提供商上处于启用状态。[流式看门狗](/docs/zh-CN/network-config#streaming-idle-watchdogs)独立于它运行,即使您在此处设置 `0`,也会中止长时间的静默暂停 |

199| `API_TIMEOUT_MS` | API 请求的超时时间,以毫秒为单位(默认:600000,即 10 分钟;最大值:2147483647)。流式请求必须在此时间内收到响应头。当请求在慢速网络上或通过代理路由时超时,请增大此值 |199| `API_TIMEOUT_MS` | 每次 API 请求尝试接收其响应标头的时间,以毫秒为单位(默认值:600000,即 10 分钟;最大值:2147483647)。它不限制此后流式响应的持续时间。当您设置一个正值时,每次[非流式请求](/docs/zh-CN/errors#streaming-response-ended-before-any-complete-data-was-received)尝试都必须在该时间内完成。当请求在慢速网络上超时或通过代理路由时,请增大此值 |

200| `AWS_BEARER_TOKEN_BEDROCK` | 用于身份验证的 Amazon Bedrock API 密钥(请参阅 [Amazon Bedrock API 密钥](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |200| `AWS_BEARER_TOKEN_BEDROCK` | 用于身份验证的 Amazon Bedrock API 密钥(请参阅 [Amazon Bedrock API 密钥](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

201| `BASH_DEFAULT_TIMEOUT_MS` | 前台 Bash 或 PowerShell 工具命令的默认超时时间,以毫秒为单位(默认值:120000,即 2 分钟)。高于[后台命令默认时间限制](/docs/zh-CN/tools-reference#time-limit-for-background-commands)的值会在无人值守会话中替换该默认值。后台时间限制需要 Claude Code v2.1.285 或更高版本 |201| `BASH_DEFAULT_TIMEOUT_MS` | 前台 Bash 或 PowerShell 工具命令的默认超时时间,以毫秒为单位(默认值:120000,即 2 分钟)。高于[后台命令默认时间限制](/docs/zh-CN/tools-reference#time-limit-for-background-commands)的值会在无人值守会话中替换该默认值。后台时间限制需要 Claude Code v2.1.285 或更高版本 |

202| `BASH_MAX_OUTPUT_LENGTH` | Claude Code 读回到命令结果中的 bash 输出的最大字符数(默认值:30000;最大值:150000)。如果您设置了 [`bashOutputMaxChars`](/docs/zh-CN/settings-reference#bashoutputmaxchars) 设置,Claude Code 会忽略此变量。请参阅[输出限制](/docs/zh-CN/tools-reference#output-limits) |202| `BASH_MAX_OUTPUT_LENGTH` | Claude Code 读回到命令结果中的 bash 输出的最大字符数(默认值:30000;最大值:150000)。如果您设置了 [`bashOutputMaxChars`](/docs/zh-CN/settings-reference#bashoutputmaxchars) 设置,Claude Code 会忽略此变量。请参阅[输出限制](/docs/zh-CN/tools-reference#output-limits) |


230| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | 已在 v2.1.283 中移除。请改用 `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` |230| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | 已在 v2.1.283 中移除。请改用 `CLAUDE_CODE_WORKER_CHECKIN_SCHEDULE` |

231| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | 以 token 为单位设置[自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window),范围为 `100000` 到 `1000000`。仅接受纯整数,例如 `500000`:像 `500k` 这样的值会被读取为 `500`,并被限制为 100K 的最小值。有效窗口的上限还受模型上下文窗口限制。优先于 `/autocompact` 命令、`--autocompact` 标志和 `autoCompactWindow` 设置。状态栏的 `used_percentage` 始终以模型的完整上下文窗口为基准进行衡量,因此一旦设置此变量,该百分比将不再指示何时会运行压缩 |231| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | 以 token 为单位设置[自动压缩窗口](/docs/zh-CN/model-config#set-the-auto-compact-window),范围为 `100000` 到 `1000000`。仅接受纯整数,例如 `500000`:像 `500k` 这样的值会被读取为 `500`,并被限制为 100K 的最小值。有效窗口的上限还受模型上下文窗口限制。优先于 `/autocompact` 命令、`--autocompact` 标志和 `autoCompactWindow` 设置。状态栏的 `used_percentage` 始终以模型的完整上下文窗口为基准进行衡量,因此一旦设置此变量,该百分比将不再指示何时会运行压缩 |

232| `CLAUDE_CODE_AUTO_CONNECT_IDE` | 覆盖自动 [IDE 连接](/docs/zh-CN/vs-code)。默认情况下,在受支持 IDE 的集成终端中启动时,Claude Code 会自动连接。设置为 `false` 可阻止此行为。设置为 `true` 可在自动检测失败时强制尝试连接,例如当 tmux 遮蔽了父终端时。优先于 [`autoConnectIde`](/docs/zh-CN/settings-reference#autoconnectide) 全局配置设置 |232| `CLAUDE_CODE_AUTO_CONNECT_IDE` | 覆盖自动 [IDE 连接](/docs/zh-CN/vs-code)。默认情况下,在受支持 IDE 的集成终端中启动时,Claude Code 会自动连接。设置为 `false` 可阻止此行为。设置为 `true` 可在自动检测失败时强制尝试连接,例如当 tmux 遮蔽了父终端时。优先于 [`autoConnectIde`](/docs/zh-CN/settings-reference#autoconnectide) 全局配置设置 |

233| `CLAUDE_CODE_AUTO_MODE_MODEL` | 设置 Claude Code 在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)下发送的分类器请求所使用的模型。请使用完整的模型 ID,例如 `claude-sonnet-4-6`。有关 Claude Code 会忽略它的情况,请参阅[选择分类器模型](/docs/zh-CN/permission-modes#choose-the-classifier-model)。需要 Claude Code v2.1.302 或更高版本 |

233| `CLAUDE_CODE_AUTO_MODE_SERVER` | 控制 Claude Code 是否请求服务器[审查自动模式操作](/docs/zh-CN/permission-modes#server-side-classifier-review)。设置为 `0` 可改用 Claude Code 自身的分类器请求。在直接连接到 Anthropic API 时,需要 v2.1.281 或更高版本。链接的章节列出了在未设置该变量时哪些会话会请求服务器,以及从哪个版本开始。需要 Claude Code v2.1.271 或更高版本 |234| `CLAUDE_CODE_AUTO_MODE_SERVER` | 控制 Claude Code 是否请求服务器[审查自动模式操作](/docs/zh-CN/permission-modes#server-side-classifier-review)。设置为 `0` 可改用 Claude Code 自身的分类器请求。在直接连接到 Anthropic API 时,需要 v2.1.281 或更高版本。链接的章节列出了在未设置该变量时哪些会话会请求服务器,以及从哪个版本开始。需要 Claude Code v2.1.271 或更高版本 |

234| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Claude Code 等待 AWS 默认凭据提供程序链生成凭据的时间(毫秒),超时后请求将失败并显示 [`AWS default-chain credential resolve timed out`](/docs/zh-CN/errors#aws-default-chain-credential-resolve-timed-out)(默认值:`60000`)。当链中的某个步骤确实需要更长时间时(例如通过 `aws-vault` 等包装器进行带 MFA 的基于浏览器的 SSO 登录),请提高此值。适用于 Amazon Bedrock、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 和 [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint)。请参阅[凭据缓存和解析超时](/docs/zh-CN/amazon-bedrock#credential-caching-and-resolution-timeout)。需要 Claude Code v2.1.207 或更高版本 |235| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Claude Code 等待 AWS 默认凭据提供程序链生成凭据的时间(毫秒),超时后请求将失败并显示 [`AWS default-chain credential resolve timed out`](/docs/zh-CN/errors#aws-default-chain-credential-resolve-timed-out)(默认值:`60000`)。当链中的某个步骤确实需要更长时间时(例如通过 `aws-vault` 等包装器进行带 MFA 的基于浏览器的 SSO 登录),请提高此值。适用于 Amazon Bedrock、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws) 和 [Mantle 端点](/docs/zh-CN/amazon-bedrock#use-the-mantle-endpoint)。请参阅[凭据缓存和解析超时](/docs/zh-CN/amazon-bedrock#credential-caching-and-resolution-timeout)。需要 Claude Code v2.1.207 或更高版本 |

235| `CLAUDE_CODE_BASH_EDIT_DIFF` | 设置为 `0` 可关闭 [Bash 命令运行期间更改的文件的 diff](/docs/zh-CN/hooks#bash),设置为 `1` 可在每种权限模式下记录该 diff。优先于 [`bashEditDiffEnabled`](/docs/zh-CN/settings-reference#basheditdiffenabled) 设置。需要 Claude Code v2.1.269 或更高版本 |236| `CLAUDE_CODE_BASH_EDIT_DIFF` | 设置为 `0` 可关闭 [Bash 命令运行期间更改的文件的 diff](/docs/zh-CN/hooks#bash),设置为 `1` 可在每种权限模式下记录该 diff。优先于 [`bashEditDiffEnabled`](/docs/zh-CN/settings-reference#basheditdiffenabled) 设置。需要 Claude Code v2.1.269 或更高版本 |


241| `CLAUDE_CODE_CLIENT_CERT` | 用于 mTLS 身份验证的客户端证书文件路径 |242| `CLAUDE_CODE_CLIENT_CERT` | 用于 mTLS 身份验证的客户端证书文件路径 |

242| `CLAUDE_CODE_CLIENT_KEY` | 用于 mTLS 身份验证的客户端私钥文件路径 |243| `CLAUDE_CODE_CLIENT_KEY` | 用于 mTLS 身份验证的客户端私钥文件路径 |

243| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 加密的 CLAUDE\_CODE\_CLIENT\_KEY 的密码(可选) |244| `CLAUDE_CODE_CLIENT_KEY_PASSPHRASE` | 加密的 CLAUDE\_CODE\_CLIENT\_KEY 的密码(可选) |

244| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | 已在 v2.1.186 中移除,现在不起任何作用。以前用于为流式 API 请求的连接、TLS 和响应标头阶段单独设置超时时间。请使用 `API_TIMEOUT_MS` 设置每个请求的超时时间。有关流式请求的响应标头阶段,请参阅 `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |245| `CLAUDE_CODE_CONNECT_TIMEOUT_MS` | 已在 v2.1.186 中移除,现在不起作用。以前用于为流式 API 请求的连接、TLS 和响应标头阶段设置单独的超时。请改用 `API_TIMEOUT_MS`。关于流式请求的响应标头阶段,请参阅 `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` |

245| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 覆盖调试日志文件路径。尽管名称如此,这是一个文件路径,而不是目录。需要通过 `--debug`、`/debug` 或 `DEBUG` 环境变量单独启用调试模式:仅设置此变量不会启用日志记录。[`--debug-file`](/docs/zh-CN/cli-reference#cli-flags) 标志可同时完成这两项操作。默认为 `~/.claude/debug/<session-id>.txt` |246| `CLAUDE_CODE_DEBUG_LOGS_DIR` | 覆盖调试日志文件路径。尽管名称如此,这是一个文件路径,而不是目录。需要通过 `--debug`、`/debug` 或 `DEBUG` 环境变量单独启用调试模式:仅设置此变量不会启用日志记录。[`--debug-file`](/docs/zh-CN/cli-reference#cli-flags) 标志可同时完成这两项操作。默认为 `~/.claude/debug/<session-id>.txt` |

246| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 写入调试日志文件的最低日志级别。取值:`verbose`、`debug`(默认)、`info`、`warn`、`error`。设置为 `verbose` 可包含大量诊断信息,例如完整的状态栏命令输出;或提高到 `error` 以减少干扰信息 |247| `CLAUDE_CODE_DEBUG_LOG_LEVEL` | 写入调试日志文件的最低日志级别。取值:`verbose`、`debug`(默认)、`info`、`warn`、`error`。设置为 `verbose` 可包含大量诊断信息,例如完整的状态栏命令输出;或提高到 `error` 以减少干扰信息 |

247| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 设置为 `1` 可关闭 [1M 上下文窗口](/docs/zh-CN/model-config#extended-context)支持。Claude Code 会从模型选择器中移除 `[1m]` 模型变体,并将默认使用 1M 窗口运行的模型限制为 200K 窗口。请参阅[关闭 1M 上下文](/docs/zh-CN/model-config#turn-off-1m-context)。适用于有合规要求的企业环境。有关其在纠正无法识别的 `[1m]` 模型 ID 的窗口方面的作用,请参阅[纠正网关或自定义模型 ID 的窗口](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |248| `CLAUDE_CODE_DISABLE_1M_CONTEXT` | 设置为 `1` 可关闭 [1M 上下文窗口](/docs/zh-CN/model-config#extended-context)支持。Claude Code 会从模型选择器中移除 `[1m]` 模型变体,并将默认使用 1M 窗口运行的模型限制为 200K 窗口。请参阅[关闭 1M 上下文](/docs/zh-CN/model-config#turn-off-1m-context)。适用于有合规要求的企业环境。有关其在纠正无法识别的 `[1m]` 模型 ID 的窗口方面的作用,请参阅[纠正网关或自定义模型 ID 的窗口](/docs/zh-CN/model-config#correct-the-window-for-a-gateway-or-custom-model-id) |


304| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | 控制工具调用输入是否在 Claude 生成时从 API 流式传输。关闭此功能时,较大的工具输入(例如较长的文件写入)只有在 Claude 完成生成后才会到达,这看起来可能像是卡住了。在 Anthropic API 上默认启用。在 Amazon Bedrock 和 Google Cloud's Agent Platform 上,会在已部署容器支持时按模型启用。设置为 `0` 可选择退出。通过 `ANTHROPIC_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL` 或 `ANTHROPIC_BEDROCK_BASE_URL` 经代理路由时,设置为 `1` 可强制开启。在 Microsoft Foundry 和[网关](/docs/zh-CN/llm-gateway)连接上默认关闭 |305| `CLAUDE_CODE_ENABLE_FINE_GRAINED_TOOL_STREAMING` | 控制工具调用输入是否在 Claude 生成时从 API 流式传输。关闭此功能时,较大的工具输入(例如较长的文件写入)只有在 Claude 完成生成后才会到达,这看起来可能像是卡住了。在 Anthropic API 上默认启用。在 Amazon Bedrock 和 Google Cloud's Agent Platform 上,会在已部署容器支持时按模型启用。设置为 `0` 可选择退出。通过 `ANTHROPIC_BASE_URL`、`ANTHROPIC_VERTEX_BASE_URL` 或 `ANTHROPIC_BEDROCK_BASE_URL` 经代理路由时,设置为 `1` 可强制开启。在 Microsoft Foundry 和[网关](/docs/zh-CN/llm-gateway)连接上默认关闭 |

305| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 当 `ANTHROPIC_BASE_URL` 指向与 Anthropic 兼容的网关(例如 LiteLLM、Kong 或内部代理)时,设置为 `1` 可从网关的 `/v1/models` 端点填充 `/model` 选择器。默认关闭,因为否则由共享 API 密钥支持的网关会向每个用户显示该密钥可访问的所有模型。发现的模型仍会按会话收到的 [`availableModels`](/docs/zh-CN/settings-reference#availablemodels) 允许列表进行过滤;请通过 [MDM 或托管设置文件](/docs/zh-CN/managed-settings#delivery-mechanisms)下发该列表,因为[服务器托管下发在网关配置上不可用](/docs/zh-CN/server-managed-settings#platform-availability) |306| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` | 当 `ANTHROPIC_BASE_URL` 指向与 Anthropic 兼容的网关(例如 LiteLLM、Kong 或内部代理)时,设置为 `1` 可从网关的 `/v1/models` 端点填充 `/model` 选择器。默认关闭,因为否则由共享 API 密钥支持的网关会向每个用户显示该密钥可访问的所有模型。发现的模型仍会按会话收到的 [`availableModels`](/docs/zh-CN/settings-reference#availablemodels) 允许列表进行过滤;请通过 [MDM 或托管设置文件](/docs/zh-CN/managed-settings#delivery-mechanisms)下发该列表,因为[服务器托管下发在网关配置上不可用](/docs/zh-CN/server-managed-settings#platform-availability) |

306| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | 已在 v2.1.142 中移除,当时[快速模式](/docs/zh-CN/fast-mode)的默认模型从 Opus 4.6 改为 Opus 4.7 |307| `CLAUDE_CODE_ENABLE_OPUS_4_7_FAST_MODE` | 已在 v2.1.142 中移除,当时[快速模式](/docs/zh-CN/fast-mode)的默认模型从 Opus 4.6 改为 Opus 4.7 |

307| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | 设置为 `false` 可关闭提示词建议,即输入框中显示的灰色预测内容。优先于 [`promptSuggestionEnabled`](/docs/zh-CN/settings-reference#promptsuggestionenabled) 设置,`/config` 中的 **Prompt suggestions** 开关写入的正是该设置。当您的账户接近或达到用量限制时,Claude Code 也会[暂停建议](/docs/zh-CN/interactive-mode#when-claude-code-skips-suggestions)。设置为 `true` 可让建议保持开启,直到达到限制。需要 Claude Code v2.1.238 或更高版本。请参阅[提示词建议](/docs/zh-CN/interactive-mode#prompt-suggestions) |308| `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION` | 设置为 `false` 可关闭提示词建议,即输入框中显示的灰色预测内容。优先于 [`promptSuggestionEnabled`](/docs/zh-CN/settings-reference#promptsuggestionenabled) 设置,`/config` 中的 **Prompt suggestions** 开关写入的就是该设置。当您的账户接近或达到用量限制时,Claude Code 也会[暂停建议](/docs/zh-CN/interactive-mode#when-claude-code-skips-suggestions)。设置为 `true` 可使该暂停在您达到限制之前不生效。需要 Claude Code v2.1.238 或更高版本。请参阅[提示词建议](/docs/zh-CN/interactive-mode#prompt-suggestions) |

308| `CLAUDE_CODE_ENABLE_TASKS` | 选择 Claude Code 在[具备任务跟踪工具的会话](/docs/zh-CN/tools-reference#task-tool-availability)中提供哪些任务跟踪工具。默认情况下,Claude Code 提供 Task 工具 `TaskCreate`、`TaskUpdate`、`TaskGet` 和 `TaskList`。设置为 `0` 可改为使用旧版 `TodoWrite` 工具。请参阅[任务列表](/docs/zh-CN/interactive-mode#task-list) |309| `CLAUDE_CODE_ENABLE_TASKS` | 选择 Claude Code 在[具备任务跟踪工具的会话](/docs/zh-CN/tools-reference#task-tool-availability)中提供哪些任务跟踪工具。默认情况下,Claude Code 提供 Task 工具 `TaskCreate`、`TaskUpdate`、`TaskGet` 和 `TaskList`。设置为 `0` 可改为使用旧版 `TodoWrite` 工具。请参阅[任务列表](/docs/zh-CN/interactive-mode#task-list) |

309| `CLAUDE_CODE_ENABLE_TELEMETRY` | 设置为 `1` 可启用用于指标和日志的 OpenTelemetry 数据收集。配置 OTel 导出器之前必须设置此变量。请在 shell、用户设置或托管设置中设置。在[项目设置和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。请参阅[监控](/docs/zh-CN/monitoring-usage) |310| `CLAUDE_CODE_ENABLE_TELEMETRY` | 设置为 `1` 可启用用于指标和日志的 OpenTelemetry 数据收集。配置 OTel 导出器之前必须设置此变量。请在 shell、用户设置或托管设置中设置。在[项目设置和本地设置](/docs/zh-CN/settings-reference#variables-claude-code-ignores-in-env)中会被忽略。请参阅[监控](/docs/zh-CN/monitoring-usage) |

310| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | 设置为 `1` 可在所有模型上获得任务跟踪工具。如果不设置,Claude Code 默认仅在 [Task 工具可用性](/docs/zh-CN/tools-reference#task-tool-availability)中列出的模型上提供这些工具。`CLAUDE_CODE_ENABLE_TASKS` 仍然决定使用 Task 工具还是 `TodoWrite`。需要 Claude Code v2.1.233 或更高版本 |311| `CLAUDE_CODE_ENABLE_TODO_TOOLS` | 设置为 `1` 可在所有模型上获得任务跟踪工具。如果不设置,Claude Code 默认仅在 [Task 工具可用性](/docs/zh-CN/tools-reference#task-tool-availability)中列出的模型上提供这些工具。`CLAUDE_CODE_ENABLE_TASKS` 仍然决定使用 Task 工具还是 `TodoWrite`。需要 Claude Code v2.1.233 或更高版本 |


316| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 当终端支持删除线但未被自动检测到时(例如通过 SSH 连接且未转发 `TERM_PROGRAM`),设置为 `1` 可强制将 Claude 回复中的 `~~text~~` 渲染为删除线。如果不设置,未被检测到的终端会显示字面的 `~~` 标记,而不是将文本渲染为删除线。需要 Claude Code v2.1.186 或更高版本 |317| `CLAUDE_CODE_FORCE_STRIKETHROUGH` | 当终端支持删除线但未被自动检测到时(例如通过 SSH 连接且未转发 `TERM_PROGRAM`),设置为 `1` 可强制将 Claude 回复中的 `~~text~~` 渲染为删除线。如果不设置,未被检测到的终端会显示字面的 `~~` 标记,而不是将文本渲染为删除线。需要 Claude Code v2.1.186 或更高版本 |

317| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 当终端支持但未被自动检测到时,设置为 `1` 可强制启用 DEC 私有模式 2026 [同步输出](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)。适用于实现了 BSU/ESU 但不响应能力探测的模拟器,例如 Emacs `eat`。在 tmux 下无效。与切换到[全屏渲染](/docs/zh-CN/fullscreen)的 `CLAUDE_CODE_NO_FLICKER` 不同,此变量不会更改渲染器 |318| `CLAUDE_CODE_FORCE_SYNC_OUTPUT` | 当终端支持但未被自动检测到时,设置为 `1` 可强制启用 DEC 私有模式 2026 [同步输出](https://gist.github.com/christianparpart/d8a62cc1ab659194337d73e399004036)。适用于实现了 BSU/ESU 但不响应能力探测的模拟器,例如 Emacs `eat`。在 tmux 下无效。与切换到[全屏渲染](/docs/zh-CN/fullscreen)的 `CLAUDE_CODE_NO_FLICKER` 不同,此变量不会更改渲染器 |

318| `CLAUDE_CODE_FORCE_TERMINAL_IMAGES` | 当终端使用 Unicode 占位符绘制 kitty 图形协议图像但未被自动检测到时,设置为 `1` 可将 [mod `Image` 元素](/docs/zh-CN/plugins/mods/reference#elements)绘制为图片。请参阅 [Claude Code 会检测哪些终端](/docs/zh-CN/plugins/mods/gallery#image-and-client),以及为什么它在 tmux 或 screen 中无济于事 |319| `CLAUDE_CODE_FORCE_TERMINAL_IMAGES` | 当终端使用 Unicode 占位符绘制 kitty 图形协议图像但未被自动检测到时,设置为 `1` 可将 [mod `Image` 元素](/docs/zh-CN/plugins/mods/reference#elements)绘制为图片。请参阅 [Claude Code 会检测哪些终端](/docs/zh-CN/plugins/mods/gallery#image-and-client),以及为什么它在 tmux 或 screen 中无济于事 |

319| `CLAUDE_CODE_FORK_SUBAGENT` | 控制[分叉模式](/docs/zh-CN/sub-agents#turn-fork-mode-on-or-off),该模式允许 Claude 自行生成[分叉子代理](/docs/zh-CN/sub-agents#fork-the-current-conversation),默认仅在交互式会话中开启。设置为 `1` 可同时在 `claude -p` 和 Agent SDK 中开启,设置为 `0` 则在所有类型的会话中关闭。无论分叉模式是否开启,您都可以运行 `/subtask`。交互式会话中的默认开启需要 Claude Code v2.1.232 或更高版本;在更早的版本中,将该变量设置为 `1` 可开启分叉模式 |320| `CLAUDE_CODE_FORK_SUBAGENT` | 控制 fork 模式,该模式默认开启,允许 Claude 自行启动 [fork](/docs/zh-CN/sub-agents#fork-the-current-conversation)。在 fork 模式开启时,Claude 在您机器上的交互式终端、VS Code 或桌面会话中也无法[等待子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)。设置为 `0` 可关闭 fork 模式。有关版本信息,请参阅[关闭 fork 模式](/docs/zh-CN/sub-agents#turn-fork-mode-on-or-off) |

320| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | 设置为 `1` 可在 `claude -p --output-format stream-json` 输出中发出[子代理](/docs/zh-CN/sub-agents)的文本和思考块,行为与 [`--forward-subagent-text`](/docs/zh-CN/cli-reference#cli-flags) 标志相同。当调用 `claude` 的外部框架无法自行传递该标志时,请使用此变量。该标志在"使用 stream-json 输出的非交互模式"之外会报错退出,而此变量在这些情况下会被忽略,因此在进程范围内设置时,嵌套调用仍能正常工作。需要 Claude Code v2.1.211 或更高版本 |321| `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT` | 设置为 `1` 可在 `claude -p --output-format stream-json` 输出中发出[子代理](/docs/zh-CN/sub-agents)的文本和思考块,行为与 [`--forward-subagent-text`](/docs/zh-CN/cli-reference#cli-flags) 标志相同。当调用 `claude` 的外部框架无法自行传递该标志时,请使用此变量。该标志在"使用 stream-json 输出的非交互模式"之外会报错退出,而此变量在这些情况下会被忽略,因此在进程范围内设置时,嵌套调用仍能正常工作。需要 Claude Code v2.1.211 或更高版本 |

321| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | 设置为 `1` 可在自定义代理或第三方提供商(例如 Amazon Bedrock 或 Claude Platform on AWS)上发送[网关提示标头](/docs/zh-CN/llm-gateway-protocol#gateway-hint-headers),例如 `x-claude-code-request-class` 和 `x-claude-code-compaction`。设置为 `0` 可在所有连接上停止发送这些标头,包括直接连接到 Anthropic API 的情况(Claude Code 默认会在此类连接上发送这些标头)。需要 Claude Code v2.1.273 或更高版本 |322| `CLAUDE_CODE_GATEWAY_HINT_HEADERS` | 设置为 `1` 可在自定义代理或第三方提供商(例如 Amazon Bedrock 或 Claude Platform on AWS)上发送[网关提示标头](/docs/zh-CN/llm-gateway-protocol#gateway-hint-headers),例如 `x-claude-code-request-class` 和 `x-claude-code-compaction`。设置为 `0` 可在所有连接上停止发送这些标头,包括直接连接到 Anthropic API 的情况(Claude Code 默认会在此类连接上发送这些标头)。需要 Claude Code v2.1.273 或更高版本 |

322| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | 由 `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` 开启的[网关模型发现](/docs/zh-CN/llm-gateway-protocol#model-discovery)请求的超时时间(毫秒,默认:`3000`)。当您的网关在启动时需要超过三秒才能响应 `/v1/models` 时,请调高此值。仅接受纯数字;`0`、负值和其他写法会保留默认值。需要 Claude Code v2.1.269 或更高版本 |323| `CLAUDE_CODE_GATEWAY_MODEL_DISCOVERY_TIMEOUT_MS` | 由 `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY` 开启的[网关模型发现](/docs/zh-CN/llm-gateway-protocol#model-discovery)请求的超时时间(毫秒,默认:`3000`)。当您的网关在启动时需要超过三秒才能响应 `/v1/models` 时,请调高此值。仅接受纯数字;`0`、负值和其他写法会保留默认值。需要 Claude Code v2.1.269 或更高版本 |


340| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | 主对话之下允许的[子代理层数](/docs/zh-CN/sub-agents#let-subagents-spawn-their-own-subagents)(默认:3)。在默认值下,子代理可以生成自己的子代理,而位于第三层的子代理不能再继续生成;设置为 `1` 可关闭嵌套。在 v2.1.217 至 v2.1.218 中,默认值为 1,因此除非您提高限制,否则子代理无法生成自己的子代理;v2.1.219 将默认值提高到 3。接受以纯数字表示的正整数;其他值会被忽略,因此该限制可以调整,但不能移除。需要 Claude Code v2.1.217 或更高版本 |341| `CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH` | 主对话之下允许的[子代理层数](/docs/zh-CN/sub-agents#let-subagents-spawn-their-own-subagents)(默认:3)。在默认值下,子代理可以生成自己的子代理,而位于第三层的子代理不能再继续生成;设置为 `1` 可关闭嵌套。在 v2.1.217 至 v2.1.218 中,默认值为 1,因此除非您提高限制,否则子代理无法生成自己的子代理;v2.1.219 将默认值提高到 3。接受以纯数字表示的正整数;其他值会被忽略,因此该限制可以调整,但不能移除。需要 Claude Code v2.1.217 或更高版本 |

341| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | 可并行执行的只读工具和子代理的最大数量(默认:10)。值越高,并行度越高,但消耗的资源也越多 |342| `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY` | 可并行执行的只读工具和子代理的最大数量(默认:10)。值越高,并行度越高,但消耗的资源也越多 |

342| `CLAUDE_CODE_MAX_TURNS` | 在未传递显式限制时,限制 agentic 轮次的数量。等同于传递 [`--max-turns`](/docs/zh-CN/cli-reference#cli-flags),两者都设置时后者优先。非正整数的值会在启动时被拒绝并报错,而不是被视为无上限 |343| `CLAUDE_CODE_MAX_TURNS` | 在未传递显式限制时,限制 agentic 轮次的数量。等同于传递 [`--max-turns`](/docs/zh-CN/cli-reference#cli-flags),两者都设置时后者优先。非正整数的值会在启动时被拒绝并报错,而不是被视为无上限 |

343| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | [WebSearch](/docs/zh-CN/tools-reference#session-search-limit) 调用次数上限(默认:200)。当 Claude 达到上限后,后续 WebSearch 调用会返回一条通知,告知它使用已收集的信息继续。接受任意正整数,没有最大值限制。其他值会被忽略并应用默认值,因此该上限可以提高,但不能关闭。需要 Claude Code v2.1.212 或更高版本 |344| `CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSION` | [WebSearch](/docs/zh-CN/tools-reference#session-search-limit) 调用次数上限(默认值:200)。当 Claude 达到上限时,后续的 WebSearch 调用会返回一条通知,告诉它使用已收集的信息继续,并在回答中说明这一点。接受无上限的正整数。其他任何值都会被忽略并应用默认值,因此上限可以提高但不能关闭。需要 Claude Code v2.1.212 或更高版本 |

344| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | 设置为 `1` 可在启动 stdio MCP 服务器时仅提供安全的基线环境加上服务器配置的 `env`,而不是继承您的 shell 环境 |345| `CLAUDE_CODE_MCP_ALLOWLIST_ENV` | 设置为 `1` 可在启动 stdio MCP 服务器时仅提供安全的基线环境加上服务器配置的 `env`,而不是继承您的 shell 环境 |

345| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | 仍在运行的 MCP 工具调用在经过多长时间(毫秒)后[转为后台任务](/docs/zh-CN/mcp#automatic-backgrounding-of-long-tool-calls)(默认:120000,即 2 分钟)。设置为 `0` 可关闭自动转入后台。需要 Claude Code v2.1.212 或更高版本 |346| `CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS` | 仍在运行的 MCP 工具调用在经过多长时间(毫秒)后[转为后台任务](/docs/zh-CN/mcp#automatic-backgrounding-of-long-tool-calls)(默认:120000,即 2 分钟)。设置为 `0` 可关闭自动转入后台。需要 Claude Code v2.1.212 或更高版本 |

346| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | [非交互](/docs/zh-CN/headless)会话的第一轮等待仍在连接的 MCP 服务器的时长(毫秒),用于替代默认的[首轮等待](/docs/zh-CN/agent-sdk/mcp#connection-timing)。设置后,等待会涵盖所有待连接的服务器;在[自托管环境](/docs/zh-CN/self-hosted-environments-configuration#connection-timing)中,它只改变等待持续的时长。设置为 `0` 可跳过等待。无论该值如何,[`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags) 服务器都会保持其自身的 `MCP_TIMEOUT` 等待。需要 Claude Code v2.1.274 或更高版本 |347| `CLAUDE_CODE_MCP_STARTUP_WAIT_MS` | [非交互](/docs/zh-CN/headless)会话的第一轮等待仍在连接的 MCP 服务器的时长(毫秒),用于替代默认的[首轮等待](/docs/zh-CN/agent-sdk/mcp#connection-timing)。设置后,等待会涵盖所有待连接的服务器;在[自托管环境](/docs/zh-CN/self-hosted-environments-configuration#connection-timing)中,它只改变等待持续的时长。设置为 `0` 可跳过等待。无论该值如何,[`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags) 服务器都会保持其自身的 `MCP_TIMEOUT` 等待。需要 Claude Code v2.1.274 或更高版本 |


599* 运行 [`/skill-doctor`](/docs/zh-CN/skills#find-unused-skills) 或在 `/plugin` 的 **Stats** 选项卡中打开其报告600* 运行 [`/skill-doctor`](/docs/zh-CN/skills#find-unused-skills) 或在 `/plugin` 的 **Stats** 选项卡中打开其报告

600* 将您的 claude.ai 账户中启用的 [skill](/docs/zh-CN/skills#where-synced-skills-load) 和[插件](/docs/zh-CN/plugins/loading#synced-plugins)同步到终端会话中601* 将您的 claude.ai 账户中启用的 [skill](/docs/zh-CN/skills#where-synced-skills-load) 和[插件](/docs/zh-CN/plugins/loading#synced-plugins)同步到终端会话中

601* 启用 [You should know mod](/docs/zh-CN/interactive-mode#you-should-know-suggestions)602* 启用 [You should know mod](/docs/zh-CN/interactive-mode#you-should-know-suggestions)

602* 查看 [mod](/docs/zh-CN/plugins/mods/overview#where-mods-run) 在 VS Code 扩展聊天面板中绘制的内容;该 mod 的 hook 仍会运行

603* 使用 [advisor 工具](/docs/zh-CN/advisor#requirements)603* 使用 [advisor 工具](/docs/zh-CN/advisor#requirements)

604* 阅读或回复 [Artifact 上的评论](/docs/zh-CN/artifacts#collect-comments-on-an-artifact)604* 阅读或回复 [Artifact 上的评论](/docs/zh-CN/artifacts#collect-comments-on-an-artifact)

605* 让 Claude 读取[其他组织的公开 Artifact](/docs/zh-CN/artifacts#read-an-artifact-shared-with-you)605* 让 Claude 读取[其他组织的公开 Artifact](/docs/zh-CN/artifacts#read-an-artifact-shared-with-you)


613 安装或升级后的首个会话613 安装或升级后的首个会话

614</h3>614</h3>

615 615 

616在您安装 Claude Code 后,或升级到新增某项功能的版本后,首个会话中可能缺少[受标志控制的功能](#features-that-need-feature-flag-fetching)。该会话启动时的[权限模式](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in)也可能与之后的会话不同。Claude Code 在该会话期间获取标志后,会将其保存在本机上,因此您在该机器上的下一个会话将具备该功能,并以通常的起始权限模式启动。616在您安装 Claude Code 后,或升级到新增某项功能的版本后,首个会话中可能缺少[受标志控制的功能](#features-that-need-feature-flag-fetching)。Claude Code 在该会话期间获取功能标志后,会将其保存在本机上,因此您在该机器上的下一个会话将具备该功能。

617 

618全新安装后,在非交互式会话(例如 `claude -p`、Agent SDK 或 VS Code 扩展)中,Claude Code 可能会在[选择起始权限模式](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in)之前获取到标志,但并不总是会等待这些标志。

619 617 

620在以下这类设置中,首个会话之后的会话同样会在没有新获取标志的情况下启动:618在以下这类设置中,首个会话之后的会话同样会在没有新获取标志的情况下启动:

621 619 

622* **每次运行都是全新环境**:如果每次运行都在 CI 容器中启动,或在任何没有先前会话所保存标志的其他环境中启动,那么每次运行都是首个会话620* **每次运行都是全新环境**:如果每次运行都在 CI 容器中启动,或在任何没有先前会话所保存标志的其他环境中启动,那么每次运行都是首个会话

623* **使用网关令牌且没有 API 密钥**:如果您使用 `ANTHROPIC_AUTH_TOKEN` 进行身份验证且没有 API 密钥,并且 `ANTHROPIC_BASE_URL` 指向 Anthropic 以外的主机(例如 [LLM 网关](/docs/zh-CN/llm-gateway)),Claude Code 将没有可用于获取标志的凭据621* **使用网关令牌且没有 API 密钥**:如果您使用 `ANTHROPIC_AUTH_TOKEN` 进行身份验证且没有 API 密钥,并且 `ANTHROPIC_BASE_URL` 指向 Anthropic 以外的主机(例如 [LLM 网关](/docs/zh-CN/llm-gateway)),Claude Code 将没有可用于获取标志的凭据

624 622 

625要选择这些设置中会话启动时使用的权限模式,请参阅[以不同的权限模式启动](/docs/zh-CN/permission-modes#start-in-a-different-mode)。

626 

627<h2 id="see-also">623<h2 id="see-also">

628 另请参阅624 另请参阅

629</h2>625</h2>

errors.md +32 −5

Details

41| `Auto mode classifier transcript exceeded context window` | [服务器错误](#auto-mode-cannot-determine-the-safety-of-an-action) |41| `Auto mode classifier transcript exceeded context window` | [服务器错误](#auto-mode-cannot-determine-the-safety-of-an-action) |

42| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [服务器错误](#auto-mode-cannot-determine-the-safety-of-an-action) |42| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [服务器错误](#auto-mode-cannot-determine-the-safety-of-an-action) |

43| `The server-side auto mode classifier gave no verdict` | [服务器错误](#the-server-returned-no-safety-verdict) |43| `The server-side auto mode classifier gave no verdict` | [服务器错误](#the-server-returned-no-safety-verdict) |

44| `<tool> was not reviewed and did not run: the conversation is too long for auto mode's classifier` | [服务器错误](#was-not-reviewed-and-did-not-run) |

44| `Auto mode is unavailable — the server returned no safety verdict for the last 10 responses` | [服务器错误](#the-server-returned-no-safety-verdict) |45| `Auto mode is unavailable — the server returned no safety verdict for the last 10 responses` | [服务器错误](#the-server-returned-no-safety-verdict) |

45| `Agent terminated early due to an API error` | [服务器错误](#agent-terminated-early-due-to-an-api-error) |46| `Agent terminated early due to an API error` | [服务器错误](#agent-terminated-early-due-to-an-api-error) |

46| `You've hit your session limit` / `You've hit your weekly limit` / `You've hit your Opus limit` / `You've hit your Sonnet limit` | [使用限制](#youve-hit-your-session-limit) |47| `You've hit your session limit` / `You've hit your weekly limit` / `You've hit your Opus limit` / `You've hit your Sonnet limit` | [使用限制](#youve-hit-your-session-limit) |


471| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/zh-CN/env-vars) | 未设置 | 设置 `CLAUDE_CODE_RETRY_WATCHDOG` 时,每个 API 请求在等待 `429` 和 `529` 错误上所花费的最长时间(毫秒)。未设置时,等待时间没有限制。需要 Claude Code v2.1.295 或更高版本。 |472| [`CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS`](/docs/zh-CN/env-vars) | 未设置 | 设置 `CLAUDE_CODE_RETRY_WATCHDOG` 时,每个 API 请求在等待 `429` 和 `529` 错误上所花费的最长时间(毫秒)。未设置时,等待时间没有限制。需要 Claude Code v2.1.295 或更高版本。 |

472| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/zh-CN/env-vars) | 500 | 当 API 以 `529` 过载错误拒绝请求时,该请求各次重试之间退避的起始延迟(毫秒)。当 API 容量已满时,可将其提高(最高 32000),以便在更长的时间窗口内分散重试。当 `CLAUDE_CODE_RETRY_WATCHDOG` 设置为 `1`,或被拒绝的请求是在[快速模式](/docs/zh-CN/fast-mode#handle-rate-limits)下发送时,此变量无效。需要 Claude Code v2.1.292 或更高版本。 |473| [`CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS`](/docs/zh-CN/env-vars) | 500 | 当 API 以 `529` 过载错误拒绝请求时,该请求各次重试之间退避的起始延迟(毫秒)。当 API 容量已满时,可将其提高(最高 32000),以便在更长的时间窗口内分散重试。当 `CLAUDE_CODE_RETRY_WATCHDOG` 设置为 `1`,或被拒绝的请求是在[快速模式](/docs/zh-CN/fast-mode#handle-rate-limits)下发送时,此变量无效。需要 Claude Code v2.1.292 或更高版本。 |

473| [`CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS`](/docs/zh-CN/env-vars) | 32000 | 当 API 以 `529` 过载错误拒绝请求时,该请求各次重试之间退避的上限(毫秒)。当 API 容量已满时,可将其提高(最高 64000),使后续重试之间的间隔持续拉大。当 `CLAUDE_CODE_RETRY_WATCHDOG` 设置为 `1`,或被拒绝的请求是在[快速模式](/docs/zh-CN/fast-mode#handle-rate-limits)下发送时,此变量无效。需要 Claude Code v2.1.296 或更高版本。 |474| [`CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS`](/docs/zh-CN/env-vars) | 32000 | 当 API 以 `529` 过载错误拒绝请求时,该请求各次重试之间退避的上限(毫秒)。当 API 容量已满时,可将其提高(最高 64000),使后续重试之间的间隔持续拉大。当 `CLAUDE_CODE_RETRY_WATCHDOG` 设置为 `1`,或被拒绝的请求是在[快速模式](/docs/zh-CN/fast-mode#handle-rate-limits)下发送时,此变量无效。需要 Claude Code v2.1.296 或更高版本。 |

474| [`API_TIMEOUT_MS`](/docs/zh-CN/env-vars) | 600000 | 每个请求的超时(毫秒)。为慢速网络或代理提高它。它还限制 Claude Code 等待响应头的时间,在 [No response from API](#no-response-from-api) 中描述。 |475| [`API_TIMEOUT_MS`](/docs/zh-CN/env-vars) | 600000 | 每次请求尝试接收其响应头的时限(毫秒)。它不限制流式响应在此之后持续的时长。为慢速网络或代理提高它。关于它如何限制首字节截止时间,请参阅 [No response from API](#no-response-from-api)。 |

475| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/zh-CN/env-vars) | 未设置 | 超时的[非流式请求](#streaming-response-ended-before-any-complete-data-was-received)的重新发送次数限制。达到该限制时,请求失败。生成时间超过超时时间的 Claude 响应在每次重新发送时都会再次超时,因此请设置较低的数值(例如 `0`)以更快地失败。在本地会话中,每次非流式尝试在 300 秒后超时;当您为 `API_TIMEOUT_MS` 设置正值时,则在该值指定的时间后超时。需要 Claude Code v2.1.285 或更高版本。 |476| [`CLAUDE_CODE_NONSTREAMING_TIMEOUT_RETRIES`](/docs/zh-CN/env-vars) | 未设置 | 超时的[非流式请求](#streaming-response-ended-before-any-complete-data-was-received)的重新发送次数限制。达到该限制时,请求失败。生成时间超过超时时间的 Claude 响应在每次重新发送时都会再次超时,因此请设置较低的数值(例如 `0`)以更快地失败。在本地会话中,每次非流式尝试在 300 秒后超时;当您为 `API_TIMEOUT_MS` 设置正值时,则在该值指定的时间后超时。需要 Claude Code v2.1.285 或更高版本。 |

476| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/zh-CN/env-vars) | 未设置 | 流式请求的第一个响应字节的截止时间(毫秒)。需要 Claude Code v2.1.242 或更高版本。对于当此未设置时 Claude Code 如何选择截止时间,请参阅 [No response from API](#no-response-from-api)。 |477| [`CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`](/docs/zh-CN/env-vars) | 未设置 | 流式请求的第一个响应字节的截止时间(毫秒)。需要 Claude Code v2.1.242 或更高版本。对于当此未设置时 Claude Code 如何选择截止时间,请参阅 [No response from API](#no-response-from-api)。 |

477 478 


535Request timed out536Request timed out

536```537```

537 538 

538这可能在高负载期间或模型生成非常大的响应时发生。默认请求超时时间为 10 分钟。539默认请求超时时间为 10 分钟。

539 540 

540**应该做什么:**541**应该做什么:**

541 542 


627<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.628<model> is temporarily unavailable, so auto mode cannot determine the safety of <tool> right now. Wait a moment and then try this action again.

628```629```

629 630 

630在交互式会话中,工具调用下方会显示一行暗色的 `Not run · auto mode's check had no usable answer`,而不是此消息。按 `Ctrl+O` 可在[会话记录查看器](/docs/zh-CN/interactive-mode#transcript-viewer)中阅读该消息。[The server returned no safety verdict](#the-server-returned-no-safety-verdict) 下的拒绝也显示同样的一行。在 v2.1.296 之前,该消息以红色错误的形式显示在调用下方。631在交互式会话中,工具调用下方会显示一行暗色的 `Not run · auto mode's check had no usable answer`,而不是此消息。按 `Ctrl+O` 可在[会话记录查看器](/docs/zh-CN/interactive-mode#transcript-viewer)中阅读该消息。[The server returned no safety verdict](#the-server-returned-no-safety-verdict) 下的 `gave no verdict` 拒绝也显示同样的一行。在 v2.1.296 之前,该消息以红色错误的形式显示在调用下方。

631 632 

632当 Claude Code 可以确定故障类别时,它在 `temporarily unavailable` 后的括号中指出该类别,例如 `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`。类别为 `(rate-limited)`、`(overloaded)`、`(server error)`、`(timed out)` 和 `(connection failed)`。如果 `(timed out)` 或 `(connection failed)` 重复出现,请检查您的连接;请参阅[无法连接到 API](#unable-to-connect-to-api)。在 v2.1.229 之前,消息从不指出类别,读作 `Wait briefly and then try this action again`。633当 Claude Code 可以确定故障类别时,它在 `temporarily unavailable` 后的括号中指出该类别,例如 `<model> is temporarily unavailable (rate-limited), so auto mode cannot determine the safety of <tool> right now`。类别为 `(rate-limited)`、`(overloaded)`、`(server error)`、`(timed out)` 和 `(connection failed)`。如果 `(timed out)` 或 `(connection failed)` 重复出现,请检查您的连接;请参阅[无法连接到 API](#unable-to-connect-to-api)。在 v2.1.229 之前,消息从不指出类别,读作 `Wait briefly and then try this action again`。

633 634 


638* 几秒后重试;Claude 看到相同的消息,通常会自动重试。暂时故障与[自动模式资格](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)无关;您不需要更改设置639* 几秒后重试;Claude 看到相同的消息,通常会自动重试。暂时故障与[自动模式资格](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)无关;您不需要更改设置

639* 如果重试持续失败,继续进行只读任务,稍后回到被阻止的操作640* 如果重试持续失败,继续进行只读任务,稍后回到被阻止的操作

640* 在 Amazon Bedrock 上,如果消息在每次重试时返回,请检查您的账户是否可以调用它指出的模型:对于标准 Amazon Bedrock 模型,确认您的 [IAM 策略](/docs/zh-CN/amazon-bedrock#iam-configuration)允许调用它;对于 Mantle 模型 ID,[联系您的 AWS 账户团队](/docs/zh-CN/amazon-bedrock#mantle-endpoint-errors)641* 在 Amazon Bedrock 上,如果消息在每次重试时返回,请检查您的账户是否可以调用它指出的模型:对于标准 Amazon Bedrock 模型,确认您的 [IAM 策略](/docs/zh-CN/amazon-bedrock#iam-configuration)允许调用它;对于 Mantle 模型 ID,[联系您的 AWS 账户团队](/docs/zh-CN/amazon-bedrock#mantle-endpoint-errors)

642* 如果消息在每次重试时返回,并且指出的是您在 [`CLAUDE_CODE_AUTO_MODE_MODEL`](/docs/zh-CN/permission-modes#choose-the-classifier-model) 中设置的模型,请检查您的会话所运行的 API 或云提供商是否提供该模型 ID。如果不提供,请将该变量设置为其提供的模型 ID,或取消设置该变量以使用[默认分类器模型](/docs/zh-CN/permission-modes#default-classifier-model)。

641 643 

642当分类器请求失败是因为您的 OAuth 令牌过期或被另一个会话轮换时,Claude Code 刷新令牌并重试请求一次,因此常规的令牌过期不会显示为此消息。在 v2.1.216 之前,过期或轮换的令牌会导致每个分类器请求失败,自动模式会以此消息拒绝每个检查的操作,直到令牌被刷新。644当分类器请求失败是因为您的 OAuth 令牌过期或被另一个会话轮换时,Claude Code 刷新令牌并重试请求一次,因此常规的令牌过期不会显示为此消息。在 v2.1.216 之前,过期或轮换的令牌会导致每个分类器请求失败,自动模式会以此消息拒绝每个检查的操作,直到令牌被刷新。

643 645 


672* 在交互式会话中,切换到不同的[权限模式](/docs/zh-CN/permission-modes),以便您可以在提示时批准该操作674* 在交互式会话中,切换到不同的[权限模式](/docs/zh-CN/permission-modes),以便您可以在提示时批准该操作

673* 开始一个新对话,不包含触发内容675* 开始一个新对话,不包含触发内容

674 676 

675当对话增长到超过分类器的上下文窗口时:677当对话对于 Claude Code 的分类器请求来说过长,且 Claude Code 无法[自行压缩对话](#was-not-reviewed-and-did-not-run)时:

676 678 

677```text theme={null}679```text theme={null}

678Auto mode classifier transcript exceeded context window — falling back to manual approval (try /compact to reduce conversation size)680Auto mode classifier transcript exceeded context window — falling back to manual approval (try /compact to reduce conversation size)


715 717 

716**应该做什么:**718**应该做什么:**

717 719 

720* 在交互式会话中,按 `Ctrl+O` 在[会话记录查看器](/docs/zh-CN/interactive-mode#transcript-viewer)中阅读拒绝文本。

721* 如果拒绝指出 `(the conversation is too long for the check)`,请在 Claude Code 提示符处运行 `/compact` 以缩短对话。在对话变短之前,发送另一条消息会得到相同的拒绝。如果您关闭了[自动压缩](/docs/zh-CN/settings-reference#autocompactenabled),请重新启用它,以便 Claude Code 下次自行压缩。

718* 发送另一条消息以让 Claude 重试。响应计数重新开始。722* 发送另一条消息以让 Claude 重试。响应计数重新开始。

719* 如果停止重复且您的请求通过[LLM 网关或代理](/docs/zh-CN/llm-gateway),检查它是否截断流式响应或重写它们。[服务器端分类器审查](/docs/zh-CN/permission-modes#server-side-classifier-review)说明哪种网关行为会导致拒绝,[网关兼容性指南](/docs/zh-CN/llm-gateway-protocol#feature-pass-through)列出了要保持不变的内容。723* 如果停止重复且您的请求通过[LLM 网关或代理](/docs/zh-CN/llm-gateway),检查它是否截断流式响应或重写它们。[服务器端分类器审查](/docs/zh-CN/permission-modes#server-side-classifier-review)说明哪种网关行为会导致拒绝,[网关兼容性指南](/docs/zh-CN/llm-gateway-protocol#feature-pass-through)列出了要保持不变的内容。

720* 在启动 Claude Code 之前设置 `CLAUDE_CODE_AUTO_MODE_SERVER=0` 以改用其自己的分类器请求。在 v2.1.281 之前,Claude Code 在直接连接到 Anthropic API 时不读取该变量。724* 在启动 Claude Code 之前设置 `CLAUDE_CODE_AUTO_MODE_SERVER=0` 以改用其自己的分类器请求。在 v2.1.281 之前,Claude Code 在直接连接到 Anthropic API 时不读取该变量。


722 726 

723在 v2.1.280 之前,Claude Code 立即拒绝来自没有判决的响应的每个操作,从不停止轮次。727在 v2.1.280 之前,Claude Code 立即拒绝来自没有判决的响应的每个操作,从不停止轮次。

724 728 

729在 v2.1.302 之前,在直接连接到 Anthropic API 时,Claude Code 不会压缩已增长到对服务器检查而言过长的对话。

730 

731<h3 id="was-not-reviewed-and-did-not-run">

732 Was not reviewed and did not run

733</h3>

734 

735`was not reviewed and did not run` 拒绝表示对话过长,[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)分类器无法检查该操作,因此该操作没有运行。Claude Code 向 Claude 返回以下消息:

736 

737```text theme={null}

738<tool> was not reviewed and did not run: the conversation is too long for auto mode's classifier. Claude Code will try to compact the conversation before the next request; if this action is still needed after that, issue it again and it will be reviewed normally.

739```

740 

741如果压缩失败,分类器无法检查的后续操作会收到以下两种消息之一:

742 

743* [`gave no verdict (the conversation is too long for the check)`](#the-server-returned-no-safety-verdict) 拒绝

744* [`Auto mode classifier transcript exceeded context window`](#auto-mode-cannot-determine-the-safety-of-an-action) 消息

745 

746**应该做什么:**

747 

748* 如果消息中宣布的压缩成功,您无需执行任何操作。

749* 如果您看到这两种消息中的任何一种,请在 Claude Code 提示符处运行 `/compact` 自行缩短对话。如果您关闭了[自动压缩](/docs/zh-CN/settings-reference#autocompactenabled),请重新启用它,以便 Claude Code 下次自行压缩。

750 

725<h3 id="agent-terminated-early-due-to-an-api-error">751<h3 id="agent-terminated-early-due-to-an-api-error">

726 Agent terminated early due to an API error752 Agent terminated early due to an API error

727</h3>753</h3>


4554* 根据[子代理可用的工具](/docs/zh-CN/sub-agents#available-tools)纠正错误命名的每个条目4580* 根据[子代理可用的工具](/docs/zh-CN/sub-agents#available-tools)纠正错误命名的每个条目

4555* 删除会话没有的工具条目,例如来自未连接的服务器的 MCP 工具4581* 删除会话没有的工具条目,例如来自未连接的服务器的 MCP 工具

4556* 如果该条目指向一个已连接的 MCP 服务器,请将该条目与该服务器的名称进行比较,以该服务器[工具名称](/docs/zh-CN/permissions#mcp)中的拼写为准,例如 `mcp__reports__v2__get_totals` 中的 `reports__v2`。对于该服务器,请写 `mcp__reports__v2__*`,即 `mcp__` 后跟完整名称和 `__*`。如果使用较短的 `mcp__reports`(它指向名为 `reports` 的服务器),子代理将得不到任何 `reports__v2` 工具4582* 如果该条目指向一个已连接的 MCP 服务器,请将该条目与该服务器的名称进行比较,以该服务器[工具名称](/docs/zh-CN/permissions#mcp)中的拼写为准,例如 `mcp__reports__v2__get_totals` 中的 `reports__v2`。对于该服务器,请写 `mcp__reports__v2__*`,即 `mcp__` 后跟完整名称和 `__*`。如果使用较短的 `mcp__reports`(它指向名为 `reports` 的服务器),子代理将得不到任何 `reports__v2` 工具

4557* 对于[后台子代理删除](/docs/zh-CN/sub-agents#available-tools)的工具(例如 `CronCreate`),删除该条目。要保留该工具,[关闭 fork 模式](/docs/zh-CN/sub-agents#turn-fork-mode-on-or-off)并要求 Claude 在前台运行子代理4583* 对于[后台子代理删除](/docs/zh-CN/sub-agents#available-tools)的工具(例如 `CronCreate`),删除该条目

4584* 如果想改为保留 `CronCreate` 之类的工具,请[让 Claude 等待子代理](/docs/zh-CN/sub-agents#let-claude-wait-for-a-subagent),因为 Claude 等待的子代理会在前台运行并保留该工具。如果定义中设置了 `background: true`,请先删除该字段,因为它会使子代理保持在后台

4558* 删除 `tools` 字段而不是列出工具,以给子代理每个[子代理可用的工具](/docs/zh-CN/sub-agents#available-tools)4585* 删除 `tools` 字段而不是列出工具,以给子代理每个[子代理可用的工具](/docs/zh-CN/sub-agents#available-tools)

4559* 对于仅包含 `Agent` 的 `tools` 列表,提高[深度限制](/docs/zh-CN/sub-agents#let-subagents-spawn-their-own-subagents)或给该 Agent 至少一个其他工具:Claude Code 在该限制处保留 `Agent`,因此列表中没有其他内容会解析为零个工具4586* 对于仅包含 `Agent` 的 `tools` 列表,提高[深度限制](/docs/zh-CN/sub-agents#let-subagents-spawn-their-own-subagents)或给该 Agent 至少一个其他工具:Claude Code 在该限制处保留 `Agent`,因此列表中没有其他内容会解析为零个工具

4560 4587 

fast-mode.md +1 −1

Details

47* 快速模式处于活动状态时,提示旁边会出现一个小的 `↯` 图标47* 快速模式处于活动状态时,提示旁边会出现一个小的 `↯` 图标

48* 随时再次运行 `/fast` 以检查快速模式是否打开或关闭48* 随时再次运行 `/fast` 以检查快速模式是否打开或关闭

49 49 

50Opus 5.5 是 Claude Code v2.1.280 及更高版本中的快速模式默认值。在 v2.1.280 之前,快速模式在 v2.1.219 版本中默认为 Opus 5,在 v2.1.154 到 v2.1.218 版本中默认为 Opus 4.8,在 v2.1.142 到 v2.1.153 版本中默认为 Opus 4.7。50Opus 5.5 是 Claude Code v2.1.280 及更高版本中的快速模式默认值。在 v2.1.280 之前,快速模式自 v2.1.219 起默认为 Opus 5,在 v2.1.154 到 v2.1.218 版本中默认为 Opus 4.8。

51 51 

52当您再次使用 `/fast` 禁用快速模式时,您仍然保持在 Opus 上。要切换到不同的模型,请使用 `/model`。52当您再次使用 `/fast` 禁用快速模式时,您仍然保持在 Opus 上。要切换到不同的模型,请使用 `/model`。

53 53 

fullscreen.md +3 −3

Details

101* **在提示输入中单击**以在您正在输入的文本中的任何位置放置光标。101* **在提示输入中单击**以在您正在输入的文本中的任何位置放置光标。

102* **在 `/` 命令或 `@` 文件列表中单击建议**以接受它。悬停会突出显示光标下的行。102* **在 `/` 命令或 `@` 文件列表中单击建议**以接受它。悬停会突出显示光标下的行。

103* **在选择菜单中单击选项**以选择它。这包括权限提示、`/model`、`/config` 和其他显示选项列表的对话框。103* **在选择菜单中单击选项**以选择它。这包括权限提示、`/model`、`/config` 和其他显示选项列表的对话框。

104* **在多选菜单中单击选项**以切换它,然后单击提交按钮以确认您的选择。单击自由文本行(例如多选题中的 `Other` 行)会聚焦其输入字段,以便您可以输入答案。需要 Claude Code v2.1.208 或更高版本。104* **在多选菜单中单击选项**以切换它,然后单击提交按钮以确认您的选择。单击自由文本行(例如多选题中的 `Other` 行)会聚焦其输入字段,以便您可以输入答案。

105* **单击 `/config` 面板中的设置值**以更改它,并使用鼠标滚轮滚动设置列表。需要 Claude Code v2.1.271 或更高版本。105* **单击 `/config` 面板中的设置值**以更改它,并使用鼠标滚轮滚动设置列表。需要 Claude Code v2.1.271 或更高版本。

106* **用鼠标滚轮滚动选择或多选菜单**当它显示的选项多于一次显示的选项时,例如短终端窗口中的 `/model` 列表。当指针悬停在其选项上时,滚轮会滚动列表。需要 Claude Code v2.1.280 或更高版本。106* **用鼠标滚轮滚动选择或多选菜单**当它显示的选项多于一次显示的选项时,例如短终端窗口中的 `/model` 列表。当指针悬停在其选项上时,滚轮会滚动列表。需要 Claude Code v2.1.280 或更高版本。

107* **用其滚动条滚动溢出的列表。** 在列表面板(例如 `/skills`、`/mcp` 和 `/plugin` 的已安装列表)中,当指针悬停在列表上时,滚动条会出现在有超过适应行数的列表旁边。单击轨道以跳转到该点,或拖动滑块。需要 Claude Code v2.1.281 或更高版本。107* **用其滚动条滚动溢出的列表。** 在列表面板(例如 `/skills`、`/mcp` 和 `/plugin` 的已安装列表)中,当指针悬停在列表上时,滚动条会出现在有超过适应行数的列表旁边。单击轨道以跳转到该点,或拖动滑块。需要 Claude Code v2.1.281 或更高版本。


146| `Ctrl+End` | 跳转到最新消息并重新启用自动跟随 |146| `Ctrl+End` | 跳转到最新消息并重新启用自动跟随 |

147| 鼠标滚轮 | 一次滚动几行 |147| 鼠标滚轮 | 一次滚动几行 |

148 148 

149即使在[压缩](/docs/zh-CN/context-window#what-survives-compaction)之后,您也可以滚动回到会话开始。Claude 从压缩摘要继续工作,但 Claude Code 在重复压缩过程中在全屏滚动回放中保留每条早期消息。149如果您关闭一个已[压缩](/docs/zh-CN/context-window#what-survives-compaction)的会话并[恢复](/docs/zh-CN/sessions#what-a-resumed-session-restores)它,向上滚动会停在 `Conversation compacted` 行,而您较早的消息仍保存在磁盘上的[会话记录文件](/docs/zh-CN/sessions#where-transcripts-are-stored)中。要获取这些消息中的某个细节,请让 Claude 在该文件中查找。

150 150 

151在没有专用 `PgUp`、`PgDn`、`Home` 或 `End` 键的键盘上,例如 MacBook 键盘,按住 `Fn` 并使用箭头键:`Fn+↑` 发送 `PgUp`,`Fn+↓` 发送 `PgDn`,`Fn+←` 发送 `Home`,`Fn+→` 发送 `End`。`Ctrl+Fn+→` 在 macOS 上无法到达 Claude Code,因此 MacBook 键盘默认没有有效的跳转到底部快捷键。相反,使用以下选项之一:151在没有专用 `PgUp`、`PgDn`、`Home` 或 `End` 键的键盘上,例如 MacBook 键盘,按住 `Fn` 并使用箭头键:`Fn+↑` 发送 `PgUp`,`Fn+↓` 发送 `PgDn`,`Fn+←` 发送 `Home`,`Fn+→` 发送 `End`。`Ctrl+Fn+→` 在 macOS 上无法到达 Claude Code,因此 MacBook 键盘默认没有有效的跳转到底部快捷键。相反,使用以下选项之一:

152 152 


162 自动跟随162 自动跟随

163</h3>163</h3>

164 164 

165向上滚动会暂停自动跟随,以便新输出不会将您拉回到底部。当您向上滚动时,一个`跳转到底部`按钮会浮动在记录的底部边缘,当新输出到达时会显示计数,例如 `3 条新消息`。点击它、按 `Ctrl+End` 或滚动到底部以恢复跟随。165向上滚动会暂停自动跟随,以便新输出不会将您拉回到底部。当您向上滚动时,一个 `Jump to bottom` 按钮会浮动在会话记录的底部边缘,当新输出到达时会显示计数,例如 `3 new messages`。点击它、按 `Ctrl+End` 或滚动到底部以恢复跟随。

166 166 

167当自动跟随暂停时,当响应完成流式传输时,视图也会保持在您滚动的位置。167当自动跟随暂停时,当响应完成流式传输时,视图也会保持在您滚动的位置。

168 168 

headless.md +5 −4

Details

138 管道 stdin 的上限为 10MB。如果超过上限,Claude Code 会以清晰的错误和非零状态退出。要处理更大的输入,请将内容写入文件并在提示词中引用文件路径,而不是管道传输它。138 管道 stdin 的上限为 10MB。如果超过上限,Claude Code 会以清晰的错误和非零状态退出。要处理更大的输入,请将内容写入文件并在提示词中引用文件路径,而不是管道传输它。

139</Note>139</Note>

140 140 

141如果 Claude Code 无法读取 stdin,例如因为启动它的进程断开了其端点,Claude Code 会向 stderr 打印警告并继续使用命令行中的提示词。在 v2.1.211 之前,Windows 上不可读的 stdin 会导致会话崩溃或无输出地静默退出。141如果 Claude Code 无法读取 stdin,例如因为启动它的进程断开了其端点,Claude Code 会向 stderr 打印警告并继续使用命令行中的提示词。

142 142 

143<h3 id="add-claude-to-a-build-script">143<h3 id="add-claude-to-a-build-script">

144 将 Claude 添加到构建脚本144 将 Claude 添加到构建脚本


213 213 

214流的最后一行是包含最终响应文本、成本和会话元数据的 `result` 消息。214流的最后一行是包含最终响应文本、成本和会话元数据的 `result` 消息。

215 215 

216如果您的消费者缓慢读取流,Claude Code 会等待队列中的输出排空后再退出,根据仍然队列中的数量缩放等待时间,上限为 30 秒。在 v2.1.214 之前,退出等待的上限约为两秒,这可能会截断大型响应的末尾。216如果您的消费者缓慢读取流,Claude Code 会等待队列中的输出排空后再退出,根据仍然队列中的数量缩放等待时间,上限为 30 秒。

217 217 

218以下示例使用 [jq](https://jqlang.org/) 过滤文本增量,仅显示流式文本。`-r` 标志输出原始字符串(无引号),`-j` 不带换行符地连接,以便 token 连续流式输出:218以下示例使用 [jq](https://jqlang.org/) 过滤文本增量,仅显示流式文本。`-r` 标志输出原始字符串(无引号),`-j` 不带换行符地连接,以便 token 连续流式输出:

219 219 


249 249 

250如果流中缺少其中某些消息,请将您的 Claude Code 版本与以下最低版本进行对照:250如果流中缺少其中某些消息,请将您的 Claude Code 版本与以下最低版本进行对照:

251 251 

252* **`--forward-subagent-text` 和 `CLAUDE_CODE_FORWARD_SUBAGENT_TEXT`**:v2.1.211 或更高版本

253* **在每个嵌套深度转发**:v2.1.219 或更高版本252* **在每个嵌套深度转发**:v2.1.219 或更高版本

254* **Claude 从主对话使用 Skill 工具启动的 forked skill**:其 `tool_use` 和 `tool_result` 块需要 v2.1.86 或更高版本,其第一条 `user` 消息以及文本和思考块需要 v2.1.265 或更高版本253* **Claude 从主对话使用 Skill 工具启动的 forked skill**:其 `tool_use` 和 `tool_result` 块需要 v2.1.86 或更高版本,其第一条 `user` 消息以及文本和思考块需要 v2.1.265 或更高版本

255* **forked skill 生成的子代理的消息,以及在子代理或另一个 forked skill 内启动的 forked skill 的消息**:v2.1.275 或更高版本254* **forked skill 生成的子代理的消息,以及在子代理或另一个 forked skill 内启动的 forked skill 的消息**:v2.1.275 或更高版本


336 --allowedTools "Bash,Read,Edit"335 --allowedTools "Bash,Read,Edit"

337```336```

338 337 

339要为整个会话设置基线而不是列出单个工具,请传递 [权限模式](/docs/zh-CN/permission-modes)。对于不设置权限模式的运行,采用 [内置启动权限模式](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in),可能是 `auto`,因此请传递您想要的权限模式:338对未列出工具的调用如果无需批准,则会运行。在 [Manual 模式](/docs/zh-CN/permission-modes#available-modes) 的 `claude -p` 运行中,需要批准的调用会被拒绝,除非有机制批准它,例如 [`PermissionRequest` hook](/docs/zh-CN/hooks#permissionrequest) 或 [`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags)。在 Claude Code v2.1.302 或更高版本中,当 [没有任何设置指定权限模式](/docs/zh-CN/permission-modes#which-mode-a-non-interactive-run-starts-in) 时,`claude -p` 运行以 Manual 模式启动。

339 

340要为整个会话设置基线而不是列出单个工具,请使用 `--permission-mode` 传递 [权限模式](/docs/zh-CN/permission-modes),例如 `auto`、`dontAsk` 或 `acceptEdits`:

340 341 

341* **`auto`**:传递 `--permission-mode auto` 以让分类器代替您审查大多数操作342* **`auto`**:传递 `--permission-mode auto` 以让分类器代替您审查大多数操作

342* **`dontAsk`**:Claude Code 拒绝每个原本会提示的调用,这对于锁定的 CI 运行很有用。在 Manual 模式下无需批准的操作仍会运行,例如工作目录中的文件读取和 [只读命令集](/docs/zh-CN/permissions#read-only-commands),您的 `--allowedTools` 条目或 `permissions.allow` 规则涵盖的操作也是如此。`AskUserQuestion`、[您的组织设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具、标记为 [`requiresUserInteraction`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具以及 [从网络路径读取](/docs/zh-CN/permissions#network-paths) 即使在允许规则匹配时也会被拒绝343* **`dontAsk`**:Claude Code 拒绝每个原本会提示的调用,这对于锁定的 CI 运行很有用。在 Manual 模式下无需批准的操作仍会运行,例如工作目录中的文件读取和 [只读命令集](/docs/zh-CN/permissions#read-only-commands),您的 `--allowedTools` 条目或 `permissions.allow` 规则涵盖的操作也是如此。`AskUserQuestion`、[您的组织设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具、标记为 [`requiresUserInteraction`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具以及 [从网络路径读取](/docs/zh-CN/permissions#network-paths) 即使在允许规则匹配时也会被拒绝

hooks.md +26 −32

Details

423* **[提示 hooks](#prompt-and-agent-hook-fields)**(`type: "prompt"`):向 Claude 模型发送提示以进行单轮评估。模型以 JSON 形式返回其决定。请参阅 [基于提示的 hooks](#prompt-based-hooks)。423* **[提示 hooks](#prompt-and-agent-hook-fields)**(`type: "prompt"`):向 Claude 模型发送提示以进行单轮评估。模型以 JSON 形式返回其决定。请参阅 [基于提示的 hooks](#prompt-based-hooks)。

424* **[代理 hooks](#prompt-and-agent-hook-fields)**(`type: "agent"`):生成一个子代理,可以使用 Read、Grep 和 Glob 等工具来验证条件,然后返回决定。代理 hooks 是实验性的,可能会改变。请参阅 [基于代理的 hooks](#agent-based-hooks)。424* **[代理 hooks](#prompt-and-agent-hook-fields)**(`type: "agent"`):生成一个子代理,可以使用 Read、Grep 和 Glob 等工具来验证条件,然后返回决定。代理 hooks 是实验性的,可能会改变。请参阅 [基于代理的 hooks](#agent-based-hooks)。

425 425 

426所有匹配的 hooks 并行运行。如果在多个设置文件中定义相同的处理程序,它运行一次。插件或技能的相同处理程序副本保持分离。426当事件触发时,其匹配的 hook 并行运行。如果其中超过 12 个是提示词或 Agent hook,则其中 12 个同时运行,其余的在正在运行的 hook 完成后开始。每个等待中的 hook 的 [`timeout`](#common-fields) 从该 hook 开始运行时开始计时。

427 

428如果在多个设置文件中定义相同的处理程序,它运行一次。插件或 skill 的相同处理程序副本保持分离。

427 429 

428处理程序在当前目录中使用 Claude Code 的环境运行。如果当前目录不再存在,例如另一个 shell 在会话中途删除的 worktree 或临时目录,Claude Code 从以下第一个仍然存在的目录运行命令 hook:会话启动的目录、项目根目录、您的主目录或系统临时目录。Claude Code 在 [调试日志](#debug-hooks) 中记录一个警告,命名回退目录。对于从桌面应用启动的 worktree 会话,请参阅 [worktree 与主检出共享的内容](/docs/zh-CN/worktrees#what-worktrees-share-with-the-main-checkout)。430处理程序在当前目录中使用 Claude Code 的环境运行。如果当前目录不再存在,例如另一个 shell 在会话中途删除的 worktree 或临时目录,Claude Code 从以下第一个仍然存在的目录运行命令 hook:会话启动的目录、项目根目录、您的主目录或系统临时目录。Claude Code 在 [调试日志](#debug-hooks) 中记录一个警告,命名回退目录。对于从桌面应用启动的 worktree 会话,请参阅 [worktree 与主检出共享的内容](/docs/zh-CN/worktrees#what-worktrees-share-with-the-main-checkout)。

429 431 


445 447 

446`if` 字段恰好包含一个权限规则。没有 `&&`、`||` 或列表语法来组合规则;要应用多个条件,为每个定义一个单独的 hook 处理程序。448`if` 字段恰好包含一个权限规则。没有 `&&`、`||` 或列表语法来组合规则;要应用多个条件,为每个定义一个单独的 hook 处理程序。

447 449 

448在文件工具的 `if` 条件中,单段目录模式如 `"Edit(src/**)"` 仅匹配工作目录中的 `src` 目录及其下的文件。要匹配任何深度的名为 `src` 的目录,请写 `"Edit(**/src/**)"`。在 v2.1.214 之前,`"Edit(src/**)"` 匹配工作目录下任何深度的名为 `src` 的目录。450在文件工具的 `if` 条件中,单段目录模式如 `"Edit(src/**)"` 仅匹配工作目录中的 `src` 目录及其下的文件。要匹配任何深度的名为 `src` 的目录,请写 `"Edit(**/src/**)"`。

449 451 

450<h4 id="bash-if-matching">452<h4 id="bash-if-matching">

451 `if` 模式如何匹配 Bash 命令453 `if` 模式如何匹配 Bash 命令


825 退出码输出827 退出码输出

826</h3>828</h3>

827 829 

828hook 的退出码告诉 Claude Code 是否继续执行触发该 hook 的操作,例如工具调用或提示词。运行结束时有以下三种结果之一:830hook 运行结束时,Claude Code 根据其退出码决定是否继续执行触发该 hook 的操作,例如工具调用或提示词:

829 831 

830* **成功**:hook 以 0 退出。Claude Code 应用 hook 打印的任何 [JSON 输出](#json-output)字段,除非这些字段阻止或拒绝该操作,否则操作继续进行。[启动后台进程的 hook](#hooks-that-start-a-background-process) 介绍了例外情况。832* **成功**:hook 以 0 退出。Claude Code 应用 hook 打印的任何 [JSON 输出](#json-output)字段,除非这些字段阻止或拒绝该操作,否则操作继续进行。[启动后台进程的 hook](#hooks-that-start-a-background-process) 介绍了例外情况。

831* **阻止错误**:hook 以 2 退出。在[可以阻止的事件](#exit-code-2-behavior-per-event)上,Claude Code 停止该操作。833* **阻止错误**:hook 以 2 退出。在[可以阻止的事件](#exit-code-2-behavior-per-event)上,Claude Code 停止该操作。


853 退出码 0855 退出码 0

854</h4>856</h4>

855 857 

856退出 0 表示成功,是您打印 JSON 进行结构化控制时的预期退出码。858退出 0 表示成功,是您打印 JSON 进行结构化控制时的预期退出码。当 hook 以 0 退出但打印了无法解析或未通过 [schema 验证](#json-output)的 JSON 时,操作会继续进行,除非该 hook 是[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails)。该运行不是应用了您字段的成功,而是[非阻止错误](#exit-code-output)。

857 

858对于大多数事件,Claude Code 将 stdout 写入调试日志,不在会话记录中显示。例外是 `UserPromptSubmit`、`UserPromptExpansion`、`SessionStart` 和 `PostModelSwitch`,其中 Claude Code 添加纯文本 stdout 作为 Claude 可以看到并据此行动的上下文。

859 859 

860对于非[异步](#how-async-hooks-execute)的 hook,当整个输出是一个 JSON 对象且周围除空白外没有其他内容时,Claude Code 会将您的 stdout 解析为 [JSON 输出](#json-output),否则将其视为纯文本或解析失败:860要修正输出,请参考 `<hook name> hook error` 通知中带有的解析或验证消息。对于非[异步](#how-async-hooks-execute)的 hook,只有当您打印一个 JSON 对象(单行或多行均可)且周围除空白外没有其他内容时,您的 stdout 才算作 [JSON 输出](#json-output)。Claude Code 会将其他任何 stdout 视为纯文本或解析失败:

861 861 

862* **一个 JSON 对象,无论单行还是多行**:解析为 JSON 输出。

863* **不以 `{` 开头的输出,或以 `{` 开头但不以 `}` 结尾的输出**:纯文本。根据此规则,JSON 数组和带引号的 JSON 字符串都是纯文本。862* **不以 `{` 开头的输出,或以 `{` 开头但不以 `}` 结尾的输出**:纯文本。根据此规则,JSON 数组和带引号的 JSON 字符串都是纯文本。

864* **两行或更多行,每行本身都可解析为 JSON,且第一行以 `{` 开头、最后一行以 `}` 结尾**:如果没有任何一行是设置了字段的 JSON 输出对象,则为纯文本;如果有一行是,则为解析失败。863* **两行或更多行,每行本身都可解析为 JSON,且第一行以 `{` 开头、最后一行以 `}` 结尾**:如果没有任何一行是设置了字段的 JSON 输出对象,则为纯文本。如果有一行是,则输出为解析失败,因此请只在 stdout 上打印该对象,不要打印其他内容。

865* **其他任何以 `{` 开头并以 `}` 结尾但不是有效 JSON 的内容**:解析失败。864* **其他任何以 `{` 开头并以 `}` 结尾但不是有效 JSON 的内容**:解析失败。

866 865 

867除非该 hook 是[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails),否则解析失败或解析后的对象未通过 [schema 验证](#json-output)都是[非阻止错误](#exit-code-output)。`<hook name> hook error` 通知带有解析或验证消息。在添加纯文本 stdout 作为上下文的事件上,Claude Code 不会添加它未能解析的 stdout。866对于大多数事件,Claude Code 将 stdout 写入调试日志,不在会话记录中显示。例外是 `UserPromptSubmit`、`UserPromptExpansion`、`SessionStart` 和 `PostModelSwitch`,其中 Claude Code 添加纯文本 stdout 作为 Claude 可以看到并据此行动的上下文。在这些事件上,Claude Code 不会添加它未能解析的 stdout。

868 867 

869Claude 从不看到以 0 退出的 hook 的 stderr。要在 `PreToolUse` 等事件上自己读取它,请启用[调试日志](#debug-hooks)。要从 `PostToolUse` 或 `PostToolUseFailure` hook 向 Claude 显示警告,请改为退出 2,以便 [Claude 看到 stderr](#exit-code-2-behavior-per-event),即使工具已经运行。868Claude 从不看到以 0 退出的 hook 的 stderr。要在 `PreToolUse` 等事件上自己读取它,请启用[调试日志](#debug-hooks)。要从 `PostToolUse` 或 `PostToolUseFailure` hook 向 Claude 显示警告,请改为退出 2,以便 [Claude 看到 stderr](#exit-code-2-behavior-per-event),即使工具已经运行。

870 869 


907 其他退出码906 其他退出码

908</h4>907</h4>

909 908 

910除非该 hook 是[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails),否则以 0 或 2 以外的退出码退出且 stdout 上为纯文本或无输出时,属于[非阻止错误](#exit-code-output)。如果操作继续进行,您会在会话记录中看到 `<hook name> hook error` 通知,带有 `Failed with non-blocking status code:` 和 hook stderr 的第一行。909带有 `Failed with non-blocking status code:` 的 `<hook name> hook error` 通知表示 hook 的退出码不是 0 或 2,且其 stdout 为纯文本或为空。除非该 hook 是[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails),否则这属于[非阻止错误](#exit-code-output),因此您的 hook 没有停止该操作。要捕获 hook 的完整 stderr,而不仅是通知中显示的第一行,请启用[调试日志](#debug-hooks)。

911 910 

912例如,当 `Bash` 上的 `PreToolUse` hook 向 stderr 打印 `something broke` 并以 1 退出时,`PreToolUse:Bash hook error` 通知带有以下行:911例如,当 `Bash` 上的 `PreToolUse` hook 向 stderr 打印 `something broke` 并以 1 退出时,`PreToolUse:Bash hook error` 通知带有以下行:

913 912 


915Failed with non-blocking status code: something broke914Failed with non-blocking status code: something broke

916```915```

917 916 

918要捕获完整的 stderr 而不仅是第一行,请启用[调试日志](#debug-hooks)。917如果通知带有 shell 的 `No such file or directory` 消息(如下面这一行),则说明该 hook 从未运行,例如因为其脚本路径不存在:

919 

920除非该 hook 是[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails),否则无法启动的 hook 也是非阻止错误。在 shell 形式下,当脚本路径不存在或不可执行时,shell 以某个代码(如 127)退出,通知带有解释器的消息。例如,当脚本路径不存在时,通知带有类似下面的一行:

921 918 

922```text theme={null}919```text theme={null}

923Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory920Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory

924```921```

925 922 

923如果路径错误,请在配置该 hook 的位置更正它。在 shell 形式下,当脚本路径不存在或不可执行时,shell 以某个代码(如 127)退出,通知带有解释器的消息。除非该 hook 是[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails),否则无法启动的 hook 也是非阻止错误。

924 

926当您设置策略 hook 时,请在其第一次运行时留意此通知,因为 `settings.json` 中拼写错误的路径意味着该 hook 从不运行。要在 hook 无法启动时阻止操作,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。925当您设置策略 hook 时,请在其第一次运行时留意此通知,因为 `settings.json` 中拼写错误的路径意味着该 hook 从不运行。要在 hook 无法启动时阻止操作,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。

927 926 

928<Warning>927<Warning>


933 超时932 超时

934</h4>933</h4>

935 934 

936除了您使用 [`async: true`](#run-hooks-in-the-background) 运行的命令 hook 外,Claude Code 会取消达到其 [`timeout`](#common-fields) 的 `command`、`http` 或 `mcp_tool` hook,并丢弃 hook 的输出,因此在大多数事件上,超时的 hook 不会做出决策。935除了您使用 [`async: true`](#run-hooks-in-the-background) 运行的命令 hook 外,Claude Code 会取消达到其 [`timeout`](#common-fields) 的 `command`、`http` 或 `mcp_tool` hook,并丢弃 hook 的输出,因此在大多数事件上,超时的 hook 不会做出决策。在 [`PreModelSwitch`](#premodelswitch) 上,因超时被取消的 hook 会阻止模型切换。

937 936 

938在 [`PreModelSwitch`](#premodelswitch) 上,因超时被取消的 hook 会阻止模型切换。在 `PreToolUse` 上,两类 hook 的行为不同:937在 `PreToolUse` 上,超时的 `command`、`http` 或 `mcp_tool` hook 不阻止工具调用,但[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails) 除外。调用通过正常[权限流程](/docs/zh-CN/permissions)继续,因此不要指望停滞的 hook 充当关卡。要在 `command` 或 `http` hook 超时时阻止调用,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。超过其超时时间的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 会[阻止工具调用](#pretooluse)。

939 

940* 超时的 `command`、`http` 或 `mcp_tool` hook 不阻止工具调用,但[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails) 除外。调用通过正常[权限流程](/docs/zh-CN/permissions)继续,因此不要指望停滞的 hook 充当关卡。要在 `command` 或 `http` hook 超时时阻止调用,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。

941* 超过其超时时间的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 会[阻止工具调用](#pretooluse)。

942 938 

943<h4 id="hooks-that-start-a-background-process">939<h4 id="hooks-that-start-a-background-process">

944 启动后台进程的 hook940 启动后台进程的 hook


1086 HTTP 响应处理1082 HTTP 响应处理

1087</h3>1083</h3>

1088 1084 

1089HTTP hook 使用 HTTP 状态码和响应体,而不是退出码和 stdout。下面的结果适用于大多数事件;在[每个事件表](#exit-code-2-behavior-per-event)中有自己失败约定的事件(如 `WorktreeCreate`)也会将该约定应用于失败的 HTTP hook:1085HTTP hook 使用 HTTP 状态码和响应体,而不是退出码和 stdout。要在请求失败或返回非 2xx 状态时阻止操作,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。要阻止工具调用或拒绝权限,请返回 2xx 响应,其 JSON 响应体包含相应的[决策字段](#decision-control)。

1086 

1087发生[非阻止错误](#exit-code-output)后,操作会继续进行,除非该 hook 是[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails)。除了在[每个事件表](#exit-code-2-behavior-per-event)中有自己失败约定的事件(如 `WorktreeCreate`)外,每种响应或失败的结果如下:

1090 1088 

1091* **2xx 且空响应体**:成功,等同于退出码 0 且无输出1089* **2xx 且空响应体**:成功,等同于退出码 0 且无输出

1092* **2xx 且 JSON 对象响应体**:使用与命令 hook 相同的 [JSON 输出](#json-output) schema 解析。未通过 schema 验证的响应体是非阻止错误1090* **2xx 且 JSON 对象响应体**:使用与命令 hook 相同的 [JSON 输出](#json-output) schema 解析。未通过 schema 验证的响应体是非阻止错误


1095* **连接失败**:非阻止错误1093* **连接失败**:非阻止错误

1096* **超时**:hook 被取消,如[超时](#timeouts)下所述1094* **超时**:hook 被取消,如[超时](#timeouts)下所述

1097 1095 

1098发生[非阻止错误](#exit-code-output)后,操作会继续进行,除非该 hook 是[失败时会阻止操作的 hook](#block-the-action-when-a-hook-fails)。要阻止工具调用或拒绝权限,请返回 2xx 响应,其 JSON 响应体包含相应的[决策字段](#decision-control)。要在请求失败或返回非 2xx 状态时阻止操作,请设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。

1099 

1100<h3 id="json-output">1096<h3 id="json-output">

1101 JSON 输出1097 JSON 输出

1102</h3>1098</h3>


1319| `compact` | 自动或手动压缩 |1315| `compact` | 自动或手动压缩 |

1320| `fork` | 从现有会话派生出的新会话:`--fork-session` 与 `--resume` 或 `--continue` 一起使用、`/fork` 后台副本、`/branch`,或您[移到后台](/docs/zh-CN/agent-view#from-inside-a-session)的对话 |1316| `fork` | 从现有会话派生出的新会话:`--fork-session` 与 `--resume` 或 `--continue` 一起使用、`/fork` 后台副本、`/branch`,或您[移到后台](/docs/zh-CN/agent-view#from-inside-a-session)的对话 |

1321 1317 

1322在 v2.1.214 之前,派生的会话报告的 source 为 `"resume"`。

1323 

1324当您启动交互式会话、在启动时使用 `--continue` 或 `--resume` 恢复对话,或运行 `/clear` 时,SessionStart hook 会在后台运行。您可以立即输入,恢复的对话也会直接显示,无需等待 hook。Claude 的第一次回复仍会等待 hook 完成,以便它们的上下文能够传达给 Claude。1318当您启动交互式会话、在启动时使用 `--continue` 或 `--resume` 恢复对话,或运行 `/clear` 时,SessionStart hook 会在后台运行。您可以立即输入,恢复的对话也会直接显示,无需等待 hook。Claude 的第一次回复仍会等待 hook 完成,以便它们的上下文能够传达给 Claude。

1325 1319 

1326当您在会话中使用 `/resume` 切换对话时,切换操作则会等待 hook 完成。如果您在后台 hook 仍在运行时运行 `/clear` 或切换到其他对话,它们返回的任何内容都不会应用到该会话。1320当您在会话中使用 `/resume` 切换对话时,切换操作则会等待 hook 完成。如果您在后台 hook 仍在运行时运行 `/clear` 或切换到其他对话,它们返回的任何内容都不会应用到该会话。


1583 1577 

1584除使用 [`async: true`](#run-hooks-in-the-background) 运行的命令 hook 外,达到超时的 `UserPromptSubmit` 命令、HTTP 或 MCP 工具 hook 会被取消,其输出(包括任何 `additionalContext`)会被丢弃。提示词仍会传达给 Claude,但不带该上下文。若要改为阻止提示词,请在命令或 HTTP hook 上设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。会话记录会显示一条通知,指明该 hook、触发的超时,以及输出已被丢弃。1578除使用 [`async: true`](#run-hooks-in-the-background) 运行的命令 hook 外,达到超时的 `UserPromptSubmit` 命令、HTTP 或 MCP 工具 hook 会被取消,其输出(包括任何 `additionalContext`)会被丢弃。提示词仍会传达给 Claude,但不带该上下文。若要改为阻止提示词,请在命令或 HTTP hook 上设置 [`onFailure: "block"`](#block-the-action-when-a-hook-fails)。会话记录会显示一条通知,指明该 hook、触发的超时,以及输出已被丢弃。

1585 1579 

1586`UserPromptSubmit` 上的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 达到超时时,会阻止该提示词,并显示一条指明该 hook 和超时的消息,因为此处的回调可能充当不能以失败放行方式处理的策略关卡。会话会继续。在 v2.1.208 之前,该事件上的回调超时会以执行错误结束该轮次。1580`UserPromptSubmit` 上的 [Agent SDK 回调 hook](/docs/zh-CN/agent-sdk/hooks) 达到超时时,会以一条指明该 hook 和超时的消息阻止提示词,因为此处的回调可能充当策略关卡,不能在失败时放行。会话会继续。

1587 1581 

1588<h4 id="userpromptsubmit-input">1582<h4 id="userpromptsubmit-input">

1589 UserPromptSubmit 输入1583 UserPromptSubmit 输入


2058 2052 

2059| 字段 | 类型 | 示例 | 说明 |2053| 字段 | 类型 | 示例 | 说明 |

2060| :- | :- | :- | :- |2054| :- | :- | :- | :- |

2061| `status` | string | `"completed"` | 前台子代理为 `"completed"`,后台子代理为 `"async_launched"`。子代理默认在后台运行,因此省略 `run_in_background` 的 Agent 调用也会产生 `"async_launched"` |2055| `status` | string | `"completed"` | 前台子代理为 `"completed"`,后台子代理为 `"async_launched"`。有关哪些子代理以哪种方式运行,请参阅[在前台或后台运行子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background) |

2062| `agentId` | string | `"a4d2c8f1e0b3a297"` | 子代理运行的标识符 |2056| `agentId` | string | `"a4d2c8f1e0b3a297"` | 子代理运行的标识符 |

2063| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | 子代理的最终文本块;对于通过 `SubagentHandback` 提交报告的子代理,则代之以一条关于该移交的简短说明 |2057| `content` | array | `[{"type": "text", "text": "Found 12 endpoints..."}]` | 子代理的最终文本块;对于通过 `SubagentHandback` 提交报告的子代理,则代之以一条关于该移交的简短说明 |

2064| `resolvedModel` | string | `"claude-sonnet-4-5"` | 子代理启动时使用的模型,可能与请求的模型不同 |2058| `resolvedModel` | string | `"claude-sonnet-4-5"` | 子代理启动时使用的模型,可能与请求的模型不同 |

2065| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | 按顺序使用的模型,连续重复项会合并;仅当运行中途切换了模型时设置。需要 Claude Code v2.1.212 或更高版本 |2059| `modelsUsed` | array | `["claude-sonnet-4-5", "claude-haiku-4-5"]` | 按顺序使用的模型,连续重复项会被合并;仅在运行中途切换了模型时设置 |

2066| `totalTokens` | number | `12450` | 子代理最后一次 API 请求的 token 数:输入、输出和缓存 token 的总和。这不是整个运行的总数 |2060| `totalTokens` | number | `12450` | 子代理最后一次 API 请求的 token 数:输入、输出和缓存 token 的总和。这不是整个运行的总数 |

2067| `totalDurationMs` | number | `48211` | 子代理运行的实际耗时 |2061| `totalDurationMs` | number | `48211` | 子代理运行的实际耗时 |

2068| `totalToolUseCount` | number | `7` | 子代理进行的工具调用次数 |2062| `totalToolUseCount` | number | `7` | 子代理进行的工具调用次数 |


2072 2066 

2073对于后台子代理,工具会在任务移到后台时返回,因此 `tool_response` 不携带用量字段:后台启动会立即返回,而 Claude Code 在运行中途移到后台的前台任务会在该转换时返回。它包含 `status: "async_launched"`、`agentId`、`description`、`prompt`、`outputFile` 和 `resolvedModel`。2067对于后台子代理,工具会在任务移到后台时返回,因此 `tool_response` 不携带用量字段:后台启动会立即返回,而 Claude Code 在运行中途移到后台的前台任务会在该转换时返回。它包含 `status: "async_launched"`、`agentId`、`description`、`prompt`、`outputFile` 和 `resolvedModel`。

2074 2068 

2075在 `completed` 响应中,`resolvedModel` 指明子代理启动时使用的模型,它可能与 `tool_input` 中的 `model` 值不同,例如当 `availableModels` 或其他覆盖生效时。在 `async_launched` 响应中,`resolvedModel` 指明 Agent 移到后台时正在使用的模型,因此在移到后台之前发生的切换会反映在其中。`modelsUsed` 以及移到后台时的 `resolvedModel` 行为需要 Claude Code v2.1.212 或更高版本。2069在 `completed` 响应中,`resolvedModel` 指明子代理启动时使用的模型,该模型可能与 `tool_input` 中的 `model` 值不同,例如当 `availableModels` 或其他覆盖生效时。在 `async_launched` 响应中,`resolvedModel` 指明 Agent 转入后台时正在使用的模型,因此在转入后台之前发生的切换会反映在其中。

2076 2070 

2077<a id="askuserquestion" />2071<a id="askuserquestion" />

2078 2072 


2120 2114 

2121当 hook 返回 `"ask"` 时,显示给用户的权限提示会包含一个标签,标明该 hook 的来源:来自任何设置文件或 Agent frontmatter 的 hook 为 `[settings]`,插件的 hook 为 `[plugin:<name>]`,来自 skill frontmatter 的 hook 为 `[skill]`。这有助于用户了解是哪个配置来源在请求确认。2115当 hook 返回 `"ask"` 时,显示给用户的权限提示会包含一个标签,标明该 hook 的来源:来自任何设置文件或 Agent frontmatter 的 hook 为 `[settings]`,插件的 hook 为 `[plugin:<name>]`,来自 skill frontmatter 的 hook 为 `[skill]`。这有助于用户了解是哪个配置来源在请求确认。

2122 2116 

2123hook 的 `"ask"` 在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)下也会强制显示权限提示:分类器仍可以拒绝该工具调用,但无法静默批准该调用。在 v2.1.211 之前,分类器可以在不显示 hook 所请求提示的情况下,批准在[沙箱](/docs/zh-CN/sandboxing)外运行的 Bash 命令;分类器仍会对该命令应用其自身的安全规则,且 hook 的 `"deny"` 始终会被遵守。2117在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)下,hook 的 `"ask"` 也会强制显示权限提示:分类器仍然可以拒绝该工具调用,但无法静默批准该调用。

2124 2118 

2125```json theme={null}2119```json theme={null}

2126{2120{


3695| `source` | string | 请求的来源:`"command"` 表示 `/model <name>`、`/config` 中的 Model 设置或启用快速模式;`"picker"` 表示模型选择器;`"sdk"` 表示来自 Agent SDK 宿主或 Remote Control 的 `set_model` 请求,或 `apply_flag_settings` 请求中的模型更改 |3689| `source` | string | 请求的来源:`"command"` 表示 `/model <name>`、`/config` 中的 Model 设置或启用快速模式;`"picker"` 表示模型选择器;`"sdk"` 表示来自 Agent SDK 宿主或 Remote Control 的 `set_model` 请求,或 `apply_flag_settings` 请求中的模型更改 |

3696| `context_tokens` | number | 下一个请求作为提示词重新发送的 token 数:主对话中最后一次响应的输入、缓存读取、缓存创建和输出 token 的总和。在第一次响应之前为 `0` |3690| `context_tokens` | number | 下一个请求作为提示词重新发送的 token 数:主对话中最后一次响应的输入、缓存读取、缓存创建和输出 token 的总和。在第一次响应之前为 `0` |

3697| `prompt_cache_warm` | boolean | 当前模型的提示缓存是否可能仍处于预热状态,即切换会使其失效 |3691| `prompt_cache_warm` | boolean | 当前模型的提示缓存是否可能仍处于预热状态,即切换会使其失效 |

3698| `cache_ttl` | string | Claude Code 为此会话请求的[提示缓存生命周期](/docs/zh-CN/prompt-caching#cache-lifetime):`"5m"` 或 `"1h"` |3692| `cache_ttl` | string | 本次切换时主对话的[提示缓存生命周期](/docs/zh-CN/prompt-caching#cache-lifetime):`"5m"` 或 `"1h"` |

3699| `estimated_cache_write_usd` | number | 按 `cache_ttl` 费率在 `to_model` 上将 `context_tokens` 写入提示缓存的估算成本(美元),不包括下一次响应。服务器可能不需要重新缓存整个上下文,因此请将其视为估算值 |3693| `estimated_cache_write_usd` | number | 按 `cache_ttl` 费率在 `to_model` 上将 `context_tokens` 写入提示缓存的估算成本(美元),不包括下一次响应。服务器可能不需要重新缓存整个上下文,因此请将其视为估算值 |

3700| `pricing` | string | Claude Code 如何为 `estimated_cache_write_usd` 定价:`"configured"` 表示在您的组织已配置自有费率时按该费率计算,`"catalog"` 表示按标价计算,`"default"` 表示 `to_model` 没有已知价格,Claude Code 假定了默认费率 |3694| `pricing` | string | Claude Code 如何为 `estimated_cache_write_usd` 定价:`"configured"` 表示在您的组织已配置自有费率时按该费率计算,`"catalog"` 表示按标价计算,`"default"` 表示 `to_model` 没有已知价格,Claude Code 假定了默认费率 |

3701 3695 


3756 3750 

3757在超时之前未响应的 PreModelSwitch hook 会阻止切换。此事件的默认超时时间为 30 秒。3751在超时之前未响应的 PreModelSwitch hook 会阻止切换。此事件的默认超时时间为 30 秒。

3758 3752 

3759有关 0 或 2 以外的退出码的作用,请参阅[其他退出码](#other-exit-codes)。3753除 0 或 2 之外、且没有有效 JSON 输出的退出码属于[非阻止性错误](#other-exit-codes),因此切换会继续进行,但[其失败会阻止操作](#block-the-action-when-a-hook-fails)的 hook 除外。

3760 3754 

3761<h3 id="postmodelswitch">3755<h3 id="postmodelswitch">

3762 PostModelSwitch3756 PostModelSwitch


4273`ok: false` 时发生的情况取决于事件:4267`ok: false` 时发生的情况取决于事件:

4274 4268 

4275* `Stop` 和 `SubagentStop`:原因被反馈给 Claude 作为其下一条指令,转轮继续,除非响应也设置 `impossible: true`,在这种情况下 Claude Code 允许停止,转轮结束4269* `Stop` 和 `SubagentStop`:原因被反馈给 Claude 作为其下一条指令,转轮继续,除非响应也设置 `impossible: true`,在这种情况下 Claude Code 允许停止,转轮结束

4276* `PreToolUse`:工具调用被拒绝;默认情况下转轮结束,拒绝原因在聊天中显示为警告行。设置 `continueOnBlock: true` 以改为将原因返回给 Claude 作为工具错误,以便它可以调整并继续,等同于命令 hook 的 `permissionDecision: "deny"`。在 v2.1.210 之前,拒绝原因被返回给 Claude 作为工具错误,转轮继续4270* `PreToolUse`:工具调用被拒绝;默认情况下轮次结束,拒绝原因在聊天中显示为警告行。设置 `continueOnBlock: true` 以改为将原因返回给 Claude 作为工具错误,以便它可以调整并继续,等同于命令 hook 的 `permissionDecision: "deny"`

4277* `PostToolUse`:默认情况下转轮结束,原因在聊天中显示为警告行。设置 `continueOnBlock: true` 以将原因反馈给 Claude 并继续转轮4271* `PostToolUse`:默认情况下转轮结束,原因在聊天中显示为警告行。设置 `continueOnBlock: true` 以将原因反馈给 Claude 并继续转轮

4278* `PostToolBatch`、`UserPromptSubmit` 和 `UserPromptExpansion`:转轮结束,原因显示为警告行。这些事件在 `decision: "block"` 上结束转轮,无论 `continue` 如何4272* `PostToolBatch`、`UserPromptSubmit` 和 `UserPromptExpansion`:转轮结束,原因显示为警告行。这些事件在 `decision: "block"` 上结束转轮,无论 `continue` 如何

4279* `PostToolUseFailure` 和 `TaskCreated`:原因作为工具错误返回给 Claude,转轮继续,无论 `continueOnBlock` 如何4273* `PostToolUseFailure` 和 `TaskCreated`:原因作为工具错误返回给 Claude,转轮继续,无论 `continueOnBlock` 如何

hooks-guide.md +22 −27

Details

497 Hooks 如何工作497 Hooks 如何工作

498</h2>498</h2>

499 499 

500Claude Code 在其生命周期中的特定点触发 hook 事件。当事件触发时,所有匹配的 hooks 并行运行;有关重复处理程序如何处理的信息,请参阅 [Hook 处理程序字段](/docs/zh-CN/hooks#hook-handler-fields)。下表显示每个事件及其触发时间:500Claude Code 在其生命周期中的特定点触发 hook 事件。当事件触发时,Claude Code 会并行运行所有匹配的 hook;有关重复处理程序如何处理的信息,请参阅 [Hook 处理程序字段](/docs/zh-CN/hooks#hook-handler-fields)。下表显示每个事件及其触发时间:

501 501 

502| 事件 | 触发时机 |502| 事件 | 触发时机 |

503| :- | :- |503| :- | :- |


627exit 0 # exit 0 = no decision; the normal permission flow applies627exit 0 # exit 0 = no decision; the normal permission flow applies

628```628```

629 629 

630退出代码确定接下来会发生什么:630当退出码既不是 0 也不是 2,且没有有效的 JSON 输出时,对于大多数事件,操作会继续进行,除非该 hook 属于 [失败时会阻止操作](/docs/zh-CN/hooks#block-the-action-when-a-hook-fails) 的 hook。将 `onFailure` 设置为 `"block"` 的 hook 就是一个例子。以 0 退出表示没有异议,以 2 退出则阻止操作:

631 631 

632* **退出 0**:你的 hook 通过其退出代码报告没有异议。632* **退出 0**:如果从 `PreToolUse` hook 以 0 退出,工具调用仍会经过正常的 [权限流程](/docs/zh-CN/permissions),因为退出 0 并不会批准它。对于 `UserPromptSubmit`、`UserPromptExpansion`、`SessionStart` 和 `PostModelSwitch` hook,Claude Code 会将其 [视为纯文本](/docs/zh-CN/hooks#exit-code-0) 的 stdout 添加到 Claude 的上下文中。

633 * 对于 `PreToolUse` hook,这不会批准工具调用:正常的 [权限流程](/docs/zh-CN/permissions) 仍然适用。633* **退出 2**:将原因写入 stderr。根据事件的不同,Claude 会将其作为反馈接收以便进行调整,或者向用户显示,或者不显示任何消息(如 `ConfigChange` 和 `Elicitation`)。某些事件无法被阻止:对于 `SessionStart` 等事件,退出 2 会向用户显示 stderr,并继续执行。有关完整列表,请参阅 [每个事件的退出码 2 行为](/docs/zh-CN/hooks#exit-code-2-behavior-per-event)。

634 * 对于 `UserPromptSubmit`、`UserPromptExpansion`、`SessionStart` 和 `PostModelSwitch` hooks,Claude Code 将 stdout [视为纯文本](/docs/zh-CN/hooks#exit-code-0) 添加到 Claude 的上下文中。634* **任何其他退出码**:有关每个事件的例外情况(例如 `WorktreeCreate` 在任何非零退出时都会失败),请参阅 [退出码输出](/docs/zh-CN/hooks#exit-code-output)。对于其他事件,除非该 hook 属于失败时会阻止操作的 hook,否则请根据 hook 打印到 stdout 的内容找到对应的情况:

635* **退出 2**:Claude Code 阻止操作。写入原因到 stderr。它的去向取决于事件:某些事件将其反馈给 Claude,以便它可以调整,其他事件向用户显示它,还有一些(如 `ConfigChange` 和 `Elicitation`)不显示任何消息。某些事件无法被阻止:对于 `SessionStart` 和其他事件,退出 2 向用户显示 stderr,执行继续。有关每个事件的退出代码 2 行为的完整列表,请参阅 [每个事件的退出代码 2 行为](/docs/zh-CN/hooks#exit-code-2-behavior-per-event)。635 * 通过 schema 验证的已解析对象:Claude Code 忽略退出码,仅由 JSON 决定结果,hook 不会被报告为错误。

636* **任何其他退出码**:对于大多数事件,操作会作为 [非阻止错误](/docs/zh-CN/hooks#exit-code-output) 继续进行,除非该 hook 属于 [失败时会阻止操作](/docs/zh-CN/hooks#block-the-action-when-a-hook-fails) 的 hook,或其 JSON 输出通过了验证:636 * 未通过 schema 验证的已解析对象,或 Claude Code [尝试解析为 JSON](/docs/zh-CN/hooks#exit-code-0) 但不是有效 JSON 的 stdout:操作作为非阻止错误继续进行。请查看 `<hook name> hook error` 通知中的验证或解析消息。

637 * 通过 schema 验证的已解析对象:Claude Code 忽略退出码,仅由 JSON 决定结果,hook 不会被报告为错误。每个事件的例外(如 `WorktreeCreate` 在任何非零退出时失败)列在参考的 [退出码输出](/docs/zh-CN/hooks#exit-code-output) 部分中。

638 * 未通过 schema 验证的已解析对象,或 Claude Code [尝试解析为 JSON](/docs/zh-CN/hooks#exit-code-0) 但不是有效 JSON 的 stdout:非阻止错误;通知包含验证或解析消息。

639 * Claude Code [视为纯文本](/docs/zh-CN/hooks#exit-code-0) 的 stdout,或空 stdout:操作作为非阻止错误继续进行。会话记录显示 `<hook name> hook error` 通知,然后是 stderr 的第一行,前缀为 `Failed with non-blocking status code:`。要捕获完整的 stderr,请使用 `claude --debug` 或在会话中运行 `/debug` 启用 [调试日志](/docs/zh-CN/hooks#debug-hooks)。637 * Claude Code [视为纯文本](/docs/zh-CN/hooks#exit-code-0) 的 stdout,或空 stdout:操作作为非阻止错误继续进行。会话记录显示 `<hook name> hook error` 通知,然后是 stderr 的第一行,前缀为 `Failed with non-blocking status code:`。要捕获完整的 stderr,请使用 `claude --debug` 或在会话中运行 `/debug` 启用 [调试日志](/docs/zh-CN/hooks#debug-hooks)。

640 638 

641<h4 id="structured-json-output">639<h4 id="structured-json-output">


662 660 

663使用 `"deny"`,Claude Code 取消工具调用并将 `permissionDecisionReason` 反馈给 Claude。661使用 `"deny"`,Claude Code 取消工具调用并将 `permissionDecisionReason` 反馈给 Claude。

664 662 

665在 `PreToolUse` 上,Claude Code 处理每个 `permissionDecision` 值如下:663在 `PreToolUse` 上,还可以返回 `"ask"` 以向用户显示正常的权限提示,或返回 `"allow"` 以跳过交互式权限提示。使用 `"allow"` 时,拒绝和询问规则(包括企业托管拒绝列表)仍然适用,以下情况的提示也仍然适用:

666 664 

667* `"allow"`:跳过交互式权限提示。拒绝和询问规则(包括企业托管拒绝列表)仍然适用,以下情况的提示也仍然适用:665* 从 [网络路径](/docs/zh-CN/permissions#network-paths) 读取

668 666* 标记为 [`requiresUserInteraction`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具

669 * 从 [网络路径](/docs/zh-CN/permissions#network-paths) 读取667* 在该设置到达 Claude Code 的会话中,[您的组织设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具

670 * 标记为 [`requiresUserInteraction`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具

671 * 在该设置到达 Claude Code 的会话中,[您的组织设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具

672 668 

673 有关 `"allow"` 在计划模式下的作用,请参阅 [计划模式下的 hook 批准](/docs/zh-CN/permissions#hook-approvals-in-plan-mode)。669 有关 `"allow"` 在计划模式下的作用,请参阅 [计划模式下的 hook 批准](/docs/zh-CN/permissions#hook-approvals-in-plan-mode)。

674* `"deny"`:取消工具调用并将原因发送给 Claude

675* `"ask"`:照常向用户显示权限提示

676 670 

677第四个值 `"defer"` 在 [非交互模式](/docs/zh-CN/headless) 中使用 `-p` 标志时可用。它以保留的工具调用退出进程,以便 Agent SDK 包装器可以收集输入并恢复。请参阅参考中的 [延迟工具调用以供稍后使用](/docs/zh-CN/hooks#defer-a-tool-call-for-later)。671第四个值 `"defer"` 在 [非交互模式](/docs/zh-CN/headless) 中使用 `-p` 标志时可用。它以保留的工具调用退出进程,以便 Agent SDK 包装器可以收集输入并恢复。请参阅参考中的 [延迟工具调用以供稍后使用](/docs/zh-CN/hooks#defer-a-tool-call-for-later)。

678 672 


892 886 

893* `"ok": true`:操作继续887* `"ok": true`:操作继续

894* `"ok": false`:发生的情况取决于事件:888* `"ok": false`:发生的情况取决于事件:

895 * `Stop` 和 `SubagentStop`:`reason` 被反馈给 Claude,以便它继续工作,除非响应也设置 `"impossible": true` 来标记该条件为永远无法满足的条件,在这种情况下 Claude Code 允许停止并且回合结束889 * `Stop` 和 `SubagentStop`:`reason` 被反馈给 Claude,以便它继续工作,除非响应也设置 `"impossible": true` 来标记该条件为永远无法满足的条件,在这种情况下 Claude Code 允许停止并且该轮次结束

896 * `PreToolUse`:工具调用被拒绝;默认情况下回合结束,拒绝 `reason` 在聊天中显示为警告行。在 hook 上设置 `continueOnBlock: true` 以改为将 `reason` 作为工具错误返回给 Claude,以便它可以调整并继续。在 v2.1.210 之前,拒绝 `reason` 被作为工具错误返回给 Claude,回合继续890 * `PreToolUse`:工具调用被拒绝;默认情况下该轮次结束,拒绝 `reason` 在聊天中显示为警告行。在 hook 上设置 `continueOnBlock: true` 以改为将 `reason` 作为工具错误返回给 Claude,以便它可以调整并继续

897 * `PostToolUse`:默认情况下回合结束,`reason` 在聊天中显示为警告行。设置 `continueOnBlock: true` 以将 `reason` 反馈给 Claude 并继续回合891 * `PostToolUse`:默认情况下该轮次结束,`reason` 在聊天中显示为警告行。设置 `continueOnBlock: true` 以将 `reason` 反馈给 Claude 并继续该轮次

898 * `PostToolBatch`、`UserPromptSubmit` 和 `UserPromptExpansion`:回合结束,`reason` 在聊天中显示为警告行892 * `PostToolBatch`、`UserPromptSubmit` 和 `UserPromptExpansion`:该轮次结束,`reason` 在聊天中显示为警告行

899 893 

900此示例使用 `Stop` hook 询问模型是否所有请求的任务都已完成。如果模型返回 `"ok": false` 因为条件尚未满足,Claude 继续工作并使用 `reason` 作为其下一条指令:894此示例使用 `Stop` hook 询问模型是否所有请求的任务都已完成。如果模型返回 `"ok": false` 因为条件尚未满足,Claude 继续工作并使用 `reason` 作为其下一条指令:

901 895 


1019 Hooks 和权限模式1013 Hooks 和权限模式

1020</h3>1014</h3>

1021 1015 

1022`PreToolUse` hooks 在任何权限模式检查之前触发,在每个[权限模式](/docs/zh-CN/permission-modes)中,包括 `dontAsk`。返回 `permissionDecision: "deny"` 的 hook 会阻止工具,即使在 `bypassPermissions` 模式或使用 `--dangerously-skip-permissions` 时也是如此。这让你强制执行用户无法通过更改其权限模式来绕过的策略。1016通过设置文件或插件的 `hooks/hooks.json` 中的 hook,您无法将限制放宽到超出权限规则允许的范围,而 hook 的 `"deny"` 在每种权限模式下都有效:

1023 

1024反过来则不成立:设置文件和插件的 `hooks/hooks.json` 中的 hook 可以收紧限制,但不能放宽到超出权限规则允许的范围。返回 `"allow"` 的 hook 不会绕过设置中的拒绝规则,并且在以下情况下也无法抑制提示:

1025 1017 

1026* 从[网络路径](/docs/zh-CN/permissions#network-paths)读取1018* **对 `"allow"` 仍然有效的限制**:返回 `"allow"` 的 hook 不会绕过设置中的拒绝规则,并且在以下情况下也无法抑制提示:

1027* 标记为 [`requiresUserInteraction`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具1019 * 从[网络路径](/docs/zh-CN/permissions#network-paths)读取

1028* 在该设置会传达到 Claude Code 的会话中,[您的组织设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具1020 * 标记为 [`requiresUserInteraction`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具

1021 * 在该设置会传达到 Claude Code 的会话中,[您的组织设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具

1029 1022 

1030在[计划模式](/docs/zh-CN/permissions#hook-approvals-in-plan-mode)中,如果您的 `PreToolUse` hook 对文件编辑返回 `"allow"`,您得到的提示、阻止或批准与没有 hook 时该编辑所得到的相同。要解除对 hook 批准的这一限制,请[批准计划](/docs/zh-CN/permission-modes#review-and-approve-a-plan)或切换到其他权限模式。1023在[计划模式](/docs/zh-CN/permissions#hook-approvals-in-plan-mode)中,如果您的 `PreToolUse` hook 对文件编辑返回 `"allow"`,您得到的提示、阻止或批准与没有 hook 时该编辑所得到的相同。要解除对 hook 批准的这一限制,请[批准计划](/docs/zh-CN/permission-modes#review-and-approve-a-plan)或切换到其他权限模式。

1031 1024 

1025* **`"deny"` 在每种权限模式下都有效**:返回 `permissionDecision: "deny"` 的 hook 会阻止工具,即使在 `bypassPermissions` 模式或使用 `--dangerously-skip-permissions` 时也是如此。`PreToolUse` hook 在任何权限模式检查之前触发,在每个[权限模式](/docs/zh-CN/permission-modes)中,包括 `dontAsk`。这让您能够强制执行用户无法通过更改其权限模式来绕过的策略。

1026 

1032您安装的处理 `tool.check` 的 [mod](/docs/zh-CN/plugins/mods/overview) 可以批准被您的 `PreToolUse` hook 阻止的调用,除非该 hook 位于托管设置中。在计划模式中,当此类调用为只读时,mod 可以批准它,但不能批准文件编辑或其他非只读调用。[使用 hooks 扩展权限](/docs/zh-CN/permissions#extend-permissions-with-hooks)列出了哪些规则优先于 mod。1027您安装的处理 `tool.check` 的 [mod](/docs/zh-CN/plugins/mods/overview) 可以批准被您的 `PreToolUse` hook 阻止的调用,除非该 hook 位于托管设置中。在计划模式中,当此类调用为只读时,mod 可以批准它,但不能批准文件编辑或其他非只读调用。[使用 hooks 扩展权限](/docs/zh-CN/permissions#extend-permissions-with-hooks)列出了哪些规则优先于 mod。

1033 1028 

1034<h3 id="hook-not-firing">1029<h3 id="hook-not-firing">

Details

183 重新映射 INSERT 模式快捷键序列183 重新映射 INSERT 模式快捷键序列

184</h3>184</h3>

185 185 

186[`vimInsertModeRemaps`](/docs/zh-CN/settings-reference#viminsertmoderemaps) 设置将两个按键的 INSERT 模式序列映射到 Escape,因此像 `jj` 这样的映射会让你返回 NORMAL 模式。需要 Claude Code v2.1.208 或更高版本。186[`vimInsertModeRemaps`](/docs/zh-CN/settings-reference#viminsertmoderemaps) 设置将两个按键的 INSERT 模式序列映射到 Escape,因此像 `jj` 这样的映射会让您返回 NORMAL 模式。

187 187 

188以下 `~/.claude/settings.json` 示例打开 vim 模式并将 `jj` 映射到 Escape:188以下 `~/.claude/settings.json` 示例打开 vim 模式并将 `jj` 映射到 Escape:

189 189 


248| `cc` | 更改行 |248| `cc` | 更改行 |

249| `C` | 更改到行尾 |249| `C` | 更改到行尾 |

250| `cw`/`ce`/`cb` | 更改单词/到末尾/向后 |250| `cw`/`ce`/`cb` | 更改单词/到末尾/向后 |

251| `s` | 替换字符:删除光标下的字符并进入 INSERT 模式。需要 Claude Code v2.1.211 或更高版本 |251| `s` | 替换字符:删除光标下的字符并进入 INSERT 模式 |

252| `S` | 替换行:清除行并进入 INSERT 模式。需要 Claude Code v2.1.211 或更高版本 |252| `S` | 替换行:清除行并进入 INSERT 模式 |

253| `yy`/`Y` | 复制行 |253| `yy`/`Y` | 复制行 |

254| `yw`/`ye`/`yb` | 复制单词/到末尾/向后 |254| `yw`/`ye`/`yb` | 复制单词/到末尾/向后 |

255| `p` | 在光标后粘贴 |255| `p` | 在光标后粘贴 |


471* 在对话的第一轮之后,在某些会话中471* 在对话的第一轮之后,在某些会话中

472* 前一个响应以错误结束472* 前一个响应以错误结束

473* 当你处于 Plan Mode 时473* 当你处于 Plan Mode 时

474* 你的账户接近或已达到使用限制。要在达到限制之前保持建议开启,请将 [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](/docs/zh-CN/env-vars) 设置为 `true`。在 v2.1.238 之前,Claude Code 即使将变量设置为 `true` 也会在接近限制时跳过建议474* 您的账户接近或已达到用量限制。要使此跳过在达到限制之前不生效,请将 [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](/docs/zh-CN/env-vars) 设置为 `true`。在 v2.1.238 之前,即使将该变量设置为 `true`,Claude Code 也会在接近限制时跳过建议

475* 在[代理团队](/docs/zh-CN/agent-teams)中,默认情况下在队友的会话中。主导的会话显示建议475* 在[代理团队](/docs/zh-CN/agent-teams)中,默认情况下在队友的会话中。主导的会话显示建议

476 476 

477提示 `Showing fewer prompt suggestions · use one to bring them back` 表示由于您连续多次未使用建议,Claude Code 正在降低显示建议的频率。要恢复正常频率,请使用一个建议,或将 [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](/docs/zh-CN/env-vars) 设置为 `true`。477提示 `Showing fewer prompt suggestions · use one to bring them back` 表示由于您连续多次未使用建议,Claude Code 正在降低显示建议的频率。要恢复正常频率,请使用一个建议,或将 [`CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION`](/docs/zh-CN/env-vars) 设置为 `true`。


759 759 

760你最新的五个之前的附加问题以暗淡的列表形式出现在当前答案上方,并显示任何较旧问题的计数。它们不会进入对话历史记录。760你最新的五个之前的附加问题以暗淡的列表形式出现在当前答案上方,并显示任何较旧问题的计数。它们不会进入对话历史记录。

761 761 

762要在关闭覆盖层后返回到它,运行不带问题的 `/btw`。覆盖层在你最近的交换处重新打开。在 v2.1.212 之前,不带问题的 `/btw` 会打印使用消息。762要在关闭覆盖层后返回到它,运行不带问题的 `/btw`。覆盖层在您最近的交换处重新打开。

763 763 

764答案出现后,覆盖层接受这些按键。764答案出现后,覆盖层接受这些按键。

765 765 

keybindings.md +3 −4

Details

462| `abovePrompt:highlightNext` | Down | 在获得焦点的选择框中突出显示下一个选项 |462| `abovePrompt:highlightNext` | Down | 在获得焦点的选择框中突出显示下一个选项 |

463| `abovePrompt:highlightPrevious` | Up | 在获得焦点的选择框中突出显示上一个选项 |463| `abovePrompt:highlightPrevious` | Up | 在获得焦点的选择框中突出显示上一个选项 |

464 464 

465有两个上下文默认将更多键绑定到这些操作:465在 [`AbovePrompt` 上下文](#contexts) 中,Right 和 Left 默认也会运行 `abovePrompt:next` 和 `abovePrompt:previous`,Space 也会运行 `abovePrompt:press`。

466 

467* **`AbovePrompt`**:Right 和 Left 也会运行 `abovePrompt:next` 和 `abovePrompt:previous`,Space 也会运行 `abovePrompt:press`

468* **`AbovePromptInput`**:Down 和 Up 也会运行 `abovePrompt:next` 和 `abovePrompt:previous`

469 466 

470`AbovePrompt` 上下文还将 Up、Down、PageUp、PageDown、Home 和 End 绑定到 [窗格滚动操作](#pane-actions) `pane:scrollUp` 至 `pane:bottom`,因此要为该区域更改其中某个键,请在 `AbovePrompt` 块中绑定相应的滚动操作。467`AbovePrompt` 上下文还将 Up、Down、PageUp、PageDown、Home 和 End 绑定到 [窗格滚动操作](#pane-actions) `pane:scrollUp` 至 `pane:bottom`,因此要为该区域更改其中某个键,请在 `AbovePrompt` 块中绑定相应的滚动操作。

471 468 


769* 在 vim NORMAL 模式中,`?` 显示帮助菜单(vim 行为)766* 在 vim NORMAL 模式中,`?` 显示帮助菜单(vim 行为)

770* 在 vim NORMAL 模式中,`/` 打开历史搜索,与标准模式中的 Ctrl+R 相同767* 在 vim NORMAL 模式中,`/` 打开历史搜索,与标准模式中的 Ctrl+R 相同

771 768 

769在 Claude 提出的问题的 `Other` 行中,vim 模式下按 Escape 不会立即取消该问题。除[屏幕阅读器模式](/docs/zh-CN/accessibility)外,每次聚焦该行时,它都会以 INSERT 模式开始。在 `Other` 行中按 Escape 时,该行会切换到 NORMAL 模式或丢弃输入到一半的 vim 命令,问题仍保持打开状态。在 NORMAL 模式下再次按 Escape 即可取消该问题。

770 

772<h2 id="validation">771<h2 id="validation">

773 验证772 验证

774</h2>773</h2>

mcp.md +5 −5

Details

324* 对于本地、项目或用户 [作用域](#mcp-installation-scopes) 中的服务器或托管 MCP 配置中的服务器,来源显示该配置中写入的主机,因此主机中的 `${VAR}` 引用在消息中不会展开。324* 对于本地、项目或用户 [作用域](#mcp-installation-scopes) 中的服务器或托管 MCP 配置中的服务器,来源显示该配置中写入的主机,因此主机中的 `${VAR}` 引用在消息中不会展开。

325* 对于没有状态或错误代码的失败,Claude Code 显示错误文本而不显示来源。325* 对于没有状态或错误代码的失败,Claude Code 显示错误文本而不显示来源。

326 326 

327配置为空 `url` 的远程服务器在 `/mcp`、`claude mcp list` 和 [`/plugin`](/docs/zh-CN/plugins/install) 管理器中显示为 `not configured`,Claude Code 不尝试连接到它。插件可以包含这样的占位符条目,用于您稍后配置的连接器,因此 Claude Code 不将其报告为错误或设置问题。`/mcp` 中的服务器详情视图显示 `No URL configured for this server`;设置条目的 `url` 以连接它。在 v2.1.208 之前,Claude Code 将空 `url` 报告为配置问题,并提示重新连接。327配置为空 `url` 的远程服务器在 `/mcp`、`claude mcp list` 和 [`/plugin`](/docs/zh-CN/plugins/install) 管理器中显示为 `not configured`,Claude Code 不尝试连接到它。插件可以包含这样的占位符条目,用于您稍后配置的连接器,因此 Claude Code 不将其报告为错误或设置问题。`/mcp` 中的服务器详情视图显示 `No URL configured for this server`;设置条目的 `url` 以连接它。

328 328 

329<h4 id="configuration-warnings">329<h4 id="configuration-warnings">

330 配置警告330 配置警告


403* **在交互式终端会话中**,Claude Code 从该服务器获取更新后的列表,因此您无需重新连接它。403* **在交互式终端会话中**,Claude Code 从该服务器获取更新后的列表,因此您无需重新连接它。

404* **在使用 `-p` 标志的 [非交互模式](/docs/zh-CN/headless) 和 [Agent SDK](/docs/zh-CN/agent-sdk/overview) 中**,Claude Code 在收到这些通知时仅刷新工具列表。404* **在使用 `-p` 标志的 [非交互模式](/docs/zh-CN/headless) 和 [Agent SDK](/docs/zh-CN/agent-sdk/overview) 中**,Claude Code 在收到这些通知时仅刷新工具列表。

405 405 

406如果刷新请求失败,Claude Code 保留服务器之前发现的工具、提示词和资源,直到稍后的刷新成功。在 v2.1.214 之前,刷新期间的瞬时错误将服务器的工具、提示词和资源替换为空列表。406如果刷新请求失败,Claude Code 保留服务器之前发现的工具、提示词和资源,直到稍后的刷新成功。

407 407 

408<h4 id="notification-streams-on-the-v2-runtime">408<h4 id="notification-streams-on-the-v2-runtime">

409 v2 运行时上的通知流409 v2 运行时上的通知流


502 长工具调用的自动后台处理502 长工具调用的自动后台处理

503</h3>503</h3>

504 504 

505主对话中的 MCP 工具调用在两分钟后仍在运行时会移到后台任务,而不是阻塞会话。Claude 立即收到任务 ID 并继续工作,结果在调用完成时作为任务通知到达。自动后台处理需要 Claude Code v2.1.212 或更高版本。505主对话中的 MCP 工具调用在两分钟后仍在运行时会移到后台任务,而不是阻塞会话。Claude 立即收到任务 ID 并继续工作,结果在调用完成时作为任务通知到达。

506 506 

507任务出现在 [`/tasks`](/docs/zh-CN/commands#all-commands) 中,您也可以在其中停止它,退出会话后它不会保留。任务的条目显示服务器报告的最新进度。如果您停止任务,Claude Code 会取消调用并告知 Claude 不会有结果返回。停止并不保证服务器停止:服务器可能已经完成了部分工作,或者仍可能完成它。507任务出现在 [`/tasks`](/docs/zh-CN/commands#all-commands) 中,您也可以在其中停止它,退出会话后它不会保留。任务的条目显示服务器报告的最新进度。如果您停止任务,Claude Code 会取消调用并告知 Claude 不会有结果返回。停止并不保证服务器停止:服务器可能已经完成了部分工作,或者仍可能完成它。

508 508 


1301 Connectors 如何到达 Claude Code1301 Connectors 如何到达 Claude Code

1302</h3>1302</h3>

1303 1303 

1304哪些设置管理 claude.ai connector 取决于您的会话在哪里运行,因为只有某些会话从 claude.ai 本身获取 connectors。下表中的每一行命名 connectors 在一种会话中的到达方式以及在那里控制它们的内容。桌面应用的 [WSL 会话](/docs/zh-CN/desktop-wsl#what-works-in-a-wsl-session) 没有行,因为 connectors 在其中尚不可用。1304哪些设置管理 claude.ai 连接器取决于您的会话在哪里运行,因为只有某些会话从 claude.ai 本身获取连接器。下表中的每一行命名连接器在一种会话中的到达方式以及在那里控制它们的内容。桌面应用的 WSL 会话没有对应的行,因为连接器[仍在逐步向其推出](/docs/zh-CN/desktop-wsl#check-for-the-terminal-and-connectors)。

1305 1305 

1306| 会话运行的位置 | Connectors 如何到达 | 什么管理它们 |1306| 会话运行的位置 | Connectors 如何到达 | 什么管理它们 |

1307| :- | :- | :- |1307| :- | :- | :- |


1531 1531 

1532某些使用入口,例如 [Remote Control](/docs/zh-CN/remote-control) 和基于 [Agent SDK](/docs/zh-CN/agent-sdk/overview) 构建的应用程序,通常允许您通过一次点击来批准工具调用。对于使用此注解标记的工具,Claude Code 会禁用一次点击操作并显示工具的完整权限提示,因此批准仍然来自回答提示的人,而不是点击。1532某些使用入口,例如 [Remote Control](/docs/zh-CN/remote-control) 和基于 [Agent SDK](/docs/zh-CN/agent-sdk/overview) 构建的应用程序,通常允许您通过一次点击来批准工具调用。对于使用此注解标记的工具,Claude Code 会禁用一次点击操作并显示工具的完整权限提示,因此批准仍然来自回答提示的人,而不是点击。

1533 1533 

1534Claude Code 对任何只有终端对话框才能完整呈现的权限请求(例如带有安全警告或远程使用入口无法显示的始终允许选项的请求)也会以相同方式禁用一次点击批准。您需要在终端对话框中回答该请求,而不是从 Remote Control 中回答。需要 Claude Code v2.1.214 或更高版本。1534Claude Code 对任何只有终端对话框才能完整呈现的权限请求(例如带有安全警告或远程使用入口无法显示的始终允许选项的请求)也会以相同方式禁用一次点击批准。您需要在终端对话框中回答该请求,而不是从 Remote Control 中回答。

1535 1535 

1536<h2 id="respond-to-mcp-elicitation-requests">1536<h2 id="respond-to-mcp-elicitation-requests">

1537 响应 MCP 引出请求1537 响应 MCP 引出请求

memory.md +6 −6

Details

521* `.github/copilot-instructions.md` 中的 Copilot 规则521* `.github/copilot-instructions.md` 中的 Copilot 规则

522* 设置 `CLAUDE_CODE_NEW_INIT=1` 时:`AGENTS.md`、`.devin/rules/`、`.windsurf/rules/` 或 `.windsurfrules`,以及 `.clinerules`522* 设置 `CLAUDE_CODE_NEW_INIT=1` 时:`AGENTS.md`、`.devin/rules/`、`.windsurf/rules/` 或 `.windsurfrules`,以及 `.clinerules`

523 523 

524您也可以运行 [`/import`](/docs/zh-CN/commands) 将支持的编码代理的配置引入 Claude Code,这会将 `AGENTS.md` 等说明文件的一次性副本追加到匹配的 `CLAUDE.md`,并携带 MCP 服务器、命令、子代理和 skills。需要 Claude Code v2.1.213 或更高版本。524您也可以运行 [`/import`](/docs/zh-CN/commands) 将支持的编码 Agent 的配置引入 Claude Code,这会将 `AGENTS.md` 等说明文件的一次性副本追加到匹配的 `CLAUDE.md`,并携带 MCP 服务器、命令、子代理和 skill。

525 525 

526<h2 id="auto-memory">526<h2 id="auto-memory">

527 自动记忆527 自动记忆


587 587 

588```text theme={null}588```text theme={null}

589~/.claude/projects/<project>/memory/589~/.claude/projects/<project>/memory/

590├── MEMORY.md # 索引,每个记忆一行,加载到每个会话590├── MEMORY.md # Index, one line per memory, loaded into every session

591├── user_role.md # 一个记忆591├── user_role.md # One memory

592├── feedback_testing.md # 一个记忆592├── feedback_testing.md # One memory

593└── ... # Claude 创建的任何其他主题文件593└── ... # Any other topic files Claude creates

594```594```

595 595 

596`MEMORY.md` 充当记忆目录的索引。Claude 在你的会话中读取和写入此目录中的文件,使用 `MEMORY.md` 跟踪存储的内容。596`MEMORY.md` 充当记忆目录的索引。Claude 在你的会话中读取和写入此目录中的文件,使用 `MEMORY.md` 跟踪存储的内容。


615 615 

616Claude 在你的会话中读取和写入记忆文件。当你在 Claude Code 界面中看到"Saved 2 memories"或"Recalled 2 memories"之类的消息时,Claude 正在主动更新或读取 `~/.claude/projects/<project>/memory/`。616Claude 在你的会话中读取和写入记忆文件。当你在 Claude Code 界面中看到"Saved 2 memories"或"Recalled 2 memories"之类的消息时,Claude 正在主动更新或读取 `~/.claude/projects/<project>/memory/`。

617 617 

618当 Claude 写入以 YAML frontmatter 开头的记忆文件时,Claude Code 在 `modified` frontmatter 字段中记录写入时间为 ISO 8601 时间戳。时间戳显示事实有多新,对你和 Claude 读取记忆时都有用。任何有 frontmatter 的文件在 Claude 下次写入时都会获得该字段,包括在早期版本上创建的文件;Claude Code 永远不会向没有 frontmatter 的文件添加 frontmatter。`modified` 字段需要 Claude Code v2.1.214 或更高版本。618当 Claude 写入以 YAML frontmatter 开头的记忆文件时,Claude Code 在 `modified` frontmatter 字段中记录写入时间为 ISO 8601 时间戳。时间戳显示事实有多新,对您和 Claude 读取记忆时都有用。

619 619 

620<h3 id="audit-and-edit-your-memory">620<h3 id="audit-and-edit-your-memory">

621 审计和编辑你的记忆621 审计和编辑你的记忆

model-config.md +2 −1

Details

274* **skill 或命令覆盖**:Claude Code 忽略覆盖,包括被阻止的系列别名,skill 或命令在会话模型上运行。[在子代理中运行](/docs/zh-CN/skills#run-skills-in-a-subagent)的 skill 或命令遵循上面的子代理行为274* **skill 或命令覆盖**:Claude Code 忽略覆盖,包括被阻止的系列别名,skill 或命令在会话模型上运行。[在子代理中运行](/docs/zh-CN/skills#run-skills-in-a-subagent)的 skill 或命令遵循上面的子代理行为

275* **`advisorModel` 设置**:顾问对会话禁用275* **`advisorModel` 设置**:顾问对会话禁用

276* **`--advisor` 标志**:Claude Code 在启动时以错误退出。在[后台会话](/docs/zh-CN/agent-view)中,它改为在没有顾问的情况下启动会话,而不是退出276* **`--advisor` 标志**:Claude Code 在启动时以错误退出。在[后台会话](/docs/zh-CN/agent-view)中,它改为在没有顾问的情况下启动会话,而不是退出

277* **`CLAUDE_CODE_AUTO_MODE_MODEL`**:Claude Code 忽略该变量,并像您未设置它一样为其[自动模式分类器请求](/docs/zh-CN/permission-modes#default-classifier-model)选择模型

277 278 

278Claude Code 从 `/model` 选择器中隐藏排除的模型。您列出的模型 ID 是否也会获得自己的一行,因提供商而异:279Claude Code 从 `/model` 选择器中隐藏排除的模型。您列出的模型 ID 是否也会获得自己的一行,因提供商而异:

279 280 


285* **[备用模型链](#fallback-model-chains)**:允许列表外的条目被删除286* **[备用模型链](#fallback-model-chains)**:允许列表外的条目被删除

286* **计划模式升级**:在 Anthropic API 和 AWS 上的 Claude Platform 上,升级(如 [`opusplan`](#opusplan-model-setting))到排除的模型使用升级系列允许的最新版本。在具有提供商特定模型 ID 的提供商上,以及当不允许任何版本时,升级被跳过,规划继续在会话的模型上进行287* **计划模式升级**:在 Anthropic API 和 AWS 上的 Claude Platform 上,升级(如 [`opusplan`](#opusplan-model-setting))到排除的模型使用升级系列允许的最新版本。在具有提供商特定模型 ID 的提供商上,以及当不允许任何版本时,升级被跳过,规划继续在会话的模型上进行

287* **[自动模型回退](#automatic-model-fallback)**:目标被排除的回退不运行,因此标记的请求以拒绝结束288* **[自动模型回退](#automatic-model-fallback)**:目标被排除的回退不运行,因此标记的请求以拒绝结束

288* **[自动模式分类器](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)**:分类器的 Claude Sonnet 5 默认值仅在允许列表允许 Sonnet 5 时适用。当它被排除时,分类器在会话的模型上运行,允许列表已经管理该模型,或在会话运行 [Fable 模型](#work-with-fable)时在 Opus 模型上运行。在 Anthropic API 以外的提供商上,该 Opus 回退在您于 `ANTHROPIC_DEFAULT_OPUS_MODEL` 中设置的模型上运行,否则在 Opus 5 上运行,不咨询允许列表。需要 Claude Code v2.1.210 或更高版本289* **[自动模式分类器](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)**:当允许列表排除[默认分类器模型](/docs/zh-CN/permission-modes#default-classifier-model)时,原本会使用该模型的分类器请求改为在会话模型上运行,或在 [Fable](#work-with-fable) 会话中在 Opus 模型上运行。在 Anthropic API 以外的提供商上,该 Opus 回退在您于 `ANTHROPIC_DEFAULT_OPUS_MODEL` 中设置的模型上运行,否则在 Opus 5 上运行,不咨询允许列表。需要 Claude Code v2.1.210 或更高版本

289* **[快速模式](/docs/zh-CN/fast-mode)**:当会话之后运行的模型在允许列表外时,启用快速模式被拒绝290* **[快速模式](/docs/zh-CN/fast-mode)**:当会话之后运行的模型在允许列表外时,启用快速模式被拒绝

290* **Amazon Bedrock 和 Google Cloud 的 Agent Platform 上的可用性回退**:当您的帐户在会话中途失去对某个模型的访问权限时,切换到其他模型时会跳过被排除的模型。[Amazon Bedrock](/docs/zh-CN/amazon-bedrock#when-your-organization-enforces-a-model-allowlist) 和 [Google Cloud 的 Agent Platform](/docs/zh-CN/google-vertex-ai#when-your-organization-enforces-a-model-allowlist) 上的启动模型检查仅在托管设置同时设置了 [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) 时才跳过被排除的模型291* **Amazon Bedrock 和 Google Cloud 的 Agent Platform 上的可用性回退**:当您的帐户在会话中途失去对某个模型的访问权限时,切换到其他模型时会跳过被排除的模型。[Amazon Bedrock](/docs/zh-CN/amazon-bedrock#when-your-organization-enforces-a-model-allowlist) 和 [Google Cloud 的 Agent Platform](/docs/zh-CN/google-vertex-ai#when-your-organization-enforces-a-model-allowlist) 上的启动模型检查仅在托管设置同时设置了 [`enforceAvailableModels`](#enforce-the-allowlist-for-the-default-model) 时才跳过被排除的模型

291 292 

Details

137| `OTEL_LOG_TOOL_CONTENT` | 在 [`tool.output` 跨度事件](#tool-output-span-event)中启用工具内容的日志记录(默认值:禁用)。跨度属性在[其自己的门](#new-context-gates)下携带工具内容。需要[跟踪](#traces-beta)。内容在内容限制处截断(默认值 60 KB) | `1` 启用 |137| `OTEL_LOG_TOOL_CONTENT` | 在 [`tool.output` 跨度事件](#tool-output-span-event)中启用工具内容的日志记录(默认值:禁用)。跨度属性在[其自己的门](#new-context-gates)下携带工具内容。需要[跟踪](#traces-beta)。内容在内容限制处截断(默认值 60 KB) | `1` 启用 |

138| `OTEL_LOG_MANAGED_SETTINGS` | 将编辑的托管设置和编辑前设置的 SHA-256 摘要添加到[托管设置已解决](#managed-settings-resolved-event)事件(默认值:禁用)。项目或本地设置中的值不会将其打开。需要 Claude Code v2.1.274 或更高版本 | `1` 启用 |138| `OTEL_LOG_MANAGED_SETTINGS` | 将编辑的托管设置和编辑前设置的 SHA-256 摘要添加到[托管设置已解决](#managed-settings-resolved-event)事件(默认值:禁用)。项目或本地设置中的值不会将其打开。需要 Claude Code v2.1.274 或更高版本 | `1` 启用 |

139| `OTEL_LOG_RAW_API_BODIES` | 将完整的 Anthropic Messages API 请求和响应 JSON 作为 `api_request_body` / `api_response_body` 日志事件发出(默认值:禁用)。正文包括整个对话历史记录。启用此选项意味着同意 `OTEL_LOG_USER_PROMPTS`、`OTEL_LOG_TOOL_DETAILS` 和 `OTEL_LOG_TOOL_CONTENT` 会揭示的所有内容 | `1` 表示在内容限制处截断的内联正文(默认值 60 KB),或 `file:<dir>` 表示磁盘上的未截断正文,事件中有 `body_ref` 指针 |139| `OTEL_LOG_RAW_API_BODIES` | 将完整的 Anthropic Messages API 请求和响应 JSON 作为 `api_request_body` / `api_response_body` 日志事件发出(默认值:禁用)。正文包括整个对话历史记录。启用此选项意味着同意 `OTEL_LOG_USER_PROMPTS`、`OTEL_LOG_TOOL_DETAILS` 和 `OTEL_LOG_TOOL_CONTENT` 会揭示的所有内容 | `1` 表示在内容限制处截断的内联正文(默认值 60 KB),或 `file:<dir>` 表示磁盘上的未截断正文,事件中有 `body_ref` 指针 |

140| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | 内容限制:内容承载属性(如模型响应、工具内容、系统提示和原始 API 正文)的最大长度,包括截断标记,以 UTF-16 代码单位为单位(默认值:61440,即 60 KB)。默认值针对将属性值上限设为 64 KB 的后端进行了调整;仅当您的后端接受更大的值时才提高它,或降低它以减少遥测量。当设置了 OpenTelemetry SDK 属性限制 `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` 或其日志记录和跨度变体之一时,Claude Code 在该较小的值处截断,以便 `[TRUNCATED ...]` 标记保持在 SDK 限制内。需要 Claude Code v2.1.214 或更高版本 | `262144` |140| `CLAUDE_CODE_OTEL_CONTENT_MAX_LENGTH` | 内容限制:内容承载属性(如模型响应、工具内容、系统提示词和原始 API 正文)的最大长度,包括截断标记,以 UTF-16 代码单位为单位(默认值:61440,即 60 KB)。默认值针对将属性值上限设为 64 KB 的后端进行了调整;仅当您的后端接受更大的值时才提高它,或降低它以减少遥测量。当设置了 OpenTelemetry SDK 属性限制 `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT` 或其日志记录和跨度变体之一且其值更低时,Claude Code 在该较小的值处截断,以便 `[TRUNCATED ...]` 标记保持在 SDK 限制内 | `262144` |

141| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | 指标时间性偏好(默认值:`delta`)。如果您的后端期望累积时间性,请设置为 `cumulative` | `delta`、`cumulative` |141| `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE` | 指标时间性偏好(默认值:`delta`)。如果您的后端期望累积时间性,请设置为 `cumulative` | `delta`、`cumulative` |

142| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 刷新动态标头的间隔(默认值:1740000ms / 29 分钟) | `900000` |142| `CLAUDE_CODE_OTEL_HEADERS_HELPER_DEBOUNCE_MS` | 刷新动态标头的间隔(默认值:1740000ms / 29 分钟) | `900000` |

143 143 

144对于 `http/protobuf` 和 `http/json` 协议,Claude Code 使用 `Content-Length` 标头发送每个导出请求。在 v2.1.212 之前,v2.1.191 及更高版本的 Claude Code 版本使用分块传输编码发送这些请求;Azure Monitor 和其他需要声明长度的端点以 `411 Length Required` 或 `400` 错误拒绝它们。144对于 `http/protobuf` 和 `http/json` 协议,Claude Code 使用 `Content-Length` 标头发送每个导出请求。

145 145 

146<h3 id="mtls-authentication">146<h3 id="mtls-authentication">

147 mTLS 身份验证147 mTLS 身份验证


202 202 

203入站跟踪上下文也适用于[事件](#events)。在设置了 `TRACEPARENT` 的 Agent SDK 和 `-p` 会话中,每个 OTLP 事件日志记录都携带 `trace_id` 和 `span_id` 值,将其加入您的应用程序跟踪,即使未配置跟踪导出器,您的日志后端也可以将事件与跟踪的其余部分关联。203入站跟踪上下文也适用于[事件](#events)。在设置了 `TRACEPARENT` 的 Agent SDK 和 `-p` 会话中,每个 OTLP 事件日志记录都携带 `trace_id` 和 `span_id` 值,将其加入您的应用程序跟踪,即使未配置跟踪导出器,您的日志后端也可以将事件与跟踪的其余部分关联。

204 204 

205在交互处于活动状态时发出的记录携带交互跨度的 ID,即使 Claude Code 在跨度的异步上下文之外发出它,例如在权限提示回调中或对在启动期间缓冲并稍后导出的记录。在没有活动交互跨度的情况下发出的记录直接携带入站 `TRACEPARENT` ID。在 v2.1.214 之前,在跨度的异步上下文之外发出的记录携带入站 `TRACEPARENT` ID 而不是跨度的 ID。在 v2.1.212 之前,在活动跨度之外发出的事件记录不携带 `trace_id` 或 `span_id`。205在交互处于活动状态时发出的记录携带交互跨度的 ID,即使 Claude Code 在跨度的异步上下文之外发出它,例如在权限提示回调中或对在启动期间缓冲并稍后导出的记录。在没有活动交互跨度的情况下发出的记录直接携带入站 `TRACEPARENT` ID。

206 206 

207<h4 id="span-hierarchy">207<h4 id="span-hierarchy">

208 跨度层次结构208 跨度层次结构


328| 属性 | 描述 | 门控 |328| 属性 | 描述 | 门控 |

329| - | - | - |329| - | - | - |

330| `duration_ms` | 等待权限决定所花费的时间 | |330| `duration_ms` | 等待权限决定所花费的时间 | |

331| `decision` | `accept` 或 `reject` | |331| `decision` | `accept`、`reject` 或 `cancelled`,其中 `cancelled` 表示 Claude Code 停止等待该工具调用的权限决定,并且未运行该工具 | |

332| `source` | 决定来源,与[工具决定事件](#tool-decision-event)匹配 | |332| `source` | 对于 `accept` 或 `reject`,表示决定的来源,例如 `config`、`hook` 或 `user_temporary`,其含义见[工具决定事件](#tool-decision-event)。对于 `cancelled`,表示在做出任何决定之前结束等待的原因,例如 `user_abort` | |

333 

334`source` 为 `user_abort` 的 `cancelled` 决定表示:在权限提示或[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)检查尚未完成时,一条需要立即送达的消息中断了该轮次。例如,在自动模式检查期间,用户有一条排队的消息并[立即发送了它](/docs/zh-CN/interactive-mode#when-claude-code-sends-what-you-queued)。

333 335 

334**`claude_code.tool.execution`**336**`claude_code.tool.execution`**

335 337 


820| - | - |822| - | - |

821| `prompt.id` | UUID v4 标识符,关联处理单个用户提示词期间产生的所有事件 |823| `prompt.id` | UUID v4 标识符,关联处理单个用户提示词期间产生的所有事件 |

822| `event.sequence` | 用于对事件排序的从 0 开始的计数器,按 Claude Code 进程计数,而不是按会话计数 |824| `event.sequence` | 用于对事件排序的从 0 开始的计数器,按 Claude Code 进程计数,而不是按会话计数 |

823| `message.uuid` | 持久保存在会话记录(即 `~/.claude/projects/*/*.jsonl` 文件)中的消息的 UUID。出现在 `assistant_response`、`api_response_body` 和 `user_prompt` 上,但命令分派除外,因为命令分派可能产生零条或多条消息。在 `assistant_response` 和 `api_response_body` 上,这是响应的最后一个会话记录条目,下一轮次的 `parentUuid` 从它链接。需要 Claude Code v2.1.214 或更高版本,在 `api_response_body` 上需要 v2.1.274 或更高版本 |825| `message.uuid` | 持久保存在会话记录(`~/.claude/projects/*/*.jsonl` 文件)中的消息的 UUID。出现在 `assistant_response`、`api_response_body` 以及 `user_prompt` 上,但命令分派除外,因为命令分派可能产生零条或多条消息。在 `assistant_response` 和 `api_response_body` 上,这是该响应的最后一条会话记录条目,下一轮的 `parentUuid` 从它链接。在 `api_response_body` 上需要 Claude Code v2.1.274 或更高版本 |

824| `request_id` | 服务器分配的 API 请求 ID,从 `request-id` 响应头读取,例如 `req_011...`。对于没有 `request-id` 头的响应(如在 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 上),该值改为来自 `x-amzn-requestid` 头。当响应携带任一头时,出现在 `api_request`、`api_error`、`api_refusal`、`assistant_response` 和 `api_response_body` 上。与 `llm_request` 追踪 span 上的同名属性相匹配。`x-amzn-requestid` 来源需要 Claude Code v2.1.282 或更高版本 |826| `request_id` | 服务器分配的 API 请求 ID,从 `request-id` 响应头读取,例如 `req_011...`。对于没有 `request-id` 头的响应(如在 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock) 上),该值改为来自 `x-amzn-requestid` 头。当响应携带任一头时,出现在 `api_request`、`api_error`、`api_refusal`、`assistant_response` 和 `api_response_body` 上。与 `llm_request` 追踪 span 上的同名属性相匹配。`x-amzn-requestid` 来源需要 Claude Code v2.1.282 或更高版本 |

825| `client_request_id` | 客户端生成的 UUID,作为 `x-client-request-id` 请求头发送。在第一方 API 连接上出现在 `api_request` 和 `api_error` 上;在第三方提供商后端上,以及请求通过非流式回退进行重试时不存在。它将请求与其响应配对,并且对于从未产生服务器 `request_id` 的失败(例如超时)仍然可用。与 `llm_request` 追踪 span 上的同名属性相匹配。需要 Claude Code v2.1.214 或更高版本 |827| `client_request_id` | 客户端生成的 UUID,作为 `x-client-request-id` 请求头发送。在第一方 API 连接上出现于 `api_request` 和 `api_error`;在第三方提供商后端上,以及当请求通过非流式回退方式重试时不存在。它将请求与其响应配对,并且对于超时等从未产生服务器 `request_id` 的失败仍然可用。与 `llm_request` 追踪 span 上的同名属性一致 |

826 828 

827要追踪由单个提示词触发的所有活动,请按特定的 `prompt.id` 值过滤您的事件。这会返回处理该提示词期间发生的 user\_prompt 事件、所有 api\_request 事件以及所有 tool\_result 事件。829要追踪由单个提示词触发的所有活动,请按特定的 `prompt.id` 值过滤您的事件。这会返回处理该提示词期间发生的 user\_prompt 事件、所有 api\_request 事件以及所有 tool\_result 事件。

828 830 


851* `prompt_length`:提示词的长度853* `prompt_length`:提示词的长度

852* `prompt`:提示词内容。默认已编辑。设置 `OTEL_LOG_USER_PROMPTS=1` 以包含它854* `prompt`:提示词内容。默认已编辑。设置 `OTEL_LOG_USER_PROMPTS=1` 以包含它

853* `prompt_text`:与 `prompt` 相同的值,在相同的条件下编辑。将带点的属性名称存储为嵌套对象的后端会将 `prompt.id` 读取为名为 `prompt` 的对象中的 `id`,从而可能丢失提示词字符串。在这种情况下请改为读取 `prompt_text`。需要 Claude Code v2.1.287 或更高版本855* `prompt_text`:与 `prompt` 相同的值,在相同的条件下编辑。将带点的属性名称存储为嵌套对象的后端会将 `prompt.id` 读取为名为 `prompt` 的对象中的 `id`,从而可能丢失提示词字符串。在这种情况下请改为读取 `prompt_text`。需要 Claude Code v2.1.287 或更高版本

854* `message.uuid`:生成的用户消息的 UUID,与持久保存的会话记录条目相匹配。在命令分派上不存在,因为命令分派可能产生零条或多条消息。需要 Claude Code v2.1.214 或更高版本856* `message.uuid`:生成的用户消息的 UUID,与持久保存的会话记录条目一致。在命令分派上不存在,因为命令分派可能产生零条或多条消息。

855* `command_name`:当提示词调用命令时的命令名称。内置和捆绑的命令名称(例如 `compact` 或 `debug`)按原样发出;别名(例如 `reset`)按输入的形式发出,而不是规范名称。自定义、插件和 MCP 命令名称会折叠为 `custom` 或 `mcp`,除非设置了 `OTEL_LOG_TOOL_DETAILS=1`857* `command_name`:当提示词调用命令时的命令名称。内置和捆绑的命令名称(例如 `compact` 或 `debug`)按原样发出;别名(例如 `reset`)按输入的形式发出,而不是规范名称。自定义、插件和 MCP 命令名称会折叠为 `custom` 或 `mcp`,除非设置了 `OTEL_LOG_TOOL_DETAILS=1`

856* `command_source`:存在命令时命令的来源:`builtin`、`custom` 或 `mcp`。插件提供的命令报告为 `custom`858* `command_source`:存在命令时命令的来源:`builtin`、`custom` 或 `mcp`。插件提供的命令报告为 `custom`

857 859 


873* `response`:回复文本,在内容限制处截断(默认 60 KB)。默认编辑为 `<REDACTED>`。设置 `OTEL_LOG_ASSISTANT_RESPONSES=1` 以包含它。当未设置 `OTEL_LOG_ASSISTANT_RESPONSES` 时,改由 `OTEL_LOG_USER_PROMPTS` 控制,因此如果要在启用提示词日志记录的同时保持回复被编辑,请设置 `OTEL_LOG_ASSISTANT_RESPONSES=0`875* `response`:回复文本,在内容限制处截断(默认 60 KB)。默认编辑为 `<REDACTED>`。设置 `OTEL_LOG_ASSISTANT_RESPONSES=1` 以包含它。当未设置 `OTEL_LOG_ASSISTANT_RESPONSES` 时,改由 `OTEL_LOG_USER_PROMPTS` 控制,因此如果要在启用提示词日志记录的同时保持回复被编辑,请设置 `OTEL_LOG_ASSISTANT_RESPONSES=0`

874* `model`:模型标识符(例如 "claude-sonnet-5")876* `model`:模型标识符(例如 "claude-sonnet-5")

875* `request_id`:API 请求 ID,详见[事件关联属性](#event-correlation-attributes)877* `request_id`:API 请求 ID,详见[事件关联属性](#event-correlation-attributes)

876* `message.uuid`:响应的最后一个会话记录条目的 UUID。API 响应按每个内容块一个会话记录条目进行持久保存;这是最后一个条目,下一轮次的 `parentUuid` 从它链接。需要 Claude Code v2.1.214 或更高版本878* `message.uuid`:该响应最后一条会话记录条目的 UUID。API 响应按每个内容块一条会话记录条目的方式持久保存;这是最后一条,下一轮的 `parentUuid` 从它链接。

877* `query_source`:发出请求的子系统,例如 `"repl_main_thread"`、`"compact"` 或子代理名称879* `query_source`:发出请求的子系统,例如 `"repl_main_thread"`、`"compact"` 或子代理名称

878 880 

879<h4 id="tool-result-event">881<h4 id="tool-result-event">


902* `tool_result_size_bytes`:工具结果的大小(以字节为单位)904* `tool_result_size_bytes`:工具结果的大小(以字节为单位)

903* `mcp_server_scope`:MCP 服务器作用域标识符(针对 MCP 工具)905* `mcp_server_scope`:MCP 服务器作用域标识符(针对 MCP 工具)

904* `vcs.ref.head.revision`、`vcs.ref.head.name`、`vcs.ref.head.type`(当 `OTEL_LOG_TOOL_DETAILS=1` 时):由 Bash 或 PowerShell 工具运行的成功 `git commit` 的提交身份。`vcs.ref.head.revision` 是提交 SHA,`vcs.ref.head.name` 是提交所在的分支,`vcs.ref.head.type` 为 `branch`。当提交是在分离的 HEAD 上进行时,名称和类型会被省略。需要 Claude Code v2.1.269 或更高版本906* `vcs.ref.head.revision`、`vcs.ref.head.name`、`vcs.ref.head.type`(当 `OTEL_LOG_TOOL_DETAILS=1` 时):由 Bash 或 PowerShell 工具运行的成功 `git commit` 的提交身份。`vcs.ref.head.revision` 是提交 SHA,`vcs.ref.head.name` 是提交所在的分支,`vcs.ref.head.type` 为 `branch`。当提交是在分离的 HEAD 上进行时,名称和类型会被省略。需要 Claude Code v2.1.269 或更高版本

905* `tool_parameters`(当 `OTEL_LOG_TOOL_DETAILS=1` 时):包含工具特定参数的 JSON 字符串。对于 Claude Desktop 的内置服务器,在 Claude Desktop 拥有的会话中,即使标志关闭也会包含 `mcp_server_name`/`mcp_tool_name` 对,这与[工具决策事件](#tool-decision-event)中由主机编写的例外情况相同,需要 Claude Code v2.1.214 或更高版本。参数因工具而异:907* `tool_parameters`(当 `OTEL_LOG_TOOL_DETAILS=1` 时):包含工具特定参数的 JSON 字符串。对于 Claude Desktop 的内置服务器,在 Claude Desktop 拥有的会话中,即使该标志关闭,也会包含 `mcp_server_name`/`mcp_tool_name` 对,这与[工具决策事件](#tool-decision-event)中由宿主定义的例外情况相同。参数因工具而异:

906 * 对于 Bash 工具:包括 `bash_command`、`full_command`、`timeout`、`description` 和 `dangerouslyDisableSandbox`,并在 `git commit` 命令成功时包括 `git_commit_id` 和 `git_branch`。当该提交是会话工作目录的 HEAD 时,`git_commit_id` 是完整的提交 SHA,否则是 git 的缩写 SHA。`git_branch` 是提交所在的分支,在分离的 HEAD 上省略908 * 对于 Bash 工具:包括 `bash_command`、`full_command`、`timeout`、`description` 和 `dangerouslyDisableSandbox`,当 `git commit` 命令成功时还包括 `git_commit_id` 和 `git_branch`。当该提交是会话工作目录的 HEAD 时,`git_commit_id` 是完整的提交 SHA,否则是 git 的缩写 SHA。`git_branch` 是提交所在的分支,在分离的 HEAD 上省略

907 * 对于桌面应用的工作区 Bash 工具(它也将 `tool_name` 报告为 `Bash`):仅包括 `bash_command`、`full_command` 和 `timeout`909 * 对于桌面应用的工作区 Bash 工具(它同样将 `tool_name` 报告为 `Bash`):仅包括 `bash_command`、`full_command` 和 `timeout`

908 * 对于 MCP 工具:包括 `mcp_server_name`、`mcp_tool_name`910 * 对于 MCP 工具:包括 `mcp_server_name`、`mcp_tool_name`

909 * 对于 Skill 工具:包括 `skill_name`911 * 对于 Skill 工具:包括 `skill_name`

910 * 对于 Agent 工具或旧版 Task 工具:包括 `subagent_type`912 * 对于 Agent 工具或旧版 Task 工具:包括 `subagent_type`


933* `cache_read_tokens`:从缓存读取的 token 数量935* `cache_read_tokens`:从缓存读取的 token 数量

934* `cache_creation_tokens`:用于创建缓存的 token 数量936* `cache_creation_tokens`:用于创建缓存的 token 数量

935* `request_id`:API 请求 ID,例如 `"req_011..."`,详见[事件关联属性](#event-correlation-attributes)。937* `request_id`:API 请求 ID,例如 `"req_011..."`,详见[事件关联属性](#event-correlation-attributes)。

936* `client_request_id`:客户端生成的 UUID,作为 `x-client-request-id` 请求头发送;有关它何时存在,请参阅[事件关联属性](#event-correlation-attributes)表。需要 Claude Code v2.1.214 或更高版本938* `client_request_id`:客户端生成的 UUID,作为 `x-client-request-id` 请求头发送;有关其出现的条件,请参阅[事件关联属性](#event-correlation-attributes)表

937* `speed`:`"fast"` 或 `"normal"`,表示快速模式是否处于活跃状态939* `speed`:`"fast"` 或 `"normal"`,表示快速模式是否处于活跃状态

938* `query_source`:发出请求的子系统,例如 `"repl_main_thread"`、`"compact"` 或子代理名称940* `query_source`:发出请求的子系统,例如 `"repl_main_thread"`、`"compact"` 或子代理名称

939* `effort`:应用于请求的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level):`"low"`、`"medium"`、`"high"`、`"xhigh"` 或 `"max"`。当 Claude Code 未发送 effort 级别时不存在,例如在不支持 effort 的模型上。941* `effort`:应用于请求的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level):`"low"`、`"medium"`、`"high"`、`"xhigh"` 或 `"max"`。当 Claude Code 未发送 effort 级别时不存在,例如在不支持 effort 的模型上。


959* `duration_ms`:请求持续时间(以毫秒为单位)961* `duration_ms`:请求持续时间(以毫秒为单位)

960* `attempt`:已进行的尝试次数,包括初始请求。[检测重试耗尽](#detect-retry-exhaustion)说明了计数何时重新开始962* `attempt`:已进行的尝试次数,包括初始请求。[检测重试耗尽](#detect-retry-exhaustion)说明了计数何时重新开始

961* `request_id`:API 请求 ID,例如 `"req_011..."`,详见[事件关联属性](#event-correlation-attributes)。963* `request_id`:API 请求 ID,例如 `"req_011..."`,详见[事件关联属性](#event-correlation-attributes)。

962* `client_request_id`:客户端生成的 UUID,作为 `x-client-request-id` 请求头发送。即使超时或连接错误等失败从未产生服务器 `request_id`,它也可用;有关它何时存在,请参阅[事件关联属性](#event-correlation-attributes)表。需要 Claude Code v2.1.214 或更高版本964* `client_request_id`:客户端生成的 UUID,作为 `x-client-request-id` 请求头发送。即使超时或连接错误等失败从未产生服务器 `request_id`,它也可用;有关其出现的条件,请参阅[事件关联属性](#event-correlation-attributes)表。

963* `speed`:`"fast"` 或 `"normal"`,表示快速模式是否处于活跃状态965* `speed`:`"fast"` 或 `"normal"`,表示快速模式是否处于活跃状态

964* `query_source`:发出请求的子系统,例如 `"repl_main_thread"`、`"compact"` 或子代理名称966* `query_source`:发出请求的子系统,例如 `"repl_main_thread"`、`"compact"` 或子代理名称

965* `effort`:应用于请求的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)。当 Claude Code 未发送 effort 级别时不存在,例如在不支持 effort 的模型上。967* `effort`:应用于请求的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)。当 Claude Code 未发送 effort 级别时不存在,例如在不支持 effort 的模型上。


1057* `tool_name`:工具的名称(例如 "Read"、"Edit"、"Write"、"NotebookEdit")1059* `tool_name`:工具的名称(例如 "Read"、"Edit"、"Write"、"NotebookEdit")

1058* `tool_use_id`:此次工具调用的唯一标识符。与传递给 hook 的 `tool_use_id` 相匹配,从而可以在 OTel 事件和 hook 捕获的数据之间建立关联。1060* `tool_use_id`:此次工具调用的唯一标识符。与传递给 hook 的 `tool_use_id` 相匹配,从而可以在 OTel 事件和 hook 捕获的数据之间建立关联。

1059* `decision`:`"accept"` 或 `"reject"`1061* `decision`:`"accept"` 或 `"reject"`

1060* `tool_source`:始终存在。工具的来源,取值为由 CLI 定义的封闭值集合。需要 Claude Code v2.1.214 或更高版本1062* `tool_source`:始终存在。工具的来源,是由 CLI 定义的封闭值集合:

1061 * `"builtin"`:CLI 自身的工具1063 * `"builtin"`:CLI 自身的工具

1062 * `"mcp"`:一般的 MCP 服务器1064 * `"mcp"`:一般的 MCP 服务器

1063 * `"sdk_host_builtin_mcp"`:内置于 Claude Desktop 本身的进程内服务器,位于 Claude Desktop 拥有的会话中。当会话是 Claude Desktop 从其自身的入口点之一(`claude-desktop`、`claude-desktop-3p` 或 `local-agent`)启动的,且不是嵌套子会话时,Claude Desktop 拥有该会话;嵌套会话(包括 Claude Code 自身生成的会话)将这些服务器报告为 `"mcp"`1065 * `"sdk_host_builtin_mcp"`:内置于 Claude Desktop 本身的进程内服务器,位于 Claude Desktop 拥有的会话中。当 Claude Desktop 从其自身的某个入口点(`claude-desktop`、`claude-desktop-3p` 或 `local-agent`)启动会话,且该会话不是嵌套子会话时,Claude Desktop 拥有该会话;嵌套会话(包括 Claude Code 自身生成的会话)将这些服务器报告为 `"mcp"`

1064* `source`:决策的来源:1066* `source`:决策的来源:

1065 * `"config"`:无需询问即自动决定,依据为项目设置、用户个人设置中的允许或拒绝规则、企业托管策略、`--allowedTools` 或 `--disallowedTools` 标志、当前的权限模式、同一交互式 CLI 会话中先前提示所授予的会话作用域权限,或者因为该工具本身是安全的。该事件不会指明匹配的是这些来源中的哪一个。当权限提示请求本身失败时,Claude Code 也会报告 `"config"`,例如当 Agent SDK 的 [`canUseTool`](/docs/zh-CN/agent-sdk/typescript#canusetool) 回调或 [`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags) 工具返回无效结果时,或者当请求挂起期间输入流关闭时。在 v2.1.216 之前,Claude Code 将这些失败报告为 `"user_reject"`。1067 * `"config"`:无需提示即自动决定,由以下来源之一决定:

1066 * `"hook"`:由 `PreToolUse` 或 `PermissionRequest` hook 返回了决策。1068 

1067 * `"user_permanent"`:当用户在权限提示中选择 "Yes, and don't ask again for ..." 时发出,这会将一条允许规则保存到其个人设置中。在交互式 CLI 中,仅针对该选择本身发出;之后匹配已保存规则的调用改为发出 `"config"`。在 Agent SDK 或非交互式 `-p` 会话中,初始选择和之后的规则匹配都会发出 `"user_permanent"`。视为接受。1069 * 项目设置

1068 * `"user_temporary"`:当用户在权限提示中选择 "Yes" 进行一次性批准,或在文件编辑或读取提示中选择授予本会话剩余时间访问权限的选项时发出。在交互式 CLI 中,仅针对该选择本身发出;之后由该会话作用域授权允许的调用改为发出 `"config"`。在 Agent SDK 或非交互式 `-p` 会话中,该选择和之后的匹配都会发出 `"user_temporary"`。视为接受。1070 * 用户个人设置中的允许或拒绝规则

1069 * `"user_abort"`:当用户未作答便关闭权限提示时发出。在 Agent SDK 和非交互式 `-p` 会话中,这包括在 `canUseTool` 或 `--permission-prompt-tool` 权限请求挂起期间中断轮次;在 v2.1.216 之前,Claude Code 将这种中断报告为 `"user_reject"`。视为拒绝。1071 * 企业托管策略

1070 * `"user_reject"`:当用户在被询问时选择 "No" 时发出。在交互式 CLI 中,仅针对该选择本身发出;匹配用户个人设置中拒绝规则的调用改为发出 `"config"`。在 Agent SDK 或非交互式 `-p` 会话中,匹配个人设置中拒绝规则的调用会发出 `"user_reject"`。视为拒绝。1072 * `--allowedTools` 或 `--disallowedTools` 标志

1071* `tool_parameters`(当 `OTEL_LOG_TOOL_DETAILS=1` 时):包含工具特定参数的 JSON 字符串。形式与[工具结果事件](#tool-result-event)相同,但不含执行后的字段,例如 `git_commit_id`。如果权限决策通过 `updatedInput` 重写了工具输入,则对于被接受的调用,其值可能与 `tool_result` 不同。当 `decision` 为 `"reject"` 时,可使用此属性查看被拒绝的是哪个命令。1073 * 当前的权限模式

1072 * 对于 `"sdk_host_builtin_mcp"` 工具:即使 `OTEL_LOG_TOOL_DETAILS` 关闭,也会包含 `mcp_server_name` 和 `mcp_tool_name`,因为这些名称由主机应用程序定义;如果没有它们,在默认流中将无法对这些内置服务器的被拒绝调用进行归因。对于用户配置的 MCP 服务器,事件的 `tool_name` 始终是字面量 `"mcp_tool"`,并且服务器和工具名称仅在标志开启时出现在 `tool_parameters` 中;参数内容在任何情况下都需要该标志。需要 Claude Code v2.1.214 或更高版本1074 * 自动模式分类器,同一事件会在 `classifier_verdict` 中记录其判定结果

1073 * 对于 Bash 工具:包括 `bash_command`、`full_command`、`timeout`、`description`、`dangerouslyDisableSandbox`。桌面应用的工作区 bash 工具也将 `tool_name` 报告为 `Bash`,但仅包括 `bash_command`、`full_command` 和 `timeout`1075 * 在同一交互式 CLI 会话中较早的权限提示中授予的、在会话剩余时间内有效的授权

1076 * 工具本身是安全的

1077 

1078 `source` 值不会表明匹配的是上述哪个来源。

1079 

1080 当权限提示请求本身失败时,Claude Code 也会报告 `"config"`。例如,当 Agent SDK 的 [`canUseTool`](/docs/zh-CN/agent-sdk/typescript#canusetool) 回调或 [`--permission-prompt-tool`](/docs/zh-CN/cli-reference#cli-flags) 工具返回无效结果时,或者当请求挂起期间输入流关闭时,该请求就会失败。在 v2.1.216 之前,Claude Code 将这些失败报告为 `"user_reject"`。

1081 * `"hook"`:由 `PreToolUse` 或 `PermissionRequest` hook 返回了该决策。

1082 * `"user_permanent"`:当用户在权限提示中选择 "Yes, and don't ask again for ..." 时发出,这会将一条允许规则保存到其个人设置中。在交互式 CLI 中,仅针对该选择本身发出;之后匹配所保存规则的调用会改为发出 `"config"`。在 Agent SDK 或非交互式 `-p` 会话中,初次选择以及之后的规则匹配都会发出 `"user_permanent"`。视为接受。

1083 * `"user_temporary"`:当用户在权限提示中选择 "Yes" 进行一次性批准,或在文件编辑或读取提示中选择了在会话剩余时间内授予访问权限的选项时发出。在交互式 CLI 中,仅针对该选择本身发出;之后由该会话级授权允许的调用会改为发出 `"config"`。在 Agent SDK 或非交互式 `-p` 会话中,该选择以及之后的匹配都会发出 `"user_temporary"`。视为接受。

1084 * `"user_abort"`:当用户未作回答即关闭权限提示时发出。在 Agent SDK 和非交互式 `-p` 会话中,这包括在 `canUseTool` 或 `--permission-prompt-tool` 权限请求挂起时中断该轮次;在 v2.1.216 之前,Claude Code 将这种中断报告为 `"user_reject"`。视为拒绝。

1085 * `"user_reject"`:当用户在提示时选择 "No" 时发出。在交互式 CLI 中,仅针对该选择本身发出;匹配用户个人设置中拒绝规则的调用会改为发出 `"config"`。在 Agent SDK 或非交互式 `-p` 会话中,匹配个人设置中拒绝规则的调用会发出 `"user_reject"`。视为拒绝。

1086* `classifier_verdict`:自动模式[分类器](/docs/zh-CN/permission-modes#how-the-classifier-evaluates-actions)对该调用的判定结果,或在没有判定结果时 Claude Code 拒绝该调用的原因。需要 Claude Code v2.1.301 或更高版本

1087 

1088 * `"allow"`:分类器批准了该调用

1089 * `"block"`:分类器阻止了该调用。中途失败的分类器检查也可能以 `"block"` 结束,因此分类器部分中断可能表现为阻止次数增多,而不是 `"unavailable"`

1090 * `"no_verdict"`:检查已运行,但[没有给出可用的判定结果](/docs/zh-CN/errors#auto-mode-cannot-determine-the-safety-of-an-action),因此 Claude Code 拒绝了该调用。该拒绝并不意味着分类器认为该调用不安全

1091 * `"unavailable"`:发往分类器的请求失败,例如遇到速率限制、超时或连接错误,因此 Claude Code 拒绝了该调用。在使用[服务器端分类器审查](/docs/zh-CN/permission-modes#server-side-classifier-review)时,它还标记因[服务器未返回安全判定结果](/docs/zh-CN/errors#the-server-returned-no-safety-verdict)而被拒绝的调用

1092 

1093 当[分类器在计划模式下审查命令](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)时,该属性也会出现在计划模式的调用上。在以下情况下该属性不存在:

1094 

1095 * 由允许或拒绝[权限规则](/docs/zh-CN/permissions#manage-permissions)决定了该调用

1096 * Claude Code 在自动模式下未询问分类器就批准了该调用

1097 * 用户回答了 Claude Code 在[多次阻止](/docs/zh-CN/permission-modes#repeated-block-thresholds)后显示的提示

1098 * 在不带 `--permission-prompt-tool` 的 `-p` 运行中,由于没有人可以回答提示,Claude Code 在多次阻止后拒绝了该调用。该事件将 `decision` 报告为 `"reject"`,将 `source` 报告为 `"config"`

1099* `classifier_category`(当 `OTEL_LOG_TOOL_DETAILS=1` 时):分类器阻止该调用时所指明的[内置规则](/docs/zh-CN/auto-mode-config#inspect-the-defaults-and-your-effective-config)名称,采用小写加下划线形式,例如 Data Exfiltration 规则对应 `"data_exfiltration"`。需要 Claude Code v2.1.301 或更高版本。当以下条件全部满足时,该属性存在:

1100 * `classifier_verdict` 为 `"block"`

1101 * 分类器请求由 Claude Code 自行发送,而不是使用[服务器端分类器审查](/docs/zh-CN/permission-modes#server-side-classifier-review)

1102 * 分类器恰好指明了一条规则,且该规则是内置规则,而不是您编写的规则

1103* `permission_mode`:此调用的权限检查开始时处于活动状态的[权限模式](/docs/zh-CN/permission-modes):`"default"`、`"plan"`、`"acceptEdits"`、`"bypassPermissions"`、`"dontAsk"` 或 `"auto"`。手动模式显示为 `"default"`。[子代理](/docs/zh-CN/sub-agents#permission-modes)的调用报告的是子代理的权限模式,而不是会话的权限模式。需要 Claude Code v2.1.301 或更高版本

1104* `tool_parameters`(当 `OTEL_LOG_TOOL_DETAILS=1` 时):包含工具特定参数的 JSON 字符串。结构与[工具结果事件](#tool-result-event)相同,但不含 `git_commit_id` 等执行后字段。如果权限决策通过 `updatedInput` 重写了工具输入,对于被接受的调用,其值可能与 `tool_result` 不同。当 `decision` 为 `"reject"` 时,可使用此属性查看哪个命令被拒绝。

1105 * 对于 `"sdk_host_builtin_mcp"` 工具:即使 `OTEL_LOG_TOOL_DETAILS` 关闭,也会包含 `mcp_server_name` 和 `mcp_tool_name`,因为这些名称由宿主应用定义;如果没有它们,对这些内置服务器之一的被拒绝调用在默认数据流中将无法归属。对于用户配置的 MCP 服务器,事件的 `tool_name` 始终为字面值 `"mcp_tool"`,服务器和工具名称仅在启用该标志时出现在 `tool_parameters` 中;参数内容在任何情况下都需要该标志。

1106 * 对于 Bash 工具:包括 `bash_command`、`full_command`、`timeout`、`description`、`dangerouslyDisableSandbox`。桌面应用的工作区 bash 工具同样将 `tool_name` 报告为 `Bash`,但仅包括 `bash_command`、`full_command` 和 `timeout`

1074 * 对于 MCP 工具:包括 `mcp_server_name`、`mcp_tool_name`1107 * 对于 MCP 工具:包括 `mcp_server_name`、`mcp_tool_name`

1075 * 对于 Skill 工具:包括 `skill_name`1108 * 对于 Skill 工具:包括 `skill_name`

1076 * 对于 Agent 工具或旧版 Task 工具:包括 `subagent_type`1109 * 对于 Agent 工具或旧版 Task 工具:包括 `subagent_type`


1081 1114 

1082在权限模式发生变化时记录,例如通过 `Shift+Tab` 循环切换、退出计划模式或自动模式门控检查。1115在权限模式发生变化时记录,例如通过 `Shift+Tab` 循环切换、退出计划模式或自动模式门控检查。

1083 1116 

1117要按每个工具调用接受检查时所处的权限模式对其分组,请使用[工具决策事件](#tool-decision-event)上的 `permission_mode`。

1118 

1084**事件名称**:`claude_code.permission_mode_changed`1119**事件名称**:`claude_code.permission_mode_changed`

1085 1120 

1086**属性**:1121**属性**:


1091* `event.sequence`:用于对事件排序的按进程计数器,详见[事件关联属性](#event-correlation-attributes)1126* `event.sequence`:用于对事件排序的按进程计数器,详见[事件关联属性](#event-correlation-attributes)

1092* `from_mode`:先前的权限模式,例如 `"default"`、`"plan"`、`"acceptEdits"`、`"auto"` 或 `"bypassPermissions"`1127* `from_mode`:先前的权限模式,例如 `"default"`、`"plan"`、`"acceptEdits"`、`"auto"` 或 `"bypassPermissions"`

1093* `to_mode`:新的权限模式1128* `to_mode`:新的权限模式

1094* `trigger`:导致更改的原因。为 `"shift_tab"`、`"exit_plan_mode"`、`"auto_gate_denied"` 或 `"auto_opt_in"` 之一。某些更改不存在此属性,例如 SDK 通过 [`setPermissionMode()`](/docs/zh-CN/agent-sdk/typescript#query-object) 设置权限模式时1129* `trigger`:导致变更的原因,例如 `"shift_tab"`、`"exit_plan_mode"` 或 `"auto_gate_denied"`。对于某些变更不存在,例如当 SDK 通过 [`setPermissionMode()`](/docs/zh-CN/agent-sdk/typescript#query-object) 设置权限模式时

1095 1130 

1096<h4 id="auth-event">1131<h4 id="auth-event">

1097 身份验证事件1132 身份验证事件


1230 1265 

1231当 Claude Code 解析提示词中的 `@` 提及时记录。并非每个提及都会发出事件:提前退出的路径,例如权限拒绝、文件过大、PDF 引用附件以及目录列表失败,会在不记录日志的情况下返回。1266当 Claude Code 解析提示词中的 `@` 提及时记录。并非每个提及都会发出事件:提前退出的路径,例如权限拒绝、文件过大、PDF 引用附件以及目录列表失败,会在不记录日志的情况下返回。

1232 1267 

1233每次 Claude Code 读取提示词时,最多记录 100 个 `mention_type` 为 `"agent"` 的事件和 100 个 `mention_type` 为 `"mcp_resource"` 的事件。超出任一限制的提及仍会被解析,但不会发出事件。1268每次 Claude Code 读取一个提示词时,最多记录 100 个 `mention_type` 为 `"agent"` 的事件和 100 个 `"mcp_resource"` 的事件。超过任一限制的提及仍会被解析,但不会发出事件。

1234 1269 

1235**事件名称**:`claude_code.at_mention`1270**事件名称**:`claude_code.at_mention`

1236 1271 


1402* `total_tool_uses`:子代理在整个运行过程中进行的工具调用次数1437* `total_tool_uses`:子代理在整个运行过程中进行的工具调用次数

1403* `duration_ms`:运行时间(毫秒)1438* `duration_ms`:运行时间(毫秒)

1404* `model`:子代理被解析为运行的模型1439* `model`:子代理被解析为运行的模型

1405* `final_model`:生成子代理最终回复的模型;在运行中途发生切换(例如回退)后,该值与 `model` 不同。需要 Claude Code v2.1.212 或更高版本1440* `final_model`:生成子代理最终响应的模型;在运行中途发生切换(例如回退)后,它会与 `model` 不同

1406* `model_swapped`:是否有多个模型处理了该子代理的请求。需要 Claude Code v2.1.212 或更高版本1441* `model_swapped`:是否有多个模型处理了该子代理的请求

1407* `plugin_id_hash`、`plugin.name`:对于由插件提供的 Agent 存在。官方市场插件名称会原样显示;除非设置了 `OTEL_LOG_TOOL_DETAILS=1`,否则其他插件名称会被替换为 `"third-party"`1442* `plugin_id_hash`、`plugin.name`:对于由插件提供的 Agent 存在。官方市场插件名称会原样显示;除非设置了 `OTEL_LOG_TOOL_DETAILS=1`,否则其他插件名称会被替换为 `"third-party"`

1408 1443 

1409<h4 id="feedback-survey-event">1444<h4 id="feedback-survey-event">


1548 成本指标是近似值。有关官方计费数据,请参阅您的 API 提供商(Claude 控制台、Amazon Bedrock 或 Google Cloud 的 Agent Platform)。1583 成本指标是近似值。有关官方计费数据,请参阅您的 API 提供商(Claude 控制台、Amazon Bedrock 或 Google Cloud 的 Agent Platform)。

1549</Note>1584</Note>

1550 1585 

1551Claude Code 将每个流式响应计入成本和令牌指标,恰好一次,包括当网关或代理在 `ANTHROPIC_BASE_URL` 后面跨多个帧逐步流式传输使用情况时。在 v2.1.214 之前,在多个帧中携带使用情况的流会使 `claude_code.cost.usage` 和 `claude_code.token.usage` 膨胀,大约每个额外帧增加一个完整请求。1586Claude Code 将每个流式响应计入成本和 token 指标,恰好一次,包括当网关或代理在 `ANTHROPIC_BASE_URL` 后面跨多个帧逐步流式传输使用情况时。

1552 1587 

1553<h3 id="alerting-and-segmentation">1588<h3 id="alerting-and-segmentation">

1554 警报和分段1589 警报和分段


1570 1605 

1571Claude Code 在内部重试失败的 API 请求,仅在放弃后才发出单个 `claude_code.api_error` 事件,因此事件本身是该请求的终端信号。中间重试尝试不会作为单独的事件记录。1606Claude Code 在内部重试失败的 API 请求,仅在放弃后才发出单个 `claude_code.api_error` 事件,因此事件本身是该请求的终端信号。中间重试尝试不会作为单独的事件记录。

1572 1607 

1573事件上的 `attempt` 属性记录尝试次数。`CLAUDE_CODE_MAX_RETRIES` 默认为 10,上限为 15。在 v2.1.199 或更高版本上,您可以设置 `CLAUDE_CODE_RETRY_WATCHDOG` 来提高默认值并移除上限。1608事件上的 `attempt` 属性记录尝试次数。`CLAUDE_CODE_MAX_RETRIES` 默认为 10,上限为 15;如果设置了 [`CLAUDE_CODE_RETRY_WATCHDOG`](/docs/zh-CN/env-vars),默认值会更高,并且没有上限。

1574 1609 

1575当请求在瞬时错误上耗尽所有重试时,`attempt` 最多等于该有效限制加一:默认为 11。1610当请求在瞬时错误上耗尽所有重试时,`attempt` 最多等于该有效限制加一:默认为 11。

1576 1611 


1646 1681 

1647没有 `OTEL_LOG_TOOL_DETAILS`,这些事件会丢弃识别详情:1682没有 `OTEL_LOG_TOOL_DETAILS`,这些事件会丢弃识别详情:

1648 1683 

1649* `tool_result`:保留 `mcp_server_scope` 和一个对用户配置的服务器编辑为字面值 `"mcp_tool"` 的 `tool_name`,省略参数内容。对于 Claude Desktop 的内置服务器,在 Claude Desktop 拥有的会话中,它还保留 `tool_parameters` 内的 `mcp_server_name`/`mcp_tool_name` 对,与 `tool_decision` 相同的主机编写异常,需要 Claude Code v2.1.214 或更高版本1684* `tool_result`:保留 `mcp_server_scope` 和一个对用户配置的服务器编辑为字面值 `"mcp_tool"` 的 `tool_name`,省略参数内容。对于 Claude Desktop 的内置服务器,在 Claude Desktop 拥有的会话中,它还保留 `tool_parameters` 内的 `mcp_server_name`/`mcp_tool_name` 对,与 `tool_decision` 相同的主机编写异常

1650* `tool_decision`:保留 `tool_source` 和一个对用户配置的服务器编辑为字面值 `"mcp_tool"` 的 `tool_name`,省略参数内容。对于 Claude Desktop 的内置服务器,在 Claude Desktop 拥有的会话中,它还保留 `tool_parameters` 内的 `mcp_server_name`/`mcp_tool_name` 对;`tool_source` 和名称对都需要 Claude Code v2.1.214 或更高版本1685* `tool_decision`:保留 `tool_source` 和一个对用户配置的服务器编辑为字面值 `"mcp_tool"` 的 `tool_name`,省略参数内容。对于 Claude Desktop 的内置服务器,在 Claude Desktop 拥有的会话中,它还保留 `tool_parameters` 内的 `mcp_server_name`/`mcp_tool_name` 对

1651* `mcp_server_connection`:省略 `server_name` 和错误消息,但保留 `is_plugin`、`plugin_id_hash` 和 `plugin.name`,非 Anthropic 插件名称被编辑为字面值 `"third-party"`,因此插件提供的服务器在没有详细日志的情况下仍然可以区分1686* `mcp_server_connection`:省略 `server_name` 和错误消息,但保留 `is_plugin`、`plugin_id_hash` 和 `plugin.name`,非 Anthropic 插件名称被编辑为字面值 `"third-party"`,因此插件提供的服务器在没有详细日志的情况下仍然可以区分

1652 1687 

1653<h3 id="map-security-questions-to-events">1688<h3 id="map-security-questions-to-events">


1658 1693 

1659| 信号 | 事件 | 关键属性 |1694| 信号 | 事件 | 关键属性 |

1660| - | - | - |1695| - | - | - |

1661| 工具调用被允许或拒绝,以及通过什么 | `tool_decision` | `decision`、`source`、`tool_name`、`tool_parameters` |1696| 工具调用被允许或拒绝,以及决策的来源,例如规则、hook 或用户 | [`tool_decision`](#tool-decision-event) | `decision`、`source`、`classifier_verdict`、`permission_mode`、`tool_name`;设置 `OTEL_LOG_TOOL_DETAILS=1` 时还有 `tool_parameters` |

1697| 自动模式分类器允许或阻止了工具调用,或 Claude Code 在没有分类器判定的情况下拒绝了调用 | 存在 `classifier_verdict` 的 [`tool_decision`](#tool-decision-event)。对于没有判定的拒绝,`classifier_verdict` 为 `"no_verdict"` 或 `"unavailable"` | `classifier_verdict`、`permission_mode`、`tool_name`;设置 `OTEL_LOG_TOOL_DETAILS=1` 时还有 `classifier_category` |

1662| 权限模式升级 | `permission_mode_changed` | `from_mode`、`to_mode`、`trigger` |1698| 权限模式升级 | `permission_mode_changed` | `from_mode`、`to_mode`、`trigger` |

1699| 每个工具调用在哪种权限模式下接受检查,包括子代理发起的调用 | [`tool_decision`](#tool-decision-event) | `permission_mode`、`session.id` |

1663| 策略 hook 阻止了操作 | `hook_execution_complete` | `hook_event`、`num_blocking` |1700| 策略 hook 阻止了操作 | `hook_execution_complete` | `hook_event`、`num_blocking` |

1664| 登录、登出和身份验证失败 | `auth` | `action`、`success`、`error_category` |1701| 登录、登出和身份验证失败 | `auth` | `action`、`success`、`error_category` |

1665| MCP 服务器连接或失败 | `mcp_server_connection` | `status`、`server_name`、`is_plugin`、`error_code` |1702| MCP 服务器连接或失败 | `mcp_server_connection` | `status`、`server_name`、`is_plugin`、`error_code` |


1824 1861 

1825 * 在详细的 beta 追踪下,spans 还会携带每个请求发送的新用户消息、工具结果和系统提醒、系统提示词文本以及模型输出。[详细 beta 追踪下的内容属性](#new-context-gates)列出了每个属性。`claude_code.system_prompt` 事件携带完整的系统提示词1862 * 在详细的 beta 追踪下,spans 还会携带每个请求发送的新用户消息、工具结果和系统提醒、系统提示词文本以及模型输出。[详细 beta 追踪下的内容属性](#new-context-gates)列出了每个属性。`claude_code.system_prompt` 事件携带完整的系统提示词

1826* 默认情况下不收集助手响应文本。仅记录响应长度。要包含响应文本,请设置 `OTEL_LOG_ASSISTANT_RESPONSES=1`。与来自 Claude Code 的所有 OpenTelemetry 数据一样,响应文本仅发送到您配置的 OTel 端点,永远不会发送到 Anthropic。当此变量未设置时,会回退到 `OTEL_LOG_USER_PROMPTS`,因此如果您希望事件中包含提示词内容而不包含响应内容,请设置 `OTEL_LOG_ASSISTANT_RESPONSES=0`。在详细的 beta 追踪下,`claude_code.llm_request` span 仍会在 [`response.model_output`](#new-context-gates) 中携带模型输出,该属性遵循 `OTEL_LOG_USER_PROMPTS` 而非此变量1863* 默认情况下不收集助手响应文本。仅记录响应长度。要包含响应文本,请设置 `OTEL_LOG_ASSISTANT_RESPONSES=1`。与来自 Claude Code 的所有 OpenTelemetry 数据一样,响应文本仅发送到您配置的 OTel 端点,永远不会发送到 Anthropic。当此变量未设置时,会回退到 `OTEL_LOG_USER_PROMPTS`,因此如果您希望事件中包含提示词内容而不包含响应内容,请设置 `OTEL_LOG_ASSISTANT_RESPONSES=0`。在详细的 beta 追踪下,`claude_code.llm_request` span 仍会在 [`response.model_output`](#new-context-gates) 中携带模型输出,该属性遵循 `OTEL_LOG_USER_PROMPTS` 而非此变量

1827* 默认情况下不记录工具输入参数和参数。要包含它们,请设置 `OTEL_LOG_TOOL_DETAILS=1`。对于 Claude Desktop 的内置服务器,在 Claude Desktop 拥有的会话中,`tool_decision` 和 `tool_result` 携带 `mcp_server_name`/`mcp_tool_name` 对,即主机编写的名称而非参数内容,即使关闭该标志也是如此。此异常需要 Claude Code v2.1.214 或更高版本。此数据仅发送到您配置的 OTEL 端点,永远不会发送到 Anthropic。参数仍可能包含敏感值,因此请根据需要配置您的遥测后端以过滤或编辑这些属性。启用后:1864* 默认情况下不记录工具输入参数和参数。要包含它们,请设置 `OTEL_LOG_TOOL_DETAILS=1`。对于 Claude Desktop 的内置服务器,在 Claude Desktop 拥有的会话中,`tool_decision` 和 `tool_result` 携带 `mcp_server_name`/`mcp_tool_name` 对,即主机编写的名称而非参数内容,即使关闭该标志也是如此。此数据仅发送到您配置的 OTEL 端点,永远不会发送到 Anthropic。参数仍可能包含敏感值,因此请根据需要配置您的遥测后端以过滤或编辑这些属性。启用后:

1828 * `tool_result` 和 `tool_decision` 事件包含 `tool_parameters` 属性,其中包含 Bash 命令、MCP 服务器和工具名称以及 skill 名称。`full_command` 等字段以未截断的形式发出1865 * `tool_result` 和 `tool_decision` 事件包含 `tool_parameters` 属性,其中包含 Bash 命令、MCP 服务器和工具名称以及 skill 名称。`full_command` 等字段以未截断的形式发出

1829 * `tool_result` 事件另外包含 `tool_input` 属性,其中包含文件路径、URL、搜索模式和其他参数。超过 512 个字符的单个值被截断,总数限制为约 4 K 字符1866 * `tool_result` 事件另外包含 `tool_input` 属性,其中包含文件路径、URL、搜索模式和其他参数。超过 512 个字符的单个值被截断,总数限制为约 4 K 字符

1830 * `user_prompt` 事件包含自定义、插件和 MCP 命令的逐字 `command_name`1867 * `user_prompt` 事件包含自定义、插件和 MCP 命令的逐字 `command_name`

Details

223* `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 设置两个监视器的超时。Claude Code 将低于 5 分钟的值提高到 5 分钟,并将字节级监视器的值上限设为 30 分钟。223* `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 设置两个监视器的超时。Claude Code 将低于 5 分钟的值提高到 5 分钟,并将字节级监视器的值上限设为 30 分钟。

224* `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` 设置字节级监视器的超时,而不改变事件级监视器的超时,限制在 10 秒到 30 分钟之间,并优先于 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 用于该监视器。224* `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` 设置字节级监视器的超时,而不改变事件级监视器的超时,限制在 10 秒到 30 分钟之间,并优先于 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 用于该监视器。

225* `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` 直接设置首字节截止时间。保持未设置状态,Claude Code 使用字节级监视器的超时,因此 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 和 `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` 也会改变截止时间。有关限制、上传额度、`API_TIMEOUT_MS` 上限以及重试在无响应中止后等待多长时间,请参阅 [API 无响应](/docs/zh-CN/errors#no-response-from-api)。225* `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` 直接设置首字节截止时间。保持未设置状态,Claude Code 使用字节级监视器的超时,因此 `CLAUDE_STREAM_IDLE_TIMEOUT_MS` 和 `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` 也会改变截止时间。有关限制、上传额度、`API_TIMEOUT_MS` 上限以及重试在无响应中止后等待多长时间,请参阅 [API 无响应](/docs/zh-CN/errors#no-response-from-api)。

226* `API_TIMEOUT_MS` 限制等待响应头的时间。在首字节截止时间不运行的情况下(例如 Claude apps gateway 会话),将其设置为低于 `300000`(即 5 分钟),以便更快地重试未得到应答的请求。请将其保持在您预期的最长响应头等待时间以及最长[非流式请求](/docs/zh-CN/errors#streaming-response-ended-before-any-complete-data-was-received)所需时间之上:需要更长时间的请求会在每次重试时再次超时。226* `API_TIMEOUT_MS` 限制等待响应头的时间,而不是响应头到达后响应可以流式传输多长时间。在首字节截止时间不运行的情况下(例如 Claude apps gateway 会话),将其设置为低于 `300000`(即 5 分钟),以便更快地重试未得到应答的请求。请将其保持在您预期的最长响应头等待时间以及最长[非流式请求](/docs/zh-CN/errors#streaming-response-ended-before-any-complete-data-was-received)所需时间之上:需要更长时间的请求会在每次重试时再次超时。

227* `API_FORCE_IDLE_TIMEOUT` 设置为 `0` 会关闭主体空闲超时,设置为 `1` 会为每个提供商打开它。监视器独立于它运行,因此要让流暂停超过其阈值,也要提高或禁用它们。227* `API_FORCE_IDLE_TIMEOUT` 设置为 `0` 会关闭主体空闲超时,设置为 `1` 会为每个提供商打开它。监视器独立于它运行,因此要让流暂停超过其阈值,也要提高或禁用它们。

228 228 

229当监视器中止停滞的流时,Claude Code 将中止视为中流失败,你看到的内容取决于响应已进行到多远。Claude Code 重试请求或以错误结束轮次,保留已完成的输出并显示 [不完整响应通知](/docs/zh-CN/errors#the-response-above-may-be-incomplete),或正常结束轮次。[自动重试](/docs/zh-CN/errors#automatic-retries) 说明每个结果适用的位置。229当监视器中止停滞的流时,Claude Code 将中止视为中流失败,你看到的内容取决于响应已进行到多远。Claude Code 重试请求或以错误结束轮次,保留已完成的输出并显示 [不完整响应通知](/docs/zh-CN/errors#the-response-above-may-be-incomplete),或正常结束轮次。[自动重试](/docs/zh-CN/errors#automatic-retries) 说明每个结果适用的位置。

Details

86| 您如何运行 Claude Code | 内置起始权限模式 |86| 您如何运行 Claude Code | 内置起始权限模式 |

87| :- | :- |87| :- | :- |

88| 任何设置文件将 `disableAutoMode` 设置为 `"disable"` | `default` |88| 任何设置文件将 `disableAutoMode` 设置为 `"disable"` | `default` |

89| `claude -p` 或 [Agent SDK](/docs/zh-CN/agent-sdk/permissions#permission-modes) | 在[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话中为 `default`。在不获取功能标志的会话中,例如在第三方提供商上或关闭遥测的情况下,Claude Code v2.1.285 或更高版本中为 `auto`,较早版本中为 `default`。组织策略禁止 `auto` 默认值的会话改为以 `default` 启动 |89| `claude -p` 或 [Agent SDK](/docs/zh-CN/agent-sdk/permissions#permission-modes) | `default` |

90| 您的组织已应用 [HIPAA 配置](#hipaa-configuration),且该会话[符合其适用条件](/docs/zh-CN/hipaa-setup#check-how-developers-sign-in-and-connect) | Claude Code v2.1.285 或更高版本中为 `default`;仍可切换到自动模式 |90| 您的组织已应用 [HIPAA 配置](#hipaa-configuration),且该会话[符合其适用条件](/docs/zh-CN/hipaa-setup#check-how-developers-sign-in-and-connect) | Claude Code v2.1.285 或更高版本中为 `default`;仍可切换到自动模式 |

91| 在终端或通过 [VS Code 扩展](/docs/zh-CN/vs-code) | Claude Code v2.1.283 或更高版本中为 `auto`;在较早的版本上,在 Pro、Max 或 Team 计划中为 `auto`(在[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话中),否则为 `default` |91| 在终端或通过 [VS Code 扩展](/docs/zh-CN/vs-code) | Claude Code v2.1.283 或更高版本中为 `auto`;在较早的版本上,在 Pro、Max 或 Team 计划中为 `auto`(在[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话中),否则为 `default` |

92 92 

93在您[安装或升级后的第一个会话](/docs/zh-CN/env-vars#first-session-after-an-install-or-upgrade)中,Claude Code 可以在其功能标志到达之前选择起始权限模式。该会话可能以与表格不同的权限模式启动。

94 

95当标志、设置文件或内置默认值选择 `auto` 但自动模式对会话不可用时,Claude Code 以 Manual 启动会话。自动模式在会话不满足[可用性要求](#eliminate-prompts-with-auto-mode)时不可用,例如设置文件关闭它或不支持它的模型,或当 Anthropic 已在服务器端临时关闭它时。93当标志、设置文件或内置默认值选择 `auto` 但自动模式对会话不可用时,Claude Code 以 Manual 启动会话。自动模式在会话不满足[可用性要求](#eliminate-prompts-with-auto-mode)时不可用,例如设置文件关闭它或不支持它的模型,或当 Anthropic 已在服务器端临时关闭它时。

96 94 

97内置默认值第一次在自动模式下启动您的一个会话时,Claude Code 显示链接到此页面的通知:95内置默认值第一次在自动模式下启动您的一个会话时,Claude Code 显示链接到此页面的通知:


101 99 

102如果您的 `~/.claude/settings.json` 将 `defaultMode` 设置为 `auto` 以外的值,且没有其他设置文件设置它,您的会话继续以该模式启动。在 Pro、Max 和 Team 计划上,以及在[不获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话中,Claude Code 在终端或 VS Code 扩展中询问一次是否将设置更改为自动模式。如果您拒绝,您的设置保持原样。100如果您的 `~/.claude/settings.json` 将 `defaultMode` 设置为 `auto` 以外的值,且没有其他设置文件设置它,您的会话继续以该模式启动。在 Pro、Max 和 Team 计划上,以及在[不获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话中,Claude Code 在终端或 VS Code 扩展中询问一次是否将设置更改为自动模式。如果您拒绝,您的设置保持原样。

103 101 

102<h3 id="which-mode-a-non-interactive-run-starts-in">

103 在 `claude -p` 和 Agent SDK 运行中被拒绝的工具调用

104</h3>

105 

106在 Claude Code v2.1.302 或更高版本中,[未设置权限模式](#which-mode-a-session-starts-in)的 `claude -p` 和 [Agent SDK](/docs/zh-CN/agent-sdk/permissions#permission-modes) 运行以 Manual 模式启动。此模式在 SDK 选项和设置中显示为 `default`。需要批准的调用会被拒绝,除非您通过允许规则、hook、`canUseTool` 回调或 `--permission-prompt-tool` 批准它们。

107 

108要让这些调用获得批准,请添加允许规则或以自动模式启动:

109 

110* **[添加允许规则](/docs/zh-CN/permissions#manage-permissions)**:Claude 运行您列出的调用。向 `claude -p` 传递 [`--allowedTools "Bash(npm test)"`](/docs/zh-CN/headless#auto-approve-tools),或设置您 SDK 的[允许工具选项](/docs/zh-CN/agent-sdk/permissions#allow-and-deny-rules)。

111* **以[自动模式](#eliminate-prompts-with-auto-mode)启动**:由分类器模型审查调用,因此您无需预先列出任何内容。向 `claude -p` 传递 `--permission-mode auto`,或设置您 SDK 的[权限模式选项](/docs/zh-CN/agent-sdk/permissions#set-permission-mode)。

112 

113以下示例展示了 CLI 和每个 SDK 的自动模式写法:

114 

115<Tabs>

116 <Tab title="CLI">

117 ```bash theme={null}

118 claude -p "Run the test suite and fix any failures" --permission-mode auto

119 ```

120 </Tab>

121 

122 <Tab title="TypeScript">

123 ```typescript theme={null}

124 const options = {

125 permissionMode: "auto"

126 };

127 ```

128 </Tab>

129 

130 <Tab title="Python">

131 ```python theme={null}

132 from claude_agent_sdk import ClaudeAgentOptions

133 

134 options = ClaudeAgentOptions(permission_mode="auto")

135 ```

136 </Tab>

137</Tabs>

138 

139在 v2.1.302 之前,如果这些运行不[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching),例如在[第三方提供商](/docs/zh-CN/third-party-integrations)上或设置了 `DISABLE_TELEMETRY` 时,它们可能以自动模式启动。

140 

104<h3 id="start-in-a-different-mode">141<h3 id="start-in-a-different-mode">

105 以不同的权限模式启动142 以不同的权限模式启动

106</h3>143</h3>


216 </Tab>253 </Tab>

217 254 

218 <Tab title="Desktop">255 <Tab title="Desktop">

219 **在会话期间**:在 Code 选项卡中,使用发送按钮旁边的模式选择器。并非每个模式都出现在选择器中:256 **在会话期间**:在 Code 选项卡中,使用输入框下方那一行中的模式选择器。并非每个模式都出现在选择器中:

220 257 

221 * **Auto**:当[自动模式可用](#eliminate-prompts-with-auto-mode)时出现258 * **Auto**:当[自动模式可用](#eliminate-prompts-with-auto-mode)时出现

222 * **Bypass permissions**:在 Pro 和 Max 计划上需要 Desktop 设置中的**Allow bypass permissions mode**切换;在 Team 和 Enterprise 计划上,组织策略控制它259 * **Bypass permissions**:在 Pro 和 Max 计划上需要 Desktop 设置中的**Allow bypass permissions mode**切换;在 Team 和 Enterprise 计划上,组织策略控制它


345 Bedrock、Agent Platform 或 Foundry 上的自动模式382 Bedrock、Agent Platform 或 Foundry 上的自动模式

346</h3>383</h3>

347 384 

348在 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock)、[Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai)、[Microsoft Foundry](/docs/zh-CN/microsoft-foundry) 以及已登录的 [Claude apps gateway](/docs/zh-CN/claude-apps-gateway) 会话中,自动模式默认可用。当没有其他内容设置权限模式时,在该部分表格所列的版本上,它也是[内置初始权限模式](#which-mode-a-session-starts-in)。要自行选择初始权限模式,请按照[以不同的权限模式启动](#start-in-a-different-mode)中的说明设置 `permissions.defaultMode`,或从 VS Code 扩展的模式指示器中选择权限模式。385在 [Amazon Bedrock](/docs/zh-CN/amazon-bedrock)、[Google Cloud's Agent Platform](/docs/zh-CN/google-vertex-ai)、[Microsoft Foundry](/docs/zh-CN/microsoft-foundry) 以及已登录的 [Claude apps gateway](/docs/zh-CN/claude-apps-gateway) 会话中,自动模式默认可用。如果您未在这些环境中设置权限模式,交互式会话将以自动模式启动,而 `claude -p` 或 Agent SDK 运行将以 Manual 模式启动,其配置值为 `default`:

386 

387* **交互式终端和 VS Code 会话**:要以自动模式以外的权限模式启动它们,请按照[以不同的权限模式启动](#start-in-a-different-mode)中的说明设置 `permissions.defaultMode`,或从 VS Code 扩展的[模式指示器](#switch-permission-modes)中选择一种。[会话以哪种模式启动](#which-mode-a-session-starts-in)列出了以自动模式启动这些会话的 Claude Code 版本。

388* **`claude -p` 和 Agent SDK 运行**:要以自动模式启动,请向 `claude -p` 传递 `--permission-mode auto`,或在 TypeScript 中传递 `permissionMode: "auto"`、在 Python 中传递 `permission_mode="auto"`。如果您未传递权限模式,请参阅[`claude -p` 和 Agent SDK 运行中的工具调用被拒绝](#which-mode-a-non-interactive-run-starts-in),其中也介绍了较早的 Claude Code 版本。

349 389 

350在这些提供商上,仅支持 Claude Sonnet 5 或更高版本、Opus 4.7 或更高版本、Haiku 5.5 以及 Fable 模型。在任何其他模型上,会话将改为以 Manual 模式启动。在这些提供商上将自动模式与 Haiku 5.5 一起使用需要 Claude Code v2.1.293 或更高版本。390在这些提供商上,仅支持 Claude Sonnet 5 或更高版本、Opus 4.7 或更高版本、Haiku 5.5 以及 Fable 模型。在任何其他模型上,会话将改为以 Manual 模式启动。在这些提供商上将自动模式与 Haiku 5.5 一起使用需要 Claude Code v2.1.293 或更高版本。

351 391 


368 408 

369要跳过请求服务器审查并始终使用 Claude Code 自身的分类器请求,请设置 [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/zh-CN/env-vars)。在直接连接到 Anthropic API 时,该变量需要 Claude Code v2.1.281 或更高版本。在这种连接上将其设置为 `1`,会在尚未启用服务器审查的会话中启用它,除非您同时设置了 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`。如果您设置了 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` 且未设置 `CLAUDE_CODE_AUTO_MODE_SERVER`,Claude Code 也会停止请求服务器审查,[禁用预发布功能](/docs/zh-CN/llm-gateway-protocol#disable-pre-release-capabilities)中描述的情况除外。409要跳过请求服务器审查并始终使用 Claude Code 自身的分类器请求,请设置 [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/zh-CN/env-vars)。在直接连接到 Anthropic API 时,该变量需要 Claude Code v2.1.281 或更高版本。在这种连接上将其设置为 `1`,会在尚未启用服务器审查的会话中启用它,除非您同时设置了 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`。如果您设置了 `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` 且未设置 `CLAUDE_CODE_AUTO_MODE_SERVER`,Claude Code 也会停止请求服务器审查,[禁用预发布功能](/docs/zh-CN/llm-gateway-protocol#disable-pre-release-capabilities)中描述的情况除外。

370 410 

411<h3 id="default-classifier-model">

412 默认分类器模型

413</h3>

414 

415默认情况下,分类器请求会发送到 Claude Sonnet 5。如果 `/status` 将 `Auto mode server` 显示为 `Enabled`,则仅针对[服务器审查](#server-side-classifier-review)范围之外的调用发送这些请求。

416 

417在下表中找到与您的会话匹配的第一行。您将使用该行的模型,而不是 Sonnet 5。

418 

419| 您的会话 | 分类器模型 |

420| - | - |

421| 具有 Anthropic 配置的分类器模型 | 所配置的模型。[查看调试日志](#classifier-model-check)以确定是哪个模型 |

422| 在 Claude Sonnet 4.6 上运行 | Sonnet 4.6 |

423| 设置了 [`ANTHROPIC_DEFAULT_SONNET_MODEL`](/docs/zh-CN/model-config#environment-variables) | 其值;如果其值为 Claude Sonnet 5.5 或 Claude Opus 5.5,则为 Sonnet 5 |

424 

425如果 Sonnet 5 或 `ANTHROPIC_DEFAULT_SONNET_MODEL` 中的模型无法从您的提供商获得,或被您组织的[模型策略](/docs/zh-CN/model-config#restrict-model-selection)排除,Claude Code 会使用备用模型。该备用模型是您会话的模型,在 [Fable 会话](/docs/zh-CN/model-config#work-with-fable)中则是 Opus 模型。

426 

427<h3 id="choose-the-classifier-model">

428 选择分类器模型

429</h3>

430 

431在 Claude Code v2.1.302 或更高版本中,将 [`CLAUDE_CODE_AUTO_MODE_MODEL`](/docs/zh-CN/env-vars) 设置为完整的模型 ID,即可在[默认模型](#default-classifier-model)以外的模型上运行分类器。您的云提供商自己的完整模型 ID 也可以使用。以下 `~/.claude/settings.json` 示例设置了 Claude Sonnet 4.6:

432 

433```json theme={null}

434{

435 "env": {

436 "CLAUDE_CODE_AUTO_MODE_MODEL": "claude-sonnet-4-6"

437 }

438}

439```

440 

441<h4 id="classifier-model-not-reviewing">

442 当审查的并非您设置的模型时

443</h4>

444 

445| 情况 | 会发生什么 | 处理方法 |

446| - | - | - |

447| 在会话中,`/status` 将 [`Auto mode server`](#server-side-classifier-review) 显示为 `Enabled` | 您的模型仅审查服务器不审查的内容 | 无需处理 |

448| 您设置了 Claude Opus 5、Claude Sonnet 5.5、Claude Opus 5.5,或被您组织的[模型策略](/docs/zh-CN/model-config#restrict-model-selection)排除的模型 | 由[默认分类器模型](#default-classifier-model)进行审查 | 设置其他模型 |

449| Anthropic 为您的会话配置了分类器模型 | 由该模型进行审查 | 无需处理 |

450| 您的提供商无法提供该模型 | 请求失败,Claude Code 会[拒绝每个需审查的操作](/docs/zh-CN/errors#auto-mode-cannot-determine-the-safety-of-an-action) | 设置该提供商可提供的模型,或移除该变量 |

451 

452<h4 id="classifier-model-check">

453 查看分类器使用了哪个模型

454</h4>

455 

456在 shell 中,使用 [`--debug-file`](/docs/zh-CN/cli-reference#cli-flags) 启动一个自动模式会话:

457 

458```bash theme={null}

459claude --permission-mode auto --debug-file classifier-debug.log

460```

461 

462让 Claude 运行一个非只读的 shell 命令,然后在日志中搜索 `classifier_request_started`:

463 

464* **`model=` 之后是您的模型**:该变量已生效

465* **`model=` 之后是其他模型**:在日志中搜索 `ignoring CLAUDE_CODE_AUTO_MODE_MODEL`,其中会给出原因以及需要采取的步骤

466* **没有这样的行**:在 Claude Code 提示符下查看 `/status` 中的 `Auto mode server`:

467 * **`Enabled`**:[服务器](#server-side-classifier-review)已设置为审查此会话的调用。无需更改。

468 * **`Disabled`**:确保[权限模式](#switch-permission-modes)为 auto,然后让 Claude 再运行一个非只读的命令。

469 

371<h3 id="what-the-classifier-blocks-by-default">470<h3 id="what-the-classifier-blocks-by-default">

372 分类器默认阻止的内容471 分类器默认阻止的内容

373</h3>472</h3>


384* 修改共享基础设施483* 修改共享基础设施

385* 不可逆地销毁会话开始前已存在的文件484* 不可逆地销毁会话开始前已存在的文件

386* 强制推送485* 强制推送

387* 提交或推送一项更改,该更改在运行时会将密钥或敏感数据发送到仓库之外,或扩大部署所暴露的内容。这包括将密钥传递给尚未接收它的目标的 CI 工作流或部署配置、读取密钥存储并将数据发送出去的脚本或设置步骤,以及扩大部署发布内容的配置更改,例如注册表、可见性、制品或 sourcemap 设置。该检查适用于任何分支,即使仓库是公开的也同样适用,并在更改被提交或推送时触发,无论该提交或推送是否会触发流水线;要解除阻止,需要说明其执行效果,而不仅仅是提交或推送本身。在 v2.1.211 之前,该检查改为限定于默认分支:当推送到默认分支的内容包含敏感内容、相对于您的要求隐瞒或错误描述的更改、从仓库外部移植的内容,或绕过了您要求的审查时,该推送会被阻止486* 提交或推送一项更改,该更改在运行时会将密钥或敏感数据发送到仓库之外,或扩大部署所暴露的内容。这包括将密钥传递给尚未接收它的目标的 CI 工作流或部署配置、读取密钥存储并将数据发送出去的脚本或设置步骤,以及扩大部署发布内容的配置更改,例如注册表、可见性、制品或 sourcemap 设置。该检查适用于任何分支,即使仓库是公开的也同样适用,并在更改被提交或推送时触发,无论该提交或推送是否会触发流水线;要解除阻止,需要说明其执行效果,而不仅仅是提交或推送本身

388* `git reset --hard`、`git checkout -- .`、`git restore .`、`git clean -fd`、`git stash drop` 或 `git stash clear`,分类器会假定这些命令会丢弃未提交的更改487* `git reset --hard`、`git checkout -- .`、`git restore .`、`git clean -fd`、`git stash drop` 或 `git stash clear`,分类器会假定这些命令会丢弃未提交的更改

389* 当 HEAD 处的提交并非在本会话中创建时执行 `git commit --amend`488* 当 HEAD 处的提交并非在本会话中创建时执行 `git commit --amend`

390* 从 v2.1.198 起,当 HEAD 处的提交已被推送时执行 `git commit --amend`。仅修改提交信息的改写不会被阻止:即在 Claude 于本会话中创建的提交上,不暂存任何新内容的情况下执行 `--amend -m`489* 从 v2.1.198 起,当 HEAD 处的提交已被推送时执行 `git commit --amend`。仅修改提交信息的改写不会被阻止:即在 Claude 于本会话中创建的提交上,不暂存任何新内容的情况下执行 `--amend -m`


568 </Accordion>667 </Accordion>

569 668 

570 <Accordion title="成本和延迟">669 <Accordion title="成本和延迟">

571 分类器默认在 Claude Sonnet 5 上运行,而不是在您通过 `/model` 选择的模型上运行。Anthropic 在服务器端配置的分类器模型优先于该默认值。当您会话的模型是 Claude Sonnet 4.6,或者 [`availableModels`](/docs/zh-CN/model-config#restrict-model-selection) 排除了 Sonnet 5 时,分类器会改为在会话的模型上运行;当会话在 [Fable 模型](/docs/zh-CN/model-config#work-with-fable)上运行时,则在 Opus 模型上运行。在 Anthropic API 以外的提供商上,该备用 Opus 模型是您在 [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/zh-CN/model-config#environment-variables) 中设置的模型,如果您未设置,则为 Opus 5。670 Claude Code 的分类器请求可以在您通过 `/model` 选择的模型以外的模型上运行。请参阅[它们在哪个模型上运行](#default-classifier-model)。

572 

573 会话的第一个自动模式请求会验证 Sonnet 5 默认值:如果请求成功,Sonnet 5 将保持为该会话的分类器模型;如果因模型不可用而失败,该会话将改用备用模型。

574 671 

575 在 Enterprise 计划以及使用 Claude API、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws)、Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry 的账户上,分类器调用会计入您的 token 用量。每次检查都会发送部分会话记录以及待执行的操作,从而在执行前增加一次往返。受保护路径之外的读取和工作目录编辑会跳过分类器,因此开销主要来自 shell 命令和网络操作。当服务器在会话的模型请求中审查操作时,不存在需要计算的单独分类器调用;请参阅[服务器端分类器审查](#server-side-classifier-review)。672 在 Enterprise 计划以及使用 Claude API、[Claude Platform on AWS](/docs/zh-CN/claude-platform-on-aws)、Amazon Bedrock、Google Cloud's Agent Platform 或 Microsoft Foundry 的账户上,分类器调用会计入您的 token 用量。每次检查都会发送部分会话记录以及待执行的操作,从而在执行前增加一次往返。受保护路径之外的读取和工作目录编辑会跳过分类器,因此开销主要来自 shell 命令和网络操作。当服务器在会话的模型请求中审查操作时,不存在需要计算的单独分类器调用;请参阅[服务器端分类器审查](#server-side-classifier-review)。

576 673 

permissions.md +3 −3

Details

391 391 

392Claude Code 在 v2.1.290 及更高版本中检查粘贴的图片路径和目录列表。392Claude Code 在 v2.1.290 及更高版本中检查粘贴的图片路径和目录列表。

393 393 

394`Read` deny 规则也会阻止同一路径上的 [Edit 和 Write 工具](/docs/zh-CN/errors#file-is-covered-by-a-read-deny-rule),包括在那里创建新文件。NotebookEdit 不被覆盖,因此为任何工具都不能更改的路径添加 `Edit` deny 规则。检查需要 Claude Code v2.1.208 或更高版本进行编辑,以及 v2.1.228 或更高版本进行写入。394`Read` deny 规则也会阻止同一路径上的 [Edit 和 Write 工具](/docs/zh-CN/errors#file-is-covered-by-a-read-deny-rule),包括在那里创建新文件。NotebookEdit 不被覆盖,因此为任何工具都不能更改的路径添加 `Edit` deny 规则。对于 Write 工具,该检查需要 Claude Code v2.1.228 或更高版本。

395 395 

396Claude Code 仅根据 `Edit(path)` 和 `Read(path)` 规则检查文件权限。如果您为 `Write`、`NotebookEdit`、`Glob` 或旧版 `MultiEdit` 工具编写路径规则,Claude Code 接受该规则但从不查询它,并在启动时[警告](/docs/zh-CN/errors#is-not-matched-by-file-permission-checks),除了在 `--allowedTools` 中传递的 `Glob` 规则。使用 `Edit(docs/**)` 代替 `Write(docs/**)`、`NotebookEdit(docs/**)` 或 `MultiEdit(docs/**)`,以及 `Read(docs/**)` 代替 `Glob(docs/**)`。Claude Code 不会警告没有路径的工具名称规则,如 `Write` 的 deny 规则;它在任何地方在工具级别匹配该规则。需要 Claude Code v2.1.210 或更高版本。396Claude Code 仅根据 `Edit(path)` 和 `Read(path)` 规则检查文件权限。如果您为 `Write`、`NotebookEdit`、`Glob` 或旧版 `MultiEdit` 工具编写路径规则,Claude Code 接受该规则但从不查询它,并在启动时[警告](/docs/zh-CN/errors#is-not-matched-by-file-permission-checks),除了在 `--allowedTools` 中传递的 `Glob` 规则。使用 `Edit(docs/**)` 代替 `Write(docs/**)`、`NotebookEdit(docs/**)` 或 `MultiEdit(docs/**)`,以及 `Read(docs/**)` 代替 `Glob(docs/**)`。Claude Code 不会警告没有路径的工具名称规则,如 `Write` 的 deny 规则;它在任何地方在工具级别匹配该规则。

397 397 

398<Warning>398<Warning>

399 Read 和 Edit deny 规则适用于 Claude 的内置文件工具、Claude Code 在 Bash 中识别的文件命令(如 `cat`、`head`、`tail`、`sed` 和 `tee`)以及 Bash [重定向](#redirections)的目标(如 `> file` 和 `< file`)。它们不适用于读取文件而不命名它们的命令,如从保存文件的目录运行的 `grep -r pattern .`,或间接读取或写入文件的任意子进程,如打开文件本身的 Python 或 Node 脚本。对于阻止所有进程访问路径的 OS 级别强制执行,请[启用沙箱](/docs/zh-CN/sandboxing)。399 Read 和 Edit deny 规则适用于 Claude 的内置文件工具、Claude Code 在 Bash 中识别的文件命令(如 `cat`、`head`、`tail`、`sed` 和 `tee`)以及 Bash [重定向](#redirections)的目标(如 `> file` 和 `< file`)。它们不适用于读取文件而不命名它们的命令,如从保存文件的目录运行的 `grep -r pattern .`,或间接读取或写入文件的任意子进程,如打开文件本身的 Python 或 Node 脚本。对于阻止所有进程访问路径的 OS 级别强制执行,请[启用沙箱](/docs/zh-CN/sandboxing)。


762 762 

763当您启用沙箱并将 `autoAllowBashIfSandboxed` 保留为其默认值 `true` 时,沙箱化的 Bash 命令无需提示即可运行,即使您的权限包括裸 `Bash` ask 规则,或[等效的 `Bash(*)` 形式](#match-all-uses-of-a-tool):沙箱边界替代了该整体工具提示。763当您启用沙箱并将 `autoAllowBashIfSandboxed` 保留为其默认值 `true` 时,沙箱化的 Bash 命令无需提示即可运行,即使您的权限包括裸 `Bash` ask 规则,或[等效的 `Bash(*)` 形式](#match-all-uses-of-a-tool):沙箱边界替代了该整体工具提示。

764 764 

765在[计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)中,Claude Code 跳过此替代。没有 ask 规则时,[内置只读命令](#read-only-commands)仍然无需提示即可运行,任何其他 shell 命令在您仍在计划时通过常规权限流程;请参见[计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)了解 Claude Code 如何在那里控制命令。使用裸 `Bash` ask 规则时,每个 Bash 命令都会提示,包括沙箱化的只读命令,与沙箱外相同。在 v2.1.212 之前,替代也适用于计划模式。765在[计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)中,Claude Code 跳过此替代。没有 ask 规则时,[内置只读命令](#read-only-commands)仍然无需提示即可运行,任何其他 shell 命令在您仍在计划时通过常规权限流程;请参见[计划模式](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode)了解 Claude Code 如何在那里控制命令。使用裸 `Bash` ask 规则时,每个 Bash 命令都会提示,包括沙箱化的只读命令,与沙箱隔离之外相同。

766 766 

767这些检查仍然适用:767这些检查仍然适用:

768 768 

Details

95 95 

96 <Steps>96 <Steps>

97 <Step title="打开插件浏览器">97 <Step title="打开插件浏览器">

98 单击提示框旁边的 **+** 按钮,选择 **Plugins**,然后选择 **Add plugin**。插件浏览器打开,显示来自您的市场的插件。98 单击提示框旁边的 **+** 按钮,然后选择 **Add plugins**。如果 **+** 菜单显示的是 **Plugins** 而不是 **Add plugins**,请选择 **Plugins**,然后选择 **Browse plugins**。插件浏览器打开,显示来自您的市场的插件。

99 </Step>99 </Step>

100 100 

101 <Step title="选择插件">101 <Step title="选择插件">

102 找到 `commit-commands` 并选择它。102 找到 `commit-commands` 并选择它。

103 </Step>103 </Step>

104 104 

105 <Step title="选择范围">105 <Step title="选择作用域">

106 选择 [scope](#choose-an-install-scope):您的用户账户、此项目或仅本地。106 选择 [作用域](#choose-an-install-scope):您的用户账户、此项目或仅本地。

107 </Step>107 </Step>

108 </Steps>108 </Steps>

109 109 

110 要稍后启用、禁用或卸载,请使用 **+ > Plugins > Manage plugins**。插件浏览器在桌面应用的云会话中不可用。请参阅 [Install plugins in the desktop app](/docs/zh-CN/desktop#install-plugins)。110 要稍后启用、禁用或卸载插件,请参阅 [Install plugins in the desktop app](/docs/zh-CN/desktop#install-plugins)。

111 </Tab>111 </Tab>

112 112 

113 <Tab title="VS Code">113 <Tab title="VS Code">

Details

157| [`commands`](#commands) | Path, array of paths, or object | 平面 `.md` 命令文件、它们的目录或命令名称到 `source` 或 `content` 的对象映射。替换默认 `commands/` 扫描 |157| [`commands`](#commands) | Path, array of paths, or object | 平面 `.md` 命令文件、它们的目录或命令名称到 `source` 或 `content` 的对象映射。替换默认 `commands/` 扫描 |

158| `agents` | Path, or array of paths | Agent `.md` 文件。不接受目录。替换默认 `agents/` 扫描 |158| `agents` | Path, or array of paths | Agent `.md` 文件。不接受目录。替换默认 `agents/` 扫描 |

159| [`hooks`](#hooks) | Path, object, or array of either | `.json` hook 文件或内联 hook 配置。与 `hooks/hooks.json` 一起加载 |159| [`hooks`](#hooks) | Path, object, or array of either | `.json` hook 文件或内联 hook 配置。与 `hooks/hooks.json` 一起加载 |

160| [`mcpServers`](#mcpservers) | Path, object, or array of either | `.json` MCP 配置文件、`.mcpb` 或 `.dxt` 包,或按名称键入的内联服务器配置。与 `.mcp.json` 一起加载;稍后声明的服务器名称替换较早的名称 |160| [`mcpServers`](#mcpservers) | Path, object, or array of either | `.json` MCP 配置文件、`.mcpb` 或 `.dxt` 包,或以名称为键的内联服务器配置。与 `.mcp.json` 一起加载;稍后声明的服务器名称替换较早的名称 |

161| [`lspServers`](#lspservers) | Path, object, or array of either | `.json` LSP 配置文件或按名称键入的内联服务器配置。与 `.lsp.json` 一起加载 |161| [`lspServers`](#lspservers) | Path, object, or array of either | `.json` LSP 配置文件或以名称为键的内联服务器配置。与 `.lsp.json` 一起加载 |

162| `outputStyles` | Path, or array of paths | 输出样式文件或目录。替换默认 `output-styles/` 扫描 |162| `outputStyles` | Path, or array of paths | 输出样式文件或目录。替换默认 `output-styles/` 扫描 |

163| `workflows` | Path, or array of paths | [Workflow](/docs/zh-CN/workflows#distribute-a-workflow-in-a-plugin) `.js` 文件或目录。替换默认 `workflows/` 扫描 |163| `workflows` | Path, or array of paths | [Workflow](/docs/zh-CN/workflows#distribute-a-workflow-in-a-plugin) `.js` 文件或目录。替换默认 `workflows/` 扫描 |

164| `experimental` | Object | `themes`、`monitors` 和 `evals` 的容器,其 manifest 形式可能仍会改变 |164| `experimental` | Object | `themes`、`monitors` 和 `evals` 的容器,其 manifest 形式可能仍会改变 |


345| `.json` 文件路径 | `"./mcp/servers.json"` | 将文件读取为 `mcpServers` 映射 |345| `.json` 文件路径 | `"./mcp/servers.json"` | 将文件读取为 `mcpServers` 映射 |

346| MCP 包路径 | `"./bundle.mcpb"` | 将 `.mcpb` 或 `.dxt` 包提取到 plugin 根目录下的 `.mcpb-cache/` 并读取其服务器配置 |346| MCP 包路径 | `"./bundle.mcpb"` | 将 `.mcpb` 或 `.dxt` 包提取到 plugin 根目录下的 `.mcpb-cache/` 并读取其服务器配置 |

347| MCP 包 URL | `"https://example.com/server.mcpb"` | 将包下载到 `.mcpb-cache/`,然后读取它 |347| MCP 包 URL | `"https://example.com/server.mcpb"` | 将包下载到 `.mcpb-cache/`,然后读取它 |

348| 内联映射 | `{ "deploy-api": { "command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"] } }` | 使用映射作为按名称键入的服务器配置 |348| 内联映射 | `{ "deploy-api": { "command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"] } }` | 使用映射作为以名称为键的服务器配置 |

349 349 

350包路径或 URL 必须以 `.mcpb` 或 `.dxt` 结尾。任何其他扩展名验证失败。350包路径或 URL 必须以 `.mcpb` 或 `.dxt` 结尾。任何其他扩展名验证失败。

351 351 

Details

490| `Marketplace must have a name` | 错误 | `name` 为空 |490| `Marketplace must have a name` | 错误 | `name` 为空 |

491| `Marketplace name cannot contain spaces. Use kebab-case (e.g., "my-marketplace")` | 错误 | `name` |491| `Marketplace name cannot contain spaces. Use kebab-case (e.g., "my-marketplace")` | 错误 | `name` |

492| `Marketplace name cannot contain path separators (/ or \), ".." sequences, or be "."` | 错误 | `name` |492| `Marketplace name cannot contain path separators (/ or \), ".." sequences, or be "."` | 错误 | `name` |

493| `Marketplace name impersonates an official Anthropic/Claude marketplace` | 错误 | `name`。请参阅 [Reserved names](#reserved-names) |493| `Marketplace name impersonates an official Anthropic/Claude marketplace` | 错误 | `name`。请参阅 [保留名称](#reserved-names) |

494| `Marketplace name cannot contain control or bidirectional-formatting characters` | 错误 | `name` 包含控制字符,例如转义或换行符,或 Unicode 双向格式化字符 |494| `Marketplace name cannot contain control or bidirectional-formatting characters` | 错误 | `name` 包含控制字符,例如转义或换行符,或 Unicode 双向格式化字符 |

495| `Marketplace name "inline" is reserved for --plugin-dir session plugins`, and the `builtin`, `skills-dir`, `synced`, `claude-plugin-test`, `npm`, `pip`, `uv`, `cargo`, `github`, and `gh` variants | 错误 | `name` |495| `Marketplace name "inline" is reserved for --plugin-dir session plugins`, and the `builtin`, `skills-dir`, `synced`, `claude-plugin-test`, `npm`, `pip`, `uv`, `cargo`, `github`, and `gh` variants | 错误 | `name` |

496| `Author name cannot be empty` | 错误 | `owner.name` |496| `Author name cannot be empty` | 错误 | `owner.name` |

Details

362 在 VS Code 扩展中绘制362 在 VS Code 扩展中绘制

363</h3>363</h3>

364 364 

365在 VS Code 扩展中,当扩展版本为 2.1.299 或更高,且会话会[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)时,mod 绘制的内容会显示在聊天面板中。在面板的 `ui.render` hook 中,`e.surface` 为 `vscode`。要查看面板会绘制哪些位置和元素,以及会忽略哪些 prop,请参阅[渲染位置](/docs/zh-CN/plugins/mods/reference#render-sites)表和[元素](/docs/zh-CN/plugins/mods/reference#elements)表。365在 VS Code 扩展中,当扩展版本为 2.1.299 或更高时,mod 绘制的内容会显示在聊天面板中。[不获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话(例如在 Amazon Bedrock 上运行的会话)需要 2.1.304 或更高版本。在面板的 `ui.render` hook 中,`e.surface` 为 `vscode`。要查看面板会绘制哪些位置和元素,以及会忽略哪些 prop,请参阅[渲染位置](/docs/zh-CN/plugins/mods/reference#render-sites)表和[元素](/docs/zh-CN/plugins/mods/reference#elements)表。

366 366 

367要让 mod 既能在终端中运行,也能在面板中运行,请考虑以下差异:367要让 mod 既能在终端中运行,也能在面板中运行,请考虑以下差异:

368 368 

Details

219| 终端中的 `claude`,包括编辑器的集成终端和 JetBrains 插件 | 是 | 是 |219| 终端中的 `claude`,包括编辑器的集成终端和 JetBrains 插件 | 是 | 是 |

220| 桌面应用的代码选项卡,WSL 会话除外 | 是 | 是,[元素表](/docs/zh-CN/plugins/mods/reference#elements)标记为仅限终端的元素除外 |220| 桌面应用的代码选项卡,WSL 会话除外 | 是 | 是,[元素表](/docs/zh-CN/plugins/mods/reference#elements)标记为仅限终端的元素除外 |

221| 桌面应用中的 [WSL 会话](/docs/zh-CN/desktop-wsl) | 否,因为插件在 WSL 会话中不可用 | 否 |221| 桌面应用中的 [WSL 会话](/docs/zh-CN/desktop-wsl) | 否,因为插件在 WSL 会话中不可用 | 否 |

222| VS Code 扩展的聊天面板 | 是 | 是,需使用扩展版本 2.1.299 或更高版本,并且在[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话中。[渲染位置](/docs/zh-CN/plugins/mods/reference#render-sites)表和[元素](/docs/zh-CN/plugins/mods/reference#elements)表标出了该面板绘制的内容。 |222| VS Code 扩展的聊天面板 | 是 | 是,需使用扩展版本 2.1.299 或更高版本。[不获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话(例如 Amazon Bedrock 上的会话)需要 2.1.304 或更高版本。[渲染位置](/docs/zh-CN/plugins/mods/reference#render-sites)表和[元素](/docs/zh-CN/plugins/mods/reference#elements)表标出了该面板绘制的内容。 |

223| `claude -p` 和 [Agent SDK](/docs/zh-CN/agent-sdk/overview) | 是 | 否 |223| `claude -p` 和 [Agent SDK](/docs/zh-CN/agent-sdk/overview) | 是 | 否 |

224| 从 claude.ai 或移动应用使用 [Remote Control](/docs/zh-CN/remote-control) | 是,在您机器上的会话中 | 在您机器上的终端中 |224| 从 claude.ai 或移动应用使用 [Remote Control](/docs/zh-CN/remote-control) | 是,在您机器上的会话中 | 在您机器上的终端中 |

225| [云端会话](/docs/zh-CN/claude-code-on-the-web) | 是,适用于[可进入云端会话](/docs/zh-CN/cloud-environments#what-carries-over-from-your-setup)的插件 | 否 |225| [云端会话](/docs/zh-CN/claude-code-on-the-web) | 是,适用于[可进入云端会话](/docs/zh-CN/cloud-environments#what-carries-over-from-your-setup)的插件 | 否 |

Details

257 257 

258渲染位置是 Claude Code 界面中的扩展点。每一行是 `ui.render` hook 中 `e.component` 的一个值,并列出了 `e.props` 的字段以及渲染它的应用。`e.surface` 指明正在绘制的应用,例如 `terminal`、`desktop` 或 `vscode`。[更改 Claude Code 已绘制的内容](/docs/zh-CN/plugins/mods/interface#change-what-claude-code-already-draws)展示了 hook 在某个位置可以做什么,并为每种选择提供了示例。258渲染位置是 Claude Code 界面中的扩展点。每一行是 `ui.render` hook 中 `e.component` 的一个值,并列出了 `e.props` 的字段以及渲染它的应用。`e.surface` 指明正在绘制的应用,例如 `terminal`、`desktop` 或 `vscode`。[更改 Claude Code 已绘制的内容](/docs/zh-CN/plugins/mods/interface#change-what-claude-code-already-draws)展示了 hook 在某个位置可以做什么,并为每种选择提供了示例。

259 259 

260在 VS Code 扩展中进行渲染需要扩展版本 2.1.299 或更高版本,并且需要一个[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话。[在 VS Code 扩展中绘制](/docs/zh-CN/plugins/mods/interface#draw-in-the-vs-code-extension)列出了该扩展在绘制上的不同之处。260在 VS Code 扩展中进行渲染需要扩展版本 2.1.299 或更高版本。[不获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话需要 2.1.304 或更高版本。[在 VS Code 扩展中绘制](/docs/zh-CN/plugins/mods/interface#draw-in-the-vs-code-extension)列出了该扩展在绘制上的不同之处。

261 261 

262| 位置 | `e.props` | `e.requestId` | 渲染于 |262| 位置 | `e.props` | `e.requestId` | 渲染于 |

263| :- | :- | :- | :- |263| :- | :- | :- | :- |

Details

315 315 

316* **该位置或元素在该应用中不会被绘制**:在[渲染位置](/docs/zh-CN/plugins/mods/reference#render-sites)表中查找您的位置,并在[元素](/docs/zh-CN/plugins/mods/reference#elements)表中查找您的元素。对于该应用不具备的元素,请在 hook 中检查 `e.surface`,并返回该应用可以绘制的树。316* **该位置或元素在该应用中不会被绘制**:在[渲染位置](/docs/zh-CN/plugins/mods/reference#render-sites)表中查找您的位置,并在[元素](/docs/zh-CN/plugins/mods/reference#elements)表中查找您的元素。对于该应用不具备的元素,请在 hook 中检查 `e.surface`,并返回该应用可以绘制的树。

317* **VS Code 扩展版本低于 2.1.299**:从[扩展版本](/docs/zh-CN/vs-code#install-the-extension) 2.1.299 起,聊天面板才会为 mod 进行绘制。请在 VS Code 的扩展视图中检查版本,并在该处更新扩展。317* **VS Code 扩展版本低于 2.1.299**:从[扩展版本](/docs/zh-CN/vs-code#install-the-extension) 2.1.299 起,聊天面板才会为 mod 进行绘制。请在 VS Code 的扩展视图中检查版本,并在该处更新扩展。

318* **该 VS Code 会话不获取功能标志**:在聊天面板中绘制需要获取功能标志。在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的会话,或通过 [Claude apps 网关](/docs/zh-CN/claude-apps-gateway)的会话,以及[需要获取功能标志的功能](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)中列出的其他会话,都会跳过此步骤。要在此类会话中查看绘图,请改为在终端(例如 VS Code 的集成终端)中运行 `claude`。318* **扩展版本低于 2.1.304,且该会话不获取功能标志**:请更新扩展,或改为在 VS Code 的集成终端中运行 `claude`。在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上的会话会跳过此获取步骤。对于跳过此步骤的其他会话,例如 [Claude apps 网关](/docs/zh-CN/claude-apps-gateway)会话,请参阅[需要获取功能标志的功能](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)。

319 319 

320<h2 id="an-edit-or-a-value-is-lost">320<h2 id="an-edit-or-a-value-is-lost">

321 编辑或值丢失321 编辑或值丢失

Details

40 40 

41从您所在的表面安装插件:41从您所在的表面安装插件:

42 42 

43* **Claude 桌面应用、本地或 SSH 会话**:点击提示旁边的 **+** 按钮,然后点击 **Plugins**,然后点击 **Add plugin** 打开 [插件浏览器](/docs/zh-CN/desktop#install-plugins)43* **Claude 桌面应用、本地或 SSH 会话**:使用 [安装插件](/docs/zh-CN/plugins/install#install-a-plugin) 下的 **Desktop app** 选项卡

44* **VS Code 扩展**:使用 [安装插件](/docs/zh-CN/plugins/install#install-a-plugin) 下的 **VS Code** 选项卡44* **VS Code 扩展**:使用 [安装插件](/docs/zh-CN/plugins/install#install-a-plugin) 下的 **VS Code** 选项卡

45* **网络上的 Claude Code 或桌面云会话**:云会话没有插件浏览器。有关云会话加载的内容,请参阅 [安装插件](/docs/zh-CN/plugins/install#install-a-plugin) 下的 **Cloud session** 选项卡45* **网络上的 Claude Code 或桌面云会话**:云会话没有插件浏览器。有关云会话加载的内容,请参阅 [安装插件](/docs/zh-CN/plugins/install#install-a-plugin) 下的 **Cloud session** 选项卡

46* **您有权访问的终端**:运行 `claude` 并在那里键入 `/plugin`,或在您的 shell 中运行 `claude plugin install <plugin>@<marketplace>` 而不启动会话46* **您有权访问的终端**:运行 `claude` 并在那里键入 `/plugin`,或在您的 shell 中运行 `claude plugin install <plugin>@<marketplace>` 而不启动会话

Details

122mkdir -p ~/.claude && { [ -f ~/.claude.json ] || echo '{}' > ~/.claude.json; }122mkdir -p ~/.claude && { [ -f ~/.claude.json ] || echo '{}' > ~/.claude.json; }

123```123```

124 124 

125设置文件就位后,使用 `npx` 启动 Claude Code 并传递 `claude` 作为要包装的命令:125全局安装运行时,安装前缀应位于您允许写入的所有路径之外:

126 126 

127```bash theme={null}127```bash theme={null}

128npx @anthropic-ai/sandbox-runtime claude128npm install -g @anthropic-ai/sandbox-runtime

129```129```

130 130 

131Claude Code 在沙箱内启动,具有您配置的文件系统和网络边界。相同的命令适用于沙箱化独立 MCP 服务器或其他辅助进程。131设置文件就位后,从您的项目目录通过运行时启动 Claude Code:

132 

133```bash theme={null}

134srt claude

135```

136 

137Claude Code 在沙箱内启动,具有您配置的文件系统和网络边界。相同的 `srt` 命令适用于沙箱化独立 MCP 服务器或其他辅助进程。

132 138 

133<h3 id="what-the-runtime-blocks-on-its-own">139<h3 id="what-the-runtime-blocks-on-its-own">

134 运行时自身阻止的内容140 运行时自身阻止的内容

Details

33 33 

34`/plugin` 在终端 CLI 中打开一个交互式面板。如果 Claude 回复说 `/plugin` 在此环境中不可用,请以其他方式安装:34`/plugin` 在终端 CLI 中打开一个交互式面板。如果 Claude 回复说 `/plugin` 在此环境中不可用,请以其他方式安装:

35 35 

36* **Claude 桌面应用、本地或 SSH 会话**:点击提示旁边的 **+** 按钮,然后点击 **Plugins**,再点击 **Add plugin**,打开[插件浏览器](/docs/zh-CN/desktop#install-plugins)36* **Claude 桌面应用、本地或 SSH 会话**:使用[安装插件](/docs/zh-CN/plugins/install#install-a-plugin)下的 **Desktop app** 选项卡

37* **VS Code 扩展**:从[**Manage plugins** 对话框](/docs/zh-CN/vs-code#manage-plugins)安装37* **VS Code 扩展**:从[**Manage plugins** 对话框](/docs/zh-CN/vs-code#manage-plugins)安装

38* **云会话**:云会话不会从您的用户设置或存储库的 `.claude/settings.json` 加载插件,如[您的设置中哪些内容会保留](/docs/zh-CN/cloud-environments#what-carries-over-from-your-setup)所解释。对于您的组织通过托管设置分发的插件,请参阅[为您的组织管理插件](/docs/zh-CN/plugins/org)38* **云会话**:云会话不会从您的用户设置或存储库的 `.claude/settings.json` 加载插件,如[您的设置中哪些内容会保留](/docs/zh-CN/cloud-environments#what-carries-over-from-your-setup)所解释。对于您的组织通过托管设置分发的插件,请参阅[为您的组织管理插件](/docs/zh-CN/plugins/org)

39 39 

Details

554* **使用 [`--retire-at`](/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags)**:在退休时间与主机停止时间之间留出足够的时间,以便典型轮次完成,再加上 [Runner lifecycle](/docs/zh-CN/self-hosted-environments#runner-lifecycle) 所述的后台任务等待时间,再加上记录的时间。在每次启动时计算退休时间,例如 `date +%s` 加上运行器的预期生命周期。554* **使用 [`--retire-at`](/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags)**:在退休时间与主机停止时间之间留出足够的时间,以便典型轮次完成,再加上 [Runner lifecycle](/docs/zh-CN/self-hosted-environments#runner-lifecycle) 所述的后台任务等待时间,再加上记录的时间。在每次启动时计算退休时间,例如 `date +%s` 加上运行器的预期生命周期。

555* **使用 [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal)**:停止超时时间还必须涵盖您配置的分钟数,以及排空开始前的进一步等待时间(默认设置下为 75 秒)。[Defer the drain past the first signal](#defer-the-drain-past-the-first-signal) 对这两者都有说明。运行器同样会在启动时记录这一更长的时间。555* **使用 [`--defer-shutdown-max-min`](#defer-the-drain-past-the-first-signal)**:停止超时时间还必须涵盖您配置的分钟数,以及排空开始前的进一步等待时间(默认设置下为 75 秒)。[Defer the drain past the first signal](#defer-the-drain-past-the-first-signal) 对这两者都有说明。运行器同样会在启动时记录这一更长的时间。

556 556 

557<h3 id="post-a-status-message-before-a-restart">

558 在重启前发布状态消息

559</h3>

560 

561在进行会中断会话的重启之前,请让 [Owner](/docs/zh-CN/cloud-environments#organization-shared-environments) 从 [**Cloud environments** 管理页面](https://claude.ai/admin-settings/cloud-environments)在该环境上发布一条状态消息。在 [claude.ai/code](https://claude.ai/code) 中,成员会在该环境内的会话中看到这条消息。请让 Owner 在发布时设置过期时间,或在运行器恢复后移除该消息。

562 

557<h3 id="defer-the-drain-past-the-first-signal">563<h3 id="defer-the-drain-past-the-first-signal">

558 延迟排空超过第一个信号564 延迟排空超过第一个信号

559</h3>565</h3>


632 固定版本638 固定版本

633</h2>639</h2>

634 640 

635每个会话的子 Claude Code 进程运行运行器自己的二进制文件,运行器在它生成的会话内关闭自动更新,所以每个会话运行您在主机上安装或构建到镜像中的版本。主机级更新在运行器下次启动时生效。641默认情况下,每个会话的子进程运行运行器自己的二进制文件,并且运行器会在它生成的会话内关闭自动更新。在此默认设置下,每个会话都运行您在主机上安装或构建到镜像中的版本。主机级更新在运行器下次启动时生效。

636 642 

637选择您的会话运行哪个版本以及何时更改:643选择您的会话运行哪个版本以及何时更改:

638 644 


640* **将队列保持在一个版本上**:使用固定版本构建镜像,或在裸主机上安装特定版本并[禁用自动更新](/docs/zh-CN/setup#disable-auto-updates)646* **将队列保持在一个版本上**:使用固定版本构建镜像,或在裸主机上安装特定版本并[禁用自动更新](/docs/zh-CN/setup#disable-auto-updates)

641* **升级固定队列**:阅读您当前版本与要安装版本之间的 [changelog](/docs/en/changelog) 条目,然后安装较新版本或重建镜像,并重启运行器647* **升级固定队列**:阅读您当前版本与要安装版本之间的 [changelog](/docs/en/changelog) 条目,然后安装较新版本或重建镜像,并重启运行器

642* **升级按需运行器**:阅读您当前版本与要安装版本之间的 [changelog](/docs/en/changelog) 条目,然后更改您的 [`spawn-runner` hook](/docs/zh-CN/self-hosted-environments-configuration#the-spawn-runner-hook) 启动的镜像。每个新运行器都会获得新版本。已经在运行的运行器(包括由 [`--min-idle`](/docs/zh-CN/self-hosted-environments-reference#orchestrator-cli-flags) 启动的备用运行器)会保持其版本,直到退出。不要重启它,因为它的工作指令是一次性的。648* **升级按需运行器**:阅读您当前版本与要安装版本之间的 [changelog](/docs/en/changelog) 条目,然后更改您的 [`spawn-runner` hook](/docs/zh-CN/self-hosted-environments-configuration#the-spawn-runner-hook) 启动的镜像。每个新运行器都会获得新版本。已经在运行的运行器(包括由 [`--min-idle`](/docs/zh-CN/self-hosted-environments-reference#orchestrator-cli-flags) 启动的备用运行器)会保持其版本,直到退出。不要重启它,因为它的工作指令是一次性的。

649* **如果会话启动的是其他二进制文件**:如果您使用 [`--exec-path`](/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags) 或 [`command` hook](/docs/zh-CN/self-hosted-environments-configuration#command) 来启动运行器自身以外的 Claude Code 二进制文件,会话将运行该二进制文件的版本。更新运行器时,请同时更新该二进制文件。

643* **插件**:插件市场也不自动更新;在运行器的环境中设置 `FORCE_AUTOUPDATE_PLUGINS=1` 以让插件自动更新,同时二进制保持固定650* **插件**:插件市场也不自动更新;在运行器的环境中设置 `FORCE_AUTOUPDATE_PLUGINS=1` 以让插件自动更新,同时二进制保持固定

644 651 

645<h2 id="scale-the-fleet">652<h2 id="scale-the-fleet">


699 * **启用该标志之前**:限制谁可以推送到源远程上的 `claude/*` refs。在恢复时,运行器会获取之前推送的分支,而不验证是谁推送的。706 * **启用该标志之前**:限制谁可以推送到源远程上的 `claude/*` refs。在恢复时,运行器会获取之前推送的分支,而不验证是谁推送的。

700* **会话中途添加的仓库可能无法克隆**:Claude 通过 HTTPS 使用 `git clone` 克隆它。在未启用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的运行器上,如果主机上没有任何内容能够读取该仓库,克隆会因 git 身份验证错误而失败。如有可能,请在创建会话时选择会话所需的每个仓库。707* **会话中途添加的仓库可能无法克隆**:Claude 通过 HTTPS 使用 `git clone` 克隆它。在未启用 [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy) 的运行器上,如果主机上没有任何内容能够读取该仓库,克隆会因 git 身份验证错误而失败。如有可能,请在创建会话时选择会话所需的每个仓库。

701* **某些连接器不出现在自托管会话中**:您在 claude.ai Settings 中尚未连接的连接器不在自托管会话中列出,会话不会提示您连接它。首先在 Settings 中连接它,然后启动新会话。向已运行的会话添加连接器也不会使其工具对 Claude 可用;启动新会话以获取新添加的连接器。708* **某些连接器不出现在自托管会话中**:您在 claude.ai Settings 中尚未连接的连接器不在自托管会话中列出,会话不会提示您连接它。首先在 Settings 中连接它,然后启动新会话。向已运行的会话添加连接器也不会使其工具对 Claude 可用;启动新会话以获取新添加的连接器。

709* **当有人归档或删除会话,或从会话菜单中释放其运行器时**:不要依赖 [`--push-outcome-on-release`](/docs/zh-CN/self-hosted-environments-reference#runner-cli-flags) 的推送。要在这些情况下保存提交,请从 [`post-session` hook](/docs/zh-CN/self-hosted-environments-configuration#post-session) 将 `HEAD` 推送到一个救援分支。如果您以那里的示例为基础,请让它在没有任何未提交内容时也执行推送,因为该示例仅在创建快照提交之后才推送。

702 710 

703<h3 id="report-an-issue">711<h3 id="report-an-issue">

704 报告问题712 报告问题


745 如果每个调用在会话大约 30 分钟后开始失败,包装脚本可能已断开会话的 stdin,因此令牌轮换无法到达它;请参阅 [保持 stdin 和文件描述符 3 附加](/docs/zh-CN/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached)。753 如果每个调用在会话大约 30 分钟后开始失败,包装脚本可能已断开会话的 stdin,因此令牌轮换无法到达它;请参阅 [保持 stdin 和文件描述符 3 附加](/docs/zh-CN/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached)。

746 754 

747 在 v2.1.274 之前,运行器在几次尝试后停止重试失败的获取,并等待下一个计划的获取。失败的轮次不会触发获取,因此每个轮次都会失败,显示 401,直到下一个计划的获取。755 在 v2.1.274 之前,运行器在几次尝试后停止重试失败的获取,并等待下一个计划的获取。失败的轮次不会触发获取,因此每个轮次都会失败,显示 401,直到下一个计划的获取。

756* **轮次在 claude.ai/code 中失败,显示 `This model needs a newer version of Claude Code`**:您的运行器用于启动会话的 Claude Code 版本低于该会话的模型所要求的版本,因此 API [拒绝了该请求](/docs/zh-CN/errors#claude-code-does-not-support-this-model)。按照 [固定版本](#pin-the-version) 中的说明,将运行器升级到消息要求的版本或更高版本。在此之前,用户可以在会话中选择其他模型。

748* **Pod 在耗尽中途被杀死**:将 `terminationGracePeriodSeconds` 提高到至少运行器在启动时记录的值。请参阅 [关闭时序](#shutdown-timing)。757* **Pod 在耗尽中途被杀死**:将 `terminationGracePeriodSeconds` 提高到至少运行器在启动时记录的值。请参阅 [关闭时序](#shutdown-timing)。

749 758 

750初始化日志后,运行器将其生命周期日志(包括 `[runner:fatal]` 行)写入 stdout,将调试输出写入 stderr,全部作为纯文本行而不是 JSON。上述故障排除条目中描述的基础目录失败在该点之前打印到 stderr。使用 `--log-file` 捕获两个流,这也让 `self-hosted-runner doctor` 能够跟踪它们,或使用您的平台的日志收集。759初始化日志后,运行器将其生命周期日志(包括 `[runner:fatal]` 行)写入 stdout,将调试输出写入 stderr,全部作为纯文本行而不是 JSON。上述故障排除条目中描述的基础目录失败在该点之前打印到 stderr。使用 `--log-file` 捕获两个流,这也让 `self-hosted-runner doctor` 能够跟踪它们,或使用您的平台的日志收集。

Details

201* 缓存的设置通过网络故障持久化。如果启动获取失败,Claude Code 在交互式会话中警告缓存的策略有效201* 缓存的设置通过网络故障持久化。如果启动获取失败,Claude Code 在交互式会话中警告缓存的策略有效

202* 在某次获取成功之前,启动时被暂扣的值保持暂扣状态202* 在某次获取成功之前,启动时被暂扣的值保持暂扣状态

203 203 

204Claude Code 会暂扣缓存的 `env` 块中的多个变量类别,直到服务器确认该会话的有效负载。这可以防止缓存的代理、证书颁发机构、端点或凭证值重定向、拦截或重新身份验证确认有效负载的设置获取。加固仅适用于服务器获取的设置缓存:通过 MDM 或 `managed-settings.json` 部署的[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms)不受影响。该暂扣机制需要 Claude Code v2.1.198 或更高版本;在 v2.1.198 之前,整个缓存的 `env` 块在启动时应用。被暂扣的类别包括:204Claude Code 会暂扣缓存的 `env` 块中的多个变量类别,直到服务器确认该会话的负载。这可以防止缓存的代理、证书颁发机构、端点或凭据值重定向、拦截或重新身份验证确认负载的设置获取。加固仅适用于服务器获取的设置缓存:通过 MDM 或 `managed-settings.json` 部署的[端点管理的设置](/docs/zh-CN/managed-settings#delivery-mechanisms)不受影响。被暂扣的类别包括:

205 205 

206* 代理和 TLS 配置,例如 `HTTPS_PROXY`、`NODE_EXTRA_CA_CERTS` 以及 mTLS 客户端证书变量 `CLAUDE_CODE_CLIENT_CERT` 和 `CLAUDE_CODE_CLIENT_KEY`206* 代理和 TLS 配置,例如 `HTTPS_PROXY`、`NODE_EXTRA_CA_CERTS` 以及 mTLS 客户端证书变量 `CLAUDE_CODE_CLIENT_CERT` 和 `CLAUDE_CODE_CLIENT_KEY`

207* API 路由和提供商选择,包括 `ANTHROPIC_BASE_URL`、提供商选择变量(例如 `CLAUDE_CODE_USE_BEDROCK` 和 `CLAUDE_CODE_USE_VERTEX`)以及提供商端点 URL(例如 `ANTHROPIC_BEDROCK_BASE_URL`)207* API 路由和提供商选择,包括 `ANTHROPIC_BASE_URL`、提供商选择变量(例如 `CLAUDE_CODE_USE_BEDROCK` 和 `CLAUDE_CODE_USE_VERTEX`)以及提供商端点 URL(例如 `ANTHROPIC_BEDROCK_BASE_URL`)


312 312 

313Claude Code 无法始终显示对话框。下面的每种情况说明当它无法显示时哪些设置适用,以及您何时下次看到对话框:313Claude Code 无法始终显示对话框。下面的每种情况说明当它无法显示时哪些设置适用,以及您何时下次看到对话框:

314 314 

315* **无法显示对话框的交互式会话**:Claude Code 不应用传递的设置,保留最后批准的设置。对话框在下一个可以显示它的会话中出现。需要 Claude Code v2.1.211 或更高版本。315* **无法显示对话框的交互式会话**:Claude Code 不应用传递的设置,保留最后批准的设置。对话框在下一个可以显示它的会话中出现。

316* **`claude install` 或 `claude update`**:Claude Code 在任何命令期间都不显示对话框。该命令使用最后批准的设置运行,对话框在您的下一个交互式会话中出现。如果 Claude Code 在启动时等待设置获取,例如设置了 [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) 或在[Claude 应用网关](/docs/zh-CN/claude-apps-gateway)部署上,它会在命令期间显示对话框,从管道运行的安装失败;请参阅[安装期间 `Raw mode is not supported`](/docs/zh-CN/troubleshoot-install#raw-mode-is-not-supported-during-install)。在 v2.1.246 之前,Claude Code 也尝试在这些命令期间显示对话框。316* **`claude install` 或 `claude update`**:Claude Code 在任何命令期间都不显示对话框。该命令使用最后批准的设置运行,对话框在您的下一个交互式会话中出现。如果 Claude Code 在启动时等待设置获取,例如设置了 [`forceRemoteSettingsRefresh`](#enforce-fail-closed-startup) 或在[Claude 应用网关](/docs/zh-CN/claude-apps-gateway)部署上,它会在命令期间显示对话框,从管道运行的安装失败;请参阅[安装期间 `Raw mode is not supported`](/docs/zh-CN/troubleshoot-install#raw-mode-is-not-supported-during-install)。在 v2.1.246 之前,Claude Code 也尝试在这些命令期间显示对话框。

317* **错误在您回答前关闭对话框**:Claude Code 不应用传递的设置,保留最后批准的设置。它在下一个可以显示它的会话中再次显示对话框。317* **错误在您回答前关闭对话框**:Claude Code 不应用传递的设置,保留最后批准的设置。它在下一个可以显示它的会话中再次显示对话框。

318* **非交互式运行**,例如 `claude -p`、Agent SDK 会话或 VS Code 扩展的聊天面板或桌面应用的代码选项卡中的会话:Claude Code 无法显示对话框,因此当传递的设置需要批准时,它仅为该运行应用它们。它不将它们记录为已批准或写入[本地缓存](#fetch-and-caching-behavior),下一个交互式会话会显示对话框。在用户在交互式会话中批准之前,每个非交互式运行都会在启动时再次获取设置。在 v2.1.207 之前,非交互式运行会将设置保存为已批准,因此后来的交互式会话永远不会为它们显示对话框。318* **非交互式运行**,例如 `claude -p`、Agent SDK 会话或 VS Code 扩展的聊天面板或桌面应用的代码选项卡中的会话:Claude Code 无法显示对话框,因此当传递的设置需要批准时,它仅为该运行应用它们。它不将它们记录为已批准或写入[本地缓存](#fetch-and-caching-behavior),下一个交互式会话会显示对话框。在用户在交互式会话中批准之前,每个非交互式运行都会在启动时再次获取设置。在 v2.1.207 之前,非交互式运行会将设置保存为已批准,因此后来的交互式会话永远不会为它们显示对话框。

sessions.md +4 −3

Details

51 51 

52当 Claude Code 从其会话记录加载对话时,恢复的会话会恢复对话以及保存在其中的状态:52当 Claude Code 从其会话记录加载对话时,恢复的会话会恢复对话以及保存在其中的状态:

53 53 

54* 对话历史:完整历史,包括工具调用和结果。如果工具在上一个进程结束时仍在运行(例如在崩溃中),当您恢复时它不会完成或再次运行。Claude 会看到该调用被标记为在记录其结果之前被切断,并被告知在再次运行之前检查它是否已生效,除非设置了 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/zh-CN/env-vars#variables)。54* 对话历史:消息、工具调用和结果。如果会话已被[压缩](/docs/zh-CN/context-window#what-survives-compaction),对话会在 `Conversation compacted` 行处打开。Claude 会基于最后一次压缩的摘要、该次压缩未摘要的消息以及此后的每条消息继续。最后一次压缩已摘要的消息不会再次加载。

55* 中断的工具调用:如果工具在上一个进程结束时仍在运行(例如在崩溃中),当您恢复时它不会完成或重新运行。Claude 会看到该调用被标记为在记录其结果之前被切断,并被告知在再次运行之前检查它是否已生效,除非设置了 [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/zh-CN/env-vars#variables)。

55* 模型:会话继续使用它之前使用的模型,[设置模型](/docs/zh-CN/model-config#setting-your-model)中所述的情况除外。56* 模型:会话继续使用它之前使用的模型,[设置模型](/docs/zh-CN/model-config#setting-your-model)中所述的情况除外。

56* Agent:使用 [`--agent`](/docs/zh-CN/sub-agents#invoke-subagents-explicitly) 或 `agent` 设置启动的会话继续作为该 Agent 运行,保持其工具限制和模型。在恢复时传递 `--agent` 以选择不同的 Agent;关于任一情况下的系统提示词,请参阅[恢复对话中的系统提示词标志](/docs/zh-CN/cli-reference#system-prompt-flags-in-resumed-conversations)。Claude Code 在两个地方查找 Agent:会话的原始目录(前提是您已[信任该工作区](/docs/zh-CN/permissions#project-allow-rules-and-workspace-trust)),然后是您恢复时所在的目录,因此项目范围的 Agent 在您从另一个目录恢复时仍会加载。如果 Claude Code 在任一位置都找不到该 Agent,会话会以默认工具恢复并显示[指明该 Agent 的警告](/docs/zh-CN/errors#session-agent-no-longer-available)。57* Agent:使用 [`--agent`](/docs/zh-CN/sub-agents#invoke-subagents-explicitly) 或 `agent` 设置启动的会话继续作为该 Agent 运行,保持其工具限制和模型。在恢复时传递 `--agent` 以选择不同的 Agent;关于任一情况下的系统提示词,请参阅[恢复对话中的系统提示词标志](/docs/zh-CN/cli-reference#system-prompt-flags-in-resumed-conversations)。Claude Code 在两个地方查找 Agent:会话的原始目录(前提是您已[信任该工作区](/docs/zh-CN/permissions#project-allow-rules-and-workspace-trust)),然后是您恢复时所在的目录,因此项目范围的 Agent 在您从另一个目录恢复时仍会加载。如果 Claude Code 在任一位置都找不到该 Agent,会话会以默认工具恢复并显示[指明该 Agent 的警告](/docs/zh-CN/errors#session-agent-no-longer-available)。

57* 权限模式:如果您从终端使用 `claude --continue`、`claude --resume <session-id>` 或 `claude --resume <name>`(当名称与一个会话匹配时)恢复,且不带 `-p`,Claude Code 会恢复会话所在的权限模式,[恢复时的权限模式](#permission-mode-on-resume)中的情况除外,该部分也涵盖会话选择器、`/resume` 和使用 `claude -p` 恢复。传递 `--permission-mode` 或 `--dangerously-skip-permissions` 以覆盖恢复的模式。58* 权限模式:如果您从终端使用 `claude --continue`、`claude --resume <session-id>` 或 `claude --resume <name>`(当名称与一个会话匹配时)恢复,且不带 `-p`,Claude Code 会恢复会话所在的权限模式,[恢复时的权限模式](#permission-mode-on-resume)中的情况除外,该部分也涵盖会话选择器、`/resume` 和使用 `claude -p` 恢复。传递 `--permission-mode` 或 `--dangerously-skip-permissions` 以覆盖恢复的模式。


162| 从会话选择器 | 突出显示会话并按 `Ctrl+R` |163| 从会话选择器 | 突出显示会话并按 `Ctrl+R` |

163| 在计划接受时 | 在 [Plan Mode](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode) 中接受计划会从计划内容命名会话,除非您已经设置了一个 |164| 在计划接受时 | 在 [Plan Mode](/docs/zh-CN/permission-modes#analyze-before-you-edit-with-plan-mode) 中接受计划会从计划内容命名会话,除非您已经设置了一个 |

164| 从 claude.ai 或 Claude 应用 | 重命名 [Remote Control 会话](/docs/zh-CN/remote-control#connect-from-another-device);Claude Code 在 CLI 中应用相同的名称。需要 Claude Code v2.1.221 或更高版本 |165| 从 claude.ai 或 Claude 应用 | 重命名 [Remote Control 会话](/docs/zh-CN/remote-control#connect-from-another-device);Claude Code 在 CLI 中应用相同的名称。需要 Claude Code v2.1.221 或更高版本 |

165| 从桌面应用 | 在 [桌面应用](/docs/zh-CN/desktop#work-in-parallel-with-sessions) 中重命名会话 |166| 从桌面应用 | 在[桌面应用](/docs/zh-CN/desktop#organize-and-find-sessions)中重命名会话 |

166 167 

167通过 CLI 路由或从 claude.ai 命名会话后,使用 `claude --resume <name>` 或 `/resume <name>` 返回到它;桌面应用会话在 [桌面应用](/docs/zh-CN/desktop#work-in-parallel-with-sessions) 中恢复。有关名称解析如何跨 worktrees 工作的信息,请参阅[恢复会话](#resume-a-session)。168通过 CLI 路由或从 claude.ai 命名会话后,使用 `claude --resume <name>` 或 `/resume <name>` 返回到它;桌面应用会话在 [桌面应用](/docs/zh-CN/desktop#work-in-parallel-with-sessions) 中恢复。有关名称解析如何跨 worktrees 工作的信息,请参阅[恢复会话](#resume-a-session)。

168 169 

169您未命名的会话仍会获得 Claude Code 分配的两个标签。只有生成的标题可用作恢复句柄:170您未命名的会话仍会获得 Claude Code 分配的两个标签。只有生成的标题可用作恢复句柄:

170 171 

171* 默认显示名称:您从未命名的交互式会话在启动时仍会获得默认显示名称。需要 Claude Code v2.1.196 或更高版本。默认名称将工作目录的名称与两个字符的后缀组合在一起,例如 `my-app-3f`,并在运行会话的列表中标识会话,例如 [agent view](/docs/zh-CN/agent-view) 和 `claude agents --json` 输出。默认名称不是恢复句柄。如果您将其传递给 `claude --resume` 或 `/resume`,Claude Code 不会找到该会话。172* 默认显示名称:您从未命名的交互式会话在启动时仍会获得默认显示名称。默认名称将工作目录的名称与两个字符的后缀组合在一起,例如 `my-app-3f`,并在运行会话的列表中标识会话,例如 [agent view](/docs/zh-CN/agent-view) 和 `claude agents --json` 输出。默认名称不是恢复句柄。如果您将其传递给 `claude --resume` 或 `/resume`,Claude Code 不会找到该会话。

172* 生成的标题:如果您不命名会话,Claude Code 会为其生成会话标题。该标题是您第一个提示的简短摘要,由对小型/快速模型(通常是 Haiku 级别的模型)的后台请求编写。您直接从 shell 或脚本启动的 `claude -p` 运行不会获得一个。173* 生成的标题:如果您不命名会话,Claude Code 会为其生成会话标题。该标题是您第一个提示的简短摘要,由对小型/快速模型(通常是 Haiku 级别的模型)的后台请求编写。您直接从 shell 或脚本启动的 `claude -p` 运行不会获得一个。

173 174 

174 接受计划会将生成的标题替换为基于计划的标题。您可以将任一标题传递给 `claude --resume` 或 `/resume`,Claude Code 会以与您设置的名称相同的方式解析它。175 接受计划会将生成的标题替换为基于计划的标题。您可以将任一标题传递给 `claude --resume` 或 `/resume`,Claude Code 会以与您设置的名称相同的方式解析它。

Details

795| [`spinnerTipsEnabled`](#spinnertipsenabled) | 在 Claude 工作时隐藏旋转器中的提示 | 界面和终端 | Any file |795| [`spinnerTipsEnabled`](#spinnertipsenabled) | 在 Claude 工作时隐藏旋转器中的提示 | 界面和终端 | Any file |

796| [`spinnerTipsOverride`](#spinnertipsoverride) | 向旋转器轮换添加您自己的提示,或替换内置提示 | 界面和终端 | Any file |796| [`spinnerTipsOverride`](#spinnertipsoverride) | 向旋转器轮换添加您自己的提示,或替换内置提示 | 界面和终端 | Any file |

797| [`spinnerVerbs`](#spinnerverbs) | 添加或替换在转弯运行时显示的动词 | 界面和终端 | Any file |797| [`spinnerVerbs`](#spinnerverbs) | 添加或替换在转弯运行时显示的动词 | 界面和终端 | Any file |

798| [`sshConfigs`](#sshconfigs) | 将 [SSH 连接](/docs/zh-CN/desktop#pre-configure-ssh-connections-for-your-team)添加到桌面环境下拉列表 | 远程、桌面和通知 | User or managed |798| [`sshConfigs`](#sshconfigs) | 将 [SSH 连接](/docs/zh-CN/desktop#pre-configure-ssh-connections-for-your-team)添加到 Desktop 环境选择器 | 远程、桌面和通知 | User or managed |

799| [`sshHostAllowlist`](#sshhostallowlist) | 限制[桌面 SSH 会话](/docs/zh-CN/desktop#restrict-which-ssh-hosts-users-can-connect-to)可以到达的主机 | 远程、桌面和通知 | Managed |799| [`sshHostAllowlist`](#sshhostallowlist) | 限制[桌面 SSH 会话](/docs/zh-CN/desktop#restrict-which-ssh-hosts-users-can-connect-to)可以到达的主机 | 远程、桌面和通知 | Managed |

800| [`statusLine`](#statusline) | 运行您自己的命令来呈现提示下方的[状态行](/docs/zh-CN/statusline) | 界面和终端 | Any file |800| [`statusLine`](#statusline) | 运行您自己的命令来呈现提示下方的[状态行](/docs/zh-CN/statusline) | 界面和终端 | Any file |

801| [`strictKnownMarketplaces`](#strictknownmarketplaces) | 允许列表用户可以添加和安装的[市场](/docs/zh-CN/plugins/overview)来源 | 插件和技能 | Managed |801| [`strictKnownMarketplaces`](#strictknownmarketplaces) | 允许列表用户可以添加和安装的[市场](/docs/zh-CN/plugins/overview)来源 | 插件和技能 | Managed |


3397```json settings.json theme={null}3397```json settings.json theme={null}

3398{3398{

3399 "companyAnnouncements": [3399 "companyAnnouncements": [

3400 "欢迎来到 Acme Corp!请在 docs.example.com 查看我们的代码指南"3400 "Welcome to Acme Corp! Review our code guidelines at docs.example.com"

3401 ]3401 ]

3402}3402}

3403```3403```


3775 3775 

3776| 字段 | 必需 | 描述 |3776| 字段 | 必需 | 描述 |

3777| :- | :- | :- |3777| :- | :- | :- |

3778| `id` | 是 | 最多 64 个字母、数字、`.`、`_` 或 `-`。Claude Code 在其上键入提示的显示历史,因此提示的冷却期在重新排序列表后仍然存在。在两个具有相同 id 的条目中,Claude Code 使用第一个 |3778| `id` | 是 | 最多 64 个字母、数字、`.`、`_` 或 `-`。Claude Code 以其作为提示显示历史的键,因此提示的冷却期在重新排序列表后仍然存在。在两个具有相同 id 的条目中,Claude Code 使用第一个 |

3779| `text` | 是 | 提示,最多 500 个字符的一行。Claude Code 剥离 ANSI 转义和控制字符,并折叠空格 |3779| `text` | 是 | 提示,最多 500 个字符的一行。Claude Code 剥离 ANSI 转义和控制字符,并折叠空格 |

3780| `cooldownSessions` | 否 | Claude Code 在再次显示提示之前等待的会话数,`0` 到 `1000`,默认 `0` |3780| `cooldownSessions` | 否 | Claude Code 在再次显示提示之前等待的会话数,`0` 到 `1000`,默认 `0` |

3781| `priority` | 否 | 在未显示时间相同的提示中的顺序,较高的优先,`-10` 到 `10`,默认 `0` |3781| `priority` | 否 | 在未显示时间相同的提示中的顺序,较高的优先,`-10` 到 `10`,默认 `0` |


3799 "spinnerTipsOverride": {3799 "spinnerTipsOverride": {

3800 "label": "Acme tip",3800 "label": "Acme tip",

3801 "tips": [3801 "tips": [

3802 "在打开 PR 之前运行 /review",3802 "Run /review before opening a PR",

3803 {3803 {

3804 "id": "gateway-errors",3804 "id": "gateway-errors",

3805 "text": "看到 5xx 错误?首先检查网关状态页面",3805 "text": "Seeing 5xx errors? Check the gateway status page first",

3806 "cooldownSessions": 5,3806 "cooldownSessions": 5,

3807 "priority": 23807 "priority": 2

3808 }3808 }


3815 3815 

3816* `label`:Claude Code 将两个提示显示为 `Acme tip: ...` 而不是 `Tip: ...`。3816* `label`:Claude Code 将两个提示显示为 `Acme tip: ...` 而不是 `Tip: ...`。

3817* 纯字符串:Claude Code 给它默认值,所以它可以在下一个会话中再次出现。3817* 纯字符串:Claude Code 给它默认值,所以它可以在下一个会话中再次出现。

3818* `id`:Claude Code 在 `gateway-errors` 上键入第二个提示的显示历史,因此其冷却期在添加或重新排序提示后仍然适用。3818* `id`:Claude Code 以 `gateway-errors` 作为第二个提示显示历史的键,因此其冷却期在添加或重新排序提示后仍然适用。

3819* `cooldownSessions`:在 Claude Code 显示 `gateway-errors` 提示后,它在五个会话后才再次显示该提示。3819* `cooldownSessions`:在 Claude Code 显示 `gateway-errors` 提示后,它在五个会话后才再次显示该提示。

3820* `priority`:当 `gateway-errors` 提示和另一个提示未显示相同数量的会话时,例如当两者都尚未显示时,Claude Code 首先显示 `gateway-errors`。纯字符串具有默认优先级 `0`。3820* `priority`:当 `gateway-errors` 提示和另一个提示未显示相同数量的会话时,例如当两者都尚未显示时,Claude Code 首先显示 `gateway-errors`。纯字符串具有默认优先级 `0`。

3821 3821 

3822当 Claude 工作时,Claude Code 在加载动画中显示您的提示,带有您的前缀,如 `Acme tip: 在打开 PR 之前运行 /review`。3822当 Claude 工作时,Claude Code 在加载动画中显示您的提示,带有您的前缀,如 `Acme tip: Run /review before opening a PR`。

3823 3823 

3824<h3 id="spinnerverbs">3824<h3 id="spinnerverbs">

3825 `spinnerVerbs`3825 `spinnerVerbs`


4096 `vimInsertModeRemaps`4096 `vimInsertModeRemaps`

4097</h3>4097</h3>

4098 4098 

4099在 [vim 编辑器模式](/docs/zh-CN/interactive-mode#vim-editor-mode)中将两键 INSERT 模式序列映射到 Escape。每个键恰好是按顺序键入的两个可打印字符,`"<Esc>"` 是唯一支持的目标;Claude Code 忽略其他条目。需要 Claude Code v2.1.208 或更高版本。4099在 [vim 编辑器模式](/docs/zh-CN/interactive-mode#vim-editor-mode)中将两键 INSERT 模式序列映射到 Escape。每个键恰好是按顺序键入的两个可打印字符,`"<Esc>"` 是唯一支持的目标;Claude Code 忽略其他条目。

4100 4100 

4101* **Scope**: [`User or managed`](#scopes)。存储库不能重新映射您的按键。4101* **Scope**: [`User or managed`](#scopes)。存储库不能重新映射您的按键。

4102* **Type**: 对象,将两字符序列映射到 `"<Esc>"`4102* **Type**: 对象,将两字符序列映射到 `"<Esc>"`


4110}4110}

4111```4111```

4112 4112 

4113除非 `editorMode` 是 `"vim"`,否则无效。请参阅[重新映射 INSERT 模式快捷键序列](/docs/zh-CN/interactive-mode#remap-insert-mode-key-sequences)。需要 Claude Code v2.1.208 或更高版本。4113除非 `editorMode` 是 `"vim"`,否则无效。请参阅[重新映射 INSERT 模式快捷键序列](/docs/zh-CN/interactive-mode#remap-insert-mode-key-sequences)。

4114 4114 

4115<h3 id="voice">4115<h3 id="voice">

4116 `voice`4116 `voice`


5068 `enabledPlugins`5068 `enabledPlugins`

5069</h3>5069</h3>

5070 5070 

5071打开或关闭单个 [plugins](/docs/zh-CN/plugins/overview),由 `plugin-name@marketplace-name` 键控。在任何范围内没有条目的 plugin 回退到其 [`defaultEnabled`](/docs/zh-CN/plugins/manifest-reference#fields) 值。当您使用 `/plugin` 或 `claude plugin enable` 启用或禁用 plugin 时,Claude Code 为您写入此键。5071打开或关闭单个 [plugins](/docs/zh-CN/plugins/overview),以 `plugin-name@marketplace-name` 为键。在任何范围内没有条目的 plugin 回退到其 [`defaultEnabled`](/docs/zh-CN/plugins/manifest-reference#fields) 值。当您使用 `/plugin` 或 `claude plugin enable` 启用或禁用 plugin 时,Claude Code 为您写入此键。

5072 5072 

5073* **Scope**: [`Any file`](#scopes)5073* **Scope**: [`Any file`](#scopes)

5074* **Type**: 对象,将 `plugin-name@marketplace-name` 映射到 Boolean5074* **Type**: 对象,将 `plugin-name@marketplace-name` 映射到 Boolean


5207 `pluginConfigs`5207 `pluginConfigs`

5208</h3>5208</h3>

5209 5209 

5210存储您给 plugin 的 [`userConfig`](/docs/zh-CN/plugins/manifest-reference#user-configuration) 配置对话框的非敏感答案,由 plugin ID 键控。当您填写对话框时,Claude Code 将此键写入您的用户设置,因此您无需手动编辑它。Claude Code 将敏感选项存储在 macOS Keychain 中,当 Keychain 拒绝写入时回退到 `~/.claude/.credentials.json`;在没有支持的 keychain 的平台上,它将它们存储在 `~/.claude/.credentials.json` 中。5210存储您给 plugin 的 [`userConfig`](/docs/zh-CN/plugins/manifest-reference#user-configuration) 配置对话框的非敏感答案,以 plugin ID 为键。当您填写对话框时,Claude Code 将此键写入您的用户设置,因此您无需手动编辑它。Claude Code 将敏感选项存储在 macOS Keychain 中,当 Keychain 拒绝写入时回退到 `~/.claude/.credentials.json`;在没有支持的 keychain 的平台上,它将它们存储在 `~/.claude/.credentials.json` 中。

5211 5211 

5212* **Scope**: [`User or managed`](#scopes)5212* **Scope**: [`User or managed`](#scopes)

5213* **Type**: 对象,将 plugin ID 映射到具有 `options` 字段的对象,将每个选项名称映射到字符串、数字、Boolean 或字符串数组,以及可选的 `mcpServers` 字段,以相同形状保存每个服务器的用户配置值5213* **Type**: 对象,将 plugin ID 映射到具有 `options` 字段的对象,将每个选项名称映射到字符串、数字、Boolean 或字符串数组,以及可选的 `mcpServers` 字段,以相同形状保存每个服务器的用户配置值


5850 `disableDesktopLocalSessions`5850 `disableDesktopLocalSessions`

5851</h3>5851</h3>

5852 5852 

5853在[桌面应用](/docs/zh-CN/desktop#local-sessions-on-managed-devices)中关闭在设备上运行的 Code 会话,用于开发人员应该通过 SSH 在远程机器上工作的部署。在 Code 选项卡中,**本地**环境保留在环境下拉列表中,但呈灰显状态且无法选择,工具提示显示你的组织已关闭它;在 Windows 上,WSL 条目以相同方式呈灰显,尽管 WSL 会话是否在托管设备上运行[由单独管理](/docs/zh-CN/admin-setup#wsl-sessions-in-claude-code-desktop)。新会话默认为第一个[SSH 连接](/docs/zh-CN/desktop#ssh-sessions)(如果已配置),应用拒绝在设备上启动或恢复会话,包括返回同一机器的 SSH 连接。到其他主机的 SSH 会话和云会话不受影响。桌面应用读取此键;终端 CLI 忽略它。需要 Claude Desktop v1.37937.0 或更高版本。5853在[桌面应用](/docs/zh-CN/desktop#local-sessions-on-managed-devices)中关闭在设备上运行的 Code 会话,适用于开发人员应通过 SSH 在远程机器上工作的部署。将此键设置为 `true` 后,用户会在 Code 选项卡中看到以下情况:

5854 

5855* **环境选择器**:用户计算机对应的条目呈灰显状态且无法选择,工具提示显示 **Disabled by your organization**。在 Windows 上,WSL 条目以相同方式呈灰显,不过 WSL 会话是否在托管设备上运行[由单独的设置控制](/docs/zh-CN/admin-setup#wsl-sessions-in-claude-code-desktop)。

5856* **新会话**:默认使用第一个 [SSH 连接](/docs/zh-CN/desktop#ssh-sessions)(如果已配置)

5857* **设备上的会话**:应用拒绝在设备上启动或恢复会话,包括回连到同一机器的 SSH 连接

5858* **到其他主机的 SSH 会话和云端会话**:不受影响

5859 

5860桌面应用读取此键;终端 CLI 忽略它。需要 Claude Desktop v1.37937.0 或更高版本。

5854 5861 

5855* **作用域**: [`托管`](#scopes)。默认情况下,桌面应用从[一个托管源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)读取此键。5862* **作用域**: [`托管`](#scopes)。默认情况下,桌面应用从[一个托管源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)读取此键。

5856* **类型**: 布尔值;仅 JSON 布尔值 `true` 生效5863* **类型**: 布尔值;仅 JSON 布尔值 `true` 生效


5997 `sshConfigs`6004 `sshConfigs`

5998</h3>6005</h3>

5999 6006 

6000将 SSH 连接添加到[桌面](/docs/zh-CN/desktop#pre-configure-ssh-connections-for-your-team)环境下拉列表。管理员使用它向团队分发共享连接。您在托管设置中定义的连接显示为托管。用户可以选择它们,并为其[设置自己的 **Worktree folder**](/docs/zh-CN/desktop#choose-where-ssh-session-worktrees-go),但无法在应用中编辑其他任何内容或删除它们。6007将 SSH 连接添加到[桌面](/docs/zh-CN/desktop#pre-configure-ssh-connections-for-your-team)环境选择器。管理员使用 `sshConfigs` 向团队分发共享连接。用户可以选择托管连接,并为其[设置自己的 **Worktree folder**](/docs/zh-CN/desktop#set-the-worktree-folder-on-an-existing-connection)。他们无法在应用中编辑其其他字段或删除它。

6001 6008 

6002* **作用域**: [`用户或托管`](#scopes)。桌面应用读取此键。默认情况下,它从[一个托管源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)读取托管连接。6009* **作用域**: [`用户或托管`](#scopes)。桌面应用读取此键。默认情况下,它从[一个托管源](/docs/zh-CN/managed-settings#how-claude-code-combines-managed-sources)读取托管连接。

6003* **类型**: 对象数组,每个都有必需的 `id`、`name` 和 `sshHost` 以及可选的 `sshPort` 和 `sshIdentityFile`6010* **类型**: 对象数组,每个都有必需的 `id`、`name` 和 `sshHost` 以及可选的 `sshPort` 和 `sshIdentityFile`

statusline.md +3 −3

Details

199| `workspace.added_dirs` | 通过 `/add-dir` 或 `--add-dir` 添加的其他目录。如果未添加任何目录,则为空数组 |199| `workspace.added_dirs` | 通过 `/add-dir` 或 `--add-dir` 添加的其他目录。如果未添加任何目录,则为空数组 |

200| `workspace.git_worktree` | 当前目录在使用 `git worktree add` 创建的链接 worktree 内时的 Git worktree 名称。在主工作树中不存在。对于任何 git worktree 都会填充,不同于仅在 [worktree 会话](/docs/zh-CN/worktrees) 期间出现的 `worktree.*` |200| `workspace.git_worktree` | 当前目录在使用 `git worktree add` 创建的链接 worktree 内时的 Git worktree 名称。在主工作树中不存在。对于任何 git worktree 都会填充,不同于仅在 [worktree 会话](/docs/zh-CN/worktrees) 期间出现的 `worktree.*` |

201| `workspace.repo.host`, `workspace.repo.owner`, `workspace.repo.name` | 从 `origin` 远程解析的存储库标识,例如 `"github.com"`、`"anthropics"`、`"claude-code"`。在 git 存储库外或未配置 `origin` 远程时不存在。对于嵌套在子组中的 gitlab.com 项目,`owner` 是带有斜杠的完整命名空间路径,例如 `"group/subgroup"`。在 v2.1.260 之前,这些项目的 `workspace.repo` 不存在 |201| `workspace.repo.host`, `workspace.repo.owner`, `workspace.repo.name` | 从 `origin` 远程解析的存储库标识,例如 `"github.com"`、`"anthropics"`、`"claude-code"`。在 git 存储库外或未配置 `origin` 远程时不存在。对于嵌套在子组中的 gitlab.com 项目,`owner` 是带有斜杠的完整命名空间路径,例如 `"group/subgroup"`。在 v2.1.260 之前,这些项目的 `workspace.repo` 不存在 |

202| `cost.total_cost_usd` | 以美元计的估计会话成本,在客户端按列表价格计算,除非有 [`modelPricing`](/docs/zh-CN/settings-reference#modelpricing) 表生效。可能与你的实际账单不同。当 `/clear` 启动新会话时重置为 \$0。在 v2.1.211 之前,总计在 `/clear` 后继续累积 |202| `cost.total_cost_usd` | 以美元计的估计会话成本,在客户端按列表价格计算,除非有 [`modelPricing`](/docs/zh-CN/settings-reference#modelpricing) 表生效。可能与您的实际账单不同。当 `/clear` 启动新会话时重置为 \$0 |

203| `cost.total_duration_ms` | 自会话开始以来的总挂钟时间(毫秒) |203| `cost.total_duration_ms` | 自会话开始以来的总挂钟时间(毫秒) |

204| `cost.total_api_duration_ms` | 等待 API 响应的总时间(毫秒) |204| `cost.total_api_duration_ms` | 等待 API 响应的总时间(毫秒) |

205| `cost.total_lines_added`, `cost.total_lines_removed` | 更改的代码行数 |205| `cost.total_lines_added`, `cost.total_lines_removed` | 更改的代码行数 |


432| `miss_recache_tokens` | 由计为未命中的请求写入缓存的令牌 |432| `miss_recache_tokens` | 由计为未命中的请求写入缓存的令牌 |

433| `last_miss_at` | 最后一次未命中发生时,以纪元秒为单位。当会话没有未命中时为 `null` |433| `last_miss_at` | 最后一次未命中发生时,以纪元秒为单位。当会话没有未命中时为 `null` |

434| `last_miss_cause` | Claude Code 识别为最后一次未命中可能原因的内容,在 [最后一次未命中原因](#last-miss-cause) 下描述。需要 Claude Code v2.1.260 或更高版本 |434| `last_miss_cause` | Claude Code 识别为最后一次未命中可能原因的内容,在 [最后一次未命中原因](#last-miss-cause) 下描述。需要 Claude Code v2.1.260 或更高版本 |

435| `miss_causes` | 此会话的诊断未命中中有多少具有每个原因,由与 `last_miss_cause` 相同的原因名称键入。需要 Claude Code v2.1.260 或更高版本 |435| `miss_causes` | 此会话的诊断未命中中有多少具有每个原因,以与 `last_miss_cause` 相同的原因名称为键。需要 Claude Code v2.1.260 或更高版本 |

436| `recache_tokens_if_cold` | 如果缓存到那时已变冷,下一个请求重新缓存的令牌。在压缩或清除旧工具结果后为 `null`,直到下一个请求记录重写对话的大小 |436| `recache_tokens_if_cold` | 如果缓存到那时已变冷,下一个请求重新缓存的令牌。在压缩或清除旧工具结果后为 `null`,直到下一个请求记录重写对话的大小 |

437 437 

438Claude Code 在终端上显示相同的统计信息,在 [`/usage` 命令的 `Prompt cache (main)` 行](/docs/zh-CN/costs#prompt-cache-statistics) 上。438Claude Code 在终端上显示相同的统计信息,在 [`/usage` 命令的 `Prompt cache (main)` 行](/docs/zh-CN/costs#prompt-cache-statistics) 上。


1199| `label` | string | Claude Code 提供的任务简短进度摘要(如果有),否则与 `description` 文本相同 |1199| `label` | string | Claude Code 提供的任务简短进度摘要(如果有),否则与 `description` 文本相同 |

1200| `startTime` | number | 任务开始时间,以自 Unix 纪元以来的毫秒数表示 |1200| `startTime` | number | 任务开始时间,以自 Unix 纪元以来的毫秒数表示 |

1201| `model` | string,可选 | 任务运行所用的已解析模型 ID。在模型解析之前省略 |1201| `model` | string,可选 | 任务运行所用的已解析模型 ID。在模型解析之前省略 |

1202| `effort` | string 或 number,可选 | 在子代理的[定义 frontmatter](/docs/zh-CN/sub-agents#supported-frontmatter-fields) 中或单次调用时为其设置的推理 effort:`low`、`medium`、`high`、`xhigh`、`max` 或数字 token 预算。这是所配置的值,当模型不支持该级别时,Claude Code 实际应用的 effort 可能会有所不同。未设置 effort 时省略。需要 Claude Code v2.1.213 或更高版本 |1202| `effort` | string 或 number,可选 | 在子代理的[定义 frontmatter](/docs/zh-CN/sub-agents#supported-frontmatter-fields) 中或单次调用时为其设置的推理 effort:`low`、`medium`、`high`、`xhigh`、`max` 或数字 token 预算。这是所配置的值,当模型不支持该级别时,Claude Code 实际应用的 effort 可能会有所不同。未设置 effort 时省略 |

1203| `contextWindowSize` | number,可选 | `model` 的上下文窗口(以 token 计),计算方式与主状态栏的 [`context_window.context_window_size`](#context-window-fields) 相同,因此您可以根据 `tokenCount` 渲染每行百分比。当 `model` 被省略时也会省略 |1203| `contextWindowSize` | number,可选 | `model` 的上下文窗口(以 token 计),计算方式与主状态栏的 [`context_window.context_window_size`](#context-window-fields) 相同,因此您可以根据 `tokenCount` 渲染每行百分比。当 `model` 被省略时也会省略 |

1204| `tokenCount` | number | 子代理的累计 token 数,即默认行中显示的数值 |1204| `tokenCount` | number | 子代理的累计 token 数,即默认行中显示的数值 |

1205| `tokenSamples` | array of numbers | 最近最多 16 个 `tokenCount` 读数,每个刷新周期一个,按从旧到新排列,最后一个为当前值 |1205| `tokenSamples` | array of numbers | 最近最多 16 个 `tokenCount` 读数,每个刷新周期一个,按从旧到新排列,最后一个为当前值 |

sub-agents.md +279 −261

Details

156</Note>156</Note>

157 157 

158<h2 id="configure-subagents">158<h2 id="configure-subagents">

159 配置 subagents159 配置子代理

160</h2>160</h2>

161 161 

162一个 subagent 的文件位置决定了谁可以使用它,其 frontmatter 决定了它可以做什么。本节涵盖 subagent 文件的位置以及它们支持的每个字段。162子代理文件的位置决定了谁可以使用它,其 frontmatter 决定了它能做什么。本节介绍子代理文件的存放位置以及它们支持的所有字段。

163 163 

164<h3 id="choose-the-subagent-scope">164<h3 id="choose-the-subagent-scope">

165 选择 subagent 范围165 选择子代理作用域

166</h3>166</h3>

167 167 

168根据范围将 subagent 文件存储在不同的位置。当多个 subagents 共享相同的名称时,Claude Code 使用来自更高优先级位置的那个。168根据作用域将子代理文件存放在不同位置。当多个子代理同名时,Claude Code 使用优先级较高位置中的那个。

169 169 

170| Location | Scope | Priority | 如何创建 |170| 位置 | 作用域 | 优先级 | 创建方式 |

171| :- | :- | :- | :- |171| :- | :- | :- | :- |

172| 托管设置 | 组织范围 | 1(最高) | 通过 [managed settings](/docs/zh-CN/settings) 部署 |172| 托管设置 | 整个组织 | 1(最高) | 通过[托管设置](/docs/zh-CN/settings)部署 |

173| `--agents` CLI 标志 | 当前会话 | 2 | 启动 Claude Code 时传递 JSON |173| `--agents` CLI 标志 | 当前会话 | 2 | 启动 Claude Code 时传入 JSON |

174| `.claude/agents/` | 当前项目 | 3 | 询问 Claude,或手动创建文件 |174| `.claude/agents/` | 当前项目 | 3 | 让 Claude 创建,或手动创建文件 |

175| `~/.claude/agents/` | 所有您的项目 | 4 | 询问 Claude,或手动创建文件 |175| `~/.claude/agents/` | 您的所有项目 | 4 | 让 Claude 创建,或手动创建文件 |

176| Plugin 的 `agents/` 目录 | 启用 plugin 的位置 | 5(最低) | 与 [plugins](/docs/zh-CN/plugins/overview) 一起安装 |176| 插件的 `agents/` 目录 | 启用插件的位置 | 5(最低) | 随[插件](/docs/zh-CN/plugins/overview)一起安装 |

177 177 

178**项目 subagents**(`.claude/agents/`)非常适合特定于代码库的 subagents。将它们检入版本控制,以便您的团队可以协作使用和改进它们。178**项目子代理**(`.claude/agents/`)非常适合特定于某个代码库的子代理。将它们提交到版本控制中,以便您的团队可以协作使用和改进它们。

179 179 

180项目 subagents 通过从当前工作目录向上遍历来发现,因此会扫描那里和存储库根目录之间的每个 `.claude/agents/`。当这些嵌套目录中的多个目录定义相同的 `name` 时,Claude Code 使用最接近工作目录的定义。180项目子代理的发现方式是从当前工作目录向上遍历,因此从该目录到仓库根目录之间的每个 `.claude/agents/` 都会被扫描。当这些嵌套目录中有多个定义了相同的 `name` 时,Claude Code 使用离工作目录最近的定义。

181 181 

182使用 `--add-dir` 或 `/add-dir` 添加目录时,Claude Code 也会加载其 `.claude/agents/` 文件夹,与您的项目 subagents 一起。有关哪些其他配置类型从 `--add-dir` 加载,请参阅 [Additional directories](/docs/zh-CN/permissions#additional-directories-grant-file-access-not-configuration)。要在没有 `--add-dir` 的情况下跨项目共享 subagents,请使用 `~/.claude/agents/` 或 [plugin](/docs/zh-CN/plugins/overview)。182当您使用 `--add-dir` 或 `/add-dir` 添加目录时,Claude Code 也会加载该目录的 `.claude/agents/` 文件夹,与您的项目子代理一起使用。有关还有哪些其他配置类型会从 `--add-dir` 加载,请参阅[额外目录](/docs/zh-CN/permissions#additional-directories-grant-file-access-not-configuration)。若要在不使用 `--add-dir` 的情况下跨项目共享子代理,请使用 `~/.claude/agents/` 或[插件](/docs/zh-CN/plugins/overview)。

183 183 

184**用户 subagents**(`~/.claude/agents/`)是在所有项目中可用的个人 subagents。184**用户子代理**(`~/.claude/agents/`)是在您所有项目中都可用的个人子代理。

185 185 

186Claude Code 递归扫描 `.claude/agents/` 和 `~/.claude/agents/`,因此您可以将定义组织到子文件夹中,例如 `agents/review/` 或 `agents/research/`。子目录路径不会影响 subagent 的识别或调用方式,因为身份仅来自 `name` frontmatter 字段。186Claude Code 会递归扫描 `.claude/agents/` 和 `~/.claude/agents/`,因此您可以将定义组织到子文件夹中,例如 `agents/review/` 或 `agents/research/`。子目录路径不影响子代理的识别或调用方式,因为其身份仅来自 `name` frontmatter 字段。

187 187 

188在整个目录树中保持 `name` 值唯一:如果同一 `.claude/agents/` 目录(包括其子文件夹)下的两个文件声明了相同的名称,Claude Code 只会加载其中一个,由文件系统读取顺序决定,而不是由有文档记录的优先级决定。在嵌套的项目目录之间,如上所述,最接近工作目录的定义优先。[`/doctor`](/docs/zh-CN/commands#all-commands) 设置检查会报告同一目录中同名的文件,并建议重命名或删除其中除一个之外的所有文件。188请在整个目录树中保持 `name` 值唯一:如果同一个 `.claude/agents/` 目录(包括其子文件夹)下的两个文件声明了相同的名称,Claude Code 只会加载其中一个,具体由文件系统读取顺序决定,而不是由文档规定的优先级决定。在嵌套的项目目录之间,如上所述,离工作目录最近的定义优先。[`/doctor`](/docs/zh-CN/commands#all-commands) 设置检查会报告同一目录中同名的文件,并建议重命名或删除多余的文件,只保留一个。

189 189 

190Plugin `agents/` 目录也会被递归扫描。与项目和用户范围不同,plugin 的 `agents/` 目录内的子文件夹成为 [scoped identifier](#invoke-subagents-explicitly) 的一部分:plugin `my-plugin` 中位于 `agents/review/security.md` 的文件注册为 `my-plugin:review:security`。190插件的 `agents/` 目录也会被递归扫描。与项目和用户作用域不同,插件 `agents/` 目录中的子文件夹会成为[作用域标识符](#invoke-subagents-explicitly)的一部分:插件 `my-plugin` 中位于 `agents/review/security.md` 的文件注册为 `my-plugin:review:security`。

191 191 

192**CLI 定义的 subagents** 在启动 Claude Code 时作为 JSON 传递。它们仅存在于该会话中,不会保存到磁盘,使其对快速测试或自动化脚本很有用。您可以在单个 `--agents` 调用中定义多个 subagents:192**CLI 定义的子代理**在启动 Claude Code 时以 JSON 形式传入。它们仅在该会话中存在,不会保存到磁盘,因此适用于快速测试或自动化脚本。您可以在一次 `--agents` 调用中定义多个子代理:

193 193 

194<Tabs>194<Tabs>

195 <Tab title="macOS, Linux, WSL">195 <Tab title="macOS, Linux, WSL">


229 </Tab>229 </Tab>

230</Tabs>230</Tabs>

231 231 

232在 [non-interactive mode](/docs/zh-CN/headless) 中,`--agents` 也接受保存相同对象的 JSON 文件的路径,用于定义太大而无法在命令行上传递的情况。例如,`claude -p --agents ./agents.json "Review my changes"` 从该文件读取定义。在交互式会话中,Claude Code 拒绝文件路径。文件形式需要 Claude Code v2.1.281 或更高版本。232在[非交互模式](/docs/zh-CN/headless)下,`--agents` 也接受一个包含相同对象的 JSON 文件路径,适用于定义过大而无法在命令行中传入的情况。例如,`claude -p --agents ./agents.json "Review my changes"` 会从该文件读取定义。在交互式会话中,Claude Code 会拒绝文件路径。文件形式需要 Claude Code v2.1.281 或更高版本。

233 233 

234JSON 中的每个顶级键是代理的名称,其值是该代理的定义。不要以 `-` 开头的名称。定义采用这些字段:234JSON 中的每个顶层键都是一个 Agent 的名称,其值是该 Agent 的定义。名称不要以 `-` 开头。定义包含以下字段:

235 235 

236* **`prompt`**:代理的系统提示,等同于基于文件的 subagents 中的 markdown 正文。`prompt` 可能为空。如果您选择一个具有空 `prompt` 且没有 `memory` 字段的代理作为会话的代理,使用 `--agent`,会话的系统提示保持不变。空 `prompt` 需要 Claude Code v2.1.281 或更高版本。236* **`prompt`**:Agent 的系统提示词,等同于基于文件的子代理中的 markdown 正文。`prompt` 可以为空。如果您使用 `--agent` 将一个 `prompt` 为空且没有 `memory` 字段的 Agent 选为会话的 Agent,会话的系统提示词将保持不变。空 `prompt` 需要 Claude Code v2.1.281 或更高版本。

237* **[Frontmatter 字段](#supported-frontmatter-fields)**:`description`、`tools`、`disallowedTools`、`model`、`permissionMode`、`mcpServers`、`hooks`、`maxTurns`、`autoCompactWindow`、`skills`、`initialPrompt`、`memory`、`effort`、`background`、`omitClaudeMd` 和 `isolation`。237* **[Frontmatter 字段](#supported-frontmatter-fields)**:`description`、`tools`、`disallowedTools`、`model`、`permissionMode`、`mcpServers`、`hooks`、`maxTurns`、`autoCompactWindow`、`skills`、`initialPrompt`、`memory`、`effort`、`background`、`omitClaudeMd` 和 `isolation`。

238* **忽略的字段**:`color` 和 `experimental` 在此处不被接受,被忽略而不是拒绝。238* **被忽略的字段**:`color` 和 `experimental` 在此处不被接受,会被忽略而不是被拒绝。

239 239 

240有关 Claude Code 对无法加载的值的处理,以及跳过该检查的标志和环境变量,请参阅 [`Invalid --agents configuration`](/docs/zh-CN/errors#invalid-agents-configuration)。240有关 Claude Code 如何处理无法加载的值,以及跳过该检查的标志和环境变量,请参阅 [`Invalid --agents configuration`](/docs/zh-CN/errors#invalid-agents-configuration)。

241 241 

242**托管 subagents** 由组织管理员部署。在 [managed settings directory](/docs/zh-CN/managed-settings#delivery-mechanisms) 内的 `.claude/agents/` 中放置 markdown 文件,使用与项目和用户 subagents 相同的 frontmatter 格式。托管定义优先于具有相同名称的项目和用户 subagents。242**托管子代理**由组织管理员部署。将 markdown 文件放在[托管设置目录](/docs/zh-CN/managed-settings#delivery-mechanisms)内的 `.claude/agents/` 中,使用与项目和用户子代理相同的 frontmatter 格式。托管定义优先于同名的项目和用户子代理。

243 243 

244**Plugin subagents** 来自您已安装的 [plugins](/docs/zh-CN/plugins/overview)。它们与您的自定义 subagents 一起自动加载,并在 @-mention 类型提前中以其范围名称出现。有关创建 plugin subagents 的详细信息,请参阅 [plugin 组件参考](/docs/zh-CN/plugins/components#agents)。244**插件子代理**来自您已安装的[插件](/docs/zh-CN/plugins/overview)。它们会与您的自定义子代理一起自动加载,并以其作用域名称出现在 @ 提及的输入提示中。有关创建插件子代理的详细信息,请参阅[插件组件参考](/docs/zh-CN/plugins/components#agents)。

245 245 

246<Note>246<Note>

247 出于安全原因,插件子代理不支持 `hooks`、`mcpServers` 或 `permissionMode` frontmatter 字段。从插件加载 Agent 时,这些字段会被忽略。如果您需要它们,请将 Agent 文件复制到 `.claude/agents/` 或 `~/.claude/agents/`。您也可以在 `settings.json` 或 `settings.local.json` 中向 [`permissions.allow`](/docs/zh-CN/settings-reference#permissions-allow) 添加规则,但这些规则适用于整个会话,而不仅仅是该插件子代理。247 出于安全原因,插件子代理不支持 `hooks`、`mcpServers` 或 `permissionMode` frontmatter 字段。从插件加载 Agent 时,这些字段会被忽略。如果您需要它们,请将 Agent 文件复制到 `.claude/agents/` 或 `~/.claude/agents/` 中。您也可以在 `settings.json` 或 `settings.local.json` 中向 [`permissions.allow`](/docs/zh-CN/settings-reference#permissions-allow) 添加规则,但这些规则适用于整个会话,而不仅仅是插件子代理。

248 248 

249 如果您是插件的作者,请改为在插件的 [`hooks/hooks.json`](/docs/zh-CN/plugins/components#hooks) 中提供 hook,并在其 [`.mcp.json`](/docs/zh-CN/plugins/components#mcp-servers) 中提供 MCP 服务器。它们会在插件启用时始终生效,而不仅仅在子代理内部生效。249 如果您是插件的作者,请改为在插件的 [`hooks/hooks.json`](/docs/zh-CN/plugins/components#hooks) 中提供 hook,在其 [`.mcp.json`](/docs/zh-CN/plugins/components#mcp-servers) 中提供 MCP 服务器。它们会在插件启用时生效,而不仅仅在子代理内部生效。

250</Note>250</Note>

251 251 

252您还可以将子代理定义复用为 [agent team](/docs/zh-CN/agent-teams) 的队友:在要求 Claude 生成队友时指定子代理类型,Claude Code 会将该定义的部分内容应用于该队友。[将子代理定义用于队友](/docs/zh-CN/agent-teams#use-subagent-definitions-for-teammates)说明了在每种显示模式下适用哪些作用域以及哪些部分。252您还可以将子代理定义复用为 [agent team](/docs/zh-CN/agent-teams) 的队友:在请求 Claude 生成队友时指定子代理类型,Claude Code 会将该定义的部分内容应用于该队友。[将子代理定义用于队友](/docs/zh-CN/agent-teams#use-subagent-definitions-for-teammates)说明了在每种显示模式下适用哪些作用域和哪些部分。

253 253 

254<h3 id="write-subagent-files">254<h3 id="write-subagent-files">

255 编写 subagent 文件255 编写子代理文件

256</h3>256</h3>

257 257 

258Subagent 文件使用 YAML frontmatter 进行配置,然后是 Markdown 中的系统提示:258子代理文件使用 YAML frontmatter 进行配置,随后是 Markdown 格式的系统提示词:

259 259 

260<Note>260<Note>

261 Claude Code 监视 `~/.claude/agents/` 和 `.claude/agents/`。当您在磁盘上添加或编辑 subagent 文件,或要求 Claude 为您编写一个时,Claude Code 会在几秒内检测到更改,下一次委托使用更新的定义,无需重启。261 Claude Code 会监视 `~/.claude/agents/` 和 `.claude/agents/`。当您在磁盘上添加或编辑子代理文件,或让 Claude 为您编写一个时,Claude Code 会在几秒钟内检测到更改,下一次委派将使用更新后的定义,无需重启。

262 262 

263 三种情况仍然需要重启:263 以下三种情况仍需要重启:

264 264 

265 * 监视器仅涵盖会话启动时存在的目录,因此在新 `agents` 目录中创建范围的第一个代理文件后,重启以加载它。265 * 监视器只覆盖会话启动时已存在的目录,因此在新的 `agents` 目录中创建某个作用域的第一个 Agent 文件后,需要重启才能加载它。

266 * Claude Code 不监视通过 `--add-dir` 或 `/add-dir` 添加的目录内的 `.claude/agents/`,因此在那里添加或编辑 subagent 后,重启以加载更改。266 * Claude Code 不会监视通过 `--add-dir` 或 `/add-dir` 添加的目录中的 `.claude/agents/`,因此在那里添加或编辑子代理后,需要重启才能加载更改。

267 * 使用 `--disable-slash-commands` 启动的会话根本不监视这些目录。267 * 使用 `--disable-slash-commands` 启动的会话完全不会监视这些目录。

268</Note>268</Note>

269 269 

270```markdown .claude/agents/code-reviewer.md theme={null}270```markdown .claude/agents/code-reviewer.md theme={null}


279specific, actionable feedback on quality, security, and best practices.279specific, actionable feedback on quality, security, and best practices.

280```280```

281 281 

282Frontmatter 定义了 subagent 的元数据和配置。正文成为指导 subagent 行为的系统提示。Subagents 仅接收此系统提示加上基本环境详细信息(如工作目录),而不是 Claude Code 系统提示。282frontmatter 定义子代理的元数据和配置。正文成为指导子代理行为的系统提示词。子代理只接收此系统提示词以及基本的环境详细信息(如工作目录),而不接收 Claude Code 的系统提示词。

283 283 

284在 [non-interactive mode](/docs/zh-CN/headless) 中,传递 [`--append-subagent-system-prompt`](/docs/zh-CN/cli-reference#cli-flags) 以将您的文本附加到每个 subagent 的系统提示末尾,包括嵌套 subagents,除了 [forked subagent](#fork-the-current-conversation),它重用对话自己的提示。需要 Claude Code v2.1.205 或更高版本。如果您的文本太长而无法在命令行上传递,请将其保存到文件并使用 `--append-subagent-system-prompt-file` 传递路径。文件标志需要 Claude Code v2.1.261 或更高版本。284在[非交互模式](/docs/zh-CN/headless)下,传入 [`--append-subagent-system-prompt`](/docs/zh-CN/cli-reference#cli-flags) 可将您的文本追加到每个子代理(包括嵌套子代理)的系统提示词末尾,但[分叉子代理](#fork-the-current-conversation)除外,它复用对话自身的提示词。需要 Claude Code v2.1.205 或更高版本。如果您的文本太长而无法在命令行中传入,请将其保存到文件中,并改用 `--append-subagent-system-prompt-file` 传入路径。文件标志需要 Claude Code v2.1.261 或更高版本。

285 285 

286一个 subagent 在主对话的当前工作目录中启动。在 subagent 中,`cd` 命令不会在 Bash 或 PowerShell 工具调用之间持续,也不会影响主对话的工作目录。要给 subagent 一个隔离的存储库副本,请改为设置 [`isolation: worktree`](#supported-frontmatter-fields)。286子代理在主对话的当前工作目录中启动。在子代理中,`cd` 命令不会在 Bash 或 PowerShell 工具调用之间保留,也不会影响主对话的工作目录。若要为子代理提供仓库的隔离副本,请设置 [`isolation: worktree`](#supported-frontmatter-fields)。

287 287 

288具有 `isolation: worktree` 的子代理会在其 worktree 内运行 Bash 和 PowerShell 命令。如果某个命令的工作目录解析到了您的主检出,例如因为 worktree 目录在子代理运行期间被删除,该命令会失败并报错。288设置了 `isolation: worktree` 的子代理会在其 worktree 内运行 Bash 和 PowerShell 命令。如果某个命令的工作目录解析为您的主检出目录(例如因为 worktree 目录在子代理运行期间被删除),该命令会失败并报错。

289 289 

290此工作目录检查涵盖包含您启动 Claude Code 的目录的整个存储库。当您的会话在其自己的链接 [worktree](/docs/zh-CN/worktrees) 中运行时,检查也涵盖该 worktree 链接的主检出。在 v2.1.210 之前,检查仅涵盖启动目录本身。一个工作目录解析到同一存储库中其他地方的命令,例如当您从 monorepo 子目录启动 Claude Code 时的存储库根目录,会在那里运行而不是失败。290此工作目录检查覆盖包含您启动 Claude Code 的目录的整个仓库。当您的会话本身运行在一个链接的 [worktree](/docs/zh-CN/worktrees) 中时,该检查还覆盖该 worktree 所链接的主检出目录。

291 291 

292对于 Bash 命令,Claude Code 还以两种方式检查命令本身:292对于 Bash 命令,Claude Code 还会从两个方面检查命令本身:

293 293 

294* 它阻止将 git 重定向到主检出的命令。294* 它会阻止将 git 重定向到主检出目录的命令。

295* 当它无法从命令文本验证命令运行的任何 git 都保留在 worktree 内时,它拒绝命令,例如当命令名称在运行时计算时。295* 当无法从命令文本中验证命令运行的任何 git 都停留在 worktree 内时(例如命令名称是在运行时计算的),它会拒绝该命令。

296 296 

297重定向向量和形状规则列在 [How Claude Code enforces isolation](/docs/zh-CN/worktrees#how-claude-code-enforces-isolation) 下。PowerShell 命令仅获得工作目录检查。297重定向途径和形式规则列在[Claude Code 如何强制执行隔离](/docs/zh-CN/worktrees#how-claude-code-enforces-isolation)中。PowerShell 命令只进行工作目录检查。

298 298 

299[Monitor](/docs/zh-CN/tools-reference#monitor-tool) 命令通过与 Bash 命令相同的工作目录和命令内容检查。299[Monitor](/docs/zh-CN/tools-reference#monitor-tool) 命令与 Bash 命令一样,会经过相同的工作目录和命令内容检查。

300 300 

301当主对话本身在 worktree 中隔离运行时,Claude Code 对会话和它生成的每个 subagent 应用相同的检查,包括没有 `isolation: worktree` 的 subagents;请参阅 [How Claude Code enforces isolation](/docs/zh-CN/worktrees#how-claude-code-enforces-isolation)。301当主对话本身在 worktree 中隔离运行时,Claude Code 会对会话及其生成的每个子代理应用相同的检查,包括没有设置 `isolation: worktree` 的子代理;请参阅[Claude Code 如何强制执行隔离](/docs/zh-CN/worktrees#how-claude-code-enforces-isolation)。

302 302 

303<h3 id="supported-frontmatter-fields">303<h3 id="supported-frontmatter-fields">

304 Frontmatter 参考304 Frontmatter 参考

305</h3>305</h3>

306 306 

307配置一个 subagent 时,使用 YAML [frontmatter](/docs/zh-CN/glossary#frontmatter) 在其文件顶部的 `---` 标记之间,并在关闭 `---` 后将其系统提示写为 Markdown。只有 `name` 和 `description` 是必需的。307使用子代理文件顶部 `---` 标记之间的 YAML [frontmatter](/docs/zh-CN/glossary#frontmatter) 来配置子代理,并在结束的 `---` 之后以 Markdown 编写其系统提示词。只有 `name` 和 `description` 是必需的。

308 308 

309多词字段名称使用 camelCase,例如 `maxTurns` 和 `disallowedTools`,并且必须与表格完全一致:Claude Code 会忽略它不识别的字段,且不报告错误。309多词字段名使用 camelCase,例如 `maxTurns` 和 `disallowedTools`,并且必须与表格完全一致:Claude Code 会忽略无法识别的字段,且不报告错误。

310 310 

311* 要在已加载的子代理中查找拼写错误的字段,请在 shell 中运行 [`claude --debug`](/docs/zh-CN/cli-reference#cli-flags),并在 `~/.claude/debug/<session-id>.txt` 的调试日志中搜索 `does not recognize or apply`。调试日志会列出子代理文件中 Claude Code 不识别的最多五个顶级字段,并在存在相近的受支持字段时给出可能想要的名称。需要 Claude Code v2.1.296 或更高版本。311* 若要在已加载的子代理中查找拼写错误的字段,请在 shell 中运行 [`claude --debug`](/docs/zh-CN/cli-reference#cli-flags),并在 `~/.claude/debug/<session-id>.txt` 的调试日志中搜索 `does not recognize or apply`。调试日志会列出子代理文件中最多五个 Claude Code 无法识别的顶层字段,并在存在相近的受支持字段时给出可能想写的名称。需要 Claude Code v2.1.296 或更高版本。

312* 要了解子代理文件为何未加载,请参阅[Claude Code 跳过的子代理文件](#subagent-files-claude-code-skips)。312* 若要了解子代理文件为何未加载,请参阅 [Claude Code 跳过的子代理文件](#subagent-files-claude-code-skips)。

313 313 

314| Field | 必需 | Description |314| 字段 | 必需 | 描述 |

315| :- | :- | :- |315| :- | :- | :- |

316| `name` | 是 | 最多 256 个字符的唯一标识符,例如 `code-reviewer` 或 `reviewer-v2`。[Hook](/docs/zh-CN/hooks#subagentstart) 以 `agent_type` 的形式接收此值。文件名不必与之一致。名称不能包含 `:`,该字符保留用于[插件作用域标识符](/docs/zh-CN/plugins/overview),例如 `my-plugin:reviewer` |316| `name` | 是 | 最多 256 个字符的唯一标识符,例如 `code-reviewer` 或 `reviewer-v2`。[Hook](/docs/zh-CN/hooks#subagentstart) 以 `agent_type` 的形式接收此值。文件名不必与之匹配。名称不能包含 `:`,它保留给[插件作用域标识符](/docs/zh-CN/plugins/overview),例如 `my-plugin:reviewer` |

317| `description` | 是 | Claude 何时应该委托给此 subagent |317| `description` | 是 | Claude 应在何时委派给此子代理 |

318| `tools` | 否 | [Tools](#available-tools) subagent 可以使用,作为逗号分隔的字符串,例如 `Read, Grep, Bash` 或 YAML 列表。如果省略,继承 subagents 可用的每个工具。如果列表中没有条目解析为工具,subagent 通常 [fails to launch](/docs/zh-CN/errors#agent-would-be-spawned-with-zero-tools) 并出现错误,命名条目。要将 Skills 预加载到上下文中,请使用 `skills` 字段而不是在此处列出 `Skill` |318| `tools` | 否 | 子代理可以使用的[工具](#available-tools),可以是逗号分隔的字符串(如 `Read, Grep, Bash`)或 YAML 列表。省略时继承子代理可用的所有工具。如果列表中没有任何条目能解析为工具,子代理通常会[启动失败](/docs/zh-CN/errors#agent-would-be-spawned-with-zero-tools),并报告列出这些条目的错误。若要将 skill 预加载到上下文中,请使用 `skills` 字段,而不是在此处列出 `Skill` |

319| `disallowedTools` | 否 | 要拒绝的工具,会从继承的或指定的列表中移除。格式与 `tools` 相同。带有说明符的条目(例如 `Bash(git push *)`)仍会[移除整个工具](#restrict-which-tools-a-subagent-can-use) |319| `disallowedTools` | 否 | 要拒绝的工具,从继承的或指定的列表中移除。格式与 `tools` 相同。带有说明符的条目(如 `Bash(git push *)`)仍会[移除整个工具](#restrict-which-tools-a-subagent-can-use) |

320| `model` | 否 | [Model](#choose-a-model) 使用:`sonnet`、`opus`、`haiku`、`fable`、完整模型 ID(例如,`claude-opus-5-5`)或 `inherit`。当您省略它时,Claude Code 在 [subagent model order](#choose-a-model) 中选择模型 |320| `model` | 否 | 要使用的[模型](#choose-a-model):`sonnet`、`opus`、`haiku`、`fable`、完整模型 ID(如 `claude-opus-5-5`)或 `inherit`。省略时,Claude Code 按照[子代理模型顺序](#choose-a-model)选择模型 |

321| `permissionMode` | 否 | [权限模式](#permission-modes):`default`、`acceptEdits`、`auto`、`dontAsk`、`bypassPermissions`、`plan`,或作为 `default` 别名的 `manual`。对[插件子代理](#choose-the-subagent-scope)会被忽略 |321| `permissionMode` | 否 | [权限模式](#permission-modes):`default`、`acceptEdits`、`auto`、`dontAsk`、`bypassPermissions`、`plan`,或作为 `default` 别名的 `manual`。对[插件子代理](#choose-the-subagent-scope)忽略 |

322| `maxTurns` | 否 | subagent 停止前的最大代理轮数。当 subagent 达到限制时,Claude Code 返回其输出标记为部分,Claude 可以 [resume it](#resume-subagents) 继续。部分标记需要 Claude Code v2.1.246 或更高版本 |322| `maxTurns` | 否 | 子代理停止前的最大 Agent 轮次数。当子代理达到限制时,Claude Code 会返回其标记为部分结果的输出,Claude 可以[恢复它](#resume-subagents)以继续。部分结果标记需要 Claude Code v2.1.246 或更高版本 |

323| `autoCompactWindow` | 否 | 将此子代理的[自动压缩窗口](#subagent-auto-compact-window)降低到 `100000` 至 `1000000` 之间的 token 数。需要 Claude Code v2.1.296 或更高版本 |323| `autoCompactWindow` | 否 | 将此子代理的[自动压缩窗口](#subagent-auto-compact-window)降低到 `100000` 至 `1000000` 之间的 token 数。需要 Claude Code v2.1.296 或更高版本 |

324| `skills` | 否 | [Skills](/docs/zh-CN/skills) 在启动时预加载到 subagent 的上下文中。注入完整的技能内容,而不仅仅是描述。Subagents 仍然可以通过 Skill 工具调用未列出的项目、用户和 plugin 技能 |324| `skills` | 否 | 启动时预加载到子代理上下文中的 [skill](/docs/zh-CN/skills)。注入的是完整的 skill 内容,而不仅仅是描述。子代理仍可通过 Skill 工具调用未列出的项目、用户和插件 skill |

325| `mcpServers` | 否 | [MCP servers](/docs/zh-CN/mcp) 对此 subagent 可用。每个条目要么是引用已配置服务器的服务器名称(例如,`"slack"`),要么是内联定义,其中服务器名称为键,完整的 [MCP server config](/docs/zh-CN/mcp#installing-mcp-servers) 为值。对于 [plugin subagents](#choose-the-subagent-scope) 被忽略 |325| `mcpServers` | 否 | 此子代理可用的 [MCP 服务器](/docs/zh-CN/mcp)。每个条目可以是引用已配置服务器的服务器名称(例如 `"slack"`),也可以是以服务器名称为键、以完整 [MCP 服务器配置](/docs/zh-CN/mcp#installing-mcp-servers)为值的内联定义。对[插件子代理](#choose-the-subagent-scope)忽略 |

326| `hooks` | 否 | [Lifecycle hooks](#define-hooks-for-subagents) 限定于此 subagent。对于 [plugin subagents](#choose-the-subagent-scope) 被忽略 |326| `hooks` | 否 | 限定于此子代理的[生命周期 hook](#define-hooks-for-subagents)。对[插件子代理](#choose-the-subagent-scope)忽略 |

327| `memory` | 否 | [Persistent memory scope](#enable-persistent-memory):`user`、`project` 或 `local`。启用跨会话学习 |327| `memory` | 否 | [持久记忆作用域](#enable-persistent-memory):`user`、`project` 或 `local`。启用跨会话学习 |

328| `background` | 否 | 设置为 `true` 以即使 Claude 要求在前台运行也保持此 subagent 在后台。其中 [fork mode](#turn-fork-mode-on-or-off) 打开时,Claude Code 已经在 [background](#run-subagents-in-foreground-or-background) 中运行 Claude 生成的 subagents |328| `background` | 否 | 设置为 `true` 可使此子代理保持在后台运行,即使 Claude 要求等待它。默认情况下,Claude 从主对话生成的子代理已经会[在后台启动](#run-subagents-in-foreground-or-background) |

329| `omitClaudeMd` | 否 | 设置为 `true` 可使此子代理在启动时,其[初始上下文](#what-loads-at-startup)中不包含用户、项目和本地 CLAUDE.md 文件;[托管策略文件](/docs/zh-CN/memory#how-claude-md-files-load)仍会加载,但[托管子代理](#choose-the-subagent-scope)除外。适用于从委托提示词中获取所需一切的子代理。当该 Agent 通过 `--agent` 或 `agent` 设置作为主会话 Agent 运行时会被忽略。需要 Claude Code v2.1.271 或更高版本 |329| `omitClaudeMd` | 否 | 设置为 `true` 可使此子代理在启动时的[初始上下文](#what-loads-at-startup)中不包含用户、项目和本地 CLAUDE.md 文件;[托管策略文件](/docs/zh-CN/memory#how-claude-md-files-load)仍会加载,但[托管子代理](#choose-the-subagent-scope)除外。适用于从委派提示词中获取所需全部信息的子代理。当 Agent 通过 `--agent` 或 `agent` 设置作为主会话 Agent 运行时忽略。需要 Claude Code v2.1.271 或更高版本 |

330| `effort` | 否 | 此子代理活跃时的 effort 级别。覆盖会话的 effort 级别,但不覆盖 [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/zh-CN/env-vars#variables) 环境变量。选项:`low`、`medium`、`high`、`xhigh`、`max`;可用级别取决于模型。请参阅[选择 effort 级别](#choose-an-effort-level) |330| `effort` | 否 | 此子代理活动时的 effort 级别。覆盖会话的 effort 级别,但不覆盖 [`CLAUDE_CODE_EFFORT_LEVEL`](/docs/zh-CN/env-vars#variables) 环境变量。选项:`low`、`medium`、`high`、`xhigh`、`max`;可用级别取决于模型。请参阅[选择 effort 级别](#choose-an-effort-level) |

331| `isolation` | 否 | 设置为 `worktree` 以在临时 [git worktree](/docs/zh-CN/worktrees) 中运行 subagent,为其提供存储库的隔离副本,默认从您的 [default branch](/docs/zh-CN/worktrees#choose-the-base-branch) 分支,而不是父会话的 `HEAD`。如果 subagent 不进行任何更改,worktree 会自动清理 |331| `isolation` | 否 | 设置为 `worktree` 可在临时 [git worktree](/docs/zh-CN/worktrees) 中运行子代理,为其提供仓库的隔离副本,默认从您的[默认分支](/docs/zh-CN/worktrees#choose-the-base-branch)而不是父会话的 `HEAD` 创建分支。如果子代理未做任何更改,worktree 会被自动清理 |

332| `color` | 否 | Subagent 在任务列表和转录中的显示颜色。接受 `red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink` 或 `cyan` |332| `color` | 否 | 子代理在任务列表和会话记录中的显示颜色。接受 `red`、`blue`、`green`、`yellow`、`purple`、`orange`、`pink` 或 `cyan` |

333| `initialPrompt` | 否 | 当此代理作为主会话代理运行时(通过 `--agent` 或 `agent` 设置),自动提交为第一个用户轮次。[Commands](/docs/zh-CN/commands) 和 [skills](/docs/zh-CN/skills) 被处理。前置于任何用户提供的提示。对于 [plugin subagents](#choose-the-subagent-scope) 被忽略 |333| `initialPrompt` | 否 | 当此 Agent 作为主会话 Agent 运行时(通过 `--agent` 或 `agent` 设置),作为第一个用户轮次自动提交。会处理其中的[命令](/docs/zh-CN/commands)和 [skill](/docs/zh-CN/skills)。添加在任何用户提供的提示词之前。对[插件子代理](#choose-the-subagent-scope)忽略 |

334| `experimental` | 否 | 实验选项的映射。将其 `cacheTtl` 键设置为 `5m` 或 `1h` 以选择此 subagent 请求的 [prompt cache lifetime](/docs/zh-CN/prompt-caching#choose-the-ttl-yourself),在 frontmatter 的 [cache lifetime precedence](/docs/zh-CN/prompt-caching#choose-the-ttl-yourself) 中的位置。Claude Code 忽略任何其他值,在您的 Claude 订阅使用使用额度时忽略 `1h`,并仅从 subagent 文件读取字段。需要 Claude Code v2.1.248 或更高版本 |334| `experimental` | 否 | 实验性选项的映射。将其 `cacheTtl` 键设置为 `5m` 或 `1h`,可为此子代理的请求选择[提示缓存生命周期](/docs/zh-CN/prompt-caching#choose-the-ttl-yourself),其优先级取决于 frontmatter 在[缓存生命周期优先级](/docs/zh-CN/prompt-caching#choose-the-ttl-yourself)中的位置。Claude Code 会忽略任何其他值,在您的 Claude 订阅使用使用额度时忽略 `1h`,并且只从子代理文件中读取该字段。需要 Claude Code v2.1.248 或更高版本 |

335 335 

336在 `experimental` 映射内写入 `cacheTtl`,而不是在 frontmatter 的顶级。336请将 `cacheTtl` 写在 `experimental` 映射内,而不是 frontmatter 的顶层。

337 337 

338```yaml theme={null}338```yaml theme={null}

339---339---


345```345```

346 346 

347<h4 id="subagent-files-claude-code-skips">347<h4 id="subagent-files-claude-code-skips">

348 Subagent 文件 Claude Code 跳过348 Claude Code 跳过的子代理文件

349</h4>349</h4>

350 350 

351Claude Code 跳过项目、用户或托管 `agents` 目录中的文件,或在您使用 `--add-dir` 添加的目录下的文件,而不在会话中报告它,当 frontmatter 有以下任何问题时:351当项目、用户或托管 `agents` 目录中的文件,或您通过 `--add-dir` 添加的目录下的 `agents` 目录中的文件的 frontmatter 存在以下任一问题时,Claude Code 会跳过该文件,且不会在会话中报告:

352 352 

353* **没有 `name`**:Claude Code 将文件视为保存在您的代理旁边的文档。353* **没有 `name`**:Claude Code 将该文件视为与您的 Agent 放在一起的文档。

354* **一个开始 `---` 不是文件的第一行**:Claude Code 读取文件为没有 frontmatter,并将其视为文档。354* **开头的 `---` 不在文件第一行**:Claude Code 认为该文件没有 frontmatter,并将其视为文档。

355* **`name` 以 `-` 开头、包含 `:` 或超过 256 个字符**:Claude Code 跳过该文件,并向调试日志写入一条错误。355* **`name` 以 `-` 开头、包含 `:` 或超过 256 个字符**:Claude Code 跳过该文件,并将错误写入调试日志。

356* **一个 `name` 但没有 `description`**:Claude Code 跳过文件并向调试日志写入原因。356* **有 `name` 但没有 `description`**:Claude Code 跳过该文件,并将原因写入调试日志。

357* **不解析的 YAML**:Claude Code 从文件读取没有字段,跳过它,并向调试日志写入解析错误。357* **YAML 无法解析**:Claude Code 不从该文件读取任何字段,跳过它,并将解析错误写入调试日志。

358 358 

359要查看调试日志,使用 `--debug` 运行 Claude Code。359若要查看调试日志,请使用 `--debug` 运行 Claude Code。

360 360 

361一个 [plugin subagent](/docs/zh-CN/plugins/components#agents),其 frontmatter 没有 `name` 或不解析,仍然加载,在其文件名下。361如果[插件子代理](/docs/zh-CN/plugins/components#agents)的 frontmatter 没有 `name` 或无法解析,它仍会以其文件名加载。

362 362 

363<h5 id="check-an-agents-directory-before-a-session">363<h5 id="check-an-agents-directory-before-a-session">

364 在会话前检查 `agents` 目录364 在会话开始前检查 `agents` 目录

365</h5>365</h5>

366 366 

367要查找 `agents` 目录中 frontmatter 不解析的文件,针对目录运行 `claude plugin validate`,例如 `.claude/agents` 或 `~/.claude/agents`。Claude Code 仅检查 [您命名的目录](/docs/zh-CN/plugins/cli-reference#validate-a-directory),并不标记 frontmatter 解析但没有 `name` 的文件。需要 Claude Code v2.1.233 或更高版本。367若要查找 `agents` 目录中 frontmatter 无法解析的文件,请针对该目录(例如 `.claude/agents` 或 `~/.claude/agents`)运行 `claude plugin validate`。Claude Code 只检查[您指定的目录](/docs/zh-CN/plugins/cli-reference#validate-a-directory),并且不会标记 frontmatter 可解析但没有 `name` 的文件。需要 Claude Code v2.1.233 或更高版本。

368 368 

369<h3 id="choose-a-model">369<h3 id="choose-a-model">

370 选择模型370 选择模型

371</h3>371</h3>

372 372 

373`model` 字段控制 subagent 使用的模型:373`model` 字段控制子代理使用哪个模型:

374 374 

375* **Model alias**:使用可用的别名之一:`sonnet`、`opus`、`haiku` 或 `fable`375* **模型别名**:使用可用别名之一:`sonnet`、`opus`、`haiku` 或 `fable`

376* **Full model ID**:使用完整的模型 ID,例如 `claude-opus-5-5` 或 `claude-sonnet-5`。接受与 `--model` 标志相同的值376* **完整模型 ID**:使用完整模型 ID,例如 `claude-opus-5-5` 或 `claude-sonnet-5`。接受与 `--model` 标志相同的值

377* **inherit**:使用与主对话相同的模型377* **inherit**:使用与主对话相同的模型

378 378 

379当 Claude 调用 subagent 时,它也可以为该特定调用传递 `model` 参数。Claude Code 按以下顺序解析 subagent 的模型:379当 Claude 调用子代理时,它还可以为该次调用传入 `model` 参数。Claude Code 按以下顺序确定子代理的模型:

380 380 

3811. 每次调用的 `model` 参数3811. 单次调用的 `model` 参数

3822. Subagent 定义的 `model` frontmatter,其中 `inherit` 选择主对话的模型3822. 子代理定义中的 `model` frontmatter,其中 `inherit` 选择主对话的模型

3833. [`CLAUDE_CODE_SUBAGENT_MODEL`](/docs/zh-CN/model-config#environment-variables) 环境变量,当您将其设置为模型别名或模型 ID 时3833. [`CLAUDE_CODE_SUBAGENT_MODEL`](/docs/zh-CN/model-config#environment-variables) 环境变量(当您将其设置为模型别名或模型 ID 时)

3844. 主对话的模型3844. 主对话的模型

385 385 

386如果已安装的 [mod](/docs/zh-CN/plugins/mods/overview) 在其 [`agent.spawn`](/docs/zh-CN/plugins/mods/reference#subagents) hook 中设置了模型,Claude Code 会使用该模型来代替每次调用的参数。386如果已安装的 [mod](/docs/zh-CN/plugins/mods/overview) 在其 [`agent.spawn`](/docs/zh-CN/plugins/mods/reference#subagents) hook 中设置了模型,Claude Code 会使用该模型来代替单次调用的参数。

387 387 

388在两种情况下,家族别名(例如 frontmatter 或每次调用的参数中的 `opus`)解析到主对话的模型,而不是 [alias points to](/docs/zh-CN/model-config#model-aliases) 的版本:388在两种情况下,单次调用参数或 frontmatter 中的系列别名(如 `opus`)会解析为主对话的模型,而不是[该别名指向的版本](/docs/zh-CN/model-config#model-aliases):

389 389 

390* **主对话的模型属于该家族**:subagent 在主对话的确切模型上运行,包括任何 `[1m]` 后缀,因此它获得与主对话相同的 [extended context](/docs/zh-CN/model-config#extended-context) 窗口。390* **主对话的模型属于该系列**:子代理在主对话的确切模型上运行,包括任何 `[1m]` 后缀,因此它获得与主对话相同的[扩展上下文](/docs/zh-CN/model-config#extended-context)窗口。

391* **Claude Code 无法告诉主对话的模型家族,在 [a provider other than the Anthropic API](/docs/zh-CN/third-party-integrations) 上**:这可能发生在 Amazon Bedrock 上的 [application inference profile ARN](/docs/zh-CN/amazon-bedrock#iam-configuration),Claude Code 尚未解析为支持模型。这种情况仅涵盖 `opus` 别名,当您设置 [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/zh-CN/model-config#environment-variables) 时不适用,因为 `opus` 然后解析到您设置的模型。391* **在 [Anthropic API 以外的提供商](/docs/zh-CN/third-party-integrations)上,Claude Code 无法判断主对话的模型系列**:这可能发生在 Amazon Bedrock 上使用 Claude Code 尚未解析到后端模型的[应用推理配置文件 ARN](/docs/zh-CN/amazon-bedrock#iam-configuration) 时。这种情况仅涵盖 `opus` 别名,并且在您设置了 [`ANTHROPIC_DEFAULT_OPUS_MODEL`](/docs/zh-CN/model-config#environment-variables) 时不适用,因为此时 `opus` 会解析为您设置的模型。

392 392 

393`CLAUDE_CODE_SUBAGENT_MODEL` 中的别名始终解析为该别名指向的版本,即使它指定的是主对话所属的系列。将该变量设置为 `inherit` 与不设置它相同。393`CLAUDE_CODE_SUBAGENT_MODEL` 中的别名始终解析为该别名指向的版本,即使它指向主对话的系列。将该变量设置为 `inherit` 等同于不设置它。

394 394 

395设置 `CLAUDE_CODE_SUBAGENT_MODEL` 本身不会改变内置 Explore 和 Plan subagents 运行的模型。要改变它,请参阅 [Run every subagent on one model](#run-every-subagent-on-one-model)。395仅设置 `CLAUDE_CODE_SUBAGENT_MODEL` 不会改变内置 Explore 和 Plan 子代理所运行的模型。若要更改,请参阅[让所有子代理在同一模型上运行](#run-every-subagent-on-one-model)。

396 396 

397在 v2.1.251 之前,`CLAUDE_CODE_SUBAGENT_MODEL` 在此顺序中排在第一位,并覆盖每次调用的参数和 frontmatter,包括 `model: inherit`。397在 v2.1.251 之前,`CLAUDE_CODE_SUBAGENT_MODEL` 在此顺序中排在首位,会覆盖单次调用参数和 frontmatter,包括 `model: inherit`。

398 398 

399Claude Code 根据您组织的 [`availableModels`](/docs/zh-CN/model-config#restrict-model-selection) 允许列表检查每次调用的参数、frontmatter 和环境变量值。对于被阻止的值,它替换另一个模型:399Claude Code 会根据您组织的 [`availableModels`](/docs/zh-CN/model-config#restrict-model-selection) 允许列表检查单次调用参数、frontmatter 和环境变量的值。对于被阻止的值,它会替换为另一个模型:

400 400 

401* 当被阻止的值是家族别名(例如 `opus`)时,Claude Code 在允许列表允许的该家族的最新版本上运行 subagent,遵循与 `/model` 相同的 [substitution rules and provider scope](/docs/zh-CN/model-config#restrict-model-selection)。在 v2.1.222 之前,Claude Code 也在继承的模型上为被阻止的家族别名运行 subagent。401* 当被阻止的值是系列别名(如 `opus`)时,Claude Code 会在允许列表允许的该系列最新版本上运行子代理,遵循与 `/model` 相同的[替换规则和提供商范围](/docs/zh-CN/model-config#restrict-model-selection)。在 v2.1.222 之前,对于被阻止的系列别名,Claude Code 同样会在继承的模型上运行子代理。

402* 对于任何其他被阻止的值,在该替换不运行的提供商上,或当允许列表允许该家族的没有版本时,Claude Code 改为在继承的模型上运行 subagent。如果您设置 `CLAUDE_CODE_SUBAGENT_MODEL`,Claude Code 首先尝试该模型,在这些相同的规则下。402* 对于任何其他被阻止的值、在该替换不起作用的提供商上,或者当允许列表不允许该系列的任何版本时,Claude Code 会改为在继承的模型上运行子代理。如果您设置了 `CLAUDE_CODE_SUBAGENT_MODEL`,Claude Code 会按照同样的规则首先尝试该模型。

403 403 

404在交互式会话中,Claude Code 显示一个警告,命名请求的模型和 subagent 运行的模型,对于任一替换。404在交互式会话中,对于上述任一种替换,Claude Code 都会显示一条警告,列出请求的模型和子代理实际运行的模型。

405 405 

406要检查子代理运行在哪个模型上,请运行 [`/tasks`](/docs/zh-CN/commands)。Claude Code 会在子代理所在行显示模型名称,并在为该子代理设置了 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)时一并显示。需要 Claude Code v2.1.242 或更高版本。406若要查看子代理正在哪个模型上运行,请运行 [`/tasks`](/docs/zh-CN/commands)。Claude Code 会在子代理所在行显示模型名称,并附上为该子代理设置的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)(如果有)。需要 Claude Code v2.1.242 或更高版本。

407 407 

408每次调用的 `model` 参数也适用于 subagent 何时 [resumed or sent a follow-up message](#resume-subagents),因此 subagent 保持在该模型上。在 v2.1.211 之前,恢复删除了每次调用的值,subagent 恢复到其定义的 `model` 字段或,没有一个,主对话的模型。408当子代理被[恢复或收到后续消息](#resume-subagents)时,单次调用的 `model` 参数同样适用,因此子代理会保持在该模型上。

409 409 

410从 v2.1.198 开始,subagents 也继承主对话的 [extended thinking](/docs/zh-CN/model-config#extended-thinking) 配置:如果在您的会话中启用了思考,对于 subagent 也启用,如果关闭,则保持关闭。没有每个 subagent 的思考设置。在 v2.1.198 之前,subagents 运行时禁用了扩展思考,无论主对话的设置如何。410从 v2.1.198 开始,子代理还会继承主对话的[扩展思考](/docs/zh-CN/model-config#extended-thinking)配置:如果您的会话中启用了思考,子代理也会启用;如果关闭,它也保持关闭。没有针对单个子代理的思考设置。在 v2.1.198 之前,无论主对话的设置如何,子代理都在禁用扩展思考的情况下运行。

411 411 

412<h4 id="run-every-subagent-on-one-model">412<h4 id="run-every-subagent-on-one-model">

413 在一个模型上运行每个 subagent413 让所有子代理在同一模型上运行

414</h4>414</h4>

415 415 

416`CLAUDE_CODE_SUBAGENT_MODEL` 是一个默认值,因此 subagent 的定义或 Claude 传递的模型仍然优先于它。要将一个模型应用于每个 subagent、[teammate](/docs/zh-CN/agent-teams#specify-teammates-and-models) 和 [workflow agent](/docs/zh-CN/workflows),也设置 `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` 为 `1`。需要 Claude Code v2.1.257 或更高版本。416`CLAUDE_CODE_SUBAGENT_MODEL` 是一个默认值,因此子代理的定义或 Claude 传入的模型仍优先于它。若要将同一模型应用于每个子代理、[队友](/docs/zh-CN/agent-teams#specify-teammates-and-models)和[工作流 Agent](/docs/zh-CN/workflows),还需将 `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` 设置为 `1`。需要 Claude Code v2.1.257 或更高版本。

417 417 

418* 如果您设置两个变量,subagents 在 `CLAUDE_CODE_SUBAGENT_MODEL` 中的模型上运行。418* 如果同时设置了这两个变量,子代理会在 `CLAUDE_CODE_SUBAGENT_MODEL` 中的模型上运行。

419* 如果仅设置 `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`,子代理将在主对话的模型上运行,但内置 Explore 子代理除外,它会在[内置子代理下为其列出的模型](#built-in-subagents)上运行。419* 如果只设置了 `CLAUDE_CODE_SUBAGENT_MODEL_FORCE`,子代理会在主对话的模型上运行,但内置 Explore 子代理除外,它在[内置子代理下为其列出的模型](#built-in-subagents)上运行。

420 420 

421例如,要在 Haiku 上运行每个 subagent,在 [settings file](/docs/zh-CN/settings) 的 `env` 块中设置两个变量:421例如,若要让所有子代理都在 Haiku 上运行,请在[设置文件](/docs/zh-CN/settings)的 `env` 块中同时设置这两个变量:

422 422 

423```json theme={null}423```json theme={null}

424{424{


429}429}

430```430```

431 431 

432要检查设置是否生效,在 subagent 运行时运行 [`/tasks`](/docs/zh-CN/commands)。Subagent 的行显示它运行的模型。432若要检查设置是否生效,请在子代理运行时运行 [`/tasks`](/docs/zh-CN/commands)。子代理所在行会显示它所运行的模型。

433 433 

434当 `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` [启用](/docs/zh-CN/env-vars)时,Claude Code 会忽略子代理定义中的 `model` 字段,Claude 在启动子代理时也无法传递模型。以下子代理仍在主对话的模型上运行:434当 `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` [启用](/docs/zh-CN/env-vars)时,Claude Code 会忽略子代理定义中的 `model` 字段,并且 Claude 在启动子代理时无法传入模型。以下子代理仍在主对话的模型上运行:

435 435 

436* 一个 [fork](#fork-the-current-conversation)436* [分叉](#fork-the-current-conversation)

437* 一个 [skill that runs in a subagent](/docs/zh-CN/skills#run-skills-in-a-subagent),带有 `model: inherit`437* 设置了 `model: inherit` 的[在子代理中运行的 skill](/docs/zh-CN/skills#run-skills-in-a-subagent)

438 438 

439<h3 id="choose-an-effort-level">439<h3 id="choose-an-effort-level">

440 选择 effort 级别440 选择 effort 级别

441</h3>441</h3>

442 442 

443要让子代理以其自身的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)运行,请在其定义中设置 [`effort`](#supported-frontmatter-fields) 字段。443若要让子代理以其自己的 [effort 级别](/docs/zh-CN/model-config#adjust-effort-level)运行,请在其定义中设置 [`effort`](#supported-frontmatter-fields) 字段。

444 444 

445当您要求 Claude 以特定 effort 级别运行非分叉子代理时,Claude 也可以为该次调用传递一个 `effort` 参数。该参数会覆盖 `effort` 字段,并在子代理被[恢复](#resume-subagents)时保持有效。[`CLAUDE_CODE_EFFORT_LEVEL`](/docs/zh-CN/env-vars#variables) 环境变量优先于这两者。每次调用的参数需要 Claude Code v2.1.292 或更高版本。445当您要求 Claude 以特定 effort 级别运行非分叉子代理时,它还可以为该次调用传入 `effort` 参数。该参数会覆盖 `effort` 字段,并在子代理被[恢复](#resume-subagents)时保持有效。[`CLAUDE_CODE_EFFORT_LEVEL`](/docs/zh-CN/env-vars#variables) 环境变量优先于这两者。单次调用参数需要 Claude Code v2.1.292 或更高版本。

446 446 

447<h3 id="control-subagent-capabilities">447<h3 id="control-subagent-capabilities">

448 控制 subagent 能力448 控制子代理的能力

449</h3>449</h3>

450 450 

451您可以通过工具访问、权限模式和条件规则来控制 subagents 可以做什么。451您可以通过工具访问、权限模式和条件规则来控制子代理能做什么。

452 452 

453<h4 id="available-tools">453<h4 id="available-tools">

454 可用工具454 可用工具

455</h4>455</h4>

456 456 

457Subagents 继承主对话中可用的 [built-in tools](/docs/zh-CN/tools-reference) 和 MCP 工具,由两个过滤器缩小:第一个从每个 subagent 删除工具的短列表,第二个为在 [background](#run-subagents-in-foreground-or-background) 中运行的 subagents 减少内置工具集,这是默认值。在 macOS、Linux 和 WSL 上,当主对话没有 Glob 和 Grep 工具时,subagent 也可以接收它们,如 [Glob tool behavior](/docs/zh-CN/tools-reference#glob-tool-behavior) 下所述。[Forks](#fork-the-current-conversation) 跳过两个过滤器并接收主对话的确切工具池。第一个过滤器删除这些工具,即使在 `tools` 字段中列出:457子代理继承主对话中可用的[内置工具](/docs/zh-CN/tools-reference)和 MCP 工具,并经过两个过滤器的缩减:第一个过滤器从每个子代理中移除少量工具,第二个过滤器为在[后台](#run-subagents-in-foreground-or-background)运行的子代理(默认情况)缩减内置工具集。在 macOS、Linux 和 WSL 上,当主对话没有 Glob 和 Grep 工具时,子代理也可以获得这些工具,如 [Glob 工具行为](/docs/zh-CN/tools-reference#glob-tool-behavior)中所述。[分叉](#fork-the-current-conversation)会跳过这两个过滤器,获得与主对话完全相同的工具池。第一个过滤器会移除以下工具,即使它们列在 `tools` 字段中:

458 458 

459* `Agent`,当 subagent 在 [depth limit](#let-subagents-spawn-their-own-subagents);在 [fork](#fork-the-current-conversation) 中工具保持列出但返回错误而不是生成459* `Agent`,当子代理达到[深度限制](#let-subagents-spawn-their-own-subagents)时;在[分叉](#fork-the-current-conversation)中,该工具仍会列出,但会返回错误而不是生成子代理

460* `AskUserQuestion`460* `AskUserQuestion`

461* `EndConversation`,只能结束主对话;请参阅 [EndConversation tool behavior](/docs/zh-CN/tools-reference#endconversation-tool-behavior)461* `EndConversation`,它只能结束主对话;请参阅 [EndConversation 工具行为](/docs/zh-CN/tools-reference#endconversation-tool-behavior)

462* `EnterPlanMode`462* `EnterPlanMode`

463* `ExitPlanMode`,除非 subagent 的 [`permissionMode`](#permission-modes) 是 `plan`463* `ExitPlanMode`,除非子代理的 [`permissionMode`](#permission-modes) 为 `plan`

464* `ScheduleWakeup`464* `ScheduleWakeup`

465* `WaitForMcpServers`465* `WaitForMcpServers`

466* `Workflow`466* `Workflow`

467 467 

468第二个过滤器适用于在后台运行的 subagents。`Agent` 和 `ExitPlanMode` 无论 subagent 在哪里运行都遵循第一个过滤器的条件。除这两个工具外,后台 subagent 保留每个 MCP 工具,但内置工具仅保留这些:`Read`、`Grep`、`Glob`、`LSP`、`Bash`、`PowerShell`、`Edit`、`Write`、`NotebookEdit`、`WebFetch`、`WebSearch`、`TodoWrite`、`Skill`、`ToolSearch`、`EnterWorktree`、`ExitWorktree`、`Monitor`、`TaskStop`、`SendMessage` 和 `Artifact`,加上 [`SubagentHandback`](/docs/zh-CN/tools-reference) 用于通过它报告的 subagent。Claude Code 从后台 subagent 删除每个其他内置工具,无论继承还是在 `tools` 字段中列出,因此相同的定义可以在前台和后台解析为不同的工具。删除不会报告错误,除非它使 `tools` 列表[解析为空](/docs/zh-CN/errors#agent-would-be-spawned-with-zero-tools)。468第二个过滤器适用于在后台运行的子代理。除了 `Agent` 和 `ExitPlanMode`(无论子代理在何处运行,都遵循第一个过滤器的条件)之外,后台子代理保留所有 MCP 工具,但只保留以下内置工具:`Read`、`Grep`、`Glob`、`LSP`、`Bash`、`PowerShell`、`Edit`、`Write`、`NotebookEdit`、`WebFetch`、`WebSearch`、`TodoWrite`、`Skill`、`ToolSearch`、`EnterWorktree`、`ExitWorktree`、`Monitor`、`TaskStop`、`SendMessage` 和 `Artifact`,对于通过 [`SubagentHandback`](/docs/zh-CN/tools-reference) 报告的子代理,还保留该工具。Claude Code 会从后台子代理中移除所有其他内置工具,无论是继承的还是列在 `tools` 字段中的,因此同一定义在前台和后台可能解析为不同的工具。除非移除后 `tools` 列表[解析结果为空](/docs/zh-CN/errors#agent-would-be-spawned-with-zero-tools),否则移除操作不会报告错误。

469 469 

470在 v2.1.280 之前,后台 subagents 无法使用 `LSP`。470在 v2.1.280 之前,后台子代理无法使用 `LSP`。

471 471 

472[`ListAgents`](/docs/zh-CN/cross-session-messaging) 遵循这些过滤器,如任何内置工具:前台 subagent 在启用跨会话消息的会话中继承它,后台 subagent 不保留它。472[`ListAgents`](/docs/zh-CN/cross-session-messaging) 与任何内置工具一样遵循这些过滤器:在启用了跨会话消息的会话中,前台子代理会继承它,而后台子代理不会保留它。

473 473 

474[agent teams](/docs/zh-CN/agent-teams) 中的队友另外保留任务工具和 cron 工具:`TaskCreate`、`TaskGet`、`TaskList`、`TaskUpdate`、`CronCreate`、`CronDelete` 和 `CronList`。474[agent team](/docs/zh-CN/agent-teams) 中的队友还会额外保留任务工具和 cron 工具:`TaskCreate`、`TaskGet`、`TaskList`、`TaskUpdate`、`CronCreate`、`CronDelete` 和 `CronList`。

475 475 

476在 [session without the Task tools](/docs/zh-CN/tools-reference#task-tool-availability) 中,Claude Code 也不向 subagents 提供任务工具,即使 subagent 运行不同的模型。进程内队友遵循您的会话相同的方式,而在其自己的 [split pane](/docs/zh-CN/agent-teams#choose-a-display-mode) 中的队友作为单独的 Claude Code 进程运行,因此其自己的模型决定。476在[没有 Task 工具的会话](/docs/zh-CN/tools-reference#task-tool-availability)中,Claude Code 也不会向子代理提供任务工具,即使子代理运行的是不同的模型。进程内队友同样遵循您的会话,而在其自己的[分割窗格](/docs/zh-CN/agent-teams#choose-a-display-mode)中的队友作为独立的 Claude Code 进程运行,因此由其自身的模型决定。

477 477 

478<h4 id="restrict-which-tools-a-subagent-can-use">478<h4 id="restrict-which-tools-a-subagent-can-use">

479 限制子代理可以使用的工具479 限制子代理可以使用的工具

480</h4>480</h4>

481 481 

482要限制工具,请使用 `tools` 字段作为允许列表,或使用 `disallowedTools` 字段作为拒绝列表。如果两者都设置了,会先应用 `disallowedTools`,然后针对剩余的工具池解析 `tools`。同时列在两者中的工具会被移除。482若要限制工具,请将 `tools` 字段用作允许列表,或将 `disallowedTools` 字段用作拒绝列表。如果两者都设置,会先应用 `disallowedTools`,然后根据剩余的工具池解析 `tools`。同时列在两者中的工具会被移除。

483 483 

484此示例使用 `tools` 仅允许 Read、Grep、Glob 和 Bash。该子代理无法编辑文件、写入文件或使用任何 MCP 工具:484此示例使用 `tools` 只允许 Read、Grep、Glob 和 Bash。该子代理无法编辑文件、写入文件或使用任何 MCP 工具:

485 485 

486```yaml theme={null}486```yaml theme={null}

487---487---


491---491---

492```492```

493 493 

494此示例使用 `disallowedTools` 来继承 subagent 的工具池,除了 Write 和 Edit。Subagent 保留 Bash、MCP 工具和其他所有内容:494此示例使用 `disallowedTools` 继承子代理除 Write 和 Edit 之外的工具池。该子代理保留 Bash、MCP 工具及其工具池中的其余工具:

495 495 

496```yaml theme={null}496```yaml theme={null}

497---497---


501---501---

502```502```

503 503 

504当 `tools` 列表中没有任何内容解析为工具时,例如因为每个条目都拼写错误或命名了对 subagents 不可用的工具,Claude Code 通常拒绝启动 subagent,Agent 工具返回一个错误,命名未解析的条目;请参阅 [Agent would be spawned with zero tools](/docs/zh-CN/errors#agent-would-be-spawned-with-zero-tools) 了解消息和如何修复每个条目。在 v2.1.208 之前,该 subagent 启动时没有工具,可能返回空的或令人困惑的结果。504当 `tools` 列表中没有任何条目能解析为工具时(例如每个条目都拼写错误,或指向子代理不可用的工具),Claude Code 通常会拒绝启动子代理,并且 Agent 工具会返回一个列出未解析条目的错误;有关该消息以及如何修复每个条目,请参阅 [Agent would be spawned with zero tools](/docs/zh-CN/errors#agent-would-be-spawned-with-zero-tools)。

505 505 

506`tools` 和 `disallowedTools` 字段也接受针对整个 MCP 服务器的条目:506`tools` 和 `disallowedTools` 字段还接受针对整个 MCP 服务器的条目:

507 507 

508| 目标 | 字段 | 示例条目 |508| 目标 | 字段 | 示例条目 |

509| :- | :- | :- |509| :- | :- | :- |

510| 为子代理提供某个服务器的所有工具 | `tools` | `mcp__github__*` |510| 为子代理提供某个服务器的所有工具 | `tools` | `mcp__github__*` |

511| 排除某个服务器的工具 | `disallowedTools` | `mcp__github` 或 `mcp__github__*` |511| 排除某个服务器的工具 | `disallowedTools` | `mcp__github` 或 `mcp__github__*` |

512| 排除来自任何服务器的所有 MCP 工具 | `disallowedTools` | `mcp__*` |512| 排除所有服务器的所有 MCP 工具 | `disallowedTools` | `mcp__*` |

513 513 

514此示例移除来自 `github` MCP 服务器的所有工具,同时保留子代理工具池中来自其他服务器的工具和内置工具:514此示例从子代理的工具池中移除 `github` MCP 服务器的所有工具,同时保留其他服务器的工具和内置工具:

515 515 

516```yaml theme={null}516```yaml theme={null}

517---517---


521---521---

522```522```

523 523 

524一个 `disallowedTools` 条目带有说明符,例如 `Bash(git push *)`,仍然从 subagent 删除整个工具,而不仅仅是匹配的命令。要保留 Bash 并阻止特定命令,请在您的设置中向 `permissions.deny` 添加 [Bash deny rule](/docs/zh-CN/permissions#bash),例如 `Bash(git push *)`。该规则适用于主对话和 subagents。524带有说明符的 `disallowedTools` 条目(如 `Bash(git push *)`)仍会从子代理中移除整个工具,而不仅仅是匹配的命令。若要保留 Bash 并阻止特定命令,请在设置中向 `permissions.deny` 添加 [Bash 拒绝规则](/docs/zh-CN/permissions#bash),例如 `Bash(git push *)`。该规则适用于主对话和子代理。

525 525 

526<h4 id="restrict-which-subagents-can-be-spawned">526<h4 id="restrict-which-subagents-can-be-spawned">

527 限制可以生成哪些 subagents527 限制可以生成的子代理

528</h4>528</h4>

529 529 

530当代理作为主线程运行时,使用 `claude --agent`,它可以使用 Agent 工具生成 subagents。要限制它可以生成的 subagent 类型,在 `tools` 字段中使用 `Agent(agent_type)` 语法。530当 Agent 通过 `claude --agent` 作为主线程运行时,它可以使用 Agent 工具生成子代理。若要限制它可以生成的子代理类型,请在 `tools` 字段中使用 `Agent(agent_type)` 语法。

531 531 

532<Note>在版本 2.1.63 中,Task 工具被重命名为 Agent。设置和代理定义中的现有 `Task(...)` 引用仍然作为别名工作。</Note>532<Note>在 2.1.63 版本中,Task 工具被重命名为 Agent。设置和 Agent 定义中现有的 `Task(...)` 引用仍可作为别名使用。</Note>

533 533 

534```yaml theme={null}534```yaml theme={null}

535---535---


539---539---

540```540```

541 541 

542这是一个允许列表:只有 `worker` 和 `researcher` subagents 可以被生成。如果代理尝试生成任何其他类型,请求失败,代理在其提示中仅看到允许的类型。要在允许所有其他类型的同时阻止特定代理,请改用 [`permissions.deny`](#disable-specific-subagents)。542这是一个允许列表:只能生成 `worker` 和 `researcher` 子代理。如果 Agent 尝试生成任何其他类型,请求会失败,并且 Agent 在其提示词中只能看到允许的类型。若要阻止特定 Agent 同时允许所有其他 Agent,请改用 [`permissions.deny`](#disable-specific-subagents)。

543 543 

544要允许生成任何 subagent 而不受限制,使用不带括号的 `Agent`:544若要允许不受限制地生成任何子代理,请使用不带括号的 `Agent`:

545 545 

546```yaml theme={null}546```yaml theme={null}

547tools: Agent, Read, Bash547tools: Agent, Read, Bash

548```548```

549 549 

550如果 `Agent` 完全从 `tools` 列表中省略,代理无法生成任何 subagents。550如果您在 `tools` 列表中完全省略 `Agent`,该 Agent 将无法使用 Agent 工具生成任何子代理。

551 551 

552`Agent(agent_type)` 允许列表语法仅适用于作为主线程运行的代理,使用 `claude --agent`。在 subagent 定义中,在 `tools` 中列出 `Agent` 让该 subagent 生成自己的 subagents,同时 [depth limit](#let-subagents-spawn-their-own-subagents) 允许它,但括号内的任何类型列表都被忽略。552`Agent(agent_type)` 允许列表语法仅适用于通过 `claude --agent` 作为主线程运行的 Agent。在子代理定义中,在 `tools` 中列出 `Agent` 可让该子代理在[深度限制](#let-subagents-spawn-their-own-subagents)允许的范围内生成它自己的子代理,但括号内的任何类型列表都会被忽略。

553 553 

554<h4 id="scope-mcp-servers-to-a-subagent">554<h4 id="scope-mcp-servers-to-a-subagent">

555 将 MCP 服务器限定于 subagent555 将 MCP 服务器限定于子代理

556</h4>556</h4>

557 557 

558使用 `mcpServers` 字段为 subagent 提供对主对话中不可用的 [MCP](/docs/zh-CN/mcp) 服务器的访问。此处定义的内联服务器在 subagent 启动时连接,受 [trust rule for the agent file's folder](#inline-server-trust) 约束,并在完成时断开连接。字符串引用共享父会话的连接。558使用 `mcpServers` 字段为子代理提供对主对话中不可用的 [MCP](/docs/zh-CN/mcp) 服务器的访问权限。此处定义的内联服务器在子代理启动时连接(需符合[针对 Agent 文件所在文件夹的信任规则](#inline-server-trust)),并在其完成时断开连接。字符串引用共享父会话的连接。

559 559 

560<Note>560<Note>

561 `mcpServers` 字段适用于代理文件可以运行的两个上下文:561 `mcpServers` 字段在 Agent 文件可以运行的两种情境中都适用:

562 562 

563 * 作为 subagent,通过 Agent 工具或 @-mention 生成563 * 作为子代理,通过 Agent 工具或 @ 提及生成

564 * 作为主会话,使用 [`--agent`](#invoke-subagents-explicitly) 或 `agent` 设置启动564 * 作为主会话,通过 [`--agent`](#invoke-subagents-explicitly) 或 `agent` 设置启动

565 565 

566 当代理是主会话时,内联服务器定义与来自 [`.mcp.json`](/docs/zh-CN/mcp) 和设置文件的服务器一起在启动时连接,在 [trust rule for the agent file's folder](#inline-server-trust) 下。在 `/mcp` 中,您之前使用过的远程(HTTP 或 SSE)服务器可以显示 [`cached` status](/docs/zh-CN/mcp#managing-your-servers) 而不是;Claude Code 在 Claude 首次调用其工具之一时连接它。566 当 Agent 是主会话时,内联服务器定义会在启动时与来自 [`.mcp.json`](/docs/zh-CN/mcp) 和设置文件的服务器一起连接,遵循相同的[针对 Agent 文件所在文件夹的信任规则](#inline-server-trust)。在 `/mcp` 中,您以前使用过的远程(HTTP 或 SSE)服务器可能会改为显示 [`cached` 状态](/docs/zh-CN/mcp#managing-your-servers);Claude Code 会在 Claude 首次调用其某个工具时连接它。

567</Note>567</Note>

568 568 

569列表中的每个条目要么是内联服务器定义,要么是引用会话中已配置的 MCP 服务器的字符串:569列表中的每个条目要么是内联服务器定义,要么是引用您会话中已配置的 MCP 服务器的字符串:

570 570 

571```yaml theme={null}571```yaml theme={null}

572---572---


585Use the Playwright tools to navigate, screenshot, and interact with pages.585Use the Playwright tools to navigate, screenshot, and interact with pages.

586```586```

587 587 

588内联定义使用与 `.mcp.json` 服务器条目相同的架构,由服务器名称键入,并支持 `stdio`、`http`、`sse` 和 `ws` 类型。588内联定义使用与 `.mcp.json` 服务器条目相同的 schema,以服务器名称为键,并支持 `stdio`、`http`、`sse` 和 `ws` 类型。

589 589 

590要将 MCP 服务器保持在主对话之外,并避免其工具描述消耗那里的上下文,请在此处内联定义它,而不是在 `.mcp.json` 中。Subagent 获得工具;父对话不获得。590若要将某个 MCP 服务器完全排除在主对话之外,避免其工具描述占用主对话的上下文,请在此处以内联方式定义它,而不是在 `.mcp.json` 中定义。子代理会获得这些工具;父对话则不会。

591 591 

592适用于主会话的 MCP 限制同样涵盖子代理 frontmatter 中声明的服务器:592适用于主会话的 MCP 限制同样覆盖在子代理 frontmatter 中声明的服务器:

593 593 

594* [`--strict-mcp-config`](/docs/zh-CN/cli-reference) 和 [`--bare`](/docs/zh-CN/cli-reference)594* [`--strict-mcp-config`](/docs/zh-CN/cli-reference) 和 [`--bare`](/docs/zh-CN/cli-reference)

595* [企业托管 MCP 配置](/docs/zh-CN/managed-mcp)595* [企业托管 MCP 配置](/docs/zh-CN/managed-mcp)

596* [`allowedMcpServers` 和 `deniedMcpServers` 策略](/docs/zh-CN/managed-mcp#policy-based-control-with-allowlists-and-denylists)596* [`allowedMcpServers` 和 `deniedMcpServers` 策略](/docs/zh-CN/managed-mcp#policy-based-control-with-allowlists-and-denylists)

597 597 

598当其中任一项阻止某个服务器时,Claude Code 会跳过它,并显示一条列出被阻止服务器的警告。598当其中之一阻止某个服务器时,Claude Code 会跳过它,并显示一条列出被阻止服务器的警告。

599 599 

600托管设置限制适用于每个子代理,无论其如何定义。`--strict-mcp-config` 不会过滤您通过 `--agents` 或 SDK `agents` 选项内联传递的服务器,因为这些属于调用方的显式输入。600托管设置的限制适用于每个子代理,无论其定义方式如何。`--strict-mcp-config` 不会过滤您通过 `--agents` 或 SDK `agents` 选项以内联方式传入的服务器,因为这些属于调用方的明确输入。

601 601 

602<h4 id="inline-server-trust">602<h4 id="inline-server-trust">

603 内联 MCP 服务器需要信任603 内联 MCP 服务器所需的信任

604</h4>604</h4>

605 605 

606只有在您[信任 Agent 文件所在的文件夹](/docs/zh-CN/permissions#what-runs-before-you-trust-a-folder)之后,Claude Code 才会从项目 `.claude/agents/` 目录或 `--add-dir` 目录的 `.claude/agents/` 中的 Agent 文件加载[内联 MCP 服务器](#scope-mcp-servers-to-a-subagent)。在 v2.1.238 之前,Claude Code 加载这些服务器时不检查信任。606对于您项目的 `.claude/agents/` 目录或 `--add-dir` 目录的 `.claude/agents/` 中的 Agent 文件,Claude Code 只有在您[信任该 Agent 文件所在的文件夹](/docs/zh-CN/permissions#what-runs-before-you-trust-a-folder)之后,才会加载其中的[内联 MCP 服务器](#scope-mcp-servers-to-a-subagent)。在 v2.1.238 之前,Claude Code 加载这些服务器时不检查信任。

607 607 

608* **不计数的信任**:父文件夹的信任,以及 `-p` 或 SDK 会话为 [hooks in settings files](/docs/zh-CN/permissions#what-runs-before-you-trust-a-folder) 获得的自动信任608* **不算数的信任**:父文件夹的信任,以及 `-p` 或 SDK 会话针对[设置文件中的 hook](/docs/zh-CN/permissions#what-runs-before-you-trust-a-folder) 获得的自动信任

609* **直到那时**:Claude Code 跳过该代理文件中的每个内联服务器,并将确切的 `projects["<path>"].hasTrustDialogAccepted` 键写入调试日志,用于 `~/.claude.json`609* **在此之前**:Claude Code 会跳过该 Agent 文件中的每个内联服务器,并将 `~/.claude.json` 中确切的 `projects["<path>"].hasTrustDialogAccepted` 键写入调试日志

610* **`--add-dir` 目录**:您受信任工作区的存储库外的目录需要其自己的信任条目,因为其 `.claude/agents/` 文件不继承您的工作区的信任610* **`--add-dir` 目录**:位于您受信任工作区仓库之外的目录需要其自己的信任条目,因为其 `.claude/agents/` 文件不会继承您工作区的信任

611 611 

612Claude Code 加载两种服务器而不检查代理文件来自的文件夹的信任:612对于以下两种服务器,Claude Code 加载时不检查 Agent 文件所在文件夹的信任:

613 613 

614* 一个引用您已配置的服务器的名称614* 引用您已配置的服务器的名称

615* 一个代理文件中的内联服务器,来自 `~/.claude/agents/`,在您使用 `--agents` 或 SDK `agents` 选项传递的一个中,或托管设置提供的一个中615* 来自 `~/.claude/agents/` 中的 Agent 文件、您通过 `--agents` 或 SDK `agents` 选项传入的 Agent 文件,或由托管设置提供的 Agent 文件中的内联服务器

616 616 

617<h4 id="permission-modes">617<h4 id="permission-modes">

618 权限模式618 权限模式

619</h4>619</h4>

620 620 

621设置 `permissionMode` 以选择 subagent 运行的权限模式。使用模式的配置值,因此手动模式是 `default`。如果您不设置它,subagent 继承主对话的 [permission mode](/docs/zh-CN/permission-modes)。621设置 `permissionMode` 以选择子代理运行时使用的权限模式。请使用模式的配置值,因此 Manual 模式为 `default`。如果不设置,子代理会继承主对话的[权限模式](/docs/zh-CN/permission-modes)。

622 622 

623主对话的权限模式决定 Claude Code 是否使用您设置的值:623主对话的权限模式决定 Claude Code 是否使用您设置的值:

624 624 

625* 当主对话在 `bypassPermissions`、`acceptEdits` 或 [auto mode](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 时,subagent 在该相同模式中运行,Claude Code 忽略您设置的 `permissionMode`。在自动模式下,分类器使用主对话的块和允许规则评估 subagent 的工具调用。当 subagent 完成时,分类器也会在报告被传递之前审查其工作和最终报告,如 [How auto mode handles subagents](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode) 所述。625* 当主对话处于 `bypassPermissions`、`acceptEdits` 或[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)时,子代理以相同模式运行,Claude Code 会忽略您设置的 `permissionMode`。在自动模式下,分类器使用主对话的阻止和允许规则评估子代理的工具调用。当子代理完成时,分类器还会在交付最终报告之前审查其工作和最终报告,如[自动模式如何处理子代理](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)中所述。

626* 当主对话处于 `default`、`dontAsk` 或 `plan` 模式时,子代理会在您设置的权限模式下运行。在以下情况下,它会改为保持主对话的权限模式:626* 当主对话处于 `default`、`dontAsk` 或 `plan` 模式时,子代理以您设置的权限模式运行。在以下情况下,它会改为保持主对话的权限模式:

627 * 您设置了 `bypassPermissions`。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更高版本。627 * 您设置了 `bypassPermissions`。`bypassPermissions` 例外需要 Claude Code v2.1.267 或更高版本。

628 * 您设置了 `auto`,但子代理[无法使用自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode),例如某个设置文件设置了 [`disableAutoMode`](/docs/zh-CN/settings-reference#disableautomode),或子代理的模型不支持自动模式。628 * 您设置了 `auto`,但子代理[无法使用自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode),例如设置文件设置了 [`disableAutoMode`](/docs/zh-CN/settings-reference#disableautomode),或子代理的模型不支持自动模式。

629 629 

630`permissionMode` 接受这些值,以及 `manual` 作为 `default` 的别名:630`permissionMode` 接受以下值,以及作为 `default` 别名的 `manual`:

631 631 

632| Mode | Behavior |632| 模式 | 行为 |

633| :- | :- |633| :- | :- |

634| `default` | 手动模式:提示权限 |634| `default` | Manual 模式:提示请求权限 |

635| `acceptEdits` | 自动接受文件编辑和工作目录或 `additionalDirectories` 中路径的常见文件系统命令 |635| `acceptEdits` | 对于工作目录或 `additionalDirectories` 中的路径,自动接受文件编辑和常见文件系统命令 |

636| `auto` | [Auto mode](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode):后台分类器审查命令和受保护目录的写入 |636| `auto` | [自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode):后台分类器审查命令和对受保护目录的写入 |

637| `dontAsk` | 自动拒绝权限提示。显式允许的工具仍可使用;`AskUserQuestion`、标记为 [`requiresUserInteraction`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具、[从网络路径读取](/docs/zh-CN/permissions#network-paths),以及[您的组织设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具(在该设置传达到 Claude Code 的会话中)会被拒绝,即使您已允许它们 |637| `dontAsk` | 自动拒绝权限提示。明确允许的工具仍可使用;`AskUserQuestion`、标记为 [`requiresUserInteraction`](/docs/zh-CN/mcp#require-approval-for-a-specific-tool) 的 MCP 工具、[从网络路径读取](/docs/zh-CN/permissions#network-paths),以及在该设置能作用到 Claude Code 的会话中[您的组织设置为 `ask`](/docs/zh-CN/mcp#organization-controls-on-connector-tools) 的连接器工具,即使您已允许也会被拒绝 |

638| `bypassPermissions` | [Skip permission prompts](/docs/zh-CN/permission-modes#skip-all-checks-with-bypasspermissions-mode)。Subagent 仅在主对话也这样做时在此模式中运行 |638| `bypassPermissions` | [跳过权限提示](/docs/zh-CN/permission-modes#skip-all-checks-with-bypasspermissions-mode)。只有当主对话处于此模式时,子代理才会以此模式运行 |

639| `plan` | Plan mode(只读探索) |639| `plan` | 计划模式(只读探索) |

640 640 

641<h4 id="preload-skills-into-subagents">641<h4 id="preload-skills-into-subagents">

642 将技能预加载到 subagents642 将 skill 预加载到子代理中

643</h4>643</h4>

644 644 

645使用 `skills` 字段在启动时将技能内容注入到 subagent 的上下文中。这为 subagent 提供领域知识,而无需在执行期间发现和加载技能。645使用 `skills` 字段在启动时将 skill 内容注入子代理的上下文。这样子代理无需在执行期间发现和加载 skill 即可获得领域知识。

646 646 

647```yaml theme={null}647```yaml theme={null}

648---648---


656Implement API endpoints. Follow the conventions and patterns from the preloaded skills.656Implement API endpoints. Follow the conventions and patterns from the preloaded skills.

657```657```

658 658 

659每个列出的 skill 的完整内容会在启动时注入到子代理的上下文中,最多为列表中前 32 个不同的名称。此字段控制预加载哪些 skill,而不是子代理可以访问哪些 skill:即使没有此字段,子代理仍然可以在执行期间通过 Skill 工具发现和调用项目、用户和插件 skill。要完全阻止子代理调用 skill,请从 [`tools`](#available-tools) 列表中省略 `Skill`,或将其添加到 `disallowedTools`。659每个列出的 skill 的完整内容会在启动时注入子代理的上下文,最多为列表中前 32 个不同的名称。此字段控制预加载哪些 skill,而不是子代理可以访问哪些 skill:即使没有此字段,子代理在执行期间仍可通过 Skill 工具发现和调用项目、用户和插件 skill。若要完全阻止子代理调用 skill,请从 [`tools`](#available-tools) 列表中省略 `Skill`,或将其添加到 `disallowedTools`。

660 660 

661您无法预加载设置了 [`disable-model-invocation: true`](/docs/zh-CN/skills#control-who-invokes-a-skill) 的 skill,因为预加载的来源与 Claude 可以调用的 skill 集合相同。这包括内置的 `/verify` skill,Claude 无法自行运行它。661您无法预加载设置了 [`disable-model-invocation: true`](/docs/zh-CN/skills#control-who-invokes-a-skill) 的 skill,因为预加载取自 Claude 可以调用的同一组 skill。这包括内置的 `/verify` skill,Claude 无法自行运行它。

662 662 

663如果列出的技能缺失或被禁用,例如由您的组织的策略,Claude Code 会跳过它并向调试日志记录警告。663如果列出的某个 skill 缺失或被禁用(例如被您组织的策略禁用),Claude Code 会跳过它,并在调试日志中记录一条警告。

664 664 

665<Note>665<Note>

666 这与 [running a skill in a subagent](/docs/zh-CN/skills#run-skills-in-a-subagent) 相反。使用 subagent 中的 `skills`,subagent 控制系统提示并加载技能内容。使用技能中的 `context: fork`,技能内容被注入到您指定的代理中。两者都使用相同的底层系统。666 这与[在子代理中运行 skill](/docs/zh-CN/skills#run-skills-in-a-subagent) 相反。在子代理中使用 `skills` 时,由子代理控制系统提示词并加载 skill 内容。在 skill 中使用 `context: fork` 时,skill 内容会被注入到您指定的 Agent 中。在这两种情况下,子代理启动时都不带有您的对话历史。

667</Note>667</Note>

668 668 

669<h4 id="enable-persistent-memory">669<h4 id="enable-persistent-memory">

670 启用持久内存670 启用持久记忆

671</h4>671</h4>

672 672 

673`memory` 字段为 subagent 提供一个在对话中幸存的持久目录。Subagent 使用此目录随时间积累知识,例如代码库模式、调试见解和架构决策。673`memory` 字段为子代理提供一个跨对话保留的持久目录。子代理使用此目录随时间积累知识,例如代码库模式、调试心得和架构决策。

674 674 

675```yaml theme={null}675```yaml theme={null}

676---676---


683patterns, conventions, and recurring issues you discover.683patterns, conventions, and recurring issues you discover.

684```684```

685 685 

686根据内存应该应用的广泛程度选择范围:686根据记忆应适用的范围选择作用域:

687 687 

688| Scope | Location | 使用时机 |688| 作用域 | 位置 | 适用场景 |

689| :- | :- | :- |689| :- | :- | :- |

690| `user` | `~/.claude/agent-memory/<name-of-agent>/` | subagent 应该在所有项目中记住学习 |690| `user` | `~/.claude/agent-memory/<name-of-agent>/` | 子代理应在所有项目中记住所学内容 |

691| `project` | `.claude/agent-memory/<name-of-agent>/` | subagent 的知识是特定于项目的并可通过版本控制共享 |691| `project` | `.claude/agent-memory/<name-of-agent>/` | 子代理的知识特定于项目,并可通过版本控制共享 |

692| `local` | `.claude/agent-memory-local/<name-of-agent>/` | subagent 的知识是特定于项目的但不应检入版本控制 |692| `local` | `.claude/agent-memory-local/<name-of-agent>/` | 子代理的知识特定于项目,但不应提交到版本控制 |

693 693 

694Subagent 内存是 [auto memory](/docs/zh-CN/memory#auto-memory) 的一部分:如果您关闭自动内存,使用 `autoMemoryEnabled` 设置或 `CLAUDE_CODE_DISABLE_AUTO_MEMORY`,`memory` 字段没有效果,subagent 启动时没有内存说明或下面描述的内存工具访问。694子代理记忆是[自动记忆](/docs/zh-CN/memory#auto-memory)的一部分:如果您通过 `autoMemoryEnabled` 设置或 `CLAUDE_CODE_DISABLE_AUTO_MEMORY` 关闭自动记忆,`memory` 字段将不起作用,子代理启动时不会带有下述记忆指令或记忆工具访问权限。

695 695 

696启用内存时:696启用记忆后:

697 697 

698* Subagent 的系统提示包括读取和写入内存目录的说明。698* 子代理的系统提示词包含读取和写入记忆目录的指令。

699* 子代理的系统提示词还包含记忆目录中 `MEMORY.md` 的前 200 行或前 25KB(以先达到者为准),以及在 `MEMORY.md` 超过该限制时对其进行整理的说明。699* 子代理的系统提示词还包含记忆目录中 `MEMORY.md` 的前 200 行或前 25KB(以先达到者为准),并附有在 `MEMORY.md` 超出该限制时对其进行整理的指令。

700* Read、Write 和 Edit 工具会自动启用,以便 subagent 可以管理其内存文件。700* Read、Write 和 Edit 工具会自动启用,以便子代理管理其记忆文件。

701 701 

702<h5 id="persistent-memory-tips">702<h5 id="persistent-memory-tips">

703 持久内存提示703 持久记忆提示

704</h5>704</h5>

705 705 

706* `project` 是推荐的默认范围。它使 subagent 知识可通过版本控制共享。706* `project` 是推荐的默认作用域。它使子代理的知识可以通过版本控制共享。

707* 要求 subagent 在开始工作前查阅其内存:"Review this PR, and check your memory for patterns you've seen before."707* 让子代理在开始工作前查阅其记忆:"Review this PR, and check your memory for patterns you've seen before."

708* 要求 subagent 在完成任务后更新其内存:"Now that you're done, save what you learned to your memory." 随着时间的推移,这会建立一个知识库,使 subagent 更有效。708* 让子代理在完成任务后更新其记忆:"Now that you're done, save what you learned to your memory." 随着时间推移,这会建立一个让子代理更高效的知识库。

709* 直接在 subagent 的 markdown 文件中包含内存说明,以便它主动维护自己的知识库:709* 直接在子代理的 markdown 文件中加入记忆指令,使其主动维护自己的知识库:

710 710 

711 ```markdown theme={null}711 ```markdown theme={null}

712 Update your agent memory as you discover codepaths, patterns, library712 Update your agent memory as you discover codepaths, patterns, library


716 ```716 ```

717 717 

718<h4 id="conditional-rules-with-hooks">718<h4 id="conditional-rules-with-hooks">

719 使用 hooks 的条件规则719 使用 hook 的条件规则

720</h4>720</h4>

721 721 

722为了更动态地控制工具使用,使用 `PreToolUse` hooks 在执行前验证操作。当您需要允许工具的某些操作同时阻止其他操作时,这很有用。722若要对工具使用进行更动态的控制,请使用 `PreToolUse` hook 在操作执行前对其进行验证。当您需要允许某个工具的部分操作同时阻止其他操作时,这非常有用。

723 723 

724此示例创建一个仅允许只读数据库查询的 subagent。`PreToolUse` hook 在每个 Bash 命令执行前运行 `command` 中指定的脚本:724此示例创建一个只允许只读数据库查询的子代理。`PreToolUse` hook 会在每个 Bash 命令执行前运行 `command` 中指定的脚本:

725 725 

726```yaml theme={null}726```yaml theme={null}

727---727---


737---737---

738```738```

739 739 

740Claude Code [通过 stdin 将 hook 输入作为 JSON 传递](/docs/zh-CN/hooks#pretooluse-input) 给 hook 命令。验证脚本读取此 JSON,提取 Bash 命令,并 [以代码 2 退出](/docs/zh-CN/hooks#exit-code-2-behavior-per-event) 以阻止写入操作:740Claude Code 通过 stdin [以 JSON 形式将 hook 输入传递](/docs/zh-CN/hooks#pretooluse-input)给 hook 命令。验证脚本读取此 JSON,提取 Bash 命令,并[以退出码 2 退出](/docs/zh-CN/hooks#exit-code-2-behavior-per-event)以阻止写入操作:

741 741 

742```bash theme={null}742```bash theme={null}

743#!/bin/bash743#!/bin/bash


755exit 0755exit 0

756```756```

757 757 

758在 macOS 和 Linux 上,使脚本可执行,否则 hook 失败而不是阻止任何内容:758在 macOS 和 Linux 上,请将脚本设为可执行,否则 hook 会失败而不是阻止任何操作:

759 759 

760```bash theme={null}760```bash theme={null}

761chmod +x ./scripts/validate-readonly-query.sh761chmod +x ./scripts/validate-readonly-query.sh

762```762```

763 763 

764要测试规则,要求 subagent 运行 `UPDATE` 语句:脚本以代码 2 退出,Claude Code 阻止命令,subagent 看到 `Blocked: Only SELECT queries are allowed` 消息。764若要测试该规则,请让子代理运行一条 `UPDATE` 语句:脚本以退出码 2 退出,Claude Code 阻止该命令,子代理会看到 `Blocked: Only SELECT queries are allowed` 消息。

765 765 

766有关完整的输入架构,请参阅 [Hook input](/docs/zh-CN/hooks#pretooluse-input),有关退出代码如何影响行为,请参阅 [exit codes](/docs/zh-CN/hooks#exit-code-output)。在 Windows 上,在 PowerShell 中编写 hook 脚本,并在 hook 条目中添加 `shell: powershell`,如 [running hooks in PowerShell](/docs/zh-CN/hooks#windows-powershell-tool) 中所示。766有关完整的输入 schema,请参阅 [Hook 输入](/docs/zh-CN/hooks#pretooluse-input);有关退出码如何影响行为,请参阅[退出码](/docs/zh-CN/hooks#exit-code-output)。在 Windows 上,请使用 PowerShell 编写 hook 脚本,并按照[在 PowerShell 中运行 hook](/docs/zh-CN/hooks#windows-powershell-tool) 中所示,向 hook 条目添加 `shell: powershell`。

767 767 

768<h4 id="disable-specific-subagents">768<h4 id="disable-specific-subagents">

769 禁用特定 subagents769 禁用特定子代理

770</h4>770</h4>

771 771 

772您可以通过将 subagents 添加到您的 [settings](/docs/zh-CN/settings-reference#permission-settings) 中的 `deny` 数组来防止 Claude 使用特定 subagents。使用格式 `Agent(subagent-name)`,其中 `subagent-name` 与 subagent 的 name 字段匹配。772您可以将特定子代理添加到[设置](/docs/zh-CN/settings-reference#permission-settings)中的 `deny` 数组,以阻止 Claude 使用它们。使用 `Agent(subagent-name)` 格式,其中 `subagent-name` 与子代理的 name 字段匹配。

773 773 

774```json theme={null}774```json theme={null}

775{775{


779}779}

780```780```

781 781 

782这对内置和自定义 subagents 都有效。您也可以使用 `--disallowedTools` CLI 标志:782这同时适用于内置子代理和自定义子代理。您也可以使用 `--disallowedTools` CLI 标志:

783 783 

784```bash theme={null}784```bash theme={null}

785claude --disallowedTools "Agent(Explore)"785claude --disallowedTools "Agent(Explore)"

786```786```

787 787 

788有关权限规则的更多详细信息,请参阅 [Permissions documentation](/docs/zh-CN/permissions#tool-specific-permission-rules)。788有关权限规则的更多详细信息,请参阅[权限文档](/docs/zh-CN/permissions#tool-specific-permission-rules)。

789 789 

790<h3 id="define-hooks-for-subagents">790<h3 id="define-hooks-for-subagents">

791 为 subagents 定义 hooks791 为子代理定义 hook

792</h3>792</h3>

793 793 

794Subagents 可以定义在 subagent 的生命周期中运行的 [hooks](/docs/zh-CN/hooks)。有两种方式来配置 hooks:794子代理可以定义在子代理生命周期中运行的 [hook](/docs/zh-CN/hooks)。配置 hook 有两种方式:

795 795 

796* **在 subagent 的 frontmatter 中**:定义仅在该 subagent 活跃时运行的 hooks796* **在子代理的 frontmatter 中**:定义仅在该子代理活动期间运行的 hook

797* **在 `settings.json` 中**:定义会话范围的 hooks,也在 subagents 内部触发。工具事件,例如 `PreToolUse` 和 `PostToolUse`,为 subagent 的工具调用触发,与它们在主对话中的方式相同,`SubagentStart` 和 `SubagentStop` 在 subagent 启动或完成时触发797* **在 `settings.json` 中**:定义也会在子代理内部触发的会话级 hook。`PreToolUse` 和 `PostToolUse` 等工具事件会像在主对话中一样针对子代理的工具调用触发,而 `SubagentStart` 和 `SubagentStop` 会在子代理启动或完成时触发

798 798 

799来自 [settings files, managed policy settings, and plugins](/docs/zh-CN/hooks#hook-locations) 的 Hooks 都适用于 subagents 内部,因此 `settings.json` 中的 `PreToolUse` hook 也在 subagent 使用的每个工具之前运行。799来自[设置文件、托管策略设置和插件](/docs/zh-CN/hooks#hook-locations)的 hook 都会在子代理内部生效,因此 `settings.json` 中的 `PreToolUse` hook 也会在子代理使用每个工具之前运行。

800 800 

801<h4 id="hooks-in-subagent-frontmatter">801<h4 id="hooks-in-subagent-frontmatter">

802 Subagent frontmatter 中的 Hooks802 子代理 frontmatter 中的 hook

803</h4>803</h4>

804 804 

805直接在 subagent 的 markdown 文件中定义 hooks。这些 hooks 仅在该特定 subagent 活跃时运行,并在完成时清理。805直接在子代理的 markdown 文件中定义 hook。这些 hook 仅在该特定子代理活动期间运行,并在其完成时被清理。

806 806 

807<Note>807<Note>

808 Frontmatter hooks 在代理通过 Agent 工具或 @-mention 作为 subagent 生成时触发,以及当代理通过 [`--agent`](#invoke-subagents-explicitly) 或 `agent` 设置作为主会话运行时触发。在主会话情况下,它们与在 [`settings.json`](/docs/zh-CN/hooks) 中定义的任何 hooks 一起运行。808 当 Agent 通过 Agent 工具或 @ 提及作为子代理生成时,以及当 Agent 通过 [`--agent`](#invoke-subagents-explicitly) 或 `agent` 设置作为主会话运行时,frontmatter hook 都会触发。在主会话的情况下,它们会与 [`settings.json`](/docs/zh-CN/hooks) 中定义的任何 hook 一起运行。

809</Note>809</Note>

810 810 

811要让项目级 subagent 的 frontmatter hooks 运行,接受包含代理文件的文件夹的 [workspace trust dialog](/docs/zh-CN/permissions#project-allow-rules-and-workspace-trust)。来自 `~/.claude/agents/` 中的用户级 subagents 的 Hooks 和来自您使用 `--agents` 传递的定义的 Hooks 无需此步骤即可运行。如果您从受信任工作区的存储库外使用 `--add-dir` 添加了文件夹,单独信任该文件夹:其 `.claude/agents/` hooks 不继承工作区的授予。811若要让项目级子代理的 frontmatter hook 运行,请为包含该 Agent 文件的文件夹接受[工作区信任对话框](/docs/zh-CN/permissions#project-allow-rules-and-workspace-trust)。来自 `~/.claude/agents/` 中用户级子代理以及您通过 `--agents` 传入的定义的 hook 无需此步骤即可运行。如果您通过 `--add-dir` 添加了位于受信任工作区仓库之外的文件夹,请单独信任该文件夹:其 `.claude/agents/` 中的 hook 不会继承工作区的授权。

812 812 

813直到您信任文件夹,subagent 仍然运行,但 Claude Code 跳过其 frontmatter hooks 并向调试日志记录错误,解释如何信任文件夹。这是比 settings 文件中的 hooks 的规则更严格的规则:信任父文件夹不够,`-p` 会话不计为受信任。[What runs before you trust a folder](/docs/zh-CN/permissions#what-runs-before-you-trust-a-folder) 比较两者。在 v2.1.218 之前,frontmatter hooks 可以从您未信任的文件夹运行,包括在非交互式会话中。813在您信任该文件夹之前,子代理仍会运行,但 Claude Code 会跳过其 frontmatter hook,并在调试日志中记录一条说明如何信任该文件夹的错误。这一规则比设置文件中 hook 的规则更严格:信任父文件夹是不够的,并且 `-p` 会话不算作受信任。[信任文件夹之前会运行什么](/docs/zh-CN/permissions#what-runs-before-you-trust-a-folder)对这两者进行了比较。在 v2.1.218 之前,frontmatter hook 可以从您未信任的文件夹中运行,包括在非交互式会话中。

814 814 

815所有 [hook events](/docs/zh-CN/hooks#hook-events) 都被支持。subagents 最常见的事件是:815支持所有 [hook 事件](/docs/zh-CN/hooks#hook-events)。子代理最常用的事件有:

816 816 

817| Event | Matcher input | 何时触发 |817| 事件 | 匹配器输入 | 触发时机 |

818| :- | :- | :- |818| :- | :- | :- |

819| `PreToolUse` | Tool name | 在 subagent 使用工具之前 |819| `PreToolUse` | 工具名称 | 子代理使用工具之前 |

820| `PostToolUse` | Tool name | 在 subagent 使用工具之后 |820| `PostToolUse` | 工具名称 | 子代理使用工具之后 |

821| `Stop` | (none) | 当 subagent 完成时(在运行时转换为 `SubagentStop`) |821| `Stop` | (无) | 子代理完成时(在运行时转换为 `SubagentStop`) |

822 822 

823此示例使用 `PreToolUse` hook 验证 Bash 命令,并在文件编辑后使用 `PostToolUse` 运行 linter:823此示例使用 `PreToolUse` hook 验证 Bash 命令,并使用 `PostToolUse` 在文件编辑后运行 linter:

824 824 

825```yaml theme={null}825```yaml theme={null}

826---826---


840---840---

841```841```

842 842 

843当代理作为 subagent 调用时,frontmatter 中的 `Stop` hooks 会自动转换为 `SubagentStop` 事件。843当 Agent 作为子代理被调用时,frontmatter 中的 `Stop` hook 会自动转换为 `SubagentStop` 事件。

844 844 

845<h4 id="project-level-hooks-for-subagent-events">845<h4 id="project-level-hooks-for-subagent-events">

846 用于 subagent 事件的项目级 hooks846 针对子代理事件的项目级 hook

847</h4>847</h4>

848 848 

849在 `settings.json` 中配置 hooks,以响应主会话中的 subagent 生命周期事件。849在 `settings.json` 中配置 hook,以响应主会话中的子代理生命周期事件。

850 850 

851| Event | Matcher input | 何时触发 |851| 事件 | 匹配器输入 | 触发时机 |

852| :- | :- | :- |852| :- | :- | :- |

853| `SubagentStart` | Agent type name | 当 subagent 开始执行时 |853| `SubagentStart` | Agent 类型名称 | 子代理开始执行时 |

854| `SubagentStop` | Agent type name | 当 subagent 完成时 |854| `SubagentStop` | Agent 类型名称 | 子代理完成时 |

855 855 

856两个事件都支持匹配器以按名称针对特定代理类型。匹配器值是项目级和用户级 subagents 的代理 frontmatter `name`,或 [plugin subagents](/docs/zh-CN/plugins/components#agents) 的 plugin 范围标识符,例如 `my-plugin:db-agent`。范围名称包含冒号,因此它被评估为 [unanchored regular expression](/docs/zh-CN/hooks#matcher-patterns);使用 `^` 和 `$` 锚定它,如 `^my-plugin:db-agent$`,以仅匹配该代理。856这两个事件都支持匹配器,可按名称指定特定的 Agent 类型。对于项目级和用户级子代理,匹配器值是 Agent 的 frontmatter `name`;对于[插件子代理](/docs/zh-CN/plugins/components#agents),则是插件作用域标识符,例如 `my-plugin:db-agent`。作用域名称包含冒号,因此会被作为[非锚定正则表达式](/docs/zh-CN/hooks#matcher-patterns)进行求值;请使用 `^` 和 `$` 对其进行锚定,如 `^my-plugin:db-agent$`,以仅匹配该 Agent。

857 857 

858此示例仅在 `db-agent` subagent 启动时运行设置脚本,并在任何 subagent 停止时运行清理脚本:858此示例仅在 `db-agent` 子代理启动时运行设置脚本,并在任何子代理停止时运行清理脚本:

859 859 

860```json theme={null}860```json theme={null}

861{861{


969* **前台子代理**会阻塞主对话直到完成。权限提示会在出现时传递给您。969* **前台子代理**会阻塞主对话直到完成。权限提示会在出现时传递给您。

970* **后台子代理**在您继续工作时并发运行。当后台子代理遇到需要权限的工具调用时,Claude Code 会在您的主会话中显示该提示,并指明发出请求的子代理。批准即可让子代理继续;按 Esc 则拒绝该单个工具调用,而不会停止子代理。970* **后台子代理**在您继续工作时并发运行。当后台子代理遇到需要权限的工具调用时,Claude Code 会在您的主会话中显示该提示,并指明发出请求的子代理。批准即可让子代理继续;按 Esc 则拒绝该单个工具调用,而不会停止子代理。

971 971 

972对于 Claude 使用 Agent 工具生成的每个子代理,Claude Code 会按以下情况中第一个适用的情况来决定前台还是后台:972<h4 id="which-subagents-run-in-the-background">

973 哪些子代理在后台运行

974</h4>

975 

976在未进行任何配置的情况下,Claude 从您的主对话生成的子代理会在后台启动。

973 977 

974* 如果是进程内的 [agent team](/docs/zh-CN/agent-teams#limitations) 队友生成了该子代理,Claude Code 会在前台运行它。如果队友要生成的子代理的定义设置了 [`background: true`](#supported-frontmatter-fields),Claude Code 会拒绝并报错。在 [fork 模式](#turn-fork-mode-on-or-off)关闭且您未[关闭后台任务](/docs/zh-CN/env-vars)的情况下,如果队友设置了 `run_in_background: true`,Claude Code 也会拒绝并报错。978* **`claude -p` 和 Agent SDK**:Claude 可以根据自己的判断或在您要求时等待。

975* 如果您将 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/zh-CN/env-vars) 设置为 `1`,Claude Code 会在前台运行子代理,适用于所有类型的会话,且无论 fork 模式是否开启。979* **交互式终端会话、VS Code 以及您本机上的桌面应用会话**:要让 Claude 等待子代理,请[关闭 fork 模式](#let-claude-wait-for-a-subagent),该模式[默认开启](#turn-fork-mode-on-or-off)。

976* 当 [fork 模式](#turn-fork-mode-on-or-off)开启时(交互式会话中默认开启),Claude Code 会在后台运行子代理,fork 和非 fork 子代理都是如此,且 Claude 无法要求在前台运行。

977* 当 fork 模式关闭时,Claude 默认在后台运行子代理,并在需要先拿到结果才能继续时在前台运行。在使用 `-p` 的[非交互模式](/docs/zh-CN/headless)和 Agent SDK 中,fork 模式默认关闭,除非您将其开启。要让某个子代理即使在 Claude 需要其结果时也保持在后台运行,请将其 frontmatter 中的 [`background`](#supported-frontmatter-fields) 字段设置为 `true`。

978 980 

979对于带有 `context: fork` 的 skill,Claude Code 改为遵循[在子代理中运行 skill](/docs/zh-CN/skills#run-skills-in-a-subagent) 中的规则,无论 fork 模式是否开启。981对于带有 `context: fork` 的 skill,Claude Code 改为遵循[在子代理中运行 skill](/docs/zh-CN/skills#run-skills-in-a-subagent) 中的规则,无论 fork 模式是否开启。

980 982 

983<h4 id="let-claude-wait-for-a-subagent">

984 让 Claude 等待子代理

985</h4>

986 

9871. 将 `CLAUDE_CODE_FORK_SUBAGENT` 设置为 `0` 以关闭 [fork 模式](#turn-fork-mode-on-or-off),例如在 [`settings.json`](/docs/zh-CN/settings) 中:

988 

989 ```json theme={null}

990 {

991 "env": {

992 "CLAUDE_CODE_FORK_SUBAGENT": "0"

993 }

994 }

995 ```

996 

9972. 从 shell 中重新运行 `claude`,或打开一个新的 VS Code 对话。

998 

9993. 当您需要先拿到结果时,请让 Claude 等待,例如"run the reviewer subagent and wait for its report"。

1000 

1001要在 Claude 等待期间继续工作,请在终端中按 **Ctrl+B**,或在 VS Code 中点击 [**Run in background**](/docs/zh-CN/vs-code#move-a-running-command-or-subagent-to-the-background)。

1002 

1003如果您不关闭 fork 模式,而是将 [`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`](/docs/zh-CN/env-vars) 环境变量设置为 `1`,Claude 会等待每一个子代理,并且后台任务会被关闭,包括 **Ctrl+B**。

1004 

1005<h4 id="tools-permissions-and-results-of-background-subagents">

1006 后台子代理的工具、权限和结果

1007</h4>

1008 

981后台子代理使用的[内置工具集](#available-tools)比前台子代理更小,但对话 fork 和[已恢复](#resume-subagents)的前台子代理除外。1009后台子代理使用的[内置工具集](#available-tools)比前台子代理更小,但对话 fork 和[已恢复](#resume-subagents)的前台子代理除外。

982 1010 

983后台子代理会在您的主会话中显示每一个权限提示。当您对其中某个提示所作的选择会在该次工具调用之后继续生效(例如在会话剩余时间内持续有效的授予)时,Claude Code 会将您的答复应用于整个会话,包括您的主对话。1011后台子代理会在您的主会话中显示每一个权限提示。当您对其中某个提示所作的选择会在该次工具调用之后继续生效(例如在会话剩余时间内持续有效的授予)时,Claude Code 会将您的答复应用于整个会话,包括您的主对话。

984 1012 

985后台子代理可以让后台 [Bash 或 PowerShell 命令](/docs/zh-CN/tools-reference#background-commands)[在其轮次结束后继续运行](/docs/zh-CN/interactive-mode#how-backgrounding-works)。该命令结束时,Claude Code 会向该子代理发送通知。1013后台子代理可以让后台 [Bash 或 PowerShell 命令](/docs/zh-CN/tools-reference#background-commands)[在其轮次结束后继续运行](/docs/zh-CN/interactive-mode#how-backgrounding-works)。该命令结束时,Claude Code 会向该子代理发送通知。

986 1014 

987后台子代理的结果会在之后的某个轮次中以完成通知的形式送达 Claude。Claude 会等待该通知后再报告子代理的结果;如果您先询问进度,它会告知子代理仍在运行。在 v2.1.211 之前,Claude 有时会报告尚未完成的后台子代理的结果。1015后台子代理的结果会在之后的某个轮次中以完成通知的形式送达 Claude。Claude 会等待该通知后再报告子代理的结果;如果您先询问进度,它会告知子代理仍在运行。

988 1016 

989您也可以自行控制:1017<h4 id="finished-subagents-in-the-panel-and-task-list">

990 1018 面板和任务列表中已结束的子代理

991* 当 fork 模式关闭时,要求 Claude 在后台或前台运行任务1019</h4>

992* 按 **Ctrl+B** 将正在运行的任务转到后台

993 1020 

994Claude Code 会以两种方式之一从输入框下方的子代理面板中清除后台子代理所在的行,具体取决于子代理的结束方式:1021Claude Code 会以两种方式之一从输入框下方的子代理面板中清除后台子代理所在的行,具体取决于子代理的结束方式:

995 1022 


1036 1063 

1037[后台子代理的报告](#run-subagents-in-foreground-or-background)会包含在完成通知中送达,该通知被标记为自动化事件,而不是来自您的消息。1064[后台子代理的报告](#run-subagents-in-foreground-or-background)会包含在完成通知中送达,该通知被标记为自动化事件,而不是来自您的消息。

1038 1065 

1039<Note>

1040 子代理输出扫描需要 Claude Code v2.1.210 或更高版本。

1041</Note>

1042 

1043<h3 id="common-patterns">1066<h3 id="common-patterns">

1044 常见模式1067 常见模式

1045</h3>1068</h3>


1109 1132 

1110默认情况下,子代理可以生成自己的子代理,最多可达主对话之下三层。达到深度限制时,Claude Code 会从除 [fork](#fork-the-current-conversation) 之外的所有子代理中移除 `Agent` 工具,因此处于限制层级的子代理会自己完成委托的工作并返回一份摘要。处于限制层级的 fork 在其继承的工具列表中仍保留 `Agent`,但该工具会返回错误而不是生成子代理。1133默认情况下,子代理可以生成自己的子代理,最多可达主对话之下三层。达到深度限制时,Claude Code 会从除 [fork](#fork-the-current-conversation) 之外的所有子代理中移除 `Agent` 工具,因此处于限制层级的子代理会自己完成委托的工作并返回一份摘要。处于限制层级的 fork 在其继承的工具列表中仍保留 `Agent`,但该工具会返回错误而不是生成子代理。

1111 1134 

1112嵌套子代理适用于本身可拆分为并行子任务的委托任务,例如一个审查子代理为每项发现分派一个验证者。在交互式会话中,只有顶层子代理的摘要会返回给您,中间输出不会进入您的主对话:启动后台子代理的子代理会等待它们的结果后再结束。在[非交互模式](/docs/zh-CN/headless)和 Agent SDK 中,发起启动的子代理不会等待,因此如果嵌套的后台子代理在其启动者结束后才完成,它会改为向您的主对话报告。1135嵌套子代理适用于本身可拆分为并行子任务的委托任务,例如一个审查子代理为每项发现分派一个验证者。默认情况下,发起启动的子代理会等待每个嵌套子代理的报告:

1136 

1137* **交互式终端会话**:只有顶层子代理的摘要会返回给您,因为启动后台子代理的子代理会等待它们的结果后再结束。

1138* **`claude -p` 和 Agent SDK**:当 [fork 模式](#turn-fork-mode-on-or-off)开启时,发起启动的子代理会等待。如果您关闭 fork 模式,嵌套子代理会改为在[后台](#run-subagents-in-foreground-or-background)启动。发起启动的子代理不会等待后台嵌套子代理;如果该嵌套子代理在其启动者结束后仍在运行,它会向您的主对话报告。

1113 1139 

1114要更改该限制,请将 [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/zh-CN/env-vars) 设置为您希望在主对话之下允许的子代理层数。例如,[`settings.json`](/docs/zh-CN/settings) 中的以下条目将嵌套限制为两层:1140要更改该限制,请将 [`CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH`](/docs/zh-CN/env-vars) 设置为您希望在主对话之下允许的子代理层数。例如,[`settings.json`](/docs/zh-CN/settings) 中的以下条目将嵌套限制为两层:

1115 1141 


1277</h2>1303</h2>

1278 1304 

1279<Note>1305<Note>

1280 使用 `/subtask` 运行分叉 subagent,需要 Claude Code v2.1.212 或更高版本。当[代理视图被关闭](/docs/zh-CN/agent-view#turn-off-agent-view)时,`/subtask` 不可用,`/fork` 启动分叉 subagent;否则 `/fork` 将整个会话复制到新的[后台会话](/docs/zh-CN/agent-view#from-inside-a-session)中。1306 当[Agent 视图被关闭](/docs/zh-CN/agent-view#turn-off-agent-view)时,`/subtask` 不可用,`/fork` 改为启动分叉子代理;否则 `/fork` 将整个会话复制到新的[后台会话](/docs/zh-CN/agent-view#from-inside-a-session)中。

1281</Note>1307</Note>

1282 1308 

1283分叉是一个 subagent,它继承到目前为止的整个对话,而不是从头开始。这消除了 subagents 通常提供的输入隔离:分叉看到与主会话相同的系统提示、工具、模型和消息历史,因此您可以将其交给一个辅助任务而无需重新解释情况。分叉自己的工具调用仍然保持在您的对话之外,只有其最终结果返回,因此您的主 context window 保持干净。当任何其他 subagent 需要太多背景才能有用时,或当您想从相同的起点并行尝试多种方法时,使用分叉。1309分叉是一个 subagent,它继承到目前为止的整个对话,而不是从头开始。这消除了 subagents 通常提供的输入隔离:分叉看到与主会话相同的系统提示、工具、模型和消息历史,因此您可以将其交给一个辅助任务而无需重新解释情况。分叉自己的工具调用仍然保持在您的对话之外,只有其最终结果返回,因此您的主 context window 保持干净。当任何其他 subagent 需要太多背景才能有用时,或当您想从相同的起点并行尝试多种方法时,使用分叉。

1284 1310 

1285Claude 通过 Agent 工具请求 `fork` subagent 类型来启动分叉。您可以通过[分叉模式](#turn-fork-mode-on-or-off)控制是否可以这样做,在交互式会话中默认启用。1311分叉模式启用时(默认即为启用),Claude 可以自行启动分叉。要停止分叉,请参阅[关闭分叉模式](#turn-fork-mode-on-or-off)。

1286 1312 

1287您可以使用 `/subtask` 后跟任务自己启动分叉,无论分叉模式是否启用。在 v2.1.161 到 v2.1.211 版本中,命令是 `/fork`。Claude Code 从任务的前几个单词命名分叉。以下示例分叉对话以在您继续主会话中的实现时草拟测试用例:1313您可以使用 `/subtask` 后跟任务自己启动分叉,无论分叉模式是否启用。Claude Code 从任务的前几个单词命名分叉。以下示例分叉对话以在您继续主会话中的实现时草拟测试用例:

1288 1314 

1289```text wrap theme={null}1315```text wrap theme={null}

1290/subtask draft unit tests for the parser changes so far1316/subtask draft unit tests for the parser changes so far


1327| 上下文 | 完整的对话历史 | 新鲜上下文,带有您传递的提示 |1353| 上下文 | 完整的对话历史 | 新鲜上下文,带有您传递的提示 |

1328| 系统提示和工具 | 与主会话相同 | 来自 subagent 的[定义文件](#write-subagent-files),[为后台运行过滤](#available-tools) |1354| 系统提示和工具 | 与主会话相同 | 来自 subagent 的[定义文件](#write-subagent-files),[为后台运行过滤](#available-tools) |

1329| 模型 | 与主会话相同 | 来自 subagent 的 `model` 字段 |1355| 模型 | 与主会话相同 | 来自 subagent 的 `model` 字段 |

1330| 权限 | 提示在您的终端中出现 | [提示在后台运行时在您的主会话中出现](#run-subagents-in-foreground-or-background) |

1331| Prompt cache | 与主会话共享 | 单独的缓存 |1356| Prompt cache | 与主会话共享 | 单独的缓存 |

1332 1357 

1333因为分叉的系统提示词和工具定义与父级相同,其第一个请求重用父级的[提示缓存](/docs/zh-CN/prompt-caching#subagents-and-the-cache)。由于这种重用,对于需要相同上下文的任务,分叉的成本低于新的子代理。1358因为分叉的系统提示词和工具定义与父级相同,其第一个请求重用父级的[提示缓存](/docs/zh-CN/prompt-caching#subagents-and-the-cache)。由于这种重用,对于需要相同上下文的任务,分叉的成本低于新的子代理。


1335当 Claude 通过 Agent 工具生成分叉时,它可以传递 `isolation: "worktree"` 以便分叉的文件编辑被写入单独的 git worktree 而不是您的检出。分叉无法生成进一步的分叉。1360当 Claude 通过 Agent 工具生成分叉时,它可以传递 `isolation: "worktree"` 以便分叉的文件编辑被写入单独的 git worktree 而不是您的检出。分叉无法生成进一步的分叉。

1336 1361 

1337<h3 id="turn-fork-mode-on-or-off">1362<h3 id="turn-fork-mode-on-or-off">

1338 打开或关闭分叉模式1363 关闭分叉模式

1339</h3>1364</h3>

1340 1365 

1341Claude Code 在交互式会话中默认打开分叉模式,在[非交互模式](/docs/zh-CN/headless)中使用 `-p` 和 Agent SDK 中默认关闭。交互式默认值需要 Claude Code v2.1.232 或更高版本。在早期版本中,设置 `CLAUDE_CODE_FORK_SUBAGENT` 为 `1` 以打开分叉模式。1366分叉模式允许 Claude 自行启动分叉。要阻止 Claude 启动分叉:

1342 

1343您可以从 Claude Code 处理 Agent 工具的方式判断分叉模式是否打开:

1344 

1345* Claude 可以通过请求 `fork` subagent 类型来生成分叉。当 Claude 不请求类型时,如果会话仍然有该类型,它会获得[通用](#built-in-subagents) subagent。从定义生成的 subagents,例如 Explore,照常工作。

1346* Claude Code 在后台运行 Claude 生成的 subagents,分叉和非分叉 subagents 都是如此,除了[保持在前台的情况](#run-subagents-in-foreground-or-background)。Claude Code 也会移除 Agent 工具的 `run_in_background` 参数,因此 Claude 无法请求前台。

1347 

1348设置 [`CLAUDE_CODE_FORK_SUBAGENT`](/docs/zh-CN/env-vars) 环境变量以覆盖默认值:

1349 1367 

1350* `1` 在非交互模式和 Agent SDK 中打开分叉模式1368* **仅停止分叉**:在您的[设置](#disable-specific-subagents)中将 `"Agent(fork)"` 添加到 `permissions.deny`。

1351* `0` 在每种会话中关闭分叉模式1369* **关闭分叉模式**:按照[让 Claude 等待子代理](#let-claude-wait-for-a-subagent)中的步骤,将 `CLAUDE_CODE_FORK_SUBAGENT` 设置为 `0`。

1352 1370 

1353要保持分叉模式打开但阻止 Claude 生成分叉,使用 `Agent(fork)` 规则[禁用 `fork` subagent 类型](#disable-specific-subagents)。Claude Code 仍然在后台运行 Claude 生成的 subagents,除了相同的[保持在前台的情况](#run-subagents-in-foreground-or-background)。1371分叉模式启用时,在您本机上的交互式终端、VS Code 或桌面会话中,Claude 也无法[等待子代理](#run-subagents-in-foreground-or-background)。从 Claude Code v2.1.302 起默认启用分叉模式,而在交互式终端会话中则从 v2.1.232 起默认启用。

1354 1372 

1355<h2 id="example-subagents">1373<h2 id="example-subagents">

1356 示例 subagents1374 示例 subagents

Details

58 58 

59 如果您接受了 Claude Code 的首次运行终端设置提示,这已经完成。该提示为您运行 `/terminal-setup`,它启用 Option 作为 Meta 并在您的 Apple Terminal 配置文件中关闭可听见的铃声。59 如果您接受了 Claude Code 的首次运行终端设置提示,这已经完成。该提示为您运行 `/terminal-setup`,它启用 Option 作为 Meta 并在您的 Apple Terminal 配置文件中关闭可听见的铃声。

60 60 

61 在[屏幕阅读器模式](/docs/zh-CN/accessibility)中,`/terminal-setup` 保持铃声设置不变,以便终端铃声保持可听见。在 v2.1.211 之前,`/terminal-setup` 即使在屏幕阅读器模式下也会关闭铃声。如果较早的运行关闭了铃声,请在"设置"→"配置文件"→"高级"→"可听见的铃声"下将其重新打开。61 在[屏幕阅读器模式](/docs/zh-CN/accessibility)中,`/terminal-setup` 保持铃声设置不变,以便终端铃声保持可听见。如果较早的运行关闭了铃声,请在"设置"→"描述文件"→"高级"→"可听见的铃声"下将其重新打开。

62 </Tab>62 </Tab>

63 63 

64 <Tab title="iTerm2">64 <Tab title="iTerm2">

65 打开"设置"→"配置文件"→"键"→"常规"并将"Left Option key"和"Right Option key"设置为"Esc+"。65 打开"设置"→"描述文件"→"键"→"常规"并将"Left Option key"和"Right Option key"设置为"Esc+"。

66 66 

67 在 iTerm2 中运行 `/terminal-setup` 会在"设置"→"常规"→"选择"下启用"Applications in terminal may access clipboard",以便 `/copy` 命令可以写入您的系统剪贴板。该命令即使在 tmux 内运行时也能检测到 iTerm2。重启 iTerm2 以使更改生效。67 在 iTerm2 中运行 `/terminal-setup` 会在"设置"→"常规"→"选择"下启用"Applications in terminal may access clipboard",以便 `/copy` 命令可以写入您的系统剪贴板。该命令即使在 tmux 内运行时也能检测到 iTerm2。重启 iTerm2 以使更改生效。

68 </Tab>68 </Tab>

tools-reference.md +26 −26

Details

26| `CronDelete` | 按 ID 取消计划任务 | 否 |26| `CronDelete` | 按 ID 取消计划任务 | 否 |

27| `CronList` | 列出会话中的所有计划任务 | 否 |27| `CronList` | 列出会话中的所有计划任务 | 否 |

28| `Edit` | 对特定文件进行有针对性的编辑。请参阅 [Edit 工具行为](#edit-tool-behavior) | 是 |28| `Edit` | 对特定文件进行有针对性的编辑。请参阅 [Edit 工具行为](#edit-tool-behavior) | 是 |

29| `EndConversation` | 结束会话,在持续滥用输入的罕见情况下或当您要求 Claude 演示该工具时。需要 Claude Code v2.1.213 或更高版本。请参阅 [EndConversation 工具行为](#endconversation-tool-behavior) | 否 |29| `EndConversation` | 结束会话,在持续滥用输入的罕见情况下或当您要求 Claude 演示该工具时。请参阅 [EndConversation 工具行为](#endconversation-tool-behavior) | 否 |

30| `EnterPlanMode` | 切换到 Plan Mode 以在编码前设计方法 | 否 |30| `EnterPlanMode` | 切换到 Plan Mode 以在编码前设计方法 | 否 |

31| `EnterWorktree` | 创建一个隔离的 [git worktree](/docs/zh-CN/worktrees) 并切换到它。传递 `path` 以切换到现有 worktree,而不是创建新的。首次进入时,目标可能是当前存储库的 worktree,或在多存储库工作区中,是嵌套在其中的存储库的 worktree。在 v2.1.203 之前,嵌套存储库的 worktree 被拒绝。`.claude/worktrees/` 之外的 `path` 会在进入前提示您的批准,因为它会移动会话的工作目录和对该位置的写入访问权限。新 worktree 创建和 `.claude/worktrees/` 下的路径不会提示。在 v2.1.206 之前,Claude 进入 `.claude/worktrees/` 之外的路径而不提示。从 worktree 会话内,或从具有固定工作目录的子代理(例如 [`isolation: worktree`](/docs/zh-CN/sub-agents#supported-frontmatter-fields)),只有 `path` 形式可用,目标必须在会话存储库的 `.claude/worktrees/` 下 | 是 |31| `EnterWorktree` | 创建一个隔离的 [git worktree](/docs/zh-CN/worktrees) 并切换到它。传递 `path` 以切换到现有 worktree,而不是创建新的。首次进入时,目标可能是当前存储库的 worktree,或在多存储库工作区中,是嵌套在其中的存储库的 worktree。在 v2.1.203 之前,嵌套存储库的 worktree 被拒绝。`.claude/worktrees/` 之外的 `path` 会在进入前提示您的批准,因为它会移动会话的工作目录和对该位置的写入访问权限。新 worktree 创建和 `.claude/worktrees/` 下的路径不会提示。在 v2.1.206 之前,Claude 进入 `.claude/worktrees/` 之外的路径而不提示。从 worktree 会话内,或从具有固定工作目录的子代理(例如 [`isolation: worktree`](/docs/zh-CN/sub-agents#supported-frontmatter-fields)),只有 `path` 形式可用,目标必须在会话存储库的 `.claude/worktrees/` 下 | 是 |

32| `ExitPlanMode` | 呈现计划以供批准并退出 Plan Mode | 是 |32| `ExitPlanMode` | 呈现计划以供批准并退出 Plan Mode | 是 |


48| `SendFeedback` | 起草关于 Claude Code 的反馈报告,涵盖产品问题或 Claude 在会话中的自身行为,并将其排队在您的机器上供您审查。Claude Code 在您选择发送草稿之前不会发送任何内容。请参阅 [SendFeedback 工具行为](#sendfeedback-tool-behavior)。需要 Claude Code v2.1.238 或更高版本 | 否 |48| `SendFeedback` | 起草关于 Claude Code 的反馈报告,涵盖产品问题或 Claude 在会话中的自身行为,并将其排队在您的机器上供您审查。Claude Code 在您选择发送草稿之前不会发送任何内容。请参阅 [SendFeedback 工具行为](#sendfeedback-tool-behavior)。需要 Claude Code v2.1.238 或更高版本 | 否 |

49| `SendMessage` | 向另一个代理发送消息:[代理团队](/docs/zh-CN/agent-teams)队友、[通过代理 ID 或名称恢复的子代理](/docs/zh-CN/sub-agents#resume-subagents),或您的其他 Claude Code 会话之一,在此机器上或超越它。消息传递其他会话需要 Claude Code v2.1.224 或更高版本。[跨会话消息传递](/docs/zh-CN/cross-session-messaging)涵盖 Claude 可以到达的会话、[消息到达时的样子](/docs/zh-CN/cross-session-messaging#what-a-message-looks-like)以及[Claude 如何在另一个会话空闲时获得通知](/docs/zh-CN/cross-session-messaging#get-a-notice-when-another-session-goes-idle)。Claude 可以包含可选的 `summary` 输入,通常为 5-10 个单词,Claude Code 显示为单行预览。当 Claude 在[纯文本消息](/docs/zh-CN/cross-session-messaging#limitations)上省略它时,Claude Code 使用消息的第一行作为摘要。Claude Code 使用省略号截断长于 200 个字符的摘要 | 否 |49| `SendMessage` | 向另一个代理发送消息:[代理团队](/docs/zh-CN/agent-teams)队友、[通过代理 ID 或名称恢复的子代理](/docs/zh-CN/sub-agents#resume-subagents),或您的其他 Claude Code 会话之一,在此机器上或超越它。消息传递其他会话需要 Claude Code v2.1.224 或更高版本。[跨会话消息传递](/docs/zh-CN/cross-session-messaging)涵盖 Claude 可以到达的会话、[消息到达时的样子](/docs/zh-CN/cross-session-messaging#what-a-message-looks-like)以及[Claude 如何在另一个会话空闲时获得通知](/docs/zh-CN/cross-session-messaging#get-a-notice-when-another-session-goes-idle)。Claude 可以包含可选的 `summary` 输入,通常为 5-10 个单词,Claude Code 显示为单行预览。当 Claude 在[纯文本消息](/docs/zh-CN/cross-session-messaging#limitations)上省略它时,Claude Code 使用消息的第一行作为摘要。Claude Code 使用省略号截断长于 200 个字符的摘要 | 否 |

50| `SendUserFile` | 从会话向您发送文件,带有可选标题,以便生成的报告、图表、屏幕截图或构建产物到达您的设备,而不仅仅在会话记录中提及。可选的 `display` 输入控制呈现方式:`render` 在客户端中内联打开文件,`attach` 仅显示下载卡,未设置时客户端按文件类型决定。在连接 [Remote Control](/docs/zh-CN/remote-control) 客户端或在[云端会话](/docs/zh-CN/claude-code-on-the-web)中时可用。传递通过 Anthropic 托管的基础设施运行,因此该工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |50| `SendUserFile` | 从会话向您发送文件,带有可选标题,以便生成的报告、图表、屏幕截图或构建产物到达您的设备,而不仅仅在会话记录中提及。可选的 `display` 输入控制呈现方式:`render` 在客户端中内联打开文件,`attach` 仅显示下载卡,未设置时客户端按文件类型决定。在连接 [Remote Control](/docs/zh-CN/remote-control) 客户端或在[云端会话](/docs/zh-CN/claude-code-on-the-web)中时可用。传递通过 Anthropic 托管的基础设施运行,因此该工具在 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 上不可用 | 否 |

51| `ShareOnboardingGuide` | 上传 `ONBOARDING.md` 并返回队友可以在 Claude Code 中打开的共享链接。在编写指南后从 `/team-onboarding` 调用。适用于 Pro、Max、Team 和 Enterprise 计划上的 claude.ai 订阅者 | 是 |51| `ShareOnboardingGuide` | 上传 `ONBOARDING.md` 并返回队友可以在 Claude Code 中打开的共享链接。在编写指南后从 `/team-onboarding` 调用。适用于 Team 和 Enterprise 计划上的 claude.ai 订阅者 | 是 |

52| `Skill` | 在主对话中执行[skill](/docs/zh-CN/skills#control-who-invokes-a-skill) | 是 |52| `Skill` | 在主对话中执行[skill](/docs/zh-CN/skills#control-who-invokes-a-skill) | 是 |

53| `SubagentHandback` | 将子代理的最终报告传递给接收该子代理结果的任何对话。仅在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)中提供,给 Agent 工具在本地运行的子代理,除了[分叉](/docs/zh-CN/sub-agents#fork-the-current-conversation),并在终端 CLI、IDE 扩展、网络版会话和 Agent SDK 中可用;分类器在传递报告前审查它。需要 Claude Code v2.1.271 或更高版本 | 否 |53| `SubagentHandback` | 将子代理的最终报告传递给接收该子代理结果的任何对话。仅在[自动模式](/docs/zh-CN/permission-modes#eliminate-prompts-with-auto-mode)中提供,给 Agent 工具在本地运行的子代理,除了[分叉](/docs/zh-CN/sub-agents#fork-the-current-conversation),并在终端 CLI、IDE 扩展、网络版会话和 Agent SDK 中可用;分类器在传递报告前审查它。需要 Claude Code v2.1.271 或更高版本 | 否 |

54| `TaskCreate` | 在任务列表中创建新任务。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |54| `TaskCreate` | 在任务列表中创建新任务。仅在[任务工具可用性](#task-tool-availability)下列出的模型上默认提供,在其他模型上当您选择加入时提供 | 否 |


92 92 

93此处未列出的工具,例如 `ExitPlanMode` 或 `ShareOnboardingGuide`,仅接受不带 specifier 的裸工具名称。93此处未列出的工具,例如 `ExitPlanMode` 或 `ShareOnboardingGuide`,仅接受不带 specifier 的裸工具名称。

94 94 

95`Edit(...)` 允许规则也授予对相同路径的读取访问权限,因此您不需要匹配的 `Read(...)` 规则。`Read(...)` 拒绝规则也会阻止同一路径上的 Edit 和 Write 工具,包括在该处创建新文件,因为两个工具都会更改 Claude 必须能够读回的内容。`Read` 拒绝检查需要 Claude Code v2.1.208 或更高版本用于编辑,以及 v2.1.228 或更高版本用于写入。95`Edit(...)` 允许规则也授予对相同路径的读取访问权限,因此您不需要匹配的 `Read(...)` 规则。`Read(...)` 拒绝规则也会阻止同一路径上的 Edit 和 Write 工具,包括在该处创建新文件,因为两个工具都会更改 Claude 必须能够读回的内容。对于 Write 工具,`Read` 拒绝检查需要 Claude Code v2.1.228 或更高版本。

96 96 

97Hook `matcher` 字段使用裸工具名称,而不是带括号的规则格式。有关匹配规则,请参阅 [matcher 模式](/docs/zh-CN/hooks#matcher-patterns)。有关每个工具在 hooks 中传递给 `tool_input` 的字段名称,请参阅 [PreToolUse 输入参考](/docs/zh-CN/hooks#pretooluse-input)。97Hook `matcher` 字段使用裸工具名称,而不是带括号的规则格式。有关匹配规则,请参阅 [matcher 模式](/docs/zh-CN/hooks#matcher-patterns)。有关每个工具在 hooks 中传递给 `tool_input` 的字段名称,请参阅 [PreToolUse 输入参考](/docs/zh-CN/hooks#pretooluse-input)。

98 98 


100 Agent tool 行为100 Agent tool 行为

101</h2>101</h2>

102 102 

103Agent tool 在单独的上下文窗口中生成一个子代理。子代理自主地完成其任务,然后向父对话返回其结果。父对话看不到子代理的中间 tool 调用或输出,只能看到最终结果。启用 [agent teams](/docs/zh-CN/agent-teams) 后,携带 `name` 的调用可以启动一个 [teammate](/docs/zh-CN/agent-teams#how-claude-starts-agent-teams),它通过团队消息而不是返回结果来报告。103Agent tool 在单独的上下文窗口中生成一个子代理。子代理自主地完成其任务,然后向父对话返回其结果。父对话看不到子代理的中间 tool 调用或输出,只能看到最终结果。同一个 tool 也可以启动 teammate 或 fork:

104 104 

105要限制子代理运行的轮数,请在 [subagent definition](/docs/zh-CN/sub-agents#supported-frontmatter-fields) 中设置 `maxTurns`。当子代理达到限制时,Claude Code 将返回的结果标记为部分输出,Claude 可以 [resume the subagent](/docs/zh-CN/sub-agents#resume-subagents) 来继续。105* **Teammate**:启用 [agent teams](/docs/zh-CN/agent-teams) 后,携带 `name` 的调用可以改为启动一个 [teammate](/docs/zh-CN/agent-teams#how-claude-starts-agent-teams),它通过团队消息而不是返回结果来报告

106* **Fork**:在 [fork mode](/docs/zh-CN/sub-agents#turn-fork-mode-on-or-off) 打开的任何地方,该 tool 都可以启动一个 [forked subagent](/docs/zh-CN/sub-agents#fork-the-current-conversation),它继承完整的父对话,而不是从头开始

106 107 

107同一个 Agent tool 也会在 [fork mode](/docs/zh-CN/sub-agents#turn-fork-mode-on-or-off) 打开的地方启动 [forked subagents](/docs/zh-CN/sub-agents#fork-the-current-conversation)。fork 继承完整的父对话而不是从头开始,在后台运行,除了 [cases that stay in the foreground](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background),并且仍然在您的终端中显示权限提示。本节的其余部分描述非 fork 子代理。108要限制子代理运行的轮数,请在 [subagent definition](/docs/zh-CN/sub-agents#supported-frontmatter-fields) 中设置 `maxTurns`。当子代理达到限制时,Claude Code 将返回的结果标记为部分输出,Claude 可以 [resume the subagent](/docs/zh-CN/sub-agents#resume-subagents) 来继续。

108 109 

109非 fork 子代理可以使用哪些 tools 取决于 [subagent definition](/docs/zh-CN/sub-agents) 中的 `tools` 和 `disallowedTools` 字段:110非 fork 子代理可以使用哪些 tools 取决于 [subagent definition](/docs/zh-CN/sub-agents) 中的 `tools` 和 `disallowedTools` 字段:

110 111 


203 后台命令何时停止204 后台命令何时停止

204</h4>205</h4>

205 206 

206[前台子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)启动的命令在该子代理的运行结束时停止,无论它是完成、失败还是被中断。主对话或后台子代理启动的命令在最终响应后继续运行,直到它退出、被停止或达到其[时间限制](#time-limit-for-background-commands)。207[前台子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background)启动的命令在该子代理的运行结束时停止,无论它是完成、失败还是被中断。主对话或后台子代理启动的命令在最终回复后继续运行,直到它退出、被停止或达到其[时间限制](#time-limit-for-background-commands)。

207 208 

208当主对话启动的命令仍在运行时,使用 `-p` 标志的非交互模式运行会[在其结果之后保持打开](/docs/zh-CN/headless#background-tasks-at-exit),直到该命令退出或达到其时间限制。后台子代理启动的命令会在运行退出时被停止。209当主对话启动的命令仍在运行时,使用 `-p` 标志的非交互模式运行会[在其结果之后保持打开](/docs/zh-CN/headless#background-tasks-at-exit),直到该命令退出或达到其时间限制。后台子代理启动的命令会在运行退出时被停止。

209 210 


255* 将大小写为字节数或带有 `K`、`M`、`G` 或 `T` 后缀。设置 `0`、`off`、`false`、`no` 或 `none` 以关闭上限。Claude Code 忽略任何其他无法读取为大小的值,例如 `4e9`。256* 将大小写为字节数或带有 `K`、`M`、`G` 或 `T` 后缀。设置 `0`、`off`、`false`、`no` 或 `none` 以关闭上限。Claude Code 忽略任何其他无法读取为大小的值,例如 `4e9`。

256* Claude Code 将会话的所有 Bash、PowerShell 和 Monitor 命令计入一个上限,而不是每个命令各自计入。257* Claude Code 将会话的所有 Bash、PowerShell 和 Monitor 命令计入一个上限,而不是每个命令各自计入。

257* Claude Code 使用内存 cgroup 应用上限。当它无法设置 cgroup 时,命令在没有上限的情况下运行,来自 `claude --debug` 的调试日志说明原因。258* Claude Code 使用内存 cgroup 应用上限。当它无法设置 cgroup 时,命令在没有上限的情况下运行,来自 `claude --debug` 的调试日志说明原因。

258* 在 Claude Code 启动的第一个进程打开上限后,或因为关闭值或失败的 cgroup 设置而关闭它后,Claude Code 保持该结果直到您重新启动。要应用更改或删除的值,或固定的设置,再次启动 `claude`。259* 在 Claude Code 启动的第一个进程打开上限后,或因为关闭值或失败的 cgroup 设置而关闭它后,Claude Code 保持该结果直到您重新启动。要应用更改或删除的值,或修复后的设置,再次启动 `claude`。

259* 当命令无法保持在上限以下时,内核杀死命令,其结果中没有任何内容命名上限。260* 当命令无法保持在上限以下时,内核杀死命令,其结果中没有任何内容命名上限。

260 261 

261Claude Code 也可以将它启动的其他类型的进程计入同一限制。设置 [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/zh-CN/env-vars#variables) 为逗号分隔的类型列表以豁免上限;Claude Code 对不在您列表中的每种类型应用上限。设置为 `none` 以限制每种类型,或设置为 `all-new` 以仅限制 Bash、PowerShell 和 Monitor 工具命令。需要 Claude Code v2.1.246 或更高版本。您可以命名的类型:262Claude Code 也可以将它启动的其他类型的进程计入同一限制。设置 [`CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE`](/docs/zh-CN/env-vars#variables) 为逗号分隔的类型列表以豁免上限;Claude Code 对不在您列表中的每种类型应用上限。设置为 `none` 以限制每种类型,或设置为 `all-new` 以仅限制 Bash、PowerShell 和 Monitor 工具命令。需要 Claude Code v2.1.246 或更高版本。您可以命名的类型:


279 280 

280Edit 工具执行精确字符串替换。它接受一个 `old_string` 和一个 `new_string`,并用后者替换前者。它不使用正则表达式或模糊匹配。281Edit 工具执行精确字符串替换。它接受一个 `old_string` 和一个 `new_string`,并用后者替换前者。它不使用正则表达式或模糊匹配。

281 282 

282编辑应用必须通过以下检查。在任何检查之前,与 [`Read` 拒绝规则](/docs/zh-CN/permissions#tool-specific-permission-rules)匹配的路径会被拒绝,包括在该路径创建新文件。此拒绝需要 Claude Code v2.1.208 或更高版本。283编辑应用必须通过以下检查。在任何检查之前,与 [`Read` 拒绝规则](/docs/zh-CN/permissions#tool-specific-permission-rules)匹配的路径会被拒绝,包括在该路径创建新文件。

283 284 

284* **编辑前读取**:Claude 在编辑文件前在当前对话中读取该文件,并且以 [`PARTIAL view` 通知](#large-files)中断的读取不计数。Claude Opus 4.6、Claude Haiku 4.5 和更早的模型始终需要读取。较新的模型可以在读取不需要权限提示且 Read 工具可用时编辑未读文件。285* **编辑前读取**:Claude 在编辑文件前在当前对话中读取该文件,并且以 [`PARTIAL view` 通知](#large-files)中断的读取不计数。Claude Opus 4.6、Claude Haiku 4.5 和更早的模型始终需要读取。较新的模型可以在读取不需要权限提示且 Read 工具可用时编辑未读文件。

285* **匹配**:`old_string` 必须在文件中完全按照编写的方式出现。单个空格或缩进差异足以导致不匹配。286* **匹配**:`old_string` 必须在文件中完全按照编写的方式出现。单个空格或缩进差异足以导致不匹配。

286* **唯一性**:`old_string` 必须恰好出现一次。当它出现多次时,Claude 要么提供一个更长的字符串,其周围上下文足以确定一个出现位置,要么设置 `replace_all: true` 来替换所有出现位置。287* **唯一性**:`old_string` 必须恰好出现一次。当它出现多次时,Claude 要么提供一个更长的字符串,其周围上下文足以确定一个出现位置,要么设置 `replace_all: true` 来替换所有出现位置。

287 288 

288当 `old_string` 与当前内容完全匹配且明确无误,且 Claude Code 可以在不提示的情况下读取文件时,在 Claude 最后读取后在磁盘上更改的文件仍然可以编辑。针对文件的当前内容进行匹配可以保持安全,结果会注明该文件包含其他更改,以便 Claude 在依赖周围内容的编辑前重新读取它。在任何其他情况下,例如过时的 `old_string` 或在没有 `replace_all` 的情况下匹配多次的情况,Claude 在编辑前再次读取文件。对未读和已更改文件的宽松处理需要 Claude Code v2.1.208 或更高版本;在此之前,Claude Code 拒绝对它在对话中未读过或在读取后在磁盘上更改的任何文件进行编辑。289当 `old_string` 与当前内容完全匹配且明确无误,且 Claude Code 可以在不提示的情况下读取文件时,在 Claude 最后读取后在磁盘上更改的文件仍然可以编辑。针对文件的当前内容进行匹配可以保持安全,结果会注明该文件包含其他更改,以便 Claude 在依赖周围内容的编辑前重新读取它。在任何其他情况下,例如过时的 `old_string` 或在没有 `replace_all` 的情况下匹配多次的情况,Claude 在编辑前再次读取文件。

289 290 

290Claude 使用 `cat` 或 `grep` 等 Bash 命令查看文件后,也可以在不单独执行 Read 的情况下编辑该文件。这些命令是 `cat`、`nl`、`bat`、`batcat`、`head`、`tail`、`sed -n 'X,Yp'`、`grep`、`egrep`、`fgrep` 和 `rg`,且每个命令都需在单个文件上运行,没有管道或重定向。没有输出任何匹配的搜索不算作读取,此列表之外的任何命令也不算。291Claude 使用 `cat` 或 `grep` 等 Bash 命令查看文件后,也可以在不单独执行 Read 的情况下编辑该文件。这些命令是 `cat`、`nl`、`bat`、`batcat`、`head`、`tail`、`sed -n 'X,Yp'`、`grep`、`egrep`、`fgrep` 和 `rg`,且每个命令都需在单个文件上运行,没有管道或重定向。没有输出任何匹配的搜索不算作读取,此列表之外的任何命令也不算。

291 292 


322 323 

323该工具仅在以下所有条件都满足时出现:324该工具仅在以下所有条件都满足时出现:

324 325 

325* **版本**:Claude Code v2.1.213 或更高版本。

326* **模型**:会话的模型是 Claude Opus 4.8、Claude Sonnet 5、Claude Fable 5 或这些系列之一的更高版本。326* **模型**:会话的模型是 Claude Opus 4.8、Claude Sonnet 5、Claude Fable 5 或这些系列之一的更高版本。

327* **界面**:交互式终端会话,包括 IDE 集成终端中的 `claude` 会话,这是[JetBrains 插件](/docs/zh-CN/jetbrains)运行它的方式。其他界面不包括该工具,例如:327* **界面**:交互式终端会话,包括 IDE 集成终端中的 `claude` 会话,这是[JetBrains 插件](/docs/zh-CN/jetbrains)运行它的方式。其他界面不包括该工具,例如:

328 * 非交互式 `-p` 运行328 * 非交互式 `-p` 运行


337 Glob 工具行为337 Glob 工具行为

338</h2>338</h2>

339 339 

340Glob 工具通过名称模式查找文件。在 Windows 上,它是默认工具集的一部分。在 macOS、Linux 和 WSL 上,Claude Code 将 Glob 和 [Grep](#grep-tool-behavior) 排除在默认工具集之外,Claude 改为通过 Bash 工具使用 `find` 和 `grep` 进行搜索。在 Claude 的 shell 中,这两个命令运行 `bfs` 和 `ugrep` 的嵌入式版本,搜索通过 `Bash` 调用到达你的 hooks 和权限规则。340Glob 工具通过名称模式查找文件。在 Windows 上,它是默认工具集的一部分。在 macOS、Linux 和 WSL 上,Claude Code 将 Glob 和 [Grep](#grep-tool-behavior) 排除在默认工具集之外,Claude 改为通过 Bash 工具使用 `find` 和 `grep` 进行搜索。在 Claude 的 shell 中,这两个命令运行 `bfs` 和 `ugrep` 的嵌入式版本,搜索以 `Bash` 调用的形式到达您的 hook 和权限规则。

341 341 

342在 macOS、Linux 和 WSL 上,你可以在以下情况下恢复 Glob 和 Grep 工具:342在 macOS、Linux 和 WSL 上,在以下情况下可以恢复 Glob 和 Grep 工具:

343 343 

344* 你在启动会话时在 [`--tools` 或 `--allowedTools`](/docs/zh-CN/cli-reference#cli-flags) 中命名 `Glob` 或 `Grep`,或在等效的 [Agent SDK](/docs/zh-CN/agent-sdk/overview) 选项中命名。使用 `--tools` 时,你会获得列出的工具,在 `--allowedTools` 中命名任一工具会恢复两者。设置文件中的允许规则没有这种效果。344* 您在启动会话时在 [`--tools` 或 `--allowedTools`](/docs/zh-CN/cli-reference#cli-flags) 中指定 `Glob` 或 `Grep`,或在等效的 [Agent SDK](/docs/zh-CN/agent-sdk/overview) 选项中指定。使用 `--tools` 时,您会获得列出的工具;在 `--allowedTools` 中指定任一工具会恢复两者。设置文件中的允许规则没有这种效果。

345* 权限 [拒绝规则](/docs/zh-CN/permissions#match-all-uses-of-a-tool)、`--disallowedTools` 标志或 [`--restricted`](/docs/zh-CN/cli-reference#cli-flags) 从会话中移除 `Bash`。345* 权限 [拒绝规则](/docs/zh-CN/permissions#match-all-uses-of-a-tool)、`--disallowedTools` 标志或 [`--restricted`](/docs/zh-CN/cli-reference#cli-flags) 从会话中移除 `Bash`。

346* [子代理](/docs/zh-CN/sub-agents#available-tools) 在其 `tools` 字段中列出 `Glob` 或 `Grep` 并排除 `Bash`。列出的工具仅对该子代理返回,或在通过 [`--agent`](/docs/zh-CN/sub-agents#invoke-subagents-explicitly) 或 `agent` 设置作为主会话代理运行时对整个会话返回。346* [子代理](/docs/zh-CN/sub-agents#available-tools) 在其 `tools` 字段中列出 `Glob` 或 `Grep` 并排除 `Bash`。列出的工具仅对该子代理恢复;当它通过 [`--agent`](/docs/zh-CN/sub-agents#invoke-subagents-explicitly) 或 `agent` 设置作为主会话 Agent 运行时,则对整个会话恢复。

347 347 

348Glob 支持标准 glob 语法,包括用于递归目录匹配的 `**`:348Glob 支持标准 glob 语法,包括用于递归目录匹配的 `**`:

349 349 


373 373 

374* `files_with_matches`:仅文件路径,无行内容。这是默认值。374* `files_with_matches`:仅文件路径,无行内容。这是默认值。

375* `content`:匹配的行及其文件和行号。当工具的 `offset` 参数指向某个有匹配项的模式的最后一个匹配项之后时,Grep 返回 `No entries at this offset`,因此 Claude 会扩大或重置偏移量,而不是得出模式不匹配的结论。375* `content`:匹配的行及其文件和行号。当工具的 `offset` 参数指向某个有匹配项的模式的最后一个匹配项之后时,Grep 返回 `No entries at this offset`,因此 Claude 会扩大或重置偏移量,而不是得出模式不匹配的结论。

376* `count`:每个文件的匹配计数,后跟所有匹配文件的总计数。总计覆盖每个匹配项,即使工具的 `head_limit` 或 `offset` 参数截断了列出的每个文件的条目。在 v2.1.208 之前,总计仅对列出的条目求和。376* `count`:每个文件的匹配计数,后跟所有匹配文件的总计数。即使工具的 `head_limit` 或 `offset` 参数截断了列出的每个文件的条目,总计仍覆盖每个匹配项。

377 377 

378Claude 可以使用 `glob` 参数(如 `**/*.tsx`)按文件范围限制结果,或使用 `type` 参数(如 `py` 或 `rust`)按语言限制结果。默认情况下,模式在单行内匹配。Claude 可以设置 `multiline: true` 以跨行边界匹配。378Claude 可以使用 `glob` 参数(如 `**/*.tsx`)按文件范围限制结果,或使用 `type` 参数(如 `py` 或 `rust`)按语言限制结果。默认情况下,模式在单行内匹配。Claude 可以设置 `multiline: true` 以跨行边界匹配。

379 379 


536 Windows 编码和退出代码536 Windows 编码和退出代码

537</h3>537</h3>

538 538 

539在 Windows 上,以下 PowerShell 编码和退出代码行为需要 Claude Code v2.1.214 或更高版本:

540 

541* 使用 `>` 和 `>>` 的重定向在 PowerShell 5.1 上写入 UTF-8 文件539* 使用 `>` 和 `>>` 的重定向在 PowerShell 5.1 上写入 UTF-8 文件

542* Claude Code 将管道传输到本机命令标准输入的文本编码为 UTF-8540* Claude Code 将管道传输到本机命令标准输入的文本编码为 UTF-8

543* Claude Code 捕获没有 ANSI 转义序列的错误输出541* Claude Code 捕获没有 ANSI 转义序列的错误输出

544* 其子进程等待标准输入的命令接收文件结束而不是挂起542* 其子进程等待标准输入的命令接收文件结束而不是挂起

545* 来自 `where.exe` 的退出代码 1 表示没有匹配,来自 `fc.exe` 和 `diff.exe` 的退出代码 1 表示文件不同,因此当命令产生输出时,Claude Code 将该退出代码视为有效的否定答案而不是命令错误。Claude Code 仍然将静默形式(例如 `where.exe /Q` 或重定向到 `$null`)报告为退出代码 1 上的失败543* 来自 `where.exe` 的退出代码 1 表示没有匹配,来自 `fc.exe` 和 `diff.exe` 的退出代码 1 表示文件不同,因此当命令产生输出时,Claude Code 将该退出代码视为有效的否定答案而不是命令错误。Claude Code 仍然将静默形式(例如 `where.exe /Q` 或重定向到 `$null`)报告为退出代码 1 上的失败

546 544 

547在 v2.1.214 之前,PowerShell 5.1 上的 `>` 写入 UTF-16LE 文件,非 ASCII 管道输入显示为 `?`,Python 脚本在打印非 ASCII 字符时可能会因 `UnicodeEncodeError` 而崩溃。

548 

549<h3 id="preview-limitations">545<h3 id="preview-limitations">

550 预览限制546 预览限制

551</h3>547</h3>


561 557 

562Read 工具接收文件路径并返回带有行号的文件内容。Claude 被指示始终传递绝对路径。558Read 工具接收文件路径并返回带有行号的文件内容。Claude 被指示始终传递绝对路径。

563 559 

564读取空文件会返回一个通知,说明文件存在但内容为空,而 `offset` 超过最后一行会返回一个通知,给出文件的行数。在 v2.1.208 之前,读取空文件会返回超过末尾的通知。560读取空文件会返回一个通知,说明文件存在但内容为空,而 `offset` 超过最后一行会返回一个通知,给出文件的行数。

565 561 

566Read 处理多种文件类型,不仅仅是纯文本:562Read 处理多种文件类型,不仅仅是纯文本:

567 563 

568* **图像**:PNG、JPG 和其他图像格式作为 Claude 可以看到的视觉内容返回,而不是原始字节。Claude Code 在发送大型图像之前会调整大小并重新压缩,以适应模型的图像大小限制,因此 Claude 可能会看到大型屏幕截图的缩小版本。在调整大小后仍然大于 500KB 的图像会被重新编码为质量降低的 JPEG,其像素尺寸保持不变。如果 Claude 在大型图像中遗漏了细微的像素级细节,请要求它先裁剪感兴趣的区域,例如通过 Bash 使用 ImageMagick。564* **图像**:PNG、JPEG、GIF 和 WebP 文件作为 Claude 可以看到的视觉内容返回,而不是原始字节。Claude Code 在发送大型图像之前会调整大小并重新压缩,以适应模型的图像大小限制,因此 Claude 可能会看到大型屏幕截图的缩小版本。

565 

566 如果 Claude 在大型图像中遗漏了细微的像素级细节,请要求它裁剪您关注的区域,例如通过 Bash 使用 ImageMagick,然后读取裁剪后的图像。

569* **PDF**:Claude 完整读取短 `.pdf` 文件。对于超过 10 页的 PDF,它使用 `pages` 参数按范围读取,例如 `"1-5"`,一次最多 20 页。页面范围读取使用 poppler-utils 中的 `pdftoppm` 呈现页面,因此在 macOS 上使用 `brew install poppler` 安装,在 Debian 和 Ubuntu 上使用 `apt-get install poppler-utils` 安装。在 Windows 和其他平台上,安装一个将 `pdftoppm` 放在 `PATH` 上的 poppler 构建。没有它,页面范围读取会失败并显示 `pdftoppm is not installed`。567* **PDF**:Claude 完整读取短 `.pdf` 文件。对于超过 10 页的 PDF,它使用 `pages` 参数按范围读取,例如 `"1-5"`,一次最多 20 页。页面范围读取使用 poppler-utils 中的 `pdftoppm` 呈现页面,因此在 macOS 上使用 `brew install poppler` 安装,在 Debian 和 Ubuntu 上使用 `apt-get install poppler-utils` 安装。在 Windows 和其他平台上,安装一个将 `pdftoppm` 放在 `PATH` 上的 poppler 构建。没有它,页面范围读取会失败并显示 `pdftoppm is not installed`。

570* **Jupyter 笔记本**:`.ipynb` 文件返回所有单元格及其输出,包括代码、markdown 和可视化。如果笔记本的单元格总量超过 256 KB,或超过 [token 限制](#large-files),则会返回错误。Claude Code 拒绝读取超过 100 MB 的笔记本文件;错误会告诉 Claude 如何改为读取笔记本的一部分,例如使用 shell 命令读取单元格的一个切片。568* **Jupyter 笔记本**:`.ipynb` 文件返回所有单元格及其输出,包括代码、markdown 和可视化。如果笔记本的单元格总量超过 256 KB,或超过 [token 限制](#large-files),则会返回错误。Claude Code 拒绝读取超过 100 MB 的笔记本文件;错误会告诉 Claude 如何改为读取笔记本的一部分,例如使用 shell 命令读取单元格的一个切片。

571 569 

572Read 仅读取文件,不读取目录。Claude 使用 shell 命令(如 `ls`)列出目录内容。570Read 仅读取文件,不读取目录。Claude 使用 shell 命令(如 `ls`)列出目录内容。

573 571 

572Read 会拒绝读取其视为二进制扩展名的文件,例如 `.xlsx`、`.parquet`、`.heic` 或 `.zip`。被拒绝后 Claude 会继续工作:如果有适用于该文件类型的 skill,错误会建议使用该 skill,否则会建议使用能够读取该格式的 shell 命令或脚本。如果您 [`@` 提及](/docs/zh-CN/common-workflows#reference-files-and-directories)一个被 Read 拒绝的文件,Claude 会收到该文件的路径,但不会收到其内容。

573 

574<h3 id="large-files">574<h3 id="large-files">

575 大型文件575 大型文件

576</h3>576</h3>


691* WebFetch 默认缓存每个响应 15 分钟,所以重复获取同一 URL 会快速返回。在 Claude Code v2.1.233 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/zh-CN/env-vars#variables) 以更改 WebFetch 保留每个响应的时长。691* WebFetch 默认缓存每个响应 15 分钟,所以重复获取同一 URL 会快速返回。在 Claude Code v2.1.233 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_CACHE_TTL_MS`](/docs/zh-CN/env-vars#variables) 以更改 WebFetch 保留每个响应的时长。

692* 一个页面如果在五分钟内未完成下载,包括 WebFetch 跟随的任何重定向,则会因截止期限错误而失败。在 Claude Code v2.1.268 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/zh-CN/env-vars#variables) 以更改限制,或设置为 `0` 以移除它。692* 一个页面如果在五分钟内未完成下载,包括 WebFetch 跟随的任何重定向,则会因截止期限错误而失败。在 Claude Code v2.1.268 或更高版本上,设置 [`CLAUDE_CODE_WEBFETCH_DEADLINE_MS`](/docs/zh-CN/env-vars#variables) 以更改限制,或设置为 `0` 以移除它。

693* 当 URL 重定向到不同的主机时,WebFetch 返回一个文本结果,命名原始 URL 和重定向目标,而不是跟随它。Claude 然后使用第二个 WebFetch 调用获取新 URL。693* 当 URL 重定向到不同的主机时,WebFetch 返回一个文本结果,命名原始 URL 和重定向目标,而不是跟随它。Claude 然后使用第二个 WebFetch 调用获取新 URL。

694* 当提取步骤遇到过载的 API 时,Claude Code 会使用退避重试它;仍然失败的获取会返回错误结果。在 v2.1.212 之前,API 错误文本可能会作为提取的页面内容到达 Claude。694* 当提取步骤遇到过载的 API 时,Claude Code 会使用退避重试它;仍然失败的获取会返回错误结果。

695 695 

696在 Manual 和 `acceptEdits` [权限模式](/docs/zh-CN/permission-modes)中,WebFetch 在获取前提示,除了您的[权限规则](/docs/zh-CN/permissions#manage-permissions)已允许或拒绝的域以及一组内置的预批准文档域,这些域无需提示即可获取。无论您的规则允许什么,获取也必须首先通过 [WebFetch 域安全检查](/docs/zh-CN/data-usage#webfetch-domain-safety-check);该部分涵盖检查发送的内容和跳过它的设置。提示提供三个选项:696在 Manual 和 `acceptEdits` [权限模式](/docs/zh-CN/permission-modes)中,WebFetch 在获取前提示,除了您的[权限规则](/docs/zh-CN/permissions#manage-permissions)已允许或拒绝的域以及一组内置的预批准文档域,这些域无需提示即可获取。无论您的规则允许什么,获取也必须首先通过 [WebFetch 域安全检查](/docs/zh-CN/data-usage#webfetch-domain-safety-check);该部分涵盖检查发送的内容和跳过它的设置。提示提供三个选项:

697 697 


727 727 

728该工具每次调用最多可以发出八个后端搜索,在返回结果之前在内部优化搜索。Claude 可以使用 `allowed_domains` 限制结果范围以仅包含某些主机,或使用 `blocked_domains` 排除它们。这两个列表不能在单次调用中组合。728该工具每次调用最多可以发出八个后端搜索,在返回结果之前在内部优化搜索。Claude 可以使用 `allowed_domains` 限制结果范围以仅包含某些主机,或使用 `blocked_domains` 排除它们。这两个列表不能在单次调用中组合。

729 729 

730当搜索请求命中过载的 API 时,Claude Code 会使用退避策略重试;仍然失败的调用会返回错误结果。在 v2.1.212 之前,API 错误文本可能会作为搜索结果传递给 Claude。730当搜索请求命中过载的 API 时,Claude Code 会使用退避策略重试;仍然失败的调用会返回错误结果。

731 731 

732WebSearch 权限规则不需要指定符。`allow` 或 `deny` 中的单独 `WebSearch` 条目是唯一的形式。732WebSearch 权限规则不需要指定符。`allow` 或 `deny` 中的单独 `WebSearch` 条目是唯一的形式。

733 733 


741 会话搜索限制741 会话搜索限制

742</h3>742</h3>

743 743 

744一个交互式终端会话最多可以进行 200 次 WebSearch 调用。来自主对话和[子代理](/docs/zh-CN/sub-agents)的搜索(例如并行研究扇出)计入同一限制。该限制需要 Claude Code v2.1.212 或更高版本。744一个交互式终端会话最多可以进行 200 次 WebSearch 调用。来自主对话和[子代理](/docs/zh-CN/sub-agents)的搜索(例如并行研究扇出)计入同一限制。

745 745 

746当会话达到限制时,搜索在对话中显示为未执行任何操作的调用。Claude 会收到一个通知,告诉它继续使用已经收集的信息,如果需要更多搜索,则要求您提高限制。746当会话达到限制时,搜索在对话中显示为未执行任何操作的调用。Claude 会收到一个通知,告诉它继续使用已经收集的信息,在回答中说明这一点,并且如果需要更多搜索,则要求您提高限制。

747 747 

748要获得更多搜索次数,请提高上限、等待限制恢复,或开始新的对话:748要获得更多搜索次数,请提高上限、等待限制恢复,或开始新的对话:

749 749 

Details

15| 登录循环、OAuth 错误、`403 Forbidden`、"organization disabled"、Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 凭据 | [故障排除安装和登录](/docs/zh-CN/troubleshoot-install#login-and-authentication) |15| 登录循环、OAuth 错误、`403 Forbidden`、"organization disabled"、Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 凭据 | [故障排除安装和登录](/docs/zh-CN/troubleshoot-install#login-and-authentication) |

16| 设置未应用、hooks 未触发、MCP 服务器未加载 | [调试您的配置](/docs/zh-CN/debug-your-config) |16| 设置未应用、hooks 未触发、MCP 服务器未加载 | [调试您的配置](/docs/zh-CN/debug-your-config) |

17| 会话以自动模式启动,或 Claude 编辑文件并运行命令而不询问 | [会话启动的模式](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in) |17| 会话以自动模式启动,或 Claude 编辑文件并运行命令而不询问 | [会话启动的模式](/docs/zh-CN/permission-modes#which-mode-a-session-starts-in) |

18| 更新 Claude Code 或 Agent SDK 后,在未传递 `--permission-mode`、`permissionMode` 或 `permission_mode` 的 `claude -p` 或 SDK 运行中,工具调用被拒绝 | [`claude -p` 和 Agent SDK 运行中的工具调用被拒绝](/docs/zh-CN/permission-modes#which-mode-a-non-interactive-run-starts-in) |

18| `API Error: 5xx`、`529 Overloaded`、`429`、请求验证错误 | [错误参考](/docs/zh-CN/errors) |19| `API Error: 5xx`、`529 Overloaded`、`429`、请求验证错误 | [错误参考](/docs/zh-CN/errors) |

19| `model not found` 或 `you may not have access to it` | [错误参考](/docs/zh-CN/errors#theres-an-issue-with-the-selected-model) |20| `model not found` 或 `you may not have access to it` | [错误参考](/docs/zh-CN/errors#theres-an-issue-with-the-selected-model) |

20| Claude 运行的命令失败,显示 `Your disk quota is full`、`is full (ENOSPC)` 或 `Command output was lost` | [错误参考](/docs/zh-CN/errors#disk-quota-or-temp-filesystem-is-full) |21| Claude 运行的命令失败,显示 `Your disk quota is full`、`is full (ENOSPC)` 或 `Command output was lost` | [错误参考](/docs/zh-CN/errors#disk-quota-or-temp-filesystem-is-full) |

vs-code.md +25 −9

Details

268 268 

269点击 Claude Code 面板顶部的 **Session history** 按钮即可访问您的对话历史记录。您可以按关键字搜索或按时间浏览。269点击 Claude Code 面板顶部的 **Session history** 按钮即可访问您的对话历史记录。您可以按关键字搜索或按时间浏览。

270 270 

271点击任意对话即可连同完整的消息历史记录一起恢复。如果该对话已在当前窗口的另一个标签页中打开,点击它会切换到该标签页。如果消息一开始显示为空白,请参阅[为什么显示为空白以及何时出现](#a-resumed-conversation-is-blank-at-first)。有关恢复会话的更多信息,请参阅[管理会话](/docs/zh-CN/sessions)。271点击任意对话即可将其恢复。如果该对话已在当前窗口的另一个标签页中打开,点击它会切换到该标签页。如果对话打开后没有显示任何消息,请参阅[为什么恢复的对话一开始显示为空白](#a-resumed-conversation-is-blank-at-first)。有关恢复会话的更多信息,请参阅[管理会话](/docs/zh-CN/sessions)。

272 272 

273* **会话标题**:新会话会根据您的第一条消息获得 AI 生成的标题。273* **会话标题**:新会话会根据您的第一条消息获得 AI 生成的标题。

274* **重命名和归档**:将鼠标悬停在会话上即可显示这些操作。重命名可为其设置描述性标题,归档则会将其移至列表底部的 **Archived sessions** 组。274* **重命名和归档**:将鼠标悬停在会话上即可显示这些操作。重命名可为其设置描述性标题,归档则会将其移至列表底部的 **Archived sessions** 组。


414 414 

415当面板在加载对话时崩溃或停止响应,或者您在对话打开后约三秒内重新加载或关闭窗口时,打开操作就不会完成。该对话不会发生变化,并仍保留在[会话历史记录](#resume-past-conversations)中。415当面板在加载对话时崩溃或停止响应,或者您在对话打开后约三秒内重新加载或关闭窗口时,打开操作就不会完成。该对话不会发生变化,并仍保留在[会话历史记录](#resume-past-conversations)中。

416 416 

417* **仍要打开**:点击 **Open it anyway** 或从会话历史记录中选择该对话。如果对话成功打开且面板持续正常工作,之后重新加载时它会照常恢复。如果面板再次停止响应,请重新加载窗口,以返回带有该通知的新聊天。417* **仍要打开**:点击 **Open it anyway** 或从会话历史记录中选择该对话。对话打开完成后,之后重新加载时它会[照常恢复](#continue-conversations-after-a-reload)。

418* **如果面板在加载对话时停止响应**:重新加载窗口。随后会打开一个新聊天。

418* **保持关闭**:继续在新聊天中工作。发送提示词后,该通知即会消失。419* **保持关闭**:继续在新聊天中工作。发送提示词后,该通知即会消失。

419 420 

420<h3 id="run-multiple-conversations">421<h3 id="run-multiple-conversations">


556 在面板中绘制内容的插件557 在面板中绘制内容的插件

557</h3>558</h3>

558 559 

559包含 [mod](/docs/zh-CN/plugins/mods/overview) 的插件可以在聊天面板中绘制内容。绘制功能需要扩展版本 2.1.299 或更高版本,并且需要一个[获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话。您可以从此类插件中看到:560包含 [mod](/docs/zh-CN/plugins/mods/overview) 的插件可以在聊天面板中绘制内容。绘制功能需要扩展版本 2.1.299 或更高版本。[不获取功能标志](/docs/zh-CN/env-vars#features-that-need-feature-flag-fetching)的会话(例如在 Amazon Bedrock 上运行的会话)需要 2.1.304 或更高版本。您可以从此类插件中看到:

560 561 

561* 对话旁边或输入框上方的窗格562* 对话旁边或输入框上方的窗格

562* 输入框上方的 toast 通知或状态栏563* 输入框上方的 toast 通知或状态栏


624 625 

625当某个命令或[子代理](/docs/zh-CN/sub-agents)让 Claude 等待的时间超出您的预期时,请点击对话中其工具调用下方的 **Run in background**。需要 Claude Code v2.1.287 或更高版本。626当某个命令或[子代理](/docs/zh-CN/sub-agents)让 Claude 等待的时间超出您的预期时,请点击对话中其工具调用下方的 **Run in background**。需要 Claude Code v2.1.287 或更高版本。

626 627 

627* **时机**:命令运行约两秒后,或子代理一启动,该操作即会出现。628* **时机**:命令运行约两秒后,或 Claude 一开始等待其从主对话中生成的[子代理](/docs/zh-CN/sub-agents#run-subagents-in-foreground-or-background),该操作即会出现。

628* **点击之后**:Claude 停止等待并继续当前轮次。命令或子代理会作为[后台任务](/docs/zh-CN/tools-reference#background-commands)继续运行,并在完成时通知 Claude。629* **点击之后**:Claude 停止等待并继续当前轮次。命令或子代理会作为[后台任务](/docs/zh-CN/tools-reference#background-commands)继续运行,并在完成时通知 Claude。

629 630 

630如需在此期间查看任务状态或停止任务,请在输入框中键入 `/tasks` 以打开 [Agent 地图](#use-the-prompt-box)。子代理会在其中的 Agent 树中保持其位置,而命令会列在各 Agent 下方,其卡片上显示[最新输出](#monitor-background-processes)。631如需在此期间查看任务状态或停止任务,请在输入框中键入 `/tasks` 以打开 [Agent 地图](#use-the-prompt-box)。子代理会在其中的 Agent 树中保持其位置,而命令会列在各 Agent 下方,其卡片上显示[最新输出](#monitor-background-processes)。

631 632 

633<h4 id="the-run-in-background-action-is-missing-under-a-subagent">

634 子代理下方缺少 Run in background 操作

635</h4>

636 

637在 VS Code 中,子代理默认不显示此操作。要了解某个子代理为何不显示,请在 [Agent 地图](#use-the-prompt-box)中打开其卡片并查看 `Spawned by` 行:

638 

639* **`Spawned by the main agent`**:该子代理是在后台启动的,因此 Claude 不会等待它,您无需执行任何操作。如需让 Claude 改为等待子代理,请参阅[让 Claude 等待子代理](/docs/zh-CN/sub-agents#let-claude-wait-for-a-subagent)。

640* **`Spawned by` 后为另一个子代理的名称**:该操作仅对主 Agent 生成的子代理显示,而不会对另一个子代理所等待的[嵌套子代理](/docs/zh-CN/sub-agents#let-subagents-spawn-their-own-subagents)显示。要提前结束嵌套子代理,请点击其卡片上的 **Stop agent**。等待中的子代理随后会在没有该结果的情况下继续运行。

641 

632<h3 id="monitor-background-processes">642<h3 id="monitor-background-processes">

633 监控后台进程643 监控后台进程

634</h3>644</h3>


1028 1038 

1029如果某个公式按原样显示,而其附近的其他公式已被排版,请检查以下原因:1039如果某个公式按原样显示,而其附近的其他公式已被排版,请检查以下原因:

1030 1040 

1031* **它被识别为数学以外的内容**:读起来像单词的 `$…$` 文本会保持原样,例如 `$O(n log n)$`。以数字开头的 `$…$` 文本(例如 `$30$` 或 `$1/N$`)也会保持原样,除非有 `=`、`+` 或 `^` 等字符将其标记为数学公式。请改为让 Claude 使用单独成行的 `$$` 块,面板会直接排版此类块而不进行这项检查。1041* **该公式是行内公式,且面板未将其视为数学公式**:请让 Claude 以单独成行的 `$$` 块重新发送该公式。当 `$…$` 分隔符之间的文本符合以下情况时,面板会将行内公式按原样保留:

1032* **它带有内边距、过长或跨行**:美元符号内含空格的 `$ x^2 $`、超过 60 个字符的 `$…$` 内容,以及跨两行的 `$…$` 或 `\(…\)` 都不会被排版。请改为让 Claude 使用单独成行的 `$$` 块,该形式没有这些限制。1042 * 不只是简单算术,却没有 `=`、`+` 或 `^` 等字符将其标记为数学公式,例如 `$O(n log n)$`

1033* **TeX 无法排版**:包含语法错误、宏定义(例如 `\newcommand` 或 `\def`)或未转义 `%` 的公式会按原样显示。请让 Claude 重写该公式,修正错误、去掉宏,或使用 `\%` 表示百分号。1043 * 以数字开头且没有此类字符,例如 `$30$` 和 `$1/N$`

1034* **它过大**:长度超过 8,192 个字符的公式,或绘制后会远大于其源文本的公式,会按原样显示。请让 Claude 将其拆分为多个较小的公式,或以更紧凑的方式书写。1044 * 美元符号内含空格,例如 `$ x^2 $`

1035* **它位于大量数学公式之后**:在回复的同一文本块中,面板会按顺序排版公式,直至达到上限。超出上限的后续公式会按原样显示。请让 Claude 单独再次发送您需要的公式。1045 * 超过 60 个字符

1046 * 跨两行。跨两行的 `\(…\)` 公式同样不会被排版。

1047* **该公式存在 TeX 语法错误**:请让 Claude 重写该公式并修正错误。

1048* **该公式定义了宏**:包含宏定义(例如 `\newcommand` 或 `\def`)的公式会按原样显示。请让 Claude 重写该公式,不使用宏。

1049* **该公式包含未转义的 `%`**:请让 Claude 重写该公式,使用 `\%` 表示百分号。

1050* **该公式过大**:长度超过 8,192 个字符的公式,或排版输出会远大于其 TeX 源文本的公式,会按原样显示。请让 Claude 将其拆分为多个较小的公式,或以更紧凑的方式书写。

1051* **该公式位于大量数学公式之后**:在回复的同一文本块中,面板会按顺序排版公式,直至达到上限。超出上限的后续公式会按原样显示。请让 Claude 单独再次发送您需要的公式。

1036 1052 

1037<h3 id="claude-code-never-responds">1053<h3 id="claude-code-never-responds">

1038 Claude Code 始终没有响应1054 Claude Code 始终没有响应

Details

78 <p className="digest-wins-title">其他改进</p>78 <p className="digest-wins-title">其他改进</p>

79 79 

80 <div className="digest-wins-grid">80 <div className="digest-wins-grid">

81 <div><code>claude agents</code> 获得了分派标志(<code>--add-dir</code>、<code>--settings</code>、<code>--mcp-config</code>、<code>--plugin-dir</code>、<code>--permission-mode</code>、<code>--model</code>、<code>--effort</code>、<code>--dangerously-skip-permissions</code>)来配置后台会话,<code>claude agents --cwd \<path></code> 将会话列表范围限制在一个目录</div>81 <div><code>claude agents</code> 获得了分派标志(`--add-dir`、`--settings`、`--mcp-config`、`--plugin-dir`、`--permission-mode`、`--model`、`--effort`、`--dangerously-skip-permissions`)来配置后台会话,`claude agents --cwd <path>` 将会话列表范围限制在一个目录</div>

82 <div>新的 hook <code>args: string\[]</code> exec 形式直接生成命令而不使用 shell,因此路径占位符永远不需要引用</div>82 <div>新的 hook <code>args: string\[]</code> exec 形式直接生成命令而不使用 shell,因此路径占位符永远不需要引用</div>

83 <div>新的 <code>continueOnBlock</code> 配置选项用于 <code>PostToolUse</code> hooks,将 hook 的拒绝原因反馈给 Claude 并继续该回合,而不是结束它</div>83 <div>新的 <code>continueOnBlock</code> 配置选项用于 <code>PostToolUse</code> hooks,将 hook 的拒绝原因反馈给 Claude 并继续该回合,而不是结束它</div>

84 <div>hook JSON 输出中的新 <code>terminalSequence</code> 字段让 hooks 发出桌面通知、窗口标题和铃声,无需控制终端</div>84 <div>hook JSON 输出中的新 <code>terminalSequence</code> 字段让 hooks 发出桌面通知、窗口标题和铃声,无需控制终端</div>

85 <div>Rewind 菜单添加了"总结到此处"以压缩早期上下文,同时保持最近的回合完整</div>85 <div>Rewind 菜单添加了"总结到此处"以压缩早期上下文,同时保持最近的回合完整</div>

86 <div>当设置 <code>ANTHROPIC\_API\_KEY</code>、<code>apiKeyHelper</code> 或 <code>ANTHROPIC\_AUTH\_TOKEN</code> 时,Remote Control、<code>/schedule</code>、Claude.ai MCP 连接器和通知首选项现在被禁用,即使与 Claude.ai 登录一起使用;取消设置 API 密钥以使用这些功能</div>86 <div>当设置 <code>ANTHROPIC\_API\_KEY</code>、<code>apiKeyHelper</code> 或 <code>ANTHROPIC\_AUTH\_TOKEN</code> 时,Remote Control、<code>/schedule</code>、claude.ai MCP 连接器和通知首选项现在被禁用,即使与 claude.ai 登录一起使用;取消设置 API 密钥以使用这些功能</div>

87 <div>MCP stdio 服务器现在在其环境中接收 <code>CLAUDE\_PROJECT\_DIR</code>,与 hooks 匹配,插件配置可以在命令中引用 <code>\${"{"}CLAUDE\_PROJECT\_DIR{"}"}</code></div>87 <div>MCP stdio 服务器现在在其环境中接收 <code>CLAUDE\_PROJECT\_DIR</code>,与 hooks 匹配,插件配置可以在命令中引用 <code>\${"{"}CLAUDE\_PROJECT\_DIR{"}"}</code></div>

88 <div><code>claude plugin details \<name></code> 显示插件的组件清单和预计的每个会话令牌成本,<code>/plugin</code> 详细信息窗格现在也列出了插件提供的 LSP 服务器</div>88 <div><code>claude plugin details \<name></code> 显示插件的组件清单和预计的每个会话令牌成本,<code>/plugin</code> 详细信息窗格现在也列出了插件提供的 LSP 服务器</div>

89 <div>具有根级 <code>SKILL.md</code> 且没有 <code>skills/</code> 子目录的插件现在被显示为一个 skill</div>89 <div>具有根级 <code>SKILL.md</code> 且没有 <code>skills/</code> 子目录的插件现在被显示为一个 skill</div>

workflows.md +0 −4

Details

153* 计划任务提示153* 计划任务提示

154* 中继到对话中的 webhook 有效负载或拉取请求评论154* 中继到对话中的 webhook 有效负载或拉取请求评论

155 155 

156<Note>

157 在 v2.1.210 之前,该关键字也从这些路由中的任何一个启动工作流,包括中继到对话中的 webhook 有效负载或拉取请求评论。

158</Note>

159 

160<h3 id="let-claude-decide-with-ultracode">156<h3 id="let-claude-decide-with-ultracode">

161 让 Claude 使用 ultracode 决定157 让 Claude 使用 ultracode 决定

162</h3>158</h3>

worktrees.md +6 −3

Details

9[git worktree](https://git-scm.com/docs/git-worktree) 是一个单独的工作目录,具有自己的文件和分支,但与主检出共享相同的仓库历史和远程。在各自的 worktree 中运行每个 Claude Code 会话,可以为其提供一份单独的文件副本用于编辑,因此一个会话可以构建功能,而第二个会话可以修复错误。9[git worktree](https://git-scm.com/docs/git-worktree) 是一个单独的工作目录,具有自己的文件和分支,但与主检出共享相同的仓库历史和远程。在各自的 worktree 中运行每个 Claude Code 会话,可以为其提供一份单独的文件副本用于编辑,因此一个会话可以构建功能,而第二个会话可以修复错误。

10 10 

11<Note>11<Note>

12 Worktrees 需要 git 存储库;对于其他版本控制系统,请[配置 hooks 来替换 git 逻辑](#non-git-version-control)。在[桌面应用](/docs/zh-CN/desktop#work-in-parallel-with-sessions)中,启动会话时选择 **worktree** 选项,为其提供自己的 worktree。12 如果您使用其他版本控制系统或桌面应用,请按照适用于您环境的说明操作:

13 

14 * **其他版本控制系统**:worktrees 需要 git 仓库;请[配置 hooks 来替换 git 逻辑](#non-git-version-control)

15 * **桌面应用**:请参阅[在独立的 worktree 中运行会话](/docs/zh-CN/desktop#run-a-session-in-its-own-worktree)

13</Note>16</Note>

14 17 

15Worktrees 是运行 Claude 并行的几种方式之一。它们隔离文件编辑。[子代理](/docs/zh-CN/sub-agents)在一个会话内分割工作,[跨会话消息传递](/docs/zh-CN/cross-session-messaging)让 Claude 在您的 worktrees 中的会话之间传递发现。请参阅[并行运行代理](/docs/zh-CN/agents)来比较这些方法,或跳到[使用 worktrees 隔离子代理](#isolate-subagents-with-worktrees)以同时使用 worktrees 和子代理。18Worktrees 是运行 Claude 并行的几种方式之一。它们隔离文件编辑。[子代理](/docs/zh-CN/sub-agents)在一个会话内分割工作,[跨会话消息传递](/docs/zh-CN/cross-session-messaging)让 Claude 在您的 worktrees 中的会话之间传递发现。请参阅[并行运行代理](/docs/zh-CN/agents)来比较这些方法,或跳到[使用 worktrees 隔离子代理](#isolate-subagents-with-worktrees)以同时使用 worktrees 和子代理。


270 273 

271无论您是使用 `--worktree` 还是使用 `git worktree add` 创建 worktree,所有这些都适用。274无论您是使用 `--worktree` 还是使用 `git worktree add` 创建 worktree,所有这些都适用。

272 275 

273在从[桌面应用](/docs/zh-CN/desktop#work-in-parallel-with-sessions)启动的 worktree 会话中,Claude Code 从主检出的根目录而不是从 worktree 读取项目配置,例如设置、hook、skill、Agent、命令和 [`.mcp.json`](/docs/zh-CN/mcp#project-scope) 服务器。Hook 命令在该根目录中运行,`${CLAUDE_PROJECT_DIR}` 也指向该根目录。要访问 Claude 正在处理的文件,请从 hook 的 [`cwd` 输入字段](/docs/zh-CN/hooks#common-input-fields)读取 worktree 的路径。`CLAUDE.md` 文件和 `.claude/rules/` 仍从 worktree 加载。276在从[桌面应用](/docs/zh-CN/desktop#run-a-session-in-its-own-worktree)启动的 worktree 会话中,Claude Code 从主检出的根目录读取项目配置,例如设置、hook、skill、Agent、命令和 [`.mcp.json`](/docs/zh-CN/mcp#project-scope) 服务器。Hook 命令在该根目录中运行,`${CLAUDE_PROJECT_DIR}` 也指向该根目录。要访问 Claude 正在处理的文件,请从 hook 的 [`cwd` 输入字段](/docs/zh-CN/hooks#common-input-fields)读取 worktree 的路径。`CLAUDE.md` 文件和 `.claude/rules/` 仍从 worktree 加载。

274 277 

275<h2 id="manage-worktrees-manually">278<h2 id="manage-worktrees-manually">

276 手动管理 worktrees279 手动管理 worktrees


434* [跨会话消息传递](/docs/zh-CN/cross-session-messaging):让您的 worktrees 中的会话相互传递发现437* [跨会话消息传递](/docs/zh-CN/cross-session-messaging):让您的 worktrees 中的会话相互传递发现

435* [代理团队](/docs/zh-CN/agent-teams):自动协调多个 Claude 会话438* [代理团队](/docs/zh-CN/agent-teams):自动协调多个 Claude 会话

436* [管理会话](/docs/zh-CN/sessions):命名、恢复和在对话之间切换439* [管理会话](/docs/zh-CN/sessions):命名、恢复和在对话之间切换

437* [桌面并行会话](/docs/zh-CN/desktop#work-in-parallel-with-sessions):桌面应用中由 worktree 支持的会话440* [在独立的 worktree 中运行桌面会话](/docs/zh-CN/desktop#run-a-session-in-its-own-worktree):桌面应用中由 worktree 支持的会话