Skip to content

同时并行开发多个功能

本节信息

讲师 Elie Schoppik(Anthropic)· 时长 11:52 · ▶ 原视频

🎧 听本节
0:00 / 0:00

你可以开多个 Claude Code 会话,并行地做很多功能。为了管好这些会话、避免它们改同一个文件造成覆盖,你可以用工作树(Git worktree)。这一节,我们就用工作树并行给聊天机器人加三个功能。

先做一个自定义斜杠命令

前面看到 Claude Code 内置了不少斜杠命令(slash command),但你也能自己造

做自定义命令,要在 .claude 文件夹里新建一个 commands 文件夹,里面放一个 markdown 文件、文件名就是命令名。我要做的命令叫 implement feature,于是建一个 implement-feature.md

文件里想写什么都行。有个特别的地方:如果你想给自定义命令传参数,可以用 $ARGUMENTS 这个变量来引用。我这里写的意思是:这个命令一被调用,就表示「你要实现一个新功能」,具体什么功能由用户传进来;同时确保只针对前端功能做,并把改动写进 frontend-changes.md

注意,这里写的内容不会自动进入你的上下文(这点和 CLAUDE.md 不同)。所以:想让某些东西应用到每一个 Claude Code 实例,写进 CLAUDE.md;只是时用时不用的特定命令,放这里就很合适。

为什么需要工作树

来聊聊怎么并行用 Claude Code。我们不只是开一堆终端窗口、都直接在这个代码库上干——因为如果有两个 Claude Code 实例改同一个文件,就会互相覆盖、制造 bug、一团乱

好在 Git 有个绝佳的功能叫 worktree(工作树)。工作树能让我本质上创建代码库的多份副本、各自隔离地干活,最后再合并到一起。而且,合并和管理这些工作树,我也能让 Claude 来帮忙。

建三个工作树,三路并行开工

我先建一个文件夹叫 .trees,用 git worktree add 往里加三个工作树:ui_featuretesting_featurequality_feature,给每个各开一个终端、各开一个 Claude。

下面这个示意,把「建树 → 并行开工 → 各自提交 → 合并 → 解决冲突」整套流程走了一遍:

main 分支
🌳 ui_feature
深 / 浅色主题切换
style.cssapp.jspyproject.toml
已创建
🌳 testing_feature
补 FastAPI 端点测试
tests/test_api.py
已创建
🌳 quality_feature
接入 black 等质量工具
pyproject.toml
已创建
1/6git worktree add 在 .trees/ 下建三个隔离的工作目录,各自一个分支。

教学示意:工作树 = 同一仓库的多份隔离副本,并行干活、最后合并。合并冲突也能交给 Claude 处理。

  • 第一个工作树:用 implement-feature 命令,加一个深色/浅色主题切换的开关
  • 第二个工作树:增强现有测试框架、为 FastAPI 端点补充更多测试
  • 第三个工作树:给开发流程加上一些必要的代码质量工具

注意:pyproject.toml 这个文件在两个不同的工作树里都被改了,所以待会儿合并时可能会有冲突。

合并:让 Claude 处理冲突

全部做完后,先把这些零散改动各自 add、commit,配上描述性的提交信息——因为我们要合并这些提交,得让每个工作树里做了什么一目了然。

小贴士:如果你发现自己老在写「add 并 commit、配描述性信息」这种提示词,这又是一个适合做自定义命令的场景。

三个都提交完,回到 main 分支。我让 Claude:git merge.trees 里所有工作树合并进来,有冲突就修掉。

  • testing_feature:没有冲突。
  • ui_feature:合并进来。
  • quality_feature:这里有冲突——正是之前那个 pyproject.toml

那就让 Claude Code 分析这些冲突、完成合并。这时候有测试也很值钱:合并完能跑测试,确认代码库如期工作。完事后我可以让它删掉这些工作树,也可以留着备用。

回浏览器确认:现在有了漂亮的主题切换,浅色、深色都在。我已经能横跨整个技术栈做改动,连 linting 和 DevOps 那块也搞定了,全程没有覆盖、没有恼人的麻烦——靠的就是 Git worktree 的威力。

下一节,我们会看看怎么在终端之外用 Claude Code——通过和 GitHub 的集成来评审拉取请求(pull request)、做改动。