别让 Claude Code 一路狂奔:高手都在盯这 5 个地方
Claude Code 的进阶用法不是把权限开大,而是建立一套可中断、可回滚、可验证的工作流。
Claude 修一个 bug,顺手改了 12 个文件。
它删了旧组件,换了依赖,重写了一段状态管理。终端里日志飞快滚动,看起来很努力,也很专业。
你隐约觉得不对,但没按 Esc。
十分钟后,测试挂了,页面也挂了。最麻烦的是,你已经看不清它到底从哪一步开始跑偏。
很多人用 Claude Code 的进阶方式,恰好是错的:把权限开大,把确认关掉,把任务丢进去,然后等它“一路跑完”。这不是高手,这是把方向盘交出去。
Claude Code 真正好用的地方,不是它能连续工作,而是你能在它工作时不断校准。
真正的进阶,不是放手,而是会接管。

先理解它为什么会跑偏
Anthropic 的 Cal 在官方最佳实践分享里提到一个很关键的心智模型:Claude Code 很像一个“只用终端的同事”。
它不是靠提前索引整座代码库,然后从向量数据库里召回文件。按照官方分享里的说法,它更像一个新同事进入项目:用搜索、glob、grep、find 之类的方式,一点点探索代码库,看到结果后再决定下一步搜哪里。
这套方式很灵活,但也有代价。
它会不断读文件、跑命令、改代码,上下文越来越长,判断会受当前看到的信息影响。如果你一开始没给规则,中途不看计划,最后也不跑测试,它当然可能越走越偏。
所以 Claude Code 的进阶,不是让它更自由。
而是给它一条轨道。
第一个地方:CLAUDE.md,不是备忘录,是项目规则
很多人知道 /init 可以生成 CLAUDE.md,但写完就放在那里了。
这很浪费。
官方分享里说得很清楚:当你启动 Claude Code 时,如果当前工作目录里有 CLAUDE.md,它会被放进上下文里,作为开发者留给 Claude 的重要指令。
这不是“给 Claude 留一句备注”。
这是你给它的项目规则。
CLAUDE.md 里至少应该有三类信息:
| 类型 | 应该写什么 | 例子 |
|---|---|---|
| 项目结构 | 模块在哪里,测试在哪里,入口在哪里 | src/app 是路由,src/lib 放业务逻辑 |
| 运行方式 | 怎么启动、测试、构建 | npm test、npm run typecheck、npm run lint |
| 工程约束 | 不能做什么,修改前要注意什么 | 不要引入新状态库;改 API 前先看兼容层 |
一个实用模板:
| |
注意最后两条。
CLAUDE.md 最有价值的地方,不是告诉 Claude “项目是什么”,而是告诉它“什么事情不要做”。
AI 写代码最危险的时刻,往往不是它不会写,而是它太会写:为了修一个小 bug,顺手把你半个项目“优化”了。
第二个地方:权限,别把所有按钮都点成允许
Claude Code 的默认交互里,读文件和搜索这类动作通常比较顺畅;一旦涉及写文件、跑 bash、做可能改变机器状态的操作,就会触发确认。
很多人嫌烦,看到确认框就一路 yes。
这会很快。
也会很危险。
官方分享里提到,可以通过权限管理加速工作流,比如某些你反复确认的低风险命令,可以配置为总是允许。典型例子是:
| |
这些命令不改变代码,允许它们自动跑,问题不大。
但下面这些就不要轻易放行:
| |
权限管理的原则很简单:
- 读操作,可以放宽
- 测试和检查,可以自动
- 写文件,要看上下文
- 装依赖、删文件、推远端,必须人工确认
Claude Code 最怕的不是慢,是一路跑错。
你为了省几个确认,把高风险动作都放行,最后省下来的时间会在回滚时全部还回去。
第三个地方:/compact,不是垃圾清理,是换班交接
长会话里,Claude 的上下文会越来越满。
官方分享里提到,Anthropic 的模型上下文窗口可以到 200,000 tokens,但这不代表你应该一直塞到满。Claude Code 底部会出现上下文警告,这时候你通常有两个选择:
| |
区别很大。
/clear 更像清桌子。除了类似 CLAUDE.md 这样的基础规则,前面的对话会被清掉。
/compact 更像换班交接。Claude 会总结之前做了什么、现在进度到哪、下一步应该怎么接,然后用这份总结作为后续会话的种子。
什么时候用 /compact?
- 一个功能做到一半,但上下文快满了
- Claude 已经探索了很多文件,你不想重新解释
- 修 bug 过程很长,中途有关键发现
- 需要把同一个任务接着做下去
什么时候用 /clear?
- 前面的方向错了,不想污染后续判断
- 任务已经结束,准备开始另一个完全不同的任务
- Claude 被错误假设带偏了,需要干净上下文
不要把 /compact 当成“压缩一下省 token”。
它真正的价值是:让下一轮 Claude 不从零开始,也不背着一堆脏上下文继续跑。
第四个地方:Plan + To-do,不看这个就别说自己在协作
进阶用户和普通用户最大的区别,不是 prompt 写得更长。
是他们会让 Claude 先暴露计划。
官方给的建议很直接:不要只说“修这个 bug”,而是说:
| |
这句话的关键不是礼貌,而是顺序:
- 先搜索
- 再判断
- 再给计划
- 最后才写代码
Claude 做大任务时会生成 to-do list。你要盯这个列表。
如果你看到它的第二步已经不对,比如:
| |
而你只是让它修一个按钮点击 bug,那就该按 Esc。
不是等它做完再骂它。
是当它开始跑偏时就拦住。
官方分享里还提到,Esc 不只是停止执行。你可以中途打断,然后告诉 Claude:“这个方向不对,调整 to-do list。”甚至可以通过连续按两次 Esc 回到之前的对话位置。
这才是 Claude Code 里最容易被低估的能力。
不是让 AI 一直干。
而是你能随时接管。
第五个地方:Smart Vibe Coding,快但别瞎跑
“Vibe Coding”这个词现在很流行,但它很容易被误解成:我说一句,AI 做完。
官方分享里更推荐的是 Smart Vibe Coding。
重点不是 vibe,而是 smart。
具体做法很工程化:
- 让 Claude 小步修改,不要一次性大重构
- 每一步跑测试
- 跑 TypeScript 检查
- 跑 lint
- 定期 commit
- 发现方向不对,随时回滚
这听起来不酷,但很有用。
一个更稳的 prompt 可以这样写:
| |
这比“帮我修一下”强太多。
因为你把验收标准、执行粒度、风险边界都写进去了。
让 AI 写代码可以快,但让它小步验证才稳。
MCP 和 CLI:扩展能力,不是堆插件
Claude Code 很擅长终端。
所以官方分享里的建议也很实际:如果某个外部工具本身就有成熟 CLI,比如 GitHub 的 gh,优先考虑直接安装 CLI,让 Claude 使用它。
只有当内置工具和 CLI 都不够时,再考虑 MCP server。
这个顺序很重要:
| |
MCP 很强,但不是越多越好。
每多接一个服务,就多一层权限、多一层上下文、多一个可能出错的地方。尤其是 Gmail、Notion、Drive 这类带个人数据的服务,不要为了“高级感”随手接进去。
如果你只是想让 Claude 操作 GitHub issue,gh 可能比一个 MCP server 更简单、更稳定,也更容易审计。
Headless Automation:可以用,但别急着塞进 CI
官方分享里提到,Claude Code 可以程序化使用,比如接进 GitHub Actions、CI/CD 之类的地方。Anthropic 自己也在探索这种 headless automation。
这件事很诱人。
但我的建议是:先别急着把它放进关键链路。
更合理的落地顺序是:
- 本地手动跑,确认工作流稳定
- 半自动:让 Claude 生成报告、检查 PR、给建议
- 低风险自动化:只读分析,不直接改代码
- 高风险自动化:必须有人审核,不能自动合并
CI/CD 里的 Claude Code,适合先做“副驾驶”,不适合一上来当“驾驶员”。
比如你可以让它:
- 总结 PR 改动
- 找明显风险点
- 解释测试失败原因
- 生成迁移 checklist
但不要一开始就让它在 CI 里自动修复、自动提交、自动推送。
那不是自动化成熟,是事故预备。
一套可复制的 Claude Code 工作流
把前面这些合起来,真实项目里可以这样用:
| |
如果你愿意,可以把这段直接放进自己的 CLAUDE.md:
| |
这段话不花哨,但能救命。
写在最后
Claude Code 的能力很强,但它不是一个你可以完全放任的黑盒。
你越是把它用在真实项目里,越要有控制回路:规则、计划、权限、测试、回滚。
不要迷信一路自动执行。
真正会用 Claude Code 的人,不是看它在终端里表演,而是知道什么时候让它跑,什么时候让它停,什么时候让它重新计划。
你不是观众,你是驾驶员。