8 8
9Claude Code 结合了一个能够推理代码的模型和[内置工具](/docs/zh-CN/how-claude-code-works#tools),用于文件操作、搜索、执行和网络访问。内置工具涵盖了大多数编码任务。本指南涵盖扩展层:您添加的功能,用于自定义 Claude 的知识、将其连接到外部服务以及自动化工作流。9Claude Code 结合了一个能够推理代码的模型和[内置工具](/docs/zh-CN/how-claude-code-works#tools),用于文件操作、搜索、执行和网络访问。内置工具涵盖了大多数编码任务。本指南涵盖扩展层:您添加的功能,用于自定义 Claude 的知识、将其连接到外部服务以及自动化工作流。
10 10
11<Note>11> [!NOTE]
12 有关核心代理循环如何工作的信息,请参阅 [Claude Code 如何工作](/docs/zh-CN/how-claude-code-works)。12>
13</Note>13> 有关核心代理循环如何工作的信息,请参阅 [Claude Code 如何工作](/docs/zh-CN/how-claude-code-works)。
14 14
15**初次使用 Claude Code?** 从 [CLAUDE.md](/docs/zh-CN/memory) 开始了解项目约定,然后根据需要添加其他扩展[当特定触发器出现时](#build-your-setup-over-time)。15**初次使用 Claude Code?** 从 [CLAUDE.md](/docs/zh-CN/memory) 开始了解项目约定,然后根据需要添加其他扩展[当特定触发器出现时](#build-your-setup-over-time)。
16 16
17<h2 id="overview">17## 概述
18 概述
19</h2>
20 18
21扩展插入代理循环的不同部分:19扩展插入代理循环的不同部分:
22 20
33 31
34[Skills](/docs/zh-CN/skills) 是最灵活的扩展。Skill 是一个包含知识、工作流或说明的 markdown 文件。您可以使用 `/deploy` 之类的命令调用 skills,或者 Claude 可以在相关时自动加载它们。Skills 可以在您当前的对话中运行,也可以通过 subagents 在隔离的上下文中运行。32[Skills](/docs/zh-CN/skills) 是最灵活的扩展。Skill 是一个包含知识、工作流或说明的 markdown 文件。您可以使用 `/deploy` 之类的命令调用 skills,或者 Claude 可以在相关时自动加载它们。Skills 可以在您当前的对话中运行,也可以通过 subagents 在隔离的上下文中运行。
35 33
36<h2 id="match-features-to-your-goal">34## 将功能与您的目标相匹配
37 将功能与您的目标相匹配
38</h2>
39 35
40功能范围从 Claude 每个会话都能看到的始终开启的上下文,到您或 Claude 可以调用的按需功能,再到在特定事件上运行的后台自动化。下表显示了可用的功能以及何时使用每个功能。36功能范围从 Claude 每个会话都能看到的始终开启的上下文,到您或 Claude 可以调用的按需功能,再到在特定事件上运行的后台自动化。下表显示了可用的功能以及何时使用每个功能。
41 37
54 50
55**[Plugins](/docs/zh-CN/plugins/overview)** 是打包层。Plugin 将 skills、hooks、subagents 和 MCP servers 捆绑到单个可安装单元中。Plugin skills 是命名空间的(如 `/my-plugin:review`),因此多个 plugins 可以共存。当您想在多个存储库中重用相同的设置或通过 **[marketplace](/docs/zh-CN/plugins/overview)** 分发给他人时,使用 plugins。51**[Plugins](/docs/zh-CN/plugins/overview)** 是打包层。Plugin 将 skills、hooks、subagents 和 MCP servers 捆绑到单个可安装单元中。Plugin skills 是命名空间的(如 `/my-plugin:review`),因此多个 plugins 可以共存。当您想在多个存储库中重用相同的设置或通过 **[marketplace](/docs/zh-CN/plugins/overview)** 分发给他人时,使用 plugins。
56 52
57<h3 id="build-your-setup-over-time">53### 随时间推移构建您的设置
58 随时间推移构建您的设置
59</h3>
60 54
61您不需要提前配置所有内容。每个功能都有一个可识别的触发器,大多数团队大致按以下顺序添加它们:55您不需要提前配置所有内容。每个功能都有一个可识别的触发器,大多数团队大致按以下顺序添加它们:
62 56
74 68
75相同的触发器告诉您何时更新您已有的内容。重复的错误或反复出现的审查评论是 CLAUDE.md 编辑,而不是聊天中的一次性更正。您一直手动调整的工作流是需要另一次修订的 skill。69相同的触发器告诉您何时更新您已有的内容。重复的错误或反复出现的审查评论是 CLAUDE.md 编辑,而不是聊天中的一次性更正。您一直手动调整的工作流是需要另一次修订的 skill。
76 70
77<h3 id="compare-similar-features">71### 比较相似的功能
78 比较相似的功能
79</h3>
80 72
81某些功能可能看起来相似。有关选择它们之间的更深入演练,请参阅博客上的 [Steering Claude Code: when to use CLAUDE.md, skills, hooks, and subagents](https://claude.com/blog/steering-claude-code-skills-hooks-rules-subagents-and-more)。以下是如何区分它们。73某些功能可能看起来相似。有关选择它们之间的更深入演练,请参阅博客上的 [Steering Claude Code: when to use CLAUDE.md, skills, hooks, and subagents](https://claude.com/blog/steering-claude-code-skills-hooks-rules-subagents-and-more)。以下是如何区分它们。
82 74
83<Tabs>75**Skill vs Subagent**
84 <Tab title="Skill vs Subagent">
85 Skills 和 subagents 解决不同的问题:
86 76
87 * **Skills** 是可重用的内容,您可以将其加载到任何上下文中77Skills 和 subagents 解决不同的问题:
88 * **Subagents** 是与您的主对话分开运行的隔离工作者
89 78
90 | 方面 | Skill | Subagent |79* **Skills** 是可重用的内容,您可以将其加载到任何上下文中
91 | - | - | - |80* **Subagents** 是与您的主对话分开运行的隔离工作者
92 | **它是什么** | 可重用的说明、知识或工作流 | 具有自己上下文的隔离工作者 |
93 | **关键优势** | 在上下文之间共享内容 | 上下文隔离。工作单独进行,仅返回摘要 |
94 | **[上下文窗口](/docs/zh-CN/context-window)影响** | 添加到您的主窗口 | 使用具有自己输入和输出令牌的单独窗口 |
95 | **最适合** | 参考材料、可调用的工作流 | 读取许多文件的任务、并行工作、专门的工作者 |
96 81
97 **Skills 可以是参考或操作。** 参考 skills 提供 Claude 在整个会话中使用的知识(如您的 API 风格指南)。操作 skills 告诉 Claude 执行特定操作(如运行您的部署工作流的 `/deploy`)。82| 方面 | Skill | Subagent |
83| - | - | - |
84| **它是什么** | 可重用的说明、知识或工作流 | 具有自己上下文的隔离工作者 |
85| **关键优势** | 在上下文之间共享内容 | 上下文隔离。工作单独进行,仅返回摘要 |
86| **[上下文窗口](/docs/zh-CN/context-window)影响** | 添加到您的主窗口 | 使用具有自己输入和输出令牌的单独窗口 |
87| **最适合** | 参考材料、可调用的工作流 | 读取许多文件的任务、并行工作、专门的工作者 |
88
89**Skills 可以是参考或操作。** 参考 skills 提供 Claude 在整个会话中使用的知识(如您的 API 风格指南)。操作 skills 告诉 Claude 执行特定操作(如运行您的部署工作流的 `/deploy`)。
90
91**当您需要上下文隔离或上下文窗口变满时,使用 subagent**。Subagent 可能读取数十个文件或运行广泛的搜索,但您的主对话仅接收摘要。由于 subagent 工作不消耗您的主上下文,当您不需要中间工作保持可见时,这也很有用。自定义 subagents 可以有自己的说明并可以预加载 skills。
92
93**它们可以结合。** Subagent 可以预加载特定的 skills(`skills:` 字段)。Skill 可以使用 `context: fork` 在隔离的上下文中运行。有关详细信息,请参阅 [Skills](/docs/zh-CN/skills)。
94
95**CLAUDE.md vs Skill**
96
97两者都存储说明,但它们的加载方式和用途不同。
98
99| 方面 | CLAUDE.md | Skill |
100| - | - | - |
101| **加载** | 每个会话,自动 | 按需 |
102| **可以包含文件** | 是,使用 `@path` 导入 | 是,使用 `@path` 导入 |
103| **可以触发工作流** | 否 | 是,使用 `/<name>` |
104| **最适合** | "始终执行 X" 规则 | 参考材料、可调用的工作流 |
105
106**如果 Claude 应该始终知道它,请将其放在 CLAUDE.md 中**:编码约定、构建命令、项目结构、"永远不要执行 X" 规则。
98 107
99 **当您需要上下文隔离或上下文窗口变满时,使用 subagent**。Subagent 可能读取数十个文件或运行广泛的搜索,但您的主对话仅接收摘要。由于 subagent 工作不消耗您的主上下文,当您不需要中间工作保持可见时,这也很有用。自定义 subagents 可以有自己的说明并可以预加载 skills。108**如果它是 Claude 有时需要的参考材料(API 文档、风格指南)或您使用 `/<name>` 触发的工作流(部署、审查、发布),请将其放在 skill 中**。
100 109
101 **它们可以结合。** Subagent 可以预加载特定的 skills(`skills:` 字段)。Skill 可以使用 `context: fork` 在隔离的上下文中运行。有关详细信息,请参阅 [Skills](/docs/zh-CN/skills)。110**经验法则:** 保持 CLAUDE.md 在 200 行以下。如果它在增长,将参考内容移到 skills 或拆分为 [`.claude/rules/`](/docs/zh-CN/memory#organize-rules-with-claude%2Frules%2F) 文件。
102 </Tab>
103 111
104 <Tab title="CLAUDE.md vs Skill">112**CLAUDE.md vs Output style**
105 两者都存储说明,但它们的加载方式和用途不同。
106 113
107 | 方面 | CLAUDE.md | Skill |114两者都给 Claude 常设说明。CLAUDE.md 包含 Claude 应该知道的内容,output style 设置 Claude 如何响应。
108 | - | - | - |
109 | **加载** | 每个会话,自动 | 按需 |
110 | **可以包含文件** | 是,使用 `@path` 导入 | 是,使用 `@path` 导入 |
111 | **可以触发工作流** | 否 | 是,使用 `/<name>` |
112 | **最适合** | "始终执行 X" 规则 | 参考材料、可调用的工作流 |
113 115
114 **如果 Claude 应该始终知道它,请将其放在 CLAUDE.md 中**:编码约定、构建命令、项目结构、"永远不要执行 X" 规则。116| 方面 | CLAUDE.md | Output style |
117| - | - | - |
118| **包含** | 关于您的项目的事实和规则 | 角色、语气和响应格式 |
119| **切换** | 始终加载 | 一次一个活跃;[随时切换风格](/docs/zh-CN/output-styles#change-your-output-style) |
120| **最适合** | 构建命令、约定、"永远不要执行 X" 规则 | 更短的响应、代码旁边的解释、非工程角色 |
115 121
116 **如果它是 Claude 有时需要的参考材料(API 文档、风格指南)或您使用 `/<name>` 触发的工作流(部署、审查、发布),请将其放在 skill 中**。122**如果它对项目为真,无论您使用什么风格,请将其放在 CLAUDE.md 中**:编码约定、构建命令、项目结构。
117 123
118 **经验法则:** 保持 CLAUDE.md 在 200 行以下。如果它在增长,将参考内容移到 skills 或拆分为 [`.claude/rules/`](/docs/zh-CN/memory#organize-rules-with-claude%2Frules%2F) 文件。124**如果它关于响应本身,您可能想再次关闭它,请使用 output style**:长度、格式、Claude 解释多少,或不同的角色,如写作助手。Claude Code 包括 [内置风格](/docs/zh-CN/output-styles#built-in-output-styles),您可以编写自己的。
119 </Tab>
120 125
121 <Tab title="CLAUDE.md vs Output style">126**它们结合。** CLAUDE.md 保持加载,无论您选择什么风格。Claude 遵循两者作为说明,所以都不是强制执行的。对于必须每次都发生的任何事情,使用 [hook](/docs/zh-CN/hooks-guide)。
122 两者都给 Claude 常设说明。CLAUDE.md 包含 Claude 应该知道的内容,output style 设置 Claude 如何响应。
123 127
124 | 方面 | CLAUDE.md | Output style |128**CLAUDE.md vs Rules vs Skills**
125 | - | - | - |
126 | **包含** | 关于您的项目的事实和规则 | 角色、语气和响应格式 |
127 | **切换** | 始终加载 | 一次一个活跃;[随时切换风格](/docs/zh-CN/output-styles#change-your-output-style) |
128 | **最适合** | 构建命令、约定、"永远不要执行 X" 规则 | 更短的响应、代码旁边的解释、非工程角色 |
129 129
130 **如果它对项目为真,无论您使用什么风格,请将其放在 CLAUDE.md 中**:编码约定、构建命令、项目结构。130所有三者都存储说明,但它们的加载方式不同:
131 131
132 **如果它关于响应本身,您可能想再次关闭它,请使用 output style**:长度、格式、Claude 解释多少,或不同的角色,如写作助手。Claude Code 包括 [内置风格](/docs/zh-CN/output-styles#built-in-output-styles),您可以编写自己的。132| 方面 | CLAUDE.md | `.claude/rules/` | Skill |
133| - | - | - | - |
134| **加载** | 每个会话 | 每个会话,或当打开匹配的文件时 | 按需,当调用或相关时 |
135| **范围** | 整个项目 | 可以限定到文件路径 | 特定于任务 |
136| **最适合** | 核心约定和构建命令 | 特定于语言或目录的指南 | 参考材料、可重复的工作流 |
133 137
134 **它们结合。** CLAUDE.md 保持加载,无论您选择什么风格。Claude 遵循两者作为说明,所以都不是强制执行的。对于必须每次都发生的任何事情,使用 [hook](/docs/zh-CN/hooks-guide)。138**对于每个会话需要的说明,使用 CLAUDE.md**:构建命令、测试约定、项目架构。
135 </Tab>
136 139
137 <Tab title="CLAUDE.md vs Rules vs Skills">140**使用 rules 来保持 CLAUDE.md 专注。** 带有 [`paths` frontmatter](/docs/zh-CN/memory#path-specific-rules) 的 rules 仅在 Claude 处理匹配文件时加载,节省上下文。
138 所有三者都存储说明,但它们的加载方式不同:
139 141
140 | 方面 | CLAUDE.md | `.claude/rules/` | Skill |142**对于 Claude 有时只需要的内容,使用 skills**,如 API 文档或您使用 `/<name>` 触发的部署清单。
141 | - | - | - | - |
142 | **加载** | 每个会话 | 每个会话,或当打开匹配的文件时 | 按需,当调用或相关时 |
143 | **范围** | 整个项目 | 可以限定到文件路径 | 特定于任务 |
144 | **最适合** | 核心约定和构建命令 | 特定于语言或目录的指南 | 参考材料、可重复的工作流 |
145 143
146 **对于每个会话需要的说明,使用 CLAUDE.md**:构建命令、测试约定、项目架构。144**Subagent vs Dynamic workflow**
147 145
148 **使用 rules 来保持 CLAUDE.md 专注。** 带有 [`paths` frontmatter](/docs/zh-CN/memory#path-specific-rules) 的 rules 仅在 Claude 处理匹配文件时加载,节省上下文。146两者都在您的主对话之外进行工作。使用 subagents,Claude 逐轮决定接下来运行什么。在工作流中,脚本决定:
149 147
150 **对于 Claude 有时只需要的内容,使用 skills**,如 API 文档或您使用 `/<name>` 触发的部署清单。148* **Subagents** 是 Claude 生成的工作者,每个都向生成它的对话返回摘要
151 </Tab>149* **[Dynamic workflows](/docs/zh-CN/workflows)** 是 Claude 编写的脚本,在后台运行许多 subagents 并返回一个结果
152 150
153 <Tab title="Subagent vs Dynamic workflow">151**当您需要一个快速、专注的工作者时,使用 subagent**:研究一个问题、验证一个声明、审查一个文件。Subagent 完成工作并返回摘要,所以您的主对话保持清洁。Claude 在生成时命名的 subagents 也可以 [相互发送消息](/docs/zh-CN/sub-agents#what-loads-at-startup)。
154 两者都在您的主对话之外进行工作。使用 subagents,Claude 逐轮决定接下来运行什么。在工作流中,脚本决定:
155 152
156 * **Subagents** 是 Claude 生成的工作者,每个都向生成它的对话返回摘要153当一个工作[超出少数 subagents 的范围](/docs/zh-CN/workflows#when-to-use-a-workflow)时,或当您想在看到发现之前交叉检查它们时,**使用 dynamic workflow**,例如代码库范围的审计、大型迁移或从多个角度起草的计划。要启动一个,[在您的提示中要求一个工作流](/docs/zh-CN/workflows#ask-for-a-workflow-in-your-prompt)。
157 * **[Dynamic workflows](/docs/zh-CN/workflows)** 是 Claude 编写的脚本,在后台运行许多 subagents 并返回一个结果
158 154
159 **当您需要一个快速、专注的工作者时,使用 subagent**:研究一个问题、验证一个声明、审查一个文件。Subagent 完成工作并返回摘要,所以您的主对话保持清洁。Claude 在生成时命名的 subagents 也可以 [相互发送消息](/docs/zh-CN/sub-agents#what-loads-at-startup)。155**要将一个发现从您的一个会话传递到另一个会话**,要求第一个会话的 Claude 发送它。Claude 使用 [cross-session messaging](/docs/zh-CN/cross-session-messaging) 传递它。[并行运行代理](/docs/zh-CN/agents) 比较了运行多个 Claude 的其他方式,包括您交接并稍后检查的会话。
160 156
161 当一个工作[超出少数 subagents 的范围](/docs/zh-CN/workflows#when-to-use-a-workflow)时,或当您想在看到发现之前交叉检查它们时,**使用 dynamic workflow**,例如代码库范围的审计、大型迁移或从多个角度起草的计划。要启动一个,[在您的提示中要求一个工作流](/docs/zh-CN/workflows#ask-for-a-workflow-in-your-prompt)。157**MCP vs Skill**
162 158
163 **要将一个发现从您的一个会话传递到另一个会话**,要求第一个会话的 Claude 发送它。Claude 使用 [cross-session messaging](/docs/zh-CN/cross-session-messaging) 传递它。[并行运行代理](/docs/zh-CN/agents) 比较了运行多个 Claude 的其他方式,包括您交接并稍后检查的会话。159MCP 将 Claude 连接到外部服务。Skills 扩展 Claude 的知识,包括如何有效地使用这些服务。
164 </Tab>
165 160
166 <Tab title="MCP vs Skill">161| 方面 | MCP | Skill |
167 MCP 将 Claude 连接到外部服务。Skills 扩展 Claude 的知识,包括如何有效地使用这些服务。162| - | - | - |
163| **它是什么** | 连接到外部服务的协议 | 知识、工作流和参考材料 |
164| **提供** | 工具和数据访问 | 知识、工作流、参考材料 |
165| **示例** | Slack 集成、数据库查询、浏览器控制 | 代码审查清单、部署工作流、API 风格指南 |
168 166
169 | 方面 | MCP | Skill |167这些解决不同的问题,可以很好地协同工作:
170 | - | - | - |
171 | **它是什么** | 连接到外部服务的协议 | 知识、工作流和参考材料 |
172 | **提供** | 工具和数据访问 | 知识、工作流、参考材料 |
173 | **示例** | Slack 集成、数据库查询、浏览器控制 | 代码审查清单、部署工作流、API 风格指南 |
174 168
175 这些解决不同的问题,可以很好地协同工作:169**MCP** 给予 Claude 与外部系统交互的目的构建的工具,连接和身份验证由服务器处理。
176 170
177 **MCP** 给予 Claude 与外部系统交互的目的构建的工具,连接和身份验证由服务器处理。171**Skills** 给予 Claude 关于如何有效使用这些工具的知识,以及您可以使用 `/<name>` 触发的工作流。Skill 可能包括您团队的数据库架构和查询模式,或带有您团队消息格式规则的 `/post-to-slack` 工作流。
178 172
179 **Skills** 给予 Claude 关于如何有效使用这些工具的知识,以及您可以使用 `/<name>` 触发的工作流。Skill 可能包括您团队的数据库架构和查询模式,或带有您团队消息格式规则的 `/post-to-slack` 工作流。173**Hook vs Skill**
180 </Tab>
181 174
182 <Tab title="Hook vs Skill">175Claude Code 在生命周期事件上运行 hook;它将 skill 加载到上下文中供 Claude 应用。
183 Claude Code 在生命周期事件上运行 hook;它将 skill 加载到上下文中供 Claude 应用。
184 176
185 | 方面 | Hook | Skill |177| 方面 | Hook | Skill |
186 | - | - | - |178| - | - | - |
187 | **运行** | Shell 命令、HTTP 请求、MCP 工具调用、LLM 提示或 subagent | Claude 读取和遵循的说明 |179| **运行** | Shell 命令、HTTP 请求、MCP 工具调用、LLM 提示或 subagent | Claude 读取和遵循的说明 |
188 | **由以下触发** | [生命周期事件](/docs/zh-CN/hooks#hook-events),如 `PostToolUse` 或 `SessionStart` | 您输入 `/<name>`,或 Claude 将描述与您的任务相匹配 |180| **由以下触发** | [生命周期事件](/docs/zh-CN/hooks#hook-events),如 `PostToolUse` 或 `SessionStart` | 您输入 `/<name>`,或 Claude 将描述与您的任务相匹配 |
189 | **确定性** | 在其事件上触发,无需 Claude 决定 | Claude 解释说明;结果可能会有所不同 |181| **确定性** | 在其事件上触发,无需 Claude 决定 | Claude 解释说明;结果可能会有所不同 |
190 | **上下文成本** | 零,除非 hook 返回输出 | 描述在每个会话加载;使用时加载完整内容 |182| **上下文成本** | 零,除非 hook 返回输出 | 描述在每个会话加载;使用时加载完整内容 |
191 | **最适合** | 每次都以相同方式运行且不需要 Claude 思考的操作 | 需要推理的工作流、参考材料、多步骤任务 |183| **最适合** | 编辑后运行 linting、阻止不安全的命令、记录日志、发送通知 | 需要推理的工作流、参考材料、多步骤任务 |
192 184
193 **当操作必须每次都以相同方式发生且不需要 Claude 思考时,使用 hook**。例如:保存时格式化、拒绝 `rm -rf /`、在会话结束时发布 Slack 消息。185**当操作必须每次都以相同方式发生且不需要 Claude 思考时,使用 hook**。例如:保存时格式化、拒绝 `rm -rf /`、在会话结束时发布 Slack 消息。
194 186
195 **当 Claude 应该决定如何应用步骤或内容是知识而不是脚本时,使用 skill**。例如:`/release` 清单、您的 API 风格指南、调试剧本。187**当 Claude 应该决定如何应用步骤或内容是知识而不是脚本时,使用 skill**。例如:`/release` 清单、您的 API 风格指南、调试剧本。
196 188
197 **将护栏放在 hooks 中。** CLAUDE.md 或 skill 中的"永远不要编辑 `.env`"之类的说明是请求,而不是保证。阻止编辑的 `PreToolUse` hook 是强制执行。如果规则必须每次都成立,将其作为 hook 而不是提示说明。189**将护栏放在 hooks 中。** CLAUDE.md 或 skill 中的"永远不要编辑 `.env`"之类的说明是请求,而不是保证。阻止编辑的 `PreToolUse` hook 是强制执行。如果规则必须每次都成立,将其作为 hook 而不是提示说明。
198 190
199 **Hook 输出进入上下文。** 运行您的 linter 的 `PostToolUse` hook 将结果作为 Claude 读取的文本反馈;`/fix-lint` skill 告诉 Claude 如何解决它们。191**Hook 输出进入上下文。** 运行您的 linter 的 `PostToolUse` hook 将结果作为 Claude 读取的文本反馈;`/fix-lint` skill 告诉 Claude 如何解决它们。
200 </Tab>
201</Tabs>
202 192
203<h3 id="understand-how-features-layer">193### 了解功能如何分层
204 了解功能如何分层
205</h3>
206 194
207功能可以在多个级别定义:用户范围、每个项目、通过 plugins 或通过托管策略。您还可以在子目录中嵌套 CLAUDE.md 文件或在 monorepo 的特定包中放置 skills。当相同的功能存在于多个级别时,以下是它们的分层方式:195功能可以在多个级别定义:用户范围、每个项目、通过 plugins 或通过托管策略。您还可以在子目录中嵌套 CLAUDE.md 文件或在 monorepo 的特定包中放置 skills。当相同的功能存在于多个级别时,以下是它们的分层方式:
208 196
211* **MCP 服务器** 按名称覆盖:本地 > 项目 > 用户。有关详细信息,请参阅 [MCP 范围](/docs/zh-CN/mcp#scope-hierarchy-and-precedence)。199* **MCP 服务器** 按名称覆盖:本地 > 项目 > 用户。有关详细信息,请参阅 [MCP 范围](/docs/zh-CN/mcp#scope-hierarchy-and-precedence)。
212* **Hooks** 合并:所有注册的 hooks 为其匹配的事件触发,无论来源如何。有关详细信息,请参阅 [hooks](/docs/zh-CN/hooks)。200* **Hooks** 合并:所有注册的 hooks 为其匹配的事件触发,无论来源如何。有关详细信息,请参阅 [hooks](/docs/zh-CN/hooks)。
213 201
214<h3 id="combine-features">202### 组合功能
215 组合功能
216</h3>
217 203
218每个扩展解决不同的问题:CLAUDE.md 处理始终开启的上下文,skills 处理按需知识和工作流,MCP 处理外部连接,subagents 处理隔离,hooks 处理自动化。真实的设置根据您的工作流组合它们。204每个扩展解决不同的问题:CLAUDE.md 处理始终开启的上下文,skills 处理按需知识和工作流,MCP 处理外部连接,subagents 处理隔离,hooks 处理自动化。真实的设置根据您的工作流组合它们。
219 205
226| **CLAUDE.md + Skills** | CLAUDE.md 保存始终开启的规则;skills 保存按需加载的参考材料 | CLAUDE.md 说"遵循我们的 API 约定",skill 包含完整的 API 风格指南 |212| **CLAUDE.md + Skills** | CLAUDE.md 保存始终开启的规则;skills 保存按需加载的参考材料 | CLAUDE.md 说"遵循我们的 API 约定",skill 包含完整的 API 风格指南 |
227| **Hook + MCP** | Hook 通过 MCP 触发外部操作 | 编辑后 hook 在 Claude 修改关键文件时发送 Slack 通知 |213| **Hook + MCP** | Hook 通过 MCP 触发外部操作 | 编辑后 hook 在 Claude 修改关键文件时发送 Slack 通知 |
228 214
229<h2 id="understand-context-costs">215## 了解上下文成本
230 了解上下文成本
231</h2>
232 216
233您添加的每个功能都会消耗 Claude 的一些上下文。太多可能会填满您的上下文窗口,但它也可能增加噪音,使 Claude 效率降低;skills 可能无法正确触发,或 Claude 可能会失去对您的约定的跟踪。了解这些权衡有助于您构建有效的设置。有关这些功能如何在运行会话中组合的交互式视图,请参阅 [探索上下文窗口](/docs/zh-CN/context-window)。217您添加的每个功能都会消耗 Claude 的一些上下文。太多可能会填满您的上下文窗口,但它也可能增加噪音,使 Claude 效率降低;skills 可能无法正确触发,或 Claude 可能会失去对您的约定的跟踪。了解这些权衡有助于您构建有效的设置。有关这些功能如何在运行会话中组合的交互式视图,请参阅 [探索上下文窗口](/docs/zh-CN/context-window)。
234 218
235<h3 id="context-cost-by-feature">219### 按功能的上下文成本
236 按功能的上下文成本
237</h3>
238 220
239每个功能都有不同的加载策略和上下文成本:221每个功能都有不同的加载策略和上下文成本:
240 222
250 232
251\*在 skill 的 frontmatter 中设置 [`disable-model-invocation: true`](/docs/zh-CN/skills#control-who-invokes-a-skill),可使其描述不进入 Claude 的上下文。对于您未编写的 skill,在设置中设置 [`skillOverrides`](/docs/zh-CN/skills#override-skill-visibility-from-settings) 以在不编辑其文件的情况下执行相同操作。233\*在 skill 的 frontmatter 中设置 [`disable-model-invocation: true`](/docs/zh-CN/skills#control-who-invokes-a-skill),可使其描述不进入 Claude 的上下文。对于您未编写的 skill,在设置中设置 [`skillOverrides`](/docs/zh-CN/skills#override-skill-visibility-from-settings) 以在不编辑其文件的情况下执行相同操作。
252 234
253<h3 id="understand-how-features-load">235### 了解功能如何加载
254 了解功能如何加载
255</h3>
256 236
257每个功能在会话的不同点加载。下面的选项卡解释了每个功能何时加载以及什么进入上下文。237每个功能在会话的不同点加载。下面的选项卡解释了每个功能何时加载以及什么进入上下文。
258 238
259<img src="https://mintcdn.com/claude-code/ikqp3_70mqIahteV/images/context-loading.svg?fit=max&auto=format&n=ikqp3_70mqIahteV&q=85&s=aab139e750494a237ae2e0c8f9139b0a" className="dark:hidden" alt="上下文加载:CLAUDE.md 在会话开始时加载并保留在每个请求中。MCP 工具名称在启动时加载,完整架构延迟到使用。Skills 在启动时加载描述,在调用时加载完整内容。Subagents 获得隔离的上下文。Hooks 外部运行。" width="720" height="382" data-path="images/context-loading.svg" />239
240
241**CLAUDE.md**
242
243**何时:** 会话开始
244
245**加载内容:** 所有 CLAUDE.md 文件的完整内容(托管、用户和项目级别)。
246
247**继承:** Claude 从您的工作目录读取 CLAUDE.md 文件直到根目录,并在访问这些文件时发现子目录中的嵌套文件。有关详细信息,请参阅 [CLAUDE.md 文件如何加载](/docs/zh-CN/memory#how-claude-md-files-load)。
248
249> [!TIP]
250>
251> 保持 CLAUDE.md 在 200 行以下。将参考材料移到 skills,这些 skills 按需加载。要获取 [已检入 CLAUDE.md 的修剪建议](/docs/zh-CN/memory#my-claude-md-is-too-large),请运行 `/doctor`。
260 252
261<img src="https://mintcdn.com/claude-code/_xqph1dUOslCOwsj/images/context-loading-dark.svg?fit=max&auto=format&n=_xqph1dUOslCOwsj&q=85&s=b274089ef9612d9c760bca9838557626" className="hidden dark:block" alt="上下文加载:CLAUDE.md 在会话开始时加载并保留在每个请求中。MCP 工具名称在启动时加载,完整架构延迟到使用。Skills 在启动时加载描述,在调用时加载完整内容。Subagents 获得隔离的上下文。Hooks 外部运行。" width="720" height="382" data-path="images/context-loading-dark.svg" />253**Skills**
262 254
263<Tabs>255Skills 是 Claude 工具包中的额外功能。它们可以是参考材料(如 API 风格指南)或可调用的工作流,您可以使用 `/<name>` 触发(如 `/deploy`)。Claude Code 包括 [捆绑的 skills](/docs/zh-CN/commands),如 `/code-review`、`/batch` 和 `/debug`,可以开箱即用。您也可以创建自己的。
264 <Tab title="CLAUDE.md">
265 **何时:** 会话开始
266 256
267 **加载内容:** 所有 CLAUDE.md 文件的完整内容(托管、用户和项目级别)。257**何时:** 取决于 skill 的配置。默认情况下,描述在会话开始时加载,完整内容在使用时加载。对于仅用户 skills(`disable-model-invocation: true`),在您调用它们之前不加载任何内容。
268 258
269 **继承:** Claude 从您的工作目录读取 CLAUDE.md 文件直到根目录,并在访问这些文件时发现子目录中的嵌套文件。有关详细信息,请参阅 [CLAUDE.md 文件如何加载](/docs/zh-CN/memory#how-claude-md-files-load)。259**加载内容:** 对于模型可调用的 skills,Claude 在每个请求中看到名称和描述。当您使用 `/<name>` 调用 skill 或 Claude 自动加载它时,完整内容加载到您的对话中。
270 260
271 <Tip>保持 CLAUDE.md 在 200 行以下。将参考材料移到 skills,这些 skills 按需加载。要获取 [已检入 CLAUDE.md 的修剪建议](/docs/zh-CN/memory#my-claude-md-is-too-large),请运行 `/doctor`。</Tip>261**Claude 如何选择 skill:** Claude 将您的任务与 skill 描述相匹配,以决定哪些相关。如果描述模糊或重叠,Claude 可能加载错误的 skill 或错过会有帮助的 skill。要告诉 Claude 使用特定的 skill,请使用 `/<name>` 调用它。
272 </Tab>
273 262
274 <Tab title="Skills">263**上下文成本:** 低,直到使用。仅用户 skills 在调用前成本为零。
275 Skills 是 Claude 工具包中的额外功能。它们可以是参考材料(如 API 风格指南)或可调用的工作流,您可以使用 `/<name>` 触发(如 `/deploy`)。Claude Code 包括 [捆绑的 skills](/docs/zh-CN/commands),如 `/code-review`、`/batch` 和 `/debug`,可以开箱即用。您也可以创建自己的。
276 264
277 **何时:** 取决于 skill 的配置。默认情况下,描述在会话开始时加载,完整内容在使用时加载。对于仅用户 skills(`disable-model-invocation: true`),在您调用它们之前不加载任何内容。265**在 subagents 中:** Skills 在 subagents 中的工作方式不同。不是按需加载,而是在 subagent 的 `skills` 字段中列出的 skills 在启动时完全预加载到其上下文中。Subagents 仍然可以通过 Skill 工具发现和调用未列出的项目、用户和插件 skills。
278 266
279 **加载内容:** 对于模型可调用的 skills,Claude 在每个请求中看到名称和描述。当您使用 `/<name>` 调用 skill 或 Claude 自动加载它时,完整内容加载到您的对话中。267> [!TIP]
268>
269> 对于有副作用的 skill,使用 `disable-model-invocation: true`。这节省上下文并确保它们仅在您指名时运行。
280 270
281 **Claude 如何选择 skill:** Claude 将您的任务与 skill 描述相匹配,以决定哪些相关。如果描述模糊或重叠,Claude 可能加载错误的 skill 或错过会有帮助的 skill。要告诉 Claude 使用特定的 skill,请使用 `/<name>` 调用它。271**MCP 服务器**
282 272
283 **上下文成本:** 低,直到使用。仅用户 skills 在调用前成本为零。273**何时:** 会话开始。
284 274
285 **在 subagents 中:** Skills 在 subagents 中的工作方式不同。不是按需加载,而是在 subagent 的 `skills` 字段中列出的 skills 在启动时完全预加载到其上下文中。Subagents 仍然可以通过 Skill 工具发现和调用未列出的项目、用户和插件 skills。275**加载内容:** 来自连接的服务器的工具名称和服务器说明。完整的 JSON 架构保持延迟,直到 Claude 需要特定工具。
286 276
287 <Tip>对于有副作用的 skill,使用 `disable-model-invocation: true`。这节省上下文并确保它们仅在您指名时运行。</Tip>277**上下文成本:** [工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search)默认启用,因此空闲 MCP 工具消耗最少的上下文。
288 </Tab>
289 278
290 <Tab title="MCP 服务器">279> [!TIP]
291 **何时:** 会话开始。280>
281> 运行 `/mcp` 查看每个服务器的连接状态。运行 `/context all` 查看每个加载的 MCP 工具使用多少令牌。Claude Code [自动重新连接到远程服务器](/docs/zh-CN/mcp#automatic-reconnection)(如果它们断开连接),您可以断开您未主动使用的服务器。
292 282
293 **加载内容:** 来自连接的服务器的工具名称和服务器说明。完整的 JSON 架构保持延迟,直到 Claude 需要特定工具。283**Code intelligence**
294 284
295 **上下文成本:** [工具搜索](/docs/zh-CN/mcp#scale-with-mcp-tool-search)默认启用,因此空闲 MCP 工具消耗最少的上下文。285**何时:** 文件编辑后,以及当 Claude 导航代码时按需。
296 286
297 <Tip>运行 `/mcp` 查看每个服务器的连接状态。运行 `/context all` 查看每个加载的 MCP 工具使用多少令牌。Claude Code [自动重新连接到远程服务器](/docs/zh-CN/mcp#automatic-reconnection)(如果它们断开连接),您可以断开您未主动使用的服务器。</Tip>287**加载内容:** 每次文件编辑后的类型错误和警告。当 Claude 查找符号时的定义、引用和类型信息。
298 </Tab>
299 288
300 <Tab title="Code intelligence">289**上下文成本:** 低。符号查找通常替代广泛的文件读取,因此净上下文使用可能会下降。
301 **何时:** 文件编辑后,以及当 Claude 导航代码时按需。
302 290
303 **加载内容:** 每次文件编辑后的类型错误和警告。当 Claude 查找符号时的定义、引用和类型信息。291> [!TIP]
292>
293> LSP 工具在您为您的语言安装 [code intelligence 插件](/docs/zh-CN/plugins/code-intelligence) 之前处于非活动状态。
304 294
305 **上下文成本:** 低。符号查找通常替代广泛的文件读取,因此净上下文使用可能会下降。295**Subagents**
306 296
307 <Tip>LSP 工具在您为您的语言安装 [code intelligence 插件](/docs/zh-CN/plugins/code-intelligence) 之前处于非活动状态。</Tip>297**何时:** 按需,当您或 Claude 为任务生成一个时。
308 </Tab>
309 298
310 <Tab title="Subagents">299**加载内容:** 新鲜、隔离的上下文,包含:
311 **何时:** 按需,当您或 Claude 为任务生成一个时。
312 300
313 **加载内容:** 新鲜、隔离的上下文,包含:301* Agent 自己的系统提示词,而不是 Claude Code 系统提示词
302* Agent 的 `skills:` 字段中列出的 skill 的完整内容
303* CLAUDE.md 和 git 状态。内置的 Explore 和 Plan Agent [启动时两者都不包含](/docs/zh-CN/sub-agents#what-loads-at-startup),而定义中设置了 [`omitClaudeMd`](/docs/zh-CN/sub-agents#supported-frontmatter-fields) 的 Agent 启动时不包含用户、项目和本地 CLAUDE.md 文件。
304* 主 Agent 在提示词中传递的任何上下文
314 305
315 * Agent 自己的系统提示词,而不是 Claude Code 系统提示词306对于 [fork](/docs/zh-CN/sub-agents#fork-the-current-conversation),Claude Code 加载父对话到目前为止、系统提示和工具。
316 * Agent 的 `skills:` 字段中列出的 skill 的完整内容
317 * CLAUDE.md 和 git 状态。内置的 Explore 和 Plan Agent [启动时两者都不包含](/docs/zh-CN/sub-agents#what-loads-at-startup),而定义中设置了 [`omitClaudeMd`](/docs/zh-CN/sub-agents#supported-frontmatter-fields) 的 Agent 启动时不包含用户、项目和本地 CLAUDE.md 文件。
318 * 主 Agent 在提示词中传递的任何上下文
319 307
320 对于 [fork](/docs/zh-CN/sub-agents#fork-the-current-conversation),Claude Code 加载父对话到目前为止、系统提示和工具。308**上下文成本:** 与主会话隔离。
321 309
322 **上下文成本:** 与主会话隔离。310> [!TIP]
311>
312> 对于不需要您完整对话上下文的工作,使用 subagents。它们的隔离防止膨胀您的主会话。
323 313
324 <Tip>对于不需要您完整对话上下文的工作,使用 subagents。它们的隔离防止膨胀您的主会话。</Tip>314**Hooks**
325 </Tab>
326 315
327 <Tab title="Hooks">316**何时:** 触发时。Claude Code 在特定的生命周期事件上运行 hooks,如工具执行、会话边界、提示提交、权限请求和压缩。有关完整列表,请参阅 [Hooks](/docs/zh-CN/hooks)。
328 **何时:** 触发时。Claude Code 在特定的生命周期事件上运行 hooks,如工具执行、会话边界、提示提交、权限请求和压缩。有关完整列表,请参阅 [Hooks](/docs/zh-CN/hooks)。
329 317
330 **加载内容:** 默认情况下无。Hooks 在主对话外执行。318**加载内容:** 默认情况下无。Hooks 在主对话外执行。
331 319
332 **上下文成本:** 零,除非 hook 返回作为消息添加到您的对话中的输出。320**上下文成本:** 零,除非 hook 返回作为消息添加到您的对话中的输出。
333 321
334 <Tip>Hooks 非常适合不需要影响 Claude 上下文的副作用(linting、logging)。</Tip>322> [!TIP]
335 </Tab>323>
336</Tabs>324> Hooks 非常适合不需要影响 Claude 上下文的副作用(linting、logging)。
337 325
338<h2 id="learn-more">326## 了解更多
339 了解更多
340</h2>
341 327
342每个功能都有自己的指南,包含设置说明、示例和配置选项。328每个功能都有自己的指南,包含设置说明、示例和配置选项。
343 329
344<CardGroup cols={2}>330> **[CLAUDE.md](/docs/zh-CN/memory)**
345 <Card title="CLAUDE.md" icon="file-lines" href="/docs/zh-CN/memory">331>
346 存储项目上下文、约定和说明332> 存储项目上下文、约定和说明
347 </Card>
348 333
349 <Card title="Skills" icon="brain" href="/docs/zh-CN/skills">334> **[Skills](/docs/zh-CN/skills)**
350 给予 Claude 领域专业知识和可重用的工作流335>
351 </Card>336> 给予 Claude 领域专业知识和可重用的工作流
352 337
353 <Card title="Subagents" icon="users" href="/docs/zh-CN/sub-agents">338> **[Subagents](/docs/zh-CN/sub-agents)**
354 将工作卸载到隔离的上下文339>
355 </Card>340> 将工作卸载到隔离的上下文
356 341
357 <Card title="Dynamic workflows" icon="network" href="/docs/zh-CN/workflows">342> **[Dynamic workflows](/docs/zh-CN/workflows)**
358 从一个脚本运行许多 subagents343>
359 </Card>344> 从一个脚本运行许多 subagents
360 345
361 <Card title="Cross-session messaging" icon="terminal" href="/docs/zh-CN/cross-session-messaging">346> **[Cross-session messaging](/docs/zh-CN/cross-session-messaging)**
362 让 Claude 向您的其他会话发送消息347>
363 </Card>348> 让 Claude 向您的其他会话发送消息
364 349
365 <Card title="MCP" icon="plug" href="/docs/zh-CN/mcp">350> **[MCP](/docs/zh-CN/mcp)**
366 将 Claude 连接到外部服务351>
367 </Card>352> 将 Claude 连接到外部服务
368 353
369 <Card title="Hooks" icon="bolt" href="/docs/zh-CN/hooks-guide">354> **[Hooks](/docs/zh-CN/hooks-guide)**
370 使用 hooks 自动化操作355>
371 </Card>356> 使用 hooks 自动化操作
372 357
373 <Card title="Plugins" icon="puzzle-piece" href="/docs/zh-CN/plugins/overview">358> **[Plugins](/docs/zh-CN/plugins/overview)**
374 捆绑和共享功能集359>
375 </Card>360> 捆绑和共享功能集
376 361
377 <Card title="Marketplaces" icon="store" href="/docs/zh-CN/plugins/create-marketplace">362> **[Marketplaces](/docs/zh-CN/plugins/create-marketplace)**
378 托管和分发 plugin 集合363>
379 </Card>364> 托管和分发 plugin 集合
380</CardGroup>