Anthropic 团队4月份发布的「Claude Code: Best practices for agentic coding」,我自己隔一段时间就会重新打开读一遍,每次都有新收获,所以想重新写一篇解读,跟大家共享。
Claude Code: Best practices for agentic coding
https://www.anthropic.com/engineering/claude-code-best-practices
在这篇文章中团队分享了如何高效使用 Claude Code 的最佳实践指南。Claude Code 是一个面向程序员的“智能助手”,可以帮助开发者更高效地编写代码、管理项目、处理 Git 和 GitHub 操作等。它的设计初衷是提供灵活、低层次的工具,允许用户自由定制工作流程,同时保持安全性和可控性。
- 定制你的开发环境
Claude Code 的强大之处在于它能根据你的项目环境自动拉取上下文,但你需要做一些设置来让它更高效。
创建 CLAUDE.md 文件
这是一个特殊的文件,Claude 会自动读取其中的内容作为上下文。你可以在里面写下:
· 项目常用的命令(比如 npm run build)
· 代码风格指南(比如用 ES 模块而非 CommonJS)
· 测试或提交代码的注意事项
· 开发环境配置(比如用哪个版本的 Python)
你可以把 CLAUDE.md 放在项目根目录、子目录或家目录(~/.claude/CLAUDE.md),甚至在 monorepo 中多层放置。文件内容要简洁明了,方便 Claude 和团队成员理解。可以用 /init 命令让 Claude 自动生成一个初始版本。
优化 CLAUDE.md
就像写 Prompt 一样,CLAUDE.md 的内容需要不断调整。你可以用 # 快捷键让 Claude 自动记录常用命令或风格指南到文件中。Anthropic 团队还会用“提示优化器”来改进 CLAUDE.md 的指令,比如加粗 “IMPORTANT” 来强化某些规则。
设置工具白名单
Claude Code 默认会对修改文件的操作或运行某些命令(如 git commit)请求许可,以确保安全。你可以通过以下方式调整白名单:
· 在运行时选择“总是允许”
· 用 /permissions 命令添加常用工具
· 编辑 .claude/settings.json 或全局 ~/.claude.json
· 用 --allowedTools 命令行参数临时设置
用 GitHub CLI(gh)
如果你用 GitHub,安装 gh 工具可以让 Claude 更方便地创建 issue、PR 或查看评论。如果没有 gh,Claude 也能通过 API 或其他工具访问 GitHub。
- 给 Claude 更多工具
Claude Code 能利用你的 shell 环境和外部工具,变得更强大。
用 Bash 工具
Claude 可以直接用你环境里的 Bash 工具(比如 grep、awk 或自定义脚本)。但你需要:
· 告诉 Claude 工具的名称和用法
· 让它运行 --help 查看工具文档
· 把常用工具写进 CLAUDE.md
用 MCP
Claude 支持 MCP 协议,可以连接到外部服务器(如 Puppeteer 或 Sentry)来执行复杂任务。你可以在项目或全局配置文件中添加 MCP 服务器,或者在代码库里共享 .mcp.json 文件。用 --mcp-debug 标志可以帮助调试配置问题。
自定义斜杠命令
你可以在 .claude/commands 文件夹里创建 Markdown 文件,定义重复性工作流程的模板(比如调试、分析日志)。这些模板会变成 / 开头的命令,方便调用。比如,创建一个 /fix-github-issue 命令,自动拉取并修复 GitHub issue。
- 常见工作流程
Claude Code 没有强制的工作流程,但社区总结了一些高效的模式:
探索 → 计划 → 编码 → 提交
适合大多数任务:
-
让 Claude 先读相关文件或资料(比如“读 logging.py”),但别急着写代码。
-
要求 Claude 制定计划,用 “think” 或 “think harder” “ultra think”触发更深入的思考。
-
确认计划后,让 Claude 写代码并验证。
-
最后让 Claude 提交代码并创建 PR。
先写测试 → 提交 → 写代码 → 迭代 → 提交
适合测试驱动开发(TDD):
-
让 Claude 写测试用例,确保不包含实现代码。
-
运行测试,确认失败。
-
提交测试。
-
让 Claude 写代码直到通过测试,可能需要几轮迭代。
-
提交代码。
写代码 → 截图 → 迭代
适合需要视觉效果的任务:
-
给 Claude 提供设计稿(通过截图、拖放图片或文件路径)。
-
让 Claude 实现代码,截图结果并与设计稿对比。
-
迭代直到匹配设计稿。
“安全 YOLO”模式
用 --dangerously-skip-permissions 跳过所有权限检查,适合快速修复 lint 错误或生成样板代码。但要小心,最好在隔离的容器(如 Docker)里运行,防止意外修改或数据泄露。
代码库问答
适合新手快速上手项目,问 Claude 类似“日志系统怎么工作?”或“某行代码为什么这样写?”的问题。它会自动搜索代码库回答,省去翻文档的麻烦。
Git 和 GitHub 操作
Claude 可以处理:
· 查看 Git 历史(比如“v1.2.3 包含了哪些改动?”)
· 写提交信息
· 处理复杂 Git 操作(如解决 rebase 冲突)
· 创建 PR、修复代码审查评论、修复 CI 失败或 lint 警告
Jupyter 笔记本
Claude 可以读写 Jupyter 笔记本,分析输出(包括图片),还能优化笔记本的视觉效果,适合数据科学家。
- 优化你的工作流
一些通用的技巧能让 Claude Code 更好用:
明确指令
越具体的指令,效果越好。比如,别说“加个测试”,而是说“为 foo.py 写一个测试,覆盖用户未登录的边界情况”。
提供图片
Claude 能处理截图、设计稿或图表,方便 UI 开发或调试。可以用拖放、复制粘贴或提供文件路径。
指定文件
用 tab 补全快速指定文件或目录,让 Claude 知道要处理哪些资源。
提供 URL
给 Claude 提供文档或网页链接,加快上下文获取。用 /permissions 避免重复授权同一域名。
及时纠错
· 让 Claude 先做计划,确认后再编码。
· 用 Esc 键中断 Claude 的操作,调整指令。
· 双击 Esc 回溯历史,修改之前的 Prompt。
· 让 Claude 撤销更改,尝试新方案。
用 /clear 清空上下文
长时间会话可能积累无关信息,用 /clear 重置上下文,保持 Claude 专注。
用清单和草稿
复杂任务(如修复多个 lint 错误)可以用 Markdown 文件作为任务清单,让 Claude 逐一处理并标记完成。
传递数据
可以通过复制粘贴、管道输入(cat foo.txt | claude)、命令行工具或 URL 给 Claude 提供数据。
- 无头模式(Headless Mode)
无头模式适合自动化任务,比如 CI 流水线或预提交钩子。用 -p 标志指定 Prompt,配合 --output-format stream-json 获取结构化输出。常见用途:
· Issue 分类:自动为新 GitHub issue 添加标签。
· 代码审查:检查代码中的拼写错误、过时注释或命名问题。
- 多 Claude 协作
可以让多个 Claude 实例并行工作,提升效率:
一个写代码,另一个审查
让一个 Claude 写代码,另一个审查或写测试,分担上下文负担。可以用 Markdown 文件让它们“交流”。
多个 Git 分支
在不同文件夹 checkout 多个分支,每个分支跑一个 Claude,处理独立任务。
用 Git Worktrees
在同一代码库创建多个工作树,每个 Claude 在不同分支或任务上并行工作,避免冲突。
无头模式自动化
· 分散任务:让 Claude 生成任务列表(如迁移 2000 个文件),然后逐个调用 Claude 处理。
· 流水线集成:将 Claude 的 JSON 输出接入现有处理流程。
总结
Claude Code 是一个灵活的工具,能大幅提升编码效率,但需要你主动优化它的使用方式。核心是:
· 通过 CLAUDE.md 和白名单定制环境
· 结合 Bash、MCP 和自定义命令扩展功能
· 选择适合的工作流程(探索-计划-编码、TDD、视觉迭代等)
· 提供具体指令、图片、文件或 URL
· 及时纠错、清理上下文、用清单管理复杂任务
· 利用多 Claude 协作或无头模式处理大规模任务
文章鼓励你实验并分享自己的最佳实践,Anthropic 团队也在不断从用户反馈中学习。
