Claude Code最佳实践指南:官方推荐与实战技巧
Claude Code 官方文档中隐藏着一份由 Anthropic 内部团队实战积累的最佳实践指南。社区同样贡献了 GitHub 仓库,收录了 84 条实践——筛选出最具价值的几条,结合真实使用经验重新整合。
一、为 Claude 提供验证机制
这确实是关键杠杆。官方反复强调,这是提升输出质量最有效的单点改进。
当 Claude 能够自我验证产出时,表现显著提升:执行测试、对比截图、检查输出。缺少明确的验证标准,它很容易写出逻辑正确但运行失败的无用代码。
验证策略对比
策略 |
低效指令 |
高效指令 |
|---|---|---|
提供测试用例 |
"实现邮箱验证函数" |
"编写 validateEmail 函数,测试用例:user@example.com 返回 true,invalid 返回 false,user@.com 返回 false。实现后运行测试" |
视觉验证 UI |
"让仪表盘更好看" |
"[粘贴截图] 实现此设计。完成后截图对比,列出差异并修正" |
解决根因 |
"构建失败了" |
"构建失败,错误:[粘贴错误]。修复并验证构建通过。解决根本原因,不要压制错误" |
Bug 只说"修复",别微操
社区里最反直觉的一条经验。
遇到 bug,直接把错误信息贴给 Claude,只说一个词:修复。别指导它怎么修,别猜测原因,别指定方案。Claude 的调试能力比大多数人想象的强——你越微操,越容易把它带偏。直接让它修,成功率能到 80%。
如果两次尝试还不奏效,停下来。用 /clear 重置上下文,换个角度再试。
你:这个报错是因为数据库连接超时,可能是连接池配置问题,你查一下连接池设置...
你:[粘贴错误信息]修复。
二、探索 → 规划 → 编码
将研究与规划阶段和实现阶段分离,能有效避免解决错误的问题。
Plan Mode 工作流
进入 Plan Mode:按 Shift Tab 两次。Claude 只读文件、回答问题,不做修改。
推荐流程:
- 探索(Plan Mode)—— claude (Plan Mode) 读取 /src/auth,理解 session 处理逻辑。
- 规划(Plan Mode)—— claude (Plan Mode) 我想添加 Google OAuth。需要改哪些文件?创建一个计划。
- 实现(Normal Mode)—— claude (Normal Mode) 按计划实现 OAuth 流程。为回调处理器写测试。
- 提交—— claude (Normal Mode) 用描述性消息提交,打开 PR。
什么时候跳过规划?
场景 |
是否规划 |
|---|---|
改错别字、加日志、重命名 |
跳过 |
不确定方案 |
规划 |
改动跨多文件 |
规划 |
不熟悉要改的代码 |
规划 |
能用一句话描述 diff,就跳过计划。
三、CLAUDE.md 保持在 60 行以内
新手最容易踩的坑。
刚开始用 Claude Code 时,CLAUDE.md 写过快 500 行——项目描述、编码规范、API 文档全塞进去。结果呢?Claude 会选择性忽略规则,尤其是文件末尾的那些。
经验数据:理想长度是 60 行以内,硬性上限是 300 行。Boris Cherny(Claude Code 创作者)的解释是:前沿 LLM 可靠执行的指令大约 150-200 条,系统提示已经占了约 50 条。留给用户的空间确实不多。
具体做法:CLAUDE.md 只放 Claude 可能忽略的信息——构建命令、测试命令、分支命名规范、项目特定的架构决策。Claude 能从代码推断出来的,就别写进去。规则太多?拆到 .claude/rules/ 按需加载。关键规则用 标签包裹。
四、让 Claude 先面试你
给 Claude 一个简单需求描述,让它用 AskUserQuestion 工具面试你,澄清所有细节。面试完,开新会话执行。
做过一个 API,Claude 问了"并发请求怎么处理"、"超时策略是什么"——这些起初根本没考虑。它的提问能帮你发现遗漏的边界情况。
关键点:面试完开新会话。面试过程的长对话会污染上下文。
示例:
你:我要做一个用户认证系统。
Claude 开始面试:1. 认证方式:JWT 还是 Session?2. 密码存储:用什么哈希算法?3. 登录失败限制:几次锁定?4. Token 过期时间:多久?5. 多设备登录:允许还是互踢?
你回答完所有问题。
你:/clear(开新会话)你:按刚才讨论的需求实现用户认证系统。
五、提供具体上下文
指令越精确,需要纠正的次数越少。
上下文策略对比
策略 |
低效指令 |
高效指令 |
|---|---|---|
划定范围 |
"给 foo.py 写测试" |
"给 foo.py 写测试,覆盖用户未登录的边界情况。不用 mock" |
指向来源 |
"这个 API 为什么这么怪?" |
"查 ExecutionFactory 的 git 历史,总结 API 怎么变成这样的" |
引用模式 |
"加个日历组件" |
"看主页现有组件的实现方式。HotDogWidget.php 是好例子。按这个模式实现" |
描述症状 |
"修复登录 bug" |
"用户报告登录后仍显示未登录。问题可能在 AuthContext.tsx。先查 auth 流程" |
上下文来源清单
代码语言:ja vascript src/auth/login.ts
六、要求重写平庸方案
当 Claude 给出的方案能用但不优雅时,别打补丁。直接说:
knowing everything you know now, scrap this and implement the elegant solution
Claude 会基于对问题的完整理解重新设计。试过几次,重写的版本总能比打补丁的好。
类似地,可以说 prove to me this works,让 Claude 把当前分支和 main 做 diff,验证改动是否正确。
Claude:[实现了一个能用但丑陋的方案]你:这个方案能用,但不够优雅。knowing everything you know now, scrap this and implement the elegant solution.Claude:[基于完整理解重新设计,方案更简洁]
七、提示词里加"用子 Agent"
在提示词里加一句 use subagents,Claude 会把任务拆成多个子 Agent 并行处理。
特别适合代码审查和大规模重构。有人用 9 个并行子 Agent 做代码审查,每个专注一个质量维度。
你:审查这个 PR,检查安全性、性能、代码风格。use subagentsClaude 启动 3 个子 Agent:子 Agent 1:安全审查;子 Agent 2:性能审查;子 Agent 3:风格审查。主会话只收到汇总报告。
技巧:创建子 Agent 时,让它功能具体(如"前端组件 Agent")而不是泛泛的("QA Agent")。功能越具体,结果越好。
八、Skills 用文件夹结构,加 Gotchas 区
很多人写个 SKILL.md 就算完事。但 Skills 应该是完整的文件夹结构:
.claude/skills/my-skill/├── SKILL.md # 核心规则和索引├── references/ # 详细文档├── scripts/ # 可执行脚本└── examples/ # 示例文件
这种渐进式披露是关键——Claude 只在需要时读取子目录内容,而不是一次把所有东西塞进上下文。
另一个技巧:每个 Skill 里建一个 Gotchas(陷阱记录)区,每次 Claude 犯错就记录失败模式。时间长了,这是信噪比最高的内容。
## Gotchas(陷阱记录)- ❌ "值得注意的是" → 太啰嗦,直接说重点- ❌ "在...的背景下" → 翻译腔,改成"在...情况下"- ❌ 连续三个四字短语 → AI 腔,换表达
九、上下文用到 50% 就手动压缩
最重要的工作流级实践之一。
Claude Code 有个"Agent 呆滞区"——上下文超过 60-70% 时,性能明显下降,Claude 开始忽略指令、犯低级编码错误。
仓库建议:在 50% 时手动执行 /compact,别等自动压缩,那时候通常已经晚了。
你:/contextClaude:当前上下文 90K/200K,使用率 45%你:[继续读文件...]你:/contextClaude:当前上下文 105K/200K,使用率 52%你:/compactClaude:已压缩对话历史,当前上下文 35K/200K
用 /statusline 实时监控用量。
十、跑偏时按 Esc Esc 回滚
Claude 跑偏了怎么办?大多数人的本能是在当前会话里纠正。
建议:直接按两次 Esc(或用 /rewind)回滚到上一个检查点。在同一个上下文里纠正跑偏,往往越改越乱——因为错误推理还在上下文里,Claude 会被自己的错误逻辑带偏。
习惯是:跑偏一次 → Esc Esc 回滚;同一问题跑偏两次 → /clear 重开。
Claude:[开始重构整个架构,但你只想改一个函数]你:Esc Esc(回滚到重构前)你:我只改 validateToken 这个函数,不动其他文件。
十一、早纠正,频纠正
Claude 不怕被纠正。它怕的是你沉默。
纠正时机
• 方向错了:立即打断,说明正确方向• 方法对了但细节错:让它继续,完成后再调整• 完成度 50% 时:快速检查,确认方向正确
纠正方式对比
"不对,重来"
"方向对了,但不要用 mock,用真实数据库。当前的测试会在 CI 失败,因为 mock 的响应格式和真实 API 不一致。"
十二、小任务别用复杂工作流
原生 Claude Code 处理小任务比任何复杂工作流都快。改个变量名也走完整的 Plan → Execute → Review 流程,其实一句话就行。
那些复杂工作流(Superpowers、Spec Kit 等)是为涉及多文件多步骤的大任务设计的。三五分钟能搞定的事,原生最快。
判断标准:能用一句话描述改动的 → 直接说;涉及 3 个以上文件的 → 用工作流;需要多轮验证的 → 用工作流;改动逻辑复杂的 → 先 Plan Mode。
十三、自动化和扩展
非交互模式
适合 CI/CD、脚本、后台任务:claude --print "analyze the test failures in src/tests/"
并行会话
用 Git Worktree 运行多个 Claude 实例:git worktree add ../feature-a feature-branch; cd ../feature-a; claude "implement feature A" &
Auto Mode
让 Claude 完全自主运行:claude --auto
十四、常见失败模式
模式一:没有验证标准
症状:Claude 写出看起来对但实际不行的代码。解决:提供测试、截图、预期输出。
模式二:一次性塞太多
症状:Claude 被淹没,开始丢信息。解决:分阶段,用子 Agent 隔离,50% 就压缩。
模式三:指令模糊
症状:Claude 瞎猜,需要反复纠正。解决:指明文件、约束、示例。
模式四:忽略上下文管理
症状:上下文快满了才发现,Claude 开始"失忆"。解决:定期 /context,超过 70% 就 /compact。
模式五:不及时纠正
症状:Claude 走偏了很久才发现,需要大改。解决:在完成度 50% 时检查。
总结
核心实践速查表:
实践 |
关键点 |
|---|---|
验证方式 |
给测试、截图、预期输出 |
Bug 只说修复 |
不微操,成功率 80% |
Plan Mode |
复杂任务先规划 |
CLAUDE.md 60 行 |
只放 Claude 可能忽略的信息 |
面试技巧 |
需求不清晰时让 Claude 问你 |
具体上下文 |
指明文件、约束、示例 |
重写平庸方案 |
别打补丁,直接要求重写 |
提示加 subagents |
并行处理,隔离上下文 |
Skills 文件夹 |
主文件 references Gotchas |
50% 就压缩 |
别等自动压缩 |
Esc Esc 回滚 |
跑偏时回滚,别在原上下文纠正 |
小任务直接说 |
别为小事启动复杂工作流 |
参考
• Claude Code 最佳实践文档 — https://code.claude.com/docs/en/best-practices• Claude Code 最佳实践仓库 — https://github.com/shanraisshan/claude-code-best-practice• Claude Code 常见工作流 — https://code.claude.com/docs/en/common-workflows• Claude Code 扩展机制 — https://code.claude.com/docs/en/features-overview