十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

get-shit-done如何实现数千行代码并行执行?波次执行与git worktree隔离原理详解

get-shit-done如何实现数千行代码并行执行?波次执行与git worktree隔离原理详解 get-shit-done如何实现数千行代码并行执行波次执行与git worktree隔离原理详解【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-doneget-shit-doneGSD是一款面向 Claude Code 的轻量级、spec 驱动开发系统它通过**波次执行wave-based parallel execution**与git worktree 隔离两大机制让多个 AI 子代理安全地并行编写数千行代码、互不冲突。本文将用通俗的方式讲清这套并行架构的原理与关键实现。为什么需要并行单线程 AI 开发的瓶颈传统 AI 编程助手一次只改一处代码大需求只能串行推进——既慢又容易撑爆上下文窗口。get-shit-done 的解法是把一个阶段Phase拆成多个独立计划Plan每个计划只负责一小块明确声明的文件改动按依赖关系把计划分到若干波次Wave无依赖的计划同波并行有依赖的排入后续波次每个计划由一个全新上下文的子代理executor在独立 git worktree 中执行上下文互不污染文件系统互不干扰。这样一个阶段的数千行代码就能在多代理的接力冲刺中快速落地。波次执行原理计划如何被分配到 Wave波次信息在规划阶段就已写入每个计划的元数据。planner 会为计划生成 frontmatter其中三个字段是后续并行调度的依据wave所属波次、depends_on依赖的计划、files_modified将改动的文件清单规划流程详见 get-shit-done/workflows/plan-phase.md。分组规则直观得像施工排期表无依赖的计划 → Wave 1并行开工依赖 Wave 1 的计划 → Wave 2等上一波全部验收后才开始波次间严格串行、波次内并行类似软件构建的分阶段流水线真正执行时由 get-shit-done/workflows/execute-phase.md 定义的编排器orchestrator完成六个动作发现计划 → 分析依赖 → 分组波次 → 派生代理 → 处理检查点 → 收集结果。编排器本身不写代码、只负责调度因此开销极小。其中有两道关键安全闸波次安全校验指定执行 Wave N 时若更低波次仍有未完成计划系统会直接停止并提示先完成前面的波次防止跳级执行破坏依赖链波次内文件重叠检测派生前两两比对同波次所有计划的files_modified一旦发现两个计划碰同一个文件该波次自动整体降级为串行——这是对规划失误的兜底保护。git worktree 隔离并行不冲突的核心git worktree 是 git 官方特性允许同一个仓库同时检出多份工作树各自独立目录、独立分支共享同一份对象库——比 clone 多份仓库更省空间切换也更快。get-shit-done 的隔离流程分为四步逐计划决策每个计划派生前先执行 per-plan worktree 决策。若计划要改动的路径与 git submodule 路径相交worktree 对 submodule 支持有限则仅该计划放弃隔离、退回主工作树串行执行其余计划照常并行——隔离粒度精确到单个计划。派生独立环境并行模式下每个 executor 子代理在专属 worktree 中工作分支名强制为worktree-agent-id命名空间提交前还会校验 HEAD 分支名防止串号或误提交到错误分支。波末统一合流一个波次全部完成后编排器把各worktree-agent-*分支逐一合并回主分支再执行git worktree remove清理临时工作树。Wave N 的 worktree 必须全部移除后Wave N1 才能派生保证提交历史干净可追溯。单一写者原则worktree 模式的代理不碰共享状态文件STATE.md / ROADMAP.md由编排器在合并后统一更新一次避免最后写入者覆盖的经典并发 bug。底层安全策略worktree 根目录解析、孤儿清理等由 get-shit-done/bin/lib/worktree-safety.cjs 负责SDK 侧的波次清理与孤儿收割入口在 sdk/src/query/worktree.ts架构决策背景见 docs/adr/0004-worktree-workstream-seam-module.md。当并行出问题时多层安全网 ⛑️并行系统最怕静默损坏GSD 为此设计了完整防御层异常场景应对机制波次内文件冲突files_modified重叠检测自动降级串行合并后冲突或测试失败立即询问修复还是继续明确警告失败会向后续波次指数级放大上次会话崩溃残留的 worktreereap-orphans收割孤儿仅当 PID 已死 分支已合并 锁定超 5 分钟才清理绝不误删非 worktree 计划的并发写同波次内强制串行只有 worktree 计划可真正并行执行过程黑盒每个波次/计划边界输出[checkpoint]心跳全程可观测、可断点续跑另外并行代理提交时跳过 pre-commit hook避免锁竞争改由编排器在每个波次结束后统一补跑一次 hook 验证既保速度又保质量。如何开启最快上手配置指南GSD 默认开启全部并行能力普通用户只需两步运行/gsd-plan-phase完成规划——planner 会自动标注每个计划的 wave 与依赖关系运行/gsd-execute-phase即可也可用--wave N只执行指定波次方便逐波验收。如需调整行为可修改配置字段说明见 docs/CONFIGURATION.mdworkflow.use_worktrees: false— 关闭 worktree 隔离退回纯串行执行parallelization.enabled: false— 关闭波次内并行。完整功能需求定义可参考 docs/FEATURES.md 的 REQ-EXEC 与 REQ-WORKTREE 章节子代理的行为契约见 agents/gsd-executor.md。总结值得借鉴的并行工程思想get-shit-done 把AI 并行写代码这件容易失控的事做成了可预测的工程流程。核心思想可以提炼为三句话波次切分用显式依赖图把任务切成波次间串行、波次内并行的确定性流水线worktree 隔离给每个并行代理独立的沙盒工作区从文件系统层面消灭写冲突编排器单点写共享状态只由调度者统一维护子代理只做局部工作并汇报结果。这套规划元数据 隔离执行 波末合流的模式对任何想做多 Agent 协作的系统都有很强的参考价值。【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-done创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表