@tea-agent/loop-agent 0.13.0-beta.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 (127) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +56 -305
  3. package/README.md +13 -19
  4. package/dist/commands/init.js +92 -23
  5. package/dist/executors/pi-event-serializer.js +33 -11
  6. package/dist/executors/shell-executor.js +200 -21
  7. package/dist/infrastructure/evaluation/candidate-store.js +5 -1
  8. package/dist/worker/observe/spec-evidence.js +19 -10
  9. package/dist/worker/observe/static/app.js +4 -3
  10. package/dist/worker/observe/static/constants.js +10 -2
  11. package/dist/worker/observe/static/dag-helpers.js +37 -8
  12. package/dist/worker/observe/static/dom.js +159 -0
  13. package/dist/worker/observe/static/format-pool.d.ts +71 -0
  14. package/dist/worker/observe/static/format-pool.js +67 -0
  15. package/dist/worker/observe/static/format.js +27 -2
  16. package/dist/worker/observe/static/index.html +76 -34
  17. package/dist/worker/observe/static/kpi.js +12 -6
  18. package/dist/worker/observe/static/markdown-render.js +124 -0
  19. package/dist/worker/observe/static/shell-chrome.js +8 -2
  20. package/dist/worker/observe/static/state.js +20 -0
  21. package/dist/worker/observe/static/styles.css +662 -60
  22. package/dist/worker/observe/static/views/dag-inspector.js +65 -142
  23. package/dist/worker/observe/static/views/dag.js +9 -0
  24. package/dist/worker/observe/static/views/dashboard.js +512 -269
  25. package/dist/worker/observe/static/views/pool.js +595 -237
  26. package/dist/worker/observe/static/views/session-timeline.js +577 -11
  27. package/dist/workflows/dag/backend-test-case-manifest.js +503 -0
  28. package/dist/workflows/dag/backend-test-execution-contract.js +353 -0
  29. package/dist/workflows/dag/backend-test-result-contract.js +568 -0
  30. package/dist/workflows/dag/decision-envelope.js +57 -2
  31. package/dist/workflows/dag/frontend-implementation-contract.js +240 -0
  32. package/dist/workflows/dag/frontend-project-capability.js +309 -0
  33. package/dist/workflows/dag/frontend-repair.js +341 -0
  34. package/dist/workflows/dag/frontend-risk.js +161 -0
  35. package/dist/workflows/dag/frontend-verification-trace.js +190 -0
  36. package/dist/workflows/dag/init-hybrid.js +1020 -125
  37. package/dist/workflows/dag/repair-artifact.js +43 -3
  38. package/dist/workflows/dag/skill-instructions.js +4 -2
  39. package/dist/workflows/dag/types.js +29 -8
  40. package/docs/README.md +2 -0
  41. package/docs/agent-dag-recovery-playbook.md +3 -3
  42. package/docs/agent-dag-runner.md +3 -3
  43. package/docs/architecture/README.md +3 -3
  44. package/docs/architecture/dag-execution.md +1 -1
  45. package/docs/architecture/evolution.md +13 -13
  46. package/docs/architecture/facts-and-state.md +1 -1
  47. package/docs/architecture/runtime-boundaries.md +7 -7
  48. package/docs/architecture/system-overview.md +3 -3
  49. package/docs/architecture/worker-and-feature.md +3 -3
  50. package/docs/design/README.md +7 -7
  51. package/docs/development-principles.md +4 -4
  52. package/docs/exec-plans/active/README.md +2 -4
  53. package/docs/exec-plans/completed/README.md +29 -6
  54. package/docs/feature-workflow.md +57 -32
  55. package/docs/init-surface.manifest.json +21 -3
  56. package/docs/loop-agent-harness.md +8 -8
  57. package/docs/production-readiness.md +1 -1
  58. package/docs/progress/README.md +20 -3
  59. package/docs/reports/README.md +53 -7
  60. package/docs/templates/agent-dag.supervised-implementation.json +127 -8
  61. package/docs/templates/backend-test-case-manifest.schema.json +190 -0
  62. package/docs/templates/backend-test-dag.classify.prompt.md +75 -0
  63. package/docs/templates/backend-test-dag.generate-pytest.prompt.md +6 -4
  64. package/docs/templates/backend-test-dag.json +269 -21
  65. package/docs/templates/backend-test-dag.retrospect.prompt.md +44 -30
  66. package/docs/templates/backend-test-dag.review-cases.prompt.md +6 -4
  67. package/docs/templates/backend-test-execution.schema.json +133 -0
  68. package/docs/templates/backend-test-result.schema.json +99 -0
  69. package/docs/templates/branch-merge-report.md +93 -0
  70. package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -0
  71. package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -0
  72. package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -0
  73. package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -0
  74. package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -0
  75. package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -0
  76. package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -0
  77. package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -0
  78. package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -0
  79. package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -0
  80. package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -0
  81. package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -0
  82. package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -0
  83. package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -0
  84. package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -0
  85. package/docs/templates/frontend-eval/metrics.md +138 -0
  86. package/docs/templates/frontend-eval/smoke-targets.md +53 -0
  87. package/docs/templates/frontend-implementation-contract.schema.json +27 -0
  88. package/docs/verification-matrix.md +1 -1
  89. package/examples/decision-gate-agent-dag.json +4 -4
  90. package/examples/hybrid-loop-agent-dag.json +1 -1
  91. package/package.json +2 -2
  92. package/skills/ai-engineering-context/SKILL.md +2 -2
  93. package/skills/browser-tools/SKILL.md +196 -0
  94. package/skills/browser-tools/browser-content.js +103 -0
  95. package/skills/browser-tools/browser-cookies.js +35 -0
  96. package/skills/browser-tools/browser-eval.js +53 -0
  97. package/skills/browser-tools/browser-hn-scraper.js +108 -0
  98. package/skills/browser-tools/browser-nav.js +44 -0
  99. package/skills/browser-tools/browser-pick.js +162 -0
  100. package/skills/browser-tools/browser-screenshot.js +34 -0
  101. package/skills/browser-tools/browser-start.js +86 -0
  102. package/skills/browser-tools/package-lock.json +2556 -0
  103. package/skills/browser-tools/package.json +19 -0
  104. package/skills/frontend-implementation/SKILL.md +3 -1
  105. package/skills/frontend-implementation/references/node-contracts.md +17 -66
  106. package/skills/frontend-verification/SKILL.md +1 -1
  107. package/skills/grill-with-docs/SKILL.md +5 -5
  108. package/skills/grill-with-docs/adr-format.md +3 -3
  109. package/skills/init-capability-evolution/SKILL.md +5 -5
  110. package/skills/loop-agent/SKILL.md +5 -5
  111. package/skills/loop-agent/references/README.md +3 -3
  112. package/skills/loop-agent/references/command-reference.md +39 -17
  113. package/skills/loop-agent/references/docs-converge.md +15 -15
  114. package/skills/loop-agent/references/harness-policy.md +2 -2
  115. package/skills/loop-agent/references/hybrid-dag.md +20 -15
  116. package/skills/loop-agent/references/multi-worktree.md +1 -1
  117. package/skills/loop-agent/references/orchestrator-and-interventions.md +8 -8
  118. package/skills/loop-agent/references/task-workflow.md +1 -1
  119. package/skills/loop-agent/references/verification-and-failure-handling.md +6 -4
  120. package/skills/requesting-code-review/SKILL.md +1 -1
  121. package/skills/systematic-debugging/CREATION-LOG.md +3 -3
  122. package/skills/systematic-debugging/SKILL.md +1 -1
  123. package/skills/systematic-debugging/test-academic.md +1 -1
  124. package/skills/systematic-debugging/test-pressure-1.md +1 -1
  125. package/skills/systematic-debugging/test-pressure-2.md +1 -1
  126. package/skills/systematic-debugging/test-pressure-3.md +1 -1
  127. package/skills/verification-before-completion/SKILL.md +1 -1
package/AGENTS.md CHANGED
@@ -85,6 +85,8 @@
85
85
  - 保留无关的用户改动,不要回退自己没有做的修改。
86
86
  - 优先沿用现有 helper、目录边界和局部模式,再考虑新增抽象。
87
87
  - 长期决策写入 `docs/`,不要只留在聊天里。
88
+ - 后端测试、接口/API 测试、pytest 或明确的后端自动化测试,必须把 `.harness/tasks/<task-id>/task.json` 的 `taskKind` 设置为 `"backend-test"`,不得保留默认 `standard`。`backend-test` 是 `taskKind`,不是 `--profile` 的可选值;`dag run-task` 继续使用 `--profile auto` 选择治理等级。仅说“自动化测试”且前后端不明时,先根据任务源和项目技术栈判断,禁止无条件路由。
89
+ - 本地只读运行看板:`agent-worker observe serve --repo . --port 8787`,访问 `http://127.0.0.1:8787/`;看板只读,默认只绑定本机 `127.0.0.1`,不要直接暴露到公开网络。
88
90
  - 面向使用者的新增、修改、删除或修复,应同步更新根目录 `CHANGELOG.md`;保持版本级摘要即可,不写过细技术细节。
89
91
  - 面向用户的中文更新日志、README 和说明文档应使用自然、结果导向的表达:先说明用户能获得什么或问题如何改善,保留必要的命令和产品术语,避免逐字翻译、内部实现细节和无意义的中英混杂。
90
92
  - 涉及 `loop-agent init` 或目标项目投影的改动,必须同步考虑目标项目生成物:`AGENTS.md`、`README.md`、`harness.json`、`ai_workspace/loop-agent/`、`scripts/`、`.agents/skills/`、`.harness/prompts`、`.gitignore`(loop-agent runtime managed block)和 npm 包内置 assets;目标项目根 `docs/` 和根 `skills/` 的旧投影需要由 `init update --apply-safe` 安全迁移或退役。
package/CHANGELOG.md CHANGED
@@ -1,338 +1,89 @@
1
1
  # 更新日志
2
2
 
3
- 这里记录每个版本对使用者有影响的变化。命令名和配置字段保持原样,其余内容尽量用日常语言说明。
3
+ ## [0.14.0] - 2026-07-18
4
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`。
5
+ ### 重点更新
12
6
 
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` 范围。
7
+ - 新增夜间自动发布工作流,主干达到提交门槛后自动更新版本、生成说明并发布
8
+ - 运营看板重构为执行面优先布局,并新增可展开的富执行过程时间线
17
9
 
18
10
  ### 新增
19
11
 
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 一律不计入已读取。
12
+ - 定时触发的 GitHub Actions 夜间发布工作流,支持 dry-run 预演与正式发布
13
+ - 运营看板新增执行过程时间线,支持展开查看工具调用与 AI 正文,并记录时间戳
14
+ - 资源池默认手动刷新,突出展示需处理和 Ready 状态的任务
15
+ - 总览页改为执行面 KPI 与风险并排展示,节点检查器默认半屏显示
29
16
 
30
- ### 变更
17
+ ### 改进
31
18
 
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 中生成可观察证据。
19
+ - 发布说明支持 OpenAI 兼容模型生成,并在模型不可用时自动回退到保守摘要
20
+ - 破坏性变更识别改为严格遵循 Conventional Commits 规范,避免因正文提及该词而误判
42
21
 
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
- ### 迁移提示
22
+ ### 修复
50
23
 
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` 仍可追溯。
24
+ - 修复模型返回的 JSON 包含 Markdown 代码块导致解析失败、发布说明始终回退为默认摘要的问题
25
+ - 修复提交信息中包含 'breaking change' 字样被误判为破坏性变更从而阻断发布的问题
26
+ - 补充 format-pool.d.ts 类型声明文件,修复 CI 类型检查报错
56
27
 
57
- ### 新增
28
+ 本页只汇总**文档站读者摘要**;完整版本事实源始终是仓库根目录 [`CHANGELOG.md`](https://github.com/tea-agent/loop-agent/blob/main/CHANGELOG.md)。
58
29
 
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 计划。
30
+ ## [Unreleased]
65
31
 
66
- ### 变更
32
+ - 新增内部测试版本夜间自动发布:达到提交门槛并通过发布检查后,自动更新版本、生成中文说明并发布 GitHub Release 与 npm;手动运行默认只做 dry-run。
33
+ - 发布说明支持 OpenAI-compatible 模型,模型不可用时自动使用保守摘要。
67
34
 
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。
35
+ ## [0.13.0] - 2026-07-18
71
36
 
72
- ### 修复
37
+ - 前端实现流程新增需求合同、风险识别、项目能力检查、有界修复和验证追踪;高置信度前端需求可自动进入专用流程。
38
+ - 后端自动化测试会在生成 pytest 前确认执行环境和需求覆盖,并区分产品、测试与环境问题。
39
+ - Observe 看板采用增量刷新,保留焦点、滚动位置和当前节点;节点输出、执行过程与规范证据切换更稳定。
40
+ - 新增 `browser-tools` 和前端浏览器测试用例生成能力,full init 后可直接在目标项目使用。
41
+ - Task Pool 按 `{ featureId, taskId }` 识别任务,并新增检查、迁移和 Ready 计划预览命令。
42
+ - 新增 Eval Replay 与 Candidate Registry,用于重放证据、比较候选并审计候选运行关联。
43
+ - 旧项目可通过 `init check-update` 检查新增模板、skills 和托管配置,再用 `init update --apply-safe` 安全补齐。
44
+ - Pi SDK、Windows 命令执行、自举验证和受监督任务的计划修订流程得到稳定性改进。
73
45
 
74
- - 修复干净 checkout 或新初始化项目缺少 `.harness/runs/{active,completed,failed}` 占位目录,导致 `scripts/ci-governance.sh` 的工程结构检查失败的问题。
46
+ 完整条目和迁移提示见根 `CHANGELOG.md [0.13.0]`。
75
47
 
76
48
  ## [0.12.0] - 2026-07-16
77
49
 
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 却不跟踪”的漂移。
50
+ - **只读 Pi 节点安全重试**:opt-in `retryPolicy`(network / rate-limit / unavailable / timeout);writer / shell 等声明策略会校验失败。见 [Agent DAG](./guides/agent-dag.md)。
51
+ - **`taskKind: backend-test`**:需求分析 → 功能用例 → pytest → 复盘。
52
+ - **知识同步与业务图谱 MVP**:`taskKind: knowledge-sync`(须 `featureId`)/ `knowledge-graph-bootstrap`;`loop-agent knowledge query|graph-init|graph-materialize|graph-promote|graph-incremental-prepare`(`knowledge curate` 仍只负责 repair guidance 提案)。
53
+ - **init surface 全量跟踪**:`check-update` / `update --apply-safe` 覆盖包内全部 `docs/templates/**` `skills/**` 到目标目录的投影。
54
+ - 详见根 `CHANGELOG.md [0.12.0]`;站上 [当前规划](./overview/roadmap.md) [功能导览](./overview/feature-map.md)。
90
55
 
91
56
  ## [0.11.0] - 2026-07-15
92
57
 
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
- - Worker 和 DAG 运行会固定本次使用的 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 和集成测试的运行方式,减少环境识别错误与资源竞争导致的误失败。
58
+ - **Observe 本地运营面 R1–R5**:资源池 / Task 下钻、Batch·Run 三层事实、Feature 决策详情与对象关系条、有界事件历史、ES modules 前端模块化;`observe serve` keep-alive / SSE keepalive,可选非 loopback 绑定(默认仍 `127.0.0.1`)。见 [Observe](./guides/observe-ui.md)。
59
+ - **版本化自举**:controller identity / package fingerprint / expected gate、run-owned skill snapshot、deterministic `self-host:canary`、`skills/agent-worker` 及目标镜像;dogfood Feature `F-2026-004`。
60
+ - **DagSpec v3 + repair 契约**:新 DAG 携带 `runtimeContract`;supervised `repairNodeId`;run-owned controller identity pin。
61
+ - **`plan create` / `plan complete` / `plan check`**:exec-plan 生命周期与 DAG 前置索引校验。见 [CLI 参考](./reference/cli.md)。
62
+ - **CLI 自更新提醒**:交互式成功命令后检查 npm 新版本;`LOOP_AGENT_DISABLE_UPDATE_CHECK=1` 可关。见 [安装](./quick-start/installation.md)。
63
+ - **init 布局收敛**:目标项目默认 `ai_workspace/loop-agent/` + `.agents/skills/`;`init update --apply-safe` 可安全迁移旧根 `docs/` / `skills/`。
64
+ - **文档站 IA**:intro 概念地图与 30 分钟路径;[功能导览](./overview/feature-map.md)、[架构导读](./overview/architecture.md)、[当前规划](./overview/roadmap.md);Markdown 断链构建失败;`skills/loop-agent/references/docs-converge.md` 固化文档收敛检查表。
65
+ - 可选 repo-local SDD skill 嵌入;前端 DAG skill 契约与验证命令安全解析。
133
66
 
134
67
  ## [0.10.0] - 2026-07-12
135
68
 
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
- - 运行快照暂时无法生成时会明确提示指标不可用,不再显示具有误导性的全零状态。
69
+ - **Pi-only 受治理 runtime**:DAG writer 固定 `implement-pi` / `repair-pi`;`cursor-prompt` 仅显式 one-shot sidecar。
70
+ - **`agent-worker feature review|run|approve-followup|delivery|closeout|verify-final`**:Feature 决策面、薄编排、Follow-up 可批准闭环、本地 Git checkpoint、Delivery Package、Feature Closeout。
71
+ - **`task draft-followup`**、**`report metrics --month`**;Morning / Observe Feature Decision Summary。
72
+ - 详见根 `CHANGELOG.md [0.10.0]`。
173
73
 
174
74
  ## [0.9.0] - 2026-07-12
175
75
 
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
76
+ - Observe 看板重设计为暖白运行控制台:统一信息层级、依赖图 + 节点表、右侧节点检查器、安全 Markdown;本机资源 guardrail。见 [Observe](./guides/observe-ui.md)。
226
77
 
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
- ### 修改
78
+ ## [0.8.0] 及更早
309
79
 
310
- - 初始化后的项目指引补充了文档收敛、写入边界和失败处理说明,方便团队按同一方式协作。
80
+ - 0.8.0:[CLI 参考](./reference/cli.md) 补充 `task validate-feature`、`task retry`、`scripts/worker-nightly.sh` + GitHub Actions、`capabilities: [interactive-ui]`,Task Pool 唯一根 `.harness/task-pool/`。
81
+ - 0.7.5:Observe 新增 DAG 依赖图可视化。
82
+ - 0.7.0:interactive-ui writer-only HIGH 路由与 UI 交付契约。
83
+ - 更早条目见根目录 `CHANGELOG.md`。
311
84
 
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
- ### 新增
85
+ ## 文档站点同步说明
337
86
 
338
- - 首个版本:提供 Agent DAG 的生成、检查和执行,以及基础的项目治理命令。
87
+ - 站上 guide / reference 与根 `docs/` 双树边界见 [架构导读 · 双树边界](./overview/architecture.md#双树边界)。
88
+ - 活能力短摘要:[`docs/reports/current-capability-summary.md`](https://github.com/tea-agent/loop-agent/blob/main/docs/reports/current-capability-summary.md)。
89
+ - 冻结基线长文:[`docs/reports/2026-07-02-repository-analysis.md`](https://github.com/tea-agent/loop-agent/blob/main/docs/reports/2026-07-02-repository-analysis.md)(2026-07-16 再采样对齐 0.12.0 + 主干 Unreleased;勿当第二 CHANGELOG)。
package/README.md CHANGED
@@ -27,7 +27,7 @@ loop-agent --help
27
27
  如果你拒绝版本 A,当前系统用户下不会再提醒 A;之后发布版本 B 时会继续提醒。确认更新时,CLI 会先证明当前安装来自同一 npm global root,然后安装刚确认的精确版本,例如:
28
28
 
29
29
  ```bash
30
- npm install -g @tea-agent/loop-agent@0.12.0
30
+ npm install -g @tea-agent/loop-agent@0.13.0
31
31
  ```
32
32
 
33
33
  需要完全关闭自动检查时设置:
@@ -43,8 +43,18 @@ loop-agent doctor
43
43
  loop-agent inspect
44
44
  ```
45
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
+
46
50
  ## 初始化目标项目
47
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
+
48
58
  在新项目中,最简单的用法是让当前 agent 执行初始化。需要更稳的执行约束时,可以使用下面这段完整提示词:
49
59
 
50
60
  ```text
@@ -67,7 +77,7 @@ loop-agent init --repo-root <target-repo> --profile full --merge
67
77
  loop-agent init doctor --repo-root <target-repo>
68
78
  ```
69
79
 
70
- `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/`、`.worktrees/` 等个人/会话运行态事实忽略掉,同时保留 `.harness/prompts/` 和目录占位可共享,不会整目录忽略 `.harness/`,也不会覆盖用户已有的 ignore 规则。
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 规则。
71
81
 
72
82
  新初始化会写入 `.harness/init-surface.json`,记录当前 controller 版本、初始化投影文件 hash 和 manifest hash。已用旧版本初始化的目标项目,可以用下面的维护入口对齐新版本初始化能力:
73
83
 
@@ -193,7 +203,7 @@ Task Pool **state identity** 进一步固定为 feature-scoped 复合键 `{ feat
193
203
  - **Agent DAG**:把一次任务拆成 contract、scout、plan、implement、verify、closeout 等可审查节点。
194
204
  - **任务源绑定与恢复**:新生成 DAG 会冻结任务源路径、SHA-256 和显式 `REQ/BR/AC`;前端计划漏号时会在 writer 前阻断。运行中断后应修复 task source 并重新生成完整 DAG,不要用二手摘要拼接 impl-only 后半段。
195
205
  - **`.harness/`**:记录 task、DAG run、one-shot run、cache 和 live state 等运行态事实。
196
- - **`harness.json`**:描述项目名、治理根目录、模型路由、executor 和验证脚本;`docs/templates/harness.schema.json` 为 IDE 提供补全和字段说明,运行时仍由 Zod schema 校验。
206
+ - **`harness.json`**:描述项目名、治理根目录、模型路由、executor 和验证脚本;目标项目中的 `ai_workspace/loop-agent/templates/harness.schema.json` 为 IDE 提供补全和字段说明,运行时仍由 Zod schema 校验。
197
207
  - **repo-local skills**:目标项目本地 skills 统一放在 `.agents/skills/`,便于项目定制 agent 行为并让外部 agent 自动发现。DAG skill 解析顺序为:用户配置目录 → `.agents/skills/` → 发布包内置 `skills/`。
198
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 时,生成结果保持原有默认流程。
199
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 生效。
@@ -326,20 +336,4 @@ node bin/loop-agent.js --help
326
336
  npm pack --dry-run
327
337
  ```
328
338
 
329
- `npm publish` 时会通过 `prepublishOnly` 依次执行:
330
-
331
- 1. `node scripts/check-npm-publish-policy.mjs` — 发布策略门禁
332
- 2. `npm run typecheck`
333
- 3. `npm test`
334
- 4. `npm run build`
335
-
336
- ### frontend 分支发布限制
337
-
338
- 在 `frontend` 分支执行 `npm publish` 时,必须同时满足:
339
-
340
- - `package.json` 版本为合法的 SemVer **beta** 预发布版本(例如 `0.13.0-beta.1`)
341
- - 必须显式指定 `--tag beta`(即 `npm publish --tag beta`)
342
-
343
- 任一条件不满足时,`prepublishOnly` 会在上传 npm registry 前失败并给出中文错误提示。其他分支不受此限制。
344
-
345
339
  发布入口 `bin/loop-agent.js` 只加载 `dist/cli.js`;`npm run dev -- <args>` 只用于源码开发和定位问题。