@tea-agent/loop-agent 0.35.0-beta.2 → 0.35.1-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (154) hide show
  1. package/AGENTS.md +108 -108
  2. package/CHANGELOG.md +55 -4
  3. package/README.md +165 -165
  4. package/bin/agent-worker.js +0 -0
  5. package/bin/loop-agent.js +21 -21
  6. package/dist/application/task-lifecycle/advance.js +1 -0
  7. package/dist/commands/cursor-prompt.js +6 -6
  8. package/dist/commands/init-upgrade.js +351 -19
  9. package/dist/commands/init.js +14 -67
  10. package/dist/commands/loop-benchmark.js +11 -11
  11. package/dist/commands/pi-reuse-benchmark.js +16 -16
  12. package/dist/commands/run-dag-progress.js +14 -0
  13. package/dist/commands/task-advance.js +33 -3
  14. package/dist/shared/operator/capabilities.js +38 -1
  15. package/dist/sidecars/cursor-prompt/executor.js +1 -1
  16. package/dist/worker/console/chat/pi-runtime.js +41 -25
  17. package/dist/worker/console/chat/routes.js +27 -4
  18. package/dist/worker/console/operation-runner.js +24 -0
  19. package/dist/worker/console/operation-wait.js +241 -0
  20. package/dist/worker/console/operator-actions.js +58 -0
  21. package/dist/worker/console/static/assets/{index-hJqCPs_g.css → index-Dups4sSM.css} +1 -1
  22. package/dist/worker/console/static/assets/index-SjjjZnV3.js +56 -0
  23. package/dist/worker/console/static/index.html +2 -2
  24. package/dist/worker/console/static-src/operator-chat/slash-palette-nav.js +141 -0
  25. package/dist/worker/console/static-src/operator-chat/useChatSessions.js +13 -2
  26. package/dist/worker/console/static-src/operator-chat/useComposer.js +30 -7
  27. package/dist/worker/observe/static/copy.js +67 -67
  28. package/dist/worker/observe/static/dag-layout.d.ts +36 -36
  29. package/dist/worker/observe/static/dom.js +220 -220
  30. package/dist/worker/observe/static/relations.js +133 -133
  31. package/dist/worker/observe/static/run-processing.js +148 -148
  32. package/dist/worker/observe/static/views/batch.js +227 -227
  33. package/dist/worker/observe/static/views/failures.js +143 -143
  34. package/dist/worker/observe/static/views/feature.js +492 -492
  35. package/dist/worker/observe/static/views/run.js +453 -453
  36. package/dist/worker/observe/static/views/shell.js +7 -7
  37. package/dist/worker/observe/static/views/timeline.js +163 -163
  38. package/dist/workflows/dag/canvas-observer.js +275 -275
  39. package/dist/workflows/dag/frontend-prewrite-gate.js +9 -1
  40. package/dist/workflows/dag/init-hybrid.js +2 -0
  41. package/docs/architecture/evolution.md +73 -73
  42. package/docs/architecture/system-overview.md +100 -100
  43. package/docs/architecture/worker-and-feature.md +122 -122
  44. package/docs/skills/README.md +7 -7
  45. package/docs/templates/adr.md +60 -60
  46. package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
  47. package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
  48. package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
  49. package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
  50. package/docs/templates/agent-dag-report.schema.json +473 -473
  51. package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
  52. package/docs/templates/backend-test-result.schema.json +99 -99
  53. package/docs/templates/evaluation/agents-map-slim-v1.md +87 -87
  54. package/docs/templates/evaluation/agents-map-verbose-v0.md +153 -153
  55. package/docs/templates/feature-spec.md +53 -53
  56. package/docs/templates/frontend-design-contract.md +42 -42
  57. package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -17
  58. package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -16
  59. package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -16
  60. package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -16
  61. package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -16
  62. package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -16
  63. package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -21
  64. package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -29
  65. package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -28
  66. package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -28
  67. package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -29
  68. package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -27
  69. package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -28
  70. package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -28
  71. package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -27
  72. package/docs/templates/frontend-eval/metrics.md +138 -138
  73. package/docs/templates/frontend-eval/smoke-targets.md +53 -53
  74. package/docs/templates/frontend-task-constraints.md +35 -35
  75. package/docs/templates/frontend-task-requirement.md +70 -70
  76. package/docs/templates/init-evolution-review.md +35 -35
  77. package/docs/templates/init-managed-agents.md +156 -154
  78. package/docs/templates/interactive-ui-round2-experiment.md +66 -66
  79. package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -118
  80. package/docs/templates/knowledge-sync-dag.json +178 -178
  81. package/docs/templates/knowledge-sync-draft.schema.json +71 -71
  82. package/docs/templates/product-line/closeout.yaml +9 -9
  83. package/docs/templates/product-line/design.md +13 -13
  84. package/docs/templates/product-line/links.md +10 -10
  85. package/docs/templates/product-line/requirement.md +17 -17
  86. package/docs/templates/product-line/test-plan.md +7 -7
  87. package/docs/templates/project-start-checklist.md +9 -9
  88. package/docs/templates/qa-report.md +48 -48
  89. package/docs/templates/sprint-contract.md +29 -29
  90. package/docs/templates/worker-dogfood-evidence.md +80 -80
  91. package/docs/templates/worker-dogfood-setup.md +68 -68
  92. package/harness.json +5 -2
  93. package/package.json +1 -1
  94. package/scripts/kb-bootstrap-init-skeleton.sh +0 -0
  95. package/scripts/kb-graph-incremental-prepare.mjs +0 -0
  96. package/scripts/kb-graph-materialize.mjs +105 -105
  97. package/scripts/kb-graph-promote.mjs +164 -164
  98. package/scripts/kb-query.mjs +554 -554
  99. package/skills/agent-worker/SKILL.md +48 -48
  100. package/skills/agent-worker/references/agent-worker-operator.md +159 -159
  101. package/skills/ai-engineering-context/SKILL.md +48 -48
  102. package/skills/analyze-product-dependencies/scripts/test-validators.mjs +0 -0
  103. package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +0 -0
  104. package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +0 -0
  105. package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +0 -0
  106. package/skills/analyze-product-requirements/scripts/compute-source-identity.mjs +0 -0
  107. package/skills/analyze-product-requirements/scripts/test-validators.mjs +0 -0
  108. package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +0 -0
  109. package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +0 -0
  110. package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +0 -0
  111. package/skills/browser-tools/browser-content.js +103 -103
  112. package/skills/browser-tools/browser-cookies.js +35 -35
  113. package/skills/browser-tools/browser-eval.js +53 -53
  114. package/skills/browser-tools/browser-hn-scraper.js +108 -108
  115. package/skills/browser-tools/browser-nav.js +44 -44
  116. package/skills/browser-tools/browser-pick.js +162 -162
  117. package/skills/browser-tools/browser-screenshot.js +34 -34
  118. package/skills/browser-tools/browser-start.js +86 -86
  119. package/skills/browser-tools/package-lock.json +2556 -2556
  120. package/skills/browser-tools/package.json +19 -19
  121. package/skills/code-review-core/SKILL.md +20 -20
  122. package/skills/codebase-scout/SKILL.md +19 -19
  123. package/skills/grill-me/SKILL.md +10 -10
  124. package/skills/local-jacoco-coverage/scripts/run-coverage-analysis.sh +0 -0
  125. package/skills/local-jacoco-coverage/scripts/start-jacoco-agent.sh +0 -0
  126. package/skills/loop-agent/SKILL.md +1 -0
  127. package/skills/loop-agent/references/command-reference.md +641 -639
  128. package/skills/loop-agent/references/docs-converge.md +126 -126
  129. package/skills/loop-agent/references/learned/README.md +21 -21
  130. package/skills/loop-agent/references/pi-prompt.md +23 -23
  131. package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
  132. package/skills/playwright-cli/references/element-attributes.md +23 -23
  133. package/skills/playwright-cli/references/playwright-tests.md +39 -39
  134. package/skills/playwright-cli/references/request-mocking.md +87 -87
  135. package/skills/playwright-cli/references/running-code.md +241 -241
  136. package/skills/playwright-cli/references/session-management.md +225 -225
  137. package/skills/playwright-cli/references/storage-state.md +275 -275
  138. package/skills/playwright-cli/references/test-generation.md +433 -433
  139. package/skills/requesting-code-review/SKILL.md +101 -101
  140. package/skills/requesting-code-review/code-reviewer.md +168 -168
  141. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  142. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  143. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  144. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  145. package/skills/systematic-debugging/find-polluter.sh +63 -63
  146. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  147. package/skills/systematic-debugging/test-academic.md +14 -14
  148. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  149. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  150. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  151. package/skills/using-git-worktrees/SKILL.md +215 -215
  152. package/skills/verification-before-completion/SKILL.md +154 -154
  153. package/skills/webapp-testing/SKILL.md +19 -19
  154. package/dist/worker/console/static/assets/index-fsjzREob.js +0 -56
@@ -1,639 +1,641 @@
1
- # loop-agent 命令参考
2
-
3
- 需要 loop-agent 的精确 CLI 命令、setup 命令、task lifecycle 命令、docs helper、goal 命令或 stats 时使用本文。
4
-
5
- ## loop-agent 入口
6
-
7
- **优先在目标 repo 目录内执行命令** — loop-agent 通过 `harness.json.project` 自动检测使用哪个 repo adapter。跨目录操作时显式加 `--repo-root <target-repo>`。
8
-
9
- 默认使用全局 CLI:
10
-
11
- ```bash
12
- loop-agent <command> ...
13
- ```
14
-
15
- 面向自举迭代和日常使用时,全局 CLI 应来自 npm 上已发布的安装包。首次安装或有意升级使用 `@latest`:
16
-
17
- ```bash
18
- npm install -g @tea-agent/loop-agent@latest
19
- npm list -g @tea-agent/loop-agent --depth=0
20
- loop-agent --version
21
- loop-agent doctor
22
- ```
23
-
24
- 一次自举任务启动后不要中途升级控制器;记录 `npm list -g` 显示的实际版本。不要在 DAG 节点中反复用 `npx @latest` 拉取,也不要使用当前工作区的 `npm link` 或 `npm run dev` 作为控制器去修改 loop-agent 本仓库的 CLI、DAG runtime、executor、package metadata 或 build output。`npm run dev -- <command> ...` 只用于源码调试和聚焦 CLI 开发。
25
-
26
- 发布包入口加载 `dist/cli.js`;开发入口加载 `src/cli.ts`。
27
-
28
- 发布包携带静态能力资料:`skills/`(包内内置,含 `loop-agent` 与 `agent-worker`;`loop-agent init` 投影时镜像为目标项目 `.agents/skills/`)、`docs/templates/`、`docs/architecture/`、`docs/skills/` 和 `examples/`。`docs/templates/init-managed-agents.md` 是 package-only 的 `AGENTS.md` managed block 渲染真源,不复制到目标治理 `templates/`;其余目标模板按 init surface 投影。`ai_workspace/loop-agent/`(默认 governanceRoot)下的 `progress/`、`reports/`、`exec-plans/`、`decisions/` 由 `loop-agent init` 在目标项目创建目录并投放 README,其中的任务正文属于目标仓库运行中生成的事实,不从 npm 包复制。
29
-
30
- ## 命令参考
31
-
32
- ## 默认选择模型
33
-
34
- 选择命令时按以下优先级:
35
-
36
- 1. **主路径 lifecycle**,用于常规 autonomous work:
37
-
38
- ```bash
39
- # 非微小 / 跨会话(推荐默认):loop-agent plan create PLAN_ID "Title"
40
- loop-agent task advance TASK_ID "Task Title" \
41
- --prd path/to/prd.md \
42
- --accept-recommendations DIGEST \
43
- --allowed-path "src/**" \
44
- --forbidden-path ".harness/**" \
45
- --verify "<label>:<command>" \
46
- --json
47
-
48
- # 审查 gate.writeSet / gate.digest 后
49
- loop-agent task advance TASK_ID \
50
- --approve-gate "write-set-review:DIGEST" \
51
- --json
52
- loop-agent task status TASK_ID --json
53
-
54
- # 有 plan 时收尾
55
- loop-agent plan complete PLAN_ID --summary "..."
56
- ```
57
-
58
- `--verify` 命令应取项目 `AGENTS.md` / `docs/governance/verification-matrix.md` 登记的验证命令(不要假定 `npm run typecheck` 存在);`--verify` 可选,省略时自动从 package.json scripts 或既有 managed `task.json.verifyCommands` 推导建议。
59
-
60
- 首次 `task advance` 内部完成 create、PRD 归档、managed contract 投影、DAG 生成与 strict validate,并停在 writeSet gate;批准后同一命令长跑到稳定终态并做确定性 promotion/closeout。决策表与反模式见 `source-and-plan-practice.md`。
61
- 2. **Operator 工具**,用于 recovery、诊断、评测重放:
62
-
63
- ```bash
64
- loop-agent eval replay --spec <path> --json
65
- loop-agent eval report --replay-id <id> --markdown
66
- loop-agent eval candidate register --manifest <path> --json
67
- loop-agent eval candidate show --candidate-id <id> --json
68
- loop-agent eval candidate list --json
69
- loop-agent eval candidate transition --candidate-id <id> --to <state> --reason <text> --json
70
- loop-agent task status <task-id> --json
71
- loop-agent task advance <task-id> --json # 失败后重跑同一 lifecycle 入口
72
- loop-agent dag report --latest --markdown # advanced forensic
73
- loop-agent dag closeout-draft --run-id <run-id> # advanced forensic handoff draft
74
- loop-agent spine audit <task-id> --markdown
75
- loop-agent knowledge curate --markdown --output ai_workspace/loop-agent/reports/<task-id>-learned-proposal.md
76
- loop-agent loop-benchmark --markdown
77
- ```
78
-
79
- 3. **Escape hatch**,仅用于 worktree 隔离委派、executor 调试或 one-shot 诊断:
80
-
81
- ```bash
82
- loop-agent delegate <task-id> --auto-run
83
- loop-agent harvest <task-id>
84
- loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-task.md
85
- loop-agent pi-prompt "Reply with exactly OK."
86
- ```
87
-
88
- ### Setup(首次)
89
-
90
- ```bash
91
- npm install -g @tea-agent/loop-agent@latest
92
- loop-agent --version
93
- loop-agent --help
94
- ```
95
-
96
- ### 检查 repo harness
97
-
98
- ```bash
99
- loop-agent inspect # 当前 repo(自动检测)
100
- loop-agent --repo-root /path/to/target-repo inspect # 指定 repo
101
- ```
102
-
103
- ### 健康检查
104
-
105
- ```bash
106
- loop-agent doctor
107
- ```
108
-
109
- `doctor` 报告当前生效的 Pi backend 及 SDK/CLI 可用性。Pi step 默认 SDK-first 执行:
110
-
111
- ```bash
112
- export CODE_AGENT_PI_BACKEND=sdk-first # 默认:先试 Pi SDK,允许时 fallback 到 CLI
113
- export CODE_AGENT_PI_BACKEND=cli-only # 紧急回滚:纯 CLI 路径
114
- ```
115
-
116
- SDK 回归或 SDK 可选依赖不可用时用 `cli-only` 诊断。CLI fallback 路径须与现有 workflow 行为兼容。
117
-
118
- ### 初始化与旧项目更新
119
-
120
- 用户中文表达到命令的映射(与目标项目 `AGENTS.md` 的“自然语言入口路由”保持一致):
121
-
122
- | 用户表达 | 命令 |
123
- | --- | --- |
124
- | loop-agent 初始化 / loop agent 初始化 / loop agent初始化 / 初始化 loop-agent | 先运行 `loop-agent init instructions --repo-root .`,再运行 `loop-agent init --repo-root . --profile full --merge`,随后补全 README/验证矩阵并复查 doctor/inspect/docs audit |
125
- | loop-agent初始化更新 / loop-agent 初始化更新 / 更新 loop-agent 初始化内容 / 升级 loop-agent 初始化 / 初始化对齐 / 升级后对齐 | `loop-agent init upgrade --repo-root . --json`(写入型 controller-owned 闭环;主会话完成 controller 返回的具体单文件 merge task 后以 `--continue` 推进,禁止停在中间态) |
126
- | 初始化更新校验 / loop agent初始化更新校验 / 检查初始化更新 / 只检查,不要修改 | `loop-agent init check-update --repo-root . --markdown`(严格只读;不得创建 upgrade run、`apply-safe` 或模型合并) |
127
- | 初始化安全更新 / loop agent初始化安全更新 / 应用初始化更新 | `loop-agent init upgrade --repo-root . --json`(不要求用户拼接低层安全更新参数) |
128
- | init reconcile / 控制器升级后对齐目标项目 | `loop-agent init upgrade --repo-root . --json`(保留 `reconcile` 仅作兼容低层诊断) |
129
- | loop-agent 帮我完成 / 帮我实现 / 帮我修复 / 帮我开发 <需求>;使用 loop-agent 完成 <X>;按 loop-agent 流程处理 <X> | 先 `loop-agent task advance <task-id> "任务标题" --prd <prd.md> --allowed-path "<glob>" --json`,审查 writeSet gate 后 `task advance --approve-gate write-set-review:<digest> --json`;主会话编排而不直接写业务实现 |
130
-
131
- ```bash
132
- loop-agent init instructions --repo-root <target-repo>
133
- loop-agent init --repo-root <target-repo> --profile full --merge \
134
- --provider deepseek --model deepseek/deepseek-v4-flash
135
- loop-agent init doctor --repo-root <target-repo>
136
- loop-agent init check-update --repo-root <target-repo> --json
137
- loop-agent init check-update --repo-root <target-repo> --markdown
138
- loop-agent init update --repo-root <target-repo> --bootstrap-surface
139
- loop-agent init update --repo-root <target-repo> --apply-safe
140
- loop-agent init reconcile --repo-root <target-repo> [--json|--markdown] # compatibility low-level diagnostic
141
- loop-agent init upgrade --repo-root <target-repo> --json
142
- loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --status --json
143
- loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --continue --json
144
- loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --report --markdown
145
- ```
146
-
147
- fresh init 将精确引用写到 `executors.pi.LOW/MED/HIGH`。fresh `loop-agent init` 会将合格且完整的 `provider/model` 引用投影到 `executors.pi.LOW/MED/HIGH`,即 `executors.pi.LOW`、`executors.pi.MED` 和 `executors.pi.HIGH`。三个 tier 齐全时不会写入 `defaultModel`,也不会恢复或建议旧顶层 routing 字段。
148
-
149
- `init check-update` 是只读升级报告,用于发现目标项目是否落后于当前包内初始化 surface。输出会区分 deterministic actions、model merge tasks、human decisions 和 recommended next。`--markdown` 会渲染可直接交给模型执行的合并指引,包含 `allowedPaths`、`forbiddenPaths`、`mergeRules` 和 `verification`。
150
-
151
- `init update --bootstrap-surface` 为旧项目写入 `.harness/init-surface.json` 的 `inferred-baseline`,不伪装成历史 recorded baseline。`init update --apply-safe` 只执行确定性安全动作:补缺失文件、创建目录、刷新 managed block;已有但无法确认与当前包一致的文件会进入 model merge tasks,不会被覆盖。模型 merge 只会自动展开不含 tier 或其他旧字段的唯一、完整且可证明等价的旧 `defaultModel: "provider/model"`;顶层 `model`、`models`、`modelProfiles`、`modelRouting`、`verify`、`sequentialWorkflowRole`、部分/对象 tier、bare model、冲突 provider 或未知语义均 fail closed,并保留原始 `harness.json`。
152
-
153
- `init upgrade` 是写入型升级入口:首次运行冻结 controller identity、检查 npm latest、扫描 surface、自动执行安全动作,并把 run facts 持久化到 `.harness/init-upgrades/<run-id>/`。`--status` 与 `--report` 严格只读;`--continue` 会重新核验 identity、当前 hash 与不变量。版本选择、无法判定冲突、凭据、破坏性删除或 active writer 才进入 human decision。普通语义冲突返回具体单文件 `allowedPaths` merge task,主会话必须合并后继续,不能把 `needs-model-merge` 作为完成。默认管理项目级 OpenCode/Pi recovery 与 `.pi/settings.json` nested merge,保留显式 disabled,Pi trust 后才加载;默认不读写 `~/.pi/agent/settings.json`。旧 `init reconcile` 保留为兼容低层诊断。
154
-
155
- ### 查看或复制内置示例
156
-
157
- ```bash
158
- loop-agent examples list
159
- loop-agent examples show <name>
160
- loop-agent examples copy <name> --output examples/<name>
161
- ```
162
-
163
- `examples` 只读取或复制包内示例,不会自动写入目标项目。省略 `--output` 时,`copy` 会写到目标项目的 `examples/<name>`。
164
-
165
- ### 创建 / 推进 task(标准入口)
166
-
167
- ```bash
168
- loop-agent task advance <task-id> "Task Title" \
169
- --prd path/to-prd.md \
170
- --allowed-path "src/**" \
171
- --verify "<label>:<command>" \
172
- --json
173
- loop-agent task advance <task-id> --approve-gate "write-set-review:<digest>" --json
174
- loop-agent task status <task-id> --json
175
- ```
176
-
177
- 首次 advance 可 create `.harness/tasks/<task-id>/`(含 `source/`、`artifacts/`、`logs/`),归档 PRD 到 `source/references/`,派生 managed `需求.md` / `执行约束.md`,生成并 strict validate DAG,停在 writeSet gate。批准后同一命令长跑并确定性 promotion/closeout。
178
-
179
- PRD 原文 **不改写**;冲突时以 `source/references/*` 为准。`referenceDocs` `{ path, name? }[]` 对象数组。
180
-
181
- ### Task Contract / operator machine surface
182
-
183
- ```bash
184
- loop-agent task status <task-id> --json
185
- loop-agent task advance <task-id> --from-draft <path> --json
186
- loop-agent operator capabilities [--json]
187
- ```
188
-
189
- `task` 标准面是 advance/status;managed contract 经 `task advance`/`task status`;Console Interview validate/diff 走 in-process application API,无公开 CLI。`operator` 返回 Operator machine envelope capabilities,供 Console/控制面做能力协商。
190
-
191
- ### Task action context / artifact instructions
192
-
193
- ```bash
194
- loop-agent task status <task-id> --json
195
- loop-agent instructions source --task <task-id> --json
196
- loop-agent instructions dag-draft --task <task-id> --json
197
- loop-agent instructions task-artifacts --task <task-id> --json
198
- loop-agent instructions promotion --task <task-id> --json
199
- loop-agent instructions closeout --task <task-id> --json
200
- ```
201
-
202
- `task status` 是只读 lifecycle 入口,返回 `lifecycleState`、`gate`、`blockers` 与单一 `next`。`instructions` 在写入 source、DAG draft、task artifacts、promotion 或 closeout 前返回目标路径、依赖、模板、写策略与完成标准;blocked artifact 会列出 `missingDependencies`。`instructions task-artifacts` 只要求 promote 桥接的 `修改记录.md` / `验证结果.md`,不要求手写分析/计划/复盘三份 L1 报告。
203
-
204
- ### Promotion / closeout
205
-
206
- ```bash
207
- loop-agent task advance <task-id> --json
208
- ```
209
-
210
- 成功路径由 `task advance` 内部从 completed DAG facts 生成 task `修改记录.md` / `验证结果.md` 与 progress handoff,不调用 LLM、不修改 completed run facts。
211
-
212
- one-shot run evidence 位于 `.harness/runs/{active,completed,failed}/<run-id>/`。`cursor-prompt` Pi `cursor` tool 会创建这类 run evidence;当前 `pi-prompt` 不创建 `.harness/runs/`。active 目录只应保留 live one-shot run,残留或 `.DS_Store` 等系统文件应清理。详见 `one-shot-runs.md`。
213
-
214
- ### 运行任何 step 前:准备 source materials
215
-
216
- 标准路径用 `task advance` 一次完成 create、归档 PRD、派生 managed contract:
217
-
218
- ```bash
219
- loop-agent task advance <task-id> "标题" \
220
- --prd <path-to-original-prd.md> \
221
- --allowed-path "<glob>" \
222
- --forbidden-path ".harness/**" \
223
- --verify "<label>:<command>" \
224
- --json
225
- ```
226
-
227
- 默认无 LLM 写 source;工程边界用 flags 显式给出。不要让 AI 直接改写 `source/references/*`。
228
- Product Requirement V3/V4(`product-requirement.md`)由确定性解析消费;`product-analysis` / `requirement-clarification` 不能单独作为可执行 PRD。
229
- intake 失败时不要在原 PRD 目录生成兼容 md/json;`--from-draft` **仅**人工 reviewed draft / managed 恢复 / 调试,不是 `EMPTY_ACCEPTANCE` 默认恢复路径。
230
-
231
- ### Feature-study workflow(参考代码 轻量实现)
232
-
233
- 例如「分析参考仓库的一项功能,并在目标仓库实现轻量版本」:
234
-
235
- ```bash
236
- loop-agent --repo-root /path/to/target-repo study init <task-id> "Title" \
237
- --reference-repo codex:/Users/mac/go/src/codex \
238
- --reference-doc plan:/Users/mac/plans/codex-goal-feature.md \
239
- --reference-glob "codex-rs/**/goal*.rs"
240
-
241
- # 编辑 source/需求.md + source/执行约束.md,然后按标准 task lifecycle 推进:
242
- loop-agent --repo-root <target-repo> task advance <task-id> --profile auto --dag-output .harness/tasks/<task-id>/dag.json --json
243
- # 审查 writeSet gate 后,继续同一任务:
244
- loop-agent --repo-root <target-repo> task advance <task-id> --approve-gate "write-set-review:<digest>" --json
245
- loop-agent --repo-root <target-repo> task status <task-id> --json
246
- ```
247
-
248
- `task advance` 会生成并 strict validate 任务 DAG;`--dag-output` 只用于导出可审阅草稿,不要求再把 `dag validate` 或 `dag execute` 当作标准任务的下一步。
249
-
250
- 仅当有意把导出的 JSON 当作**独立的 advanced arbitrary DagSpec** 排查或执行时,才使用以下高级入口;它们不替代上述标准 task lifecycle:
251
-
252
- ```bash
253
- loop-agent --repo-root <target-repo> dag validate --dag .harness/tasks/<task-id>/dag.json --strict-models --strict-governance
254
- loop-agent --repo-root <target-repo> dag execute --dag .harness/tasks/<task-id>/dag.json --cwd <target-repo>
255
- ```
256
-
257
- 目标 repo 需有 `.harness/prompts/feature-study-analyze.md` 与 `feature-study-plan.md`(缺失时从 loop-agent 复制)。
258
-
259
- ### Removed sequential workflow
260
-
261
- 历史顺序式 `run analyze|plan|spec|implement|verify|retrospective|auto|loop|continue|study` 已移除。新任务不要使用这些命令,也不要在 prompt、skill 或 docs 中把它们描述为 fallback。
262
-
263
- ### Reference helpers(compatibility)
264
-
265
- ```bash
266
- loop-agent reference index <task-id>
267
- ```
268
-
269
- `reference` 是 compatibility / feature-study 辅助入口,用于维护或检查参考资料索引。常规实现任务不要从 `reference` 起步;使用 `task advance` 推进同一任务,并用 `task status` 做只读状态确认。
270
-
271
- ### Task goal lifecycle(compatibility-only / deprecated-candidate)
272
-
273
- ```bash
274
- loop-agent goal set <task-id> "Objective text" [--token-budget <number|null>]
275
- loop-agent goal set <task-id> "Replacement objective" --force
276
- loop-agent goal get <task-id>
277
- loop-agent goal pause <task-id>
278
- loop-agent goal resume <task-id>
279
- loop-agent goal clear <task-id>
280
- ```
281
-
282
- - 已有 goal 且 objective 不同时,替换须显式 `--force`。
283
- - `harness.json` 可用 `features.goals=false` 关闭此 surface。
284
- - `status` 现含 `goal`(`objective/status/tokenBudget/tokensUsed/timeUsedSeconds/continuationRuns`)、`verifyEnv`、`maxGoalContinuationsPerRun` 及可选 `flowHint`
285
- - `source/需求.md` `<!-- goal-scope -->` … `<!-- /goal-scope -->` 包裹仅 goal 验收项;范围外 `- [ ]` 不阻塞 goal 完成
286
- - `task.json`:`verifyEnv=clean`(默认);goal continuation verify 重试时用 `flow=loop`,避免盲目 implement 循环
287
- - continuation runtime policy,不是普通用户消息:
288
- - continuation prompts are legacy compatibility metadata under `.harness/prompts/`
289
- - 触发时叠加 `.harness/prompts/objective_updated.md` `.harness/prompts/budget_limit.md`
290
- - 将渲染文本注入隐藏 `<goal_context>...</goal_context>` 片段供 step 执行
291
- - 用于保持 continuation 行为一致,减少聊天式历史噪音
292
- - preflight state/mode guard + 启动前 goal 一致性复检
293
-
294
- ### Advanced arbitrary DagSpec validation execution
295
-
296
- 以下 `dag validate`、`dag execute`、`dag report` 与相关 run-level 命令是 **advanced arbitrary DagSpec / forensic** surface,适用于手写或显式导出的独立 DAG、诊断与证据审阅。它们不创建标准 task lifecycle,也不取代标准 mutation 的 `task advance` 或只读状态查询的 `task status`。
297
-
298
- ```bash
299
- loop-agent dag validate --dag <temp-dir>/hybrid-dag.json # 常规 validation;无 .harness/dag-runs 副作用
300
- loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-models # 非 canonical executorModels 时失败
301
- loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance # governance warning 时失败
302
- loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-skills # missing/error/truncated skill unresolved reference 时失败
303
- loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance --spine-task <task-id> # 同时消费 minimal spec spine audit
304
- loop-agent dag validate --dag ai_workspace/loop-agent/templates/agent-dag.supervised-implementation.json --strict-models --strict-governance # role=supervisor + write-set-gate topology
305
- cp ai_workspace/loop-agent/templates/agent-dag.supervised-implementation.json <temp-dir>/supervised-dag.json
306
- (npx vitest run test/dag-supervised-template.test.ts test/dag-validate.test.ts test/dag-shell-executor.test.ts --reporter=dot) # supervised template + shell.verdictGate runtime
307
- loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> # advanced arbitrary DagSpec;stderr 默认输出节点进度与 30s 心跳,stdout 保持最终 JSON
308
- loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> --progress-interval-ms 60000 # 调整心跳;--quiet 可禁用
309
- loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <temp-dir>/hybrid-dag.canvas.tsx # 可选 derived Canvas view
310
- bash scripts/run-dag-safe.sh --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> [--timeout-secs 7200] # advanced arbitrary DagSpec 的后台运行 + 轮询,避免外层 bash timeout 杀进程(见 agent-dag-runner.md §Adaptive liveness)
311
- loop-agent dag init-hybrid <task-id> # 生成可审阅的 DAG draft
312
- loop-agent dag workflow-plan <task-id> --profile pr-review --output .harness/tasks/<task-id>/workflows/planned/<name>.workflow.json
313
- loop-agent dag workflow-validate --workflow .harness/tasks/<task-id>/workflows/planned/<name>.workflow.json --strict-governance
314
- loop-agent dag workflow-compile --workflow .harness/tasks/<task-id>/workflows/planned/<name>.workflow.json --output .harness/tasks/<task-id>/workflows/compiled/<name>.dag.json --manifest .harness/tasks/<task-id>/workflows/compiled/<name>.compile-manifest.json
315
- # compiled workflow DAGs stay explicit; they do not implicitly replace task root dag.json
316
- loop-agent dag status --run-id <run-id> # 单次 run JSON 摘要(approvalFlow, healthIssues)
317
- loop-agent dag doctor # 扫描 active/paused/completed runs;advisoryOnly health report
318
- loop-agent dag report [--run-id <run-id>] [--lifecycle active|paused|completed|all] [--json|--markdown] [--failed-only] [--latest] [--paused-latest] [--action <recovery-action>] # derived per-node 聚合(只读);JSON 锁定于 ai_workspace/loop-agent/templates/agent-dag-report.schema.json;--paused-latest 聚焦最新 paused run;playbook: ai_workspace/loop-agent/agent-dag-recovery-playbook.md
319
- loop-agent dag reconcile-run --run-id <run-id> # 只读检查 effectiveStatus 与恢复/收口资格
320
- loop-agent dag reconcile-run --run-id <run-id> --action supersede --reason "..." # 显式保留证据并标记为任务已另行完成
321
- loop-agent dag reconcile-run --run-id <run-id> --action abandon --reason "..." # 显式保留证据并收口为已放弃
322
- loop-agent dag rerun --run-id <run-id> --from-node <node-id> --plan [--json] # 从节点重跑资格预检(不执行)
323
- loop-agent dag rerun --run-id <run-id> --from-node <node-id> --plan-hash <sha256> --request-id <key> --reason "..." [--json] # 安全子图 continuation
324
- loop-agent dag rerun-task --run-id <run-id> --reason "..." --request-id <key> [--profile auto] [--task-id <id>] [--json] # standalone 完整任务重跑
325
- loop-agent dag reconcile-tasks --glob '<pattern>' # 仅报告的 task/run/artifact/verify drift audit
326
- loop-agent dag final-verification <task-id> # 生成 closeout DAG,closeout artifact 后再 final verify
327
- loop-agent dag decision inspect --run-id <run-id> [--node-id <node-id>] # dry-run envelope 重解析;除 run 缺失外 exit 0
328
- loop-agent dag decision validate --run-id <run-id> [--node-id <node-id>] # 同上;envelope 无效时 exit 1
329
- loop-agent dag approve --run-id <run-id> --option <id> # decision gate 人工 approve
330
- loop-agent dag reject --run-id <run-id> --reason "..." # reject paused run
331
- loop-agent dag resume --run-id <run-id> # approve 后继续
332
- ```
333
-
334
- **Decision gate(M3–M5)**:Pi node 上 `decisionGate.enabled: true` 启用 envelope 解析(M3 `record-only` 或 M4 `pause-on-human`)。M4 pause 后用 `dag approve/reject/resume/status/doctor` — 仅确定性 artifact,无新 `human`/`decision` executor。用 `dag report --paused-latest` 聚焦最新 paused run;`dag decision inspect|validate` 做 envelope dry-run(永不自动 resume/retry)。`browser` 仍 deferred。
335
-
336
- **In-flight DAG governance**:shell verify node 内用 `HARNESS_ALLOW_ACTIVE_DAG_RUNS=1 bash scripts/check-repo.sh`;run 归档到 `completed/` 后,在 DAG 外跑裸 `bash scripts/check-repo.sh`。
337
-
338
- - `dag validate` arbitrary DagSpec schema/topology/ranks 检查;审 `warnings` 中的显式 `executorModels` drift 与 governance lint。它不替代 `task advance` 的标准任务生成与严格校验。
339
- - 手写临时 DAG spec 执行前用 `dag validate --strict-models`,model-matrix drift 应 fail fast。
340
- - read-only artifact-boundary DAG shell governance warning fail fast 时用 `dag validate --strict-governance`。
341
- - 人工 handoff 视图用 `dag report --markdown`(summary、node timeline、failures、四段 Recovery Plan、artifacts、建议 next action)。仅 derived、advisory;需保存时重定向到平台临时目录或 `ai_workspace/loop-agent/reports/`。
342
- - operator 聚焦最新 paused run `dag report --paused-latest`(等同 `--lifecycle paused --latest`;勿与显式 `--lifecycle` 并用)。
343
- - operator 关注的 run 用 `dag report --failed-only`、`--latest`、`--action <recovery-action>` 收窄。category→action 映射见 `ai_workspace/loop-agent/agent-dag-recovery-playbook.md`。
344
- - 只读扫描 `.harness/dag-runs/` 下所有 run 的生命周期 health issue 与建议 action `dag doctor`(`advisoryOnly: true`;不 mutate facts)。
345
- - `dag status` / `dag doctor` runner heartbeat 只表示 lease;Pi meaningful progress 由 Provider/tool/output 活动决定。节点可显示 `quiet`、`suspected-stall`、`probing` 或 `needs-attention`,不要仅凭运行时长手工结束。
346
- - Pi 默认 4h absolute max,`agent-worker` 默认不设置外层 `dag execute` wall-clock;显式 `worker.timeout_ms` 仍是 hard timeout。`termination-unconfirmed` 表示旧 attempt 的退出无法确认,禁止自动 retry,先保留现场并完成 operator 对账。
347
- - approve/resume 前用 `dag status --run-id <id>` 看单次 lifecycle、`approvalFlow`、`hasHumanApproval`。
348
- - lifecycle、raw status liveness 冲突时先用 `dag reconcile-run --run-id <id>` 只读检查。只有 runner 已证明停止且 operator 明确给出 `supersede|abandon` reason 时才允许收口;它保存原始 state,不把未执行节点标成成功。
349
- - task status、source/artifacts、DAG outcome、verification 记录可能 drift 时用 `dag reconcile-tasks --glob '<pattern>'`。默认仅报告;`--patch` 显式且不能伪造 verification evidence。
350
- - 大型 PRD closeout `dag final-verification <task-id>` 生成确定性 DAG,final verification closeout artifact 创建之后。
351
- - run facts dry-run envelope 解析用 `dag decision inspect|validate`;`validate` 在无效 envelope 时 exit 1;永不自动 resume/retry
352
- - Decision Gate prompt 可用 `buildDagDecisionGateEvidence()`(`src/workflows/dag/decision-evidence.ts`)做与 `dag report --json`、`ai_workspace/loop-agent/templates/agent-dag-report.schema.json` 对齐的只读摘要;不 mutate run state,不执行 retry/resume。
353
- - `dag execute --dry-run` 仅用于 advanced arbitrary DagSpec 的预演:snapshot 写入命令返回的 `runDir`(当前形态为 `.harness/dag-runs/dry-run/<runId>/`);它不创建 active run、不出现在 active overview,也不能作为 `dag resume` 的目标。
354
- - task source 应从 `harness.json.workflowPolicy.dag.profileRouting` 与确定性 candidate `governanceProfile` 选择治理强度时用 `task advance --profile auto`。无 `--profile` 仅用于旧 standard-compatible 输出;`--profile minimal|standard|reviewed|supervised` 记录治理强度,不替换已识别的专用业务 workflow
355
- - 默认 `standard` 任务先读取 `source/需求.md` 中的结构化任务类型,再结合 `allowedPaths` 与 React/Next/Vue 项目能力做确定性分类。确认是前端项目且任务不是明确后端、混合、排除前端或仅文档/测试范围时,自动选择 `frontend-implementation`,不依赖需求关键词;普通后端实现绝不自动进入 `backend-test`。
356
- - 新生成 DAG 会冻结任务源路径、SHA-256 和显式 `REQ/BR/AC` `sourceBinding`。前端计划漏号时 `frontend-requirement-coverage-shell` writer 前阻断。中断恢复应修复 task source 后重新运行 `task advance`,不要生成只携带上游摘要的 impl-only DAG;strict governance 会拒绝无来源绑定且无只读 planner 上游的 v3 孤立 writer
357
- - 显式专用 `taskKind` 保持兼容并优先于任务源分类,也不扩充 governance profile:`frontend-implementation` 可有意覆盖为带 Mock 规范评估、contract gate、design gate 和验证链的前端模板;可选 `frontendMock` 配置 auto/required/disabled、既有服务目录和专项验证命令,required 合同不完整时不会生成 writer。`backend-test` 显式选择需求分析 → 功能用例 → 评审 → pytest 生成/执行 → 复盘的后端测试工程模板。
358
-
359
- ### Saved Dynamic Workflow operator UX
360
-
361
- ```bash
362
- loop-agent workflow list
363
- loop-agent workflow inspect <name>
364
- loop-agent workflow save --from /tmp/<task-id>.workflow.json --name <name>
365
- loop-agent workflow run <name-or-path> --cwd <repo-root>
366
- loop-agent workflow diff <name> --against /tmp/<task-id>.workflow.json
367
- loop-agent workflow replay <run-id>
368
- ```
369
-
370
- `workflow` 是 Dynamic Workflow 的 saved/operator surface。它读取 `WorkflowSpec`,编译为 DAG,再进入同一套 `dag execute` runtime;不会新增 executor 能力或绕过 DAG governance。真实写入任务仍应检查 compiled DAG 的 executor、writeSet、shell gates 和 completed facts 边界。
371
-
372
- ### Cursor sidecar
373
-
374
- `cursor-worker` 已删除。人工干预使用 `cursor-prompt` one-shot sidecar;见 `ai_workspace/loop-agent/cursor-prompt-sidecar.md`。
375
-
376
- ### Eval Replay(M1,只读 completed evidence)
377
-
378
- ```bash
379
- loop-agent eval replay --spec <replay-spec.json> [--json|--markdown] [--output <path>]
380
- loop-agent eval report --replay-id <id> [--json|--markdown]
381
- ```
382
-
383
- `eval replay` 只读取 `.harness/dag-runs/completed/<runId>/state.json` 与 `run.json`,要求 spec 携带两者的 SHA-256,hash 不一致时 fail closed。它将 completed DAG report 归一化为 verification、Token、耗时、executor calls、repair passes,并把 canonical scorecard 写到 `.harness/evaluation/replays/<replayId>/`。缺失 Token/耗时记录为 `null + missingFields`,不会补造为 0。
384
-
385
- M1 replay-only:不执行 Pi、不启动 DAG、不实现 private verifier、固定预算 enforcement candidate promotion;所有 scorecard 固定 `promotionEligible=false` 且包含 `replay_only`。
386
-
387
- ### Eval Candidate Registry(M2 W2.1–W2.2)
388
-
389
- ```bash
390
- loop-agent eval candidate register --manifest <candidate-manifest.json> [--json|--markdown]
391
- loop-agent eval candidate show --candidate-id <id> [--json|--markdown]
392
- loop-agent eval candidate list [--json|--markdown]
393
- loop-agent eval candidate transition --candidate-id <id> --to <state> --reason <text> [--json|--markdown]
394
- ```
395
-
396
- 注册不可变 Candidate Bundle 到 `.harness/evaluation/candidates/<candidateId>/`(`manifest.json` + append-only `lifecycle.jsonl`)。`bundleHash` 由 canonical payload 计算,与 `candidateId`/createdAt/lifecycle 分离;content refs 必须为 repo-relative safe path,且不得进入 evaluator/kernel/completed-facts 等 forbidden surface。`accepted` 仅是 registry 状态,**不**移动 incumbent alias、不 promotion。
397
-
398
- Replay spec 最小结构:
399
-
400
- ```json
401
- {
402
- "schemaVersion": 1,
403
- "replayId": "context-policy-replay-001",
404
- "incumbentCandidateId": "baseline",
405
- "challengerCandidateId": "role-context-v1",
406
- "evidence": [
407
- {
408
- "candidateId": "baseline",
409
- "taskRef": "task-a",
410
- "seed": 1,
411
- "split": "private",
412
- "runId": "completed-run-id",
413
- "stateSha256": "<64 hex>",
414
- "runSha256": "<64 hex>"
415
- }
416
- ]
417
- }
418
- ```
419
-
420
- ### 检查 task status
421
-
422
- ```bash
423
- loop-agent task status <task-id>
424
- ```
425
-
426
- ### Docs governance helpers
427
-
428
- ```bash
429
- loop-agent docs audit
430
- loop-agent docs archive ai_workspace/loop-agent/exec-plans/active/<plan>.md
431
- loop-agent plan list
432
- loop-agent plan create <plan-id> "<title>"
433
- loop-agent plan complete <plan-id> --summary "<summary>"
434
- loop-agent plan check
435
- loop-agent handoff check [task-id]
436
- loop-agent handoff coverage <task-id> [--json|--markdown]
437
- loop-agent coverage report --language python|java --input <coverage.json|jacoco.xml> --requirement-id <AC-id> --source-scope <path[,path]> [--output <path>] [--json|--markdown]
438
- ```
439
-
440
- - `docs audit`:扫描文档腐化风险,如 active/completed 漂移、失效链接、host-gap closeout
441
- - `docs archive`:将 active plan 迁入 completed,并自动重写常见 markdown 引用
442
- - `plan list`:列出当前 active plans 及其解析状态
443
- - `plan create`:优先从目标项目模板创建 active exec-plan,不存在时回退发布包内置模板;同步 `active/README.md`,拒绝重复 id、不安全文件名,失败时回滚
444
- - `plan complete`:将 active exec-plan 标记完成、迁入 completed、追加 `--summary` 并同步 active/completed 索引;失败时回滚所有已触碰文件
445
- - `plan check`:确定性校验 exec-plan 目录与索引之间的 missing、stale、duplicate、status mismatch;发现问题时输出 JSON 并以非零状态失败
446
- - `handoff check`:检查任务 source / artifacts / auto-commit scope 是否满足交付闭环
447
- - `handoff coverage`:从 `source/需求.md` 抽取 checklist / numbered / `REQ-*` 项并输出 coverage audit;未覆盖项 exit 1;`explicitly_out_of_scope` 不计为缺口
448
-
449
- ### Pi runtime reuse benchmark / decision(无 live call)
450
-
451
- ```bash
452
- loop-agent pi-reuse-benchmark \
453
- --report ai_workspace/loop-agent/reports/<benchmark-report>.md \
454
- --json
455
-
456
- loop-agent pi-reuse-benchmark \
457
- --report ai_workspace/loop-agent/reports/<benchmark-report>.md \
458
- --off-executor /path/to/off/executor.jsonl \
459
- --on-executor /path/to/on/executor.jsonl \
460
- --approval /path/to/approval.json \
461
- --markdown
462
- ```
463
-
464
- 对已有 benchmark plan/report 文件及可选 `executor.jsonl` evidence 做确定性摘要。**不**跑 live Pi call、不创建 task、不改 `CODE_AGENT_PI_REUSE_RUNTIME`(默认仍为 `off`)。输出 `defer`、`maintain-opt-in` 或 `eligible-for-human-review` — 永不 default-on。
465
-
466
- ### Loop convergence benchmark baseline(无 live call
467
-
468
- ```bash
469
- loop-agent loop-benchmark --markdown
470
- loop-agent loop-benchmark --markdown --output ai_workspace/loop-agent/reports/dogfood/2026-06-30-loop-agent-loop-benchmark.md
471
- ```
472
-
473
- 生成 M0 deterministic baseline,对照 `single-repair`、`3-pass-convergence`、`3-pass-convergence+quota`。**不**跑 live Pi/Cursor call、不创建 task、不改 `convergence.enabled` 默认值。live dogfood 证据缺失时输出 `blocked` 并建议保持 opt-in。
474
-
475
- ### Long-running loop outer state(experimental)
476
-
477
- ```bash
478
- loop-agent loop init <task-id>
479
- loop-agent loop status <task-id>
480
- loop-agent loop run <task-id> --action dag
481
- loop-agent loop run <task-id> --action shell-verify --command "bash scripts/check-repo.sh"
482
- loop-agent loop run <task-id> --action workflow --profile pr-review
483
- loop-agent loop run <task-id> --auto --max-rounds <count>
484
- loop-agent loop record-round <task-id> --action <name> --result "..." --lesson "..." --next "..." --decision continue
485
- loop-agent loop add-signal <task-id> --type human_followup --message "..."
486
- loop-agent loop closeout <task-id>
487
- ```
488
-
489
- `loop` 是 Agent DAG 之上的长程状态和 evidence layer,记录 rounds、signals、verification summaries 和 closeout draft。它不是替代 `task advance` 的实现路径;advanced 可用 `dag execute`;medium/large work 仍需要 DAG evidence 或明确 fallback reason。
490
-
491
- ### Minimal spec spine audit
492
-
493
- ```bash
494
- loop-agent spine audit <task-id> --json
495
- loop-agent spine audit <task-id> --markdown
496
- ```
497
-
498
- 检查 task 的 `source/需求.md`、`source/执行约束.md`、`task.json.allowedPaths` / `forbiddenPaths`、需求覆盖与 final verification command labels。`medium` / `large` task 的空 `allowedPaths`、allowed/forbidden overlap、未覆盖验收项、无 final verify command 都会让 audit 非零退出。
499
-
500
- ### Knowledge curator proposal
501
-
502
- ```bash
503
- loop-agent knowledge curate --markdown
504
- loop-agent knowledge curate --markdown --output ai_workspace/loop-agent/reports/<task-id>-learned-proposal.md
505
- ```
506
-
507
- 读取 `.harness/knowledge/patterns.jsonl` 中 completed convergence repair pattern,按 `failureClass + fixScope shape + invariant` 去重,生成 human-gated learned guidance proposal。命令只生成 proposal,不直接修改 `skills/loop-agent/references/learned/*.md`;输出会先通过 skill safety audit。
508
-
509
- ### Knowledge graph / query CLI
510
-
511
- ```bash
512
- loop-agent knowledge graph-init --product-name <name>
513
- loop-agent knowledge graph-materialize
514
- loop-agent knowledge graph-promote
515
- loop-agent knowledge graph-incremental-prepare --feature F-2026-004 --service <service>
516
- loop-agent knowledge query --mode by_feature --feature F-2026-004 --json
517
- loop-agent knowledge query --mode by_id --id SVC-order --json
518
- loop-agent knowledge query --mode search --text "keyword" --json
519
- ```
520
-
521
- 这些子命令是 package-backed 公共入口,封装包内 knowledge runtime 资产。目标项目应使用 `loop-agent knowledge ...`,不要要求仓库内直接运行未投影的 package-only kb runtime scripts。Feature 测试知识日常写回用 `task.json.taskKind = "knowledge-sync"`(必须绑定 `featureId`);业务图谱开荒/增量用 `taskKind = "knowledge-graph-bootstrap"`。
522
-
523
- ### Worker TaskSpec pipeline(伴生 CLI `agent-worker`)
524
-
525
- `agent-worker` 是与 `loop-agent` 一起发布的独立 CLI(`bin/agent-worker.js -> dist/worker/cli.js`),面向“产品线 Worker”场景:把一批 TaskSpec 规约成可校验、可串行调度、可晨报的流水线。它不进入 `loop-agent` 命令树,也不自带 executor——执行权全部通过子进程委托给已发布的 `loop-agent` CLI(最终是 DAG runtime + shell verification)。
526
-
527
- ```bash
528
- agent-worker task validate <task.yaml> # 三层校验 TaskSpec,输出 JSON
529
- agent-worker task explain-profile <task.yaml> # 解释业务 type/risk -> DAG governance profile 映射
530
- agent-worker task validate-feature <feature-dir> # 校验完整 feature packet 的验收、依赖、TaskSpec 和验证命令
531
- agent-worker feature scaffold --repo <repo-root> --template <backend-only|frontend-only|fe-with-api> \
532
- --feature-id F-YYYY-NNN --title "..." \
533
- [--be-path <pattern> ...] [--fe-path <pattern> ...] [--contract-path <path>] \
534
- --verify-command <cmd> [--verify-command <cmd> ...] \
535
- [--batch <yaml-or-json>] [--dry-run] [--json]
536
- agent-worker feature review --feature-dir <feature-dir> --repo <repo-root> [--json]
537
- agent-worker feature run --feature-dir <feature-dir> --repo <repo-root> [--dry-run] [--git-mode checkpoint] [--keep-failed-diff] [--json]
538
- agent-worker feature doctor --feature-dir <feature-dir> --repo <repo-root> [--json]
539
- agent-worker feature advance --feature-dir <feature-dir> --repo <repo-root> [--task-id <FINAL-VERIFY-id>] [--loop-agent-bin loop-agent] [--dry-run] [--apply --owner <owner>] [--json]
540
- agent-worker feature verify-final --feature-dir <feature-dir> --repo <repo-root> --task-id <qa-execute-id> [--json]
541
- agent-worker feature delivery --feature-dir <feature-dir> --repo <repo-root> [--qa-evidence <path>] [--final-verification <path>] [--waivers <path>] [--dry-run] [--json]
542
- agent-worker feature closeout --feature-dir <feature-dir> --repo <repo-root> [--apply --owner <owner>] [--json]
543
- agent-worker report metrics --repo <repo-root> --month <YYYY-MM> [--json]
544
- agent-worker task draft-followup <task-id> --worker-run-id <id> --feature-dir <feature-dir> --repo <repo-root> [--json]
545
- agent-worker feature approve-followup --feature-dir <feature-dir> --followup-id <id> --repo <repo-root> --owner <owner> [--dry-run] [--json]
546
- agent-worker task retry <task-id> --repo <repo-root> [--reason "<已修复的原因>"]
547
- agent-worker task reconcile <task-id> --feature-id <feature-id> --worker-run-id <id> --dag-run-id <id> --action abandon --reason "<text>" --repo <repo-root> [--force-abandon-recoverable]
548
- agent-worker pool mark-failed --feature-id <feature-id> --task-id <task-id> --worker-run-id <id> --reason "<text>" --repo <repo-root>
549
- agent-worker pool doctor --repo <repo-root> [--json] [--mapping <file>]
550
- agent-worker pool migrate-state --repo <repo-root> [--apply --owner <owner> --reason <reason>] [--mapping <file>] [--json]
551
- agent-worker feature git advance-checkpoint --feature-id <feature-id> --reason "<text>" --repo <repo-root>
552
- agent-worker batch plan-ready --feature-dir <feature-dir> --repo <repo-root> [--limit <count>] [--json]
553
- agent-worker batch run-ready \
554
- --feature-dir <feature-dir> \ # tasks/task-graph.yaml
555
- --repo <repo-root> \ # 目标 repo
556
- [--limit <count>] [--batch-run-id <id>] \
557
- [--loop-agent-bin loop-agent] \
558
- [--check-repo] [--check-repo-command <command...>] \
559
- [--quiet] \
560
- [--pi-model <model>] # smoke 覆盖:所有 pi 节点强制用该模型
561
- agent-worker report morning --repo <repo-root> [--batch-run-id <id>] [--output <path>] [--window night] [--date YYYY-MM-DD] [--tz Asia/Shanghai]
562
- agent-worker admission prepare --repo <repo-root> --feature-dir <path> --task-id <id> --at "YYYY-MM-DD HH:mm" [--tz Asia/Shanghai] [--task-card <ref>] [--json]
563
- agent-worker admission show <schedule-id> --repo <repo-root> [--json]
564
- agent-worker scheduler list --repo <repo-root> [--json]
565
- agent-worker scheduler status <schedule-id> --repo <repo-root> [--json]
566
- agent-worker scheduler ledger <schedule-id> --repo <repo-root> [--json]
567
- agent-worker scheduler doctor --repo <repo-root> [--json]
568
- agent-worker scheduler add <schedule-id> --repo <repo-root> --approve-gate <token> [--json]
569
- agent-worker scheduler cancel <schedule-id> --repo <repo-root> [--reason <text>] [--json]
570
- agent-worker scheduler harvest <schedule-id> --repo <repo-root> [--json]
571
- agent-worker scheduler discard <schedule-id> --repo <repo-root> --reason <text> [--force] [--json]
572
- agent-worker scheduler tick --repo <repo-root> [--json] # daemon/clock; not Operator Chat
573
- agent-worker scheduler clock install --repo <repo-root> [--interval-sec 60] [--loop-agent-bin <path>] [--json] # OS timer; CLI-only
574
- agent-worker scheduler clock status --repo <repo-root> [--json] # CLI-only
575
- agent-worker scheduler clock uninstall --repo <repo-root> [--json] # CLI-only
576
- agent-worker scheduler submit --repo <repo-root> --feature-id <id> --task-id <id> ... # low-level planning fact
577
- agent-worker scheduler transition <schedule-id> --repo <repo-root> --to <status> ... # internal lifecycle
578
- agent-worker console [--repo <repo-root>] [--port 8790] [--host 127.0.0.1] [--no-open] # Official 唯一入口;repo 默认当前目录;默认打开浏览器
579
- agent-worker console doctor --repo <repo-root> [--json] [--console-url <url>]
580
- agent-worker observe serve ... # REMOVED:stderr OBSERVE_SERVE_REMOVED,exit 2,不监听端口;请用 console + /inspect/
581
- agent-worker observe snapshot --repo <repo-root> # 输出 GlobalSnapshot JSON 到 stdout
582
- ```
583
-
584
- 语义要点:
585
-
586
- - TaskSpec 声明单个任务的业务上下文、`risk_level`、可选 `capabilities`、验收与 verify 边界;`risk_level` 被确定性映射到 task complexity。`capabilities: [interactive-ui]` 不改变风险或治理 profile,只把 implement/repair writer 路由到 HIGH,并注入禁止 helper-only 逃逸的真实 UI 交付契约。AcceptanceSpec / TaskGraphSpec 声明跨任务验收引用与依赖图,ready queue 决定可运行任务并检测未知依赖/环/文件一致性。
587
- - 业务 type(`backend-feature`/`frontend-feature`/`qa-testcode` 等)是产品线 profile,不能直接传给 `loop-agent task advance --profile`(Worker 映射后传入);Worker 会映射到 `auto`/`minimal`/`standard`/`reviewed`/`supervised`。
588
- - materializer 把 TaskSpec 物化为 `.harness/tasks/<task-id>`:`source_docs` 原样进入 `source/references/`,派生 `需求.md` 带权威声明、Source Docs/hash 追溯,以及 `acceptance_refs` 短摘要;随后 Worker 调用 `task advance` / `dag report`(advanced `dag execute`)。review 节点须对照 references + 派生契约 + 实现。成功路径走 `task advance` 自动 promotion/closeout;失败路径收集 `dag doctor` / `dag closeout-draft` evidence,只允许写入 `.harness/task-pool/failure-handoffs/**`,不放宽其他 `.harness/**` 写入边界。
589
- - Worker runtime state 落在目标 repo 的 `.harness/task-pool/`(artifacts、JSONL/state、晨报、failure handoffs)。自 0.8.0 起该目录是唯一受支持的 Task Pool runtime root;旧路径不读取、不迁移、不合并、不重映射。
590
- - preflight `task advance` 前跑 `loop-agent --version`、`inspect`、`docs-audit`、`git status --short --branch`,可选 `--check-repo`。一次夜间批处理期间不升级控制器,记录实际 `loop-agent` 版本。
591
- - `batch run-ready` 默认在 stderr 输出人类可读进度(批次起止、每个 task 的阶段与耗时、report 决策),stdout 只保留最终 JSON,便于管道取用;加 `--quiet` 可关闭进度。
592
- - `feature scaffold` 确定性生成 Feature Packet(`backend-only` / `frontend-only` / `fe-with-api`),默认 `profile: generic`,输出到 `<repo>/features/<feature-id>`;写盘前同源 `validate-feature`;`--batch` 全有或全无;不调用模型、不碰 `.harness/**`。
593
- - `feature review` 只读派生 Feature 状态、required AC 覆盖、阻塞、证据和唯一下一步。默认输出简洁的人类摘要,`--json` 输出 schemaVersion 1 JSON;损坏事实会显式降级,不会写 Feature Packet 或 Task Pool。
594
- - `feature run` 薄编排 validation、preflight、现有 run-ready、morning report、Observe snapshot 和最终 review。`--dry-run` 零写入;Git checkpoint 可用前单次最多推进一个 Ready 写任务。
595
- - `feature run` 遇到业务 Task 失败时仍刷新证据,但返回 `needs-action` 和非零退出码;无 Ready 是正常结果,并通过 `noReadyReason` 说明 Closed、Deliverable、AwaitingQA、NeedsAction、依赖阻塞或空 Feature
596
- - `feature run --git-mode checkpoint` 是唯一 checkpoint 授权:要求 clean repo,在本地 `agent/<feature-id>` 分支按成功 Task commit;失败先保存 patch/untracked/boundary audit 再恢复 clean。默认不 commit;从不 stash/push/merge/创建远程 PR。`--keep-failed-diff` 会停止 Feature,不继续后续 Task。
597
- - `feature doctor` 只读诊断 Feature 交付就绪:Task Pool 状态、dirty worktree、canonical evidence / Delivery manifest 是否存在,并给出下一步命令建议(不自动修复)。
598
- - `feature advance`(ADR 0007)编排 `verify-final delivery closeout preview[/apply]`:默认 evidence 路径取自 verify-final;`--dry-run` Delivery 不写盘且不 apply closeout;`--apply --owner` closeout preview ready 后原子 apply。不执行实现链 Ready tasks(仍用 `feature run`)。
599
- - `feature verify-final` clean Delivery HEAD 上复用已完成的 `qa-execute` TaskSpec 运行独立 DAG,跳过 promotion/closeout,原子生成 canonical QA aggregate 和 HEAD-bound final verification;相同 HEAD 的 canonical 成功 run 可幂等复用。
600
- - `feature delivery` 复用 transaction record,校验 Git history/trailers/changed files、成功 run、canonical QA/final verification 和 required AC,原子生成 manifest、coverage 与 `PR.md`;省略 evidence 路径时默认 `.harness/task-pool/evidence/<featureId>/{qa-pass,final-verification}.json`;`--dry-run` 零写入。`feature closeout` 默认只读复验全部 gates,显式 `--apply --owner` 才原子写回,stale facts post-validation 失败会整体回滚。
601
- - `report metrics` UTC 月去重投影 Feature/Failure/Follow-up/Delivery/AC/decision/recovery/boundary 指标,同时写 JSON Markdown;每项保留 numerator、denominator、sampleSizemissingData。
602
- - `task draft-followup` 会按全部 failure category 生成 TaskDraft 或人工行动卡:ProductBug/TestBug/FlakyTest/DependencyFailure 可批准;EnvFailure 连续两次后才生成 ENV-CHECK;Spec/Contract/Risk/Human/Unknown 只给行动卡。人工以 `feature approve-followup --dry-run` 预览,再带非空 `--owner` 批准 TaskDraft;行动卡不能批准。批准在 staging validation 后写 TaskSpec、graph、Ready/approval/event,原失败事实不改写,并有 rename/state/approval/index/event 回滚门禁。
603
- - `task retry` 是失败 Task 的唯一重试入口。它会保留原有运行记录和 failure handoff,并让下一次 `batch run-ready` 使用新的 `workerRunId`;不要删除运行态文件或手动修改状态来重试。
604
- - **推荐**裸入口 `agent-worker console`(repo 默认当前目录,默认 `127.0.0.1:8790`)提供 Operate + Inspect;本地图形环境 listen 成功后默认打开系统浏览器,`--no-open` 禁止;`console serve` 已删除。Inspect 路径为 `/inspect/#/...`,API 仍为根 `/api/**`。`observe serve` 已硬下线(`OBSERVE_SERVE_REMOVED` + exit 2,不监听);`observe snapshot` 保留。Inspect 本身不会启动、暂停或重试 Task / Worker / DAG。
605
- - Night Scheduler(本地夜间自治):白天 `admission prepare` 冻结 worktree + DAG writeSet gate;`scheduler add` 消费 gate 并预约 Task Pool `Queued`(不立即执行);`scheduler clock install` 安装本机 user-level OS timer(launchd / systemd --user / schtasks)周期调用 `scheduler tick`;tick 写统一 Clock receipt,doctor/morning/status 可解释 missing/stale/error/busy/drift;成功后 `pending-harvest`,早晨 `scheduler harvest`(exact-base FF)或 `scheduler discard`;`report morning --window night` 与 Inspect `#/night` / Operate 夜间面板读取同一套 facts。Clock install/status/uninstall 为 CLI-only。
606
- - 当前 Worker 仍是 v0(库 + CLI + dogfood);日间批处理未强制定时/CI 驱动;`report morning` 默认可从 Task Pool runs 汇总,并支持 `--window night` 投影 Scheduler facts
607
-
608
- ### 查看 duration statistics / context usage
609
-
610
- ```bash
611
- loop-agent stats
612
- loop-agent stats context --last 50
613
- loop-agent stats context --last 50 --json
614
- ```
615
-
616
- - `stats`:legacy step-duration 直方图(`.harness/tasks/*/logs/executor.jsonl`)。
617
- - `stats context`:最近 N 个 DAG runs 的 **skill-resolution** 与节点 outcome 只读聚合(declared/resolved/missing/error、truncation、`unresolvedReferences.reason`、FINISHED/ERROR/SKIPPED + failureCategory)。**不**宣称模型遵循率或 skill execution rate;corrupted snapshot 记为 finding 且 `ok=false`。
618
-
619
- ### Worktree delegate / harvest(escape hatch)
620
-
621
- ```bash
622
- loop-agent delegate <task-id> [--base <branch>] [--branch <name>] [--no-symlink] [--auto-run]
623
- loop-agent harvest <task-id> [--squash] [--no-archive] [--keep-worktree]
624
- loop-agent worktree create|list|remove ...
625
- ```
626
-
627
- 用于 worktree 隔离以及可选的 Pi-only DAG 执行与 merge 收口。常规 autonomous work 应优先 Agent DAG;详见 `multi-worktree.md` 与 `ai_workspace/loop-agent/cursor-prompt-sidecar.md`。
628
-
629
- ### One-shot Cursor sidecar(escape hatch)
630
-
631
- ```bash
632
- loop-agent cursor-prompt --cwd <repo-root> "Review this task without editing files."
633
- loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-cursor-task.md
634
- loop-agent cursor-prompt --cwd <repo-root> --model composer-2.5 --timeout 1800000 --file /tmp/bounded-cursor-task.md
635
- ```
636
-
637
- `cursor-prompt` 是 one-shot Cursor SDK helper。用于 bounded diagnosis、小修复或调试 executor;写入 prompt 必须包含 task id、objective、allowed paths、forbidden paths、verification 和 preserve-unrelated-changes 要求。需要 `CURSOR_API_KEY`。它会创建 one-shot run evidence,但 Cursor 自报成功不替代 shell verification。
638
-
639
- > **Historical(已移除)**:`subagent list|start|wait|wakeup|attach|stop` `dashboard` 已移除,不再出现在 CLI registry
1
+ # loop-agent 命令参考
2
+
3
+ 需要 loop-agent 的精确 CLI 命令、setup 命令、task lifecycle 命令、docs helper、goal 命令或 stats 时使用本文。
4
+
5
+ ## loop-agent 入口
6
+
7
+ **优先在目标 repo 目录内执行命令** — loop-agent 通过 `harness.json.project` 自动检测使用哪个 repo adapter。跨目录操作时显式加 `--repo-root <target-repo>`。
8
+
9
+ 默认使用全局 CLI:
10
+
11
+ ```bash
12
+ loop-agent <command> ...
13
+ ```
14
+
15
+ 面向自举迭代和日常使用时,全局 CLI 应来自 npm 上已发布的安装包。首次安装或有意升级使用 `@latest`:
16
+
17
+ ```bash
18
+ npm install -g @tea-agent/loop-agent@latest
19
+ npm list -g @tea-agent/loop-agent --depth=0
20
+ loop-agent --version
21
+ loop-agent doctor
22
+ ```
23
+
24
+ 一次自举任务启动后不要中途升级控制器;记录 `npm list -g` 显示的实际版本。不要在 DAG 节点中反复用 `npx @latest` 拉取,也不要使用当前工作区的 `npm link` 或 `npm run dev` 作为控制器去修改 loop-agent 本仓库的 CLI、DAG runtime、executor、package metadata 或 build output。`npm run dev -- <command> ...` 只用于源码调试和聚焦 CLI 开发。
25
+
26
+ 发布包入口加载 `dist/cli.js`;开发入口加载 `src/cli.ts`。
27
+
28
+ 发布包携带静态能力资料:`skills/`(包内内置,含 `loop-agent` 与 `agent-worker`;`loop-agent init` 投影时镜像为目标项目 `.agents/skills/`)、`docs/templates/`、`docs/architecture/`、`docs/skills/` 和 `examples/`。`docs/templates/init-managed-agents.md` 是 package-only 的 `AGENTS.md` managed block 渲染真源,不复制到目标治理 `templates/`;其余目标模板按 init surface 投影。`ai_workspace/loop-agent/`(默认 governanceRoot)下的 `progress/`、`reports/`、`exec-plans/`、`decisions/` 由 `loop-agent init` 在目标项目创建目录并投放 README,其中的任务正文属于目标仓库运行中生成的事实,不从 npm 包复制。
29
+
30
+ ## 命令参考
31
+
32
+ ## 默认选择模型
33
+
34
+ 选择命令时按以下优先级:
35
+
36
+ 1. **主路径 lifecycle**,用于常规 autonomous work:
37
+
38
+ ```bash
39
+ # 非微小 / 跨会话(推荐默认):loop-agent plan create PLAN_ID "Title"
40
+ loop-agent task advance TASK_ID "Task Title" \
41
+ --prd path/to/prd.md \
42
+ --accept-recommendations DIGEST \
43
+ --allowed-path "src/**" \
44
+ --forbidden-path ".harness/**" \
45
+ --verify "<label>:<command>" \
46
+ --json
47
+
48
+ # 审查 gate.writeSet / gate.digest 后
49
+ loop-agent task advance TASK_ID \
50
+ --approve-gate "write-set-review:DIGEST" \
51
+ --json
52
+ loop-agent task status TASK_ID --json
53
+
54
+ # 有 plan 时收尾
55
+ loop-agent plan complete PLAN_ID --summary "..."
56
+ ```
57
+
58
+ `--verify` 命令应取项目 `AGENTS.md` / `docs/governance/verification-matrix.md` 登记的验证命令(不要假定 `npm run typecheck` 存在);`--verify` 可选,省略时自动从 package.json scripts 或既有 managed `task.json.verifyCommands` 推导建议。
59
+
60
+ 首次 `task advance` 内部完成 create、PRD 归档、managed contract 投影、DAG 生成与 strict validate,并停在 writeSet gate;批准后同一命令长跑到稳定终态并做确定性 promotion/closeout。决策表与反模式见 `source-and-plan-practice.md`。
61
+ 2. **Operator 工具**,用于 recovery、诊断、评测重放:
62
+
63
+ ```bash
64
+ loop-agent eval replay --spec <path> --json
65
+ loop-agent eval report --replay-id <id> --markdown
66
+ loop-agent eval candidate register --manifest <path> --json
67
+ loop-agent eval candidate show --candidate-id <id> --json
68
+ loop-agent eval candidate list --json
69
+ loop-agent eval candidate transition --candidate-id <id> --to <state> --reason <text> --json
70
+ loop-agent task status <task-id> --json
71
+ loop-agent task advance <task-id> --json # 失败后重跑同一 lifecycle 入口
72
+ loop-agent dag report --latest --markdown # advanced forensic
73
+ loop-agent dag closeout-draft --run-id <run-id> # advanced forensic handoff draft
74
+ loop-agent spine audit <task-id> --markdown
75
+ loop-agent knowledge curate --markdown --output ai_workspace/loop-agent/reports/<task-id>-learned-proposal.md
76
+ loop-agent loop-benchmark --markdown
77
+ ```
78
+
79
+ 3. **Escape hatch**,仅用于 worktree 隔离委派、executor 调试或 one-shot 诊断:
80
+
81
+ ```bash
82
+ loop-agent delegate <task-id> --auto-run
83
+ loop-agent harvest <task-id>
84
+ loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-task.md
85
+ loop-agent pi-prompt "Reply with exactly OK."
86
+ ```
87
+
88
+ ### Setup(首次)
89
+
90
+ ```bash
91
+ npm install -g @tea-agent/loop-agent@latest
92
+ loop-agent --version
93
+ loop-agent --help
94
+ ```
95
+
96
+ ### 检查 repo harness
97
+
98
+ ```bash
99
+ loop-agent inspect # 当前 repo(自动检测)
100
+ loop-agent --repo-root /path/to/target-repo inspect # 指定 repo
101
+ ```
102
+
103
+ ### 健康检查
104
+
105
+ ```bash
106
+ loop-agent doctor
107
+ ```
108
+
109
+ `doctor` 报告当前生效的 Pi backend 及 SDK/CLI 可用性。Pi step 默认 SDK-first 执行:
110
+
111
+ ```bash
112
+ export CODE_AGENT_PI_BACKEND=sdk-first # 默认:先试 Pi SDK,允许时 fallback 到 CLI
113
+ export CODE_AGENT_PI_BACKEND=cli-only # 紧急回滚:纯 CLI 路径
114
+ ```
115
+
116
+ SDK 回归或 SDK 可选依赖不可用时用 `cli-only` 诊断。CLI fallback 路径须与现有 workflow 行为兼容。
117
+
118
+ ### 初始化与旧项目更新
119
+
120
+ 用户中文表达到命令的映射(与目标项目 `AGENTS.md` 的“自然语言入口路由”保持一致):
121
+
122
+ | 用户表达 | 命令 |
123
+ | --- | --- |
124
+ | loop-agent 初始化 / loop agent 初始化 / loop agent初始化 / 初始化 loop-agent | 先运行 `loop-agent init instructions --repo-root .`,再运行 `loop-agent init --repo-root . --profile full --merge`,随后补全 README/验证矩阵并复查 doctor/inspect/docs audit |
125
+ | loop-agent初始化更新 / loop-agent 初始化更新 / 更新 loop-agent 初始化内容 / 升级 loop-agent 初始化 / 初始化对齐 / 升级后对齐 | `loop-agent init upgrade --repo-root . --json`(写入型 controller-owned 闭环;主会话完成 controller 返回的具体单文件 merge task 后以 `--continue` 推进,禁止停在中间态) |
126
+ | 初始化更新校验 / loop agent初始化更新校验 / 检查初始化更新 / 只检查,不要修改 | `loop-agent init check-update --repo-root . --markdown`(严格只读;不得创建 upgrade run、`apply-safe` 或模型合并) |
127
+ | 初始化安全更新 / loop agent初始化安全更新 / 应用初始化更新 | `loop-agent init upgrade --repo-root . --json`(不要求用户拼接低层安全更新参数) |
128
+ | init reconcile / 控制器升级后对齐目标项目 | `loop-agent init upgrade --repo-root . --json`(保留 `reconcile` 仅作兼容低层诊断) |
129
+ | loop-agent 帮我完成 / 帮我实现 / 帮我修复 / 帮我开发 <需求>;使用 loop-agent 完成 <X>;按 loop-agent 流程处理 <X> | 先 `loop-agent task advance <task-id> "任务标题" --prd <prd.md> --allowed-path "<glob>" --json`,审查 writeSet gate 后 `task advance --approve-gate write-set-review:<digest> --json`;主会话编排而不直接写业务实现 |
130
+
131
+ ```bash
132
+ loop-agent init instructions --repo-root <target-repo>
133
+ loop-agent init --repo-root <target-repo> --profile full --merge \
134
+ --provider deepseek --model deepseek/deepseek-v4-flash
135
+ loop-agent init doctor --repo-root <target-repo>
136
+ loop-agent init check-update --repo-root <target-repo> --json
137
+ loop-agent init check-update --repo-root <target-repo> --markdown
138
+ loop-agent init update --repo-root <target-repo> --bootstrap-surface
139
+ loop-agent init update --repo-root <target-repo> --apply-safe
140
+ loop-agent init reconcile --repo-root <target-repo> [--json|--markdown] # compatibility low-level diagnostic
141
+ loop-agent init upgrade --repo-root <target-repo> --json
142
+ loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --status --json
143
+ loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --continue --json
144
+ loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --report --markdown
145
+ ```
146
+
147
+ fresh init 将精确引用写到 `executors.pi.LOW/MED/HIGH`。fresh `loop-agent init` 会将合格且完整的 `provider/model` 引用投影到 `executors.pi.LOW/MED/HIGH`,即 `executors.pi.LOW`、`executors.pi.MED` 和 `executors.pi.HIGH`。三个 tier 齐全时不会写入 `defaultModel`,也不会恢复或建议旧顶层 routing 字段。
148
+
149
+ `init check-update` 是只读升级报告,用于发现目标项目是否落后于当前包内初始化 surface。输出会区分 deterministic actions、model merge tasks、human decisions 和 recommended next。`--markdown` 会渲染可直接交给模型执行的合并指引,包含 `allowedPaths`、`forbiddenPaths`、`mergeRules` 和 `verification`。
150
+
151
+ `init update --bootstrap-surface` 为旧项目写入 `.harness/init-surface.json` 的 `inferred-baseline`,不伪装成历史 recorded baseline。`init update --apply-safe` 只执行确定性安全动作:补缺失文件、创建目录、刷新 managed block;已有但无法确认与当前包一致的文件会进入 model merge tasks,不会被覆盖。模型 merge 只会自动展开不含 tier 或其他旧字段的唯一、完整且可证明等价的旧 `defaultModel: "provider/model"`;顶层 `model`、`models`、`modelProfiles`、`modelRouting`、`verify`、`sequentialWorkflowRole`、部分/对象 tier、bare model、冲突 provider 或未知语义均 fail closed,并保留原始 `harness.json`。
152
+
153
+ `init upgrade` 是写入型升级入口:首次运行冻结 controller identity、检查 npm latest、扫描 surface、自动执行安全动作,并把 run facts 持久化到 `.harness/init-upgrades/<run-id>/`。`--status` 与 `--report` 严格只读;`--continue` 会重新核验 identity、当前 hash 与不变量。版本选择、无法判定冲突、凭据、破坏性删除或 active writer 才进入 human decision。普通语义冲突返回具体单文件 `allowedPaths` merge task,主会话必须合并后继续,不能把 `needs-model-merge` 作为完成。默认管理项目级 OpenCode/Pi recovery 与 `.pi/settings.json` nested merge,保留显式 disabled,Pi trust 后才加载;默认不读写 `~/.pi/agent/settings.json`。旧 `init reconcile` 保留为兼容低层诊断。
154
+
155
+ 升级在 managed block 收敛后生成只读 gitignore 迁移评估(`.harness/init-upgrades/<run-id>/gitignore-migration.json`):inventory 已跟踪的 `.harness/**` 与 `.agents/**`,建议 index-only 命令 `git rm -r --cached --ignore-unmatch .harness` / `.agents`(只改 index、保留工作区文件;`scripts/**` 与 `ai_workspace/loop-agent/**` 永不出现)。`.agents` 已跟踪内容会触发 human-decision 暂停等待审查;非 Git 仓库、git 查询失败或存在 staged 条目时 `status: blocked` 且无命令建议。controller 不自动修改 Git index。
156
+
157
+ ### 查看或复制内置示例
158
+
159
+ ```bash
160
+ loop-agent examples list
161
+ loop-agent examples show <name>
162
+ loop-agent examples copy <name> --output examples/<name>
163
+ ```
164
+
165
+ `examples` 只读取或复制包内示例,不会自动写入目标项目。省略 `--output` 时,`copy` 会写到目标项目的 `examples/<name>`。
166
+
167
+ ### 创建 / 推进 task(标准入口)
168
+
169
+ ```bash
170
+ loop-agent task advance <task-id> "Task Title" \
171
+ --prd path/to-prd.md \
172
+ --allowed-path "src/**" \
173
+ --verify "<label>:<command>" \
174
+ --json
175
+ loop-agent task advance <task-id> --approve-gate "write-set-review:<digest>" --json
176
+ loop-agent task status <task-id> --json
177
+ ```
178
+
179
+ 首次 advance create `.harness/tasks/<task-id>/`(含 `source/`、`artifacts/`、`logs/`),归档 PRD 到 `source/references/`,派生 managed `需求.md` / `执行约束.md`,生成并 strict validate DAG,停在 writeSet gate。批准后同一命令长跑并确定性 promotion/closeout。
180
+
181
+ PRD 原文 **不改写**;冲突时以 `source/references/*` 为准。`referenceDocs` `{ path, name? }[]` 对象数组。
182
+
183
+ ### Task Contract / operator machine surface
184
+
185
+ ```bash
186
+ loop-agent task status <task-id> --json
187
+ loop-agent task advance <task-id> --from-draft <path> --json
188
+ loop-agent operator capabilities [--json]
189
+ ```
190
+
191
+ `task` 标准面是 advance/status;managed contract 经 `task advance`/`task status`;Console Interview validate/diff in-process application API,无公开 CLI。`operator` 返回 Operator machine envelope capabilities,供 Console/控制面做能力协商。
192
+
193
+ ### Task action context / artifact instructions
194
+
195
+ ```bash
196
+ loop-agent task status <task-id> --json
197
+ loop-agent instructions source --task <task-id> --json
198
+ loop-agent instructions dag-draft --task <task-id> --json
199
+ loop-agent instructions task-artifacts --task <task-id> --json
200
+ loop-agent instructions promotion --task <task-id> --json
201
+ loop-agent instructions closeout --task <task-id> --json
202
+ ```
203
+
204
+ `task status` 是只读 lifecycle 入口,返回 `lifecycleState`、`gate`、`blockers` 与单一 `next`。`instructions` 在写入 source、DAG draft、task artifacts、promotion 或 closeout 前返回目标路径、依赖、模板、写策略与完成标准;blocked artifact 会列出 `missingDependencies`。`instructions task-artifacts` 只要求 promote 桥接的 `修改记录.md` / `验证结果.md`,不要求手写分析/计划/复盘三份 L1 报告。
205
+
206
+ ### Promotion / closeout
207
+
208
+ ```bash
209
+ loop-agent task advance <task-id> --json
210
+ ```
211
+
212
+ 成功路径由 `task advance` 内部从 completed DAG facts 生成 task `修改记录.md` / `验证结果.md` progress handoff,不调用 LLM、不修改 completed run facts。
213
+
214
+ one-shot run evidence 位于 `.harness/runs/{active,completed,failed}/<run-id>/`。`cursor-prompt` 与 Pi `cursor` tool 会创建这类 run evidence;当前 `pi-prompt` 不创建 `.harness/runs/`。active 目录只应保留 live one-shot run,残留或 `.DS_Store` 等系统文件应清理。详见 `one-shot-runs.md`。
215
+
216
+ ### 运行任何 step 前:准备 source materials
217
+
218
+ 标准路径用 `task advance` 一次完成 create、归档 PRD、派生 managed contract:
219
+
220
+ ```bash
221
+ loop-agent task advance <task-id> "标题" \
222
+ --prd <path-to-original-prd.md> \
223
+ --allowed-path "<glob>" \
224
+ --forbidden-path ".harness/**" \
225
+ --verify "<label>:<command>" \
226
+ --json
227
+ ```
228
+
229
+ 默认无 LLM source;工程边界用 flags 显式给出。不要让 AI 直接改写 `source/references/*`。
230
+ Product Requirement V3/V4(`product-requirement.md`)由确定性解析消费;`product-analysis` / `requirement-clarification` 不能单独作为可执行 PRD。
231
+ intake 失败时不要在原 PRD 目录生成兼容 md/json;`--from-draft` **仅**人工 reviewed draft / managed 恢复 / 调试,不是 `EMPTY_ACCEPTANCE` 默认恢复路径。
232
+
233
+ ### Feature-study workflow(参考代码 → 轻量实现)
234
+
235
+ 例如「分析参考仓库的一项功能,并在目标仓库实现轻量版本」:
236
+
237
+ ```bash
238
+ loop-agent --repo-root /path/to/target-repo study init <task-id> "Title" \
239
+ --reference-repo codex:/Users/mac/go/src/codex \
240
+ --reference-doc plan:/Users/mac/plans/codex-goal-feature.md \
241
+ --reference-glob "codex-rs/**/goal*.rs"
242
+
243
+ # 编辑 source/需求.md + source/执行约束.md,然后按标准 task lifecycle 推进:
244
+ loop-agent --repo-root <target-repo> task advance <task-id> --profile auto --dag-output .harness/tasks/<task-id>/dag.json --json
245
+ # 审查 writeSet gate 后,继续同一任务:
246
+ loop-agent --repo-root <target-repo> task advance <task-id> --approve-gate "write-set-review:<digest>" --json
247
+ loop-agent --repo-root <target-repo> task status <task-id> --json
248
+ ```
249
+
250
+ `task advance` 会生成并 strict validate 任务 DAG;`--dag-output` 只用于导出可审阅草稿,不要求再把 `dag validate` 或 `dag execute` 当作标准任务的下一步。
251
+
252
+ 仅当有意把导出的 JSON 当作**独立的 advanced arbitrary DagSpec** 排查或执行时,才使用以下高级入口;它们不替代上述标准 task lifecycle:
253
+
254
+ ```bash
255
+ loop-agent --repo-root <target-repo> dag validate --dag .harness/tasks/<task-id>/dag.json --strict-models --strict-governance
256
+ loop-agent --repo-root <target-repo> dag execute --dag .harness/tasks/<task-id>/dag.json --cwd <target-repo>
257
+ ```
258
+
259
+ 目标 repo 需有 `.harness/prompts/feature-study-analyze.md` 与 `feature-study-plan.md`(缺失时从 loop-agent 复制)。
260
+
261
+ ### Removed sequential workflow
262
+
263
+ 历史顺序式 `run analyze|plan|spec|implement|verify|retrospective|auto|loop|continue|study` 已移除。新任务不要使用这些命令,也不要在 prompt、skill 或 docs 中把它们描述为 fallback。
264
+
265
+ ### Reference helpers(compatibility)
266
+
267
+ ```bash
268
+ loop-agent reference index <task-id>
269
+ ```
270
+
271
+ `reference` compatibility / feature-study 辅助入口,用于维护或检查参考资料索引。常规实现任务不要从 `reference` 起步;使用 `task advance` 推进同一任务,并用 `task status` 做只读状态确认。
272
+
273
+ ### Task goal lifecycle(compatibility-only / deprecated-candidate)
274
+
275
+ ```bash
276
+ loop-agent goal set <task-id> "Objective text" [--token-budget <number|null>]
277
+ loop-agent goal set <task-id> "Replacement objective" --force
278
+ loop-agent goal get <task-id>
279
+ loop-agent goal pause <task-id>
280
+ loop-agent goal resume <task-id>
281
+ loop-agent goal clear <task-id>
282
+ ```
283
+
284
+ - 已有 goal objective 不同时,替换须显式 `--force`。
285
+ - `harness.json` 可用 `features.goals=false` 关闭此 surface。
286
+ - `status` 现含 `goal`(`objective/status/tokenBudget/tokensUsed/timeUsedSeconds/continuationRuns`)、`verifyEnv`、`maxGoalContinuationsPerRun` 及可选 `flowHint`
287
+ - `source/需求.md` `<!-- goal-scope -->` … `<!-- /goal-scope -->` 包裹仅 goal 验收项;范围外 `- [ ]` 不阻塞 goal 完成
288
+ - `task.json`:`verifyEnv=clean`(默认);goal continuation verify 重试时用 `flow=loop`,避免盲目 implement 循环
289
+ - continuation runtime policy,不是普通用户消息:
290
+ - continuation prompts are legacy compatibility metadata under `.harness/prompts/`
291
+ - 触发时叠加 `.harness/prompts/objective_updated.md` 与 `.harness/prompts/budget_limit.md`
292
+ - 将渲染文本注入隐藏 `<goal_context>...</goal_context>` 片段供 step 执行
293
+ - 用于保持 continuation 行为一致,减少聊天式历史噪音
294
+ - preflight state/mode guard + 启动前 goal 一致性复检
295
+
296
+ ### Advanced arbitrary DagSpec validation execution
297
+
298
+ 以下 `dag validate`、`dag execute`、`dag report` 与相关 run-level 命令是 **advanced arbitrary DagSpec / forensic** surface,适用于手写或显式导出的独立 DAG、诊断与证据审阅。它们不创建标准 task lifecycle,也不取代标准 mutation 的 `task advance` 或只读状态查询的 `task status`。
299
+
300
+ ```bash
301
+ loop-agent dag validate --dag <temp-dir>/hybrid-dag.json # 常规 validation;无 .harness/dag-runs 副作用
302
+ loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-models # canonical executorModels 时失败
303
+ loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance # governance warning 时失败
304
+ loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-skills # missing/error/truncated skill unresolved reference 时失败
305
+ loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance --spine-task <task-id> # 同时消费 minimal spec spine audit
306
+ loop-agent dag validate --dag ai_workspace/loop-agent/templates/agent-dag.supervised-implementation.json --strict-models --strict-governance # role=supervisor + write-set-gate topology
307
+ cp ai_workspace/loop-agent/templates/agent-dag.supervised-implementation.json <temp-dir>/supervised-dag.json
308
+ (npx vitest run test/dag-supervised-template.test.ts test/dag-validate.test.ts test/dag-shell-executor.test.ts --reporter=dot) # supervised template + shell.verdictGate runtime
309
+ loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> # advanced arbitrary DagSpec;stderr 默认输出节点进度与 30s 心跳,stdout 保持最终 JSON
310
+ loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> --progress-interval-ms 60000 # 调整心跳;--quiet 可禁用
311
+ loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <temp-dir>/hybrid-dag.canvas.tsx # 可选 derived Canvas view
312
+ bash scripts/run-dag-safe.sh --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> [--timeout-secs 7200] # advanced arbitrary DagSpec 的后台运行 + 轮询,避免外层 bash timeout 杀进程(见 agent-dag-runner.md §Adaptive liveness)
313
+ loop-agent dag init-hybrid <task-id> # 生成可审阅的 DAG draft
314
+ loop-agent dag workflow-plan <task-id> --profile pr-review --output .harness/tasks/<task-id>/workflows/planned/<name>.workflow.json
315
+ loop-agent dag workflow-validate --workflow .harness/tasks/<task-id>/workflows/planned/<name>.workflow.json --strict-governance
316
+ loop-agent dag workflow-compile --workflow .harness/tasks/<task-id>/workflows/planned/<name>.workflow.json --output .harness/tasks/<task-id>/workflows/compiled/<name>.dag.json --manifest .harness/tasks/<task-id>/workflows/compiled/<name>.compile-manifest.json
317
+ # compiled workflow DAGs stay explicit; they do not implicitly replace task root dag.json
318
+ loop-agent dag status --run-id <run-id> # 单次 run JSON 摘要(approvalFlow, healthIssues)
319
+ loop-agent dag doctor # 扫描 active/paused/completed runs;advisoryOnly health report
320
+ loop-agent dag report [--run-id <run-id>] [--lifecycle active|paused|completed|all] [--json|--markdown] [--failed-only] [--latest] [--paused-latest] [--action <recovery-action>] # derived per-node 聚合(只读);JSON 锁定于 ai_workspace/loop-agent/templates/agent-dag-report.schema.json;--paused-latest 聚焦最新 paused run;playbook: ai_workspace/loop-agent/agent-dag-recovery-playbook.md
321
+ loop-agent dag reconcile-run --run-id <run-id> # 只读检查 effectiveStatus 与恢复/收口资格
322
+ loop-agent dag reconcile-run --run-id <run-id> --action supersede --reason "..." # 显式保留证据并标记为任务已另行完成
323
+ loop-agent dag reconcile-run --run-id <run-id> --action abandon --reason "..." # 显式保留证据并收口为已放弃
324
+ loop-agent dag rerun --run-id <run-id> --from-node <node-id> --plan [--json] # 从节点重跑资格预检(不执行)
325
+ loop-agent dag rerun --run-id <run-id> --from-node <node-id> --plan-hash <sha256> --request-id <key> --reason "..." [--json] # 安全子图 continuation
326
+ loop-agent dag rerun-task --run-id <run-id> --reason "..." --request-id <key> [--profile auto] [--task-id <id>] [--json] # standalone 完整任务重跑
327
+ loop-agent dag reconcile-tasks --glob '<pattern>' # 仅报告的 task/run/artifact/verify drift audit
328
+ loop-agent dag final-verification <task-id> # 生成 closeout DAG,closeout artifact 后再 final verify
329
+ loop-agent dag decision inspect --run-id <run-id> [--node-id <node-id>] # dry-run envelope 重解析;除 run 缺失外 exit 0
330
+ loop-agent dag decision validate --run-id <run-id> [--node-id <node-id>] # 同上;envelope 无效时 exit 1
331
+ loop-agent dag approve --run-id <run-id> --option <id> # decision gate 人工 approve
332
+ loop-agent dag reject --run-id <run-id> --reason "..." # reject paused run
333
+ loop-agent dag resume --run-id <run-id> # approve 后继续
334
+ ```
335
+
336
+ **Decision gate(M3–M5)**:Pi node 上 `decisionGate.enabled: true` 启用 envelope 解析(M3 `record-only` M4 `pause-on-human`)。M4 pause 后用 `dag approve/reject/resume/status/doctor` — 仅确定性 artifact,无新 `human`/`decision` executor。用 `dag report --paused-latest` 聚焦最新 paused run;`dag decision inspect|validate` envelope dry-run(永不自动 resume/retry)。`browser` 仍 deferred。
337
+
338
+ **In-flight DAG governance**:shell verify node 内用 `HARNESS_ALLOW_ACTIVE_DAG_RUNS=1 bash scripts/check-repo.sh`;run 归档到 `completed/` 后,在 DAG 外跑裸 `bash scripts/check-repo.sh`。
339
+
340
+ - `dag validate` arbitrary DagSpec schema/topology/ranks 检查;审 `warnings` 中的显式 `executorModels` drift 与 governance lint。它不替代 `task advance` 的标准任务生成与严格校验。
341
+ - 手写临时 DAG spec 执行前用 `dag validate --strict-models`,model-matrix drift fail fast。
342
+ - read-only artifact-boundary DAG shell governance warning fail fast 时用 `dag validate --strict-governance`。
343
+ - 人工 handoff 视图用 `dag report --markdown`(summary、node timeline、failures、四段 Recovery Plan、artifacts、建议 next action)。仅 derived、advisory;需保存时重定向到平台临时目录或 `ai_workspace/loop-agent/reports/`。
344
+ - operator 聚焦最新 paused run `dag report --paused-latest`(等同 `--lifecycle paused --latest`;勿与显式 `--lifecycle` 并用)。
345
+ - operator 关注的 run 用 `dag report --failed-only`、`--latest`、`--action <recovery-action>` 收窄。category→action 映射见 `ai_workspace/loop-agent/agent-dag-recovery-playbook.md`。
346
+ - 只读扫描 `.harness/dag-runs/` 下所有 run 的生命周期 health issue 与建议 action `dag doctor`(`advisoryOnly: true`;不 mutate facts)。
347
+ - `dag status` / `dag doctor` runner heartbeat 只表示 lease;Pi meaningful progress 由 Provider/tool/output 活动决定。节点可显示 `quiet`、`suspected-stall`、`probing` 或 `needs-attention`,不要仅凭运行时长手工结束。
348
+ - Pi 默认 4h absolute max,`agent-worker` 默认不设置外层 `dag execute` wall-clock;显式 `worker.timeout_ms` 仍是 hard timeout。`termination-unconfirmed` 表示旧 attempt 的退出无法确认,禁止自动 retry,先保留现场并完成 operator 对账。
349
+ - approve/resume 前用 `dag status --run-id <id>` 看单次 lifecycle、`approvalFlow`、`hasHumanApproval`。
350
+ - lifecycle、raw status liveness 冲突时先用 `dag reconcile-run --run-id <id>` 只读检查。只有 runner 已证明停止且 operator 明确给出 `supersede|abandon` 与 reason 时才允许收口;它保存原始 state,不把未执行节点标成成功。
351
+ - task status、source/artifacts、DAG outcome、verification 记录可能 drift 时用 `dag reconcile-tasks --glob '<pattern>'`。默认仅报告;`--patch` 显式且不能伪造 verification evidence
352
+ - 大型 PRD closeout `dag final-verification <task-id>` 生成确定性 DAG,final verification closeout artifact 创建之后。
353
+ - run facts dry-run envelope 解析用 `dag decision inspect|validate`;`validate` 在无效 envelope exit 1;永不自动 resume/retry。
354
+ - Decision Gate prompt 可用 `buildDagDecisionGateEvidence()`(`src/workflows/dag/decision-evidence.ts`)做与 `dag report --json`、`ai_workspace/loop-agent/templates/agent-dag-report.schema.json` 对齐的只读摘要;不 mutate run state,不执行 retry/resume
355
+ - `dag execute --dry-run` 仅用于 advanced arbitrary DagSpec 的预演:snapshot 写入命令返回的 `runDir`(当前形态为 `.harness/dag-runs/dry-run/<runId>/`);它不创建 active run、不出现在 active overview,也不能作为 `dag resume` 的目标。
356
+ - task source 应从 `harness.json.workflowPolicy.dag.profileRouting` 与确定性 candidate `governanceProfile` 选择治理强度时用 `task advance --profile auto`。无 `--profile` 仅用于旧 standard-compatible 输出;`--profile minimal|standard|reviewed|supervised` 记录治理强度,不替换已识别的专用业务 workflow
357
+ - 默认 `standard` 任务先读取 `source/需求.md` 中的结构化任务类型,再结合 `allowedPaths` React/Next/Vue 项目能力做确定性分类。确认是前端项目且任务不是明确后端、混合、排除前端或仅文档/测试范围时,自动选择 `frontend-implementation`,不依赖需求关键词;普通后端实现绝不自动进入 `backend-test`。
358
+ - 新生成 DAG 会冻结任务源路径、SHA-256 和显式 `REQ/BR/AC` 到 `sourceBinding`。前端计划漏号时 `frontend-requirement-coverage-shell` 在 writer 前阻断。中断恢复应修复 task source 后重新运行 `task advance`,不要生成只携带上游摘要的 impl-only DAG;strict governance 会拒绝无来源绑定且无只读 planner 上游的 v3 孤立 writer。
359
+ - 显式专用 `taskKind` 保持兼容并优先于任务源分类,也不扩充 governance profile:`frontend-implementation` 可有意覆盖为带 Mock 规范评估、contract gate、design gate 和验证链的前端模板;可选 `frontendMock` 配置 auto/required/disabled、既有服务目录和专项验证命令,required 合同不完整时不会生成 writer。`backend-test` 显式选择需求分析 → 功能用例 → 评审 → pytest 生成/执行 → 复盘的后端测试工程模板。
360
+
361
+ ### Saved Dynamic Workflow operator UX
362
+
363
+ ```bash
364
+ loop-agent workflow list
365
+ loop-agent workflow inspect <name>
366
+ loop-agent workflow save --from /tmp/<task-id>.workflow.json --name <name>
367
+ loop-agent workflow run <name-or-path> --cwd <repo-root>
368
+ loop-agent workflow diff <name> --against /tmp/<task-id>.workflow.json
369
+ loop-agent workflow replay <run-id>
370
+ ```
371
+
372
+ `workflow` Dynamic Workflow 的 saved/operator surface。它读取 `WorkflowSpec`,编译为 DAG,再进入同一套 `dag execute` runtime;不会新增 executor 能力或绕过 DAG governance。真实写入任务仍应检查 compiled DAG 的 executor、writeSet、shell gates 和 completed facts 边界。
373
+
374
+ ### Cursor sidecar
375
+
376
+ `cursor-worker` 已删除。人工干预使用 `cursor-prompt` one-shot sidecar;见 `ai_workspace/loop-agent/cursor-prompt-sidecar.md`。
377
+
378
+ ### Eval Replay(M1,只读 completed evidence)
379
+
380
+ ```bash
381
+ loop-agent eval replay --spec <replay-spec.json> [--json|--markdown] [--output <path>]
382
+ loop-agent eval report --replay-id <id> [--json|--markdown]
383
+ ```
384
+
385
+ `eval replay` 只读取 `.harness/dag-runs/completed/<runId>/state.json` `run.json`,要求 spec 携带两者的 SHA-256,hash 不一致时 fail closed。它将 completed DAG report 归一化为 verification、Token、耗时、executor calls、repair passes,并把 canonical scorecard 写到 `.harness/evaluation/replays/<replayId>/`。缺失 Token/耗时记录为 `null + missingFields`,不会补造为 0。
386
+
387
+ M1 replay-only:不执行 Pi、不启动 DAG、不实现 private verifier、固定预算 enforcement 或 candidate promotion;所有 scorecard 固定 `promotionEligible=false` 且包含 `replay_only`。
388
+
389
+ ### Eval Candidate Registry(M2 W2.1–W2.2)
390
+
391
+ ```bash
392
+ loop-agent eval candidate register --manifest <candidate-manifest.json> [--json|--markdown]
393
+ loop-agent eval candidate show --candidate-id <id> [--json|--markdown]
394
+ loop-agent eval candidate list [--json|--markdown]
395
+ loop-agent eval candidate transition --candidate-id <id> --to <state> --reason <text> [--json|--markdown]
396
+ ```
397
+
398
+ 注册不可变 Candidate Bundle 到 `.harness/evaluation/candidates/<candidateId>/`(`manifest.json` + append-only `lifecycle.jsonl`)。`bundleHash` 由 canonical payload 计算,与 `candidateId`/createdAt/lifecycle 分离;content refs 必须为 repo-relative safe path,且不得进入 evaluator/kernel/completed-facts 等 forbidden surface。`accepted` 仅是 registry 状态,**不**移动 incumbent alias、不 promotion。
399
+
400
+ Replay spec 最小结构:
401
+
402
+ ```json
403
+ {
404
+ "schemaVersion": 1,
405
+ "replayId": "context-policy-replay-001",
406
+ "incumbentCandidateId": "baseline",
407
+ "challengerCandidateId": "role-context-v1",
408
+ "evidence": [
409
+ {
410
+ "candidateId": "baseline",
411
+ "taskRef": "task-a",
412
+ "seed": 1,
413
+ "split": "private",
414
+ "runId": "completed-run-id",
415
+ "stateSha256": "<64 hex>",
416
+ "runSha256": "<64 hex>"
417
+ }
418
+ ]
419
+ }
420
+ ```
421
+
422
+ ### 检查 task status
423
+
424
+ ```bash
425
+ loop-agent task status <task-id>
426
+ ```
427
+
428
+ ### Docs governance helpers
429
+
430
+ ```bash
431
+ loop-agent docs audit
432
+ loop-agent docs archive ai_workspace/loop-agent/exec-plans/active/<plan>.md
433
+ loop-agent plan list
434
+ loop-agent plan create <plan-id> "<title>"
435
+ loop-agent plan complete <plan-id> --summary "<summary>"
436
+ loop-agent plan check
437
+ loop-agent handoff check [task-id]
438
+ loop-agent handoff coverage <task-id> [--json|--markdown]
439
+ loop-agent coverage report --language python|java --input <coverage.json|jacoco.xml> --requirement-id <AC-id> --source-scope <path[,path]> [--output <path>] [--json|--markdown]
440
+ ```
441
+
442
+ - `docs audit`:扫描文档腐化风险,如 active/completed 漂移、失效链接、host-gap closeout
443
+ - `docs archive`:将 active plan 迁入 completed,并自动重写常见 markdown 引用
444
+ - `plan list`:列出当前 active plans 及其解析状态
445
+ - `plan create`:优先从目标项目模板创建 active exec-plan,不存在时回退发布包内置模板;同步 `active/README.md`,拒绝重复 id、不安全文件名,失败时回滚
446
+ - `plan complete`:将 active exec-plan 标记完成、迁入 completed、追加 `--summary` 并同步 active/completed 索引;失败时回滚所有已触碰文件
447
+ - `plan check`:确定性校验 exec-plan 目录与索引之间的 missing、stale、duplicate、status mismatch;发现问题时输出 JSON 并以非零状态失败
448
+ - `handoff check`:检查任务 source / artifacts / auto-commit scope 是否满足交付闭环
449
+ - `handoff coverage`:从 `source/需求.md` 抽取 checklist / numbered / `REQ-*` 项并输出 coverage audit;未覆盖项 exit 1;`explicitly_out_of_scope` 不计为缺口
450
+
451
+ ### Pi runtime reuse benchmark / decision(无 live call)
452
+
453
+ ```bash
454
+ loop-agent pi-reuse-benchmark \
455
+ --report ai_workspace/loop-agent/reports/<benchmark-report>.md \
456
+ --json
457
+
458
+ loop-agent pi-reuse-benchmark \
459
+ --report ai_workspace/loop-agent/reports/<benchmark-report>.md \
460
+ --off-executor /path/to/off/executor.jsonl \
461
+ --on-executor /path/to/on/executor.jsonl \
462
+ --approval /path/to/approval.json \
463
+ --markdown
464
+ ```
465
+
466
+ 对已有 benchmark plan/report 文件及可选 `executor.jsonl` evidence 做确定性摘要。**不**跑 live Pi call、不创建 task、不改 `CODE_AGENT_PI_REUSE_RUNTIME`(默认仍为 `off`)。输出 `defer`、`maintain-opt-in` 或 `eligible-for-human-review` — 永不 default-on。
467
+
468
+ ### Loop convergence benchmark baseline(无 live call)
469
+
470
+ ```bash
471
+ loop-agent loop-benchmark --markdown
472
+ loop-agent loop-benchmark --markdown --output ai_workspace/loop-agent/reports/dogfood/2026-06-30-loop-agent-loop-benchmark.md
473
+ ```
474
+
475
+ 生成 M0 deterministic baseline,对照 `single-repair`、`3-pass-convergence`、`3-pass-convergence+quota`。**不**跑 live Pi/Cursor call、不创建 task、不改 `convergence.enabled` 默认值。live dogfood 证据缺失时输出 `blocked` 并建议保持 opt-in。
476
+
477
+ ### Long-running loop outer state(experimental)
478
+
479
+ ```bash
480
+ loop-agent loop init <task-id>
481
+ loop-agent loop status <task-id>
482
+ loop-agent loop run <task-id> --action dag
483
+ loop-agent loop run <task-id> --action shell-verify --command "bash scripts/check-repo.sh"
484
+ loop-agent loop run <task-id> --action workflow --profile pr-review
485
+ loop-agent loop run <task-id> --auto --max-rounds <count>
486
+ loop-agent loop record-round <task-id> --action <name> --result "..." --lesson "..." --next "..." --decision continue
487
+ loop-agent loop add-signal <task-id> --type human_followup --message "..."
488
+ loop-agent loop closeout <task-id>
489
+ ```
490
+
491
+ `loop` Agent DAG 之上的长程状态和 evidence layer,记录 rounds、signals、verification summaries 和 closeout draft。它不是替代 `task advance` 的实现路径;advanced 可用 `dag execute`;medium/large work 仍需要 DAG evidence 或明确 fallback reason。
492
+
493
+ ### Minimal spec spine audit
494
+
495
+ ```bash
496
+ loop-agent spine audit <task-id> --json
497
+ loop-agent spine audit <task-id> --markdown
498
+ ```
499
+
500
+ 检查 task `source/需求.md`、`source/执行约束.md`、`task.json.allowedPaths` / `forbiddenPaths`、需求覆盖与 final verification command labels。`medium` / `large` task 的空 `allowedPaths`、allowed/forbidden overlap、未覆盖验收项、无 final verify command 都会让 audit 非零退出。
501
+
502
+ ### Knowledge curator proposal
503
+
504
+ ```bash
505
+ loop-agent knowledge curate --markdown
506
+ loop-agent knowledge curate --markdown --output ai_workspace/loop-agent/reports/<task-id>-learned-proposal.md
507
+ ```
508
+
509
+ 读取 `.harness/knowledge/patterns.jsonl` completed convergence repair pattern,按 `failureClass + fixScope shape + invariant` 去重,生成 human-gated learned guidance proposal。命令只生成 proposal,不直接修改 `skills/loop-agent/references/learned/*.md`;输出会先通过 skill safety audit。
510
+
511
+ ### Knowledge graph / query CLI
512
+
513
+ ```bash
514
+ loop-agent knowledge graph-init --product-name <name>
515
+ loop-agent knowledge graph-materialize
516
+ loop-agent knowledge graph-promote
517
+ loop-agent knowledge graph-incremental-prepare --feature F-2026-004 --service <service>
518
+ loop-agent knowledge query --mode by_feature --feature F-2026-004 --json
519
+ loop-agent knowledge query --mode by_id --id SVC-order --json
520
+ loop-agent knowledge query --mode search --text "keyword" --json
521
+ ```
522
+
523
+ 这些子命令是 package-backed 公共入口,封装包内 knowledge runtime 资产。目标项目应使用 `loop-agent knowledge ...`,不要要求仓库内直接运行未投影的 package-only kb runtime scripts。Feature 测试知识日常写回用 `task.json.taskKind = "knowledge-sync"`(必须绑定 `featureId`);业务图谱开荒/增量用 `taskKind = "knowledge-graph-bootstrap"`。
524
+
525
+ ### Worker TaskSpec pipeline(伴生 CLI `agent-worker`)
526
+
527
+ `agent-worker` 是与 `loop-agent` 一起发布的独立 CLI(`bin/agent-worker.js -> dist/worker/cli.js`),面向“产品线 Worker”场景:把一批 TaskSpec 规约成可校验、可串行调度、可晨报的流水线。它不进入 `loop-agent` 命令树,也不自带 executor——执行权全部通过子进程委托给已发布的 `loop-agent` CLI(最终是 DAG runtime + shell verification)。
528
+
529
+ ```bash
530
+ agent-worker task validate <task.yaml> # 三层校验 TaskSpec,输出 JSON
531
+ agent-worker task explain-profile <task.yaml> # 解释业务 type/risk -> DAG governance profile 映射
532
+ agent-worker task validate-feature <feature-dir> # 校验完整 feature packet 的验收、依赖、TaskSpec 和验证命令
533
+ agent-worker feature scaffold --repo <repo-root> --template <backend-only|frontend-only|fe-with-api> \
534
+ --feature-id F-YYYY-NNN --title "..." \
535
+ [--be-path <pattern> ...] [--fe-path <pattern> ...] [--contract-path <path>] \
536
+ --verify-command <cmd> [--verify-command <cmd> ...] \
537
+ [--batch <yaml-or-json>] [--dry-run] [--json]
538
+ agent-worker feature review --feature-dir <feature-dir> --repo <repo-root> [--json]
539
+ agent-worker feature run --feature-dir <feature-dir> --repo <repo-root> [--dry-run] [--git-mode checkpoint] [--keep-failed-diff] [--json]
540
+ agent-worker feature doctor --feature-dir <feature-dir> --repo <repo-root> [--json]
541
+ agent-worker feature advance --feature-dir <feature-dir> --repo <repo-root> [--task-id <FINAL-VERIFY-id>] [--loop-agent-bin loop-agent] [--dry-run] [--apply --owner <owner>] [--json]
542
+ agent-worker feature verify-final --feature-dir <feature-dir> --repo <repo-root> --task-id <qa-execute-id> [--json]
543
+ agent-worker feature delivery --feature-dir <feature-dir> --repo <repo-root> [--qa-evidence <path>] [--final-verification <path>] [--waivers <path>] [--dry-run] [--json]
544
+ agent-worker feature closeout --feature-dir <feature-dir> --repo <repo-root> [--apply --owner <owner>] [--json]
545
+ agent-worker report metrics --repo <repo-root> --month <YYYY-MM> [--json]
546
+ agent-worker task draft-followup <task-id> --worker-run-id <id> --feature-dir <feature-dir> --repo <repo-root> [--json]
547
+ agent-worker feature approve-followup --feature-dir <feature-dir> --followup-id <id> --repo <repo-root> --owner <owner> [--dry-run] [--json]
548
+ agent-worker task retry <task-id> --repo <repo-root> [--reason "<已修复的原因>"]
549
+ agent-worker task reconcile <task-id> --feature-id <feature-id> --worker-run-id <id> --dag-run-id <id> --action abandon --reason "<text>" --repo <repo-root> [--force-abandon-recoverable]
550
+ agent-worker pool mark-failed --feature-id <feature-id> --task-id <task-id> --worker-run-id <id> --reason "<text>" --repo <repo-root>
551
+ agent-worker pool doctor --repo <repo-root> [--json] [--mapping <file>]
552
+ agent-worker pool migrate-state --repo <repo-root> [--apply --owner <owner> --reason <reason>] [--mapping <file>] [--json]
553
+ agent-worker feature git advance-checkpoint --feature-id <feature-id> --reason "<text>" --repo <repo-root>
554
+ agent-worker batch plan-ready --feature-dir <feature-dir> --repo <repo-root> [--limit <count>] [--json]
555
+ agent-worker batch run-ready \
556
+ --feature-dir <feature-dir> \ # tasks/task-graph.yaml
557
+ --repo <repo-root> \ # 目标 repo
558
+ [--limit <count>] [--batch-run-id <id>] \
559
+ [--loop-agent-bin loop-agent] \
560
+ [--check-repo] [--check-repo-command <command...>] \
561
+ [--quiet] \
562
+ [--pi-model <model>] # smoke 覆盖:所有 pi 节点强制用该模型
563
+ agent-worker report morning --repo <repo-root> [--batch-run-id <id>] [--output <path>] [--window night] [--date YYYY-MM-DD] [--tz Asia/Shanghai]
564
+ agent-worker admission prepare --repo <repo-root> --feature-dir <path> --task-id <id> --at "YYYY-MM-DD HH:mm" [--tz Asia/Shanghai] [--task-card <ref>] [--json]
565
+ agent-worker admission show <schedule-id> --repo <repo-root> [--json]
566
+ agent-worker scheduler list --repo <repo-root> [--json]
567
+ agent-worker scheduler status <schedule-id> --repo <repo-root> [--json]
568
+ agent-worker scheduler ledger <schedule-id> --repo <repo-root> [--json]
569
+ agent-worker scheduler doctor --repo <repo-root> [--json]
570
+ agent-worker scheduler add <schedule-id> --repo <repo-root> --approve-gate <token> [--json]
571
+ agent-worker scheduler cancel <schedule-id> --repo <repo-root> [--reason <text>] [--json]
572
+ agent-worker scheduler harvest <schedule-id> --repo <repo-root> [--json]
573
+ agent-worker scheduler discard <schedule-id> --repo <repo-root> --reason <text> [--force] [--json]
574
+ agent-worker scheduler tick --repo <repo-root> [--json] # daemon/clock; not Operator Chat
575
+ agent-worker scheduler clock install --repo <repo-root> [--interval-sec 60] [--loop-agent-bin <path>] [--json] # OS timer; CLI-only
576
+ agent-worker scheduler clock status --repo <repo-root> [--json] # CLI-only
577
+ agent-worker scheduler clock uninstall --repo <repo-root> [--json] # CLI-only
578
+ agent-worker scheduler submit --repo <repo-root> --feature-id <id> --task-id <id> ... # low-level planning fact
579
+ agent-worker scheduler transition <schedule-id> --repo <repo-root> --to <status> ... # internal lifecycle
580
+ agent-worker console [--repo <repo-root>] [--port 8790] [--host 127.0.0.1] [--no-open] # Official 唯一入口;repo 默认当前目录;默认打开浏览器
581
+ agent-worker console doctor --repo <repo-root> [--json] [--console-url <url>]
582
+ agent-worker observe serve ... # REMOVED:stderr OBSERVE_SERVE_REMOVED,exit 2,不监听端口;请用 console + /inspect/
583
+ agent-worker observe snapshot --repo <repo-root> # 输出 GlobalSnapshot JSON 到 stdout
584
+ ```
585
+
586
+ 语义要点:
587
+
588
+ - TaskSpec 声明单个任务的业务上下文、`risk_level`、可选 `capabilities`、验收与 verify 边界;`risk_level` 被确定性映射到 task complexity。`capabilities: [interactive-ui]` 不改变风险或治理 profile,只把 implement/repair writer 路由到 HIGH,并注入禁止 helper-only 逃逸的真实 UI 交付契约。AcceptanceSpec / TaskGraphSpec 声明跨任务验收引用与依赖图,ready queue 决定可运行任务并检测未知依赖/环/文件一致性。
589
+ - 业务 type(`backend-feature`/`frontend-feature`/`qa-testcode` 等)是产品线 profile,不能直接传给 `loop-agent task advance --profile`(Worker 映射后传入);Worker 会映射到 `auto`/`minimal`/`standard`/`reviewed`/`supervised`。
590
+ - materializer TaskSpec 物化为 `.harness/tasks/<task-id>`:`source_docs` 原样进入 `source/references/`,派生 `需求.md` 带权威声明、Source Docs/hash 追溯,以及 `acceptance_refs` 短摘要;随后 Worker 调用 `task advance` / `dag report`(advanced `dag execute`)。review 节点须对照 references + 派生契约 + 实现。成功路径走 `task advance` 自动 promotion/closeout;失败路径收集 `dag doctor` / `dag closeout-draft` evidence,只允许写入 `.harness/task-pool/failure-handoffs/**`,不放宽其他 `.harness/**` 写入边界。
591
+ - Worker runtime state 落在目标 repo 的 `.harness/task-pool/`(artifacts、JSONL/state、晨报、failure handoffs)。自 0.8.0 起该目录是唯一受支持的 Task Pool runtime root;旧路径不读取、不迁移、不合并、不重映射。
592
+ - preflight `task advance` 前跑 `loop-agent --version`、`inspect`、`docs-audit`、`git status --short --branch`,可选 `--check-repo`。一次夜间批处理期间不升级控制器,记录实际 `loop-agent` 版本。
593
+ - `batch run-ready` 默认在 stderr 输出人类可读进度(批次起止、每个 task 的阶段与耗时、report 决策),stdout 只保留最终 JSON,便于管道取用;加 `--quiet` 可关闭进度。
594
+ - `feature scaffold` 确定性生成 Feature Packet(`backend-only` / `frontend-only` / `fe-with-api`),默认 `profile: generic`,输出到 `<repo>/features/<feature-id>`;写盘前同源 `validate-feature`;`--batch` 全有或全无;不调用模型、不碰 `.harness/**`。
595
+ - `feature review` 只读派生 Feature 状态、required AC 覆盖、阻塞、证据和唯一下一步。默认输出简洁的人类摘要,`--json` 输出 schemaVersion 1 JSON;损坏事实会显式降级,不会写 Feature Packet 或 Task Pool
596
+ - `feature run` 薄编排 validation、preflight、现有 run-ready、morning report、Observe snapshot 和最终 review。`--dry-run` 零写入;Git checkpoint 可用前单次最多推进一个 Ready 写任务。
597
+ - `feature run` 遇到业务 Task 失败时仍刷新证据,但返回 `needs-action` 和非零退出码;无 Ready 是正常结果,并通过 `noReadyReason` 说明 Closed、Deliverable、AwaitingQA、NeedsAction、依赖阻塞或空 Feature。
598
+ - `feature run --git-mode checkpoint` 是唯一 checkpoint 授权:要求 clean repo,在本地 `agent/<feature-id>` 分支按成功 Task commit;失败先保存 patch/untracked/boundary audit 再恢复 clean。默认不 commit;从不 stash/push/merge/创建远程 PR。`--keep-failed-diff` 会停止 Feature,不继续后续 Task。
599
+ - `feature doctor` 只读诊断 Feature 交付就绪:Task Pool 状态、dirty worktree、canonical evidence / Delivery manifest 是否存在,并给出下一步命令建议(不自动修复)。
600
+ - `feature advance`(ADR 0007)编排 `verify-final delivery closeout preview[/apply]`:默认 evidence 路径取自 verify-final;`--dry-run` Delivery 不写盘且不 apply closeout;`--apply --owner` closeout preview ready 后原子 apply。不执行实现链 Ready tasks(仍用 `feature run`)。
601
+ - `feature verify-final` clean Delivery HEAD 上复用已完成的 `qa-execute` TaskSpec 运行独立 DAG,跳过 promotion/closeout,原子生成 canonical QA aggregate HEAD-bound final verification;相同 HEAD 的 canonical 成功 run 可幂等复用。
602
+ - `feature delivery` 复用 transaction record,校验 Git history/trailers/changed files、成功 run、canonical QA/final verification 和 required AC,原子生成 manifest、coverage 与 `PR.md`;省略 evidence 路径时默认 `.harness/task-pool/evidence/<featureId>/{qa-pass,final-verification}.json`;`--dry-run` 零写入。`feature closeout` 默认只读复验全部 gates,显式 `--apply --owner` 才原子写回,stale facts post-validation 失败会整体回滚。
603
+ - `report metrics` UTC 月去重投影 Feature/Failure/Follow-up/Delivery/AC/decision/recovery/boundary 指标,同时写 JSON Markdown;每项保留 numerator、denominator、sampleSize 和 missingData。
604
+ - `task draft-followup` 会按全部 failure category 生成 TaskDraft 或人工行动卡:ProductBug/TestBug/FlakyTest/DependencyFailure 可批准;EnvFailure 连续两次后才生成 ENV-CHECK;Spec/Contract/Risk/Human/Unknown 只给行动卡。人工以 `feature approve-followup --dry-run` 预览,再带非空 `--owner` 批准 TaskDraft;行动卡不能批准。批准在 staging validation 后写 TaskSpec、graph、Ready/approval/event,原失败事实不改写,并有 rename/state/approval/index/event 回滚门禁。
605
+ - `task retry` 是失败 Task 的唯一重试入口。它会保留原有运行记录和 failure handoff,并让下一次 `batch run-ready` 使用新的 `workerRunId`;不要删除运行态文件或手动修改状态来重试。
606
+ - **推荐**裸入口 `agent-worker console`(repo 默认当前目录,默认 `127.0.0.1:8790`)提供 Operate + Inspect;本地图形环境 listen 成功后默认打开系统浏览器,`--no-open` 禁止;`console serve` 已删除。Inspect 路径为 `/inspect/#/...`,API 仍为根 `/api/**`。`observe serve` 已硬下线(`OBSERVE_SERVE_REMOVED` + exit 2,不监听);`observe snapshot` 保留。Inspect 本身不会启动、暂停或重试 Task / Worker / DAG
607
+ - Night Scheduler(本地夜间自治):白天 `admission prepare` 冻结 worktree + DAG writeSet gate;`scheduler add` 消费 gate 并预约 Task Pool `Queued`(不立即执行);`scheduler clock install` 安装本机 user-level OS timer(launchd / systemd --user / schtasks)周期调用 `scheduler tick`;tick 写统一 Clock receipt,doctor/morning/status 可解释 missing/stale/error/busy/drift;成功后 `pending-harvest`,早晨 `scheduler harvest`(exact-base FF)或 `scheduler discard`;`report morning --window night` 与 Inspect `#/night` / Operate 夜间面板读取同一套 facts。Clock install/status/uninstall 为 CLI-only。
608
+ - 当前 Worker 仍是 v0(库 + CLI + dogfood);日间批处理未强制定时/CI 驱动;`report morning` 默认可从 Task Pool runs 汇总,并支持 `--window night` 投影 Scheduler facts。
609
+
610
+ ### 查看 duration statistics / context usage
611
+
612
+ ```bash
613
+ loop-agent stats
614
+ loop-agent stats context --last 50
615
+ loop-agent stats context --last 50 --json
616
+ ```
617
+
618
+ - `stats`:legacy step-duration 直方图(`.harness/tasks/*/logs/executor.jsonl`)。
619
+ - `stats context`:最近 N 个 DAG runs 的 **skill-resolution** 与节点 outcome 只读聚合(declared/resolved/missing/error、truncation、`unresolvedReferences.reason`、FINISHED/ERROR/SKIPPED + failureCategory)。**不**宣称模型遵循率或 skill execution rate;corrupted snapshot 记为 finding 且 `ok=false`。
620
+
621
+ ### Worktree delegate / harvest(escape hatch)
622
+
623
+ ```bash
624
+ loop-agent delegate <task-id> [--base <branch>] [--branch <name>] [--no-symlink] [--auto-run]
625
+ loop-agent harvest <task-id> [--squash] [--no-archive] [--keep-worktree]
626
+ loop-agent worktree create|list|remove ...
627
+ ```
628
+
629
+ 用于 worktree 隔离以及可选的 Pi-only DAG 执行与 merge 收口。常规 autonomous work 应优先 Agent DAG;详见 `multi-worktree.md` 与 `ai_workspace/loop-agent/cursor-prompt-sidecar.md`。
630
+
631
+ ### One-shot Cursor sidecar(escape hatch)
632
+
633
+ ```bash
634
+ loop-agent cursor-prompt --cwd <repo-root> "Review this task without editing files."
635
+ loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-cursor-task.md
636
+ loop-agent cursor-prompt --cwd <repo-root> --model composer-2.5 --timeout 1800000 --file /tmp/bounded-cursor-task.md
637
+ ```
638
+
639
+ `cursor-prompt` one-shot Cursor SDK helper。用于 bounded diagnosis、小修复或调试 executor;写入 prompt 必须包含 task id、objective、allowed paths、forbidden paths、verification 和 preserve-unrelated-changes 要求。需要 `CURSOR_API_KEY`。它会创建 one-shot run evidence,但 Cursor 自报成功不替代 shell verification
640
+
641
+ > **Historical(已移除)**:`subagent list|start|wait|wakeup|attach|stop` 与 `dashboard` 已移除,不再出现在 CLI registry。