# Claude Code 多任务的个人实践(一)
说个有趣的现象:用 Claude Code 干活的人,多少都会遇到这种等待时刻——它正在跑一个任务,你只能干瞪着屏幕等它输出,等 code review。说实话,Claude Code 在 max 模式下的速度着实谈不上快。这段时间里,要么摸鱼,要么就想琢磨怎么同时再开一个战场。

答案是完全可行。下面分享两种已经跑熟了的朴素并行方式:多开终端,以及同一个仓库里用 git worktree 并行。后续还会研究 subagent 并行——目前的版本在交互上好像不是特别友好,而且 Claude 的设计本身就会让每个任务触发多个子任务,所以没有细究。不过新版本会在后台跑子任务,值得继续跟进。
方式一:直接多开终端
最简单粗暴的一种。如果是两个完全独立的项目,自然会启动两个 Claude 终端。即便是在同一个项目里,如果你手头两个任务改的文件八竿子打不着——比如是非常独立的两块业务组件——那省事的办法也是直接开两个终端标签页,各自执行 claude。
这事儿听起来简单到不值一提,但很多人会习惯性地觉得"一个项目只能开一个 Claude Code"。其实只要不动同一批文件,两个实例互相之间毫无感知,各干各的,谁也不知道谁的存在。
这招唯一的限制就是:
改动不能有交集
方式二:同一个仓库里并行改,上 git worktree
多开终端解决的是"物理上开几个 Claude Code",但如果两个任务在
同一个仓库
git worktree 就是趁手的工具。
这东西到底是什么
git worktree 做的事情,说白了就是让同一个仓库在
好几个文件夹
.git 数据。就像下面这个结构:
复制代码Github/
├── robot-task/ ← 主目录,跑 feature/task-refactor
└── my-project-feature-next/ ← worktree,跑 feature/i18n-overflow
两边完全独立,互不打扰。一边跑着 Claude Code 处理任务重构,另一边可以同时开一个新的 Claude Code 搞多语言溢出适配。
有个坑必须提前说清楚
新建的 worktree 里的文件内容,是
基于目标分支最后一次 commit 的状态
所以如果打算开的新任务依赖当前 Claude Code 正在改、但还没提交的东西,别急着建 worktree,先等它跑完、commit 了再建,否则新目录里看到的还是旧代码,容易让人摸不着头脑。
具体怎么操作
主目录里 Claude Code 正跑着,别动那个终端,另开一个:
复制代码# 先确认当前在哪个分支
cd robot-task
git branch --show-current
# 假设输出:feature/task-refactor
然后基于当前状态开一个新 worktree,顺带建个新分支:
复制代码git worktree add ../my-project-feature-next -b feature/i18n-overflow
进新目录,装依赖,起第二个 Claude Code:
复制代码cd ../my-project-feature-next
yarn install # node_modules 不会跟过来,必须重装
claude # 一个全新的、独立的实例
两边各跑各的。等这边任务写完:
复制代码cd ../my-project-feature-next
git add .
git commit -m "feat: 多语种长内容溢出适配"# 回主目录合并
cd ../robot-task
git merge feature/i18n-overflow# 收尾,把 worktree 目录清掉
git worktree remove ../my-project-feature-next
git branch -d feature/i18n-overflow # 不想留这条分支就顺手删了
几个容易踩的坑
端口冲突
yarn start,都想抢 3000 端口,第二个直接指定别的端口:
复制代码PORT=3001 yarn start
或者干脆在 worktree 目录里丢个 .env.local 写死端口,省得每次手动指定。
node_modules 不会共享
node_modules 不会跟着分支一起搬过来,必须自己重新 install 一遍。git worktree remove 会把整个目录连 node_modules 一起删掉。
同一分支不能脚踏两条船
合并时机要挑对
什么场景用哪种
拍脑袋总结一下怎么选:
- 两个完全不搭边的项目,或者改动文件铁定没有交集 → 直接多开终端,最省事
- 同一个仓库,等 CI、等 review,同时想推进下一个功能 → worktree 走起
- 同一个需求拆了好几个独立模块,想并行搞完再合 → 每个模块各开一个 worktree,最后统一 merge 回主分支
核心逻辑就一句话:
只要文件不打架,Claude Code 想开几个开几个
预告
后续也会继续研究 Claude 的其他用法。还是很喜欢 Claude 终端的使用方式,但最近一直在用 Codex~不过老手艺不能丢,万一哪天 Codex 被禁了,还是得用回 Claude 终端。