尧图精选

get-shit-done 的 Cross-AI 计划收敛循环:用 gsd:plan-review-convergence 自动跑通「规划 → 多模型评审 → 修订」闭环

🕒 发布时间:2026/9/10 14:50:12 📁 来源:尧图网络
get-shit-done 的 Cross-AI 计划收敛循环用 gsd:plan-review-convergence 自动跑通「规划 → 多模型评审 → 修订」闭环【免费下载链接】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导读gsd:plan-review-convergence是 get-shit-doneGSD提供的一条高级工作流命令它将原本需要手动交替执行的「规划 → 跨 AI 评审 → 依据评审意见重规划」链条自动化gsd-plan-phase N → gsd-review N --codex → gsd-plan-phase N --reviews → gsd-review N --codex → …直到评审中不再残留 HIGH 级高严重度问题或达到最大循环次数为止。读完本文你将掌握该命令的完整运行机制参数解析与功能开关、CYCLE_SUMMARY 合约如何避免假停滞、停滞检测与升级门控的实现原理以及如何用 Codex、Gemini、本地 Ollama/LM Studio/llama.cpp 等多种审核者驱动同一套收敛循环。一、功能定位外层修订门取代内置 plan-checker从命令源文件 commands/gsd/plan-review-convergence.md 的objective可以看到该命令是一个外层的 revision gate包裹在gsd-review与gsd-planner之外反复执行用外部 AI CLI 评审计划 → 若发现 HIGH 级问题 → 用--reviews反馈重新规划 → 再次评审停止条件无 HIGH 级问题残留收敛或达到最大循环次数升级门控它取代了gsd-plan-phase内部自带的内联gsd-plan-checker改用独立的外部 AI 审核者Codex、Gemini 等做交叉验证。整个循环的每一步都运行在独立的隔离 Agent中由 Agent 调用既有的 Skillgsd-plan-phase、gsd-review。编排器Orchestrator本身只做五件事初始化、配置门检查、循环控制、解析 CYCLE_SUMMARY 中的 HIGH 数量、停滞检测与升级门控。核心工作流文档见 get-shit-done/workflows/plan-review-convergence.md。这一设计同时复用了项目中最基础的三个模式参考revision-loop.md 中的Check-Revise-Escalate模式最多 3 次迭代、问题数不降则提前升级gates.md 中的门类型分类法Pre-flight / Revision / Escalation / Abortagent-contracts.md 中的完成标记约定如 planner 输出## PLANNING COMPLETE。二、启用前置条件功能门默认关闭该功能默认关闭opt-in这是#2306-v2引入的安全策略。工作流第 1.5 步通过 SDK 查询配置键CONVERGENCE_ENABLED$(gsd-sdk query config-get workflow.plan_review_convergence 2/dev/null || echo false)若CONVERGENCE_ENABLED不为true则显示提示并退出gsd-plan-review-convergence is disabled (workflow.plan_review_convergencefalse). This feature automates the plan→review→replan loop using external AI reviewers. Enable it with: gsd config-set workflow.plan_review_convergence true Then re-run: /gsd:plan-review-convergence {PHASE}启用方式gsd config-set workflow.plan_review_convergence true该键在配置架构中正式注册见 config-schema.manifest.json 中的workflow.plan_review_convergence并在 docs/CONFIGURATION.md 中登记默认falsev1.39 起引入。测试 tests/plan-review-convergence.test.cjs 专门断言了默认必须为 falseopt-in以及必须展示启用指令这两个行为。三、参数解析与默认值工作流第 1 步从$ARGUMENTS提取以下参数参数含义默认值PHASE阶段编号支持小数如3.1必填--codex/--gemini/--claude/--opencode指定外部 AI 审核 CLI未指定任何审核者时默认--codex--ollama/--lm-studio/--llama-cpp指定本地模型服务器作为审核者—--all使用所有可用 CLI 与运行中的本地模型服务器—--max-cycles N最大「重规划 → 评审」循环次数3--text文本模式把AskUserQuestion替换为纯文本编号列表关闭--ws name转发给评审/重规划 Agent 的 workspace 参数—参数解析的参考实现工作流第 1 步PHASE$(echo $ARGUMENTS | grep -oE [0-9]\.?[0-9]* | head -1) REVIEWER_FLAGS echo $ARGUMENTS | grep -q \-\-codex REVIEWER_FLAGS$REVIEWER_FLAGS --codex # ... 其余审核者标志同理 ... if [ -z $REVIEWER_FLAGS ]; then REVIEWER_FLAGS--codex; fi MAX_CYCLES$(echo $ARGUMENTS | grep -oE \-\-max-cycles\s[0-9] | awk {print $2}) if [ -z $MAX_CYCLES ]; then MAX_CYCLES3; fi GSD_WS echo $ARGUMENTS | grep -qE \-\-ws\s\S GSD_WS$(echo $ARGUMENTS | grep -oE \-\-ws\s\S)注意--codex是默认审核者命令文档中明确写着 Use Codex CLI as reviewer (default if no reviewer specified)。测试command documents the workflow.plan_review_convergence config key与--codex is the default reviewer对此均有断言。本地模型审核者的配置三种本地服务器审核者的连接方式由配置键控制docs/CONFIGURATION.md 中均有登记配置键默认值说明review.ollama_hosthttp://localhost:11434Ollama 服务器地址OpenAI 兼容review.lm_studio_hosthttp://localhost:1234LM Studio 本地服务器地址review.llama_cpp_hosthttp://localhost:8080llama.cppllama-server地址review.models.ollama服务器默认传给 Ollama 的模型名如gsd config-set review.models.ollama codellamareview.models.lm_studio服务器默认LM Studio 模型名review.models.llama_cpp服务器默认llama.cpp 模型名review.models.cli通用地把一个审核 flavor 映射为 shell 命令如review.models.codex可配置为codex exec --model gpt-5。这些键同样注册在 config-schema.manifest.json测试对review.ollama_host、review.models.llama_cpp等键的存在性逐一断言。四、初始化与阶段校验Pre-flight Gate工作流第 2 步调用gsd-tools.cjs完成初始化INIT$(node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs init plan-phase $PHASE) if [[ $INIT file:* ]]; then INIT$(cat ${INIT#file:}); fi解析返回 JSON 中的字段phase_dir、phase_number、padded_phase、phase_name、has_plans、plan_count、commit_docs、text_mode、response_language。若设置了response_language后续所有面向用户的输出都应使用该语言若--text存在或text_mode为true则进入TEXT_MODE所有AskUserQuestion调用替换为纯文本编号列表让用户输入选项编号。第 3 步是阶段校验Pre-flight Gate对应 gates.md 的入口处用低成本确定性检查阻止无效工作原则PHASE_INFO$(node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs roadmap get-phase ${PHASE})若found为 false则列出可用阶段并退出。校验通过后显示启动横幅━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ GSD ► PLAN CONVERGENCE — Phase {phase_number} ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Reviewers: {REVIEWER_FLAGS} Max cycles: {MAX_CYCLES}五、初始规划门无计划则先生成计划第 4 步判断是否已有 PLAN.md若has_plans为 true跳过初始规划显示Plans found: {plan_count} PLAN.md files — skipping initial planning.若没有计划显示◆ No plans found — spawning initial planning agent...然后生成一个隔离的 AgentAgent( descriptionInitial planning Phase {PHASE}, promptRun /gsd:plan-phase for Phase {PHASE}. Execute: Skill(skillgsd-plan-phase, args{PHASE} {GSD_WS}) Complete the full planning workflow. Do NOT return until planning is complete and PLAN.md files are committed., modeauto )Agent 返回后验证产物PLAN_COUNT$(ls ${phase_dir}/${padded_phase}-*-PLAN.md 2/dev/null | wc -l)若PLAN_COUNT 0报错退出初始规划失败。这一必须验证 Agent 确实产出文件的检查遵循 agent-contracts.md 中Agents without markers write artifacts directly to disk that the caller parses的交接约定——这里以PLAN.md文件的存在性作为完成判据。六、收敛循环评审 → 计数 → 停滞检测 → 重规划第 5 步是核心循环。初始化循环变量cycle 0、prev_high_count Infinity然后进入 5a→5d 子步骤。6.1 评审 Agent5a每轮递增cycle显示◆ Cycle {cycle}/{MAX_CYCLES} — spawning review agent...生成隔离的评审 AgentAgent( descriptionCross-AI review Phase {PHASE} cycle {cycle}, promptRun /gsd:review for Phase {PHASE}. Execute: Skill(skillgsd-review, args--phase {PHASE} {REVIEWER_FLAGS} {GSD_WS}) Complete the full review workflow. Do NOT return until REVIEWS.md is committed. IMPORTANT — CYCLE_SUMMARY contract (required): Your final response MUST include a machine-readable line of exactly this form: CYCLE_SUMMARY: current_highN Where N is the integer count of HIGH-severity concerns that REMAIN UNRESOLVED in this cycles findings. Counting rules: INCLUDE in the count: - Newly raised HIGHs in this cycle - PARTIALLY RESOLVED HIGHs: concern acknowledged and a mitigation is in progress, but not yet verified/completed - Previously raised HIGHs that are still unresolved EXCLUDE from the count: - FULLY RESOLVED HIGHs: concern addressed with verification complete (closed ticket, verification log, or reviewer sign-off) - HIGH mentions in retrospective/summary tables comparing cycles - Quoted excerpts from prior reviews referencing past HIGH items Definitions: PARTIALLY RESOLVED — concern acknowledged and mitigation is in progress but not yet verified/completed (e.g., open ticket exists but fix not landed). FULLY RESOLVED — concern addressed with verification complete (closed ticket, verification log, or explicit reviewer sign-off confirming closure). Your final response MUST also include this section immediately after the CYCLE_SUMMARY line: ## Current HIGH Concerns [List each unresolved HIGH with a brief description, one per bullet] [If none: write exactly None.], modeauto )注意{GSD_WS}会被转发给评审 Agent——测试专门断言了这一行为review agent spawn forwards --ws via GSD_WS (symmetric with replan agent)因为如果评审读了错误的 workspace 而重规划读了正确的 workspace会导致评审与修订对象不一致。gsd-review命令本身见 commands/gsd/review.md检测 CLI → 构建评审提示 → 调用每个 CLI → 收集响应 → 写出REVIEWS.md。Agent 返回后验证REVIEWS_FILE$(ls ${phase_dir}/${padded_phase}-REVIEWS.md 2/dev/null)若为空报错退出评审 Agent 未产出 REVIEWS.md。6.2 CYCLE_SUMMARY 合约为什么不能 grep REVIEWS.md5b这是整个工作流最关键的正确性设计#2306-v2修复的假停滞缺陷Do NOT grep REVIEWS.md for HIGH count.REVIEWS.md accumulates history across cycles — resolved HIGHs from prior cycles remain in the file as audit trail, inflating a raw grep count and causing false stall detection.REVIEWS.md会跨循环累积历史上一轮已解决的 HIGH 仍留在文件中作为审计轨迹若直接用 grep 数 HIGH计数会被虚高从而误报停滞。因此 HIGH 数量必须来自评审 Agent 返回消息中的CYCLE_SUMMARY合约行# Extract the integer from CYCLE_SUMMARY: current_highN in the agents return message HIGH_COUNT$(echo $REVIEW_AGENT_RETURN | grep -oE CYCLE_SUMMARY:\s*current_high[0-9] | head -1 | grep -oE [0-9]$) if [ -z $HIGH_COUNT ]; then # Distinguish malformed contract from completely absent contract if echo $REVIEW_AGENT_RETURN | grep -q CYCLE_SUMMARY:; then echo CYCLE_SUMMARY present but current_high is malformed — expected integer, got non-numeric value. Retry or switch reviewer. else echo Review agent did not honor the CYCLE_SUMMARY contract — cannot determine HIGH count. Retry or switch reviewer. fi exit 1 fi # Extract the ## Current HIGH Concerns section from the agents return message HIGH_LINES$(echo $REVIEW_AGENT_RETURN | awk /^## Current HIGH Concerns/{found1; next} found /^##/{exit} found{print}) if [ ${HIGH_COUNT} -gt 0 ] [ -z ${HIGH_LINES} ]; then echo ⚠ Review agents CYCLE_SUMMARY reports ${HIGH_COUNT} HIGHs but did not provide ## Current HIGH Concerns section — continuing with incomplete escalation details. fi合约语义要点计入本轮新提出的 HIGH部分解决PARTIALLY RESOLVED问题被确认且有缓解在进行但尚未验证/完成如 ticket 已开但修复未落地的 HIGH上一轮仍未解决的 HIGH不计入完全解决FULLY RESOLVED附带验证完成证据关闭的 ticket、验证日志或审核者签收的 HIGH对比各轮次的回顾/汇总表里的 HIGH 提及引用旧评审中提及过去 HIGH 的摘录合约缺失或格式错误时的错误信息可区分present but malformed与completely absent两种情形便于排障HIGH_COUNT 0但缺少## Current HIGH Concerns小节时给出警告防止升级门展示空白问题列表。测试文件 tests/plan-review-convergence.test.cjs 用一整组用例守护这一合约必须存在CYCLE_SUMMARY: current_high格式、必须定义 PARTIALLY/FULLY RESOLVED、必须要求## Current HIGH Concerns小节、必须区分 malformed 与 absent、成功标准中不得出现 grep HIGHs。6.3 收敛成功HIGH_COUNT 0若HIGH_COUNT 0已收敛更新状态并退出node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs state planned-phase --phase ${PHASE} --name ${phase_name} --plans ${PLAN_COUNT}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ GSD ► CONVERGENCE COMPLETE ✓ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Phase {phase_number} converged in {cycle} cycle(s). No HIGH concerns remaining. REVIEWS.md: {REVIEWS_FILE} Next: /gsd:execute-phase {PHASE}6.4 停滞检测与最大循环检查5c若HIGH_COUNT 0显示◆ Cycle {cycle}/{MAX_CYCLES} — {HIGH_COUNT} HIGH concerns found然后做两项判断停滞检测若HIGH_COUNT prev_high_count⚠ Convergence stalled — HIGH concern count not decreasing ({HIGH_COUNT} HIGH concerns, previous cycle had {prev_high_count})这正是 revision-loop.md 中issue count not decreasing → early escalate模式的体现问题数在相邻两轮之间不下降说明生产 Agent 卡住了继续循环也无济于事应提前升级。最大循环检查若cycle MAX_CYCLES进入升级门Escalation Gate。TEXT_MODE下用纯文本编号列表Plan convergence did not complete after {MAX_CYCLES} cycles. {HIGH_COUNT} HIGH concerns remain: {HIGH_LINES} How would you like to proceed? 1. Proceed anyway — Accept plans with remaining HIGH concerns and move to execution 2. Manual review — Stop here, review REVIEWS.md and address concerns manually Enter number:否则使用AskUserQuestionAskUserQuestion([ { question: Plan convergence did not complete after {MAX_CYCLES} cycles. {HIGH_COUNT} HIGH concerns remain:\n\n{HIGH_LINES}\n\nHow would you like to proceed?, header: Convergence, multiSelect: false, options: [ { label: Proceed anyway, description: Accept plans with remaining HIGH concerns and move to execution }, { label: Manual review, description: Stop here — review REVIEWS.md and address concerns manually } ] } ])选Proceed anyway显示最终状态并退出接受带残留 HIGH 的计划进入执行选Manual review给出指引并退出Review the concerns in: {REVIEWS_FILE} To replan manually: /gsd:plan-phase {PHASE} --reviews To restart loop: /gsd:plan-review-convergence {PHASE} {REVIEWER_FLAGS}兼容性提示命令源文件 commands/gsd/plan-review-convergence.md 的runtime_note指出在 VS Code Copilot 环境中应将AskUserQuestion替换为vscode_askquestions两者等价都是同一个交互式提问 API 的实现不要因为AskUserQuestion看似不可用就跳过提问步骤。--max-cycles 1的语义值得注意测试escalates immediately after cycle 1 when --max-cycles 1断言了cycle MAX_CYCLES检查因此当第一次评审仍有 HIGH 且 max cycles 为 1 时会直接触发升级门而不会进入重规划。6.5 重规划 Agent5d在未达到 max cycles 时先更新prev_high_count HIGH_COUNT显示◆ Spawning replan agent with review feedback...再生成重规划 AgentAgent( descriptionReplan Phase {PHASE} with review feedback cycle {cycle}, promptRun /gsd:plan-phase with --reviews for Phase {PHASE}. Execute: Skill(skillgsd-plan-phase, args{PHASE} --reviews --skip-research {GSD_WS}) This will replan incorporating cross-AI review feedback from REVIEWS.md. Do NOT return until replanning is complete and updated PLAN.md files are committed. IMPORTANT: When gsd-plan-phase outputs ## PLANNING COMPLETE, that means replanning is done. Return at that point., modeauto )两个关键细节--reviews让gsd-plan-phase把REVIEWS.md中的交叉评审反馈并入重规划这正是gsd-review命令objective中 fed back into planning via /gsd:plan-phase --reviews 的闭环--skip-research研究已在初始规划完成重规划不再重复研究测试断言了这一点replan agent must skip research完成判据复用 agent-contracts.md 中登记的 planner 完成标记## PLANNING COMPLETE。Agent 返回后回到5a进入下一轮评审直到收敛或升级。七、成功标准与测试保障工作流文档末尾的success_criteria定义了该功能的验收清单可视为实现契约Config gate checked before running — exits with enable instructions ifworkflow.plan_review_convergenceis falseInitial planning via Agent → Skill(gsd-plan-phase) if no plans existReview via Agent → Skill(gsd-review) — isolated, not inline;{GSD_WS}forwardedReplan via Agent → Skill(gsd-plan-phase --reviews) — isolated, not inlineOrchestrator only does: init, config gate, loop control, parse CYCLE_SUMMARY for HIGH count, stall detection, escalationHIGH count extracted from review agents CYCLE_SUMMARY return message (not by grepping REVIEWS.md)Review agent prompt definesCYCLE_SUMMARY: current_highNcontract with PARTIALLY/FULLY RESOLVED definitionsAbort with clear error if CYCLE_SUMMARY is absent; distinguish malformed from absentWarn if HIGH_COUNT 0 but## Current HIGH Concernssection is absent from return messageEach Agent fully completes its Skill before returningLoop exits on: no HIGH concerns (converged) OR max cycles (escalation)Stall detection reported when HIGH count not decreasingSTATE.md updated on convergence completion这一契约被 tests/plan-review-convergence.test.cjs 系统性地守护。值得注意的是该测试文件顶部的注释揭示了一个核心设计哲学The workflow markdown IS the runtime instruction. Testing its text content tests the deployed contract — if the CYCLE_SUMMARY requirement is absent, the false-stall bug is absent from defenses too.即工作流 Markdown 本身就是运行时指令因此对工作流文本的测试就是对部署契约的测试。测试覆盖了命令源gsd:前缀、全部审核者标志、Agent在 allowed-tools 中、Copilot 的vscode_askquestions降级说明、配置注册workflow.plan_review_convergence及三个本地 host 键必须存在于VALID_CONFIG_KEYS、文档同步docs/CONFIGURATION.md 必须记录这些键及默认 false 行为以及工作流行为初始规划门、收敛循环、合约定义、停滞检测、升级门、--max-cycles 1立即升级、REVIEWS.md 产物校验。八、典型使用场景与手动替代方案使用场景当某个阶段如3的计划需要经受多模型交叉评审、且你希望在评审发现 HIGH 级问题后由系统自动修订计划直至收敛时启用并执行gsd config-set workflow.plan_review_convergence true /gsd:plan-review-convergence 3 --codex --gemini --max-cycles 4混合审核--all会使用所有可用 CLI 与运行中的本地模型服务器也可只指定本地审核者以保护数据隐私/gsd:plan-review-convergence 3 --ollama --lm-studio手动替代不启用该命令时上述循环退化为手工操作链条gsd-plan-phase 3 → gsd-review 3 --codex → gsd-plan-phase 3 --reviews → gsd-review 3 --codex → …由REVIEWS.md作为评审反馈载体。plan-review-convergence的价值正是把这条链条封装为可配置、带停滞检测与升级门控的自动化循环。九、实现原理小结从源码结构可以归纳出该工作流的三个设计支柱编排器极薄Agent 极厚所有真实工作规划、评审、重规划都通过隔离 Agent 调用既有 Skill 完成编排器只做参数解析、循环控制与状态流转——这保证了plan-review-convergence复用的都是已被单测覆盖的成熟 Skill自身只承担编排风险机器可读合约优先跨 Agent 传递结论不靠语义理解而是靠严格格式的CYCLE_SUMMARY: current_highN行 ## Current HIGH Concerns小节配合 PARTIALLY/FULLY RESOLVED 的精确计数规则从根本上规避了REVIEWS.md累积历史导致的假停滞门控分层入口有配置门 Pre-flight 阶段校验循环内有停滞检测Revision Gate 的提前退出循环外有 max-cycles 升级门Escalation Gate与产物缺失时的硬错误Abort 语义完全对齐 gates.md 的四类门型分类法。需要深入了解的读者建议按此顺序阅读仓库源码get-shit-done/workflows/plan-review-convergence.md工作流本体→ commands/gsd/plan-review-convergence.md命令壳→ get-shit-done/references/revision-loop.md模式来源→ tests/plan-review-convergence.test.cjs契约测试→ docs/CONFIGURATION.md配置参考。【免费下载链接】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),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →