Appearance
Claude Code最佳实践:AI编程的20条黄金法则
所有最佳实践都围绕一个关键约束展开:Claude的上下文窗口填满速度比你想象的快得多。整个对话——每条消息、每个读取的文件、每条命令输出——都会消耗context。当窗口快满时,Claude会开始"遗忘"早期指令,犯错率也会上升。
Claude Code不是一个普通的聊天机器人——它是一个代理式编码环境。它能读取你的文件、运行命令、做出更改,甚至在你离开时自主解决问题。但这意味着你需要掌握一套全新的工作方式。
一、给Claude一种验证自己工作的方式
这是你能做的最有价值的一件事。当Claude能自己验证工作成果时——运行测试、比较截图、验证输出——它的表现会显著提升。
| 场景 | ❌ 差的提示 | ✅ 好的提示 |
|---|---|---|
| 写函数 | "实现一个验证邮箱的函数" | "写validateEmail函数。测试用例:user@example.com为真,invalid为假。实现后运行测试" |
| 改UI | "让仪表板更好看" | "[贴截图]实现这个设计。截图对比结果,列出差异并修复" |
| 修Bug | "构建失败了" | "构建出现此错误:[贴错误]。修复并验证构建成功。解决根本原因,不要屏蔽错误" |
关键:投资让你的验证机制可靠。测试套件、linter、Bash命令检查——都可以。
二、先探索,再规划,最后编码
直接让Claude跳到编码,很可能产出解决错误问题的代码。
推荐的四阶段工作流:
bash
# 阶段1:探索(Plan Mode)
读取 /src/auth,了解我们如何处理 session 和登录,以及环境变量管理密钥的方式。
# 阶段2:规划(Plan Mode)
我想加 Google OAuth。哪些文件需要改?Session 流程是什么?创建一个计划。
# 阶段3:实现(Normal Mode)
按你的计划实现 OAuth 流程。为回调处理器写测试,运行测试套件并修复所有失败。
# 阶段4:提交
用描述性消息提交并创建PR何时跳过规划?当任务范围明确、修改很小(拼写错误、加日志、重命名变量),或者你能用一句话描述diff时,直接让Claude执行即可。
三、在提示中提供具体的上下文
Claude能推断意图,但不能读心。
| 策略 | ❌ 模糊的提示 | ✅ 精确的提示 |
|---|---|---|
| 限定范围 | "为foo.py加测试" | "为foo.py编写测试,覆盖用户已注销的边界情况。避免mock。" |
| 指向来源 | "为什么ExecutionFactory的API这么奇怪?" | "查看ExecutionFactory的git历史,总结其API是如何演化的" |
| 参考现有模式 | "加个日历小部件" | "参考HotDogWidget.php的模式实现日历小部件。只用代码库已有的库。" |
| 描述症状 | "修登录Bug" | "用户报告超时后登录失败。检查src/auth/的token刷新。写一个失败的测试来复现,然后修复" |
四、提供丰富的内容
多种方式向Claude投喂高质量数据:
- 使用
@引用文件——不要描述代码在哪,直接@文件 - 粘贴图像——截图、设计稿直接拖入提示
- 提供URL——用于文档和API参考
- 管道数据——
cat error.log | claude直接发送文件 - 让Claude自己拉取——告诉它用Bash、MCP工具或读文件获取上下文
五、编写有效的CLAUDE.md
CLAUDE.md是Claude每次对话开始时自动读取的文件。它提供了代码中无法推断的持久上下文。
运行/init命令,它会根据你的项目结构自动生成一个基础CLAUDE.md。
✅ 应该包含:
- Claude无法猜测的Bash命令
- 与默认值不同的代码风格规则
- 测试指令和首选测试运行器
- 仓库礼仪(分支命名、PR约定)
- 项目特定的架构决策
- 开发者环境怪癖(必需环境变量)
- 常见陷阱或非显而易见的行为
❌ 不应该包含:
- Claude通过读代码就能弄清楚的东西
- 标准语言约定
- 详细的API文档(改为链接)
- 经常变化的信息
- 长解释或教程
黄金法则:对每一行问自己——"删除这个会导致Claude犯错吗?"如果不会,删掉它。膨胀的CLAUDE.md会导致Claude忽略你的实际指令!
六、配置权限:在安全和效率之间找到平衡
默认情况下,Claude Code对每个修改系统的操作都请求权限——安全但繁琐。到第十次批准时,你根本不是在审查,只是在点击通过。
三种减少中断的方式:
| 方式 | 说明 |
|---|---|
| Auto Mode | 分类器模型自动审查命令,只阻止高风险操作 |
| 权限白名单 | 允许已知安全的特定命令,如npm run lint |
| 沙箱 | 操作系统级隔离,在安全边界内让Claude自由工作 |
七、善用CLI工具和MCP服务器
CLI工具是与外部服务交互最context高效的方式。
- 用GitHub?安装
ghCLI,Claude知道如何用它创建issue、打开PR、读取评论 - Claude也能快速学习它不知道的CLI工具:用'foo-cli --help'学习工具,然后解决A、B、C
MCP服务器则让你连接Notion、Figma、数据库等外部工具,扩展Claude的能力边界。
八、管理会话:尽早且经常改正方向
- 尽早纠正——发现方向不对立即调整,不要等Claude跑远了再拉回来
- 积极管理context——定期开启新会话,避免旧对话中的噪声干扰
- 使用subagents进行调查——让子代理并行探索不同方案
- 使用检查点进行Rewind——在关键节点设置检查点,需要时可以回退
- 让Claude采访你——当你不确定需求时,让Claude反过来问你来澄清
九、避免常见失败模式
培养你的直觉。用得越多,你越能感知什么时候该规划、什么时候该直接执行、什么时候该开新会话。
关键原则:
- Context window快满时果断开新会话
- 复杂任务拆成小步骤,每步都有验证
- 给Claude的成功标准越清晰,结果越好
- 不要试图在一个会话中完成太多事情
总结:Claude Code的高效使用心法
| 原则 | 一句话 |
|---|---|
| 验证优先 | 给Claude自我检查的能力 |
| 规划先行 | 探索→规划→编码→提交 |
| 上下文精确 | 指令越具体,返工越少 |
| CLAUDE.md精炼 | 只写Claude猜不到的东西 |
| 权限平衡 | 用auto mode和白名单减少中断 |
| 工具扩展 | CLI + MCP让Claude更强大 |
| 会话管理 | 早纠正、勤清理、善用subagents |
Claude Code改变了你写代码的方式——从"自己写+AI审"变成"描述意图+AI构建"。但掌握这套新工作方式,需要时间和实践。
