教程

CLAUDE.md、Rules、Skills、Subagents、Hooks 到底该用哪个?Anthropic 官方给出决策指南

Anthropic官方决策指南详解Claude Code五种指令控制机制:Path-scoped Rules按路径精准加载省Token、Skills程序性操作手册动态加载、Subagents隔离上下文支持五层嵌套、Hooks确定性拦截控制、Output styles高权重系统提示注入,附完整决策速查表。

2026/8/206分钟 阅读ClaudeEagle

Claude Code 提供了至少五种不同的方式来"指挥"Claude 的行为——CLAUDE.md、Rules、Skills、Subagents、Hooks、Output styles。很多用户搞不清楚这些机制之间的边界,什么场景该用哪个。本文基于 Anthropic 官方博客,梳理这几种"操控方式"各自的加载时机、上下文成本和适用场景,帮你把它们用对地方。

Rules:按路径精准加载,避免浪费 Token

Rules 是 .claude/rules/ 目录下的 markdown 文件, 给 Claude 特定的约束或约定 未限定范围的 Rules: 行为和 CLAUDE.md 一样,会话开始时始终加载,压缩 后也会重新注入——这可能在任务用不上的时候仍然 浪费 Token 加载无关上下文 Path-scoped Rules(路径限定规则): 通过添加 paths 字段,只在相关时才加载规则指令 示例:限定在 src/api/** 的规则,在纯文档会话中 完全不会进入上下文,只有当 Claude 读取该目录下 文件时才会被加载 --- paths: - "src/api/**" - "**/*.handler.ts" --- All API handlers must validate input with Zod before processing.

官方建议:像"迁移只能追加不能修改"这类针对特定文件的约束,最适合作为带 paths: frontmatter 的 Rule。当指令涉及横切关注点、只出现在代码库的部分(而非全部)角落时,优先选择路径限定的 Rule 而不是嵌套的 CLAUDE.md 文件。

Skills:动态加载的"操作手册"

Skills 位于 .claude/skills/,是包含指令、脚本、 资源的文件夹,Claude 会动态加载 加载机制: - 会话开始时只加载 name 和 description - 完整body内容在Claude调用该skill时才加载 (通过slash命令如/code-review,或任务自动匹配)

内置的 /code-review 就是一个典型的 Skill 例子——审查当前的 diff 并报告发现,不修改文件。Skill 定义了固定的操作手册,让 Claude 每次调用时都遵循同一套结构化的方法。

压缩(compaction)行为: 已调用的Skills会在压缩后被重新注入,但受限于所有 已调用Skills的总预算——如果一次会话调用了很多 Skills,最早调用的会先被丢弃

官方建议:像部署流程、发布检查清单、审查流程这类"程序性"的指令,属于 Skill 的范畴,而不是塞进 CLAUDE.md。

Subagents:隔离上下文,避免"污染"主对话

Subagents 位于 .claude/agents/,是定义特定辅助 任务的独立助手的markdown文件 每个文件用YAML frontmatter定义name、description、 可选的model和tool访问权限,body部分成为该subagent 的系统提示词 关键特性: subagent的body部分(详细指令)不会自动加载,也 永远不会进入父对话的上下文——它在自己全新的上下文 窗口中运行,只有subagent的最终消息(通常是多个 子任务的汇总结果)加上元数据会返回主会话 扩展性: Subagent可以嵌套多达5层深,动态工作流(dynamic workflows)可以编排数十到数百个后台智能体,而不 需要用户手动指定每一个subagent架构细节。编排计划 和中间结果存储在脚本变量中而非Claude的上下文窗口, 这使得规模化成为可能且不损失指令保真度

官方建议:这种上下文隔离特性正是选择 Subagent 而非 Skill 的主要原因——当一个辅助任务(比如深度搜索、日志分析、依赖审计)产生的中间结果会污染主对话、且你之后不会再引用这些细节时,用 Subagent;如果你希望整个流程在主线程内展开,以便逐步查看和引导每一步,则用 Skill。

Hooks:确定性控制,而非"建议"

Hooks是用户定义的命令、HTTP端点或LLM提示,在 Claude生命周期的特定事件(文件编辑、工具调用、 会话开始等)触发时,提供更确定性的行为控制 注册位置:settings.json、托管策略设置,或skill/ agent的frontmatter Hooks类型:command、http、mcp_tool、prompt、agent 前三种(command/http/mcp_tool)确定性执行; 后两种(prompt/agent)使用Claude的判断而非固定 规则来决定输出 上下文成本: Hooks的配置/指令存在于主上下文窗口之外,因此上下文 成本很低。harness运行处理程序(command/http/ mcp_tool),或用独立窗口进行模型调用(prompt/ agent) 输出是否进入主窗口取决于配置:例如一个阻断型hook 的标准错误信息会保存进上下文,这样Claude能知道 调用为什么被拒绝;但大多数hook的输出默认不会 保存进主窗口,除非配置明确要求返回

官方建议:任何应该确定性发生的事情,都适合用 Hook——编辑后自动运行 linter、完成后发消息到 Slack、在特定命令执行前拦截它们。一个 PreToolUse hook 可以检查任意工具调用,并通过返回退出码 2 来拒绝执行。Hooks 和 Skills 也是构建"智能体循环"(重复运行直到满足停止条件的工作流)的基础构件。

Output styles:权重最高,需谨慎使用

Output styles是.claude/output-styles/目录下的 文件,向系统提示词注入指令 特性: - 永远不会被压缩 - 每次会话开始时加载 - 会话内首次请求后被缓存(中等上下文成本) 因为直接位于系统提示词内,output styles拥有目前 所有方式里最高的指令遵循权重,应当谨慎使用

修改 output style 会替换默认的输出风格(除非在样式中设置 keep-coding-instructions: true)。正因为权重最高,一旦配置不当,可能对 Claude 的整体行为产生比其他任何机制都更强的影响,使用时需要格外谨慎。

决策速查表

场景 适合选择 项目通用背景/长期约定 CLAUDE.md 仅特定路径/文件类型生效的约束 Path-scoped Rule 程序性操作手册(部署/发布流程) Skill 需要隔离上下文的独立子任务 Subagent 必须确定性发生的动作(检查/通知) Hook 全局性、高权重的行为风格调整 Output style(谨慎使用)

实战建议

1. 先问自己:这个指令是"任何时候都要遵守的通用 约定"还是"只在特定文件/路径下才相关的约束"? 前者放CLAUDE.md,后者用path-scoped Rule节省 Token 2. 涉及固定流程步骤(如发布检查清单)的内容,写成 Skill而非塞进CLAUDE.md,让Claude按需调用而非 每次会话都加载 3. 需要执行深度搜索、日志分析这类会产生大量中间 结果、且你不需要在主对话中查看细节的任务,用 Subagent隔离上下文,保持主线程整洁 4. 有强制性要求(比如"编辑后必须跑lint")的场景, 不要指望prompt指令能100%被遵守,改用Hook做 确定性拦截 5. Output style仅在确实需要对Claude整体行为风格做 出全局调整时使用,避免滥用导致行为难以预测

总结

这五种机制并非相互替代关系,而是分别对应"上下文成本"和"指令权威性"这两个维度上不同的取舍——了解每种方式的加载时机、压缩行为和上下文成本,能帮助你在配置 Claude Code 项目时做出更精准的选择,而不是把所有指令一股脑塞进 CLAUDE.md,既浪费 Token 又难以维护。


来源:Steering Claude Code: when to use CLAUDE.md, skills, hooks, and subagents — Anthropic 官方博客

相关文章推荐

教程Claude Code SKILL.md 自定义技能教程:创建可复用 AI 工作流,告别重复配置Claude Code SKILL.md 自定义技能教程:4 种技能类型详解(领域知识、工作流、安全检查、支付约束),含团队共享配置和全局 Skill 设置,告别每次重复配置。2026/4/10教程Claude Code 插件系统完全指南:创建、分发和管理自定义插件Claude Code 插件系统完全指南:创建自定义 Skills、Agents、Hooks,支持团队共享和 Marketplace 分发。含完整目录结构、组件详解和开发技巧。2026/4/7教程Claude Code Subagents 完整创建指南:内置 Agent、Frontmatter 字段、持久记忆与 Hooks 配置Claude Code Subagents 完整创建指南:内置 4 类 Subagent(Explore Haiku 只读/Plan 只读/General-purpose 全工具/Bash-statusline-Guide helper)、/agents 交互界面 7 步创建流程、四种存储位置(CLI --agents 当前会话/项目级/用户级/插件级)及优先级、Subagent 文件 Markdown+Frontmatter 格式、9 个 Frontmatter 字段(name/description 最重要/model/tools/disallowedTools/permissionMode/skills/hooks/maxTurns/memory/allowedAgents/color)、工具白黑名单配置、allowedAgents 限制可 spawn、持久记忆(memory: true/自定义路径/前 200 行加载)、两种 Hooks 配置方式(Frontmatter 内联/settings.json SubagentStart/SubagentStop)、前台后台运行(Ctrl+B/tasks),以及 4 个直接可用示例(code-reviewer/debugger/data-scientist/db-validator)。2026/3/9教程Claude Code Hooks 生命周期完全指南:从 SessionStart 到 SessionEnd,何时该用哪个 Hook详解 Claude Code Hooks 生命周期机制:会话级、轮次级、工具调用级三种触发节奏,SessionStart/PreToolUse/PostToolUse/Stop 等关键事件的适用场景与实战选型建议。2026/8/11教程Claude Code Agent Teams 使用指南:多 Claude 会话协作、共享任务列表和直接通信Claude Code Agent Teams 适合需要多个 Claude Code 会话并行探索、互相挑战和协调的复杂任务。它不同于 subagents:teammates 有独立上下文、共享任务列表,并能直接通信。2026/6/8教程Claude Code Dynamic Workflows 完整指南:用脚本编排上百个 SubagentsClaude Code Dynamic Workflows 让编排逻辑从上下文窗口迁移到 JavaScript 脚本,适合代码库审计、500 文件迁移、多源交叉验证研究和可重复质量检查。2026/6/8