Claude Code 最佳实践
参考文章:
Claude Code 是一个底层且不带偏见的工具,提供接近原始模型访问的能力,具有高度的灵活性、可定制性和可脚本化特性。本文总结了 Anthropic 工程团队验证的实践模式。
1. 定制你的设置
优化环境配置以减少上下文收集的时间和 Token 消耗。
创建 CLAUDE.md 文件
Claude 会自动将此文件拉入上下文,是记录以下信息的理想场所:
- 常用的 Bash 命令
- 核心文件和工具函数
- 代码风格指南
- 测试说明
- 仓库礼仪(如分支命名、merge vs rebase)
- 开发环境设置
- 项目特有的警告或异常行为
- 其他希望 Claude 记住的信息
文件放置位置:
- 仓库根目录:最常见。推荐提交到 git (
CLAUDE.md) 或本地忽略 (CLAUDE.local.md) - 父目录:适用于 Monorepos,多个文件都会被自动拉入
- 子目录:当在子目录工作时按需拉入
- 用户主文件夹 (
~/.claude/CLAUDE.md):应用于所有会话
调整 CLAUDE.md 文件
不要盲目添加大量内容,应像优化提示词一样迭代改进:
- 使用
#键指令让 Claude 自动将内容写入相关的CLAUDE.md - 可以使用 "IMPORTANT" 或 "YOU MUST" 等词汇强调指令以提高遵守率
管理允许的工具列表
默认情况下,Claude Code 会请求可能修改系统的操作的权限。你可以自定义白名单:
- 在提示时选择 "Always allow"
- 使用
/permissions命令 - 手动编辑
.claude/settings.json(推荐提交到代码库)或~/.claude.json - 使用
--allowedToolsCLI 标志进行特定会话设置
安装 gh CLI
如果你使用 GitHub,安装 gh CLI 可以让 Claude 更好地处理 Issues、PR 等交互。
2. 给 Claude 更多工具
使用 Bash 工具
Claude 继承你的 Bash 环境。对于自定义工具:
- 告诉 Claude 工具名称和用法示例
- 让 Claude 运行
--help查看文档 - 在
CLAUDE.md中记录常用工具
使用 MCP (Model Context Protocol)
Claude Code 既可作为 MCP 服务器也可作为客户端。连接方式包括:
- 项目配置
- 全局配置
- 检入代码库的
.mcp.json文件(团队共享)
使用 --mcp-debug 标志有助于调试配置问题。
使用自定义斜杠命令
在 .claude/commands 文件夹中存储 Markdown 模板,通过 / 调用。支持 $ARGUMENTS 关键字传递参数。例如创建一个 /project:fix-github-issue 命令来自动修复 GitHub Issue。
3. 尝试常见工作流
探索、规划、编码、提交
适用于大多数问题的多功能流程:
- 读取:让 Claude 读取相关文件/图片/URL,明确告知暂时不要写代码。此时适合使用子代理来验证细节
- 规划:使用 "think" 触发扩展思考模式。根据复杂度可用 "think hard" / "think harder" / "ultrathink"。可以将计划保存为文档或 GitHub Issue
- 实现:让 Claude 实施解决方案
- 提交:让 Claude 提交并创建 PR,更新相关文档
写测试、提交;写代码、迭代、提交 (TDD)
Anthropic 内部推崇的工作流:
- 写测试:基于输入/输出对,明确告知不要写实现代码(甚至 mock 也不要)
- 确认失败:运行测试确认失败
- 提交测试
- 写代码:让 Claude 编写代码通过测试,禁止修改测试,直到所有通过。可以让子代理独立验证实现是否过拟合
- 提交代码
写代码、截图结果、迭代
适用于视觉目标:
- 提供截图工具(如 Puppeteer MCP)
- 提供视觉模型(设计稿)
- 让 Claude 实现并截图,直到匹配模型
- 提交
安全的 YOLO 模式
使用 claude --dangerously-skip-permissions 跳过所有权限检查(如修复 lint 错误)。
风险警告
此模式有数据丢失或系统损坏风险。建议在无网络访问的容器中运行。
代码库问答
用于新项目上手,询问你会在结对编程中问的问题:
- 日志是如何工作的?
- 如何创建新的 API 端点?
- 这段代码处理的边缘情况是什么?
使用 Claude 与 Git 交互
Anthropic 工程师 90% 的 git 操作由 Claude 完成:
- 搜索 git 历史(如 "谁拥有这个功能?")
- 撰写提交信息
- 处理复杂操作(解决冲突、应用补丁)
使用 Claude 与 GitHub 交互
- 创建 PR(理解 "pr" 简写)
- 一键修复代码审查评论
- 修复构建失败或 linter 警告
- 分类和整理 Issues
使用 Claude 处理 Jupyter Notebooks
Claude 可以解释输出(包括图片)。建议在 VS Code 中并排打开 .ipynb 文件。可以让 Claude 整理或美化笔记本(使用 "aesthetically pleasing" 提示)。
4. 优化你的工作流
指令要具体
具体的指令能显著提高成功率,避免后期纠偏。
- ❌ 差:
add tests for foo.py - ✅ 好:
write a new test case for foo.py, covering the edge case where the user is logged out. avoid mocks
给 Claude 图片
- 粘贴截图(macOS:
cmd+ctrl+shift+4,然后ctrl+v粘贴) - 拖拽图片
- 提供图片文件路径
提及文件名
使用 Tab 补全快速引用文件或文件夹。
给 Claude URLs
粘贴 URL 让 Claude 获取。可以使用 /permissions 将域名加入白名单以避免重复提示。
尽早且经常纠偏
作为积极的协作者参与:
- 让 Claude 先做计划,再写代码
- 按
Escape中断 Claude 任何阶段 - 双击
Escape回退历史记录并编辑提示 - 让 Claude 撤销更改
使用 /clear 保持上下文聚焦
在长会话中,上下文窗口可能充斥无关内容。在任务之间频繁使用 /clear 重置。
使用清单和草稿本处理复杂工作流
对于大型任务(如迁移、修复大量 lint 错误),让 Claude 使用 Markdown 文件或 GitHub Issue 作为清单和草稿本。
将数据传入 Claude
- 直接复制粘贴
- 管道传入 (
cat foo.txt | claude) - 让 Claude 通过 bash/MCP 拉取数据
- 让 Claude 读取文件或 URL
5. 使用无头模式自动化基础设施
使用 -p 标志启用非交互式模式(如 CI、pre-commit hooks)。
用于 Issue 分类
由 GitHub 事件触发自动化,例如自动为新 Issue 打标签。
作为 Linter
提供主观代码审查,检测传统 linter 无法发现的问题(如拼写错误、误导性命名等)。
6. 多 Claude 工作流升级
一个写代码,另一个验证
- Claude A 写代码
- Claude B 审查或测试
- Claude C(或清除后)根据反馈编辑代码
分离上下文通常比单个 Claude 处理所有事情效果更好。
使用多个代码检出
创建 3-4 个 git checkouts,在不同终端标签页中分别运行 Claude 处理不同任务,循环检查进度。
使用 Git Worktrees 实现并行处理
Git Worktree 允许在同一仓库的不同目录中检出多个分支,共享 .git 对象数据库,是多 Claude 并行开发的最佳搭档。详见 Git Worktree 并行处理。
结合无头模式与自定义工具
扇出:处理大规模迁移。让 Claude 生成任务列表,然后循环调用 Claude 处理每个任务。
流水线:claude -p "prompt" --json | your_command,集成到现有处理管线中。
总结
Claude Code 是一个强大的工具,其核心在于灵活性和可定制性。通过精心配置 CLAUDE.md、掌握特定工作流(如 TDD 和迭代截图)、以及利用多实例并行处理,开发者可以大幅提升编码效率。建议从保守的权限设置开始,逐步探索适合自己团队的工作模式。