一键导入
workflow-execute
Use when 用户调用 /workflow-execute, or 已有 workflow 需要继续推进任务, or 用户说「继续/接着跑/继续执行/下一个 task/resume workflow/把剩下的任务跑完」要恢复已有 workflow 执行。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when 用户调用 /workflow-execute, or 已有 workflow 需要继续推进任务, or 用户说「继续/接着跑/继续执行/下一个 task/resume workflow/把剩下的任务跑完」要恢复已有 workflow 执行。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when 用户调用 /design-plan, or 需要为复杂跨服务需求(多服务改动 / 数据库 DDL / 新增对外接口 / 架构调整)产出可评审的技术方案文档,典型用户是技术主管 / 资深研发。简单单服务改动走 /workflow-spec,Bug 修复走 /fix-bug。
Use when asked to review a diff, do a pre-commit code review, or review staged/branch changes. Supports staged diffs, branch diffs, and session mode that reviews only files edited in the current conversation context.
Use when 用户调用 /plan-archive, or 三阶段研发流程的阶段三:在所有模块研发上线后,根据实际代码改动回写阶段一技术方案 + 项目级架构文档(docs/architecture / docs/contracts / docs/assets/概要设计 等)。
Use when 用户说「快速规划」「轻规划」「不走 workflow」「plan 一下」「quick plan」, or 需求清晰、作用域明确、可一次性规划完成的简单到中等任务。复杂项目(跨 module / 新子系统 / 需追溯)或需要正式需求文档 / PRD 请用 /workflow-spec。
Use when 用户调用 /spec-bootstrap, or 项目尚未建立 .claude/code-specs/ 骨架且需要初始化 code-specs 体系。
Use when 用户调用 /spec-update, or 工作中沉淀出新 convention / 接口 contract / 模式需要落到 .claude/code-specs/, or execute 末尾终审(workflow-execute Step 7)建议沉淀 code-spec。
| name | workflow-execute |
| description | Use when 用户调用 /workflow-execute, or 已有 workflow 需要继续推进任务, or 用户说「继续/接着跑/继续执行/下一个 task/resume workflow/把剩下的任务跑完」要恢复已有 workflow 执行。 |
| argument-hint | [--phase] [--tdd] [继续] |
| disable-model-invocation | true |
路径 convention + CLI 写入 contract 见
../../specs/shared/workflow-cli.md。
执行模式只有两个(与 state-machine.md 对齐):continuous(默认,跨 phase 连续执行到底)/ phase(--phase,phase 边界停下确认)。--retry / --skip 不是执行模式,是 halted 恢复的单条 CLI 调用(见「特殊模式」);--tdd 也不是,是 implementer prompt 开关(见「TDD 手动开启条件」)。
裸"继续"解析:仅在存在活动 workflow(running 或 halted)且当前对话仍在该 workflow 上时恢复(对应 RESUME_ENTRY_STATUSES)。planned 状态需显式 workflow-execute 命令启动(对应 EXECUTE_ENTRY_STATUSES);spec_review 不适用。
模式解析(显式 flag / 自然语言 / state.execution_mode 默认)由 CLI buildExecuteEntry 拥有,controller 只消费返回的 resolved_mode,不自行解析。
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js execute [意图]
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js execute --mode phase # 带模式参数
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js execute --tdd # 手动开启 TDD
CLI 返回 entry_action / resolved_mode / tdd_enabled / state_status / can_resume。entry_action: 'none' 时按 message 字段提示用户。tdd_enabled !== true 时,即使任务形态适合测试先行,也不得自动引用 TDD skill。
自愈后 upgrade_required 检测:cmdInit 自愈出 upgrade_required: true = 找到 plan 但找不到 spec 文件。优先 /workflow-spec 重建 spec 后再执行;确认放弃 spec 审批留痕用 /workflow-execute --force。
task 源 = task-dir(~/.claude/workflows/{pid}/tasks/{taskId}/{task.json,task.md,context.jsonl}),非 plan.md 物理解析。每个 task 的 rich 执行切片(task_text + acceptance + constraints + patterns/mandatory-reading + files + 验证)存于 task.json v2 结构化字段,并渲染为人读 task.md。确认 state(下方 Step 2)后,controller 一次性从 task 源(TaskSource(state).listTasks())读全部 task 元数据持于内存。派发 implementer 时,pre-execute-inject hook 自动把当前 task 的 task.md 渲染正文注入 <current-task>(源自 task-dir,非 plan.md)——guardrails(constraints/patterns/mandatory)随之到达 implementer。不每 task 重读盘(controller 一次性持全 范式,见 references/subagent-driven.md)。
prompts/implementer.md / prompts/reviewer.md),不回头读盘。LegacyPlanMdSource 兜底,经 parseTasksV2 从 plan.md 读 task 序列(C-7),切片来源等价,执行路径不变。TaskSource 工厂按 state 自动选 adapter。触发条件:仅首次从 planned 进入 running 时执行一次(status_transition: "planned->running")。resume 场景(running / halted)跳过本步——计划已上过路。
目的:执行 Task 1 前一次性扫 plan-review 未 hard-block 的项(warnings 不挡 ready 门 / advisory),把"计划残缺执行到一半才暴露"的延迟反馈提前。参照 superpowers 6.0 Pre-Flight Plan Review。
检查项(controller 从 Step 1 持有的全 task 切片扫描,不调 CLI、不读源码):
depends: [T3] 但 T3 不在 task 集中——CLI 无覆盖(lintTaskSchema 只查 corruption、findOrphanedAnchors 只查 current_tasks 锚点,均不验 depends[] 跨 task 引用),此处是唯一门verification.commands 为空或非 string[]——plan-review 仅计入 confidence verification 维度(降分 + hint,不挡 ready),否则 Step 5 验证时才暴露acceptance 为空数组——plan-review 仅进 warnings(不挡 ready),否则 reviewer Phase 1 无 AC 可对照才暴露shared_file.fan_out 仅 advisory 报告、不挡 ready(不在 ready 布尔内),plan 期可能被略过,故此处补打 INFO 二次提醒。两者均顺序执行无并发写竞争,仅打印一行 INFO,不进 AskUserQuestion执行方式:
AskUserQuestion 列全部项,options:proceed(接受风险继续)/ fix(回 /workflow-plan 修计划,暂停在 Step 1.5)/ skip-check(跳过,降级不推荐)本步是 advisory gate,不阻断执行——用户可选择 proceed 接受风险。目的是把"执行到第 3 个 task 才发现 T2 依赖写错"的延迟反馈提前到执行前。
铁律:在确认 state.status / state.current_tasks 之前,不得读取 task 源、源码或展开 Patterns to Mirror。
resume 三元组:resume 锚点 = current_tasks[0] + status + task 源(task-dir,legacy 则 plan.md)三者(C-1)。/clear 后从 disk 重建靠这三者:current_tasks[0] = task 源 firstTaskId(),status ∈ {planned,running,halted} 决定可恢复性,task 源给全部 task。status=planned ⟹ task 源存在 由 assertTaskSourcePresent 单点守门,缺失统一报 task_source_missing 阻断 execute 入口。
Progress Ledger 恢复(compaction 后):/clear 后,除了 resume 三元组,还需读 progress ledger 恢复 per-task review 结论与已知问题(Step 7 final-review 的排除清单):
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js progress-ledger read
返回 { entries: [...] },每条含 task_id / status / commits / review / known_issues。controller 把已记录的 minor + concerns 装配为 Step 7 final-review 的已知问题排除清单——清单内条目按原 severity 免重报,只报清单外的新发现(升级例外不变)。文件不存在时返回空数组(行为不变,向后兼容)。
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js status
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js context # 返回已内嵌 next_task,无需再调 next
首次打印 plan 路径(必须):确认 state 后,从 status 返回的 plan_file(绝对路径)向用户打印一行,方便执行期 review plan:
📋 Plan: <plan_file 绝对路径>
plan_file 缺失(自愈失败 / 路径未解析)→ 不打印,按下方"状态文件自愈"处理。
读 handoff(plan→execute,定向):确认 state 后读 plan 阶段决策摘要,定向 task 派发,禁整篇读 plan.md / spec.md 全文(全文交 subagent 按路径自读;controller 只持 contract-digest + task 源切片)。
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js read-handoff --from plan
返回 JSON {fresh, content?, reason?, fallback?}。fresh:true → 用 handoff 里的 Decisions/Rejected/Risks + contract-digest 指针辅助 Step 3/4 派发;fresh:false(stale/missing)→ 不阻断,回退按既有 state-first 路径从 task 源(task-dir)读全 task 切片(Step 1 一次性持全 task 切片);legacy plan.md workflow 经 LegacyPlanMdSource 兜底。
语义边界(handoff 不重复):handoff 装本阶段决策/取舍 + 指针;contract(既有代码复用面,contract-digest.md 经 hook 注入 implementer/reviewer)、spec(需求)、code-specs(项目规范)各有落点,handoff 不复写其正文。
状态预检查:
planned → 首次 advance 时 CLI 自动升 running,无需手动转换halted → 按 CLI 返回 message 分流:failure 提示 --retry/--skip(review-loop 上限则展示累计 issues 等介入);dependency 提示 unblock <dep>Git 分支检测(建议性):检测是否在 main/master,建议创建 feature branch。不阻塞执行。
workflow-state.json 不存在 → node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js init 自动重建最小状态文件并推导首个未完成任务。task-dir 优先:task-dir 有记录时直接从 task-dir 重建(plan.md 已退化为叙述,不参与推导);仅 task-dir 为空时回退解析存量 legacy plan.md。例外:仓库存在 2+ plan.md 候选时 CLI 先于 task-dir 检查返回错误(detected_plans 数组)→ 展示列表让用户选择,不自行猜测。
自愈失败 → fail-fast:权限不足、磁盘满、task-dir 与 plan.md 皆无时终止执行并提示用户检查后重试。不得静默继续。
自愈审批状态:重建时 user_spec_review 按 spec 文件存在性差异化——spec_file 在 → approved(reviewer system-recovery,Step 3 显示 ⚠️ 状态已自愈恢复);不在 → skipped。
路径安全校验:用 resolveUnder 校验 plan_file / spec_file 在允许范围内。参见 ../../specs/workflow-runtime/shared-utils.md。
仅在 Step 2 已确认 state.current_tasks 后,从 Step 1 持有的 task 切片取当前 task(不重读 plan),按需显示(当前 task 级别):任务 ID、名称、阶段、文件、验收项、依赖、Interaction 字段(AFK 默认 / HITL 必走 3.1)、Patterns to Mirror、Mandatory Reading(P0 必读)。
触发条件:interaction === 'HITL'。implementer subagent 首次派发前必须完成以下(违反 = HARD-GATE #5):
Before any code change, you MUST emit NEEDS_CONTEXT with the questions the human needs to answer.NEEDS_CONTEXT 时,主会话调用 AskUserQuestion 收集人工答复:
任务 {taskId} 标记为 HITL:{任务名}。implementer 反问:{questions}。是否可以继续?proceed(把答案塞回 prompt 重派 implementer) / defer(任务保留 pending,显式停在当前 Step 等用户回复,不写盘) / skip(跳过并标 skipped,需 reason)proceed → 把 AskUserQuestion 答案补进 implementer prompt 重派defer → 任务保留 pending,显式停在 Step 3(不进 Step 4),输出 HITL deferred: 该 task 待人工决策,回复 proceed/skip 后继续,等下条用户消息;不推进、不手编 state.jsonskip → execution_sequencer.js skip <state-path> {taskId}(状态落 task-dir + state.json),reason 写入 journalSummary降级:AskUserQuestion 不可用 → 打印 implementer 反问并显式停在 Step 3(不进 Step 4),输出 HITL wait: 请回复 "proceed/defer/skip {reason}" 后我再继续,等下条用户消息分流。HARD-GATE #5 无例外。
Degraded 平台(无 subagent):主会话扮演 implementer 时仍需在第一时间输出 NEEDS_CONTEXT + 调 AskUserQuestion,行为等价。
老 plan 无 Interaction 字段 → task_parser 默认 AFK,行为不变。
默认行为(fresh-subagent-per-task):每个 task 必须起一个 fresh implementer subagent 完成实现,再起单 reviewer subagent(合并 AC + 代码质量两 phase,AC→质量顺序,见 prompts/reviewer.md)。controller(主会话) 只做编排,不直接写代码。
Controller 上下文纪律(铁律):controller 全程不读业务源码 / plan.md / spec.md 全文(任何通道含 bash)、不全量 dump 诊断输出(
status/context、git diff/log取字段),只持 contract-digest + Step 1 task 切片;源码/diff 读取与验证一律下放 subagent。测试运行也下放(implementer 跑 + 报告,reviewer 裁决);仅死锁/疑难诊断的 focused 例外下 controller 亲跑,此时串行 one-shot、先排除自身并发/watch 再下「真 hang/死锁」结论(为何不自跑见 Step 5①)。完整禁止清单 + 129k 实测见references/subagent-driven.md「不允许的行为」——违反是单会话上下文膨胀主因。
机器 review 显式开启(FR-6):codex 自动 review(spec/plan review + Step 4.2 oracle / 末尾 enhanced 回灌)默认关闭,降级的是「自动触发」非删能力。 开启(任一恢复):
project-config.json设workflow.review.codex = true(或workflow.review = true);或planning_gates.js codex-spec-review/codex-plan-review传--review-enabled。 不在降级范围(始终保留的核心质量门):per-task reviewer(Step 4.2,HARD-GATE 每 task 必跑) / 末尾 final reviewer(Step 7,HARD-GATE #4) /user_spec_review人工 gate(C-1,不受 review flag 影响)。
平台支持矩阵 + 降级规则 + Implementer 4 状态分流见 references/subagent-driven.md。本节只给最小操作流。
每次派发 subagent 必须显式指定 model——省略 = 静默继承会话最贵模型(opus-class),让 mechanical 任务也跑最贵档,是单 workflow token 浪费的最大未察觉来源。分级(细则在 prompts/implementer.md / prompts/reviewer.md 的 [MODEL] 段):
| 角色 / 任务形态 | 档位 |
|---|---|
| 机械实现(1-2 文件、完整规格、转录+测试、纯文案/key 改名) | 廉价(haiku-class) |
| 集成/判断(跨文件、需理解 contract、有边界条件)、per-task reviewer | 标准(sonnet-class,reviewer 下限——廉价档构造不出有效 failure_scenario,refute-default 形同虚设) |
| 架构/设计(新模块、复杂算法、跨服务 contract)、末尾 final reviewer | 最强(opus-class) |
Turn count beats token price:廉价模型常需 2-3× 轮次修正反而更贵——implementer 写散文描述/多步推理时至少中档,plan 文本含完整代码(转录+测试)才用最廉价。平台不支持指定 model → 忽略(degraded 平台 controller 主会话即 implementer)。
按 prompts/implementer.md 模板装配 prompt。task 正文单通道 = hook 注入 <current-task>,controller 不重复粘贴 task 正文,只装配编排骨架(注入机制 + hook 不可用兜底详见 implementer.md「Controller 责任」):
Active task: <task_id>(可选附加 Spec: <path> / Plan: <path>)Report file: <task-dir>/implementer-report.json:implementer 把完整结构化报告写该文件(权威通道),transcript 只回 thin 回执;回执丢失/被后台进程 stdout 覆盖 → controller Read 报告文件恢复,禁 SendMessage/resume(O4,见 prompts/implementer.md)<write-scope>:该 task 声明的预期改动文件清单(取自 Step 1 内存切片)<protocols>:TDD 开关 / 输出协议;HITL task 追加强制反问条款(字面量以 prompts/implementer.md 模板为唯一来源,HARD-GATE #5)git rev-parse HEAD 取当前 SHA 存为本 task 的 reviewer diff base(该 task 改动前的 HEAD),随 task runtime 持有;Step 4.2 reviewer 用它、REVISE 轮复用。禁用 state.initial_head_commit(final-review 整 branch 专用)。WORKFLOW_HOOKS=0)→ controller 兜底把 Step 1 切片的 task 正文以 <current-task> 块粘进 prompt,内容等价当前 task 在 Step 1 切片中找不到(state/plan 不一致)→ 走 Step 2 状态自愈,不要手工切片绕过。
Implementer 返回 4 种状态(DONE / DONE_WITH_CONCERNS / NEEDS_CONTEXT / BLOCKED,报告文件 + thin 回执,见 prompts/implementer.md output-schema;回执丢失 → Read 报告文件,禁 resume)。controller 分流见 references/subagent-driven.md § Implementer 状态分流(含 concerns[].type/severity 分支,唯一权威)。
按 prompts/reviewer.md 构造单 subagent prompt,单 context 内顺序执行两 phase。reviewer dispatch 的 subagent_type 名须含 review/reviewer/check,使 pre-execute-inject hook 路由到 kind='check'(full-layer code-specs digest);否则 fall-through implement(<current-task> 仍注入、AC/constraints 不丢,仅 code-specs 退 scoped digest):
cannot_verify[](不等于 REVISE),controller 收到后必须自行 grep/Read 核实或回派 implementer 补实现,不得忽略。Calibration:plan-mandated 缺陷照实定级(权威见 prompts/reviewer.md)。Controller 注入约束:
<current-task> + <project-code-specs>,controller 不重复粘贴这三者。注入机制 / hook 不可用兜底 / final-review 例外见 prompts/reviewer.md「Controller 责任」。files_changed 路径 + diff-base-commit SHA,reviewer 自跑 git diff。state.initial_head_commit):见 Step 4.1 / prompts/reviewer.md「Controller 责任」。prompts/reviewer.md「控制器权力约束」(canonical)。Reviewer 返回严格 JSON-only。schema 非法 → controller 重派 1 次;仍失败 → halt + halt_reason: 'failure'(failure_reason: reviewer-schema-failure)。
判定(PASS → Step 5 post-execution;REVISE → revise_instructions 塞回 → fresh 重派 implementer + fresh reviewer,禁 SendMessage/resume,trivial 机械修复走 controller 自验例外;phase2.minor 不阻塞、记 journal)+ 循环上限 3 轮 → halt:完整决策表见 prompts/reviewer.md § Decision 处理;3 轮上限 + halt_reason: failure(review-loop) 语义见 references/subagent-driven.md § Reviewer 状态分流(reviewer.md 不载 loop 上限,勿只指它)。
3 轮是安全网,非升级时机:thrashing(连续 2 轮 reviewer findings 冒出上轮未标的新
file:line且原 issue 未收敛——controller 可机械算的近似启发式,非因果断言)应前置升级到设计简化AskUserQuestion,不等撞硬上限——判据 + 动作见references/subagent-driven.md§ Reviewer 状态分流「Thrashing 早升级」。
loop=2 仍 REVISE 时,controller 触发 codex oracle 回灌增强第 3 次重派(声明式 opt-in,默认关 FR-6) → 见「Stuck 触发 oracle 回灌(loop=2,codex stuck 路径)」。
默认不走 TDD 路径。仅当入口返回 tdd_enabled: true(用户显式 /workflow-execute --tdd) 且以下条件全部满足时,才触发 → implementer prompt 中引用 ../tdd/SKILL.md 红绿蓝循环:
phase 为 implement / ui-*create_file / edit_file未传 --tdd 或条件不满足 → implementer 直接实现,不引用 TDD skill,不强制先写失败测试。
无 subagent 派发能力的平台(如 github-copilot,或受限环境/WORKFLOW_HOOKS=0) → controller 主会话直接执行 implementer 角色,完成后走单段 self-review(按 prompts/reviewer.md 两 phase 顺序 self-check,不起 reviewer subagent)。质量上限低于支持 subagent 的平台。(opencode / droid / antigravity / qoder / codebuddy 均支持 subagent,走默认全套,不降级——见 references/subagent-driven.md 平台矩阵)
| 步骤 | 条件 | 说明 |
|---|---|---|
| ① 验证 | 必选 | 记录 implementer 报告的验证证据(reviewer 已确认) → verification.js create;controller 不重跑测试命令。valid !== true → mark failed,停止 |
| ② Checkpoint | 必选 | advance {taskId} 更新 task-dir(task.json) + state.json |
| ③ Journal | 暂停/workflow 完成时 | workflow_cli.js journal add |
| ④ Progress Ledger | 必选 | reviewer PASS + 验证通过后 progress-ledger append(--task-id/--status/--commits/--review/--known-issues);/clear 后供 Step 2 读回 known-issues 排除清单 |
Step 4.2 reviewer PASS(critical/important 为 0)且 Step 5.① 验证通过后,内存确认即继续(不再落 per-task quality_gate 持久化记录,见 ADR 0004),直接 advance。本表即权威 checklist,顺序不可换:验证必须在 advance 之前。
验证命令由 implementer 跑(证据在报告文件 verification 段:命令 + result + output_summary),reviewer 已对照 diff 裁决并回 verification_review 三布尔门(command_relevant / result_pass / output_clean;test 输出有 warning/noise → output_clean=false)。controller 据此记录证据,不重跑测试命令:
门(F2,取代 controller 自跑的 anti-fabrication 职能):reviewer 的 verification_review 三布尔须全 true 才记录 --passed + advance;任一 false = reviewer 判 implementer 报告的验证不可信 → 按 REVISE 回 implementer(不 advance),不得仅凭报告里的 result:pass 放行。
node ~/.agents/agent-workflow/core/utils/workflow/verification.js create \
--cmd "{implementer 报告的验证命令}" --exit-code 0 --output "{implementer 报告的关键输出}" --passed
validation.valid === true 才能进入 ② Checkpoint(advance)。
为何不 controller 自跑:在 controller 自身 context 跑测试 = 把 test runner 请进主会话 → 诱发并发/缓存自伤(并发 vitest 污染 vite dep cache + stray 进程 → 假 hang)。trust-but-verify 的"verify"放在 reviewer subagent(隔离 context、对照 diff、有疑点跑 focused 单测),不在 controller。
若 task 验收项要求某些产物文件必须存在,append --require-files <csv>(纯文件存在检查,廉价、确定、不跑测试):
node ~/.agents/agent-workflow/core/utils/workflow/verification.js create \
--cmd "..." --exit-code 0 --output "..." --passed \
--require-files apps/.../X.test.ts,apps/.../Y.test.ts
缺任一 → validation.valid: false + violations: ["missing_required_files:<file>"],advance 拒绝。
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js advance {taskId}
输出:✅ {TaskId} checkpoint: completed=[...], current=[...]
advance/complete 在 planned 状态下自动升级 status 到 running。
触发: workflow 暂停(halt)、最后一个 task 完成时。
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js journal add --title "完成 {tasks}" --tasks-completed "{ids}" --summary "{摘要}"
每 task reviewer PASS + 验证通过后,追加一行到 progress ledger(参照 superpowers 6.0):持久化 per-task review 结论 + known-issues 排除清单(/clear 后恢复链见 Step 2)。
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js progress-ledger append \
--task-id T1 --status completed \
--commits "<base7>..<head7>" \
--review clean \
--known-issues "minor:file.ts:42 unused import,minor:utils.ts:10 magic number"
--commits:该 task 改动的 commit range(Step 4.1 捕获的 diff base 到 HEAD)--review:clean(无 critical/important)或 issues(有 minor 记录)--known-issues:逗号分隔的 per-task review 已记录的 minor + concerns(Step 7 final-review 的排除清单数据源)。单项描述内勿含逗号——CLI 按逗号切项,描述含逗号会被误切成多条~/.claude/workflows/{pid}/progress.md(追加写,每行一个 JSON)current_tasks[0] + status + task 源),补充其缺失的 per-task review 上下文无 governor CLI。Step 5 advance 完成后,controller 内联判断:
completed/skipped → 进 Step 7 末尾终审。模式差异(纯 controller 内联,不调 CLI):
--phase):同 phase 内连续;phase 边界变化时停下,提示用户确认进下一阶段。无可靠 in-session token 计数 → 改用 task 边界计数(确定性触发,替代"感知偏满"自判,后者实测不可靠):controller 记本会话已 advance 的 task 数,每 N(默认 5) 个 task 边界(Step 6 取下一 task 处,非 REVISE 循环中途)打一行 banner,建议用户本批结束后 /clear 开新会话续跑,附精确 resume 命令(/workflow-execute 或裸"继续")。resume 三元组(state + task-dir)重建无损(见 Step 2);计数在 /clear 后归零(刚 clear,无需跨会话记忆)。known-issues 排除清单经 progress ledger 跨 /clear 无损恢复(见 Step 2)。不阻塞、不写盘,用户可忽略。
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js triage --result <job-id> [--strict]
返回 { in_scope, out_of_scope, suggested_reverts, reasons }。对 suggested_reverts 内文件统一 git checkout -- 还原;in_scope 进入 4.2 reviewer。
--strict 模式可作 CI / hook 守门(out_of_scope 非空 → exit 1)。
triage 不替代 git diff 内容检查,但替代了文件级越界识别。
implementer ↔ reviewer loop 进行到 第 2 次仍 REVISE 时,controller(主会话) 在 runtime task state 上程序化标 stuck_or_looping(随 task 生命周期持有,不入 state.json 持久层),按 core/specs/shared/codex-routing.md § Decision Table + § Invocation Contract 调 collaborating-with-codex --oracle-review(声明式 opt-in,risk_signals: stuck_or_looping,字段填法以该 contract 为准、此处不复写映射)。只有 controller 触发 codex,不下放给 implementer / reviewer subagent。
revise_instructions 增强输入;第 3 次 implementer 仍按 Step 4.1 派发路径,实现完成后照常进 Step 4.2 reviewer。oracle 不接管实现codex-status: codex_degraded + 降级原因file:line、原 issue 未收敛)→ oracle 的 alternative-design POV 正是所需,或直接走设计简化 AskUserQuestion(前置于 3 轮上限)。仅 localized 单根因 correctness 补丁、根因+修复路径已锁定才可标 degraded-by-choice 跳过--retry)node ~/.agents/agent-workflow/core/utils/workflow/execution_sequencer.js retry <state-path> <task-id>
CLI 自动管理重试计数和 hard stop。返回 retryable: false 且 reason: 'hard-stop'(连续 3 次失败)→ 质疑架构并与用户讨论。
调试方法论(根因调查 → 模式分析 → 假设验证 → 实施修复)走 ../diagnose/SKILL.md。第 1 次执行完整四阶段;第 2 次加强模式分析;第 3 次 Hard Stop 质疑架构。
成功后重置:
node ~/.agents/agent-workflow/core/utils/workflow/execution_sequencer.js retry-reset <state-path> <task-id>
--skip)node ~/.agents/agent-workflow/core/utils/workflow/execution_sequencer.js skip <state-path> <task-id>
CLI 自动标记 skipped + 更新 task-dir(task.json) + state.json + 找下一任务(不改写 plan.md;仅 legacy plan.md workflow 由 CLI 回写)。
Skip 是例外路径,不执行验证、自 review 或完整完成管线。
mode: progressive 时:自动跳过被阻塞任务(blocked_by 依赖未解除)→ 只执行可执行任务 → 所有任务被阻塞时转为 halted(halt_reason: 'dependency')→ 用户 node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js unblock <dep> 解除后继续。
所有 task completed(或 skipped)时,controller inline 派一个 final reviewer subagent 做整 branch 终审(不再有独立终审阶段、无独立 review 中间态)。这是进 completed 的唯一门(HARD-GATE #4)。
prompts/reviewer.md 的「末尾 final-review 形态」段(与 per-task 同模板、同 output schema),由 controller 按该模板的「Prompt 占位 → 数据来源映射」final-review 列自行装配(C-001:不引入新机制)。scope / phase 语义、占位映射、refute 框架、排除清单与升级规则均以 reviewer.md 该段为唯一权威,此处不复写。execute 侧唯一自有职责:
## Decisions(实现偏离 spec 处+理由)/ ## Rejected(放弃的实现路径)/ ## Risks(终审重点核对的跨 task contract)三段合计 ≤20 行(超出时按重要性裁剪:优先保留影响跨 task contract 的条目,丢低优先 Rejected 路径;与 Known-issues 不同,这三段可安全截断,不影响 phase2 排除逻辑);## Known-issues(per-task review 已记录的 minor + concerns,作 phase2 排除清单)不占该预算,每条一行,不截断——排除清单只有完整才有效,截断会让 final reviewer 把已知项当新发现重报。该清单由 progress ledger 持久化(Step 5 ④ --known-issues),/clear 后 Step 2 progress-ledger read 读回装配。四段随已完成 task 清单一并注入 <implementer-output> 段。final reviewer 与 controller 同会话 inline 派发,蒸馏直接进 prompt,不走 handoff 文件中转(跨会话 handoff 仅存在于 spec→plan / plan→execute 两段,execute 无下游读者)。spec_file 路径 + diff base commit(state.initial_head_commit,整 branch);不预读纪律同 per-task(见 4.2),reviewer 自跑 git diff 取整 branch diff。<code-specs-context> 按本 branch 触及的 pkg/layer 摘取适用段落;空则降级通用质量启发式。decision: REVISE | PASS,语义同 per-task,PASS 条件 critical: [] 且 important: []):
整体 PASS → 宣告 workflow 完成,进入收尾(无需再调 CLI:最后一个 task 的 advance {taskId} 已自动把 status 落 completed;HARD-GATE #4 是终审 PASS 前不得宣告/收尾的 LLM 纪律门)。
发现跨 task 集成问题(contract 不一致 / 重复实现 / task 间接缝遗漏) → 不自动回退、不自动 revert、不擅改 state;controller 把 issues 清单展示给用户 + 走用户决策:另起修复回合(用户拍板后另开 task / --retry 路径修)或 accept(用户接受残留问题后继续推进 completed)。由用户拍板,controller 不替用户决策。
accept 分支落审计(T8 偏离决策闭环):用户显式接受残留问题后,controller 把每条被接受的偏离调 CLI 写入 deviation_log,然后照常宣告完成(status 已是 completed):
node ~/.agents/agent-workflow/core/utils/workflow/workflow_cli.js accept-deviation \
--original-intent "<spec 原意图>" --accepted-impl "<实际接受的实现>" \
[--spec-section "<§x.x>"] --confirmed
返回的 next_action 提示用 /spec-update 把 accepted_implementation 回写 spec 对应 section(不需要回写时传 --no-spec-review)。不传 --confirmed CLI 会 hard-stop 拒绝——确认动作必须来自用户拍板,controller 不得代答。
末尾终审未 PASS 不得宣告完成(HARD-GATE #4)。execute 跑完即
completed(status 由最后一个 advance 自动落,无独立 review 中间态),终审是宣告/收尾前的 LLM 纪律门;branch 级独立单审走/diff-review。
HARD-GATE 已覆盖的违规不在此重复。下列行为同样违规:
advance CLI;仅 legacy plan.md workflow 由 CLI 回写 plan.md)workflow-state.jsonreferences/subagent-driven.md「不允许的行为」(controller 自读源码 / 全量 dump diff·CLI、SendMessage/transcript-resume 复用 subagent(O4,应 fresh 重派 / Read 报告文件)、per-task reviewer 用 state.initial_head_commit 作 diff base(O5)、为 reviewer 重复粘贴 AC/constraints/code-specs(O1))+ 失败 ≥3 次仍重试不走 diagnose(CLI retry_count>=3 hard-stop)+ 末尾终审未跑就标 completed(HARD-GATE #4)workflow_cli.js progress-ledger append --task-id <id> --status <status> --commits <range> --review <clean|issues> --known-issues <csv> — Progress Ledger 追写(Step 5 ④)workflow_cli.js progress-ledger read — Progress Ledger 读取(Step 2 compaction 恢复)workflow_cli.js triage --result <job-id> [--strict] — 特殊模式 codex 回归 triage(仅 codex implementer 路径)workflow_cli.js verify-readiness — TDD red 起不来前的预检(可选;项目 workflow.readiness 声明启用 check 时调)verification.js create ... --require-files <csv> — Step 5 ① 强化workflow_cli.js advance <task-id> [--full] — 默认 next_task 仅 {id, name};完整 task 数据已由 Step 1 持全 task 切片提供,无需 per-task 回查