@tea-agent/loop-agent 0.12.0 → 0.13.0-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 (284) hide show
  1. package/AGENTS.md +155 -153
  2. package/CHANGELOG.md +338 -265
  3. package/README.md +345 -298
  4. package/bin/agent-worker.js +22 -22
  5. package/bin/loop-agent.js +21 -21
  6. package/dist/application/dag/generate-task-dag.js +28 -28
  7. package/dist/application/evaluation/candidate-hash.js +75 -0
  8. package/dist/application/evaluation/candidate.js +52 -0
  9. package/dist/application/evaluation/replay.js +289 -0
  10. package/dist/application/evaluation/types.js +130 -0
  11. package/dist/cli/command-definitions.js +27 -7
  12. package/dist/cli/program.js +8 -4
  13. package/dist/commands/cursor-prompt.js +6 -6
  14. package/dist/commands/eval.js +235 -0
  15. package/dist/commands/init.js +544 -506
  16. package/dist/commands/knowledge.js +129 -31
  17. package/dist/commands/loop-benchmark.js +11 -11
  18. package/dist/commands/pi-reuse-benchmark.js +16 -16
  19. package/dist/executors/pi-sdk-executor.js +38 -24
  20. package/dist/executors/shell-executor.js +34 -2
  21. package/dist/executors/shell-presets.js +20 -0
  22. package/dist/executors/shell-verification.js +7 -0
  23. package/dist/governance/manifest-types.js +4 -0
  24. package/dist/infrastructure/evaluation/candidate-store.js +435 -0
  25. package/dist/infrastructure/evaluation/store.js +40 -0
  26. package/dist/sidecars/cursor-prompt/executor.js +1 -1
  27. package/dist/task/config-types.js +28 -1
  28. package/dist/task/runtime.js +27 -27
  29. package/dist/worker/cli.js +96 -1
  30. package/dist/worker/delivery/package.js +3 -3
  31. package/dist/worker/feature/decision-loader.js +37 -6
  32. package/dist/worker/feature/next-action.js +10 -2
  33. package/dist/worker/feature/ready-plan-projection.js +81 -0
  34. package/dist/worker/feature/reducer.js +2 -1
  35. package/dist/worker/feature/review.js +19 -2
  36. package/dist/worker/feature/run.js +27 -2
  37. package/dist/worker/follow-up/approve.js +5 -2
  38. package/dist/worker/follow-up/factory.js +1 -1
  39. package/dist/worker/observability/read-model.js +246 -41
  40. package/dist/worker/observe/routes.js +173 -15
  41. package/dist/worker/observe/spec-evidence.js +281 -0
  42. package/dist/worker/observe/static/api.js +46 -27
  43. package/dist/worker/observe/static/app.js +150 -150
  44. package/dist/worker/observe/static/constants.js +148 -148
  45. package/dist/worker/observe/static/copy.js +67 -67
  46. package/dist/worker/observe/static/dag-helpers.js +172 -172
  47. package/dist/worker/observe/static/dag-layout.d.ts +31 -31
  48. package/dist/worker/observe/static/dag-layout.js +83 -83
  49. package/dist/worker/observe/static/dag-model.js +72 -72
  50. package/dist/worker/observe/static/dom.js +61 -61
  51. package/dist/worker/observe/static/format-pool.js +67 -67
  52. package/dist/worker/observe/static/format.js +292 -292
  53. package/dist/worker/observe/static/index.html +308 -308
  54. package/dist/worker/observe/static/kpi.js +94 -94
  55. package/dist/worker/observe/static/relations.js +133 -128
  56. package/dist/worker/observe/static/router.js +93 -85
  57. package/dist/worker/observe/static/run-processing.js +148 -148
  58. package/dist/worker/observe/static/shell-chrome.js +68 -68
  59. package/dist/worker/observe/static/state.js +253 -253
  60. package/dist/worker/observe/static/styles.css +1902 -1890
  61. package/dist/worker/observe/static/views/batch.js +227 -226
  62. package/dist/worker/observe/static/views/dag-graph.js +172 -172
  63. package/dist/worker/observe/static/views/dag-inspector.js +607 -477
  64. package/dist/worker/observe/static/views/dag.js +362 -362
  65. package/dist/worker/observe/static/views/dashboard.js +445 -442
  66. package/dist/worker/observe/static/views/failures.js +143 -143
  67. package/dist/worker/observe/static/views/feature.js +492 -453
  68. package/dist/worker/observe/static/views/pool.js +350 -347
  69. package/dist/worker/observe/static/views/run.js +453 -453
  70. package/dist/worker/observe/static/views/session-timeline.js +205 -205
  71. package/dist/worker/observe/static/views/shell.js +7 -7
  72. package/dist/worker/observe/static/views/task.js +314 -260
  73. package/dist/worker/observe/static/views/timeline.js +163 -163
  74. package/dist/worker/pool/doctor.js +165 -0
  75. package/dist/worker/pool/migrate-state.js +303 -0
  76. package/dist/worker/pool/run-store.js +205 -17
  77. package/dist/worker/pool/types.js +17 -1
  78. package/dist/worker/pool/validation.js +100 -15
  79. package/dist/worker/report/morning-report.js +12 -2
  80. package/dist/worker/runner/run-ready.js +41 -26
  81. package/dist/worker/task-graph/ready-planner.js +136 -0
  82. package/dist/workflows/dag/backend-test-analysis-contract.js +120 -0
  83. package/dist/workflows/dag/canvas-observer.js +275 -275
  84. package/dist/workflows/dag/convergence/controller.js +16 -8
  85. package/dist/workflows/dag/dynamic-runtime/map.js +90 -2
  86. package/dist/workflows/dag/failure-routing.js +12 -1
  87. package/dist/workflows/dag/init-hybrid.js +2404 -360
  88. package/dist/workflows/dag/node-execution.js +9 -0
  89. package/dist/workflows/dag/prompt.js +9 -0
  90. package/dist/workflows/dag/report.js +35 -1
  91. package/dist/workflows/dag/runner.js +28 -2
  92. package/dist/workflows/dag/task-demand-routing.js +383 -0
  93. package/dist/workflows/dag/types.js +51 -13
  94. package/dist/workflows/dag/upstream-artifacts.js +1 -0
  95. package/dist/workflows/dag/validate.js +59 -1
  96. package/docs/README.md +106 -104
  97. package/docs/agent-dag-recovery-playbook.md +195 -184
  98. package/docs/agent-dag-runner.md +67 -67
  99. package/docs/architecture/README.md +26 -26
  100. package/docs/architecture/dag-execution.md +140 -140
  101. package/docs/architecture/evolution.md +54 -53
  102. package/docs/architecture/facts-and-state.md +71 -58
  103. package/docs/architecture/runtime-boundaries.md +191 -191
  104. package/docs/architecture/system-overview.md +93 -93
  105. package/docs/architecture/worker-and-feature.md +85 -81
  106. package/docs/cursor-prompt-sidecar.md +36 -36
  107. package/docs/decisions/README.md +18 -15
  108. package/docs/design/README.md +167 -77
  109. package/docs/development-principles.md +73 -73
  110. package/docs/exec-plans/README.md +6 -6
  111. package/docs/exec-plans/active/README.md +15 -9
  112. package/docs/exec-plans/completed/README.md +85 -73
  113. package/docs/feature-workflow.md +389 -261
  114. package/docs/harness-methodology-debugging.md +153 -153
  115. package/docs/harness-methodology-tdd.md +130 -130
  116. package/docs/harness-methodology-verification.md +27 -27
  117. package/docs/init-surface.manifest.json +289 -280
  118. package/docs/loop-agent-harness.md +142 -130
  119. package/docs/production-readiness.md +96 -96
  120. package/docs/progress/README.md +64 -54
  121. package/docs/reports/README.md +117 -94
  122. package/docs/skills/README.md +7 -7
  123. package/docs/skills/vetted-skill-registry.md +29 -27
  124. package/docs/templates/adr.md +60 -60
  125. package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
  126. package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
  127. package/docs/templates/agent-dag-decision-gate-dogfood-report.md +117 -117
  128. package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
  129. package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
  130. package/docs/templates/agent-dag-report.schema.json +473 -473
  131. package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
  132. package/docs/templates/agent-dag.base.json +190 -190
  133. package/docs/templates/agent-dag.final-verification.json +185 -185
  134. package/docs/templates/agent-dag.schema.json +411 -383
  135. package/docs/templates/agent-dag.supervised-implementation.json +501 -501
  136. package/docs/templates/backend-test-analysis.schema.json +44 -0
  137. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +202 -139
  138. package/docs/templates/backend-test-dag.json +311 -276
  139. package/docs/templates/backend-test-dag.retrospect.prompt.md +125 -125
  140. package/docs/templates/backend-test-dag.review-cases.prompt.md +81 -81
  141. package/docs/templates/exec-plan.md +64 -64
  142. package/docs/templates/feature-spec.md +53 -53
  143. package/docs/templates/frontend-design-contract.md +42 -33
  144. package/docs/templates/frontend-task-constraints.md +35 -25
  145. package/docs/templates/frontend-task-requirement.md +70 -61
  146. package/docs/templates/frontend-test-dag.generate-cases.prompt.md +5 -0
  147. package/docs/templates/frontend-test-dag.json +23 -0
  148. package/docs/templates/frontend-test-dag.retrieve-context.prompt.md +3 -0
  149. package/docs/templates/frontend-test-dag.retrospect.prompt.md +3 -0
  150. package/docs/templates/frontend-test-dag.review-cases.prompt.md +3 -0
  151. package/docs/templates/frontend-test-dag.review-execution.prompt.md +3 -0
  152. package/docs/templates/harness.schema.json +221 -221
  153. package/docs/templates/hybrid-dag.json +188 -188
  154. package/docs/templates/init-evolution-review.md +35 -35
  155. package/docs/templates/interactive-ui-round2-experiment.md +66 -66
  156. package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -0
  157. package/docs/templates/knowledge-sync-dag.json +178 -0
  158. package/docs/templates/knowledge-sync-draft.schema.json +71 -0
  159. package/docs/templates/product-line/AGENTS.md +8 -8
  160. package/docs/templates/product-line/README.md +9 -9
  161. package/docs/templates/product-line/acceptance.yaml +14 -14
  162. package/docs/templates/product-line/closeout.yaml +9 -9
  163. package/docs/templates/product-line/design.md +13 -13
  164. package/docs/templates/product-line/links.md +10 -10
  165. package/docs/templates/product-line/requirement.md +17 -17
  166. package/docs/templates/product-line/task-graph.yaml +15 -15
  167. package/docs/templates/product-line/task.yaml +64 -64
  168. package/docs/templates/product-line/test-plan.md +7 -7
  169. package/docs/templates/production-readiness-checklist.md +57 -57
  170. package/docs/templates/progress-log.md +17 -17
  171. package/docs/templates/project-start-checklist.md +9 -9
  172. package/docs/templates/qa-report.md +48 -48
  173. package/docs/templates/sprint-contract.md +29 -29
  174. package/docs/templates/worker-dogfood-evidence.md +80 -80
  175. package/docs/templates/worker-dogfood-setup.md +68 -68
  176. package/docs/verification-matrix.md +70 -66
  177. package/examples/decision-gate-agent-dag.json +177 -177
  178. package/examples/example-dag.json +46 -46
  179. package/examples/hybrid-loop-agent-dag.json +189 -189
  180. package/harness.json +66 -66
  181. package/package.json +88 -46
  182. package/scripts/check-product-line-docs.sh +29 -29
  183. package/scripts/check-task-pool-root.sh +32 -32
  184. package/scripts/kb-bootstrap-init-skeleton.sh +240 -0
  185. package/scripts/kb-graph-incremental-prepare.mjs +386 -0
  186. package/scripts/kb-graph-incremental-prepare.sh +5 -0
  187. package/scripts/kb-graph-materialize.mjs +105 -0
  188. package/scripts/kb-graph-materialize.sh +4 -0
  189. package/scripts/kb-graph-promote.mjs +164 -0
  190. package/scripts/kb-graph-promote.sh +4 -0
  191. package/scripts/kb-query.mjs +554 -0
  192. package/scripts/kb-query.sh +5 -0
  193. package/skills/agent-worker/SKILL.md +39 -37
  194. package/skills/agent-worker/references/agent-worker-operator.md +60 -43
  195. package/skills/ai-engineering-context/SKILL.md +48 -48
  196. package/skills/analyze-product-dependencies/SKILL.md +67 -0
  197. package/skills/analyze-product-dependencies/agents/openai.yaml +4 -0
  198. package/skills/analyze-product-dependencies/references/api-documentation-schema.md +30 -0
  199. package/skills/analyze-product-dependencies/references/dependency-analysis-schema.md +28 -0
  200. package/skills/analyze-product-dependencies/references/example.md +76 -0
  201. package/skills/analyze-product-dependencies/references/forward-test-cases.md +35 -0
  202. package/skills/analyze-product-dependencies/references/input-contract.md +11 -0
  203. package/skills/analyze-product-dependencies/references/scouting-rules.md +61 -0
  204. package/skills/analyze-product-dependencies/scripts/test-validators.mjs +267 -0
  205. package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +101 -0
  206. package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +142 -0
  207. package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +76 -0
  208. package/skills/analyze-product-dependencies/scripts/validation-helpers.mjs +146 -0
  209. package/skills/analyze-product-requirements/SKILL.md +90 -0
  210. package/skills/analyze-product-requirements/agents/openai.yaml +4 -0
  211. package/skills/analyze-product-requirements/references/acceptance-criteria.md +91 -0
  212. package/skills/analyze-product-requirements/references/clarification-and-knowledge.md +56 -0
  213. package/skills/analyze-product-requirements/references/example.md +86 -0
  214. package/skills/analyze-product-requirements/references/forward-test-cases.md +66 -0
  215. package/skills/analyze-product-requirements/references/product-analysis-schema.md +32 -0
  216. package/skills/analyze-product-requirements/references/product-requirement-schema.md +33 -0
  217. package/skills/analyze-product-requirements/references/requirement-clarification-schema.md +35 -0
  218. package/skills/analyze-product-requirements/scripts/test-validators.mjs +193 -0
  219. package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +69 -0
  220. package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +97 -0
  221. package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +98 -0
  222. package/skills/analyze-product-requirements/scripts/validation-helpers.mjs +156 -0
  223. package/skills/code-review-core/SKILL.md +20 -20
  224. package/skills/codebase-scout/SKILL.md +19 -19
  225. package/skills/frontend-design-review/SKILL.md +66 -59
  226. package/skills/frontend-design-review/references/review-checklist.md +58 -37
  227. package/skills/frontend-implementation/SKILL.md +47 -51
  228. package/skills/frontend-implementation/references/code-standards.md +32 -34
  229. package/skills/frontend-implementation/references/design-spec.md +46 -46
  230. package/skills/frontend-implementation/references/node-contracts.md +76 -32
  231. package/skills/frontend-review/SKILL.md +59 -53
  232. package/skills/frontend-review/references/review-findings.md +47 -42
  233. package/skills/frontend-verification/SKILL.md +53 -40
  234. package/skills/frontend-verification/references/verification-checklist.md +68 -56
  235. package/skills/grill-me/SKILL.md +10 -10
  236. package/skills/grill-with-docs/SKILL.md +88 -88
  237. package/skills/grill-with-docs/adr-format.md +47 -47
  238. package/skills/grill-with-docs/context-format.md +60 -60
  239. package/skills/init-capability-evolution/SKILL.md +70 -70
  240. package/skills/loop-agent/SKILL.md +151 -151
  241. package/skills/loop-agent/references/README.md +67 -67
  242. package/skills/loop-agent/references/command-reference.md +505 -452
  243. package/skills/loop-agent/references/docs-converge.md +126 -126
  244. package/skills/loop-agent/references/harness-policy.md +263 -263
  245. package/skills/loop-agent/references/hybrid-dag.md +238 -233
  246. package/skills/loop-agent/references/learned/README.md +21 -21
  247. package/skills/loop-agent/references/long-running-loop.md +57 -57
  248. package/skills/loop-agent/references/model-routing.md +36 -36
  249. package/skills/loop-agent/references/multi-worktree.md +54 -54
  250. package/skills/loop-agent/references/one-shot-runs.md +85 -85
  251. package/skills/loop-agent/references/orchestrator-and-interventions.md +169 -169
  252. package/skills/loop-agent/references/pi-prompt.md +23 -23
  253. package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
  254. package/skills/loop-agent/references/post-implementation-and-patterns.md +44 -44
  255. package/skills/loop-agent/references/task-workflow.md +89 -89
  256. package/skills/loop-agent/references/verification-and-failure-handling.md +139 -139
  257. package/skills/playwright-cli/SKILL.md +420 -0
  258. package/skills/playwright-cli/references/element-attributes.md +23 -0
  259. package/skills/playwright-cli/references/playwright-tests.md +39 -0
  260. package/skills/playwright-cli/references/request-mocking.md +87 -0
  261. package/skills/playwright-cli/references/running-code.md +241 -0
  262. package/skills/playwright-cli/references/session-management.md +225 -0
  263. package/skills/playwright-cli/references/storage-state.md +275 -0
  264. package/skills/playwright-cli/references/test-generation.md +433 -0
  265. package/skills/playwright-cli/references/tracing.md +139 -0
  266. package/skills/playwright-cli/references/video-recording.md +143 -0
  267. package/skills/playwright-cli-case-generator/SKILL.md +74 -0
  268. package/skills/requesting-code-review/SKILL.md +101 -101
  269. package/skills/requesting-code-review/code-reviewer.md +168 -168
  270. package/skills/systematic-debugging/CREATION-LOG.md +119 -119
  271. package/skills/systematic-debugging/SKILL.md +296 -296
  272. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
  273. package/skills/systematic-debugging/condition-based-waiting.md +115 -115
  274. package/skills/systematic-debugging/defense-in-depth.md +122 -122
  275. package/skills/systematic-debugging/find-polluter.sh +63 -63
  276. package/skills/systematic-debugging/root-cause-tracing.md +169 -169
  277. package/skills/systematic-debugging/test-academic.md +14 -14
  278. package/skills/systematic-debugging/test-pressure-1.md +58 -58
  279. package/skills/systematic-debugging/test-pressure-2.md +68 -68
  280. package/skills/systematic-debugging/test-pressure-3.md +69 -69
  281. package/skills/test-driven-development/SKILL.md +20 -20
  282. package/skills/using-git-worktrees/SKILL.md +215 -215
  283. package/skills/verification-before-completion/SKILL.md +154 -154
  284. package/skills/webapp-testing/SKILL.md +19 -19
package/CHANGELOG.md CHANGED
@@ -1,265 +1,338 @@
1
- # 更新日志
2
-
3
- 这里记录每个版本对使用者有影响的变化。命令名和配置字段保持原样,其余内容尽量用日常语言说明。
4
-
5
- ## [Unreleased]
6
-
7
- ## [0.12.0] - 2026-07-16
8
-
9
- ### 新增
10
-
11
- - 只读 Pi DAG 节点支持 opt-in 安全重试:仅 planner/scout/reviewer/verifier/closeout 角色且无写入能力的 Pi 节点可声明 `retryPolicy`,在同一 run 内重试模型连接中断(`network`)、provider 限流(`rate-limit`)、临时不可用(`unavailable`)或请求 timeout。生成模板默认总尝试 3 次,手工配置最多 5 次,并使用有上限的指数退避。每次 attempt 保留独立证据,节点耗时、Token 与事件数按尝试聚合;后一次成功不会覆盖前一次失败证据。`quota`、`auth`、`invalid-output`、`write-guard` 与未知失败不重试;supervisor、implementer、writer、dynamic、shell、static、docs-only、decision-gate 节点声明策略会在校验阶段失败。未声明策略的历史 DAG 不新增 attempt artifact,行为保持不变。
12
- - 新增 `taskKind: "backend-test"` 专用 DAG:从需求分析开始,生成并评审后端功能用例,再生成和执行 pytest 自动化,最后产出测试复盘报告;新 DAG 沿用当前 Pi-only runtime、版本化 runtime contract 与既有执行恢复机制。
13
-
14
- ### 修复
15
-
16
- - `loop-agent init check-update` / `init update --apply-safe` 漏检初始化投影文件:fresh `init --profile full` 通过目录复制把整个 `docs/templates/` 与 `skills/`(镜像到 `.agents/skills/`)投影到目标项目,但期望 init surface 只跟踪其中一个子集。旧版本(如 0.11.0)初始化的项目升级 controller 后,缺失的 backend-test 模板、agent-dag schema/prompt、`loop-agent` 必需 references 等文件无法被报告或补齐,`check-update` 会错误返回 `ok: true`。现在期望 surface 会自动发现包内 `docs/templates/` 与 `skills/` 的所有文件并纳入校验;`check-update` 会报告全部缺失/陈旧 surface;`apply-safe` 会确定性补齐缺失文件,对无法证明 ownership 的旧文件仍保持 fail-safe(给出 model merge / human decision,不覆盖用户内容)。`scripts/check-init-surface.sh` 新增 drift 门,阻止“fresh init 会复制、surface 却不跟踪”的漂移。
17
-
18
- ## [0.11.0] - 2026-07-15
19
-
20
- ### 新增
21
-
22
- - 受治理 DAG repair 环节改为显式声明:`shell.repairArtifactGate` 新增 `repairNodeId`,新生成的 supervised DAG 会直接写明由哪个 Pi 修复节点承接 supervisor 的修订请求;旧 DAG 未声明时,只有在能唯一、安全地推导出下游 Pi 修复节点时才继续兼容,缺失、歧义或修复节点不满足受治理写入契约都会在执行前明确报错。
23
- - 新生成的 DagSpec 升级为 `version: 3`,并携带必需的 `runtimeContract`(`agentRuntime` / `repairWriterProtocol` / 可选最低 controller 版本)。旧 controller 会因不认识 v3 而在解析阶段拒绝,新 controller 则在 `dag validate`、执行和 resume 前检查 capability 与最低版本,避免版本漂移运行到中途才失败;legacy v1/v2 DAG 继续可读。
24
- - 每个新的 DAG run 必须把实际执行的 controller identity(package version、binary SHA-256、portable fingerprint)冻结为 run-owned 事实并记录内容哈希;identity 无法解析时不创建 run。`dag report` 会展示 identity 与 runtime-contract compatibility,resume 时重新校验;身份漂移、artifact 篡改或 legacy-unpinned run 都会拒绝继续。
25
- - Observe R5:控制台前端拆为原生 ES modules(router/api/format/state/views 等),`app.js` 作轻量入口并 re-export 可测 API;统一 loading/empty/degraded/error 状态 helper;资源池支持可分享的 hash 筛选(`status`/`q`);不引入框架或构建器,R1–R4 路由/API/行为保持。
26
- - Observe R4:Batch/Pool 有界事件历史 `GET /api/batches/:batchRunId/events` `GET /api/events`(默认 limit 50、硬顶 200,opaque `cursor`/`nextCursor`,与 SSE/run 整数 `after` 分离);服务端尾部有界 JSONL 扫描;snapshot 事件归约容量硬顶并暴露 `projectionWarnings`;Pool 投影失败 fault-first,避免健康零值 KPI。
27
- - Observe R3:`#/feature/:featureId` 决策详情(状态、AC 覆盖、blocking、risk、follow-ups、evidence、projectionWarnings);总览 Feature 可下钻;Feature/Task/Batch/Run/DAG 统一对象关系条,仅 snapshot 可证对象出链;建议命令仅可复制,与已执行事实分区。
28
- - Observe R2:Batch 详情展示完整 summary(含 additive `recordErrors?`/`runErrors?`)、派生总耗时、Task 诊断列(失败分类、follow-up、harnessTaskId、起止)与页内安全 artifact preview;Worker Run 收敛为「主事实 / 执行过程 / 诊断证据」三层,Task/Batch/DAG 深链仅在 canonical 字段且 snapshot 命中时生成。`TaskSummary.batchRunId?` 对外保留。
29
- - Observe R1:顶栏「资源池」与 `#/pool` 盘点当前 Worker Task(状态分布、最新 run、更新时间、失败分类);`#/task/:taskId` 下钻当前事实、真实关联 batch/run/DAG、失败证据与有界 run history(`GET /api/tasks/:taskId/runs`,limit/cursor,`retryOfWorkerRunId`)。`TaskSummary` additive `updatedAt?`;snapshot additive `taskPool.present` 区分未使用与空池。
30
- - 新增版本更新提醒。发现新版本时可以直接确认升级;忽略某个版本后不会重复提醒,后续新版本仍会正常提示。可用 `LOOP_AGENT_DISABLE_UPDATE_CHECK=1` 关闭检查。
31
- - 新增 `loop-agent plan create`、`plan complete` 和 `plan check`,统一维护执行计划及其索引,并在生成 DAG 前发现遗漏或不一致。
32
- - 目标项目可以选择复用本地 SDD skills,为需求、设计、实现和评审节点补充方法指引;未安装时保持原有流程。
33
- - 新增 `docs/architecture/` 全景、DAG 执行、Worker/Feature、运行态事实与演进五篇主题文档及目录索引,并在 npm package(不投影到 init)内可达。
34
- - Worker DAG 运行会固定本次使用的 loop-agent 版本与 skill 配置,避免执行过程中因环境变化产生不一致结果。
35
- - 新增 `npm run self-host:canary -- --deterministic`,可在隔离环境中检查候选发布包是否能够接管常用 CLI、初始化和 DAG 流程。
36
- - 新增可选的 `agent-worker` skill,为 Feature、Task、交付和失败恢复提供统一的操作指引。
37
- - 文档站新增功能导览、架构导读与当前规划入口,并把文档收敛检查固化到 `skills/loop-agent`,减少站上文档与仓库治理文档漂移。
38
- - 前端 DAG repo-local skills 补齐节点输入、输出、证据和失败规则;前端规范会优先查知识库,失败时回退到当前项目 `openSpec/`。
39
- - 目标项目旧布局迁移:`init check-update`(只读)报告旧根 `docs/` / `skills/` 可安全迁移的 loop-agent owned 文件、空目录和 `harness.json` 中已废弃的模型字段;`init update --apply-safe` 迁移确认未修改的文件、清理空目录并清理废弃字段,本地修改过、来源不明或目标冲突的文件只进入人工决策,不会被覆盖或删除。
40
-
41
- ### 变更
42
-
43
- - `observe serve` 提高对外访问稳定性:HTTP keep-alive 默认约 65s(避免 Node 5s 默认导致连接池复用失败),SSE 增加 keepalive comment 与 `X-Accel-Buffering: no`;新增 `--debug` 在 stderr 打印请求来源/方法/路径/状态/耗时。
44
- - `observe serve` 允许显式绑定非 loopback 地址(如 `--host 0.0.0.0`)以便局域网访问;默认仍是 `127.0.0.1`,非本机绑定时会在 stderr 提示无鉴权风险。
45
- - README 在「核心概念」后增加极简「仓库地图」,方便一眼区分 `src/`、`skills/`、`.harness/`、`docs/` 等职责;细节仍以 `AGENTS.md` `docs/README.md` 为准。
46
- - 文档治理收敛:站上「当前规划」与 active plan 同步(无进行中计划时明确写出);`docs/README` 只索引核心契约与产物目录入口,progress/report 全量列表下沉到子目录 README;Dynamic Workflow 路线图迁入 `docs/design/`;补齐 design 漏索引与 DAG recovery playbook 入口。
47
- - 活文档校准:Dynamic Workflow 路线图页首标明已落地 vs 设计输入(Pi-only);六个月规划第 1–2 月改为 archive/reports 指针;`repository-analysis` 冻结为基线快照,新增 `docs/reports/current-capability-summary.md`;落地 ADR 0001–0003(Pi-only、Task Pool 根、双树/docs-converge)。
48
- - 统一 Feature Packet 的推荐目录和中文说明,相关检查同时兼容现有产品线目录。
49
- - 目标项目初始化布局收敛:默认把 loop-agent 治理资料生成到 `ai_workspace/loop-agent/`,不再在目标项目根生成 `docs/`;`--profile full` 只把 repo-local skills 写到 `.agents/skills/`,不再生成根 `skills/`。
50
- - `new-task` 不再预种 L1 空报告模板(`分析报告.md` / `实现计划.md` / `复盘报告.md`);任务 `artifacts/` 默认只保留 `修改记录.md` 与 `验证结果.md`,由 `promote-run` 从 completed run 回填。
51
- - 运行期间修改 skill 不会影响当前任务,新配置会从下一次运行开始生效。
52
- - Observe 自动刷新时会保留依赖图、检查器和日志的阅读位置,查看长时间任务时不再被频繁打断。
53
-
54
- ### 修复
55
-
56
- - 修复 supervised convergence DAG 在 `process-gate-shell` 报「repair artifact gate cannot find downstream repair task」的问题:修复环节不再按固定节点名(历史上的 `repair-cursor` / `repair-pi`)猜测,而是根据 gate 声明的 `repairNodeId` 或唯一安全的下游 Pi 写入节点解析,合法的 `request-revision` 修订请求能正常走完 repair、hard verify 与 review。
57
- - Observe UI R5:可变 UI 状态改为 `uiState` plain object,修复 Chrome 中 ES module namespace 赋值导致的路由崩溃;`app.js` 收为约 136 行 bootstrap/route/listeners/re-export,KPI、DAG helpers、run processing 与 shell chrome 迁入职责模块,移除 nullable `registerShell/getShell` locator;Pool grouped filters、四态、DAG inspector ARIA/方向键同步收敛,并通过 focused tests、构建治理与 fresh dist Chrome 验证。
58
- - 前端 DAG 从 `需求.md` / `执行约束.md` 读取验证命令时不再交给 shell 解释执行;命令会先解析为受限参数列表并拒绝 shell 特殊语法,避免任务文本触发额外命令。
59
- - 改进 Windows Git Bash、npm 和集成测试的运行方式,减少环境识别错误与资源竞争导致的误失败。
60
-
61
- ## [0.10.0] - 2026-07-12
62
-
63
- ### 破坏性变更
64
-
65
- - DAG、Loop、Delegate 和 Worker 统一使用 Pi,不再支持 Cursor executor 及相关旧配置。
66
- - Cursor 仍可通过 `loop-agent cursor-prompt` 手动调用,但不再参与自动执行和受治理写入。
67
- - Delegate 默认只创建 worktree;需要自动生成并执行 DAG 时必须显式使用 `--auto-run`。
68
-
69
- ### 迁移提示
70
-
71
- 1. 删除 harness 和 task 中的 Cursor executor 配置,只保留 `executors.pi`。
72
- 2. 把 `loopAutoWritePolicy` 改为 `loopAutoExecutionPolicy`(`off` | `approval-required` | `enabled`)。
73
- 3. 重新运行 `dag run-task` 并使用 `dag validate` 校验 DAG。
74
- 4. 需要 Cursor 人工辅助时使用 `loop-agent cursor-prompt`,完成后仍需运行项目验证命令。
75
-
76
- ### 新增
77
-
78
- - `agent-worker feature review` 可汇总 Feature 状态、阻塞、验收覆盖、证据和下一步;`--json` 可供脚本读取。
79
- - `agent-worker feature run` 可检查并推进一个就绪任务,`--dry-run` 可在不写入的情况下预览执行结果。
80
- - 新增失败接续流程,可根据失败类型生成修复任务或人工行动建议,并在批准前保留原始失败证据。
81
- - `feature run --git-mode checkpoint` 可为成功任务创建本地检查点,并在任务失败后恢复干净工作区;不会自动 push、merge 或创建远程 PR。
82
- - 新增 `feature verify-final`、`feature delivery` `feature closeout`,覆盖最终验证、交付材料和显式确认后的收尾操作。
83
- - 晨报、Observe `report metrics` 会集中展示 Feature 状态、下一步、验收覆盖和统计口径。
84
- - 初始化演化检查可以复用仍然有效的历史审查结果,减少低影响后续改动造成的重复评审。
85
-
86
- ### 修改
87
-
88
- - `design/` 已并入 `docs/design/`,设计资料统一从治理文档目录查找。
89
- - Agent DAG 默认使用简体中文输出;可通过 `workflowPolicy.dag.outputLanguage: "en"` 切换为英文。
90
- - Observe 和 Dashboard 更集中地展示运行状态、风险、模型、耗时和下一步,并减少已经结束任务中的无关诊断信息。
91
- - 新增 `dag reconcile-run`,可在执行器已经停止后安全收尾历史失联的 DAG。
92
- - DAG 详情的节点检查器、事件记录和风险区域更易阅读,长内容和异常状态也能得到清楚提示。
93
- - 测试会根据机器资源安排并行和串行任务,降低资源竞争造成的不稳定。
94
-
95
- ### 修复
96
-
97
- - 修复 `cursor-prompt --stream` 超时或异常后可能残留连接或进程的问题。
98
- - 修复部分运行中 DAG 被误判为不活跃、状态颜色丢失以及风险统计重复的问题。
99
- - 运行快照暂时无法生成时会明确提示指标不可用,不再显示具有误导性的全零状态。
100
-
101
- ## [0.9.0] - 2026-07-12
102
-
103
- ### 修复
104
-
105
- - 修复 Observe 总览误把已结束、但仍保留未执行节点的 DAG 显示为“活跃 DAG”的问题。
106
- - DAG 详情页中的节点输出、错误输出、依赖图和执行过程会在轮询更新时保留当前查看位置,不再把页面拉回默认位置。
107
- - DAGWorker 运行详情完成首次加载后,会在运行结束时停止自动刷新;页面切到后台时会降低刷新频率,减少不必要的本机资源占用。
108
- - 新建 Task 默认改为串行执行验证,避免治理检查、类型检查和测试同时抢占本机资源;需要并行时仍可显式配置。
109
- - `run-dag` `dag run-task --execute` 会拒绝无效的 `--max-concurrent`,避免异常参数导致同一批节点同时启动。
110
- - Worker batch 的 SSE 事件流在没有新增内容时不再重复读取历史事件,并且会等上一轮完成后再继续轮询。
111
- - Observe 看板在一个刷新周期内会复用同一份运行快照;同时打开总览、批次、Task DAG 详情时,不会为每个请求重复扫描运行记录。
112
- - DAG shell 命令和 Worker 调用遇到大量输出时,只在内存中保留最近一段内容并标明截断;完整 stdout/stderr 仍会写入运行产物,避免长日志拖慢本机。
113
- - 建立 reference index 时会跳过依赖、构建产物、虚拟环境和版本控制目录,并在遍历规模过大时提前停止,减少误扫大型仓库。
114
-
115
- ### 修改
116
-
117
- - Observe 看板改为暖白运行控制台:总览、批次、Task、DAG 和异常页面使用统一的信息层级;DAG 详情中的依赖图和节点表各自完整展示,选择节点后可从右侧检查器查看输出和执行过程。
118
- - 统一整理运行看板的总览、批次详情、运行详情、DAG 详情和异常 Task 页面:先展示当前状态和风险,再呈现运行记录、输出与产物,桌面端查看信息更集中。
119
- - 最近 DAG 运行改为按时间排列的状态时间线,标题过长时不会再挤压状态;DAG 详情仍可从每条记录直接进入。
120
- - 优化节点表格和宽屏布局:节点 ID、模型、状态、耗时和备注更容易扫读;节点输出支持 Markdown 阅读,完成节点在依赖图中以绿色状态提示。
121
-
122
- ## [0.8.0] - 2026-07-11
123
-
124
- ### 新增
125
-
126
- - 提供可定时或手动触发的 Worker 夜间运行入口。每次运行都会保留结果、晨报和 Dashboard 快照,便于持续跟踪。
127
- - 新增 `agent-worker task validate-feature` 以及可初始化到项目中的产品线模板。它会在开始前检查验收条件、Task 依赖、验证命令和收尾顺序,减少任务资料不完整导致的返工。
128
-
129
- ### 修改
130
-
131
- - 调整运行看板中文术语,明确区分 DAG、Task Worker;将异常状态、运行输出和历史结果等说明改为更容易理解的表述。
132
- - Task Pool runtime 硬切换到唯一根目录 `.harness/task-pool/`;旧顶层目录不再读取、迁移或兼容,升级会重置本地 Worker Task Pool 历史。
133
-
134
- ## [0.7.5] - 2026-07-11
135
-
136
- ### 新增
137
-
138
- - DAG 详情页新增依赖关系图。可以直观看到并行步骤、汇合点、失败和跳过路径;选择节点后会突出它的上下游关系。
139
-
140
- ## [0.7.4] - 2026-07-11
141
-
142
- ### 修复
143
-
144
- - Worker 会把 TaskSpec 要求的验证命令带入最终检查,避免任务看似完成却漏跑类型检查或重点测试。
145
-
146
- ## [0.7.3] - 2026-07-11
147
-
148
- ### 修复
149
-
150
- - 在 DAG 运行期间执行项目检查时,不再把当前正在运行的 DAG 误判为残留状态。
151
-
152
- ## [0.7.2] - 2026-07-11
153
-
154
- ### 修复
155
-
156
- - 修复通过脚本包装执行项目检查时的环境传递问题,避免最终验证被错误拦截。
157
-
158
- ## [0.7.1] - 2026-07-11
159
-
160
- ### 修复
161
-
162
- - DAG 会在评审和收尾前保存最终验证结果,便于确认 Task 是否真正通过检查。
163
-
164
- ## [0.7.0] - 2026-07-11
165
-
166
- ### 新增
167
-
168
- - TaskSpec 支持声明 `interactive-ui` 能力。涉及交互界面的 Task 会获得更适合 UI 实现和验收的执行配置。
169
- - 补充真实前端 Task、交互验收和对照样例,方便验证 Worker 对界面交付的处理效果。
170
-
171
- ### 修复
172
-
173
- - 改进演练项目的初始化过程,避免覆盖已有 `.gitignore` 或写入不该提交的运行记录。
174
-
175
- ## [0.6.0] - 2026-07-10
176
-
177
- ### 新增
178
-
179
- - `agent-worker observe` 提供本地只读的运行看板,可查看 Worker 批次、Task、DAG、输出、失败原因和相关产物。
180
- - DAG 节点支持记录执行过程;看板可以展示工具调用和助手输出摘要,帮助定位长时间运行的步骤。
181
- - 新增 `loop-agent import-prd <task-id> --file <path>`,会保存原始 PRD 并在后续执行中保留引用,减少需求在处理中被改写或遗漏。
182
- - Worker 会把 Task 的需求、验收条件和参考资料整理为可追溯的执行材料;`agent-worker task retry` 可重新排队失败的 Task,同时保留失败记录。
183
- - `harness.json` 提供 JSON Schema。新初始化的项目和已有项目都可以获得编辑器提示与安全补齐。
184
-
185
- ### 修复
186
-
187
- - 修复运行看板的历史记录、失败产物链接和状态展示问题,并限制服务只在本机访问。
188
- - 配置、模型或凭证错误会被明确标记为运行环境问题,避免被误导为需求不清。
189
- - 修复自动化检查环境缺少 `ripgrep` 时可能跳过后续测试的问题。
190
-
191
- ## [0.5.0] - 2026-07-09
192
-
193
- ### 新增
194
-
195
- - 可以在 `harness.json` 中为 Pi 和 Cursor 配置默认模型及不同复杂度的模型选择。
196
- - 完整初始化会同时生成 `skills/` 和 `.agents/skills/`,方便不同 Agent 工具发现同一套项目指引。
197
-
198
- ### 修改
199
-
200
- - 简化模型配置方式:新项目优先使用 `executors` 配置,旧配置仍可识别并会得到迁移提示。
201
- - 初始化时不再默认写入 Cursor 的执行器配置;只有项目原本使用 Cursor 时才会保留。
202
-
203
- ## [0.4.0] - 2026-07-09
204
-
205
- ### 新增
206
-
207
- - 新增 Worker 工作流:可校验 TaskSpec、批量处理就绪 Task、生成并运行 DAG,并在成功或失败后留下可追溯的记录。
208
- - `agent-worker batch run-ready` 会显示运行进度;`agent-worker report morning` 可汇总批次结果,方便日常查看。
209
- - 新增 TaskSpec、验收条件和 Task 依赖校验,帮助在执行前发现缺失资料、错误依赖或循环依赖。
210
- - 提供 `agent-worker` 命令行入口,可检查 Task 配置并解释执行配置的选择。
211
-
212
- ### 修复
213
-
214
- - 改进运行看板、失败处理和重试记录,避免重复运行时丢失历史信息。
215
- - 为真实模型运行设置更合理的超时范围,减少长时间 DAG 被过早终止。
216
-
217
- ## [0.3.0] - 2026-07-06
218
-
219
- ### 新增
220
-
221
- - 新增 `frontend-implementation` 任务类型与专用 Agent DAG 模板,支持前端 contract / scout / design gate / implement / static verify / behavior verify / review gate / closeout 节点链,并附带 repo-local `frontend-implementation` skill 骨架。
222
- - 补齐前端 DAG 的 repo-local skills:前端实现、design gate review、实现 review 和 verification closeout,并纳入 npm package / `loop-agent init --profile full` 初始化投影。
223
- - `loop-agent init` 支持检查和更新已初始化项目,可提示缺失文件、过期配置和需要人工确认的变更。
224
- - 新增 `--version`,可直接查看当前安装的 loop-agent 版本。
225
- - 初始化内容和 npm 包内容会进行一致性检查,减少“本仓库可用、初始化项目缺文件”的情况。
226
-
227
- ## [0.2.1] - 2026-07-06
228
-
229
- ### 新增
230
-
231
- - 补充面向使用者的文档站,覆盖项目初始化、Task、验证、Loop Agent DAG 的常用用法。
232
- - 新增生产就绪检查清单和失败交接材料,帮助团队在运行失败后快速定位下一步。
233
- - DAG 命令会提供更清楚的结果摘要、诊断信息和失败收尾草稿。
234
-
235
- ### 修改
236
-
237
- - 初始化后的项目指引补充了文档收敛、写入边界和失败处理说明,方便团队按同一方式协作。
238
-
239
- ### 修复
240
-
241
- - 前端 DAG 的 static / behavior shell 验证会优先使用任务源 `需求.md` / `执行约束.md` 中声明的前端验证命令,避免被通用 adapter 验证命令覆盖。
242
- - 前端 DAG 节点不再默认注入通用 DAG role skills,改为只加载节点显式声明的前端 skills,避免前端 skill references 被上下文预算挤出。
243
- - 修复完整测试运行时,部分真实命令可能因默认超时时间过短而失败的问题。
244
-
245
- ## [0.2.0] - 2026-07-05
246
-
247
- ### 新增
248
-
249
- - 新增 `loop-agent init`,可把 loop-agent 的基础配置、文档、技能指引和检查脚本初始化到目标项目中。
250
- - 初始化支持与已有 README、配置和项目结构合并,不会直接覆盖用户已有内容。
251
-
252
- ### 修改
253
-
254
- - 项目可以在 `harness.json` 中使用自己的项目名,同时继续使用 loop-agent 的默认适配器。
255
- - README 重组为更清晰的使用入口,区分初始化、运行 Task、核心概念和项目维护。
256
-
257
- ### 修复
258
-
259
- - 确保发布包带上运行边界文档,并修复 Cursor DAG Worker 在已构建包中的启动问题。
260
-
261
- ## [0.1.0] - 已发布
262
-
263
- ### 新增
264
-
265
- - 首个版本:提供 Agent DAG 的生成、检查和执行,以及基础的项目治理命令。
1
+ # 更新日志
2
+
3
+ 这里记录每个版本对使用者有影响的变化。命令名和配置字段保持原样,其余内容尽量用日常语言说明。
4
+
5
+ ## [Unreleased]
6
+
7
+ ### 修复
8
+
9
+ - 动态 Map 的 post-case token budget:resume 时从已 `FINISHED` child 恢复累计 `tokensUsed`,已 `token-budget-exhausted` 的 child 保持 `SKIPPED` 且不重跑;真实 child failure 与预算阻塞并存时 Map `ok: false`(fail-closed),仅预算阻塞时仍 `ok: true` 以便下游 review/retrospect 继续。
10
+ - `frontend-test` 的 `materialize-frontend-case-manifest-shell` 现确定性校验 `dimension`(core|boundary|flow|backend)、非空 `acIds`、`casePath` 与 `caseId` 对应,以及 `casePath`/`evidenceDir` 唯一性。
11
+ - Pi SDK 依赖固定为 `@earendil-works/pi-ai@0.80.10` `@earendil-works/pi-coding-agent@0.80.10`,SDK executor 改用新的 `ModelRuntime.create()` / `createAgentSession({ modelRuntime })` 契约;`doctor` 也会验证关键 runtime API,而不再只因模块可 import 就误报 `sdk=ok`。
12
+
13
+ - 前端需求覆盖门禁改为只验证 `frontend-plan-revision-pi` 输出的当前生效计划;首轮设计直接通过时 revision 节点也会复述完整 Requirement Coverage,避免修订计划遗漏编号却从旧原计划借用编号误通过。
14
+ - Observe 规范证据不再把“存在 session events”视为 skill 已注入;只有 `run.json` 明确记录节点 skills 时才报告 `spec-injected`,普通消息且无 read/search/知识库证据时返回 `no-evidence`。
15
+ - 收紧知识图谱 promote 的 Feature 路径校验,防止非法 staging 文件名越过 `features/**` 写入边界。
16
+ - 使初始化项目的 one-shot run lifecycle 占位目录可被 Git 跟踪,并保留增量图谱显式 `--include` 范围。
17
+
18
+ ### 新增
19
+
20
+ - `frontend` 分支发布 npm 包时新增本地 beta 门禁:必须使用 beta 预发布版本和 `--tag beta`,避免误推到 `latest`;其他分支不受影响。
21
+ - `backend-test` 的需求分析现在先输出严格 Backend Test Analysis v1 JSON,再由确定性 schema gate 校验任务源绑定、需求编号、字段和敏感值,规范化落到当前 DAG run 的 `contracts/backend-test-analysis.json`。后续功能用例与审查节点只消费已验证 artifact;非法 JSON、来源不一致或疑似 secret 会在 pytest writer 前 fail-closed。artifact path、SHA-256 与 schema ID 会记录在节点事实中并随 run 生命周期归档。
22
+ - 新增 `playwright-cli-case-generator` repo-local skill:它从 FE-test RAG 知识包生成可逐 case 执行的中文 Markdown 用例、索引与 manifest,不生成测试代码,也不会臆测 API、边界或测试数据;full init 会镜像到目标项目 `.agents/skills/`。该 skill 生成的 FE-test 浏览器命令默认以 `playwright-cli open --browser=chrome --headed` 启动本地 Chrome。
23
+ - 前端实现 DAG 新增可观察的 `frontend-mock-assess-pi` 与确定性 contract gate:它读取 Mock/API/schema 证据,在原生 Mock、浏览器拦截、可逆请求适配层、`not-needed` 和阻塞之间选择,并禁止注释真实请求或生产默认启用 Mock。`task.json.frontendMock` 可设置 `auto|required|disabled`、既有服务目录和生成期固化的专项验证命令;不安全或不完整的显式 required 合同不会生成 writer,有可信命令时会增加 Mock 专项验证。Mock-backed 结果只标记 `Frontend status: mock-validated`,未调用真实后端时保留 `Real integration: pending` 和真实接口复验。
24
+ - 新生成的 DAG 会把 `需求.md`、`执行约束.md` 和引用文档的路径、SHA-256 及显式 `REQ/BR/AC` 编号写入 `sourceBinding`;前端实现流程新增 `frontend-requirement-coverage-shell`,计划漏掉任一显式编号时会在最终 design review writer 前阻断。
25
+ - Observe「规范证据」新增“已绑定任务源”展示,能看到来源类型、路径、哈希摘要与需求编号,并继续严格区分来源绑定和 session event 证明的完整文件读取。
26
+ - 前端 DAG 新增设计修订闭环:首轮 design review 输出 `request-revision` 时通过只读 `frontend-plan-revision-pi` 修订计划后经 `frontend-final-design-review-pi` `frontend-final-design-gate-shell` 最终门禁,不再直接终止。只有最终 `VERDICT: pass` 才授权写入。
27
+ - Observe 节点检查器新增「规范证据」页签,展示 skill 注入状态、已读取规范文件(基于 session event 中成功完成的 read 工具调用)、检索操作(grep/find/ls)以及知识库查询;证据不足时提供明确提示。
28
+ - 规范证据接口强制要求通过 `toolCallId` 配对 `tool_execution_start` `tool_execution_end` 事件;仅有 start 而无匹配成功 end、end 报错(`isError: true`)或缺失 complete 事件的 read 一律不计入已读取。
29
+
30
+ ### 变更
31
+
32
+ - 对齐 `docs/templates/backend-test-dag.json` 与 runtime `buildBackendTestHybridDag`:补齐 `backend-test-analysis-contract-shell`(`jsonArtifactGate.schemaId=backend-test-analysis-v1`,run-owned `contracts/backend-test-analysis.json`),`analyze-inputs-pi` 改为 Backend Test Analysis v1 JSON outputContract,cases/review 依赖 gate;新增 `test/backend-test-template-drift.test.ts` 对节点拓扑、analysis contract、gate schema、pytest writeSet 与 JUnit 命令关键片段做强制 drift gate,避免 init 投影继续传播旧 Structured Markdown analyze 行为。
33
+ - `generate-backend-pytest-pi` 的 writeSet 扩展为 `testcase/**/test_*.py` 与可选 `helpers/**`、`factories/**`;prompt 收紧为 API 优先、禁止扫密钥/生产配置、DB 直写仅限已有安全测试库 fixture,缺失能力时显式跳过并记录缺口。
34
+ - `dag run-task` 自动写入 observe 用 `dag-events.jsonl` 时,目录创建失败会显式报错(不再静默吞掉),路径仍对齐 `.harness/task-pool/observability/runs/<runId>/`。
35
+ - `execute-backend-pytest-shell` 保持目标工作区 `writePolicy: read-only`,用内置 `--junitxml` 将报告写入当前 `$HARNESS_DAG_RUN_DIR/reports/backend-test-junit.xml`(不依赖 `pytest-html`);命令设置 `PYTHONDONTWRITEBYTECODE=1` 并禁用 pytest cache provider,避免 `.pytest_cache` / `__pycache__` 污染;报告随 run 生命周期归档,pytest 失败退出码仍原样保留。
36
+ - `backend-test` DAG 不再启用无效的 `convergence` 自动修订环:审查 gate 仅 fail-closed(非 `VERDICT: pass` 即停),需修用例后重新 `dag run-task`。此前配置的 chain 因 runtime 依赖 `hard-verify-shell` 而从未真正 loop。
37
+ - 澄清专用业务模板与治理 profile 的入口:`backend-test` / `knowledge-sync` / `knowledge-graph-bootstrap` / `frontend-implementation` 只能通过 `task.json.taskKind` 选择;`dag run-task --profile` 仅接受 `auto|minimal|standard|reviewed|supervised`。AGENTS、feature-workflow 与知识图谱脚本中的 `--profile backend-test` / `--profile knowledge-graph-bootstrap` 示例已纠正。
38
+ - v3 recovery/partial DAG 中没有只读 planner 上游的孤立 exclusive writer,必须携带权威 `sourceBinding`;`--strict-governance` 会拒绝仅靠二手摘要继续写入。中断恢复的安全默认是修复任务源后重新生成完整 DAG,而不是拼接 impl-only 后半段。
39
+ - 默认 `standard` 任务现在会根据标题、`source/需求.md` 和结构化 `allowedPaths` 做保守、确定性的需求分类;只有高置信的前端实现需求自动进入前端专用 DAG,且不会覆盖显式或治理门禁选中的 supervised 模板。后端、前后端混合、明确排除前端或证据不足的需求继续使用原治理 profile,绝不会自动进入 `backend-test`;显式专用 `taskKind` 保持兼容并优先。
40
+ - 前端 design gate shell 失败路由改为 `ContractMismatch` / `frontend-plan-revision-and-rerun`,不再路由为 `ProductBug` / `dev-fix`。
41
+ - 前端实现、design review 和 review skill 要求显式执行并记录规范检索与读取,以便后续新 run 在 Observe 中生成可观察证据。
42
+
43
+ ### 破坏性变更
44
+
45
+ - Task Pool 任务身份升级为 feature-scoped 复合键 `{ featureId, taskId }`(`TaskPoolTaskRef`,ADR 0004)。新 state 使用 `schemaVersion: 2`,canonical 路径为 `.harness/task-pool/states/<featureId>/<taskId>.json`;裸 `taskId` 不再是仓库全局唯一键。
46
+ - `agent-worker task retry` canonical 调用必须携带 `--feature-id`。跨 Feature 同名 Task 时省略 `--feature-id` fail-closed,不会静默猜 Feature。
47
+ - 扁平 legacy `states/<taskId>.json` 在写入 / Ready 路径 fail-closed,不会被静默解释为某个 Feature 的状态。
48
+
49
+ ### 迁移提示
50
+
51
+ 1. 运行 `agent-worker pool doctor --repo <repo> --json` 盘点 v2 / legacy inventory。
52
+ 2. 需要迁移时先 `agent-worker pool migrate-state --repo <repo>`(dry-run),确认映射后再 `--apply --owner <owner> --reason <reason>`。
53
+ 3. 更新脚本与文档中的 retry 示例为 `task retry <task-id> --feature-id <feature-id> ...`。
54
+ 4. Observe / 书签改用 `#/feature/:featureId/task/:taskId`;legacy `#/task/:taskId` 仅在 taskId 全库唯一时兼容。
55
+ 5. `runs.jsonl` / `events.jsonl` 不会被 migrate 重写;历史 `workerRunId` 仍可追溯。
56
+
57
+ ### 新增
58
+
59
+ - 新增 `loop-agent eval replay` / `eval report` 的 M1 Replay Eval MVP。它只读取 completed DAG 的 `state.json` / `run.json` 并校验调用方声明的 SHA-256,生成稳定的 candidate 对照 scorecard;缺失 Token/耗时明确保留为 `null + missingFields`,不会补造为 0。当前仅用于历史 evidence 重放和比较,不执行 Pi/DAG、不实现 private verifier 或自动晋升,输出始终标记 `promotionEligible=false` 与 `replay_only`。
60
+ - 新增 M2 W2.3 Candidate run association:DagSpec v3 可声明严格的 `evaluation` binding(`campaignId`、`candidateId`、`bundleHash`、`seed`,可选 `split` / `taskRef`)。DAG 在创建目录前复用 Candidate Registry integrity read 并校验 executable lifecycle,将 association 冻结到 `run.json` / `state.json`;report 显示 present 或 `absent-legacy`,Replay 对 candidate/seed/split/taskRef 冲突 fail closed。旧 spec/run 不补造 association;不包含 campaign execution、budget、alias 或 promotion。
61
+ - 新增 M2 首块 Candidate Registry MVP(W2.1–W2.2):`loop-agent eval candidate register|show|list|transition`。支持不可变 Candidate Bundle manifest、与 `candidateId` 分离的 canonical `bundleHash`(忽略 JSON key 序/绝对路径/mutable lifecycle)、repo-local `.harness/evaluation/candidates/<id>/` 存储,以及 append-only lifecycle(初态 `proposed`,hash chain,非法转换 fail closed)。`accepted` 仅表示 registry lifecycle,不实现 incumbent alias、promotion 或 Context Policy seam。
62
+ - `agent-worker pool doctor`:只读 Task Pool inventory 与迁移证据(exit 0 也可带 findings)。
63
+ - `agent-worker pool migrate-state`:legacy → v2 显式迁移;默认 dry-run,apply 需 owner/reason,失败全回滚并保留审计 artifact。
64
+ - `agent-worker batch plan-ready`:零写入预览 TaskSpec priority 驱动的 selected、deferred 与 blocked 计划。
65
+
66
+ ### 变更
67
+
68
+ - Runner Ready Queue、Feature review/run、Follow-up、Delivery / Closeout、morning report / metrics 与 Observe read-model 均按 Feature 作用域消费 state,同名 Task 跨 Feature 不串线。
69
+ - Observe canonical API:`GET /api/features/:featureId/tasks/:taskId[/runs]`;legacy bare task route 在歧义时返回 409 + `candidates`。
70
+ - Feature dry-run / review / next-action、morning report、GlobalSnapshot、Observe 消费同一 Ready Planner projection;前端与投影层不得独立重选或重排 ready tasks。
71
+
72
+ ### 修复
73
+
74
+ - 修复干净 checkout 或新初始化项目缺少 `.harness/runs/{active,completed,failed}` 占位目录,导致 `scripts/ci-governance.sh` 的工程结构检查失败的问题。
75
+
76
+ ## [0.12.0] - 2026-07-16
77
+
78
+ ### 新增
79
+
80
+ - 只读 Pi DAG 节点支持 opt-in 安全重试:仅 planner/scout/reviewer/verifier/closeout 角色且无写入能力的 Pi 节点可声明 `retryPolicy`,在同一 run 内重试模型连接中断(`network`)、provider 限流(`rate-limit`)、临时不可用(`unavailable`)或请求 timeout。生成模板默认总尝试 3 次,手工配置最多 5 次,并使用有上限的指数退避。每次 attempt 保留独立证据,节点耗时、Token 与事件数按尝试聚合;后一次成功不会覆盖前一次失败证据。`quota`、`auth`、`invalid-output`、`write-guard` 与未知失败不重试;supervisor、implementer、writer、dynamic、shell、static、docs-only、decision-gate 节点声明策略会在校验阶段失败。未声明策略的历史 DAG 不新增 attempt artifact,行为保持不变。
81
+ - 新增 `taskKind: "backend-test"` 专用 DAG:从需求分析开始,生成并评审后端功能用例,再生成和执行 pytest 自动化,最后产出测试复盘报告;新 DAG 沿用当前 Pi-only runtime、版本化 runtime contract 与既有执行恢复机制。
82
+ - 测试知识回写专用 DAG:`taskKind: "knowledge-sync"`。生成 collect→draft→validate→**多视角审查(QA/领域/证据)**→apply→pointer;**必须绑定 `featureId`**(`task.json.featureId` hardConstraints / 需求中的 `F-…`),writeSet 收窄到 `features/<featureId>/…`。
83
+ - 业务知识图谱开荒 DAG:`taskKind: "knowledge-graph-bootstrap"`(preflight→inventory→propose→validate→**结构/证据/安全三视角审查+聚合门禁**→promote→materialize);AI 只写 `knowledge/bootstrap/staging/**`。
84
+ - 图谱辅助脚本与 CLI:`loop-agent knowledge query|graph-init|graph-materialize|graph-promote|graph-incremental-prepare`(薄封装 `scripts/kb-*`);`knowledge curate` 仍只负责 repair guidance 提案。
85
+ - B1 骨架、Phase A 查询(by_id / by_feature / search)、merge-new-only 晋升、增量 scope 准备与 materialize 索引;设计文档见 `docs/design/knowledge-*.md` 与 active plan `docs/exec-plans/active/2026-07-14-knowledge-sync-and-graph.md`。
86
+
87
+ ### 修复
88
+
89
+ - `loop-agent init check-update` / `init update --apply-safe` 漏检初始化投影文件:fresh `init --profile full` 通过目录复制把整个 `docs/templates/` 与 `skills/`(镜像到 `.agents/skills/`)投影到目标项目,但期望 init surface 只跟踪其中一个子集。旧版本(如 0.11.0)初始化的项目升级 controller 后,缺失的 backend-test 模板、agent-dag schema/prompt、`loop-agent` 必需 references 等文件无法被报告或补齐,`check-update` 会错误返回 `ok: true`。现在期望 surface 会自动发现包内 `docs/templates/` 与 `skills/` 的所有文件并纳入校验;`check-update` 会报告全部缺失/陈旧 surface;`apply-safe` 会确定性补齐缺失文件,对无法证明 ownership 的旧文件仍保持 fail-safe(给出 model merge / human decision,不覆盖用户内容)。`scripts/check-init-surface.sh` 新增 drift 门,阻止“fresh init 会复制、surface 却不跟踪”的漂移。
90
+
91
+ ## [0.11.0] - 2026-07-15
92
+
93
+ ### 新增
94
+
95
+ - 受治理 DAG 的 repair 环节改为显式声明:`shell.repairArtifactGate` 新增 `repairNodeId`,新生成的 supervised DAG 会直接写明由哪个 Pi 修复节点承接 supervisor 的修订请求;旧 DAG 未声明时,只有在能唯一、安全地推导出下游 Pi 修复节点时才继续兼容,缺失、歧义或修复节点不满足受治理写入契约都会在执行前明确报错。
96
+ - 新生成的 DagSpec 升级为 `version: 3`,并携带必需的 `runtimeContract`(`agentRuntime` / `repairWriterProtocol` / 可选最低 controller 版本)。旧 controller 会因不认识 v3 而在解析阶段拒绝,新 controller 则在 `dag validate`、执行和 resume 前检查 capability 与最低版本,避免版本漂移运行到中途才失败;legacy v1/v2 DAG 继续可读。
97
+ - 每个新的 DAG run 必须把实际执行的 controller identity(package version、binary SHA-256、portable fingerprint)冻结为 run-owned 事实并记录内容哈希;identity 无法解析时不创建 run。`dag report` 会展示 identity 与 runtime-contract compatibility,resume 时重新校验;身份漂移、artifact 篡改或 legacy-unpinned run 都会拒绝继续。
98
+ - Observe R5:控制台前端拆为原生 ES modules(router/api/format/state/views 等),`app.js` 作轻量入口并 re-export 可测 API;统一 loading/empty/degraded/error 状态 helper;资源池支持可分享的 hash 筛选(`status`/`q`);不引入框架或构建器,R1–R4 路由/API/行为保持。
99
+ - Observe R4:Batch/Pool 有界事件历史 `GET /api/batches/:batchRunId/events` 与 `GET /api/events`(默认 limit 50、硬顶 200,opaque `cursor`/`nextCursor`,与 SSE/run 整数 `after` 分离);服务端尾部有界 JSONL 扫描;snapshot 事件归约容量硬顶并暴露 `projectionWarnings`;Pool 投影失败 fault-first,避免健康零值 KPI。
100
+ - Observe R3:`#/feature/:featureId` 决策详情(状态、AC 覆盖、blocking、risk、follow-ups、evidence、projectionWarnings);总览 Feature 可下钻;Feature/Task/Batch/Run/DAG 统一对象关系条,仅 snapshot 可证对象出链;建议命令仅可复制,与已执行事实分区。
101
+ - Observe R2:Batch 详情展示完整 summary(含 additive `recordErrors?`/`runErrors?`)、派生总耗时、Task 诊断列(失败分类、follow-up、harnessTaskId、起止)与页内安全 artifact preview;Worker Run 收敛为「主事实 / 执行过程 / 诊断证据」三层,Task/Batch/DAG 深链仅在 canonical 字段且 snapshot 命中时生成。`TaskSummary.batchRunId?` 对外保留。
102
+ - Observe R1:顶栏「资源池」与 `#/pool` 盘点当前 Worker Task(状态分布、最新 run、更新时间、失败分类);`#/task/:taskId` 下钻当前事实、真实关联 batch/run/DAG、失败证据与有界 run history(`GET /api/tasks/:taskId/runs`,limit/cursor,`retryOfWorkerRunId`)。`TaskSummary` additive `updatedAt?`;snapshot additive `taskPool.present` 区分未使用与空池。
103
+ - 新增版本更新提醒。发现新版本时可以直接确认升级;忽略某个版本后不会重复提醒,后续新版本仍会正常提示。可用 `LOOP_AGENT_DISABLE_UPDATE_CHECK=1` 关闭检查。
104
+ - 新增 `loop-agent plan create`、`plan complete` 和 `plan check`,统一维护执行计划及其索引,并在生成 DAG 前发现遗漏或不一致。
105
+ - 目标项目可以选择复用本地 SDD skills,为需求、设计、实现和评审节点补充方法指引;未安装时保持原有流程。
106
+ - 新增 `docs/architecture/` 全景、DAG 执行、Worker/Feature、运行态事实与演进五篇主题文档及目录索引,并在 npm package(不投影到 init)内可达。
107
+ - WorkerDAG 运行会固定本次使用的 loop-agent 版本与 skill 配置,避免执行过程中因环境变化产生不一致结果。
108
+ - 新增 `npm run self-host:canary -- --deterministic`,可在隔离环境中检查候选发布包是否能够接管常用 CLI、初始化和 DAG 流程。
109
+ - 新增可选的 `agent-worker` skill,为 Feature、Task、交付和失败恢复提供统一的操作指引。
110
+ - 文档站新增功能导览、架构导读与当前规划入口,并把文档收敛检查固化到 `skills/loop-agent`,减少站上文档与仓库治理文档漂移。
111
+ - 前端 DAG repo-local skills 补齐节点输入、输出、证据和失败规则;前端规范会优先查知识库,失败时回退到当前项目 `openSpec/`。
112
+ - 目标项目旧布局迁移:`init check-update`(只读)报告旧根 `docs/` / `skills/` 可安全迁移的 loop-agent owned 文件、空目录和 `harness.json` 中已废弃的模型字段;`init update --apply-safe` 迁移确认未修改的文件、清理空目录并清理废弃字段,本地修改过、来源不明或目标冲突的文件只进入人工决策,不会被覆盖或删除。
113
+
114
+ ### 变更
115
+
116
+ - `observe serve` 提高对外访问稳定性:HTTP keep-alive 默认约 65s(避免 Node 5s 默认导致连接池复用失败),SSE 增加 keepalive comment 与 `X-Accel-Buffering: no`;新增 `--debug` 在 stderr 打印请求来源/方法/路径/状态/耗时。
117
+ - `observe serve` 允许显式绑定非 loopback 地址(如 `--host 0.0.0.0`)以便局域网访问;默认仍是 `127.0.0.1`,非本机绑定时会在 stderr 提示无鉴权风险。
118
+ - README 在「核心概念」后增加极简「仓库地图」,方便一眼区分 `src/`、`skills/`、`.harness/`、`docs/` 等职责;细节仍以 `AGENTS.md` 与 `docs/README.md` 为准。
119
+ - 文档治理收敛:站上「当前规划」与 active plan 同步(无进行中计划时明确写出);`docs/README` 只索引核心契约与产物目录入口,progress/report 全量列表下沉到子目录 README;Dynamic Workflow 路线图迁入 `docs/design/`;补齐 design 漏索引与 DAG recovery playbook 入口。
120
+ - 活文档校准:Dynamic Workflow 路线图页首标明已落地 vs 设计输入(Pi-only);六个月规划第 1–2 月改为 archive/reports 指针;`repository-analysis` 冻结为基线快照,新增 `docs/reports/current-capability-summary.md`;落地 ADR 0001–0003(Pi-only、Task Pool 根、双树/docs-converge)。
121
+ - 统一 Feature Packet 的推荐目录和中文说明,相关检查同时兼容现有产品线目录。
122
+ - 目标项目初始化布局收敛:默认把 loop-agent 治理资料生成到 `ai_workspace/loop-agent/`,不再在目标项目根生成 `docs/`;`--profile full` 只把 repo-local skills 写到 `.agents/skills/`,不再生成根 `skills/`。
123
+ - `new-task` 不再预种 L1 空报告模板(`分析报告.md` / `实现计划.md` / `复盘报告.md`);任务 `artifacts/` 默认只保留 `修改记录.md` 与 `验证结果.md`,由 `promote-run` 从 completed run 回填。
124
+ - 运行期间修改 skill 不会影响当前任务,新配置会从下一次运行开始生效。
125
+ - Observe 自动刷新时会保留依赖图、检查器和日志的阅读位置,查看长时间任务时不再被频繁打断。
126
+
127
+ ### 修复
128
+
129
+ - 修复 supervised convergence DAG 在 `process-gate-shell` 报「repair artifact gate cannot find downstream repair task」的问题:修复环节不再按固定节点名(历史上的 `repair-cursor` / `repair-pi`)猜测,而是根据 gate 声明的 `repairNodeId` 或唯一安全的下游 Pi 写入节点解析,合法的 `request-revision` 修订请求能正常走完 repair、hard verify 与 review。
130
+ - Observe UI R5:可变 UI 状态改为 `uiState` plain object,修复 Chrome 中 ES module namespace 赋值导致的路由崩溃;`app.js` 收为约 136 行 bootstrap/route/listeners/re-export,KPI、DAG helpers、run processing 与 shell chrome 迁入职责模块,移除 nullable `registerShell/getShell` locator;Pool grouped filters、四态、DAG inspector ARIA/方向键同步收敛,并通过 focused tests、构建治理与 fresh dist Chrome 验证。
131
+ - 前端 DAG `需求.md` / `执行约束.md` 读取验证命令时不再交给 shell 解释执行;命令会先解析为受限参数列表并拒绝 shell 特殊语法,避免任务文本触发额外命令。
132
+ - 改进 Windows Git Bash、npm 和集成测试的运行方式,减少环境识别错误与资源竞争导致的误失败。
133
+
134
+ ## [0.10.0] - 2026-07-12
135
+
136
+ ### 破坏性变更
137
+
138
+ - DAG、Loop、Delegate 和 Worker 统一使用 Pi,不再支持 Cursor executor 及相关旧配置。
139
+ - Cursor 仍可通过 `loop-agent cursor-prompt` 手动调用,但不再参与自动执行和受治理写入。
140
+ - Delegate 默认只创建 worktree;需要自动生成并执行 DAG 时必须显式使用 `--auto-run`。
141
+
142
+ ### 迁移提示
143
+
144
+ 1. 删除 harness task 中的 Cursor executor 配置,只保留 `executors.pi`。
145
+ 2. 把 `loopAutoWritePolicy` 改为 `loopAutoExecutionPolicy`(`off` | `approval-required` | `enabled`)。
146
+ 3. 重新运行 `dag run-task` 并使用 `dag validate` 校验 DAG。
147
+ 4. 需要 Cursor 人工辅助时使用 `loop-agent cursor-prompt`,完成后仍需运行项目验证命令。
148
+
149
+ ### 新增
150
+
151
+ - `agent-worker feature review` 可汇总 Feature 状态、阻塞、验收覆盖、证据和下一步;`--json` 可供脚本读取。
152
+ - `agent-worker feature run` 可检查并推进一个就绪任务,`--dry-run` 可在不写入的情况下预览执行结果。
153
+ - 新增失败接续流程,可根据失败类型生成修复任务或人工行动建议,并在批准前保留原始失败证据。
154
+ - `feature run --git-mode checkpoint` 可为成功任务创建本地检查点,并在任务失败后恢复干净工作区;不会自动 push、merge 或创建远程 PR。
155
+ - 新增 `feature verify-final`、`feature delivery` 和 `feature closeout`,覆盖最终验证、交付材料和显式确认后的收尾操作。
156
+ - 晨报、Observe 和 `report metrics` 会集中展示 Feature 状态、下一步、验收覆盖和统计口径。
157
+ - 初始化演化检查可以复用仍然有效的历史审查结果,减少低影响后续改动造成的重复评审。
158
+
159
+ ### 修改
160
+
161
+ - `design/` 已并入 `docs/design/`,设计资料统一从治理文档目录查找。
162
+ - Agent DAG 默认使用简体中文输出;可通过 `workflowPolicy.dag.outputLanguage: "en"` 切换为英文。
163
+ - Observe 和 Dashboard 更集中地展示运行状态、风险、模型、耗时和下一步,并减少已经结束任务中的无关诊断信息。
164
+ - 新增 `dag reconcile-run`,可在执行器已经停止后安全收尾历史失联的 DAG。
165
+ - DAG 详情的节点检查器、事件记录和风险区域更易阅读,长内容和异常状态也能得到清楚提示。
166
+ - 测试会根据机器资源安排并行和串行任务,降低资源竞争造成的不稳定。
167
+
168
+ ### 修复
169
+
170
+ - 修复 `cursor-prompt --stream` 超时或异常后可能残留连接或进程的问题。
171
+ - 修复部分运行中 DAG 被误判为不活跃、状态颜色丢失以及风险统计重复的问题。
172
+ - 运行快照暂时无法生成时会明确提示指标不可用,不再显示具有误导性的全零状态。
173
+
174
+ ## [0.9.0] - 2026-07-12
175
+
176
+ ### 修复
177
+
178
+ - 修复 Observe 总览误把已结束、但仍保留未执行节点的 DAG 显示为“活跃 DAG”的问题。
179
+ - DAG 详情页中的节点输出、错误输出、依赖图和执行过程会在轮询更新时保留当前查看位置,不再把页面拉回默认位置。
180
+ - DAG 和 Worker 运行详情完成首次加载后,会在运行结束时停止自动刷新;页面切到后台时会降低刷新频率,减少不必要的本机资源占用。
181
+ - 新建 Task 默认改为串行执行验证,避免治理检查、类型检查和测试同时抢占本机资源;需要并行时仍可显式配置。
182
+ - `run-dag` `dag run-task --execute` 会拒绝无效的 `--max-concurrent`,避免异常参数导致同一批节点同时启动。
183
+ - Worker batch SSE 事件流在没有新增内容时不再重复读取历史事件,并且会等上一轮完成后再继续轮询。
184
+ - Observe 看板在一个刷新周期内会复用同一份运行快照;同时打开总览、批次、Task 或 DAG 详情时,不会为每个请求重复扫描运行记录。
185
+ - DAG shell 命令和 Worker 调用遇到大量输出时,只在内存中保留最近一段内容并标明截断;完整 stdout/stderr 仍会写入运行产物,避免长日志拖慢本机。
186
+ - 建立 reference index 时会跳过依赖、构建产物、虚拟环境和版本控制目录,并在遍历规模过大时提前停止,减少误扫大型仓库。
187
+
188
+ ### 修改
189
+
190
+ - Observe 看板改为暖白运行控制台:总览、批次、Task、DAG 和异常页面使用统一的信息层级;DAG 详情中的依赖图和节点表各自完整展示,选择节点后可从右侧检查器查看输出和执行过程。
191
+ - 统一整理运行看板的总览、批次详情、运行详情、DAG 详情和异常 Task 页面:先展示当前状态和风险,再呈现运行记录、输出与产物,桌面端查看信息更集中。
192
+ - 最近 DAG 运行改为按时间排列的状态时间线,标题过长时不会再挤压状态;DAG 详情仍可从每条记录直接进入。
193
+ - 优化节点表格和宽屏布局:节点 ID、模型、状态、耗时和备注更容易扫读;节点输出支持 Markdown 阅读,完成节点在依赖图中以绿色状态提示。
194
+
195
+ ## [0.8.0] - 2026-07-11
196
+
197
+ ### 新增
198
+
199
+ - 提供可定时或手动触发的 Worker 夜间运行入口。每次运行都会保留结果、晨报和 Dashboard 快照,便于持续跟踪。
200
+ - 新增 `agent-worker task validate-feature` 以及可初始化到项目中的产品线模板。它会在开始前检查验收条件、Task 依赖、验证命令和收尾顺序,减少任务资料不完整导致的返工。
201
+
202
+ ### 修改
203
+
204
+ - 调整运行看板中文术语,明确区分 DAG、Task 和 Worker;将异常状态、运行输出和历史结果等说明改为更容易理解的表述。
205
+ - Task Pool runtime 硬切换到唯一根目录 `.harness/task-pool/`;旧顶层目录不再读取、迁移或兼容,升级会重置本地 Worker Task Pool 历史。
206
+
207
+ ## [0.7.5] - 2026-07-11
208
+
209
+ ### 新增
210
+
211
+ - DAG 详情页新增依赖关系图。可以直观看到并行步骤、汇合点、失败和跳过路径;选择节点后会突出它的上下游关系。
212
+
213
+ ## [0.7.4] - 2026-07-11
214
+
215
+ ### 修复
216
+
217
+ - Worker 会把 TaskSpec 要求的验证命令带入最终检查,避免任务看似完成却漏跑类型检查或重点测试。
218
+
219
+ ## [0.7.3] - 2026-07-11
220
+
221
+ ### 修复
222
+
223
+ - DAG 运行期间执行项目检查时,不再把当前正在运行的 DAG 误判为残留状态。
224
+
225
+ ## [0.7.2] - 2026-07-11
226
+
227
+ ### 修复
228
+
229
+ - 修复通过脚本包装执行项目检查时的环境传递问题,避免最终验证被错误拦截。
230
+
231
+ ## [0.7.1] - 2026-07-11
232
+
233
+ ### 修复
234
+
235
+ - DAG 会在评审和收尾前保存最终验证结果,便于确认 Task 是否真正通过检查。
236
+
237
+ ## [0.7.0] - 2026-07-11
238
+
239
+ ### 新增
240
+
241
+ - TaskSpec 支持声明 `interactive-ui` 能力。涉及交互界面的 Task 会获得更适合 UI 实现和验收的执行配置。
242
+ - 补充真实前端 Task、交互验收和对照样例,方便验证 Worker 对界面交付的处理效果。
243
+
244
+ ### 修复
245
+
246
+ - 改进演练项目的初始化过程,避免覆盖已有 `.gitignore` 或写入不该提交的运行记录。
247
+
248
+ ## [0.6.0] - 2026-07-10
249
+
250
+ ### 新增
251
+
252
+ - `agent-worker observe` 提供本地只读的运行看板,可查看 Worker 批次、Task、DAG、输出、失败原因和相关产物。
253
+ - DAG 节点支持记录执行过程;看板可以展示工具调用和助手输出摘要,帮助定位长时间运行的步骤。
254
+ - 新增 `loop-agent import-prd <task-id> --file <path>`,会保存原始 PRD 并在后续执行中保留引用,减少需求在处理中被改写或遗漏。
255
+ - Worker 会把 Task 的需求、验收条件和参考资料整理为可追溯的执行材料;`agent-worker task retry` 可重新排队失败的 Task,同时保留失败记录。
256
+ - `harness.json` 提供 JSON Schema。新初始化的项目和已有项目都可以获得编辑器提示与安全补齐。
257
+
258
+ ### 修复
259
+
260
+ - 修复运行看板的历史记录、失败产物链接和状态展示问题,并限制服务只在本机访问。
261
+ - 配置、模型或凭证错误会被明确标记为运行环境问题,避免被误导为需求不清。
262
+ - 修复自动化检查环境缺少 `ripgrep` 时可能跳过后续测试的问题。
263
+
264
+ ## [0.5.0] - 2026-07-09
265
+
266
+ ### 新增
267
+
268
+ - 可以在 `harness.json` 中为 Pi 和 Cursor 配置默认模型及不同复杂度的模型选择。
269
+ - 完整初始化会同时生成 `skills/` 和 `.agents/skills/`,方便不同 Agent 工具发现同一套项目指引。
270
+
271
+ ### 修改
272
+
273
+ - 简化模型配置方式:新项目优先使用 `executors` 配置,旧配置仍可识别并会得到迁移提示。
274
+ - 初始化时不再默认写入 Cursor 的执行器配置;只有项目原本使用 Cursor 时才会保留。
275
+
276
+ ## [0.4.0] - 2026-07-09
277
+
278
+ ### 新增
279
+
280
+ - 新增 Worker 工作流:可校验 TaskSpec、批量处理就绪 Task、生成并运行 DAG,并在成功或失败后留下可追溯的记录。
281
+ - `agent-worker batch run-ready` 会显示运行进度;`agent-worker report morning` 可汇总批次结果,方便日常查看。
282
+ - 新增 TaskSpec、验收条件和 Task 依赖校验,帮助在执行前发现缺失资料、错误依赖或循环依赖。
283
+ - 提供 `agent-worker` 命令行入口,可检查 Task 配置并解释执行配置的选择。
284
+
285
+ ### 修复
286
+
287
+ - 改进运行看板、失败处理和重试记录,避免重复运行时丢失历史信息。
288
+ - 为真实模型运行设置更合理的超时范围,减少长时间 DAG 被过早终止。
289
+
290
+ ## [0.3.0] - 2026-07-06
291
+
292
+ ### 新增
293
+
294
+ - 新增 `frontend-implementation` 任务类型与专用 Agent DAG 模板,支持前端 contract / scout / design gate / implement / static verify / behavior verify / review gate / closeout 节点链,并附带 repo-local `frontend-implementation` skill 骨架。
295
+ - 补齐前端 DAG 的 repo-local skills:前端实现、design gate review、实现 review 和 verification closeout,并纳入 npm package / `loop-agent init --profile full` 初始化投影。
296
+ - `loop-agent init` 支持检查和更新已初始化项目,可提示缺失文件、过期配置和需要人工确认的变更。
297
+ - 新增 `--version`,可直接查看当前安装的 loop-agent 版本。
298
+ - 初始化内容和 npm 包内容会进行一致性检查,减少“本仓库可用、初始化项目缺文件”的情况。
299
+
300
+ ## [0.2.1] - 2026-07-06
301
+
302
+ ### 新增
303
+
304
+ - 补充面向使用者的文档站,覆盖项目初始化、Task、验证、Loop 和 Agent DAG 的常用用法。
305
+ - 新增生产就绪检查清单和失败交接材料,帮助团队在运行失败后快速定位下一步。
306
+ - DAG 命令会提供更清楚的结果摘要、诊断信息和失败收尾草稿。
307
+
308
+ ### 修改
309
+
310
+ - 初始化后的项目指引补充了文档收敛、写入边界和失败处理说明,方便团队按同一方式协作。
311
+
312
+ ### 修复
313
+
314
+ - 前端 DAG 的 static / behavior shell 验证会优先使用任务源 `需求.md` / `执行约束.md` 中声明的前端验证命令,避免被通用 adapter 验证命令覆盖。
315
+ - 前端 DAG 节点不再默认注入通用 DAG role skills,改为只加载节点显式声明的前端 skills,避免前端 skill references 被上下文预算挤出。
316
+ - 修复完整测试运行时,部分真实命令可能因默认超时时间过短而失败的问题。
317
+
318
+ ## [0.2.0] - 2026-07-05
319
+
320
+ ### 新增
321
+
322
+ - 新增 `loop-agent init`,可把 loop-agent 的基础配置、文档、技能指引和检查脚本初始化到目标项目中。
323
+ - 初始化支持与已有 README、配置和项目结构合并,不会直接覆盖用户已有内容。
324
+
325
+ ### 修改
326
+
327
+ - 项目可以在 `harness.json` 中使用自己的项目名,同时继续使用 loop-agent 的默认适配器。
328
+ - README 重组为更清晰的使用入口,区分初始化、运行 Task、核心概念和项目维护。
329
+
330
+ ### 修复
331
+
332
+ - 确保发布包带上运行边界文档,并修复 Cursor DAG Worker 在已构建包中的启动问题。
333
+
334
+ ## [0.1.0] - 已发布
335
+
336
+ ### 新增
337
+
338
+ - 首个版本:提供 Agent DAG 的生成、检查和执行,以及基础的项目治理命令。