@tea-agent/loop-agent 0.13.0 → 0.14.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 (270) hide show
  1. package/AGENTS.md +157 -157
  2. package/CHANGELOG.md +73 -301
  3. package/README.md +338 -334
  4. package/bin/agent-worker.js +22 -22
  5. package/bin/loop-agent.js +21 -21
  6. package/dist/commands/cursor-prompt.js +6 -6
  7. package/dist/commands/init.js +505 -505
  8. package/dist/commands/loop-benchmark.js +11 -11
  9. package/dist/commands/pi-reuse-benchmark.js +16 -16
  10. package/dist/executors/pi-event-serializer.js +33 -11
  11. package/dist/sidecars/cursor-prompt/executor.js +1 -1
  12. package/dist/task/runtime.js +27 -27
  13. package/dist/worker/observe/spec-evidence.js +19 -10
  14. package/dist/worker/observe/static/api.js +46 -46
  15. package/dist/worker/observe/static/app.js +151 -150
  16. package/dist/worker/observe/static/constants.js +156 -148
  17. package/dist/worker/observe/static/copy.js +67 -67
  18. package/dist/worker/observe/static/dag-helpers.js +201 -172
  19. package/dist/worker/observe/static/dag-layout.d.ts +31 -31
  20. package/dist/worker/observe/static/dag-layout.js +83 -83
  21. package/dist/worker/observe/static/dag-model.js +72 -72
  22. package/dist/worker/observe/static/dom.js +122 -122
  23. package/dist/worker/observe/static/format-pool.d.ts +71 -0
  24. package/dist/worker/observe/static/format-pool.js +134 -67
  25. package/dist/worker/observe/static/format.js +317 -292
  26. package/dist/worker/observe/static/index.html +350 -308
  27. package/dist/worker/observe/static/kpi.js +100 -94
  28. package/dist/worker/observe/static/markdown-render.js +124 -0
  29. package/dist/worker/observe/static/relations.js +133 -133
  30. package/dist/worker/observe/static/router.js +93 -93
  31. package/dist/worker/observe/static/run-processing.js +148 -148
  32. package/dist/worker/observe/static/shell-chrome.js +74 -68
  33. package/dist/worker/observe/static/state.js +273 -267
  34. package/dist/worker/observe/static/styles.css +2504 -1902
  35. package/dist/worker/observe/static/views/batch.js +227 -227
  36. package/dist/worker/observe/static/views/dag-graph.js +172 -172
  37. package/dist/worker/observe/static/views/dag-inspector.js +530 -627
  38. package/dist/worker/observe/static/views/dag.js +371 -371
  39. package/dist/worker/observe/static/views/dashboard.js +86 -100
  40. package/dist/worker/observe/static/views/failures.js +143 -143
  41. package/dist/worker/observe/static/views/feature.js +492 -492
  42. package/dist/worker/observe/static/views/pool.js +708 -350
  43. package/dist/worker/observe/static/views/run.js +453 -453
  44. package/dist/worker/observe/static/views/session-timeline.js +771 -219
  45. package/dist/worker/observe/static/views/shell.js +7 -7
  46. package/dist/worker/observe/static/views/task.js +314 -314
  47. package/dist/worker/observe/static/views/timeline.js +163 -163
  48. package/dist/workflows/dag/canvas-observer.js +275 -275
  49. package/docs/README.md +105 -104
  50. package/docs/agent-dag-recovery-playbook.md +195 -195
  51. package/docs/agent-dag-runner.md +67 -67
  52. package/docs/architecture/README.md +26 -26
  53. package/docs/architecture/dag-execution.md +140 -140
  54. package/docs/architecture/evolution.md +54 -54
  55. package/docs/architecture/facts-and-state.md +71 -71
  56. package/docs/architecture/runtime-boundaries.md +191 -191
  57. package/docs/architecture/system-overview.md +93 -93
  58. package/docs/architecture/worker-and-feature.md +85 -85
  59. package/docs/cursor-prompt-sidecar.md +36 -36
  60. package/docs/decisions/README.md +18 -18
  61. package/docs/design/README.md +167 -167
  62. package/docs/development-principles.md +73 -73
  63. package/docs/exec-plans/README.md +6 -6
  64. package/docs/exec-plans/active/README.md +2 -1
  65. package/docs/exec-plans/completed/README.md +105 -104
  66. package/docs/feature-workflow.md +414 -414
  67. package/docs/harness-methodology-debugging.md +153 -153
  68. package/docs/harness-methodology-tdd.md +130 -130
  69. package/docs/harness-methodology-verification.md +27 -27
  70. package/docs/init-surface.manifest.json +307 -307
  71. package/docs/loop-agent-harness.md +142 -142
  72. package/docs/production-readiness.md +96 -96
  73. package/docs/progress/README.md +59 -58
  74. package/docs/reports/README.md +123 -119
  75. package/docs/skills/README.md +7 -7
  76. package/docs/skills/vetted-skill-registry.md +29 -29
  77. package/docs/templates/adr.md +60 -60
  78. package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
  79. package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
  80. package/docs/templates/agent-dag-decision-gate-dogfood-report.md +117 -117
  81. package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
  82. package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
  83. package/docs/templates/agent-dag-report.schema.json +473 -473
  84. package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
  85. package/docs/templates/agent-dag.base.json +190 -190
  86. package/docs/templates/agent-dag.final-verification.json +185 -185
  87. package/docs/templates/agent-dag.schema.json +411 -411
  88. package/docs/templates/agent-dag.supervised-implementation.json +620 -620
  89. package/docs/templates/backend-test-analysis.schema.json +44 -44
  90. package/docs/templates/backend-test-case-manifest.schema.json +190 -190
  91. package/docs/templates/backend-test-dag.classify.prompt.md +75 -75
  92. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +204 -204
  93. package/docs/templates/backend-test-dag.json +559 -559
  94. package/docs/templates/backend-test-dag.retrospect.prompt.md +139 -139
  95. package/docs/templates/backend-test-dag.review-cases.prompt.md +83 -83
  96. package/docs/templates/backend-test-execution.schema.json +133 -133
  97. package/docs/templates/backend-test-result.schema.json +99 -99
  98. package/docs/templates/exec-plan.md +64 -64
  99. package/docs/templates/feature-spec.md +53 -53
  100. package/docs/templates/frontend-design-contract.md +42 -42
  101. package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -17
  102. package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -16
  103. package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -16
  104. package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -16
  105. package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -16
  106. package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -16
  107. package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -21
  108. package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -29
  109. package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -28
  110. package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -28
  111. package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -29
  112. package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -27
  113. package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -28
  114. package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -28
  115. package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -27
  116. package/docs/templates/frontend-eval/metrics.md +138 -138
  117. package/docs/templates/frontend-eval/smoke-targets.md +53 -53
  118. package/docs/templates/frontend-implementation-contract.schema.json +27 -27
  119. package/docs/templates/frontend-task-constraints.md +35 -35
  120. package/docs/templates/frontend-task-requirement.md +70 -70
  121. package/docs/templates/frontend-test-dag.generate-cases.prompt.md +5 -5
  122. package/docs/templates/frontend-test-dag.json +23 -23
  123. package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +3 -3
  124. package/docs/templates/frontend-test-dag.retrospect.prompt.md +3 -3
  125. package/docs/templates/frontend-test-dag.review-cases.prompt.md +3 -3
  126. package/docs/templates/frontend-test-dag.review-execution.prompt.md +3 -3
  127. package/docs/templates/harness.schema.json +221 -221
  128. package/docs/templates/hybrid-dag.json +188 -188
  129. package/docs/templates/init-evolution-review.md +35 -35
  130. package/docs/templates/interactive-ui-round2-experiment.md +66 -66
  131. package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -118
  132. package/docs/templates/knowledge-sync-dag.json +178 -178
  133. package/docs/templates/knowledge-sync-draft.schema.json +71 -71
  134. package/docs/templates/product-line/AGENTS.md +8 -8
  135. package/docs/templates/product-line/README.md +9 -9
  136. package/docs/templates/product-line/acceptance.yaml +14 -14
  137. package/docs/templates/product-line/closeout.yaml +9 -9
  138. package/docs/templates/product-line/design.md +13 -13
  139. package/docs/templates/product-line/links.md +10 -10
  140. package/docs/templates/product-line/requirement.md +17 -17
  141. package/docs/templates/product-line/task-graph.yaml +15 -15
  142. package/docs/templates/product-line/task.yaml +64 -64
  143. package/docs/templates/product-line/test-plan.md +7 -7
  144. package/docs/templates/production-readiness-checklist.md +57 -57
  145. package/docs/templates/progress-log.md +17 -17
  146. package/docs/templates/project-start-checklist.md +9 -9
  147. package/docs/templates/qa-report.md +48 -48
  148. package/docs/templates/sprint-contract.md +29 -29
  149. package/docs/templates/worker-dogfood-evidence.md +80 -80
  150. package/docs/templates/worker-dogfood-setup.md +68 -68
  151. package/docs/verification-matrix.md +70 -70
  152. package/examples/decision-gate-agent-dag.json +173 -173
  153. package/examples/example-dag.json +46 -46
  154. package/examples/hybrid-loop-agent-dag.json +188 -188
  155. package/harness.json +66 -66
  156. package/package.json +88 -52
  157. package/scripts/check-product-line-docs.sh +29 -29
  158. package/scripts/check-task-pool-root.sh +32 -32
  159. package/scripts/kb-bootstrap-init-skeleton.sh +240 -240
  160. package/scripts/kb-graph-incremental-prepare.mjs +386 -386
  161. package/scripts/kb-graph-incremental-prepare.sh +5 -5
  162. package/scripts/kb-graph-materialize.mjs +105 -105
  163. package/scripts/kb-graph-materialize.sh +4 -4
  164. package/scripts/kb-graph-promote.mjs +164 -164
  165. package/scripts/kb-graph-promote.sh +4 -4
  166. package/scripts/kb-query.mjs +554 -554
  167. package/scripts/kb-query.sh +5 -5
  168. package/skills/agent-worker/SKILL.md +39 -39
  169. package/skills/agent-worker/references/agent-worker-operator.md +60 -60
  170. package/skills/ai-engineering-context/SKILL.md +48 -48
  171. package/skills/analyze-product-dependencies/SKILL.md +67 -67
  172. package/skills/analyze-product-dependencies/agents/openai.yaml +4 -4
  173. package/skills/analyze-product-dependencies/references/api-documentation-schema.md +30 -30
  174. package/skills/analyze-product-dependencies/references/dependency-analysis-schema.md +28 -28
  175. package/skills/analyze-product-dependencies/references/example.md +76 -76
  176. package/skills/analyze-product-dependencies/references/forward-test-cases.md +35 -35
  177. package/skills/analyze-product-dependencies/references/input-contract.md +11 -11
  178. package/skills/analyze-product-dependencies/references/scouting-rules.md +61 -61
  179. package/skills/analyze-product-dependencies/scripts/test-validators.mjs +267 -267
  180. package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +101 -101
  181. package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +142 -142
  182. package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +76 -76
  183. package/skills/analyze-product-dependencies/scripts/validation-helpers.mjs +146 -146
  184. package/skills/analyze-product-requirements/SKILL.md +90 -90
  185. package/skills/analyze-product-requirements/agents/openai.yaml +4 -4
  186. package/skills/analyze-product-requirements/references/acceptance-criteria.md +91 -91
  187. package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +56 -56
  188. package/skills/analyze-product-requirements/references/example.md +86 -86
  189. package/skills/analyze-product-requirements/references/forward-test-cases.md +66 -66
  190. package/skills/analyze-product-requirements/references/product-analysis-schema.md +32 -32
  191. package/skills/analyze-product-requirements/references/product-requirement-schema.md +33 -33
  192. package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +35 -35
  193. package/skills/analyze-product-requirements/scripts/test-validators.mjs +193 -193
  194. package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +69 -69
  195. package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +97 -97
  196. package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +98 -98
  197. package/skills/analyze-product-requirements/scripts/validation-helpers.mjs +156 -156
  198. package/skills/browser-tools/SKILL.md +196 -196
  199. package/skills/browser-tools/browser-content.js +103 -103
  200. package/skills/browser-tools/browser-cookies.js +35 -35
  201. package/skills/browser-tools/browser-eval.js +53 -53
  202. package/skills/browser-tools/browser-hn-scraper.js +108 -108
  203. package/skills/browser-tools/browser-nav.js +44 -44
  204. package/skills/browser-tools/browser-pick.js +162 -162
  205. package/skills/browser-tools/browser-screenshot.js +34 -34
  206. package/skills/browser-tools/browser-start.js +86 -86
  207. package/skills/browser-tools/package-lock.json +2556 -2556
  208. package/skills/browser-tools/package.json +19 -19
  209. package/skills/code-review-core/SKILL.md +20 -20
  210. package/skills/codebase-scout/SKILL.md +19 -19
  211. package/skills/frontend-design-review/SKILL.md +66 -66
  212. package/skills/frontend-design-review/references/review-checklist.md +58 -58
  213. package/skills/frontend-implementation/SKILL.md +49 -49
  214. package/skills/frontend-implementation/references/code-standards.md +32 -32
  215. package/skills/frontend-implementation/references/design-spec.md +46 -46
  216. package/skills/frontend-implementation/references/node-contracts.md +27 -27
  217. package/skills/frontend-review/SKILL.md +59 -59
  218. package/skills/frontend-review/references/review-findings.md +47 -47
  219. package/skills/frontend-verification/SKILL.md +53 -53
  220. package/skills/frontend-verification/references/verification-checklist.md +68 -68
  221. package/skills/grill-me/SKILL.md +10 -10
  222. package/skills/grill-with-docs/SKILL.md +88 -88
  223. package/skills/grill-with-docs/adr-format.md +47 -47
  224. package/skills/grill-with-docs/context-format.md +60 -60
  225. package/skills/init-capability-evolution/SKILL.md +70 -70
  226. package/skills/loop-agent/SKILL.md +151 -151
  227. package/skills/loop-agent/references/README.md +67 -67
  228. package/skills/loop-agent/references/command-reference.md +527 -527
  229. package/skills/loop-agent/references/docs-converge.md +126 -126
  230. package/skills/loop-agent/references/harness-policy.md +263 -263
  231. package/skills/loop-agent/references/hybrid-dag.md +243 -243
  232. package/skills/loop-agent/references/learned/README.md +21 -21
  233. package/skills/loop-agent/references/long-running-loop.md +57 -57
  234. package/skills/loop-agent/references/model-routing.md +36 -36
  235. package/skills/loop-agent/references/multi-worktree.md +54 -54
  236. package/skills/loop-agent/references/one-shot-runs.md +85 -85
  237. package/skills/loop-agent/references/orchestrator-and-interventions.md +169 -169
  238. package/skills/loop-agent/references/pi-prompt.md +23 -23
  239. package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
  240. package/skills/loop-agent/references/post-implementation-and-patterns.md +44 -44
  241. package/skills/loop-agent/references/task-workflow.md +89 -89
  242. package/skills/loop-agent/references/verification-and-failure-handling.md +141 -141
  243. package/skills/playwright-cli/SKILL.md +420 -420
  244. package/skills/playwright-cli/references/element-attributes.md +23 -23
  245. package/skills/playwright-cli/references/playwright-tests.md +39 -39
  246. package/skills/playwright-cli/references/request-mocking.md +87 -87
  247. package/skills/playwright-cli/references/running-code.md +241 -241
  248. package/skills/playwright-cli/references/session-management.md +225 -225
  249. package/skills/playwright-cli/references/storage-state.md +275 -275
  250. package/skills/playwright-cli/references/test-generation.md +433 -433
  251. package/skills/playwright-cli/references/tracing.md +139 -139
  252. package/skills/playwright-cli/references/video-recording.md +143 -143
  253. package/skills/playwright-cli-case-generator/SKILL.md +74 -74
  254. package/skills/requesting-code-review/SKILL.md +101 -101
  255. package/skills/requesting-code-review/code-reviewer.md +168 -168
  256. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  257. package/skills/systematic-debugging/SKILL.md +296 -296
  258. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  259. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  260. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  261. package/skills/systematic-debugging/find-polluter.sh +63 -63
  262. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  263. package/skills/systematic-debugging/test-academic.md +14 -14
  264. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  265. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  266. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  267. package/skills/test-driven-development/SKILL.md +20 -20
  268. package/skills/using-git-worktrees/SKILL.md +215 -215
  269. package/skills/verification-before-completion/SKILL.md +154 -154
  270. package/skills/webapp-testing/SKILL.md +19 -19
package/README.md CHANGED
@@ -1,335 +1,339 @@
1
- # loop-agent
2
-
3
- `loop-agent` 是面向 AI coding agent 的仓库级任务运行时和治理工具。它把一次研发任务组织成可生成、可校验、可执行、可恢复、可交接的 Agent DAG,并用 `.harness/`、`docs/` 和 shell verification 记录执行事实、长期治理资料和完成依据。
4
-
5
- 它可以作为任意目标项目的稳定控制器:初始化目标项目后,项目会获得 `.agents/skills/`、`ai_workspace/loop-agent/` 治理资料、验证脚本、任务运行态目录和模型执行指引,使 agent 在目标项目里的工作体验尽量与本仓库对齐。
6
-
7
- ## 快速开始
8
-
9
- 到一个新项目时,可以直接对当前 agent 说:
10
-
11
- ```text
12
- 请用 loop-agent 完整初始化当前项目;如果本机没有 loop-agent,请先安装 @tea-agent/loop-agent@latest。按 init instructions 使用 full + merge 初始化,探索项目后补全 README 和验证命令,最后运行 doctor、inspect、docs audit 和 check-repo 并汇报结果。
13
- ```
14
-
15
- 作为 CLI 使用时,安装已发布包:
16
-
17
- ```bash
18
- npm install -g @tea-agent/loop-agent@latest
19
- loop-agent --version
20
- loop-agent --help
21
- ```
22
-
23
- ## 自动更新提醒
24
-
25
- 通过 npm 全局安装的 `loop-agent` 会在普通交互式命令成功结束后检查 `@tea-agent/loop-agent` 是否有新版本。提醒只写入 `stderr`,不会污染命令原本的 `stdout`;失败命令、CI、管道/重定向、`--help`、`--version`、JSON/Markdown 输出以及 DAG/Loop/Delegate/Pi/Cursor 等 controller-sensitive 路径都会跳过。
26
-
27
- 如果你拒绝版本 A,当前系统用户下不会再提醒 A;之后发布版本 B 时会继续提醒。确认更新时,CLI 会先证明当前安装来自同一 npm global root,然后安装刚确认的精确版本,例如:
28
-
29
- ```bash
30
- npm install -g @tea-agent/loop-agent@0.13.0
31
- ```
32
-
33
- 需要完全关闭自动检查时设置:
34
-
35
- ```bash
36
- LOOP_AGENT_DISABLE_UPDATE_CHECK=1
37
- ```
38
-
39
- 检查当前项目的 loop-agent 配置:
40
-
41
- ```bash
42
- loop-agent doctor
43
- loop-agent inspect
44
- ```
45
-
46
- ## 初始化目标项目
47
-
48
- 用户可以用自然语言驱动初始化与维护(这三类入口与目标项目 `AGENTS.md` 的“自然语言入口路由”一致):
49
-
50
- - **初始化**:“初始化 loop-agent”“loop agent 初始化”“loop agent初始化”“loop-agent 初始化” — 执行完整确定性初始化闭环,补全 README/验证矩阵并复查。
51
- - **更新校验**(只读):“初始化更新校验”“loop agent初始化更新校验”“检查初始化更新” — 只读运行 `loop-agent init check-update --repo-root . --markdown`,汇报动作与风险,不自动写入。
52
- - **安全更新**(写入型):“初始化安全更新”“loop agent初始化安全更新”“应用初始化更新” — 先 `check-update`,再 `loop-agent init update --apply-safe`;只执行确定性安全动作,human decisions 存在时停下等用户。
53
-
54
- 在新项目中,最简单的用法是让当前 agent 执行初始化。需要更稳的执行约束时,可以使用下面这段完整提示词:
55
-
56
- ```text
57
- 请用 loop-agent 完整初始化当前项目。
58
-
59
- 如果本机还没有 `loop-agent` 命令,请先运行 `npm install -g @tea-agent/loop-agent@latest`,再记录 `npm list -g @tea-agent/loop-agent --depth=0` 的实际版本。
60
-
61
- 然后运行 `loop-agent init instructions --repo-root .`,按指引使用 full + merge 初始化。需要选择 provider/model,或涉及凭据、成本、部署副作用时先问我;其他能安全默认的选项直接继续。
62
-
63
- 初始化后请立刻探索当前项目的 README、manifest/build/config 文件和源码目录,补全根 README 的项目概览、技术栈/目录结构、开发与验证命令,并同步更新 `ai_workspace/loop-agent/verification-matrix.md` 和必要的 `scripts/ci-tests.sh`。
64
-
65
- 最后运行 `loop-agent init doctor --repo-root .`、`loop-agent inspect --repo-root .`、`loop-agent docs audit --repo-root .`、`bash scripts/check-repo.sh`,如项目测试入口可识别也运行 `bash scripts/ci-tests.sh` 或 `bash scripts/ci.sh`,并汇报结果、假设和剩余风险。
66
- ```
67
-
68
- 如果手动运行 CLI,可以使用:
69
-
70
- ```bash
71
- loop-agent init instructions --repo-root <target-repo>
72
- loop-agent init --repo-root <target-repo> --profile full --merge
73
- loop-agent init doctor --repo-root <target-repo>
74
- ```
75
-
1
+ # loop-agent
2
+
3
+ `loop-agent` 是面向 AI coding agent 的仓库级任务运行时和治理工具。它把一次研发任务组织成可生成、可校验、可执行、可恢复、可交接的 Agent DAG,并用 `.harness/`、`docs/` 和 shell verification 记录执行事实、长期治理资料和完成依据。
4
+
5
+ 它可以作为任意目标项目的稳定控制器:初始化目标项目后,项目会获得 `.agents/skills/`、`ai_workspace/loop-agent/` 治理资料、验证脚本、任务运行态目录和模型执行指引,使 agent 在目标项目里的工作体验尽量与本仓库对齐。
6
+
7
+ ## 快速开始
8
+
9
+ 到一个新项目时,可以直接对当前 agent 说:
10
+
11
+ ```text
12
+ 请用 loop-agent 完整初始化当前项目;如果本机没有 loop-agent,请先安装 @tea-agent/loop-agent@latest。按 init instructions 使用 full + merge 初始化,探索项目后补全 README 和验证命令,最后运行 doctor、inspect、docs audit 和 check-repo 并汇报结果。
13
+ ```
14
+
15
+ 作为 CLI 使用时,安装已发布包:
16
+
17
+ ```bash
18
+ npm install -g @tea-agent/loop-agent@latest
19
+ loop-agent --version
20
+ loop-agent --help
21
+ ```
22
+
23
+ ## 自动更新提醒
24
+
25
+ 通过 npm 全局安装的 `loop-agent` 会在普通交互式命令成功结束后检查 `@tea-agent/loop-agent` 是否有新版本。提醒只写入 `stderr`,不会污染命令原本的 `stdout`;失败命令、CI、管道/重定向、`--help`、`--version`、JSON/Markdown 输出以及 DAG/Loop/Delegate/Pi/Cursor 等 controller-sensitive 路径都会跳过。
26
+
27
+ 如果你拒绝版本 A,当前系统用户下不会再提醒 A;之后发布版本 B 时会继续提醒。确认更新时,CLI 会先证明当前安装来自同一 npm global root,然后安装刚确认的精确版本,例如:
28
+
29
+ ```bash
30
+ npm install -g @tea-agent/loop-agent@0.13.0
31
+ ```
32
+
33
+ 需要完全关闭自动检查时设置:
34
+
35
+ ```bash
36
+ LOOP_AGENT_DISABLE_UPDATE_CHECK=1
37
+ ```
38
+
39
+ 检查当前项目的 loop-agent 配置:
40
+
41
+ ```bash
42
+ loop-agent doctor
43
+ loop-agent inspect
44
+ ```
45
+
46
+ ## 自动发布
47
+
48
+ 仓库通过 GitHub Actions 定时检查 `main`,达到提交门槛并通过发布检查后,自动更新版本、生成 Release 说明并发布 GitHub Release 与 npm。手动触发默认只执行 dry-run,不产生远端发布副作用;具体配置、版本规则和恢复步骤见 [`docs/exec-plans/active/2026-07-18-nightly-auto-release.md`](docs/exec-plans/active/2026-07-18-nightly-auto-release.md)。
49
+
50
+ ## 初始化目标项目
51
+
52
+ 用户可以用自然语言驱动初始化与维护(这三类入口与目标项目 `AGENTS.md` 的“自然语言入口路由”一致):
53
+
54
+ - **初始化**:“初始化 loop-agent”“loop agent 初始化”“loop agent初始化”“loop-agent 初始化” — 执行完整确定性初始化闭环,补全 README/验证矩阵并复查。
55
+ - **更新校验**(只读):“初始化更新校验”“loop agent初始化更新校验”“检查初始化更新” — 只读运行 `loop-agent init check-update --repo-root . --markdown`,汇报动作与风险,不自动写入。
56
+ - **安全更新**(写入型):“初始化安全更新”“loop agent初始化安全更新”“应用初始化更新” — 先 `check-update`,再 `loop-agent init update --apply-safe`;只执行确定性安全动作,human decisions 存在时停下等用户。
57
+
58
+ 在新项目中,最简单的用法是让当前 agent 执行初始化。需要更稳的执行约束时,可以使用下面这段完整提示词:
59
+
60
+ ```text
61
+ 请用 loop-agent 完整初始化当前项目。
62
+
63
+ 如果本机还没有 `loop-agent` 命令,请先运行 `npm install -g @tea-agent/loop-agent@latest`,再记录 `npm list -g @tea-agent/loop-agent --depth=0` 的实际版本。
64
+
65
+ 然后运行 `loop-agent init instructions --repo-root .`,按指引使用 full + merge 初始化。需要选择 provider/model,或涉及凭据、成本、部署副作用时先问我;其他能安全默认的选项直接继续。
66
+
67
+ 初始化后请立刻探索当前项目的 README、manifest/build/config 文件和源码目录,补全根 README 的项目概览、技术栈/目录结构、开发与验证命令,并同步更新 `ai_workspace/loop-agent/verification-matrix.md` 和必要的 `scripts/ci-tests.sh`。
68
+
69
+ 最后运行 `loop-agent init doctor --repo-root .`、`loop-agent inspect --repo-root .`、`loop-agent docs audit --repo-root .`、`bash scripts/check-repo.sh`,如项目测试入口可识别也运行 `bash scripts/ci-tests.sh` 或 `bash scripts/ci.sh`,并汇报结果、假设和剩余风险。
70
+ ```
71
+
72
+ 如果手动运行 CLI,可以使用:
73
+
74
+ ```bash
75
+ loop-agent init instructions --repo-root <target-repo>
76
+ loop-agent init --repo-root <target-repo> --profile full --merge
77
+ loop-agent init doctor --repo-root <target-repo>
78
+ ```
79
+
76
80
  `init instructions` 会输出给模型/Agent 执行完整初始化的指引包,不要求目标项目已有 `harness.json`。默认初始化会 merge 已有 `AGENTS.md`、`harness.json` 和 loop-agent 治理资料,生成语言无关的治理脚本矩阵、中文根 README 入口、`ai_workspace/loop-agent/` 目标项目治理资料、`.agents/skills/` repo-local skills、`harness.json` IDE schema 指引和 `.harness/` 骨架;不会在目标项目根目录生成 `skills/`,也不会把 loop-agent 生成的治理资料写到根 `docs/`。已有 README 会保留用户正文并插入/更新 loop-agent managed block。初始化还会向 `.gitignore` 合并一个 loop-agent managed block(`# LOOP_AGENT_INIT_START/END`),把 `.harness/tasks/*`、`.harness/dag-runs/*`、`.harness/runs/*`、`.harness/live/`、`.harness/cache/`、`.harness/init-surface.json`、`.harness/task-pool/*`、`.task-pool/`、`.agents/skills/*/node_modules/`、`.worktrees/` 等个人/会话运行态事实和 repo-local skill 本地依赖忽略掉,同时保留 `.harness/prompts/` 和目录占位可共享,不会整目录忽略 `.harness/`,也不会覆盖用户已有的 ignore 规则。
77
-
78
- 新初始化会写入 `.harness/init-surface.json`,记录当前 controller 版本、初始化投影文件 hash 和 manifest hash。已用旧版本初始化的目标项目,可以用下面的维护入口对齐新版本初始化能力:
79
-
80
- ```bash
81
- loop-agent init check-update --repo-root <target-repo> --json
82
- loop-agent init check-update --repo-root <target-repo> --markdown
83
- loop-agent init update --repo-root <target-repo> --bootstrap-surface
84
- loop-agent init update --repo-root <target-repo> --apply-safe
85
- ```
86
-
87
- `check-update` 只读报告 deterministic actions、model merge tasks、human decisions 和 recommended next。期望 init surface 会自动发现包内 `docs/templates/` 与 `skills/` 的所有文件,因此 fresh `init --profile full` 投影到目标项目的每个 template/skill 文件都会被纳入校验。`update --bootstrap-surface` 为旧项目补 inferred baseline;`update --apply-safe` 只补缺失文件、目录和 managed block(包括过期的 `.gitignore` managed block),不覆盖已有但无法确认来源的本地文件;对在旧路径被用户修改过的遗留副本,会在对应标准路径上给出 model merge / human decision,不会静默用包内容覆盖。
88
-
89
- 当初始化由模型/Agent 执行时,它应把初始化当成一个自动化闭环:确认真正不能安全默认的 provider/model、治理根目录或凭据/成本问题后,运行 deterministic init,随后立刻读取目标项目真实文件,补全根 README 的项目概览、技术栈/目录结构、开发与验证命令,并同步适配 `ai_workspace/loop-agent/verification-matrix.md` 和必要的 `scripts/ci-tests.sh`。
90
-
91
- 初始化生成的 `scripts/ci-tests.sh` 不假定目标项目是 TypeScript、Node、前端或后端项目。它会保守探测 `package.json`、`Makefile`、`go.mod`、`Cargo.toml`、Python 测试配置、Maven、Gradle、.NET 等常见入口,只运行实际存在且工具可用的命令;探测不到时会清楚提示需要由初始化模型或用户按目标项目实际技术栈补充。
92
-
93
- ## 运行任务
94
-
95
- 创建并运行一个标准 Agent DAG:
96
-
97
- ```bash
98
- loop-agent new-task <task-id> "任务标题"
99
- loop-agent dag run-task <task-id> --profile auto --strict-models --output <temp-dir>/<task-id>-dag.json
100
- loop-agent dag validate --dag <temp-dir>/<task-id>-dag.json --strict-models --strict-governance
101
- loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd .
102
- ```
103
-
104
- `dag run-task` 会先尊重显式声明的专用 `taskKind`。对于默认 `standard` 任务,它会根据任务标题、`source/需求.md` 和结构化 `allowedPaths` 做保守、确定性的需求分类;只有高置信的前端实现需求才会自动进入前端专用节点链。只读 `frontend-mock-assess-pi` 在计划前读取 Mock/API/schema 证据,并通过确定性 contract gate 选择原生 Mock、浏览器拦截、请求适配层、`not-needed` 或明确阻塞;它只能使用 DAG 生成时已固化的验证入口。可选 `task.json.frontendMock` 可设置 `auto|required|disabled`、既有服务目录和专项验证命令;不安全或不完整的显式 required 合同不会生成 writer。真实请求始终是默认路径,唯一写节点仍是 `frontend-implement-pi`。自动分类不会覆盖显式 profile、`workflowPolicy` 或 supervised quality gate。后端、混合或证据不足的需求继续使用通用模板,也不会自动进入 `backend-test`。Mock 验证只证明前端状态与交互;未实际请求后端时,收尾保留 `Frontend status: mock-validated`、`Real integration: pending`,并给出 `<task-id>-real-api-integration-verify`。该复验任务不会自动创建或执行,需要在后端就绪后显式运行。
105
-
106
- 测试结论写回与业务知识图谱(结构化 Git,非 RAG):
107
-
108
- ```bash
109
- # 最终验证后:同步结论/用例/缺陷到 features/<F>/testing/**(须 featureId)
110
- # task.json: { "taskKind": "knowledge-sync", "featureId": "F-2026-004" }
111
- loop-agent dag run-task <task-id> --strict-models
112
-
113
- # 图谱开荒 / 增量(AI 只写 staging,晋升默认不覆盖已有正式文件)
114
- # task.json: { "taskKind": "knowledge-graph-bootstrap" }
115
- loop-agent knowledge graph-init --product-name my-app
116
- loop-agent knowledge graph-incremental-prepare --feature F-2026-004 --service order
117
- loop-agent dag run-task <task-id> --strict-models
118
- loop-agent knowledge graph-promote
119
- loop-agent knowledge graph-materialize
120
- loop-agent knowledge query --mode by_feature --feature F-2026-004 --json
121
- ```
122
-
123
- `knowledge curate` 仍只用于 repair/learned guidance 提案,与图谱查询不是同一能力。细节见 `docs/feature-workflow.md` 与 `docs/design/knowledge-graph-ai-bootstrap.md`。
124
-
125
- `<temp-dir>` 表示平台原生临时目录;也可以省略 `--output`,再使用命令 JSON 输出里的 `outputPath`。
126
-
127
- 非微小工作需要 exec-plan 时,使用确定性生命周期命令维护计划与索引;`new-task` 不会自动创建计划:
128
-
129
- ```bash
130
- loop-agent plan create <plan-id> "<title>"
131
- loop-agent plan check
132
- loop-agent plan complete <plan-id> --summary "<summary>"
133
- ```
134
-
135
- `plan create` 优先复用目标项目模板并回退到发布包内置模板,create/complete 失败时会回滚多文件修改。`dag run-task` 在生成 DAG 草稿前运行同源索引检查,避免遗漏登记直到末端 verify 才暴露。
136
-
137
- 一次性只读评审或有边界写入:
138
-
139
- ```bash
140
- loop-agent pi-prompt --cwd . --tools read,grep,find,ls "只读评审这个任务,不要编辑文件。"
141
- loop-agent pi-prompt --cwd . --tools read,bash,edit,write,grep,find,ls "<包含 allowedPaths 和 forbiddenPaths 的有边界任务说明>"
142
- ```
143
-
144
- 产品线 feature packet 可用伴生 Worker CLI 做 docs CI;仓库也提供外部 CI/cron wrapper,调度仍由外部系统负责:
145
-
146
- ```bash
147
- agent-worker task validate-feature <feature-dir>
148
- agent-worker feature review --feature-dir <feature-dir> --repo <target-repo>
149
- agent-worker feature run --feature-dir <feature-dir> --repo <target-repo> --dry-run [--git-mode checkpoint]
150
- agent-worker feature verify-final --feature-dir <feature-dir> --repo <target-repo> --task-id <qa-execute-id>
151
- agent-worker feature delivery --feature-dir <feature-dir> --repo <target-repo> --qa-evidence <path> --final-verification <path> [--dry-run]
152
- agent-worker feature closeout --feature-dir <feature-dir> --repo <target-repo> [--apply --owner <owner>]
153
- agent-worker report metrics --repo <target-repo> --month <YYYY-MM>
154
- agent-worker task draft-followup <task-id> --worker-run-id <id> --feature-dir <feature-dir> --repo <target-repo>
155
- agent-worker feature approve-followup --feature-dir <feature-dir> --followup-id <id> --repo <target-repo> --owner <owner> --dry-run
156
- bash scripts/worker-nightly.sh <feature-dir> <target-repo> <batch-run-id>
157
- ```
158
-
159
- 写入型 Worker 入口会在目标仓库写入前解析并冻结实际启动的 `loop-agent` controller identity。自举或其他需要精确版本约束的批次,可以额外传入:
160
-
161
- ```bash
162
- agent-worker feature run \
163
- --feature-dir <feature-dir> \
164
- --repo <target-repo> \
165
- --loop-agent-bin <published-loop-agent-entry> \
166
- --expected-controller-version <version> \
167
- --expected-controller-fingerprint <sha256:value>
168
- ```
169
-
170
- identity 不只包含 semver,还包含绝对 launch spec、入口 SHA-256,以及覆盖 `package.json`、`bin/**`、`dist/**`、`skills/**` 的 portable package fingerprint。校验失败时会在 materialize、Task Pool `Running` 或其他目标仓库写入前停止,并保留实际 identity 供诊断。
171
-
172
- `feature review` 是只读的 Feature 级入口。它从 Feature Packet 和现有 Task Pool 事实派生状态、required AC 覆盖、阻塞、证据和唯一主行动;默认输出简洁人类摘要,`--json` 输出稳定的 schemaVersion 1 读模型。它不会写入 Feature Packet 或 Task Pool。
173
-
174
- `feature verify-final` 在 clean Delivery HEAD 上复用已完成的 `qa-execute` TaskSpec,执行独立、不会 promote/closeout 或移动 HEAD 的最终验证,并原子投影 canonical QA aggregate 与 HEAD-bound final-verification evidence。`feature delivery` 复用 checkpoint transaction,校验 branch/HEAD/clean、commit trailers、changed files、成功 run、QA、最终验证和 required AC 后,在 `.harness/task-pool/` 原子生成 Delivery manifest、Acceptance Coverage 与 `PR.md`;`--dry-run` 零写入。`feature closeout` 默认只预览 gates;显式 `--apply --owner <owner>` 才会在前后校验与整体回滚保护下写入 Feature Closeout,重复相同 facts 会幂等复用。
175
-
176
- Morning report 和 Observe snapshot/UI 复用同一 Feature reducer,优先展示 Status、Next Action、Why、Evidence。`report metrics` 同时生成 monthly JSON/Markdown,所有比例都包含分子、分母、样本量、UTC 窗口和缺失数据说明。
177
-
178
- `feature run` 把 validation、目标仓库 preflight、Ready Queue、现有 `run-ready`、晨报、Observe snapshot 和最终 review 串成一次 Feature 意图。默认不写 Git 且每次最多推进一个 Ready 写任务。显式 `--git-mode checkpoint` 才允许创建本地 `agent/<feature-id>` 分支:每个成功任务通过 write-boundary/sensitive-file audit 后提交 checkpoint;失败任务先保存 binary patch、changed/untracked inventory 与内容,再恢复到最近 checkpoint 并验证 clean。它从不授权 push、远程 PR、merge 或 stash。`--keep-failed-diff` 会保留失败 diff、返回 NeedsAction 并立即停止后续任务。
179
-
180
- 如果 Task 产生业务失败,`feature run` 仍会完成晨报、snapshot 和最终 review,但结果为 `needs-action`、进程退出非零,并保留 batch 与失败证据;无 Ready 时正常退出,并通过 `noReadyReason` 区分已关闭、可交付、待 QA、需人工处理、依赖阻塞或空 Feature。
181
-
182
- 失败可通过显式 Follow-up 决策闭环接续:ProductBug、TestBug、FlakyTest、DependencyFailure 会生成可批准 Task 草稿;EnvFailure 最近两次连续失败后才生成 `ENV-CHECK-*`,否则优先给出 retry;SpecUnclear、ContractMismatch、RiskyChange、NeedsHuman、Unknown 只生成人工行动卡,绝不进入 Ready。人工用 `feature approve-followup --dry-run` 复核 baseline、证据 hash、ID 冲突和事务计划,再带 `--owner` 批准。批准后新增 TaskSpec、重连下游依赖并进入 Ready;原失败 run/state/handoff 保持不变,重复 run 的新草稿会 supersede 旧 unresolved 草稿但保留历史。
183
-
184
- nightly wrapper 按 feature 互斥,保留批次/超时退出码,并输出 morning report、Observe snapshot 和 controller 版本 artifacts。
185
-
186
- 自 0.8.0 起,`.harness/task-pool/` 是唯一受支持的 Task Pool runtime root,其中包含根级 `runs.jsonl`、`events.jsonl`、`states/`、`artifacts/`、`failure-handoffs/`、`observability/` 和 `reports/`。这是 hard cutover:此前的顶层 Task Pool 位置不读取、不迁移、不合并、不重映射。
187
-
188
- Task Pool **state identity** 进一步固定为 feature-scoped 复合键 `{ featureId, taskId }`(ADR 0004):
189
-
190
- - canonical state 路径:`.harness/task-pool/states/<featureId>/<taskId>.json`(schema v2,文件内容必须携带 `featureId` / `taskId`)
191
- - 同仓库多 Feature 可安全使用相同 Task ID(例如 `F-A/QA-EXEC-001` 与 `F-B/QA-EXEC-001` 互不覆盖)
192
- - retry 必须显式指定 Feature:`agent-worker task retry <task-id> --feature-id <feature-id> --repo <repo> --reason <reason>`
193
- - 诊断与迁移:`agent-worker pool doctor --repo <repo> --json`(只读);`agent-worker pool migrate-state --repo <repo>` 默认 dry-run,apply 需 `--owner` + `--reason`
194
- - 扁平 legacy `states/<taskId>.json` 不得静默解释;存在时新写入 fail-closed,必须经 doctor / migrate 处理
195
- - Observe 只读:canonical `#/feature/:featureId/task/:taskId` 与 `GET /api/features/:featureId/tasks/:taskId`;legacy bare task route 仅在唯一命中时兼容,歧义返回 409 + candidates
196
-
197
- ## 核心概念
198
-
199
- - **Agent DAG**:把一次任务拆成 contract、scout、plan、implement、verify、closeout 等可审查节点。
200
- - **任务源绑定与恢复**:新生成 DAG 会冻结任务源路径、SHA-256 和显式 `REQ/BR/AC`;前端计划漏号时会在 writer 前阻断。运行中断后应修复 task source 并重新生成完整 DAG,不要用二手摘要拼接 impl-only 后半段。
201
- - **`.harness/`**:记录 task、DAG run、one-shot run、cache 和 live state 等运行态事实。
202
- - **`harness.json`**:描述项目名、治理根目录、模型路由、executor 和验证脚本;目标项目中的 `ai_workspace/loop-agent/templates/harness.schema.json` 为 IDE 提供补全和字段说明,运行时仍由 Zod schema 校验。
203
- - **repo-local skills**:目标项目本地 skills 统一放在 `.agents/skills/`,便于项目定制 agent 行为并让外部 agent 自动发现。DAG skill 解析顺序为:用户配置目录 → `.agents/skills/` → 发布包内置 `skills/`。
204
- - **可选 SDD skill 嵌入**:如果目标项目在 `.agents/skills/` 中提供 `SDD-requirement-analysis`、`SDD-design-analysis`、`SDD-implementation-test-review`,`dag run-task` 会把它们作为知识与方法补充追加到对应的 Contract、Plan、Implement/Repair、Verify、Review 节点。loop-agent 仍控制 DAG、状态、写入边界、验证和收口;不会自动运行 SDD 初始化/扫描 skill,也不会推进 `ai_workspace` 状态或归档。没有这些 repo-local skills 时,生成结果保持原有默认流程。
205
- - **run-owned skill snapshot**:新 DAG run 会在任何节点执行前,把本次实际注入 prompt 的 resolved skill profiles 冻结到 run 自己的 `.runtime/skill-snapshot.json`。后续节点、dynamic child、approve/resume 都使用同一份 hash-anchored snapshot;run 内修改 skill 只会从下一次 run 生效。
206
- - **controller identity**:`agent-worker` 把一次 Feature/batch 实际使用的发布包、入口、启动参数和 package 内容 fingerprint 固定下来,并把 identity 传播到 Worker、Task Pool、batch/Feature 与最终验证证据。
207
- - **只读 Pi 节点安全重试**:仅 planner/scout/reviewer/verifier/closeout 这类没有仓库写入能力的 Pi 节点,遇到模型连接中断、provider 限流、临时不可用或 timeout 时,可在同一 run 内有界重试;生成模板会自动声明默认 `retryPolicy`(总尝试 3 次、最多可配置 5 次、指数退避、单次等待上限 30s)。每次 attempt 保留独立证据,耗时与 Token 用量按尝试聚合,后一次成功不覆盖前一次失败证据。`quota`/`auth`/`invalid-output`/`write-guard` 与未知失败不重试;supervisor、implementer、writer、dynamic、shell、static、docs-only、decision-gate 节点不重试。
208
- - **`agent-worker` operator skill**:`skills/agent-worker/` 只负责 Feature Packet、TaskSpec、Task Pool、自举 release train 和失败恢复的外层路由;单个 DAG 实现、DAG kernel 修复和节点执行仍由 `loop-agent` 负责,该 skill 不进入默认 DAG role skills。
209
- - **治理文档**:`docs/` 保存原则、工作流、验证矩阵、runtime 边界、计划和报告。
210
- - **shell verification**:完成声明必须有可复现命令作为依据,而不是只靠聊天结论。
211
-
212
- 这些治理原则的设计思想吸收了 Anthropic 长时运行 agent harness、OpenAI Codex harness engineering、腾讯端到端 Harness Engineering 和社区 agent harness 实践:人类掌舵,智能体执行;仓库作为记录系统;任务小步推进;用结构化 handoff 与可复现验证跨 session 保持连续性。背景资料收录在 `website/docs/practices/`。
213
-
214
- ## 仓库地图
215
-
216
- 本仓库按职责分区;更细的开工协议与会话规则见 `AGENTS.md`,治理索引见 `docs/README.md`。
217
-
218
- | 路径 | 职责 |
219
- |---|---|
220
- | `bin/`、`src/` | CLI 入口与运行时代码 |
221
- | `skills/` | repo-local skill 指令与 references |
222
- | `.harness/` | task、DAG run、cache、live state 等运行态事实 |
223
- | `docs/` | 长期治理文档、计划、报告与模板 |
224
- | `website/` | 面向使用者的文档站 |
225
- | `scripts/`、`test/` | 验证脚本与测试套件 |
226
- | `examples/` | 可复制 DAG 示例(默认不投影到目标项目) |
227
- | `features/`、`dogfood/` | 样板 Feature Packet 与 dogfood 样本(本仓库维护用) |
228
- | `harness.json`、`AGENTS.md`、`CONTEXT.md` | 项目配置、agent 开工地图与术语表 |
229
-
230
- ## 能力概览
231
-
232
- - 生成、校验、执行和汇总 Agent DAG。
233
- - 通过 `eval replay` / `eval report` 对 completed DAG evidence 做 hash-anchored、deterministic 的只读重放比较;M1 不执行模型也不授权候选晋升。
234
- - 通过 `eval candidate register|show|list|transition` 管理不可变 Candidate Bundle 与 append-only lifecycle(M2 registry MVP);不跑 live Pi/DAG,不移动 incumbent alias。
235
- - 从任务说明生成标准 DAG,并按依赖顺序运行规划、实现、验证和收口节点。
236
- - 维护 `loop` 长程任务状态,包括目标、轮次、信号、验证事实和收口草稿。
237
- - 通过 Pi executor 执行只读规划、评审、诊断和有边界写入(唯一受治理 Agent writer)。
238
- - 保留 `cursor-prompt` 作为显式、手工触发的 one-shot sidecar(不是受治理 DAG/Loop writer)。
239
- - 通过 shell executor 运行确定性的验证命令。
240
- - 检查任务状态、运行态工件、文档链接、skill entry 和 runtime boundary 等治理规则。
241
-
242
- ## 内置示例
243
-
244
- `examples/` 默认不复制到目标项目。可以通过工具内置命令查看或按需复制:
245
-
246
- ```bash
247
- loop-agent examples list
248
- loop-agent examples show example-dag.json
249
- loop-agent examples copy example-dag.json --repo-root <target-repo>
250
- ```
251
-
252
- ## 迭代本仓库
253
-
254
- 如果要用 loop-agent 迭代 loop-agent 本仓库,发布版本 N 必须作为整个维护批次的固定 controller,候选版本 N+1 只能在隔离安装槽中接受接棒验证。不要使用当前工作区的 `npm link` 或 `npm run dev` 作为 controller;首次安装或有意升级可用 `@latest`,但一次自举任务启动后不要中途升级或重新通过 PATH 解析入口。
255
-
256
- ```bash
257
- npm install -g @tea-agent/loop-agent@latest
258
- npm list -g @tea-agent/loop-agent --depth=0
259
- loop-agent doctor
260
- loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <repo-root>
261
- ```
262
-
263
- `@latest` 只用于安装或升级,不要在 DAG 节点里反复用 `npx @latest` 拉取。自举证据应记录 controller version、portable package fingerprint、候选 commit/tarball hash 和失败 run;semver 相同并不代表 package 内容相同。
264
-
265
- 源码仓库提供 repo-maintainer deterministic takeover canary。它打包候选、安装到临时隔离 slot,由维护脚本独立计算 canonical package fingerprint 并与候选实现交叉核对,再通过候选包内两个绝对入口执行 full init、doctor、inspect、docs audit、目标项目治理检查、Feature validation/dry-run 和一个只含 static/shell executor 的小型 DAG;所有子进程都有硬超时,PATH trap 证明没有回退全局 `loop-agent` / `agent-worker` 命令,run evidence 则证明没有观察到 Pi/model executor:
266
-
267
- ```bash
268
- npm run self-host:canary -- --deterministic --output <evidence.json>
269
- # 或验证已经构建好的候选 tarball
270
- npm run self-host:canary -- --deterministic --tarball <candidate.tgz> --output <evidence.json>
271
- ```
272
-
273
- 该脚本属于源码仓库维护入口,不进入发布包的 `files` surface;`--live` 当前明确拒绝执行。deterministic canary 证明候选包和 static/shell runtime 能接棒,但不会调度 Pi executor,也不承担 Pi skill source 解析证明;run-owned skill snapshot 的候选包解析由 snapshot 定向测试和真实 DAG 证据单独证明。
274
-
275
- ## 文档导航
276
-
277
- | 路径 | 用途 |
278
- |---|---|
279
- | `AGENTS.md` | 本仓库的 agent 开工协议、会话协议和长期工作规则 |
280
- | `harness.json` | loop-agent 在本仓库的模型、executor、治理根目录和脚本配置 |
281
- | `docs/README.md` | 治理文档索引 |
282
- | `docs/verification-matrix.md` | 不同变更类型对应的验证命令 |
283
- | `docs/production-readiness.md` | Production Readiness v0.1 支持范围、证据和验收标准 |
284
- | `docs/architecture/runtime-boundaries.md` | runtime 层边界和依赖方向 |
285
- | `skills/loop-agent/` | loop-agent skill 入口和 references |
286
- | `examples/` | 可复用 DAG 示例 |
287
- | `website/docs/` | 面向使用者的 Docusaurus 文档站内容 |
288
- | `website/docs/practices/` | Anthropic、OpenAI Codex、腾讯端到端工程与社区 harness 实践资料 |
289
-
290
- ## 本仓库开发
291
-
292
- 本地源码开发:
293
-
294
- ```bash
295
- npm install
296
- npm run build
297
- node bin/loop-agent.js --help
298
- npm run dev -- --help
299
- ```
300
-
301
- 常用验证命令:
302
-
303
- ```bash
304
- npm run typecheck
305
- npm test
306
- bash scripts/check-repo.sh
307
- bash scripts/ci.sh
308
- npm run docs:build
309
- ```
310
-
311
- 当前 CLI 使用 `commander` 组织 command tree。顶层 help、子命令 help、参数解析和未知命令错误都由 commander 驱动。
312
-
313
- Windows 上运行 `scripts/*.sh` 时使用 Git Bash 或已配置的兼容 Bash,不要求使用 WSL 或 POSIX 路径。实际文件操作和 `--output` / `--dag` / `--cwd` 参数使用当前平台原生路径;仓库内引用、JSON/Markdown 证据引用和 glob 约定可继续用 `/` 作为稳定分隔符。
314
-
315
- ## 发布包内容
316
-
317
- 发布包包含静态运行和指导资料:`bin/`、`dist/`、`skills/`(包括 `loop-agent` 与可选的 `agent-worker` operator skill)、`docs/*.md`、`docs/architecture/runtime-boundaries.md`、`docs/skills/`、`docs/templates/`、`docs/init-surface.manifest.json`、`examples/`、`harness.json`、`AGENTS.md`、`README.md` 和 `CHANGELOG.md`。
318
-
319
- `docs/progress/`、`docs/reports/`、`docs/exec-plans/`、`docs/decisions/` 等目录下的任务正文是目标仓库实时生成或历史事实;npm 包只携带这些目录的 README,不携带本仓库已有历史记录。
320
-
321
- DAG skill 指令优先从用户配置目录和目标项目 `.agents/skills/` 解析;目标项目未提供本地 skill 时,CLI 会回退到 npm 包内置的 `skills/`。因此普通项目不需要复制 loop-agent 仓库历史文档或根 `skills/` 目录才可获得默认 DAG 能力。
322
-
323
- ## 发布前检查
324
-
325
- 发布 npm 包前至少运行:
326
-
327
- ```bash
328
- npm run typecheck
329
- npm test
330
- npm run build
331
- node bin/loop-agent.js --help
332
- npm pack --dry-run
333
- ```
334
-
335
- 发布入口 `bin/loop-agent.js` 只加载 `dist/cli.js`;`npm run dev -- <args>` 只用于源码开发和定位问题。
81
+
82
+ 新初始化会写入 `.harness/init-surface.json`,记录当前 controller 版本、初始化投影文件 hash 和 manifest hash。已用旧版本初始化的目标项目,可以用下面的维护入口对齐新版本初始化能力:
83
+
84
+ ```bash
85
+ loop-agent init check-update --repo-root <target-repo> --json
86
+ loop-agent init check-update --repo-root <target-repo> --markdown
87
+ loop-agent init update --repo-root <target-repo> --bootstrap-surface
88
+ loop-agent init update --repo-root <target-repo> --apply-safe
89
+ ```
90
+
91
+ `check-update` 只读报告 deterministic actions、model merge tasks、human decisions 和 recommended next。期望 init surface 会自动发现包内 `docs/templates/` 与 `skills/` 的所有文件,因此 fresh `init --profile full` 投影到目标项目的每个 template/skill 文件都会被纳入校验。`update --bootstrap-surface` 为旧项目补 inferred baseline;`update --apply-safe` 只补缺失文件、目录和 managed block(包括过期的 `.gitignore` managed block),不覆盖已有但无法确认来源的本地文件;对在旧路径被用户修改过的遗留副本,会在对应标准路径上给出 model merge / human decision,不会静默用包内容覆盖。
92
+
93
+ 当初始化由模型/Agent 执行时,它应把初始化当成一个自动化闭环:确认真正不能安全默认的 provider/model、治理根目录或凭据/成本问题后,运行 deterministic init,随后立刻读取目标项目真实文件,补全根 README 的项目概览、技术栈/目录结构、开发与验证命令,并同步适配 `ai_workspace/loop-agent/verification-matrix.md` 和必要的 `scripts/ci-tests.sh`。
94
+
95
+ 初始化生成的 `scripts/ci-tests.sh` 不假定目标项目是 TypeScript、Node、前端或后端项目。它会保守探测 `package.json`、`Makefile`、`go.mod`、`Cargo.toml`、Python 测试配置、Maven、Gradle、.NET 等常见入口,只运行实际存在且工具可用的命令;探测不到时会清楚提示需要由初始化模型或用户按目标项目实际技术栈补充。
96
+
97
+ ## 运行任务
98
+
99
+ 创建并运行一个标准 Agent DAG:
100
+
101
+ ```bash
102
+ loop-agent new-task <task-id> "任务标题"
103
+ loop-agent dag run-task <task-id> --profile auto --strict-models --output <temp-dir>/<task-id>-dag.json
104
+ loop-agent dag validate --dag <temp-dir>/<task-id>-dag.json --strict-models --strict-governance
105
+ loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd .
106
+ ```
107
+
108
+ `dag run-task` 会先尊重显式声明的专用 `taskKind`。对于默认 `standard` 任务,它会根据任务标题、`source/需求.md` 和结构化 `allowedPaths` 做保守、确定性的需求分类;只有高置信的前端实现需求才会自动进入前端专用节点链。只读 `frontend-mock-assess-pi` 在计划前读取 Mock/API/schema 证据,并通过确定性 contract gate 选择原生 Mock、浏览器拦截、请求适配层、`not-needed` 或明确阻塞;它只能使用 DAG 生成时已固化的验证入口。可选 `task.json.frontendMock` 可设置 `auto|required|disabled`、既有服务目录和专项验证命令;不安全或不完整的显式 required 合同不会生成 writer。真实请求始终是默认路径,唯一写节点仍是 `frontend-implement-pi`。自动分类不会覆盖显式 profile、`workflowPolicy` 或 supervised quality gate。后端、混合或证据不足的需求继续使用通用模板,也不会自动进入 `backend-test`。Mock 验证只证明前端状态与交互;未实际请求后端时,收尾保留 `Frontend status: mock-validated`、`Real integration: pending`,并给出 `<task-id>-real-api-integration-verify`。该复验任务不会自动创建或执行,需要在后端就绪后显式运行。
109
+
110
+ 测试结论写回与业务知识图谱(结构化 Git,非 RAG):
111
+
112
+ ```bash
113
+ # 最终验证后:同步结论/用例/缺陷到 features/<F>/testing/**(须 featureId)
114
+ # task.json: { "taskKind": "knowledge-sync", "featureId": "F-2026-004" }
115
+ loop-agent dag run-task <task-id> --strict-models
116
+
117
+ # 图谱开荒 / 增量(AI 只写 staging,晋升默认不覆盖已有正式文件)
118
+ # task.json: { "taskKind": "knowledge-graph-bootstrap" }
119
+ loop-agent knowledge graph-init --product-name my-app
120
+ loop-agent knowledge graph-incremental-prepare --feature F-2026-004 --service order
121
+ loop-agent dag run-task <task-id> --strict-models
122
+ loop-agent knowledge graph-promote
123
+ loop-agent knowledge graph-materialize
124
+ loop-agent knowledge query --mode by_feature --feature F-2026-004 --json
125
+ ```
126
+
127
+ `knowledge curate` 仍只用于 repair/learned guidance 提案,与图谱查询不是同一能力。细节见 `docs/feature-workflow.md` 与 `docs/design/knowledge-graph-ai-bootstrap.md`。
128
+
129
+ `<temp-dir>` 表示平台原生临时目录;也可以省略 `--output`,再使用命令 JSON 输出里的 `outputPath`。
130
+
131
+ 非微小工作需要 exec-plan 时,使用确定性生命周期命令维护计划与索引;`new-task` 不会自动创建计划:
132
+
133
+ ```bash
134
+ loop-agent plan create <plan-id> "<title>"
135
+ loop-agent plan check
136
+ loop-agent plan complete <plan-id> --summary "<summary>"
137
+ ```
138
+
139
+ `plan create` 优先复用目标项目模板并回退到发布包内置模板,create/complete 失败时会回滚多文件修改。`dag run-task` 在生成 DAG 草稿前运行同源索引检查,避免遗漏登记直到末端 verify 才暴露。
140
+
141
+ 一次性只读评审或有边界写入:
142
+
143
+ ```bash
144
+ loop-agent pi-prompt --cwd . --tools read,grep,find,ls "只读评审这个任务,不要编辑文件。"
145
+ loop-agent pi-prompt --cwd . --tools read,bash,edit,write,grep,find,ls "<包含 allowedPaths 和 forbiddenPaths 的有边界任务说明>"
146
+ ```
147
+
148
+ 产品线 feature packet 可用伴生 Worker CLI 做 docs CI;仓库也提供外部 CI/cron wrapper,调度仍由外部系统负责:
149
+
150
+ ```bash
151
+ agent-worker task validate-feature <feature-dir>
152
+ agent-worker feature review --feature-dir <feature-dir> --repo <target-repo>
153
+ agent-worker feature run --feature-dir <feature-dir> --repo <target-repo> --dry-run [--git-mode checkpoint]
154
+ agent-worker feature verify-final --feature-dir <feature-dir> --repo <target-repo> --task-id <qa-execute-id>
155
+ agent-worker feature delivery --feature-dir <feature-dir> --repo <target-repo> --qa-evidence <path> --final-verification <path> [--dry-run]
156
+ agent-worker feature closeout --feature-dir <feature-dir> --repo <target-repo> [--apply --owner <owner>]
157
+ agent-worker report metrics --repo <target-repo> --month <YYYY-MM>
158
+ agent-worker task draft-followup <task-id> --worker-run-id <id> --feature-dir <feature-dir> --repo <target-repo>
159
+ agent-worker feature approve-followup --feature-dir <feature-dir> --followup-id <id> --repo <target-repo> --owner <owner> --dry-run
160
+ bash scripts/worker-nightly.sh <feature-dir> <target-repo> <batch-run-id>
161
+ ```
162
+
163
+ 写入型 Worker 入口会在目标仓库写入前解析并冻结实际启动的 `loop-agent` controller identity。自举或其他需要精确版本约束的批次,可以额外传入:
164
+
165
+ ```bash
166
+ agent-worker feature run \
167
+ --feature-dir <feature-dir> \
168
+ --repo <target-repo> \
169
+ --loop-agent-bin <published-loop-agent-entry> \
170
+ --expected-controller-version <version> \
171
+ --expected-controller-fingerprint <sha256:value>
172
+ ```
173
+
174
+ identity 不只包含 semver,还包含绝对 launch spec、入口 SHA-256,以及覆盖 `package.json`、`bin/**`、`dist/**`、`skills/**` 的 portable package fingerprint。校验失败时会在 materialize、Task Pool `Running` 或其他目标仓库写入前停止,并保留实际 identity 供诊断。
175
+
176
+ `feature review` 是只读的 Feature 级入口。它从 Feature Packet 和现有 Task Pool 事实派生状态、required AC 覆盖、阻塞、证据和唯一主行动;默认输出简洁人类摘要,`--json` 输出稳定的 schemaVersion 1 读模型。它不会写入 Feature Packet 或 Task Pool。
177
+
178
+ `feature verify-final` 在 clean Delivery HEAD 上复用已完成的 `qa-execute` TaskSpec,执行独立、不会 promote/closeout 或移动 HEAD 的最终验证,并原子投影 canonical QA aggregate 与 HEAD-bound final-verification evidence。`feature delivery` 复用 checkpoint transaction,校验 branch/HEAD/clean、commit trailers、changed files、成功 run、QA、最终验证和 required AC 后,在 `.harness/task-pool/` 原子生成 Delivery manifest、Acceptance Coverage 与 `PR.md`;`--dry-run` 零写入。`feature closeout` 默认只预览 gates;显式 `--apply --owner <owner>` 才会在前后校验与整体回滚保护下写入 Feature Closeout,重复相同 facts 会幂等复用。
179
+
180
+ Morning report 和 Observe snapshot/UI 复用同一 Feature reducer,优先展示 Status、Next Action、Why、Evidence。`report metrics` 同时生成 monthly JSON/Markdown,所有比例都包含分子、分母、样本量、UTC 窗口和缺失数据说明。
181
+
182
+ `feature run` 把 validation、目标仓库 preflight、Ready Queue、现有 `run-ready`、晨报、Observe snapshot 和最终 review 串成一次 Feature 意图。默认不写 Git 且每次最多推进一个 Ready 写任务。显式 `--git-mode checkpoint` 才允许创建本地 `agent/<feature-id>` 分支:每个成功任务通过 write-boundary/sensitive-file audit 后提交 checkpoint;失败任务先保存 binary patch、changed/untracked inventory 与内容,再恢复到最近 checkpoint 并验证 clean。它从不授权 push、远程 PR、merge 或 stash。`--keep-failed-diff` 会保留失败 diff、返回 NeedsAction 并立即停止后续任务。
183
+
184
+ 如果 Task 产生业务失败,`feature run` 仍会完成晨报、snapshot 和最终 review,但结果为 `needs-action`、进程退出非零,并保留 batch 与失败证据;无 Ready 时正常退出,并通过 `noReadyReason` 区分已关闭、可交付、待 QA、需人工处理、依赖阻塞或空 Feature。
185
+
186
+ 失败可通过显式 Follow-up 决策闭环接续:ProductBug、TestBug、FlakyTest、DependencyFailure 会生成可批准 Task 草稿;EnvFailure 最近两次连续失败后才生成 `ENV-CHECK-*`,否则优先给出 retry;SpecUnclear、ContractMismatch、RiskyChange、NeedsHuman、Unknown 只生成人工行动卡,绝不进入 Ready。人工用 `feature approve-followup --dry-run` 复核 baseline、证据 hash、ID 冲突和事务计划,再带 `--owner` 批准。批准后新增 TaskSpec、重连下游依赖并进入 Ready;原失败 run/state/handoff 保持不变,重复 run 的新草稿会 supersede 旧 unresolved 草稿但保留历史。
187
+
188
+ nightly wrapper 按 feature 互斥,保留批次/超时退出码,并输出 morning report、Observe snapshot 和 controller 版本 artifacts。
189
+
190
+ 自 0.8.0 起,`.harness/task-pool/` 是唯一受支持的 Task Pool runtime root,其中包含根级 `runs.jsonl`、`events.jsonl`、`states/`、`artifacts/`、`failure-handoffs/`、`observability/` 和 `reports/`。这是 hard cutover:此前的顶层 Task Pool 位置不读取、不迁移、不合并、不重映射。
191
+
192
+ Task Pool **state identity** 进一步固定为 feature-scoped 复合键 `{ featureId, taskId }`(ADR 0004):
193
+
194
+ - canonical state 路径:`.harness/task-pool/states/<featureId>/<taskId>.json`(schema v2,文件内容必须携带 `featureId` / `taskId`)
195
+ - 同仓库多 Feature 可安全使用相同 Task ID(例如 `F-A/QA-EXEC-001` 与 `F-B/QA-EXEC-001` 互不覆盖)
196
+ - retry 必须显式指定 Feature:`agent-worker task retry <task-id> --feature-id <feature-id> --repo <repo> --reason <reason>`
197
+ - 诊断与迁移:`agent-worker pool doctor --repo <repo> --json`(只读);`agent-worker pool migrate-state --repo <repo>` 默认 dry-run,apply 需 `--owner` + `--reason`
198
+ - 扁平 legacy `states/<taskId>.json` 不得静默解释;存在时新写入 fail-closed,必须经 doctor / migrate 处理
199
+ - Observe 只读:canonical `#/feature/:featureId/task/:taskId` 与 `GET /api/features/:featureId/tasks/:taskId`;legacy bare task route 仅在唯一命中时兼容,歧义返回 409 + candidates
200
+
201
+ ## 核心概念
202
+
203
+ - **Agent DAG**:把一次任务拆成 contract、scout、plan、implement、verify、closeout 等可审查节点。
204
+ - **任务源绑定与恢复**:新生成 DAG 会冻结任务源路径、SHA-256 和显式 `REQ/BR/AC`;前端计划漏号时会在 writer 前阻断。运行中断后应修复 task source 并重新生成完整 DAG,不要用二手摘要拼接 impl-only 后半段。
205
+ - **`.harness/`**:记录 task、DAG run、one-shot run、cache 和 live state 等运行态事实。
206
+ - **`harness.json`**:描述项目名、治理根目录、模型路由、executor 和验证脚本;目标项目中的 `ai_workspace/loop-agent/templates/harness.schema.json` 为 IDE 提供补全和字段说明,运行时仍由 Zod schema 校验。
207
+ - **repo-local skills**:目标项目本地 skills 统一放在 `.agents/skills/`,便于项目定制 agent 行为并让外部 agent 自动发现。DAG skill 解析顺序为:用户配置目录 → `.agents/skills/` → 发布包内置 `skills/`。
208
+ - **可选 SDD skill 嵌入**:如果目标项目在 `.agents/skills/` 中提供 `SDD-requirement-analysis`、`SDD-design-analysis`、`SDD-implementation-test-review`,`dag run-task` 会把它们作为知识与方法补充追加到对应的 Contract、Plan、Implement/Repair、Verify、Review 节点。loop-agent 仍控制 DAG、状态、写入边界、验证和收口;不会自动运行 SDD 初始化/扫描 skill,也不会推进 `ai_workspace` 状态或归档。没有这些 repo-local skills 时,生成结果保持原有默认流程。
209
+ - **run-owned skill snapshot**:新 DAG run 会在任何节点执行前,把本次实际注入 prompt 的 resolved skill profiles 冻结到 run 自己的 `.runtime/skill-snapshot.json`。后续节点、dynamic child、approve/resume 都使用同一份 hash-anchored snapshot;run 内修改 skill 只会从下一次 run 生效。
210
+ - **controller identity**:`agent-worker` 把一次 Feature/batch 实际使用的发布包、入口、启动参数和 package 内容 fingerprint 固定下来,并把 identity 传播到 Worker、Task Pool、batch/Feature 与最终验证证据。
211
+ - **只读 Pi 节点安全重试**:仅 planner/scout/reviewer/verifier/closeout 这类没有仓库写入能力的 Pi 节点,遇到模型连接中断、provider 限流、临时不可用或 timeout 时,可在同一 run 内有界重试;生成模板会自动声明默认 `retryPolicy`(总尝试 3 次、最多可配置 5 次、指数退避、单次等待上限 30s)。每次 attempt 保留独立证据,耗时与 Token 用量按尝试聚合,后一次成功不覆盖前一次失败证据。`quota`/`auth`/`invalid-output`/`write-guard` 与未知失败不重试;supervisor、implementer、writer、dynamic、shell、static、docs-only、decision-gate 节点不重试。
212
+ - **`agent-worker` operator skill**:`skills/agent-worker/` 只负责 Feature Packet、TaskSpec、Task Pool、自举 release train 和失败恢复的外层路由;单个 DAG 实现、DAG kernel 修复和节点执行仍由 `loop-agent` 负责,该 skill 不进入默认 DAG role skills。
213
+ - **治理文档**:`docs/` 保存原则、工作流、验证矩阵、runtime 边界、计划和报告。
214
+ - **shell verification**:完成声明必须有可复现命令作为依据,而不是只靠聊天结论。
215
+
216
+ 这些治理原则的设计思想吸收了 Anthropic 长时运行 agent harness、OpenAI Codex harness engineering、腾讯端到端 Harness Engineering 和社区 agent harness 实践:人类掌舵,智能体执行;仓库作为记录系统;任务小步推进;用结构化 handoff 与可复现验证跨 session 保持连续性。背景资料收录在 `website/docs/practices/`。
217
+
218
+ ## 仓库地图
219
+
220
+ 本仓库按职责分区;更细的开工协议与会话规则见 `AGENTS.md`,治理索引见 `docs/README.md`。
221
+
222
+ | 路径 | 职责 |
223
+ |---|---|
224
+ | `bin/`、`src/` | CLI 入口与运行时代码 |
225
+ | `skills/` | repo-local skill 指令与 references |
226
+ | `.harness/` | task、DAG run、cache、live state 等运行态事实 |
227
+ | `docs/` | 长期治理文档、计划、报告与模板 |
228
+ | `website/` | 面向使用者的文档站 |
229
+ | `scripts/`、`test/` | 验证脚本与测试套件 |
230
+ | `examples/` | 可复制 DAG 示例(默认不投影到目标项目) |
231
+ | `features/`、`dogfood/` | 样板 Feature Packet 与 dogfood 样本(本仓库维护用) |
232
+ | `harness.json`、`AGENTS.md`、`CONTEXT.md` | 项目配置、agent 开工地图与术语表 |
233
+
234
+ ## 能力概览
235
+
236
+ - 生成、校验、执行和汇总 Agent DAG。
237
+ - 通过 `eval replay` / `eval report` 对 completed DAG evidence 做 hash-anchored、deterministic 的只读重放比较;M1 不执行模型也不授权候选晋升。
238
+ - 通过 `eval candidate register|show|list|transition` 管理不可变 Candidate Bundle 与 append-only lifecycle(M2 registry MVP);不跑 live Pi/DAG,不移动 incumbent alias。
239
+ - 从任务说明生成标准 DAG,并按依赖顺序运行规划、实现、验证和收口节点。
240
+ - 维护 `loop` 长程任务状态,包括目标、轮次、信号、验证事实和收口草稿。
241
+ - 通过 Pi executor 执行只读规划、评审、诊断和有边界写入(唯一受治理 Agent writer)。
242
+ - 保留 `cursor-prompt` 作为显式、手工触发的 one-shot sidecar(不是受治理 DAG/Loop writer)。
243
+ - 通过 shell executor 运行确定性的验证命令。
244
+ - 检查任务状态、运行态工件、文档链接、skill entry 和 runtime boundary 等治理规则。
245
+
246
+ ## 内置示例
247
+
248
+ `examples/` 默认不复制到目标项目。可以通过工具内置命令查看或按需复制:
249
+
250
+ ```bash
251
+ loop-agent examples list
252
+ loop-agent examples show example-dag.json
253
+ loop-agent examples copy example-dag.json --repo-root <target-repo>
254
+ ```
255
+
256
+ ## 迭代本仓库
257
+
258
+ 如果要用 loop-agent 迭代 loop-agent 本仓库,发布版本 N 必须作为整个维护批次的固定 controller,候选版本 N+1 只能在隔离安装槽中接受接棒验证。不要使用当前工作区的 `npm link` 或 `npm run dev` 作为 controller;首次安装或有意升级可用 `@latest`,但一次自举任务启动后不要中途升级或重新通过 PATH 解析入口。
259
+
260
+ ```bash
261
+ npm install -g @tea-agent/loop-agent@latest
262
+ npm list -g @tea-agent/loop-agent --depth=0
263
+ loop-agent doctor
264
+ loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <repo-root>
265
+ ```
266
+
267
+ `@latest` 只用于安装或升级,不要在 DAG 节点里反复用 `npx @latest` 拉取。自举证据应记录 controller version、portable package fingerprint、候选 commit/tarball hash 和失败 run;semver 相同并不代表 package 内容相同。
268
+
269
+ 源码仓库提供 repo-maintainer deterministic takeover canary。它打包候选、安装到临时隔离 slot,由维护脚本独立计算 canonical package fingerprint 并与候选实现交叉核对,再通过候选包内两个绝对入口执行 full init、doctor、inspect、docs audit、目标项目治理检查、Feature validation/dry-run 和一个只含 static/shell executor 的小型 DAG;所有子进程都有硬超时,PATH trap 证明没有回退全局 `loop-agent` / `agent-worker` 命令,run evidence 则证明没有观察到 Pi/model executor:
270
+
271
+ ```bash
272
+ npm run self-host:canary -- --deterministic --output <evidence.json>
273
+ # 或验证已经构建好的候选 tarball
274
+ npm run self-host:canary -- --deterministic --tarball <candidate.tgz> --output <evidence.json>
275
+ ```
276
+
277
+ 该脚本属于源码仓库维护入口,不进入发布包的 `files` surface;`--live` 当前明确拒绝执行。deterministic canary 证明候选包和 static/shell runtime 能接棒,但不会调度 Pi executor,也不承担 Pi skill source 解析证明;run-owned skill snapshot 的候选包解析由 snapshot 定向测试和真实 DAG 证据单独证明。
278
+
279
+ ## 文档导航
280
+
281
+ | 路径 | 用途 |
282
+ |---|---|
283
+ | `AGENTS.md` | 本仓库的 agent 开工协议、会话协议和长期工作规则 |
284
+ | `harness.json` | loop-agent 在本仓库的模型、executor、治理根目录和脚本配置 |
285
+ | `docs/README.md` | 治理文档索引 |
286
+ | `docs/verification-matrix.md` | 不同变更类型对应的验证命令 |
287
+ | `docs/production-readiness.md` | Production Readiness v0.1 支持范围、证据和验收标准 |
288
+ | `docs/architecture/runtime-boundaries.md` | runtime 层边界和依赖方向 |
289
+ | `skills/loop-agent/` | loop-agent skill 入口和 references |
290
+ | `examples/` | 可复用 DAG 示例 |
291
+ | `website/docs/` | 面向使用者的 Docusaurus 文档站内容 |
292
+ | `website/docs/practices/` | Anthropic、OpenAI Codex、腾讯端到端工程与社区 harness 实践资料 |
293
+
294
+ ## 本仓库开发
295
+
296
+ 本地源码开发:
297
+
298
+ ```bash
299
+ npm install
300
+ npm run build
301
+ node bin/loop-agent.js --help
302
+ npm run dev -- --help
303
+ ```
304
+
305
+ 常用验证命令:
306
+
307
+ ```bash
308
+ npm run typecheck
309
+ npm test
310
+ bash scripts/check-repo.sh
311
+ bash scripts/ci.sh
312
+ npm run docs:build
313
+ ```
314
+
315
+ 当前 CLI 使用 `commander` 组织 command tree。顶层 help、子命令 help、参数解析和未知命令错误都由 commander 驱动。
316
+
317
+ Windows 上运行 `scripts/*.sh` 时使用 Git Bash 或已配置的兼容 Bash,不要求使用 WSL 或 POSIX 路径。实际文件操作和 `--output` / `--dag` / `--cwd` 参数使用当前平台原生路径;仓库内引用、JSON/Markdown 证据引用和 glob 约定可继续用 `/` 作为稳定分隔符。
318
+
319
+ ## 发布包内容
320
+
321
+ 发布包包含静态运行和指导资料:`bin/`、`dist/`、`skills/`(包括 `loop-agent` 与可选的 `agent-worker` operator skill)、`docs/*.md`、`docs/architecture/runtime-boundaries.md`、`docs/skills/`、`docs/templates/`、`docs/init-surface.manifest.json`、`examples/`、`harness.json`、`AGENTS.md`、`README.md` 和 `CHANGELOG.md`。
322
+
323
+ `docs/progress/`、`docs/reports/`、`docs/exec-plans/`、`docs/decisions/` 等目录下的任务正文是目标仓库实时生成或历史事实;npm 包只携带这些目录的 README,不携带本仓库已有历史记录。
324
+
325
+ DAG skill 指令优先从用户配置目录和目标项目 `.agents/skills/` 解析;目标项目未提供本地 skill 时,CLI 会回退到 npm 包内置的 `skills/`。因此普通项目不需要复制 loop-agent 仓库历史文档或根 `skills/` 目录才可获得默认 DAG 能力。
326
+
327
+ ## 发布前检查
328
+
329
+ 发布 npm 包前至少运行:
330
+
331
+ ```bash
332
+ npm run typecheck
333
+ npm test
334
+ npm run build
335
+ node bin/loop-agent.js --help
336
+ npm pack --dry-run
337
+ ```
338
+
339
+ 发布入口 `bin/loop-agent.js` 只加载 `dist/cli.js`;`npm run dev -- <args>` 只用于源码开发和定位问题。