恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Loop Engineering 实战:git worktrees 并行开发——先分房、再点火、拿全绿分支说话
首页
资讯中心
/
Loop Engineering 实战:git worktrees 并行开发——先分房、再点火、拿全绿分支说话
Loop Engineering 实战:git worktrees 并行开发——先分房、再点火、拿全绿分支说话
发布时间:2026/9/14 21:54:32
摘要:五条回路挤一个工作区会怎样?本文实战 git worktrees 并行开发:给五份任务书各分一间 worktree 机房,把单回路外环参数化成回路单元并行点火,用收敛看板聚合五条回路的轮次与退出码,最后逐条收割全绿分支。实录 62 条用例五路并进:四条一轮收敛,一条撞上自相矛盾的验收用例、两轮止损升级人审,人裁终点线后复核全绿,61 条收官。附 parallel-loops 技能,全流程可复现。本文要点(TL;DR)同一工作区装不下两条回路:裸并行实测三实锤——全量 check 成了任何单条回路都无法通过的终点线(各自全绿也下不了班,退出码照样 1)、信号互染(一条回路的验收现场里混着另一条回路改了一半的文件)、越界只差一句话授权(AI 修不修别人的活,取决于它对现场的解释)。git worktrees 是并行的物理基础:一个仓库摊开五间机房,共享.git对象库秒开省盘;分支独占检查(already used by worktree)白送一条防串台护栏;但 node_modules 各装各的(单间 69M × 5)、headless 信任逐机房登记——两个 ×N 成本要提前预算。多回路的终点线必须按回路切分:门禁裁决「全局 typecheck + lint 全量 + 本模块验收用例」,别人的红灯不进你的停止条件;提交权收在外环手里,AI 全程禁git commit,终点线复核全绿后才代写提交上分支。五路并行实录:4 条一轮收敛(176~316 秒),1 条撞上自相矛盾的验收用例(同输入两个期望值),两轮失败数锁死 1 触发止损升级人审。止损恢复的正道是人裁终点线、再起一轮回路复核收敛——改验收永远是人的职责。从点火到 61 条全绿收官,33 分钟。急着上手:直接跳到第七节「快速上手:两条回路的最小农场」,两个小活、四个步骤今晚就能跑;想知道为什么这么设计,往下按顺序读。实战十五我们把「完成」的裁判权从 AI 嘴里拿了回来:20 条机器可判定的验收用例当终点线,Stop hook 拦住带红灯下班,headless 外环无人值守收敛——一条回路,446 秒,退出码 0。问题紧接着就来了:这条回路再自律,一次也只能转一条。迭代间隙攒下五个小活,两个 bug、两个新功能、一个重构,怎么办?排队串行,一夜只跑完一条终点线;塞进同一个工作区并行,两条会话踩着彼此的现场干活。工作区是单例资源,回路却天然可以并行——本篇把最后一样东西从人手里交给机器:调度权。先说结论:把一个仓库用 git worktrees 摊开成五间机房,每间机房一条独立回路,下班前同时点火,一个下班时间跑完五条终点线,早上逐条收割全绿分支。全程实录,四绿一止损,止损的那条恰好演示了这套机制最值钱的部分。一、幕一:两条回路挤一个工作区,会发生什么先让踩脚有图有真相。实验项目loop-farm,一个 TypeScript 发票工具库,五个模块带病入库:金额大写藏着静默改账 bug(18/20)、日期算术全线偏移一天(4/13)、税额计算和 CSV 导出是 TODO 骨架(0/11、0/10)、Luhn 校验能跑但写得绕(8/8,待重构)。62 条验收用例人核过,npm run check基线 32 红 30 绿,typecheck 与 lint 全绿。环境:Node v22.23.1、TypeScript 5.9.3、vitest 3.2.7、git 2.45.1、claude CLI 2.1.218。裸并行的做法和日常派活一模一样:主工作区里同时起两条 headless 会话,一条修金额 bug,一条实现 CSV,完成标准都写「npm run check全绿」。9 分钟时间盒,收上来三份实锤。实锤一:信号互染。修金额的会话在报告里写:「我实跑git status时观察到src/csv.ts正被 B 回路同步修改」。同一个工作区里,A 的验收现场混着 B 的半成品——你看到的红,未必是你自己的病。实锤二:没有人能完成的终点线。两条会话各自把活干到了全绿(amount 20/20、csv 10/10),但全量 check 退出码是 1——总账里还躺着另外三个模块的 22 条红灯。同工作区并行时,全量 check 成了一条任何单条回路都永远无法通过的终点线:干完自己的活下不了班,这不是哪个 AI 偷懒,是结构性死结。实锤三:越界只差一句话。实现 CSV 的会话在报告里写:「如果需要我顺手收掉,说一声,我就按 TDD 逐个修(tax 11 条 → datefmt 9 条 → amount 2 条)」。它这次没越界,是因为仓库里五份任务书的可写区条款拦着;换一个没有任务书的仓库,AI 修不修别人的活,取决于它对现场的解释,而解释权在它手里。顺带收获一个实战十五同款坑的放大版:headless 在未信任目录会整批忽略 settings 白名单(实战十五踩过),而信任跟着目录走,不跟着仓库走——新目录都要单独登记。这个坑到幕二会变成五倍。二、幕二:分房——git worktrees 五条命令开五间机房踩脚的根源是物理上共处一室,纪律条款只能防守,不能根治。解法是把一个仓库摊开成多个工作区:gitworktreeadd../loop-farm-w1-btask/amount-buggitworktreeadd../loop-farm-w2-btask/datefmt-buggitworktreeadd../loop-farm-w3-btask/tax-featuregitworktreeadd../loop-farm-w4-btask/csv-featuregitworktreeadd../loop-farm-w5-btask/checksum-refactorgitworktree listgit worktree是 git 自带的原生能力(本文用 git 2.45.1):一个仓库、多个工作目录,每间机房是完整可跑的项目目录,五个分支互不干扰,共享同一套提交历史。它和两个常见替代方案的差别值得一张表:方案隔离什么代价