Claude Code 的最佳实践
Claude Code 的最佳实践涵盖了从基础配置到高级自动化和并行扩展的方方面面。以下是根据提供的资料整理的完整指南:
一、 核心原则:上下文与验证管理
Claude Code 的核心挑战在于其上下文窗口。随着对话增长,性能会因窗口填满而下降。
- 激进的上下文管理:
- 原则:在处理不相关的任务之间使用
/clear重置上下文。 - 示例:完成登录模块的调试后,在开始开发支付功能前运行
/clear。
- 原则:在处理不相关的任务之间使用
- 提供验证手段:
- 原则:这是提升效率最关键的一点。为 Claude 提供测试用例、截图或预期输出。
- 示例:不要只说“实现邮件验证”,而要说:“编写
validateEmail函数,包含测试用例:[email protected]为真,invalid为假,运行测试并确认通过”。
- 使用子代理(Subagents)隔离调查:
- 原则:让子代理在独立上下文中读取文件,主对话仅接收摘要,防止主上下文被大量文件内容淹没。
- 示例:输入“使用子代理调查身份验证系统如何处理令牌刷新”,让它研究后汇报结果。
二、 工作流最佳实践:先规划,后编码
为了避免 Claude 解决错误的问题,应将探索、规划与执行分开。
- 四阶段工作流:
- 探索(Explore):进入 Plan Mode,让 Claude 阅读文件并理解逻辑。
- 规划(Plan):让 Claude 创建详细的实施方案。使用
Ctrl+G在编辑器中直接编辑该计划。 - 实现(Implement):切换回 Normal Mode 进行编码,并根据计划进行验证。
- 提交(Commit):要求 Claude 编写描述性的提交信息并开启 PR。
- 示例:在添加 Google OAuth 时,先让 Claude 在计划模式下分析
src/auth目录,制定方案并确认后,再开始编写代码。
三、 环境配置:CLAUDE.md 与权限
通过持久化配置,可以让 Claude 自动遵循项目规范。
- 编写高效的 CLAUDE.md:
- 内容:包含项目特有的 Bash 命令、代码风格和工作流规则。
- 示例:在文件中加入“使用 ES modules (import/export) 语法”或“完成后务必运行类型检查”。
- 技巧:通过
/init自动生成初始版本,并定期精简。
- 配置权限与沙盒:
- 原则:使用
/permissions设置允许列表,减少频繁点击确认的干扰。 - 示例:将
npm run lint或git commit加入允许列表。
- 原则:使用
四、 高效沟通与提示词(Prompts)
精准的指令能显著减少校正次数。
- 引用特定上下文:
- 技巧:使用
@引用文件,或者粘贴报错截图。 - 示例:输入“参考
@HotDogWidget.php的模式,实现一个新的日历组件”。
- 技巧:使用
- 让 Claude 采访你:
- 原则:在开发大型功能前,先让 Claude 挖掘你没考虑到的细节。
- 示例:输入“我想构建[描述],请使用
AskUserQuestion工具深入采访我,包括技术实现、UI/UX 和权衡,直到覆盖所有内容并生成SPEC.md”。
五、 高级扩展:技能、钩子与 MCP
利用扩展工具打造半自动化的开发环境。
- 创建技能(Skills):
- 原则:将重复的复杂工作流保存为技能。
- 示例:创建一个
fix-issue技能,自动执行:查看 issue -> 搜索文件 -> 修复 -> 运行测试 -> 开启 PR。
- 设置钩子(Hooks):
- 原则:在特定事件(如编辑文件后)自动触发脚本。
- 示例:设置一个钩子,在每次编辑
.ts文件后自动运行eslint或prettier。
- 合理使用 MCP 服务器:
- 注意:MCP 会消耗大量上下文。建议配置多个但仅启用必要的(通常少于 10 个)。
- 示例:在处理数据库时启用 Supabase MCP,在其他任务中将其禁用。
六、 性能与令牌(Token)优化
对于重度用户,优化 Token 消耗能提升响应速度并降低成本。
- 模型分级选择:
- 原则:根据任务难度分配模型。
- 示例:使用 Haiku 进行简单的文件搜索(快速便宜),使用 Opus 处理跨 5 个以上文件的复杂架构决策。
- 模块化代码库:
- 优势:单个文件较短时,Claude 每次读取消耗的 Token 更少,且不容易“丢失记忆”。
- 示例:将上千行的“巨型文件”重构为数百行的独立模块。
七、 并行化与自动化扩展
当单人效率达到上限时,可以横向扩展 Claude 的工作量。
- 利用 Git Worktrees 进行并行开发:
- 技巧:为每个任务创建独立的工作区,开启多个 Claude 会话。
- 示例:在一个 Worktree 中修复 Bug A,在另一个中重构模块 B,两者互不干扰。
- 非交互模式(CLI):
- 示例:使用
claude -p "List all API endpoints" --output-format json在 CI 脚本或预提交钩子中自动运行 Claude。
- 示例:使用
八、 持续学习与记忆持久化
避免 Claude 在不同会话中重复同样的错误。
- 会话总结与恢复:
- 技巧:在任务跨越多个工作日时,使用
--continue或--resume恢复之前的对话。
- 技巧:在任务跨越多个工作日时,使用
- 自动提取经验:
- 原则:利用 Stop 钩子 在会话结束时分析学到的模式,并保存为新的技能。
- 示例:当解决了一个复杂的特定库 Bug 后,使用
/learn命令手动将该解决方法提取并保存到~/.claude/skills/learned/目录中。
⚠️ 常见失败模式(应避免)
- 大杂烩会话:在一个会话里处理多个无关任务,导致上下文被污染。
- 无效的重复校正:如果连续两次纠正无效,应
/clear并提供更清晰的初始 Prompt。 - 过度臃肿的 CLAUDE.md:包含太多 Claude 能自行发现的信息,导致重要规则被忽略。