# Claude Code 七种指令配置方法详解

- 来源：meng shao (@shao__meng)
- 发布时间：2026-06-20 10:43
- AIHOT 分数：63
- AIHOT 链接：https://aihot.virxact.com/items/cmqlrktre02sysljgll4dky50
- 原文链接：https://x.com/shao__meng/status/2068162727978406096

## AI 摘要

博客详解 Claude Code 的七种指令配置（CLAUDE.md、Rules、Skills、Subagents、Hooks、Output Styles、追加系统提示），从加载时机、压缩后保留性、token消耗与权威性三个维度对比。CLAUDE.md 分根目录（全程驻留）和子目录（按需加载）；Rules 支持路径作用域节省 token；Skills 仅加载名称和描述，调用时载入完整内容；Subagents 独立上下文运行，只返回结果；Hooks 绕过压缩实现确定性控制；Output Styles 直接注入系统提示且永不被压缩；追加系统提示仅单次生效。文章给出实用决策原则，如用 Hook 跑 lint、用 Skills 封装部署流程等。

## 正文

驾驭 Claude Code：CLAUDE.md 配置文件、Skills、Hooks、Rules、Subagents 等 7 种指令全解析

Claude Code 最新博客，围绕七种方法展开：
CLAUDE.md 文件、Rules、Skills、Subagents、Hooks、Output Styles、Appending the System Prompt。

每种方式的本质差异体现在三个维度：
· 何时加载进上下文
· 会话压缩后是否保留
· 消耗多少 token、权威性如何
https://claude.com/blog/steering-claude-code-skills-hooks-rules-subagents-and-more

1. CLAUDE.md 文件
项目根目录下的 Markdown 文件，是最基础的配置层。
分两类加载：根目录 CLAUDE.md 在会话开始时全程驻留上下文，压缩后重新读取；子目录 CLAUDE.md 按需加载，仅当 Claude 访问该目录下文件时才触发，压缩后即失效。
关键警示：在共享仓库中，CLAUDE.md 往往像任何无人负责的配置文件一样，各团队不断追加内容却从不删减，成本在规模上会持续累积。每一行都会加载进每位工程师的每次会话，无论与当前任务是否相关。 claude
官方建议：控制在 200 行以内，指定负责人，像审查代码一样审查变更。

2. Rules
存放在 .claude/rules/ 的 Markdown 文件。
最有价值的特性是路径作用域：通过 paths 字段控制仅在触碰特定文件时才加载。例如只在 src/api/** 被访问时才注入"所有 API 处理器必须用 Zod 验证输入"的规则，而不是全程占用 token。
无 paths 限定的规则，行为等同于 CLAUDE.md--始终在场，始终消耗。

3. Skills
存放在 .claude/skills/ 的程序化工作流。
设计精妙之处：会话开始时只加载名称和描述；完整内容仅在技能被调用时才载入，可通过斜杠命令或任务自动匹配触发。
适合封装部署流程、发布检查清单、代码审查流程等固定程序，而非塞进 CLAUDE.md。Claude Code 自带若干内置 Skills，也支持自定义。

4. Subagents
存放在 .claude/agents/ 的独立助理定义。
与 Skills 的关键区别在于隔离性：子智能体在自己独立的全新上下文窗口中运行，返回给主会话的只有最终消息（通常是多个子任务的聚合结果）加上元数据，中间过程完全不污染主会话。
适合"跑完就丢"的旁路任务：深度搜索、日志分析、依赖审计。子智能体最多可嵌套五层深，支持动态编排数十到数百个后台 Agent 并行运作。
Skills vs Subagents 选择原则：想在主线程中逐步看到、随时干预 → Skills；想要隔离运行、只要最终结论 → Subagents。

5. Hooks
注册在 settings.json 中，在 Claude 生命周期的特定事件上触发（文件编辑、工具调用、会话开始等）。
这是确定性控制的唯一真正实现：Hooks 完全绕过上下文压缩机制，配置本身存在于主上下文窗口之外，因此上下文成本极低。
支持 command、HTTP、mcp_tool（确定性执行）和 prompt、agent（用模型判断）五种类型。一个 PreToolUse hook 可以拦截任何工具调用，以 exit code 2 阻止其执行。
重要观点：凡是写在 CLAUDE.md 里的"永远不要做某事"，都是错误的工具选择。Claude 大多数时候会遵守，但在长会话、模糊情况或遭遇提示词注入时可能失效。真正的硬约束必须是确定性的，而 Hooks 和权限控制才是实现方式。
组织级强制管控还可以使用 Managed Settings（管理员部署，用户无法覆盖）。

6. Output Styles
存放在 .claude/output-styles/ 的文件，直接注入系统提示，永不被压缩，权威性最高。
高权威有代价：自定义输出风格默认会替换掉 Claude Code 的默认输出风格，包括"如何界定改动范围、何时添加注释、如何处理安全问题、声称完成前是否运行测试"等关键编程默认指令，使 Claude Code 退化为通用助理。
官方建议先看内置风格（Proactive/Explanatory/Learning），覆盖大多数需求，无需自己维护文件。

7. Appending the System Prompt
通过 CLI flag 在调用时追加，仅对本次调用生效，不跨会话持久化。
与 Output Styles 的区别是只增不替换，不改变 Claude 的角色设定，只是在默认角色上叠加指令。
注意边界：追加系统提示存在边际收益递减问题。提供的指令越多，Claude 的遵从度越低，若指令之间存在矛盾则尤为明显。

几个实用决策原则
1. 每次编辑后自动跑 linter
× 写进 CLAUDE.md
√ 用 Hook 注册到 PostToolUse
2. 禁止某类危险操作
× "Never do this" 写 CLAUDE.md
√ PreToolUse Hook + exit code 2
3. 30 行部署流程
× 塞进 CLAUDE.md
√ 放进 .claude/skills/
4. 只对 API 目录生效的规则
× 无路径限定的 Rule
√ 用 paths： 字段作用域限定
5. 个人习惯偏好
× 写进项目级 CLAUDE.md
√ 写进用户级配置（对所有仓库生效）
