Claude Code 官方公开 7 大配置技巧:效率翻倍!
本文解读Anthropic官方博文《Steering Claude Code》,全面解析Claude Code的七种配置方式及其使用场景。
由于是官方团队亲自写的,相当于出题人告诉你标准答案,因此整篇文章的干货价值非常高。
今天我结合官方内容加上我自己使用Claude Code的经验,给大家做一个完整的中文解读。

Claude Code 的调教方式
Claude Code 的调教方式共有7种:CLAUDE.md文件、Rules规则、Skills技能、Subagents子智能体、Hooks钩子、Output Styles输出风格,以及Append System Prompt系统提示词追加。
每种方式的核心区别在于3点:什么时候加载到上下文、长对话压缩时会不会被丢掉、占用多少token。
如果你把指令放错了地方,AI可能直接忽略掉你的指令,白白浪费tokens。
接下来咱们挨个儿学习。

1、CLAUDE.md - AI 的项目手册
CLAUDE.md是放在项目根目录的Markdown文件,会话一开始就加载,全程常驻在上下文中。
那CLAUDE.md里适合放什么内容呢?像构建命令、目录结构、代码规范、团队约定这些AI需要时刻记住的事实性信息。
我在自己的《AI编程教程》中多次强调,CLAUDE.md就像给新同事写的项目文档。你不需要每次都跟AI解释项目用的是什么技术、有什么规矩,只要写一次,之后都会生效。
CLAUDE.md的加载分两种方式。根目录的CLAUDE.md是始终加载的,压缩对话时也会重新读取,不会丢失。子目录的CLAUDE.md比如app/api/CLAUDE.md,只有当Claude读取该目录下的文件时才会加载,适合放只跟特定模块相关的约定。

官方明确建议,CLAUDE.md尽量控制在200行以内。原因很简单,CLAUDE.md的每一行都占token,不管当前任务会不会用到。如果你塞了500行进去,哪怕做一个简单的前端样式调整,也得带着那些后端部署规范一起加载,纯属浪费。
我自己就踩过这个坑,之前把所有东西都往CLAUDE.md里堆,后来发现AI的指令遵循度明显下降了,特别是在长对话里。后来精简了一波,把流程性的内容移到了Skills里,效果立竿见影。所以记住一个原则就好:CLAUDE.md只放「事实」,不放「流程」。

构建命令、技术栈、目录结构、命名规范是事实。部署流程、代码审查清单、发布步骤是流程,应该封装为Skills。
2、Rules 规则 - 路径级的精准约束
Rules是放在.claude/rules/目录下的Markdown文件,用来给Claude设定具体的约束或编码规范。它最强大的地方在于支持路径作用域。你在规则文件的头部加一个paths字段,就能让这条规则只在Claude读取特定路径下的文件时才生效。
比如我有一条规则是「所有API处理器必须使用Zod进行输入验证」,我把它的作用域设为src/api/**。这样当我只是在改前端页面的时候,这条规则压根不会加载,也就不浪费token。
---paths:- "src/api/**"- "**/*.handler.ts"---所有API处理器必须使用Zod进行输入验证。
我自己在项目中就是这么用的,把数据库相关的规范限定在src/db/**下面,前端相关的限定在src/components/**下面,各管各的。什么时候该用Rule,而不是子目录CLAUDE.md呢?答案是:当一条规范需要跨目录生效的时候。比如所有.test.ts文件都要遵守某个测试规则,用路径作用域的Rule更合适。子目录CLAUDE.md只能管它所在那个目录下面的文件。
3、Skills 技能 - 按需加载的工作流
Skills放在.claude/skills/目录下,每个技能是一个文件夹,核心是一个SKILL.md描述文件。Skills的渐进式加载设计非常优雅。会话开始时,Claude只会读取每个Skill的名称和简短描述,完整的技能内容只有在被触发时才加载到上下文中。

这意味着你可以定义几十个Skills,但平时它们几乎不占token。只有当你主动调用(比如输入/code-review),或者AI自动匹配到当前任务需要某个技能时,完整的指令内容才会加载进来。我在.claude/skills/下面放了部署流程、代码审查清单、创建新组件的标准步骤等等。这些流程性的东西如果全写在CLAUDE.md里,哪怕你只是说个「你好」,就得白白浪费不知道多少tokens。放在Skills里就不一样了,需要时才加载。
还有个很重要的细节。压缩对话时,已触发的Skills会按总预算重新注入,如果预算不够,最早触发的技能会被优先丢弃。所以一次会话里别触发太多Skills,聚焦当前任务最重要。
4、Subagents 子智能体 - 隔离的独立助手
Subagents放在.claude/agents/目录下,每个文件定义一个独立的AI助手。跟Skills最大的区别在于,Subagent运行在自己独立的上下文窗口里,只有最终结果会返回给主会话。所有中间过程完全不占用你主对话的上下文空间。

什么场景适合用Subagent呢?比如深度搜索代码库找某个Bug的根因、分析日志文件定位性能瓶颈、做依赖审计检查哪些包有安全漏洞。这类任务的中间过程可能产生几万token的内容,如果都堆在主对话里,很快就会把上下文撑爆。Subagent还支持嵌套,最多可以嵌套5层深,配合动态工作流可以编排几十甚至上百个后台Agent并行工作。
我之前用Claude Code的/batch命令批量迁移API版本,本质上就是在用Subagent。它会自动把任务拆成十几个子任务,每个在独立工作树中运行,互不干扰。那Skills和Subagents怎么选呢?很简单,如果你想看到AI的执行过程并随时干预,用Skill。如果你只关心最终结果、不想被中间信息干扰,用Subagent。
5、Hooks 钩子 - 确定性的自动化
Hooks是7种方式里最特殊的一个。前面讲的CLAUDE.md、Rules、Skills本质上都是给AI的「建议」,AI可能遵循也可能不遵循,特别是在长会话或复杂场景下。但Hooks不一样,它不是指令,而是自动化代码。到了触发条件就一定会执行,不需要AI来决定要不要做。
Hooks通过settings.json注册,绑定到Claude Code生命周期中的特定事件,比如工具调用前(PreToolUse)、工具调用后(PostToolUse)、压缩对话前(PreCompact)等等。

最经典的用法就是:每次编辑文件后自动跑Prettier格式化。这件事如果写在CLAUDE.md里,AI大概率会遵循,但也可能会忘掉。用Hook就不存在这个问题,文件一编辑,Prettier就自动执行,跟AI模型本身无关。而且Hook的上下文成本几乎为零,因为配置信息压根不在主上下文里。
「永远不要做X」靠指令是不够的
这是官方博文里我觉得最值得记住的一个观点。你在CLAUDE.md里写「永远不要删除数据库迁移文件」,Claude大部分时候确实会遵守。但是在长会话、上下文压缩、或者遇到某个文件里的prompt注入时,AI是有可能违反这条指令的。真正的安全防线需要Hook + 权限双重保障。你可以用PreToolUse Hook检查每一次工具调用,一旦发现要删除数据库迁移文件,就直接exit code 2拦截掉。再配合Managed Settings从组织层面强制禁止某些操作,这样才能真正做到万无一失。这个思路跟我之前分析Claude Code源码时看到的fail-closed设计是类似的。Claude Code内部的工具系统默认把所有工具当作「危险操作」处理,除非工具明确声明自己是只读的。安全这件事,不能指望AI的自觉性。

6、Output Styles 和 Append System Prompt
最后两种方式我用的相对较少,所以放在一起讲。Output Styles是用来定义Claude输出风格和行为模式的。它放在.claude/output-styles/目录下,会被注入到系统提示词中,永远不会被压缩丢掉。但有一点要特别注意,自定义输出风格会替换掉Claude Code的默认系统提示词。也就是说,Claude Code原本内置的那些关键行为,比如怎么确定修改范围、什么时候加注释、遇到安全问题怎么处理,自定义之后就全没了。所以官方的建议是先看看内置的几种风格够不够用,别轻易去自定义。目前内置了Proactive主动执行、Explanatory详细解释、Learning协作学习这3种模式,基本覆盖了大多数使用场景。

Append System Prompt是另一种调整Claude行为的方式,它允许你在不修改任何文件的情况下,临时给Claude追加一段指令。具体用法是通过CLI的--append-system-prompt参数传入,只对当次调用生效。跟Output Style的区别在于,它是追加而非替换,不会影响Claude Code的默认行为。适合临时调整语气、输出格式这些轻量需求。

不过官方也提到了一个限制,追加的指令越多,AI对每条指令的遵循度就越低,特别是指令之间有冲突的时候。
什么时候该用什么?
一口气看完7种方式,你可能会有点蒙。没关系,官方给了几条判断标准,有个印象就行。

第一,CLAUDE.md放「事实」,Skills放「流程」。如果你的CLAUDE.md里有超过30行的步骤性内容,比如部署runbook、安全审查清单,就应该把它移到.claude/skills/里面去。第二,「每次X后做Y」这类需求应该用Hook,不要写在指令里。比如每次编辑后跑Prettier、提交前检查lint、完成任务后发Slack通知,这些都不应该依赖AI的记忆力。模型选择做某件事,和某件事自动发生,这完全是两回事。第三,「绝对不能做X」这种硬性要求需要Hook + 权限双保险。光靠指令只能做到AI大部分时候遵守,真正的安全边界必须用确定性机制来保证。这跟写代码一个道理,你不会靠注释来防止某个函数被错误调用,你会用类型系统和权限检查来兜底。
我的实践经验
再分享几个我自己配置Claude Code的心得。首先是CLAUDE.md要有「索引」思维。不要把它当百科全书,把它当目录就好。告诉Claude项目的基本信息,然后用指针指向更详细的文件。比如写上:前端组件规范见docs/FRONTEND.md、部署流程用/deploy技能。这样CLAUDE.md保持精简,Claude需要详细信息的时候会自己去读对应文件。

然后是Skills,我觉得这是目前最被低估的功能。我现在把很多重复性的工作流程都封装成了Skill,什么AI热点搜集、视频动画制作、图文创作工作流等等。Subagent我主要用来做调研型任务。比如:帮我调研一下这个库有没有替代方案、搜集信息、分析一下这个Bug的原因,这类任务中间过程很长,但最终只需要一个结论,用Subagent可以让主对话保持干净。不过很多AI工具现在都能自动创建和管理Subagent了。
最后哔哔
OK就分享到这里,你会发现Claude Code的配置体系设计得很讲究。事实和流程分离、按需加载降低成本、确定性保障优于概率性指令、隔离执行避免上下文污染。这些设计思想不管你是想深度使用Claude Code,还是想自己搭建AI Agent系统,都值得好好学一学。
通过合理运用CLAUDE.md、Rules、Skills等七种方式,可以大幅提升AI编程效率。希望本文能帮你掌握Claude Code的配置精髓。
