Contents

Claude官方文档:可能是最早提出Git Worktrees并行的出处

近日,我们正式推出了 Claude Code——一款面向 Agent 编程(Agentic Coding)的命令行工具。作为一个研究性项目,Claude Code 旨在为 Anthropic 的工程师和研究人员提供一种更原生、更自然的方式,将 Claude 深度集成到编程工作流中。

Claude Code 的设计初衷主打底层与开放(unopinionated):它提供接近模型原生的访问权限,而不强制绑定特定的工作流。这种设计理念造就了一款灵活、可定制、可脚本化且安全的“重型利器”。当然,这种高度的灵活性也带来了一定的学习门槛,尤其是对于刚接触 Agent 编程工具的工程师而言——至少在他们摸索出适合自己的最佳实践之前是如此。

本文总结了一系列行之有效的通用模式。这些经验不仅源自 Anthropic 内部团队,也来自于在不同代码库、语言和环境中试用 Claude Code 的外部工程师。请注意,此清单并非金科玉律,也无法放之四海而皆准;请将其视为出发点,鼓励大家大胆尝试,探索最适合自己的用法。

若需更详尽的信息,请查阅我们的完整文档 (claude.ai/code)


1. 定制你的配置 (Customize your setup)

Claude Code 是一位能够自动将上下文拉入提示词(Prompt)的编程助手。这种上下文收集虽然耗时且消耗 Token,但通过环境调优,你可以显著提升其效率。

a. 创建 CLAUDE.md 文件

CLAUDE.md 是一个特殊文件,Claude 在启动对话时会自动将其读取到上下文中。它是记录以下信息的理想场所:

  • 常用的 Bash 命令
  • 核心文件和实用函数
  • 代码风格指南
  • 测试指令
  • 仓库协作规范(如分支命名、Merge 与 Rebase 的选择等)
  • 开发环境设置(如 pyenv 使用方法、编译器版本)
  • 项目特有的警告或异常行为
  • 其他你希望 Claude 始终记住的信息

CLAUDE.md 没有强制格式,建议保持简洁易读。例如:

# Bash commands
- npm run build: 构建项目
- npm run typecheck: 运行类型检查

# Code style
- 使用 ES modules (import/export) 语法,而非 CommonJS (require)
- 尽可能解构 import (例如 import { foo } from 'bar')

# Workflow
- 完成一系列代码更改后,务必运行类型检查
- 优先运行单个测试而非整个测试套件,以提升性能

你可以将 CLAUDE.md 放置在以下位置:

  1. 仓库根目录(最常见):命名为 CLAUDE.md 并提交到 Git,以便团队共享;或者命名为 CLAUDE.local.md 并加入 .gitignore 以作私用。
  2. 父级目录:适用于 Monorepo(单体大仓库)。例如在 root/foo 运行 Claude 时,它会同时读取 root/CLAUDE.mdroot/foo/CLAUDE.md
  3. 子目录:当你处理子目录中的文件时,Claude 会按需加载该子目录下的 CLAUDE.md
  4. 用户主目录 (~/.claude/CLAUDE.md):适用于所有 Claude 会话的全局配置。

提示:运行 /init 命令,Claude 会为你自动生成一个 CLAUDE.md 模板。

b. 调优 CLAUDE.md

CLAUDE.md 是 Prompt 的一部分,因此需要像优化常用 Prompt 一样对其进行打磨。常见的误区是堆砌大量内容而不验证其效果。请花时间实验,找出最能让模型遵循指令的写法。 在编码过程中,你可以随时按 # 键向 Claude 发出指令,它会自动将内容整理进相关的 CLAUDE.md 中。 在 Anthropic,我们经常微调指令(例如添加“IMPORTANT”或“YOU MUST”来强调),以提高合规度。

c. 精细化工具权限白名单

默认情况下,出于安全考虑,Claude Code 对任何可能修改系统的操作(如写文件、Bash 命令、MCP 工具等)都会采取保守策略,请求你的许可。你可以自定义白名单来放行已知安全的工具,或者那些容易撤销的操作(如文件编辑、Git 提交)。

管理权限的四种方式:

  1. 在会话提示时选择 “Always allow”(总是允许)。
  2. 使用 /permissions 命令添加或移除工具。例如添加 Edit 以允许所有文件编辑,或 Bash(git commit:*) 允许 Git 提交。
  3. 手动编辑 .claude/settings.json(建议提交到版本控制)或 ~/.claude.json
  4. 使用 CLI 参数 --allowedTools 进行临时授权。

d. 安装 GitHub CLI (gh)

Claude 懂得如何调用 gh CLI 来处理 Issue、PR 和评论。这是与 GitHub 交互最高效的方式。


2. 赋予 Claude 更多工具 (Give Claude more tools)

Claude 继承了你的 Shell 环境,这意味着你可以像武装自己一样,通过脚本、函数、MCP 和 API 来武装它。

a. 结合 Bash 工具

Claude 知道通用的 Unix 工具,但不知道你自定义的脚本。你需要:

  • 告知 Claude 工具名称及用法示例。
  • 让 Claude 运行 --help 查看文档。
  • 将常用工具记录在 CLAUDE.md 中。

b. 结合 MCP (Model Context Protocol)

Claude Code 既是 MCP 服务端也是客户端。它可以连接任意数量的 MCP 服务器来扩展能力。你可以通过项目配置、全局配置或提交到代码库的 .mcp.json 文件来配置它。

示例:在 .mcp.json 中添加 Puppeteer(浏览器自动化)和 Sentry 服务器,团队成员即可开箱即用。

c. 使用自定义 Slash 命令

对于重复性工作流(如调试循环、日志分析),可以将 Prompt 模板保存为 Markdown 文件放入 .claude/commands 文件夹。之后只需输入 / 即可在菜单中调用。 自定义命令支持 $ARGUMENTS 关键字来传递参数。

示例:自动修复 GitHub Issue 的命令模板

Please analyze and fix the GitHub issue: $ARGUMENTS.

Follow these steps:
1. Use `gh issue view` to get the issue details
2. Understand the problem...
...
8. Push and create a PR

将上述内容保存为 .claude/commands/fix-github-issue.md,你就可以通过 /project:fix-github-issue 1234 让 Claude 自动修复第 1234 号 Issue。


3. 常用工作流 (Common workflows)

Claude Code 不强制工作流,但在社区实践中,以下几种模式表现卓越:

a. 探索、规划、编码、提交 (Explore, plan, code, commit)

适用于大多数问题的全能模式:

  1. 探索:让 Claude 阅读相关文件,但明确告知暂不写代码。这也是利用“子 Agent”(Subagents)进行信息验证的好时机。
  2. 规划:让 Claude 制定解决方案。建议使用 “think” 关键词触发扩展思考模式(Extended Thinking),这会分配更多的计算预算来权衡方案。你甚至可以让它先生成一个文档或 Issue。
  3. 编码:让 Claude 实施方案,并在过程中自我验证。
  4. 提交:让 Claude 提交代码并创建 PR,同时更新 README 或 Changelog。

b. 测试驱动开发 (TDD: Write tests, commit; code, iterate)

这是 Anthropic 内部最受推崇的工作流,特别适合逻辑清晰的任务:

  1. 让 Claude 编写测试(明确告知是 TDD,避免它生成 Mock 实现)。
  2. 运行测试,确认失败(红灯)。
  3. 提交测试代码。
  4. 让 Claude 编写实现代码直到测试通过(绿灯)。
  5. 提交实现代码。 核心逻辑:给 Claude 一个明确的“目标函数”(测试用例),它就能通过不断迭代逼近正确答案。

c. 视觉反馈迭代 (Write code, screenshot result, iterate)

类似于 TDD,但目标是视觉效果:

  1. 赋予 Claude 截图能力(如 Puppeteer MCP)。
  2. 提供视觉稿(拖拽图片或提供路径)。
  3. 让 Claude 编码、截图、对比,直到结果与设计稿一致。

d. 安全狂飙模式 (Safe YOLO mode)

如果你需要 Claude 快速处理 Lint 错误或生成样板代码,可以使用 claude --dangerously-skip-permissions 跳过所有权限检查。 警告:此模式有风险。建议仅在无网络连接的容器环境中使用(如 Docker Dev Containers),以防范 Prompt 注入攻击或数据泄露。

e. 代码库问答与入职 (Codebase Q&A)

新入职工程师的神器。直接问 Claude:“日志系统怎么工作的?”、“foo.rs 第 134 行是干嘛的?”。它会自动搜索代码库并给出类似结对编程伙伴的解答。

f/g. Git 与 GitHub 深度集成

  • Git:搜索历史(“谁改了这个功能?")、撰写 Commit 信息、处理 Rebase 冲突。
  • GitHub:创建 PR、一键修复 Code Review 意见、分类 Issue。

h. Jupyter Notebooks

数据科学家的福音。Claude 可以读写 Notebook,甚至帮你美化图表。建议在 VS Code 中并排打开 Claude Code 和 .ipynb 文件。


4. 优化工作流 (Optimize your workflow)

a. 指令要具体

“Add tests for foo.py” (差) vs “Write a new test case for foo.py, covering the user logout edge case. Avoid mocks.” (好)。Claude 无法读心,指令越具体,返工越少。

b. 善用图片

粘贴截图(Mac: cmd+ctrl+shift+4 后 ctrl+v)、拖拽图片或提供文件路径。这对 UI 开发至关重要。

c. 提及文件名

使用 Tab 补全文件名,帮助 Claude 快速定位上下文。

d. 及时纠偏 (Course correct early and often)

  • Ask to plan:先规划,确认后再动工。
  • Esc 键:中断 Claude 的当前操作(思考、工具调用等)。
  • 双击 Esc:回退历史,修改上一个 Prompt 重新来过。
  • Undo:让 Claude 撤销更改。

e. 保持上下文清晰 (/clear)

长对话会积累大量噪音。在任务切换间隙,频繁使用 /clear 重置上下文,保持模型“清醒”。

f. 使用清单和草稿本 (Checklists and scratchpads)

对于复杂任务(如大规模重构),让 Claude 维护一个 Markdown 清单文件。每完成一项,勾选一项。


5. 无头模式:自动化基础设施 (Headless mode)

使用 claude -p "prompt" --output-format stream-json 可以在 CI/CD 或脚本中非交互式地运行 Claude。

  • Issue 分类:监听 GitHub 新 Issue,自动打标签。
  • 主观 Linter:进行传统 Linter 无法做到的代码审查(如检查变量名是否具有误导性、注释是否过时)。

6. 进阶:多 Claude 协同 (Multi-Claude workflows)

a. 结对编程 (Coder & Reviewer)

启动两个 Claude 实例:

  • Claude A 负责写代码。
  • Claude B 负责审查代码或写测试。
  • 让它们通过共享文件或草稿本进行“对话”。

b. 多目录并行

在不同的终端 Tab 中,针对同一仓库的不同目录运行 Claude,分别处理不同任务。

c. 使用 Git Worktrees

这是处理多个独立任务的终极方案。Git Worktrees 允许你从同一仓库检出多个分支到不同文件夹:

  1. git worktree add ../feature-a feature-a
  2. cd ../feature-a && claude
  3. 并在原目录同时运行另一个 Claude 处理 feature-b。 这样,两个 Claude 可以并行工作,互不干扰,无需等待。

d. 自定义自动化脚本 (Headless Harness)

利用无头模式编写脚本,实现:

  1. 扇出 (Fan-out):让 Claude 生成任务列表(如“迁移 2000 个文件”),然后循环调用 Claude 分别处理每个文件。
  2. 流水线 (Pipelining):将 Claude 的输出作为下一个工具的输入。

Claude Code 的强大之处在于它不仅仅是一个工具,更是一个可塑性极强的编程环境。希望这些模式能为你带来启发。