@tea-agent/loop-agent 0.16.1-beta.2 → 0.16.1

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 (94) hide show
  1. package/AGENTS.md +4 -8
  2. package/CHANGELOG.md +55 -18
  3. package/README.md +76 -299
  4. package/dist/application/evaluation/alias.js +184 -0
  5. package/dist/application/evaluation/budget.js +192 -0
  6. package/dist/application/evaluation/campaign-hash.js +47 -0
  7. package/dist/application/evaluation/campaign-matrix.js +372 -0
  8. package/dist/application/evaluation/campaign-scorecard.js +135 -0
  9. package/dist/application/evaluation/campaign.js +370 -0
  10. package/dist/application/evaluation/candidate.js +23 -6
  11. package/dist/application/evaluation/corpus-hash.js +38 -0
  12. package/dist/application/evaluation/corpus.js +56 -0
  13. package/dist/application/evaluation/experiment.js +294 -0
  14. package/dist/application/evaluation/ignition.js +198 -0
  15. package/dist/application/evaluation/integrity-audit.js +162 -0
  16. package/dist/application/evaluation/outer-loop.js +132 -0
  17. package/dist/application/evaluation/pi-cell-executor.js +39 -0
  18. package/dist/application/evaluation/private-verifier.js +46 -0
  19. package/dist/application/evaluation/promotion-policy.js +151 -0
  20. package/dist/application/evaluation/proposer.js +98 -0
  21. package/dist/application/evaluation/types.js +522 -0
  22. package/dist/cli/command-definitions.js +19 -3
  23. package/dist/commands/dag-reconcile-run.js +3 -116
  24. package/dist/commands/eval.js +1176 -13
  25. package/dist/commands/init.js +7 -1
  26. package/dist/executors/dag-pi-executor.js +4 -44
  27. package/dist/executors/pi-sdk-executor.js +3 -3
  28. package/dist/executors/shell-executor.js +1 -1
  29. package/dist/infrastructure/evaluation/alias-store.js +199 -0
  30. package/dist/infrastructure/evaluation/campaign-store.js +154 -0
  31. package/dist/infrastructure/evaluation/corpus-store.js +181 -0
  32. package/dist/infrastructure/evaluation/experiment-store.js +124 -0
  33. package/dist/infrastructure/evaluation/ignition-store.js +82 -0
  34. package/dist/infrastructure/evaluation/private-verifier-store.js +145 -0
  35. package/dist/infrastructure/evaluation/proposer-store.js +78 -0
  36. package/dist/records/promotion.js +3 -1
  37. package/dist/worker/cli.js +83 -0
  38. package/dist/worker/delivery/git-transaction.js +75 -0
  39. package/dist/worker/delivery/verification-bundle.js +13 -2
  40. package/dist/worker/feature/review.js +3 -2
  41. package/dist/worker/observe/static/dag-helpers.js +0 -62
  42. package/dist/worker/observe/static/styles.css +18 -55
  43. package/dist/worker/observe/static/views/dag.js +13 -5
  44. package/dist/worker/outcomes/adapters.js +4 -1
  45. package/dist/worker/outcomes/declared-artifacts.js +103 -0
  46. package/dist/worker/outcomes/evidence-tokens.js +29 -0
  47. package/dist/worker/outcomes/gate.js +10 -11
  48. package/dist/worker/outcomes/projector.js +30 -4
  49. package/dist/worker/outcomes/types.js +3 -0
  50. package/dist/worker/pool/reconcile.js +285 -0
  51. package/dist/worker/run-task/run-task.js +81 -4
  52. package/dist/worker/runner/run-ready.js +25 -2
  53. package/dist/worker/task-graph/ready-planner.js +14 -8
  54. package/dist/worker/task-graph/task-graph-schema.js +5 -3
  55. package/dist/workflows/dag/budget-enforcement.js +67 -0
  56. package/dist/workflows/dag/context-policy.js +137 -0
  57. package/dist/workflows/dag/failure-routing.js +7 -0
  58. package/dist/workflows/dag/frontend-implementation-contract.js +0 -77
  59. package/dist/workflows/dag/init-hybrid.js +33 -53
  60. package/dist/workflows/dag/knowledge-curator.js +3 -0
  61. package/dist/workflows/dag/node-execution.js +11 -4
  62. package/dist/workflows/dag/prompt.js +1 -1
  63. package/dist/workflows/dag/reconcile-run.js +121 -0
  64. package/dist/workflows/dag/report.js +12 -0
  65. package/dist/workflows/dag/runner.js +43 -16
  66. package/dist/workflows/dag/skill-snapshot.js +11 -7
  67. package/dist/workflows/dag/types.js +18 -1
  68. package/dist/workflows/dag/validate.js +15 -1
  69. package/docs/README.md +3 -1
  70. package/docs/architecture/runtime-boundaries.md +3 -2
  71. package/docs/init-surface.manifest.json +4 -0
  72. package/docs/local-development-environment.md +52 -0
  73. package/docs/templates/agent-dag.schema.json +0 -5
  74. package/docs/templates/agent-dag.supervised-implementation.json +23 -4
  75. package/docs/templates/branch-merge-report.md +14 -0
  76. package/docs/templates/evaluation/campaign-budget-v1.json +12 -0
  77. package/docs/templates/evaluation/campaign-dogfood-v0.json +24 -0
  78. package/docs/templates/evaluation/campaign-evidence-v1.json +44 -0
  79. package/docs/templates/evaluation/context-policy-baseline-v1.json +17 -0
  80. package/docs/templates/evaluation/context-policy-role-specialized-v1.json +28 -0
  81. package/docs/templates/evaluation/corpus-dogfood-v0.manifest.json +118 -0
  82. package/docs/templates/evaluation/matrix-dag-dry-run-v1.json +21 -0
  83. package/docs/templates/evaluation/matrix-fixture-v1.json +10 -0
  84. package/docs/templates/evaluation/private-verifier-dogfood-v0.json +16 -0
  85. package/docs/templates/product-line/AGENTS.md +1 -0
  86. package/docs/templates/product-line/README.md +17 -0
  87. package/docs/templates/product-line/acceptance.yaml +9 -0
  88. package/docs/templates/product-line/feature.yaml +11 -0
  89. package/docs/templates/product-line/task-graph.yaml +8 -0
  90. package/docs/templates/product-line/task.yaml +4 -0
  91. package/package.json +2 -1
  92. package/skills/frontend-implementation/references/node-contracts.md +3 -3
  93. package/skills/loop-agent/references/command-reference.md +5 -0
  94. package/skills/loop-agent/references/hybrid-dag.md +3 -3
package/AGENTS.md CHANGED
@@ -15,6 +15,7 @@
15
15
  - 仓库是记录系统:决策、契约、计划、测试、报告优先落到仓库,而不是停留在聊天里。
16
16
  - 一次只推进一个清晰工作块;主会话按 Orient → Select → Contract → Implement → Verify → Handoff 治理,runtime 真实流程以 `src/workflows/` 为准。
17
17
  - 先验证基线,再叠加改动;如果当前基线已坏,优先定位基线问题。
18
+ - Do not consider backward compatibility. Ignore legacy code/libraries.
18
19
  - 完成定义必须可验证;不能靠删测试、降标准或模糊描述制造“完成”。
19
20
  - 搜索先于实现;先查现有代码、文档、脚本、测试,避免重复造轮子或误判系统能力。
20
21
  - 受治理 Agent runtime 只有 Pi:DAG writer 固定为 `implement-pi` / `repair-pi`;`cursor-prompt` 仅是显式手工 one-shot sidecar,不进入 Loop auto-execute 或 Delegate 自动写入。
@@ -54,6 +55,7 @@
54
55
  11. 运行本次任务相关的最小基线验证。
55
56
  12. 如果用户提到"后端测试"、"接口测试"、"pytest"、"自动化测试",在任务 `task.json` 中设置 `taskKind: "backend-test"` 再 `dag run-task`;不要用 `--profile backend-test`(CLI 不接受该值,专用模板只走 taskKind)。知识回写用 `taskKind: "knowledge-sync"`(须 `featureId`),图谱开荒用 `taskKind: "knowledge-graph-bootstrap"`。`--profile` 仅表示治理强度:`auto|minimal|standard|reviewed|supervised`。
56
57
  13. 如果用户提到"看板"、"observe"、"监控面板"、"启动看板",使用 `agent-worker observe serve --repo . --port 8787` 命令启动。
58
+ 14. 如果用户要求“合并 `<source>` 到 `<target>`”或“合并 origin/main 到当前分支”,先阅读 `docs/branch-merge-guideline.md`,按影响自动选择快速、标准或深度模式;始终冻结 source SHA、审查双方功能、运行 merge-tree、生成 source-SHA 合并报告,并在提交前再次 fetch 防止主干前进。
57
59
 
58
60
  ## 会话协议
59
61
 
@@ -73,7 +75,7 @@
73
75
  - `src/`:loop-agent 运行时代码
74
76
  - `test/`:Vitest 测试套件
75
77
  - `bin/loop-agent.js`:CLI 可执行入口
76
- - `skills/`:loop-agent 源仓库和 npm 包内置 skill 指令与参考资料;目标项目初始化后只生成 `.agents/skills/`,不再生成根 `skills/`。初始化还会向目标项目 `.gitignore` 合并 loop-agent managed block,忽略 `.harness/tasks/*`、`.harness/dag-runs/*`、`.harness/runs/*`、`.harness/init-surface.json`、`.harness/task-pool/*`、`.task-pool/`、`.worktrees/` 等运行态事实,但保留 `.harness/prompts/` 和目录占位可共享,不会整目录忽略 `.harness/`。
78
+ - `skills/`:loop-agent 源仓库和 npm 包内置 skill 指令与参考资料;目标项目初始化后只生成 `.agents/skills/`,不再生成根 `skills/`。初始化还会向目标项目 `.gitignore` 合并 loop-agent managed block,忽略 `.harness/tasks/*`、`.harness/dag-runs/*`、`.harness/runs/*`、`.harness/evaluation/`、`.harness/dogfood-evidence/`、`.harness/init-surface.json`、`.harness/task-pool/*`、`.task-pool/`、`.worktrees/` 等运行态事实,但保留 `.harness/prompts/` 和目录占位可共享,不会整目录忽略 `.harness/`。
77
79
  - `.harness/`:任务、DAG、run、cache 和 live state 等运行态目录
78
80
  - `docs/`:治理文档、计划、报告和模板
79
81
  - `website/`:Docusaurus 用户文档站
@@ -85,6 +87,7 @@
85
87
  - 保留无关的用户改动,不要回退自己没有做的修改。
86
88
  - 优先沿用现有 helper、目录边界和局部模式,再考虑新增抽象。
87
89
  - 长期决策写入 `docs/`,不要只留在聊天里。
90
+ - 分支合并遵循 `docs/branch-merge-guideline.md`;快速模式只用于可证明的低风险/no-op 合并,涉及冲突、init/package/runtime/release/public API 时必须升级为标准或深度模式。
88
91
  - 后端测试、接口/API 测试、pytest 或明确的后端自动化测试,必须把 `.harness/tasks/<task-id>/task.json` 的 `taskKind` 设置为 `"backend-test"`,不得保留默认 `standard`。`backend-test` 是 `taskKind`,不是 `--profile` 的可选值;`dag run-task` 继续使用 `--profile auto` 选择治理等级。仅说“自动化测试”且前后端不明时,先根据任务源和项目技术栈判断,禁止无条件路由。
89
92
  - 本地只读运行看板:`agent-worker observe serve --repo . --port 8787`,访问 `http://127.0.0.1:8787/`;看板只读,默认只绑定本机 `127.0.0.1`,不要直接暴露到公开网络。
90
93
  - 面向使用者的新增、修改、删除或修复,应同步更新根目录 `CHANGELOG.md`;保持版本级摘要即可,不写过细技术细节。
@@ -148,10 +151,3 @@ npm run docs:build
148
151
  - 不要用 stub、假数据通路或注释承诺替代真正交付。
149
152
  - 不要把个人机器的绝对路径写入仓库级 `AGENTS.md`、README、模板或发布包资料;个人工具配置应留在用户级配置或本机会话上下文。
150
153
  - 不要只更新 loop-agent 本仓库体验而遗漏目标项目初始化体验;新增能力如果不能通过 npm 内置资料或 `loop-agent init` 到达目标项目,必须写清原因和替代入口。
151
-
152
- ## Cursor Cloud specific instructions
153
-
154
- 这些是 Cursor Cloud VM 上非显而易见、会反复踩的两个环境坑。标准命令仍以 `README.md` 与 `docs/verification-matrix.md` 为准,这里不重复。启动时的 update script 已执行 `nvm use 22` + `npm ci`。
155
-
156
- - Node 版本:VM 默认 `node`(`/exec-daemon/node`)是 v22.14.0,但可选依赖 `@earendil-works/pi-ai` / `@earendil-works/pi-coding-agent` 要求 Node `>=22.19.0`,否则 `npm install`/`npm ci` 会静默跳过它们,导致 `npm run typecheck` 和 `npm run build` 报 `Cannot find module '@earendil-works/...'`。交互式 shell 默认仍是系统 node,跑任何 `npm install`/`npm ci` 前先执行 `nvm use 22`(已预装 v22.22.2)。
157
- - Git 提交签名会让 git 密集型测试超时:全局 git 配置默认对每次 commit 用 `cursor-git-ssh-keygen`(`gpg.format=ssh` + `commit.gpgsign=true`)签名,该 helper 会间歇性卡住 7–30s,使 `test/worker/delivery/**`、`test/worker/feature/**` 等在临时仓库里做多次 commit 的用例撞上 15/30s 超时而失败(单独跑却能过)。跑 `npm test` 或任何会频繁 commit 的工作前,先对子进程 git 关闭签名:`export GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=commit.gpgsign GIT_CONFIG_VALUE_0=false`(或在目标仓库 `git config commit.gpgsign false`)。关闭后整套 `npm test` 约 60s 全绿。这只影响本地/测试环境,不改仓库代码。
package/CHANGELOG.md CHANGED
@@ -1,18 +1,67 @@
1
1
  # 更新日志
2
2
 
3
- ## [0.16.1-beta.2] - 2026-07-19
3
+ ## [0.16.1] - 2026-07-19
4
+
5
+ ### 重点更新
6
+
7
+ - 修复全栈 dogfood 产物与恢复缺口:`produces.path` 可投影为 hash-bound Outcome、closeout 证据迁入 `.harness/`、成功任务 Git checkpoint 先于 Task Pool Done,并补齐 reconcile / mark-failed / advance-checkpoint
8
+ - 收紧夜间自动发布门槛:至少一个可发布 Conventional Commit,且稳定 tag 后总提交数 ≥ 5 或距上次发布满 1 天,才自动发版
9
+ - 将根 README 收敛为产品入口,本地环境排障说明独立成篇,降低首次阅读噪声
10
+
11
+ ### 新增
12
+
13
+ - 新增分支合并规范:按影响自动选择快速、标准或深度模式,统一双方功能保留审查、冲突解析、source-SHA 报告与 init/package 影响校验
14
+ - `.gitignore` 与 `loop-agent init` managed block 现忽略 `.harness/dogfood-evidence/`,避免把 fullstack / Worker dogfood 本地战役证据误提交
15
+
16
+ ### 改进
17
+
18
+ - Observe DAG 详情移除依赖图下方重复的层级节点列表,并为节点表增加连续序号,浏览执行结构时更紧凑、更易定位
19
+ - 根 README 仅保留定位、适用问题、5 分钟开始、核心边界和文档导航;Agent DAG、Worker、发布与运维细节统一下沉到专题文档
20
+ - Cursor Cloud 等环境排障说明从 `AGENTS.md` 迁至 `docs/local-development-environment.md`
4
21
 
5
22
  ### 修复
6
23
 
7
- - 修复 Pi SDK 在模型长输出时把流式 `message_update` `thinking_delta` 重复累积到内存,导致 DAG 节点出现 `Invalid string length` 或超时的问题;终态回答、工具生命周期和错误证据继续完整保留
24
+ - 全栈 dogfood 修复批次:reviewed/supervised DAG 增加一次性 review VERDICT 格式恢复;shell 改为非 login `bash -c`;PATH/VERDICT 格式失败分类对齐 EnvFailure/ContractMismatch
25
+ - 旧目标项目可用 `init check-update` / `update --apply-safe` 刷新 ignore 区块以忽略 dogfood-evidence
8
26
 
9
- ## [0.16.1-beta.1] - 2026-07-19
27
+ ## [0.16.0] - 2026-07-19
28
+
29
+ ### 重点更新
30
+
31
+ - Eval Lab 落地受控评测外环,支持 candidate 矩阵编排、Context Policy A/B dogfood 与 Ignition 研究门禁,全程 autoPromote=false,晋升须人工审核
32
+ - Worker 新增 TaskSpec 显式工作流路由,为四类任务生成带哈希锚定的 Task Outcome,并在晋升前校验 run_record、dag_json 等必需产物
33
+ - 新增 fullstack-v1 Feature Profile,支持确定性结构门禁与 Feature Verification Bundle v1,交付与收尾阶段任一身份漂移或产物篡改均阻断发布
34
+ - Eval Lab 落地固定预算运行时,DagSpec v3 可声明硬预算门禁,超限 fail closed 并输出预算账本,缺失 token 不被当作 0
35
+
36
+ ### 新增
37
+
38
+ - Eval Lab 新增 Context Policy A/B dogfood 脚本,串联 corpus/candidate/campaign/scorecard 与人工 promote(默认 dry-run),不改 DAG 默认策略
39
+ - Eval Lab 新增 Ignition 研究门禁命令,记录多代 proposer 并给出趋势 verdict,恒为研究用途,不自动晋升
40
+ - Eval Lab 新增 Corpus 契约命令与 dogfood 样板清单(15 个异质任务,public/private/held_out 齐全)
41
+ - Eval Lab 新增 public/private campaign 与 private-verifier,支持多 seed 可重复计划与 candidate 内容泄漏门禁
42
+ - Eval Lab 新增 anti-hack 审计与 Promotion Policy v1,检测验证弱化与可疑 outlier,promote 须通过多项门禁且默认 dry-run
43
+ - Eval Lab 新增固定预算运行时,支持按节点累计资源消耗,硬门禁超限 fail closed 并写出 budget-ledger
44
+ - Eval Lab 新增可切换 Context Policy(baseline-v1 默认与原先一致,role-specialized-v1 按角色调整预算)
45
+ - 新增 fullstack-v1 dogfood Feature F-2026-005,提供零依赖可运行目标仓与双覆盖验收样板
46
+ - 新增 fullstack-v1 Feature Profile,对 packet 执行确定性结构门禁,未声明 profile 的 legacy packet 行为不变
47
+ - AcceptanceSpec verification 新增可选的实现/验证任务引用、required_evidence 与 integration 声明,保留 legacy 字段兼容
48
+ - TaskGraph 节点新增可选 consumes/produces 声明与 Ready Planner artifact gate,上游产物不可验证时下游阻塞
49
+
50
+ ### 改进
51
+
52
+ - TaskSpec 支持可选 execution.workflow,可确定性物化为任务 DAG 类型并展示在 Worker、Task Pool、晨报与 Observe
53
+ - Ready Planner 明确仅做 envelope 级绑定,不重算产物文件 sha256,文件级 hash 在 Outcome projection 与 Feature Verification Bundle 执行
54
+ - DAG 节点 authoring guidance 明确 Pi 是唯一受治理 writer,cursor-prompt 仅作手工 one-shot sidecar
55
+ - Eval Lab propose 与 experiment 命令支持有界提出 experimenting candidate,accept/reject 须通过 scorecard 门禁,不自动改写已接受 skill
56
+ - 文档基线全面校准至 0.15.0,同步半年规划、仓库分析与路线图,harness Pi MED 路由至 grok-4.5
57
+ - Eval Lab dogfood 脚本改为可安全重复运行,并记录 promote --apply 序列供后续分析
10
58
 
11
59
  ### 修复
12
60
 
13
- - 修复前端实现契约 Schema 漂移:DAG 生成时从当前 loop-agent 包内置 `docs/templates/frontend-implementation-contract.schema.json` 加载完整 `frontend-implementation-contract-v1` JSON Schema,并注入到 `frontend-plan-pi` 与 `frontend-plan-revision-pi` 提示中,模型不再需要搜索或猜测契约字段
14
- - Prompt 中显式禁止 `schemaId`、`targetFiles`、`requirementCoverage` 等不在 Schema 内的字段,防止模型(如 DeepSeek)生成错误结构
15
- - small 拓扑下 `frontend-plan-pi` reviewed/high-risk 拓扑下 `frontend-plan-revision-pi` 均获得相同的完整 Schema 与确定性上下文
61
+ - 对齐 Task Outcome Ready Planner 契约:Ready 仅做 envelope 级绑定,Outcome 产物补齐独立 schemaId,失败时写入 outcomeFailure
62
+ - 规范化 shell_verification 为标准 evidence token(兼容旧 shell-verification),未知 outputs.required token 保持兼容不阻塞
63
+ - 清理 0.15.0 版本仍残留在 Unreleased 区块的更新日志条目
64
+ - Eval Lab 运行态(candidate/campaign/scorecard)现被 .gitignore 忽略,旧项目可用 init check-update 刷新 ignore 区块
16
65
 
17
66
  ## [0.15.0] - 2026-07-18
18
67
 
@@ -69,18 +118,6 @@
69
118
  - 修复提交信息中包含 'breaking change' 字样被误判为破坏性变更从而阻断发布的问题
70
119
  - 补充 format-pool.d.ts 类型声明文件,修复 CI 类型检查报错
71
120
 
72
- 本页只汇总**文档站读者摘要**;完整版本事实源始终是仓库根目录 [`CHANGELOG.md`](https://github.com/tea-agent/loop-agent/blob/main/CHANGELOG.md)。
73
-
74
- ## [Unreleased]
75
-
76
- - 修复前端 Mock 策略节点偶尔因解释性前言出现在 `MOCK_STRATEGY:` 之前而被 contract gate 误判失败的问题;节点现在通过显式首行协议生成稳定 canonical 输出,同时保留全局 `first-non-empty` 精确校验和原始 Pi 执行证据。
77
- - `agent-worker feature verify-final` 现可聚合 hash-bound `backend-test` / `frontend-test` Outcome,生成 Feature Verification Bundle v1;Delivery 与 Closeout 会重新验证 bundle、typed outcome、Feature/Task/workflow/controller identity 和 Delivery HEAD,任一漂移或篡改都会阻止交付。既有 `qa-execute` QA aggregate 继续兼容。
78
- - 新增 `fullstack-v1` Feature Profile:Feature Packet 可选 `feature.yaml` 声明 profile 与 scope,`agent-worker task validate-feature` 对 `fullstack-v1` packet 执行确定性结构门禁(required backend/frontend/backend-test/frontend-test workflow、frontend-test 依赖实现与后端验证、final-verify 覆盖、测试 workflow 不含产品写路径、writer writeSet 重叠须串行)。fullstack profile 必须有 scope;required AC 必须声明实现、验证与 evidence refs,任一门禁失败 fail closed 并输出阶段缺口与修复建议;未声明 profile 的 generic/legacy packet 行为零变化。
79
- - AcceptanceSpec `verification` 新增全部 optional 的 `implementation_task_refs`、`verification_task_refs`、`required_evidence`、`integration`(`not-applicable`/`mock-allowed`/`real-required`),保留 legacy `expected_task_refs`,schema 仍为 `.strict()`;Feature review 的 coverage 投影在 dual-mode 下复用 Task Outcome envelope 的 `integrationStatus`:实现 Done 但缺验证 evidence、或 `real-required` 仅由 mock/local 满足时,required AC 派生为 `awaiting-verification`(只读派生,非新状态机),Feature 不得被报告为 deliverable。
80
- - 为 TaskGraph 节点新增可选 `consumes`/`produces` 声明与 Ready Planner artifact gate:上游 Done 但必需产物(路径/sha256/schema/Feature/producer/source binding)不可验证时,下游以 `required-artifact-missing` 阻塞;artifact 资格是额外门禁,priority 不得越过 gate。gate 原因经 `ReadyExecutionPlan.blocked[*].artifactGate` 投影,供 Feature review、晨报与 Observe 共用。
81
- - Worker 现为四类 TaskSpec workflow 生成 hash-anchored Task Outcome,并在 promotion 前校验 `run_record`、`dag_json`、`shell_verification` 等已知 required output;Feature review、晨报与 Observe 可引用 outcome 证据,缺失或不一致会以 ContractMismatch/EnvFailure 失败收口。
82
- - TaskSpec 现支持可选 `execution.workflow`,可确定性物化为任务 DAG 类型并展示在 Worker、Task Pool、晨报与 Observe;旧 QA 任务保持原有执行行为,同时给出需人工选择测试 workflow 的迁移提示。
83
-
84
121
  ## [0.13.0] - 2026-07-18
85
122
 
86
123
  - 前端实现流程新增需求合同、风险识别、项目能力检查、有界修复和验证追踪;高置信度前端需求可自动进入专用流程。
package/README.md CHANGED
@@ -1,358 +1,135 @@
1
1
  # loop-agent
2
2
 
3
- `loop-agent` 是面向 AI coding agent 的仓库级任务运行时和治理工具。它把一次研发任务组织成可生成、可校验、可执行、可恢复、可交接的 Agent DAG,并用 `.harness/`、`docs/` 和 shell verification 记录执行事实、长期治理资料和完成依据。
3
+ `loop-agent` 是面向 AI coding agent 的仓库级任务运行时与治理工具。它把研发任务组织为可审查、可执行、可恢复、可验证的 Agent DAG,并将任务源、写入边界、运行事实和完成证据保存在仓库中。
4
4
 
5
- 它可以作为任意目标项目的稳定控制器:初始化目标项目后,项目会获得 `.agents/skills/`、`ai_workspace/loop-agent/` 治理资料、验证脚本、任务运行态目录和模型执行指引,使 agent 在目标项目里的工作体验尽量与本仓库对齐。
5
+ 发布包提供两个 CLI:
6
6
 
7
- ## 快速开始
8
-
9
- 到一个新项目时,可以直接对当前 agent 说:
10
-
11
- ```text
12
- 请用 loop-agent 完整初始化当前项目;如果本机没有 loop-agent,请先安装 @tea-agent/loop-agent@latest。按 init instructions 使用 full + merge 初始化,探索项目后补全 README 和验证命令,最后运行 doctor、inspect、docs audit 和 check-repo 并汇报结果。
13
- ```
14
-
15
- 作为 CLI 使用时,安装已发布包:
16
-
17
- ```bash
18
- npm install -g @tea-agent/loop-agent@latest
19
- loop-agent --version
20
- loop-agent --help
21
- ```
22
-
23
- ## 自动更新提醒
24
-
25
- 通过 npm 全局安装的 `loop-agent` 会在普通交互式命令成功结束后检查 `@tea-agent/loop-agent` 是否有新版本。提醒只写入 `stderr`,不会污染命令原本的 `stdout`;失败命令、CI、管道/重定向、`--help`、`--version`、JSON/Markdown 输出以及 DAG/Loop/Delegate/Pi/Cursor 等 controller-sensitive 路径都会跳过。
26
-
27
- 如果你拒绝版本 A,当前系统用户下不会再提醒 A;之后发布版本 B 时会继续提醒。确认更新时,CLI 会先证明当前安装来自同一 npm global root,然后安装刚确认的精确版本,例如:
28
-
29
- ```bash
30
- npm install -g @tea-agent/loop-agent@0.13.0
31
- ```
32
-
33
- 需要完全关闭自动检查时设置:
34
-
35
- ```bash
36
- LOOP_AGENT_DISABLE_UPDATE_CHECK=1
37
- ```
38
-
39
- 检查当前项目的 loop-agent 配置:
40
-
41
- ```bash
42
- loop-agent doctor
43
- loop-agent inspect
44
- ```
45
-
46
- ## 自动发布
47
-
48
- 仓库通过 GitHub Actions 定时检查 `main`,达到提交门槛并通过发布检查后,自动更新版本、生成 Release 说明并发布 GitHub Release 与 npm。手动触发默认只执行 dry-run,不产生远端发布副作用;具体配置、版本规则和恢复步骤见 [`docs/exec-plans/completed/2026-07-18-nightly-auto-release.md`](docs/exec-plans/completed/2026-07-18-nightly-auto-release.md)。
49
-
50
- ## 初始化目标项目
51
-
52
- 用户可以用自然语言驱动初始化与维护(这三类入口与目标项目 `AGENTS.md` 的“自然语言入口路由”一致):
53
-
54
- - **初始化**:“初始化 loop-agent”“loop agent 初始化”“loop agent初始化”“loop-agent 初始化” — 执行完整确定性初始化闭环,补全 README/验证矩阵并复查。
55
- - **更新校验**(只读):“初始化更新校验”“loop agent初始化更新校验”“检查初始化更新” — 只读运行 `loop-agent init check-update --repo-root . --markdown`,汇报动作与风险,不自动写入。
56
- - **安全更新**(写入型):“初始化安全更新”“loop agent初始化安全更新”“应用初始化更新” — 先 `check-update`,再 `loop-agent init update --apply-safe`;只执行确定性安全动作,human decisions 存在时停下等用户。
57
-
58
- 在新项目中,最简单的用法是让当前 agent 执行初始化。需要更稳的执行约束时,可以使用下面这段完整提示词:
59
-
60
- ```text
61
- 请用 loop-agent 完整初始化当前项目。
7
+ | CLI | 职责 |
8
+ |---|---|
9
+ | `loop-agent` | 单仓库任务、Agent DAG、验证、恢复与治理 |
10
+ | `agent-worker` | 可选的 Feature、TaskSpec、Task Pool 与 Observe 外层编排 |
62
11
 
63
- 如果本机还没有 `loop-agent` 命令,请先运行 `npm install -g @tea-agent/loop-agent@latest`,再记录 `npm list -g @tea-agent/loop-agent --depth=0` 的实际版本。
12
+ 受治理的 Agent writer 只有 Pi;`cursor-prompt` 仅用于显式手工 one-shot,不进入 DAG Loop 自动写入路径。
64
13
 
65
- 然后运行 `loop-agent init instructions --repo-root .`,按指引使用 full + merge 初始化。需要选择 provider/model,或涉及凭据、成本、部署副作用时先问我;其他能安全默认的选项直接继续。
14
+ ## 适合解决什么问题
66
15
 
67
- 初始化后请立刻探索当前项目的 README、manifest/build/config 文件和源码目录,补全根 README 的项目概览、技术栈/目录结构、开发与验证命令,并同步更新 `ai_workspace/loop-agent/verification-matrix.md` 和必要的 `scripts/ci-tests.sh`。
16
+ - 把模糊的 coding 请求转成有任务源、边界和验收标准的执行过程。
17
+ - 在 Contract → Scout → Plan → Implement → Verify → Closeout 节点间保留可审查证据。
18
+ - 用 `allowedPaths`、`forbiddenPaths` 和 DAG `writeSet` 限制模型写入。
19
+ - 在中断、失败或跨会话后,从 `.harness/` 中恢复真实状态。
20
+ - 用 shell verification 而不是模型自述判断任务是否完成。
21
+ - 可选地通过 `agent-worker` 编排 Feature、Ready Queue、QA、交付与只读 Observe 看板。
68
22
 
69
- 最后运行 `loop-agent init doctor --repo-root .`、`loop-agent inspect --repo-root .`、`loop-agent docs audit --repo-root .`、`bash scripts/check-repo.sh`,如项目测试入口可识别也运行 `bash scripts/ci-tests.sh` 或 `bash scripts/ci.sh`,并汇报结果、假设和剩余风险。
70
- ```
23
+ ## 5 分钟开始
71
24
 
72
- 如果手动运行 CLI,可以使用:
25
+ ### 安装
73
26
 
74
27
  ```bash
75
- loop-agent init instructions --repo-root <target-repo>
76
- loop-agent init --repo-root <target-repo> --profile full --merge
77
- loop-agent init doctor --repo-root <target-repo>
28
+ npm install -g @tea-agent/loop-agent@latest
29
+ loop-agent --version
78
30
  ```
79
31
 
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 规则。
81
-
82
- 新初始化会写入 `.harness/init-surface.json`,记录当前 controller 版本、初始化投影文件 hash 和 manifest hash。已用旧版本初始化的目标项目,可以用下面的维护入口对齐新版本初始化能力:
32
+ ### 初始化当前项目
83
33
 
84
34
  ```bash
85
- loop-agent init check-update --repo-root <target-repo> --json
86
- loop-agent init check-update --repo-root <target-repo> --markdown
87
- loop-agent init update --repo-root <target-repo> --bootstrap-surface
88
- loop-agent init update --repo-root <target-repo> --apply-safe
35
+ loop-agent init instructions --repo-root .
36
+ loop-agent init --repo-root . --profile full --merge
37
+ loop-agent init doctor --repo-root .
38
+ loop-agent inspect --repo-root .
89
39
  ```
90
40
 
91
- `check-update` 只读报告 deterministic actions、model merge tasks、human decisions 和 recommended next。期望 init surface 会自动发现包内 `docs/templates/` 与 `skills/` 的所有文件,因此 fresh `init --profile full` 投影到目标项目的每个 template/skill 文件都会被纳入校验。`update --bootstrap-surface` 为旧项目补 inferred baseline;`update --apply-safe` 只补缺失文件、目录和 managed block(包括过期的 `.gitignore` managed block),不覆盖已有但无法确认来源的本地文件;对在旧路径被用户修改过的遗留副本,会在对应标准路径上给出 model merge / human decision,不会静默用包内容覆盖。
41
+ 初始化会保留已有用户内容,并补充 `AGENTS.md`、`harness.json`、`ai_workspace/loop-agent/`、`.agents/skills/`、`.harness/` 和验证脚本等治理入口。
92
42
 
93
- 当初始化由模型/Agent 执行时,它应把初始化当成一个自动化闭环:确认真正不能安全默认的 provider/model、治理根目录或凭据/成本问题后,运行 deterministic init,随后立刻读取目标项目真实文件,补全根 README 的项目概览、技术栈/目录结构、开发与验证命令,并同步适配 `ai_workspace/loop-agent/verification-matrix.md` 和必要的 `scripts/ci-tests.sh`。
43
+ 完整说明见[初始化目标项目](website/docs/quick-start/init-target-project.md)。
94
44
 
95
- 初始化生成的 `scripts/ci-tests.sh` 不假定目标项目是 TypeScript、Node、前端或后端项目。它会保守探测 `package.json`、`Makefile`、`go.mod`、`Cargo.toml`、Python 测试配置、Maven、Gradle、.NET 等常见入口,只运行实际存在且工具可用的命令;探测不到时会清楚提示需要由初始化模型或用户按目标项目实际技术栈补充。
96
-
97
- ## 运行任务
98
-
99
- 创建并运行一个标准 Agent DAG:
45
+ ### 运行第一个任务
100
46
 
101
47
  ```bash
102
- loop-agent new-task <task-id> "任务标题"
103
- loop-agent dag run-task <task-id> --profile auto --strict-models --output <temp-dir>/<task-id>-dag.json
104
- loop-agent dag validate --dag <temp-dir>/<task-id>-dag.json --strict-models --strict-governance
105
- loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd .
48
+ loop-agent new-task example-task "实现一个有明确验收标准的小功能"
106
49
  ```
107
50
 
108
- `dag run-task` 会先尊重显式声明的专用 `taskKind`。对于默认 `standard` 任务,它会根据任务标题、`source/需求.md` 和结构化 `allowedPaths` 做保守、确定性的需求分类;只有高置信的前端实现需求才会自动进入前端专用节点链。只读 `frontend-mock-assess-pi` 在计划前读取 Mock/API/schema 证据,并通过确定性 contract gate 选择原生 Mock、浏览器拦截、请求适配层、`not-needed` 或明确阻塞;它只能使用 DAG 生成时已固化的验证入口。可选 `task.json.frontendMock` 可设置 `auto|required|disabled`、既有服务目录和专项验证命令;默认 `auto` 下没有已确认 Mock 能力时会跳过 Mock 继续前端实现,并保留真实联调缺口,不会因为缺 Mock 本身阻塞。不安全或不完整的显式 required 合同仍不会生成 writer。真实请求始终是默认路径,唯一写节点仍是 `frontend-implement-pi`。自动分类不会覆盖显式 profile、`workflowPolicy` 或 supervised quality gate。后端、混合或证据不足的需求继续使用通用模板,也不会自动进入 `backend-test`。Mock 验证只证明前端状态与交互;未实际请求后端时,收尾保留 `Real integration: pending`,并给出 `<task-id>-real-api-integration-verify`。该复验任务不会自动创建或执行,需要在后端就绪后显式运行。
109
-
110
- 测试结论写回与业务知识图谱(结构化 Git,非 RAG):
51
+ 完善 `.harness/tasks/example-task/source/需求.md` `task.json` 中的结构化写入边界,然后执行:
111
52
 
112
53
  ```bash
113
- # 最终验证后:同步结论/用例/缺陷到 features/<F>/testing/**(须 featureId)
114
- # task.json: { "taskKind": "knowledge-sync", "featureId": "F-2026-004" }
115
- loop-agent dag run-task <task-id> --strict-models
116
-
117
- # 图谱开荒 / 增量(AI 只写 staging,晋升默认不覆盖已有正式文件)
118
- # task.json: { "taskKind": "knowledge-graph-bootstrap" }
119
- loop-agent knowledge graph-init --product-name my-app
120
- loop-agent knowledge graph-incremental-prepare --feature F-2026-004 --service order
121
- loop-agent dag run-task <task-id> --strict-models
122
- loop-agent knowledge graph-promote
123
- loop-agent knowledge graph-materialize
124
- loop-agent knowledge query --mode by_feature --feature F-2026-004 --json
125
- ```
126
-
127
- `knowledge curate` 仍只用于 repair/learned guidance 提案,与图谱查询不是同一能力。细节见 `docs/feature-workflow.md` 与 `docs/design/knowledge-graph-ai-bootstrap.md`。
128
-
129
- `<temp-dir>` 表示平台原生临时目录;也可以省略 `--output`,再使用命令 JSON 输出里的 `outputPath`。
130
-
131
- 非微小工作需要 exec-plan 时,使用确定性生命周期命令维护计划与索引;`new-task` 不会自动创建计划:
132
-
133
- ```bash
134
- loop-agent plan create <plan-id> "<title>"
135
- loop-agent plan check
136
- loop-agent plan complete <plan-id> --summary "<summary>"
137
- ```
138
-
139
- `plan create` 优先复用目标项目模板并回退到发布包内置模板,create/complete 失败时会回滚多文件修改。`dag run-task` 在生成 DAG 草稿前运行同源索引检查,避免遗漏登记直到末端 verify 才暴露。
54
+ loop-agent dag run-task example-task \
55
+ --profile auto \
56
+ --strict-models \
57
+ --output <temp-dir>/example-task-dag.json
140
58
 
141
- 一次性只读评审或有边界写入:
59
+ loop-agent dag validate \
60
+ --dag <temp-dir>/example-task-dag.json \
61
+ --strict-models \
62
+ --strict-governance
142
63
 
143
- ```bash
144
- loop-agent pi-prompt --cwd . --tools read,grep,find,ls "只读评审这个任务,不要编辑文件。"
145
- loop-agent pi-prompt --cwd . --tools read,bash,edit,write,grep,find,ls "<包含 allowedPaths 和 forbiddenPaths 的有边界任务说明>"
64
+ loop-agent run-dag \
65
+ --dag <temp-dir>/example-task-dag.json \
66
+ --cwd .
146
67
  ```
147
68
 
148
- 产品线 feature packet 可用伴生 Worker CLI 做 docs CI;仓库也提供外部 CI/cron wrapper,调度仍由外部系统负责:
149
-
150
- ```bash
151
- agent-worker task validate-feature <feature-dir>
152
- agent-worker feature review --feature-dir <feature-dir> --repo <target-repo>
153
- agent-worker feature run --feature-dir <feature-dir> --repo <target-repo> --dry-run [--git-mode checkpoint]
154
- agent-worker feature verify-final --feature-dir <feature-dir> --repo <target-repo> --task-id <qa-execute-id>
155
- agent-worker feature delivery --feature-dir <feature-dir> --repo <target-repo> --qa-evidence <path> --final-verification <path> [--dry-run]
156
- agent-worker feature closeout --feature-dir <feature-dir> --repo <target-repo> [--apply --owner <owner>]
157
- agent-worker report metrics --repo <target-repo> --month <YYYY-MM>
158
- agent-worker task draft-followup <task-id> --worker-run-id <id> --feature-dir <feature-dir> --repo <target-repo>
159
- agent-worker feature approve-followup --feature-dir <feature-dir> --followup-id <id> --repo <target-repo> --owner <owner> --dry-run
160
- bash scripts/worker-nightly.sh <feature-dir> <target-repo> <batch-run-id>
161
- ```
69
+ `<temp-dir>` 应使用当前平台的原生临时目录。详细步骤见[第一次运行](website/docs/quick-start/first-run.md)和 [Agent DAG 工作流](website/docs/guides/agent-dag.md)。
162
70
 
163
- 写入型 Worker 入口会在目标仓库写入前解析并冻结实际启动的 `loop-agent` controller identity。自举或其他需要精确版本约束的批次,可以额外传入:
71
+ ## 查看执行状态
164
72
 
165
73
  ```bash
166
- agent-worker feature run \
167
- --feature-dir <feature-dir> \
168
- --repo <target-repo> \
169
- --loop-agent-bin <published-loop-agent-entry> \
170
- --expected-controller-version <version> \
171
- --expected-controller-fingerprint <sha256:value>
74
+ loop-agent status example-task
75
+ loop-agent dag status
76
+ loop-agent dag doctor --run-id <run-id> --markdown
77
+ loop-agent dag report --run-id <run-id>
172
78
  ```
173
79
 
174
- identity 不只包含 semver,还包含绝对 launch spec、入口 SHA-256,以及覆盖 `package.json`、`bin/**`、`dist/**`、`skills/**` 的 portable package fingerprint。校验失败时会在 materialize、Task Pool `Running` 或其他目标仓库写入前停止,并保留实际 identity 供诊断。
175
-
176
- `feature review` 是只读的 Feature 级入口。它从 Feature Packet 和现有 Task Pool 事实派生状态、required AC 覆盖、阻塞、证据和唯一主行动;默认输出简洁人类摘要,`--json` 输出稳定的 schemaVersion 1 读模型。它不会写入 Feature Packet 或 Task Pool。
177
-
178
- `feature verify-final` 在 clean Delivery HEAD 上复用已完成的 `qa-execute` TaskSpec,执行独立、不会 promote/closeout 或移动 HEAD 的最终验证,并原子投影 canonical QA aggregate 与 HEAD-bound final-verification evidence。`feature delivery` 复用 checkpoint transaction,校验 branch/HEAD/clean、commit trailers、changed files、成功 run、QA、最终验证和 required AC 后,在 `.harness/task-pool/` 原子生成 Delivery manifest、Acceptance Coverage 与 `PR.md`;`--dry-run` 零写入。`feature closeout` 默认只预览 gates;显式 `--apply --owner <owner>` 才会在前后校验与整体回滚保护下写入 Feature Closeout,重复相同 facts 会幂等复用。
179
-
180
- Morning report 和 Observe snapshot/UI 复用同一 Feature reducer,优先展示 Status、Next Action、Why、Evidence。`report metrics` 同时生成 monthly JSON/Markdown,所有比例都包含分子、分母、样本量、UTC 窗口和缺失数据说明。
181
-
182
- `feature run` 把 validation、目标仓库 preflight、Ready Queue、现有 `run-ready`、晨报、Observe snapshot 和最终 review 串成一次 Feature 意图。默认不写 Git 且每次最多推进一个 Ready 写任务。显式 `--git-mode checkpoint` 才允许创建本地 `agent/<feature-id>` 分支:每个成功任务通过 write-boundary/sensitive-file audit 后提交 checkpoint;失败任务先保存 binary patch、changed/untracked inventory 与内容,再恢复到最近 checkpoint 并验证 clean。它从不授权 push、远程 PR、merge 或 stash。`--keep-failed-diff` 会保留失败 diff、返回 NeedsAction 并立即停止后续任务。
183
-
184
- 如果 Task 产生业务失败,`feature run` 仍会完成晨报、snapshot 和最终 review,但结果为 `needs-action`、进程退出非零,并保留 batch 与失败证据;无 Ready 时正常退出,并通过 `noReadyReason` 区分已关闭、可交付、待 QA、需人工处理、依赖阻塞或空 Feature。
185
-
186
- 失败可通过显式 Follow-up 决策闭环接续:ProductBug、TestBug、FlakyTest、DependencyFailure 会生成可批准 Task 草稿;EnvFailure 最近两次连续失败后才生成 `ENV-CHECK-*`,否则优先给出 retry;SpecUnclear、ContractMismatch、RiskyChange、NeedsHuman、Unknown 只生成人工行动卡,绝不进入 Ready。人工用 `feature approve-followup --dry-run` 复核 baseline、证据 hash、ID 冲突和事务计划,再带 `--owner` 批准。批准后新增 TaskSpec、重连下游依赖并进入 Ready;原失败 run/state/handoff 保持不变,重复 run 的新草稿会 supersede 旧 unresolved 草稿但保留历史。
187
-
188
- nightly wrapper 按 feature 互斥,保留批次/超时退出码,并输出 morning report、Observe snapshot 和 controller 版本 artifacts。
189
-
190
- 自 0.8.0 起,`.harness/task-pool/` 是唯一受支持的 Task Pool runtime root,其中包含根级 `runs.jsonl`、`events.jsonl`、`states/`、`artifacts/`、`failure-handoffs/`、`observability/` 和 `reports/`。这是 hard cutover:此前的顶层 Task Pool 位置不读取、不迁移、不合并、不重映射。
191
-
192
- Task Pool **state identity** 进一步固定为 feature-scoped 复合键 `{ featureId, taskId }`(ADR 0004):
193
-
194
- - canonical state 路径:`.harness/task-pool/states/<featureId>/<taskId>.json`(schema v2,文件内容必须携带 `featureId` / `taskId`)
195
- - 同仓库多 Feature 可安全使用相同 Task ID(例如 `F-A/QA-EXEC-001` 与 `F-B/QA-EXEC-001` 互不覆盖)
196
- - retry 必须显式指定 Feature:`agent-worker task retry <task-id> --feature-id <feature-id> --repo <repo> --reason <reason>`
197
- - 诊断与迁移:`agent-worker pool doctor --repo <repo> --json`(只读);`agent-worker pool migrate-state --repo <repo>` 默认 dry-run,apply 需 `--owner` + `--reason`
198
- - 扁平 legacy `states/<taskId>.json` 不得静默解释;存在时新写入 fail-closed,必须经 doctor / migrate 处理
199
- - Observe 只读:canonical `#/feature/:featureId/task/:taskId` 与 `GET /api/features/:featureId/tasks/:taskId`;legacy bare task route 仅在唯一命中时兼容,歧义返回 409 + candidates
200
-
201
- ## 核心概念
202
-
203
- - **Agent DAG**:把一次任务拆成 contract、scout、plan、implement、verify、closeout 等可审查节点。
204
- - **任务源绑定与恢复**:新生成 DAG 会冻结任务源路径、SHA-256 和显式 `REQ/BR/AC`;前端计划漏号时会在 writer 前阻断。运行中断后应修复 task source 并重新生成完整 DAG,不要用二手摘要拼接 impl-only 后半段。
205
- - **`.harness/`**:记录 task、DAG run、one-shot run、cache 和 live state 等运行态事实。
206
- - **`harness.json`**:描述项目名、治理根目录、模型路由、executor 和验证脚本;目标项目中的 `ai_workspace/loop-agent/templates/harness.schema.json` 为 IDE 提供补全和字段说明,运行时仍由 Zod schema 校验。
207
- - **repo-local skills**:目标项目本地 skills 统一放在 `.agents/skills/`,便于项目定制 agent 行为并让外部 agent 自动发现。DAG skill 解析顺序为:用户配置目录 → `.agents/skills/` → 发布包内置 `skills/`。
208
- - **可选 SDD skill 嵌入**:如果目标项目在 `.agents/skills/` 中提供 `SDD-requirement-analysis`、`SDD-design-analysis`、`SDD-implementation-test-review`,`dag run-task` 会把它们作为知识与方法补充追加到对应的 Contract、Plan、Implement/Repair、Verify、Review 节点。loop-agent 仍控制 DAG、状态、写入边界、验证和收口;不会自动运行 SDD 初始化/扫描 skill,也不会推进 `ai_workspace` 状态或归档。没有这些 repo-local skills 时,生成结果保持原有默认流程。
209
- - **run-owned skill snapshot**:新 DAG run 会在任何节点执行前,把本次实际注入 prompt 的 resolved skill profiles 冻结到 run 自己的 `.runtime/skill-snapshot.json`。后续节点、dynamic child、approve/resume 都使用同一份 hash-anchored snapshot;run 内修改 skill 只会从下一次 run 生效。
210
- - **controller identity**:`agent-worker` 把一次 Feature/batch 实际使用的发布包、入口、启动参数和 package 内容 fingerprint 固定下来,并把 identity 传播到 Worker、Task Pool、batch/Feature 与最终验证证据。
211
- - **只读 Pi 节点安全重试**:仅 planner/scout/reviewer/verifier/closeout 这类没有仓库写入能力的 Pi 节点,遇到模型连接中断、provider 限流、临时不可用或 timeout 时,可在同一 run 内有界重试;生成模板会自动声明默认 `retryPolicy`(总尝试 3 次、最多可配置 5 次、指数退避、单次等待上限 30s)。每次 attempt 保留独立证据,耗时与 Token 用量按尝试聚合,后一次成功不覆盖前一次失败证据。`quota`/`auth`/`invalid-output`/`write-guard` 与未知失败不重试;supervisor、implementer、writer、dynamic、shell、static、docs-only、decision-gate 节点不重试。
212
- - **`agent-worker` operator skill**:`skills/agent-worker/` 只负责 Feature Packet、TaskSpec、Task Pool、自举 release train 和失败恢复的外层路由;单个 DAG 实现、DAG kernel 修复和节点执行仍由 `loop-agent` 负责,该 skill 不进入默认 DAG role skills。
213
- - **治理文档**:`docs/` 保存原则、工作流、验证矩阵、runtime 边界、计划和报告。
214
- - **shell verification**:完成声明必须有可复现命令作为依据,而不是只靠聊天结论。
215
-
216
- 这些治理原则的设计思想吸收了 Anthropic 长时运行 agent harness、OpenAI Codex harness engineering、腾讯端到端 Harness Engineering 和社区 agent harness 实践:人类掌舵,智能体执行;仓库作为记录系统;任务小步推进;用结构化 handoff 与可复现验证跨 session 保持连续性。背景资料收录在 `website/docs/practices/`。
217
-
218
- ## 仓库地图
219
-
220
- 本仓库按职责分区;更细的开工协议与会话规则见 `AGENTS.md`,治理索引见 `docs/README.md`。
221
-
222
- | 路径 | 职责 |
223
- |---|---|
224
- | `bin/`、`src/` | CLI 入口与运行时代码 |
225
- | `skills/` | repo-local skill 指令与 references |
226
- | `.harness/` | task、DAG run、cache、live state 等运行态事实 |
227
- | `docs/` | 长期治理文档、计划、报告与模板 |
228
- | `website/` | 面向使用者的文档站 |
229
- | `scripts/`、`test/` | 验证脚本与测试套件 |
230
- | `examples/` | 可复制 DAG 示例(默认不投影到目标项目) |
231
- | `features/`、`dogfood/` | 样板 Feature Packet 与 dogfood 样本(本仓库维护用) |
232
- | `harness.json`、`AGENTS.md`、`CONTEXT.md` | 项目配置、agent 开工地图与术语表 |
233
-
234
- ## 能力概览
235
-
236
- - 生成、校验、执行和汇总 Agent DAG。
237
- - 通过 `eval replay` / `eval report` 对 completed DAG evidence 做 hash-anchored、deterministic 的只读重放比较;M1 不执行模型也不授权候选晋升。
238
- - 通过 `eval candidate register|show|list|transition` 管理不可变 Candidate Bundle 与 append-only lifecycle(M2 registry MVP);不跑 live Pi/DAG,不移动 incumbent alias。
239
- - 从任务说明生成标准 DAG,并按依赖顺序运行规划、实现、验证和收口节点。
240
- - 维护 `loop` 长程任务状态,包括目标、轮次、信号、验证事实和收口草稿。
241
- - 通过 Pi executor 执行只读规划、评审、诊断和有边界写入(唯一受治理 Agent writer)。
242
- - 保留 `cursor-prompt` 作为显式、手工触发的 one-shot sidecar(不是受治理 DAG/Loop writer)。
243
- - 通过 shell executor 运行确定性的验证命令。
244
- - 检查任务状态、运行态工件、文档链接、skill entry 和 runtime boundary 等治理规则。
245
-
246
- ## 内置示例
247
-
248
- `examples/` 默认不复制到目标项目。可以通过工具内置命令查看或按需复制:
80
+ 启动本地只读看板:
249
81
 
250
82
  ```bash
251
- loop-agent examples list
252
- loop-agent examples show example-dag.json
253
- loop-agent examples copy example-dag.json --repo-root <target-repo>
83
+ agent-worker observe serve --repo . --port 8787
254
84
  ```
255
85
 
256
- ## 迭代本仓库
86
+ 访问 <http://127.0.0.1:8787/>。Observe 只读取运行事实,不修改 DAG、Task Pool 或 Feature 状态。
257
87
 
258
- 如果要用 loop-agent 迭代 loop-agent 本仓库,发布版本 N 必须作为整个维护批次的固定 controller,候选版本 N+1 只能在隔离安装槽中接受接棒验证。不要使用当前工作区的 `npm link` 或 `npm run dev` 作为 controller;首次安装或有意升级可用 `@latest`,但一次自举任务启动后不要中途升级或重新通过 PATH 解析入口。
88
+ ## 核心边界
259
89
 
260
- ```bash
261
- npm install -g @tea-agent/loop-agent@latest
262
- npm list -g @tea-agent/loop-agent --depth=0
263
- loop-agent doctor
264
- loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <repo-root>
265
- ```
90
+ - `.harness/` 保存任务、DAG run、one-shot run 和可选 Task Pool 运行事实。
91
+ - `ai_workspace/loop-agent/` 保存目标项目的长期治理资料。
92
+ - `.agents/skills/` 保存目标项目可审计的 repo-local skills。
93
+ - `agent-worker` 通过已发布的 `loop-agent` 子进程执行 DAG,不维护第二套 runtime kernel。
94
+ - 当前不内置远程 Task Pool、云 Worker 集群、自动 push、自动创建或合并 PR、生产凭据管理。
266
95
 
267
- `@latest` 只用于安装或升级,不要在 DAG 节点里反复用 `npx @latest` 拉取。自举证据应记录 controller version、portable package fingerprint、候选 commit/tarball hash 和失败 run;semver 相同并不代表 package 内容相同。
96
+ 架构说明见[系统全景](docs/architecture/system-overview.md)和 [runtime 边界](docs/architecture/runtime-boundaries.md)。
268
97
 
269
- 源码仓库提供 repo-maintainer deterministic takeover canary。它打包候选、安装到临时隔离 slot,由维护脚本独立计算 canonical package fingerprint 并与候选实现交叉核对,再通过候选包内两个绝对入口执行 full init、doctor、inspect、docs audit、目标项目治理检查、Feature validation/dry-run 和一个只含 static/shell executor 的小型 DAG;所有子进程都有硬超时,PATH trap 证明没有回退全局 `loop-agent` / `agent-worker` 命令,run evidence 则证明没有观察到 Pi/model executor:
98
+ ## 文档导航
270
99
 
271
- ```bash
272
- npm run self-host:canary -- --deterministic --output <evidence.json>
273
- # 或验证已经构建好的候选 tarball
274
- npm run self-host:canary -- --deterministic --tarball <candidate.tgz> --output <evidence.json>
275
- ```
100
+ ### 使用者
276
101
 
277
- 该脚本属于源码仓库维护入口,不进入发布包的 `files` surface;`--live` 当前明确拒绝执行。deterministic canary 证明候选包和 static/shell runtime 能接棒,但不会调度 Pi executor,也不承担 Pi skill source 解析证明;run-owned skill snapshot 的候选包解析由 snapshot 定向测试和真实 DAG 证据单独证明。
102
+ - [安装](website/docs/quick-start/installation.md)
103
+ - [初始化目标项目](website/docs/quick-start/init-target-project.md)
104
+ - [第一次运行](website/docs/quick-start/first-run.md)
105
+ - [功能导览](website/docs/overview/feature-map.md)
106
+ - [CLI 参考](website/docs/reference/cli.md)
107
+ - [Observe 看板](website/docs/guides/observe-ui.md)
278
108
 
279
- ## 文档导航
109
+ ### 维护者与 Agent
280
110
 
281
- | 路径 | 用途 |
282
- |---|---|
283
- | `AGENTS.md` | 本仓库的 agent 开工协议、会话协议和长期工作规则 |
284
- | `docs/github-collaboration.md` | 内部贡献者的轻量 GitHub 协作指南:短分支、PR、CI 与 Squash Merge |
285
- | `harness.json` | loop-agent 在本仓库的模型、executor、治理根目录和脚本配置 |
286
- | `docs/README.md` | 治理文档索引 |
287
- | `docs/verification-matrix.md` | 不同变更类型对应的验证命令 |
288
- | `docs/production-readiness.md` | Production Readiness v0.1 支持范围、证据和验收标准 |
289
- | `docs/architecture/runtime-boundaries.md` | runtime 层边界和依赖方向 |
290
- | `skills/loop-agent/` | loop-agent skill 入口和 references |
291
- | `examples/` | 可复用 DAG 示例 |
292
- | `website/docs/` | 面向使用者的 Docusaurus 文档站内容 |
293
- | `website/docs/practices/` | Anthropic、OpenAI Codex、腾讯端到端工程与社区 harness 实践资料 |
111
+ - [`AGENTS.md`](AGENTS.md):开工协议与工作规则
112
+ - [`docs/README.md`](docs/README.md):治理文档总索引
113
+ - [`docs/feature-workflow.md`](docs/feature-workflow.md):会话治理与 runtime workflow
114
+ - [`docs/verification-matrix.md`](docs/verification-matrix.md):验证命令选择
115
+ - [`docs/architecture/`](docs/architecture/README.md):架构、事实与演进边界
116
+ - [`CHANGELOG.md`](CHANGELOG.md):版本变化与 breaking changes
294
117
 
295
118
  ## 本仓库开发
296
119
 
297
- 内部贡献代码时,先阅读 [`docs/github-collaboration.md`](docs/github-collaboration.md)。当前采用轻量协作方式:一个小工作块使用一个短分支,通过简短 Pull Request、CI 和同事确认后,默认 Squash Merge 到 `main`。
298
-
299
- 本地源码开发:
120
+ 开始修改前先阅读 `AGENTS.md`。常用验证:
300
121
 
301
122
  ```bash
302
123
  npm install
303
- npm run build
304
- node bin/loop-agent.js --help
305
- npm run dev -- --help
306
- ```
307
-
308
- 常用验证命令:
309
-
310
- ```bash
311
- npm run typecheck
312
- npm test
313
- bash scripts/check-repo.sh
314
- bash scripts/ci.sh
315
- npm run docs:build
316
- ```
317
-
318
- 当前 CLI 使用 `commander` 组织 command tree。顶层 help、子命令 help、参数解析和未知命令错误都由 commander 驱动。
319
-
320
- Windows 上运行 `scripts/*.sh` 时使用 Git Bash 或已配置的兼容 Bash,不要求使用 WSL 或 POSIX 路径。实际文件操作和 `--output` / `--dag` / `--cwd` 参数使用当前平台原生路径;仓库内引用、JSON/Markdown 证据引用和 glob 约定可继续用 `/` 作为稳定分隔符。
321
-
322
- ## 发布包内容
323
-
324
- 发布包包含静态运行和指导资料:`bin/`、`dist/`、`skills/`(包括 `loop-agent` 与可选的 `agent-worker` operator skill)、必要的治理文档(`docs/README.md`、三份 methodology、显式列出的 `docs/architecture/*.md`)、`docs/skills/`、`docs/templates/`、`docs/init-surface.manifest.json`、知识库运行脚本(`scripts/kb-*.mjs` 与 `kb-bootstrap-init-skeleton.sh`)、`examples/`、`harness.json`、`AGENTS.md`、`README.md` 和 `CHANGELOG.md`。
325
-
326
- `docs/progress/`、`docs/reports/`、`docs/exec-plans/`、`docs/decisions/`、`docs/design/` 的任务正文与目录 README 不随包发布;`loop-agent init` 会在目标项目生成空目录契约,具体 plan/progress/report/decision 由后续真实任务写入。源仓库专属说明(如 agent-dag playbook、sidecar 说明)也不再打进 npm 包。
327
-
328
- DAG skill 指令优先从用户配置目录和目标项目 `.agents/skills/` 解析;目标项目未提供本地 skill 时,CLI 会回退到 npm 包内置的 `skills/`。因此普通项目不需要复制 loop-agent 仓库历史文档或根 `skills/` 目录才可获得默认 DAG 能力。
329
-
330
- ## 发布前检查
331
-
332
- 发布 npm 包前至少运行:
333
-
334
- ```bash
335
124
  npm run typecheck
336
125
  npm test
337
126
  npm run build
338
- node bin/loop-agent.js --help
339
- npm pack --dry-run
127
+ bash scripts/check-repo.sh
340
128
  ```
341
129
 
342
- `npm publish` 时会通过 `prepublishOnly` 依次执行:
343
-
344
- 1. `node scripts/check-npm-publish-policy.mjs` — 发布策略门禁
345
- 2. `npm run typecheck`
346
- 3. `npm test`
347
- 4. `npm run build`
348
-
349
- ### frontend 分支发布限制
350
-
351
- 在 `frontend` 分支执行 `npm publish` 时,必须同时满足:
352
-
353
- - `package.json` 版本为合法的 SemVer **beta** 预发布版本(例如 `0.13.0-beta.1`)
354
- - 必须显式指定 `--tag beta`(即 `npm publish --tag beta`)
130
+ 完整门禁和特定环境排障分别见:
355
131
 
356
- 任一条件不满足时,`prepublishOnly` 会在上传 npm registry 前失败并给出中文错误提示。其他分支不受此限制。
132
+ - [`docs/verification-matrix.md`](docs/verification-matrix.md)
133
+ - [`docs/local-development-environment.md`](docs/local-development-environment.md)
357
134
 
358
- 发布入口 `bin/loop-agent.js` 只加载 `dist/cli.js`;`npm run dev -- <args>` 只用于源码开发和定位问题。
135
+ 发布和初始化 surface 变更还应运行 `npm pack --dry-run` `bash scripts/check-init-surface.sh`。