@tea-agent/loop-agent 0.10.0 → 0.12.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.
- package/AGENTS.md +10 -2
- package/CHANGELOG.md +91 -24
- package/README.md +84 -12
- package/dist/application/dag/args.js +1 -12
- package/dist/application/dag/generate-task-dag.js +38 -2
- package/dist/application/dag/run-dag.js +11 -27
- package/dist/application/dag/validate-dag.js +13 -2
- package/dist/application/loop/run-action.js +0 -4
- package/dist/cli/command-definitions.js +44 -16
- package/dist/cli/program.js +40 -23
- package/dist/cli/update/notifier.js +117 -0
- package/dist/cli/update/npm-client.js +151 -0
- package/dist/cli/update/policy.js +58 -0
- package/dist/cli/update/state.js +68 -0
- package/dist/cli.js +33 -0
- package/dist/commands/cursor-prompt.js +42 -82
- package/dist/commands/dag-approve.js +36 -0
- package/dist/commands/delegate.js +75 -77
- package/dist/commands/doctor.js +0 -18
- package/dist/commands/init.js +547 -95
- package/dist/commands/instructions.js +7 -10
- package/dist/commands/loop.js +4 -20
- package/dist/commands/plan.js +50 -0
- package/dist/executors/config-core.js +0 -51
- package/dist/executors/dag-pi-executor.js +1 -1
- package/dist/executors/dag.js +0 -1
- package/dist/executors/index.js +0 -2
- package/dist/executors/model-routing.js +9 -9
- package/dist/executors/shell-executor.js +1 -1
- package/dist/governance/checks.js +6 -3
- package/dist/governance/exec-plans.js +545 -0
- package/dist/governance/manifest-types.js +24 -2
- package/dist/infrastructure/harness/loop-action-store.js +0 -3
- package/dist/records/harvest.js +2 -23
- package/dist/records/one-shot-runs.js +1 -1
- package/dist/shared/artifacts-core.js +24 -5
- package/dist/shared/output-truncation.js +37 -0
- package/dist/shared/package-metadata.js +488 -0
- package/dist/{executors/cursor-executor.js → sidecars/cursor-prompt/executor.js} +2 -42
- package/dist/sidecars/cursor-prompt/index.js +3 -0
- package/dist/sidecars/cursor-prompt/stream.js +121 -0
- package/dist/task/config-types.js +29 -12
- package/dist/task/delegate.js +9 -21
- package/dist/task/runtime.js +1 -2
- package/dist/worker/cli.js +32 -3
- package/dist/worker/delivery/final-verification.js +47 -11
- package/dist/worker/delivery/package.js +63 -10
- package/dist/worker/feature/run.js +60 -8
- package/dist/worker/loop-agent/loop-agent-client.js +329 -126
- package/dist/worker/observability/event-history.js +216 -0
- package/dist/worker/observability/read-model.js +338 -83
- package/dist/worker/observe/paths.js +17 -0
- package/dist/worker/observe/routes.js +165 -21
- package/dist/worker/observe/server.js +59 -1
- package/dist/worker/observe/static/api.js +27 -0
- package/dist/worker/observe/static/app.js +120 -2317
- package/dist/worker/observe/static/constants.js +148 -0
- package/dist/worker/observe/static/copy.js +67 -0
- package/dist/worker/observe/static/dag-helpers.js +172 -0
- package/dist/worker/observe/static/dag-model.js +72 -0
- package/dist/worker/observe/static/dom.js +61 -0
- package/dist/worker/observe/static/format-pool.js +67 -0
- package/dist/worker/observe/static/format.js +292 -0
- package/dist/worker/observe/static/index.html +300 -82
- package/dist/worker/observe/static/kpi.js +94 -0
- package/dist/worker/observe/static/relations.js +128 -0
- package/dist/worker/observe/static/router.js +85 -0
- package/dist/worker/observe/static/run-processing.js +148 -0
- package/dist/worker/observe/static/shell-chrome.js +68 -0
- package/dist/worker/observe/static/state.js +253 -0
- package/dist/worker/observe/static/styles.css +1720 -495
- package/dist/worker/observe/static/views/batch.js +226 -0
- package/dist/worker/observe/static/views/dag-graph.js +172 -0
- package/dist/worker/observe/static/views/dag-inspector.js +477 -0
- package/dist/worker/observe/static/views/dag.js +362 -0
- package/dist/worker/observe/static/views/dashboard.js +442 -0
- package/dist/worker/observe/static/views/failures.js +143 -0
- package/dist/worker/observe/static/views/feature.js +453 -0
- package/dist/worker/observe/static/views/pool.js +347 -0
- package/dist/worker/observe/static/views/run.js +453 -0
- package/dist/worker/observe/static/views/session-timeline.js +205 -0
- package/dist/worker/observe/static/views/shell.js +7 -0
- package/dist/worker/observe/static/views/task.js +260 -0
- package/dist/worker/observe/static/views/timeline.js +163 -0
- package/dist/worker/preflight.js +49 -1
- package/dist/worker/run-task/run-task.js +22 -12
- package/dist/worker/runner/run-ready.js +76 -12
- package/dist/worker/task-spec/schema.js +0 -1
- package/dist/workflows/dag/controller-identity.js +104 -0
- package/dist/workflows/dag/convergence/controller.js +1 -1
- package/dist/workflows/dag/executor-registry.js +0 -2
- package/dist/workflows/dag/init-hybrid.js +797 -27
- package/dist/workflows/dag/node-execution.js +183 -35
- package/dist/workflows/dag/repair-artifact.js +91 -0
- package/dist/workflows/dag/report.js +50 -0
- package/dist/workflows/dag/retry-policy.js +138 -0
- package/dist/workflows/dag/runner.js +77 -17
- package/dist/workflows/dag/runtime-contract.js +87 -0
- package/dist/workflows/dag/scheduler.js +7 -2
- package/dist/workflows/dag/sdd-embedded.js +128 -0
- package/dist/workflows/dag/skill-instructions.js +5 -4
- package/dist/workflows/dag/skill-snapshot.js +529 -0
- package/dist/workflows/dag/types.js +86 -10
- package/dist/workflows/dag/validate.js +73 -12
- package/dist/workflows/loop/actions/dag-action.js +0 -2
- package/dist/workflows/loop/actions/shared.js +1 -1
- package/dist/workflows/loop/actions.js +14 -31
- package/dist/workflows/loop/benchmark.js +1 -1
- package/dist/workflows/loop/index.js +1 -1
- package/dist/workflows/loop/policy/auto-policy.js +22 -14
- package/dist/workflows/loop/policy/path-patterns.js +13 -0
- package/docs/README.md +36 -33
- package/docs/agent-dag-recovery-playbook.md +1 -1
- package/docs/agent-dag-runner.md +28 -3
- package/docs/architecture/README.md +26 -0
- package/docs/architecture/dag-execution.md +140 -0
- package/docs/architecture/evolution.md +53 -0
- package/docs/architecture/facts-and-state.md +58 -0
- package/docs/architecture/runtime-boundaries.md +45 -17
- package/docs/architecture/system-overview.md +93 -0
- package/docs/architecture/worker-and-feature.md +81 -0
- package/docs/cursor-prompt-sidecar.md +36 -0
- package/docs/decisions/README.md +13 -1
- package/docs/design/README.md +43 -21
- package/docs/development-principles.md +2 -2
- package/docs/exec-plans/active/README.md +1 -3
- package/docs/exec-plans/completed/README.md +23 -0
- package/docs/feature-workflow.md +78 -4
- package/docs/harness-methodology-debugging.md +1 -1
- package/docs/harness-methodology-tdd.md +3 -3
- package/docs/init-surface.manifest.json +60 -25
- package/docs/loop-agent-harness.md +28 -4
- package/docs/progress/README.md +50 -1
- package/docs/reports/README.md +90 -18
- package/docs/skills/README.md +2 -1
- package/docs/skills/vetted-skill-registry.md +2 -1
- package/docs/templates/agent-dag-report.schema.json +23 -6
- package/docs/templates/agent-dag.base.json +0 -5
- package/docs/templates/agent-dag.final-verification.json +0 -5
- package/docs/templates/agent-dag.schema.json +70 -3
- package/docs/templates/agent-dag.supervised-implementation.json +9 -8
- package/docs/templates/backend-test-dag.generate-pytest.prompt.md +139 -0
- package/docs/templates/backend-test-dag.json +276 -0
- package/docs/templates/backend-test-dag.retrospect.prompt.md +125 -0
- package/docs/templates/backend-test-dag.review-cases.prompt.md +81 -0
- package/docs/templates/frontend-design-contract.md +33 -0
- package/docs/templates/frontend-task-constraints.md +25 -0
- package/docs/templates/frontend-task-requirement.md +61 -0
- package/docs/templates/harness.schema.json +10 -12
- package/docs/templates/hybrid-dag.json +1 -6
- package/docs/templates/interactive-ui-round2-experiment.md +1 -1
- package/docs/templates/product-line/task.yaml +0 -1
- package/docs/templates/project-start-checklist.md +2 -2
- package/docs/templates/worker-dogfood-evidence.md +28 -0
- package/docs/templates/worker-dogfood-setup.md +20 -0
- package/docs/verification-matrix.md +10 -0
- package/examples/decision-gate-agent-dag.json +87 -33
- package/examples/example-dag.json +0 -5
- package/examples/hybrid-loop-agent-dag.json +0 -5
- package/harness.json +7 -15
- package/package.json +22 -46
- package/scripts/check-product-line-docs.sh +10 -7
- package/skills/agent-worker/SKILL.md +37 -0
- package/skills/agent-worker/references/agent-worker-operator.md +43 -0
- package/skills/frontend-design-review/SKILL.md +59 -0
- package/skills/frontend-design-review/references/review-checklist.md +37 -0
- package/skills/frontend-implementation/SKILL.md +51 -0
- package/skills/frontend-implementation/references/code-standards.md +34 -0
- package/skills/frontend-implementation/references/design-spec.md +46 -0
- package/skills/frontend-implementation/references/node-contracts.md +32 -0
- package/skills/frontend-review/SKILL.md +53 -0
- package/skills/frontend-review/references/review-findings.md +42 -0
- package/skills/frontend-verification/SKILL.md +40 -0
- package/skills/frontend-verification/references/verification-checklist.md +56 -0
- package/skills/grill-me/SKILL.md +10 -0
- package/skills/grill-with-docs/SKILL.md +88 -0
- package/skills/grill-with-docs/adr-format.md +47 -0
- package/skills/grill-with-docs/context-format.md +60 -0
- package/skills/loop-agent/SKILL.md +11 -9
- package/skills/loop-agent/references/command-reference.md +14 -15
- package/skills/loop-agent/references/docs-converge.md +126 -0
- package/skills/loop-agent/references/harness-policy.md +7 -7
- package/skills/loop-agent/references/hybrid-dag.md +36 -20
- package/skills/loop-agent/references/long-running-loop.md +4 -6
- package/skills/loop-agent/references/multi-worktree.md +6 -6
- package/skills/loop-agent/references/orchestrator-and-interventions.md +3 -3
- package/skills/loop-agent/references/pi-subagent-assisted-mode.md +14 -11
- package/skills/loop-agent/references/task-workflow.md +1 -1
- package/skills/loop-agent/references/verification-and-failure-handling.md +6 -0
- package/skills/using-git-worktrees/SKILL.md +215 -0
- package/dist/commands/cursor-worker.js +0 -43
- package/dist/cursor-worker-entry.js +0 -8
- package/dist/executors/cursor-artifacts.js +0 -33
- package/dist/executors/cursor-execution-log.js +0 -81
- package/dist/executors/cursor-executor-artifacts.js +0 -134
- package/dist/executors/cursor-run.js +0 -115
- package/dist/executors/cursor-tool.js +0 -94
- package/dist/executors/cursor-worker-client.js +0 -223
- package/dist/executors/cursor-worker-protocol.js +0 -18
- package/dist/executors/cursor-worker-server.js +0 -54
- package/dist/executors/cursor-worker.js +0 -3
- package/dist/executors/cursor.js +0 -6
- package/dist/executors/dag-cursor-executor.js +0 -87
- package/dist/workflows/loop/actions/cursor-fix.js +0 -191
- package/dist/workflows/loop/policy/cursor-fix-policy.js +0 -31
- package/docs/cursor-executor-usage.md +0 -25
- package/docs/dynamic-workflow-dag-engine-roadmap.md +0 -1749
package/docs/design/README.md
CHANGED
|
@@ -2,33 +2,54 @@
|
|
|
2
2
|
|
|
3
3
|
`docs/design/` 存放将 `loop-agent` 作为更大产品线 agent 平台内仓库本地 runtime 的规划笔记。这些是设计输入,不是 `src/` 已具备该能力的证明。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 契约与实现映射(优先读)
|
|
6
6
|
|
|
7
|
-
| 文档 | 用途 |
|
|
8
|
-
|---|---|
|
|
9
|
-
| `DESIGN-cursor.md` | Observe 暖白运行控制台采用的 Cursor 风格视觉参考与设计 token |
|
|
10
|
-
| `DESIGN-lovable.md` | Lovable 风格的暖色视觉系统参考 |
|
|
11
|
-
| `产品线共享知识库.md` | 产品线文档仓库作为上游事实源 |
|
|
12
|
-
| `研发模式.md` | 10 个工作日 Feature 团队工作流 |
|
|
13
|
-
| `六个月规划.md` | 六个月路线图与目标架构 |
|
|
7
|
+
| 文档 | 用途 |
|
|
8
|
+
|---|---|
|
|
14
9
|
| `taskspec-to-loop-agent-mapping.md` | 将产品线 TaskSpec 适配为 `loop-agent` task 的契约 |
|
|
10
|
+
| `taskspec-to-loop-agent-mapping.yaml` | 同上契约的结构化对照表 |
|
|
15
11
|
| `state-and-failure-taxonomy.md` | 文档、Task Pool、DAG、Loop 共用的 canonical status 与 failure taxonomy |
|
|
16
|
-
| `
|
|
17
|
-
|
|
12
|
+
| `frontend-implementation-workflow.md` | 前端 DAG 实现 / 评审 / 验证工作流与证据约定 |
|
|
13
|
+
|
|
14
|
+
## 路线与产品线笔记(非实现证明)
|
|
15
|
+
|
|
16
|
+
| 文档 | 用途 |
|
|
17
|
+
|---|---|
|
|
18
|
+
| `dynamic-workflow-dag-engine-roadmap.md` | Dynamic Workflow 适配分析与阶段规划;**页首有实现状态 / Pi-only 校准条**(已落地 vs 设计输入);正文 Cursor 叙述视为历史 |
|
|
19
|
+
| `六个月规划.md` | 长期路线;**页首 2026-07-15 / 0.11.0 校准**;第 1–2 月为 archive/reports 指针,当前有效前瞻从第 3 月起 |
|
|
20
|
+
| `产品线共享知识库.md` | 产品线文档仓库作为上游事实源;**页首 2026-07-15 / 0.11.0 校准**(模板+Feature dogfood 已落地 vs docs-sync 未来) |
|
|
21
|
+
| `研发模式.md` | 10 个工作日 Feature 团队工作流 |
|
|
22
|
+
| `腾讯实践对当前项目的指引.md` | 腾讯 Harness Engineering 实践对本仓库的映射笔记;源文见 `website/docs/practices/tencent-harness-engineering/index.md` |
|
|
23
|
+
|
|
24
|
+
## 视觉参考
|
|
25
|
+
|
|
26
|
+
| 文档 | 用途 |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `2026-07-14-loop-agent-self-update-notifier.md` | loop-agent CLI 自更新提醒设计(设计已确认,尚未实现;覆盖用户级状态、npm global 来源证明、精确安装与验证边界) |
|
|
29
|
+
| `DESIGN-cursor.md` | Observe 暖白运行控制台采用的 Cursor 风格视觉参考与设计 token |
|
|
30
|
+
| `DESIGN-lovable.md` | Lovable 风格的暖色视觉系统参考 |
|
|
31
|
+
|
|
32
|
+
## 已归档
|
|
33
|
+
|
|
34
|
+
| 文档 | 用途 |
|
|
35
|
+
|---|---|
|
|
36
|
+
| `archive/2026-07-07-agent-worker-plan.md` | 已归档:Worker 落地计划(基线 0.3.0,M1-M7;已随 0.8.0 发布实现于 `src/worker/`) |
|
|
37
|
+
| `archive/2026-07-07-taskspec-plan.md` | 已归档:TaskSpec v0.1 schema 设计(已实现于 `src/worker/task-spec/`) |
|
|
18
38
|
| `archive/2026-07-10-下一阶段任务-功能开发完成.md` | 已归档:真实样本、失败硬化与 QA 闭环的功能性开发完成记录 |
|
|
19
|
-
| `archive/2026-07-10-observe-ui.md` | 已归档:
|
|
20
|
-
| `archive/2026-07-10-observe-ui-optimization.md` | 已归档:Observe UI
|
|
21
|
-
| `archive/2026-07-10-observe-ui-goal.md` | 已归档:OBS-001~010 逐任务进度看板(全部
|
|
22
|
-
| `archive/2026-07-
|
|
23
|
-
| `archive/2026-07-11
|
|
24
|
-
| `archive/2026-07-
|
|
39
|
+
| `archive/2026-07-10-observe-ui.md` | 已归档:Observe UI v0 设计(OBS-001~010;0.9.0 暖白重设计在其上演进) |
|
|
40
|
+
| `archive/2026-07-10-observe-ui-optimization.md` | 已归档:Observe UI 中文化与过程时间线(UI-1~UI-9 已实现) |
|
|
41
|
+
| `archive/2026-07-10-observe-ui-goal.md` | 已归档:OBS-001~010 逐任务进度看板(全部 done) |
|
|
42
|
+
| `archive/2026-07-14-observe-ui-roadmap.md` | 已归档:Observe R1–R5 运营控制台路线图(资源池/Batch-Run/Feature 关联/事件时间线/前端模块化;证据见 completed plans + reports) |
|
|
43
|
+
| `archive/2026-07-11-第一月规划.md` | 已归档:首月落地计划(0.8.0 + Round 1/2/3 闭环) |
|
|
44
|
+
| `archive/2026-07-11-第一月wbs.md` | 已归档:首月 WBS 与分工(历史记录) |
|
|
45
|
+
| `archive/2026-07-12-第二月规划.md` | 已归档:第二月本地 Feature 交付闭环(M2-01~08;见 `docs/reports/2026-07-12-m2-completion-audit.md`) |
|
|
25
46
|
|
|
26
47
|
## 命名约定(2026-07-09 起)
|
|
27
48
|
|
|
28
49
|
| 名称 | 含义 | 状态 |
|
|
29
50
|
|---|---|---|
|
|
30
51
|
| `loop-agent` | 仓库本地 runtime / 治理控制器 CLI | 已发布 |
|
|
31
|
-
| `agent-worker` | 产品线 TaskSpec 批处理适配层 CLI(`bin/agent-worker.js`) |
|
|
52
|
+
| `agent-worker` | 产品线 TaskSpec 批处理适配层 CLI(`bin/agent-worker.js`) | 已发布 |
|
|
32
53
|
| `agent-platform` | 早期规划设想名;**不是**当前 CLI。若出现在六个月目标架构中,仅表示未来产品线 monorepo / 上层服务集合,不得写成可执行命令 |
|
|
33
54
|
|
|
34
55
|
当前真实分层:
|
|
@@ -37,12 +58,12 @@
|
|
|
37
58
|
产品线 docs / TaskSpec / TaskGraph
|
|
38
59
|
→ agent-worker(本地批处理适配)
|
|
39
60
|
→ loop-agent(runtime kernel)
|
|
40
|
-
→
|
|
61
|
+
→ Pi(受治理 Agent) / shell / static
|
|
62
|
+
→ cursor-prompt(显式手工 one-shot sidecar,非受治理 writer)
|
|
41
63
|
```
|
|
42
64
|
|
|
43
65
|
命令示例一律使用 `agent-worker`,不要再写 `agent-platform task ...`。
|
|
44
66
|
|
|
45
|
-
|
|
46
67
|
## 维护规则
|
|
47
68
|
|
|
48
69
|
设计笔记变更时:
|
|
@@ -50,6 +71,7 @@
|
|
|
50
71
|
1. 保持 TaskSpec 字段、status 名称、failure category 与命令示例与契约文档一致
|
|
51
72
|
2. 未来平台组件标为目标架构,除非已存在于 `src/` 或 `scripts/`
|
|
52
73
|
3. 当前 CLI 命令示例只用 `agent-worker` / `loop-agent`;`agent-platform` 仅可出现在“未来 monorepo/上层服务”语境,并显式标注未实现
|
|
53
|
-
4. `src/task/config-types.ts` 或 DAG profile routing 变更时更新 `taskspec-to-loop-agent-mapping.md`
|
|
74
|
+
4. `src/task/config-types.ts` 或 DAG profile routing 变更时更新 `taskspec-to-loop-agent-mapping.md` / `.yaml`
|
|
54
75
|
5. DAG report category、Loop failure class 或 Task Pool state 变更时更新 `state-and-failure-taxonomy.md`
|
|
55
|
-
6.
|
|
76
|
+
6. 过期月规划 / 已落地专题设计迁入 `archive/`,并更新本 README
|
|
77
|
+
7. 运行 `bash scripts/check-repo.sh`
|
|
@@ -20,7 +20,7 @@ loop-agent 是面向 agentic coding 的工作流 runtime。仓库应保持小而
|
|
|
20
20
|
2. 设计新行为前先搜索现有代码、文档、脚本与测试。
|
|
21
21
|
3. Shell 验证是完成权威。
|
|
22
22
|
4. Runtime 状态在 `.harness/`;持久决策在 `docs/`。
|
|
23
|
-
5. Pi writer
|
|
23
|
+
5. Pi writer 节点必须由显式 allowed/forbidden paths 与 writeSet 约束;Cursor 仅可作为 `cursor-prompt` one-shot sidecar,不进入受治理 DAG/Loop 写入路径。
|
|
24
24
|
6. Pi review/planning 路径是 advisory,除非后跟确定性验证。
|
|
25
25
|
7. 反复出现的约束应固化为文档、测试、脚本、检查或模板。
|
|
26
26
|
8. 不要把隐藏流程状态只留在聊天里。
|
|
@@ -31,7 +31,7 @@ loop-agent 是面向 agentic coding 的工作流 runtime。仓库应保持小而
|
|
|
31
31
|
|
|
32
32
|
- 源码:`src/`
|
|
33
33
|
- 测试:`test/`
|
|
34
|
-
- Skill
|
|
34
|
+
- Skill 指令:源码仓库和 npm 包内置在 `skills/`,目标项目 repo-local skills 在 `.agents/skills/`
|
|
35
35
|
- 验证与维护脚本:`scripts/`
|
|
36
36
|
- 治理与交接产物:`docs/`
|
|
37
37
|
|
|
@@ -6,6 +6,4 @@
|
|
|
6
6
|
|
|
7
7
|
当前 active execution plan:
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
- 已归档:第二月 M2-01~M2-08、`../completed/2026-07-11-observe-dashboard-page-system.md`、`../completed/2026-07-11-observe-dashboard-detail-refinement.md`、`../completed/2026-07-11-observe-terminal-dag-kpi.md`、`../completed/2026-07-11-observe-polling-efficiency.md`、`../completed/2026-07-11-command-performance-guardrails.md` 及更早计划。
|
|
9
|
+
- 已归档:`../completed/2026-07-15-repair-artifact-gate-runtime-contract.md`、`../completed/2026-07-14-observe-ui-r5.md`、`../completed/2026-07-14-observe-ui-r4.md`、`../completed/2026-07-14-observe-ui-r3.md`、`../completed/2026-07-14-observe-ui-r2.md`、`../completed/2026-07-14-observe-ui-r1.md`、`../completed/2026-07-14-init-canonical-layout.md`、`../completed/2026-07-12-observe-warm-console-redesign.md`、`../completed/2026-07-14-website-docs-ia-and-converge.md`、`../completed/2026-07-13-versioned-self-hosting-bootstrap.md`、`../completed/2026-07-12-pi-only-agent-runtime.md`、第二月 M2-01~M2-08、`../completed/2026-07-11-observe-dashboard-page-system.md`、`../completed/2026-07-11-observe-dashboard-detail-refinement.md`、`../completed/2026-07-11-observe-terminal-dag-kpi.md`、`../completed/2026-07-11-observe-polling-efficiency.md`、`../completed/2026-07-11-command-performance-guardrails.md` 及更早计划。
|
|
@@ -4,6 +4,23 @@
|
|
|
4
4
|
|
|
5
5
|
npm 包携带本 README 作为目录契约。具体 completed plan 属于目标仓库历史,不从 loop-agent 源码历史复制。
|
|
6
6
|
|
|
7
|
+
- [`2026-07-15-repair-artifact-gate-runtime-contract.md`](2026-07-15-repair-artifact-gate-runtime-contract.md) — 显式 `repairNodeId` + 严格 repair writer 契约、DagSpec `runtimeContract` capability preflight,以及 run-owned controller identity(resume 漂移 fail-closed)
|
|
8
|
+
- [`2026-07-14-backend-test-dag-template.md`](2026-07-14-backend-test-dag-template.md) — 通过 `taskKind: "backend-test"` 生成需求分析、功能用例、pytest 自动化、执行与复盘的 Pi-only 专用 DAG
|
|
9
|
+
- [`2026-07-14-observe-ui-r5.md`](2026-07-14-observe-ui-r5.md) — Observe 原生 ES module 拆分、四态 helper、Pool hash 筛选与入口 re-export
|
|
10
|
+
- [`2026-07-14-observe-ui-r4.md`](2026-07-14-observe-ui-r4.md) — Observe Batch/Pool 有界事件时间线、cursor/limit、JSONL 容量与投影 fault-first
|
|
11
|
+
- [`2026-07-14-observe-ui-r2.md`](2026-07-14-observe-ui-r2.md) — Observe Batch / Worker Run 证据化详情、三层只读结构与安全 artifact preview
|
|
12
|
+
- [`2026-07-14-observe-ui-r3.md`](2026-07-14-observe-ui-r3.md) — Observe Feature 决策详情、copy-only 建议命令与 canonical 对象关系导航
|
|
13
|
+
- [`2026-07-14-observe-ui-r1.md`](2026-07-14-observe-ui-r1.md) — Observe 资源池总览、Task 下钻、精确对象关联与有界 run history
|
|
14
|
+
- [`2026-07-14-init-canonical-layout.md`](2026-07-14-init-canonical-layout.md) — 目标项目治理资料统一到 `ai_workspace/loop-agent/` 与 `.agents/skills/`,并为旧布局提供保守安全迁移
|
|
15
|
+
- [`2026-07-14-self-update-notifier-implementation.md`](2026-07-14-self-update-notifier-implementation.md) — 实现 loop-agent CLI 自更新提醒,覆盖拒绝版本、精确安装、npm global 来源证明和验证收口
|
|
16
|
+
- [`2026-07-12-observe-warm-console-redesign.md`](2026-07-12-observe-warm-console-redesign.md) — 以暖白、细边界和高密度信息架构重构 Observe Dashboard;多轮细节调整后按用户确认收口归档。
|
|
17
|
+
- [`2026-07-14-website-docs-ia-and-converge.md`](2026-07-14-website-docs-ia-and-converge.md) — Website 文档信息架构、双树边界与 `docs-converge` 同步机制
|
|
18
|
+
- [`2026-07-14-frontend-spec-source-fallback.md`](2026-07-14-frontend-spec-source-fallback.md) — 统一前端规范来源为知识库优先、失败后强制检索当前项目 `openSpec/`
|
|
19
|
+
- [`2026-07-13-test-environment-stability.md`](2026-07-13-test-environment-stability.md) — 修复 Windows Git Bash、npm CLI 启动与 Git/Delivery 测试资源分类,避免验证节点反复失败并跳过 DAG 收口
|
|
20
|
+
- [`2026-07-13-sdd-embedded-skills.md`](2026-07-13-sdd-embedded-skills.md) — 目标项目 repo-local SDD skills 的可选 DAG 节点嵌入增强,loop-agent 保持流程、状态与写边界控制
|
|
21
|
+
- [`2026-07-13-frontend-skill-contracts.md`](2026-07-13-frontend-skill-contracts.md) — 补齐前端节点 Skill 的输入、输出、证据与阻断契约,并预留组件/设计知识库接入 TODO
|
|
22
|
+
- [`2026-07-13-versioned-self-hosting-bootstrap.md`](2026-07-13-versioned-self-hosting-bootstrap.md) — 固定已发布 controller identity、冻结 run-owned skills,并由隔离候选包完成 deterministic self-hosting takeover canary
|
|
23
|
+
- [`2026-07-12-pi-only-agent-runtime.md`](2026-07-12-pi-only-agent-runtime.md) — 将 DAG、Loop、Delegate 和 Worker 收敛为 Pi-only 受治理 runtime,仅保留独立的 one-shot `cursor-prompt` sidecar
|
|
7
24
|
- [`2026-07-11-m2-01-feature-review-model.md`](2026-07-11-m2-01-feature-review-model.md) — 第二月首个纵向切片:严格派生 Feature 状态、AC/Delivery/Closeout 证据与只读 `feature review`
|
|
8
25
|
- [`2026-07-12-m2-02-feature-run-orchestration.md`](2026-07-12-m2-02-feature-run-orchestration.md) — Feature 级 dry-run 与复用现有 Worker pipeline 的薄编排入口
|
|
9
26
|
- [`2026-07-12-m2-03-follow-up-tracer-bullet.md`](2026-07-12-m2-03-follow-up-tracer-bullet.md) — ProductBug 失败到人工批准 FIX、依赖重连、Ready 与 verified lineage 的纵向闭环
|
|
@@ -48,3 +65,9 @@ npm 包携带本 README 作为目录契约。具体 completed plan 属于目标
|
|
|
48
65
|
- [`2026-07-10-obs-009.md`](2026-07-10-obs-009.md) — stale、quiet 与 timeout-risk 诊断
|
|
49
66
|
- [`2026-07-10-obs-010.md`](2026-07-10-obs-010.md) — Failure Inbox、文档、package surface 与 smoke 验证
|
|
50
67
|
- [`2026-07-10-observe-ui-review-remediation.md`](2026-07-10-observe-ui-review-remediation.md) — 修复 Observe UI 事件链路、历史 run 投影、artifact 安全边界与失败状态展示
|
|
68
|
+
|
|
69
|
+
- [`2026-07-13-exec-plan-lifecycle.md`](2026-07-13-exec-plan-lifecycle.md)
|
|
70
|
+
|
|
71
|
+
- [`2026-07-15-readonly-node-retry.md`](2026-07-15-readonly-node-retry.md)
|
|
72
|
+
|
|
73
|
+
- [`2026-07-15-init-update-surface-coverage.md`](2026-07-15-init-update-surface-coverage.md)
|
package/docs/feature-workflow.md
CHANGED
|
@@ -90,7 +90,7 @@ loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd .
|
|
|
90
90
|
2. `dag validate` 校验 schema、依赖、governance profile、写边界、model routing、shell 验证元数据
|
|
91
91
|
3. `run-dag` 加载 DAG、按拓扑排序为 ranks、有界并发执行可运行节点、持久化到 `.harness/dag-runs/<lifecycle>/<run-id>/`,并转入 `completed` 或 `paused`
|
|
92
92
|
|
|
93
|
-
标准生成的 hybrid DAG
|
|
93
|
+
标准生成的 hybrid DAG 固定为 Pi-only writer:
|
|
94
94
|
|
|
95
95
|
```text
|
|
96
96
|
contract-pi
|
|
@@ -102,7 +102,50 @@ contract-pi
|
|
|
102
102
|
-> closeout-pi
|
|
103
103
|
```
|
|
104
104
|
|
|
105
|
-
`implement-pi` 使用 `executor: "pi"` 与 `toolProfile: "write"
|
|
105
|
+
`implement-pi` / `repair-pi` 使用 `executor: "pi"` 与 `toolProfile: "write"`。受治理 runtime 不再生成或接受 `implement-cursor` / `repair-cursor`;旧 Cursor DAG 会在 schema 校验阶段失败,需要重新生成。
|
|
106
|
+
|
|
107
|
+
前端任务可通过 `task.json.taskKind = "frontend-implementation"` 选择专用模板:
|
|
108
|
+
|
|
109
|
+
```text
|
|
110
|
+
frontend-contract-pi
|
|
111
|
+
-> frontend-scout-pi
|
|
112
|
+
-> frontend-plan-pi
|
|
113
|
+
-> frontend-design-gate-pi
|
|
114
|
+
-> frontend-design-gate-shell
|
|
115
|
+
-> frontend-implement-pi
|
|
116
|
+
-> frontend-static-verify-shell
|
|
117
|
+
-> frontend-behavior-verify-shell
|
|
118
|
+
-> frontend-review-pi
|
|
119
|
+
-> frontend-review-gate-shell
|
|
120
|
+
-> frontend-closeout-pi
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
这条链在实现前加入 design gate,并将前端静态验证与行为验证分开建模;当前 MVP 不包含独立 a11y、视觉回归或浏览器自动化 executor。
|
|
124
|
+
|
|
125
|
+
后端测试任务可通过 `task.json.taskKind = "backend-test"` 选择专用模板;它不新增 governance profile:
|
|
126
|
+
|
|
127
|
+
```text
|
|
128
|
+
analyze-inputs-pi
|
|
129
|
+
-> generate-backend-functional-cases-pi
|
|
130
|
+
-> review-backend-cases-pi
|
|
131
|
+
-> review-backend-cases-gate-shell
|
|
132
|
+
-> generate-backend-pytest-pi
|
|
133
|
+
-> execute-backend-pytest-shell
|
|
134
|
+
-> test-retrospect-pi
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
这条链覆盖后端功能测试从需求分析到复盘评级的全链路流程:
|
|
138
|
+
|
|
139
|
+
1. **analyze-inputs-pi**:读取需求.md 和开发详设等参考文档,产出端到端测试分析契约(范围、风险、策略要点)
|
|
140
|
+
2. **generate-backend-functional-cases-pi**:根据契约生成结构化后端功能测试用例(Markdown),用例 ID 带 `BE-` 前缀(如 `BE-ORDER-001`),写入 `testcase/md/`
|
|
141
|
+
3. **review-backend-cases-pi**:评审后端功能测试用例,输出审查报告 + `VERDICT: pass` / `VERDICT: request-revision`
|
|
142
|
+
4. **review-backend-cases-gate-shell**:只有评审首条 verdict 为 `VERDICT: pass` 时才允许继续生成 pytest
|
|
143
|
+
5. **generate-backend-pytest-pi**:将后端功能用例转化为 pytest 自动化代码,仅写入 `testcase/**/test_*.py`
|
|
144
|
+
6. **execute-backend-pytest-shell**:执行 `pytest testcase/` 并生成 HTML 报告
|
|
145
|
+
7. **test-retrospect-pi**:读取上游审查报告和测试报告,生成复盘报告 + 成熟度评级(A/B/C/D)
|
|
146
|
+
|
|
147
|
+
前端测试模板(`frontend-test-dag`)后续沿用对称命名即可接入。
|
|
148
|
+
前端 shell 验证优先使用任务源 `需求.md` / `执行约束.md` 中声明的前端验证命令,例如 `npm run typecheck`、`npm run build`、`npm test`;解析不到时再使用 adapter 验证命令和模板 fallback。
|
|
106
149
|
|
|
107
150
|
`verify-shell` 使用 adapter 根据 task verify preset/quota 解析出的最终验证命令,并把新鲜 exit code/stdout/stderr 交给后续只读 verifier。review-gated 模板继续插入:
|
|
108
151
|
|
|
@@ -112,12 +155,29 @@ verify-shell -> verify-pi -> review-pi -> review-gate-shell -> closeout-pi
|
|
|
112
155
|
|
|
113
156
|
supervised 模板在实现路径上增加 write-set audit、soft/hard shell 验证、process supervision、有界 repair、decision gates 与可选 convergence retry。
|
|
114
157
|
|
|
158
|
+
### 只读 Pi 节点安全重试
|
|
159
|
+
|
|
160
|
+
所有生成模板都会为安全的只读 Pi 节点(planner/scout/reviewer/verifier/closeout,且 `writePolicy=read-only|none`、非 writer、非 dynamic、非 decision-gate)自动声明默认 `retryPolicy`(总尝试 3 次,手工配置最多 5 次,指数退避,单次等待上限 30s)。supervisor 与 implementer 明确不在资格范围。仅重试 `timeout`、`network`、`rate-limit`、`unavailable`;`quota`、`auth`、`invalid-output`、`write-guard` 与未知失败不重试。每次 attempt 保留独立证据,详见 [docs/agent-dag-runner.md](./agent-dag-runner.md#retry-read-only-pi-nodes)。
|
|
161
|
+
|
|
162
|
+
### 可选 repo-local SDD skill 增强
|
|
163
|
+
|
|
164
|
+
`dag run-task` 会在目标项目的 `.agents/skills/` 中探测三个可选 skill:
|
|
165
|
+
|
|
166
|
+
- `SDD-requirement-analysis` → `contract-pi`
|
|
167
|
+
- `SDD-design-analysis` → `plan-pi`
|
|
168
|
+
- `SDD-implementation-test-review` → `implement-pi`、`repair-pi`、`verify-pi`、`review-pi`
|
|
169
|
+
|
|
170
|
+
命中时,skill 通过节点 `skills` 进入现有 resolved instruction 和 run-owned snapshot 链路,并在节点任务中收到 embedded-mode 约束:只为当前 DAG 阶段提供知识、规范与方法,不得更新 `working_requirements_status.md`、推进 SDD 状态、触发 SDD 用户确认或执行归档。节点的读写边界、当前阶段与输出契约优先;writer 仍只允许写入显式 `writeSet`。`SDD-code-spec-init` 与 `SDD-project-how-to-spec-init` 不会在普通功能 DAG 中自动运行。
|
|
171
|
+
|
|
172
|
+
探测不到这些 repo-local skills 时,DAG 不追加节点 skill 或约束块,保持当前默认流程。用户级或 npm 包内同名 skill 也不会作为自动启用信号。
|
|
173
|
+
|
|
115
174
|
源码参考:
|
|
116
175
|
|
|
117
176
|
- `src/commands/dag-run-task.ts`
|
|
118
177
|
- `src/commands/dag-validate.ts`
|
|
119
178
|
- `src/commands/run-dag.ts`
|
|
120
179
|
- `src/workflows/dag/init-hybrid.ts`
|
|
180
|
+
- `src/workflows/dag/sdd-embedded.ts`
|
|
121
181
|
- `src/workflows/dag/runner.ts`
|
|
122
182
|
|
|
123
183
|
监督 agent 仍负责:
|
|
@@ -130,6 +190,21 @@ supervised 模板在实现路径上增加 write-set audit、soft/hard shell 验
|
|
|
130
190
|
|
|
131
191
|
声称 Production Readiness v0.1 的低/中风险单仓库任务,另须遵循 `docs/production-readiness.md` 与 `docs/templates/production-readiness-checklist.md`。该标准冻结支持范围、非目标、必需 DAG 证据、failure routing 字段与最终验证门禁。
|
|
132
192
|
|
|
193
|
+
## Exec-plan 生命周期
|
|
194
|
+
|
|
195
|
+
exec-plan 不是手工文档;它有确定性 CLI 生命周期,并与 `dag run-task` 共享同一索引校验源。
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
loop-agent plan create <plan-id> "<title>"
|
|
199
|
+
loop-agent plan complete <plan-id> --summary "<summary>"
|
|
200
|
+
loop-agent plan check
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
- `new-task` 不自动绑定 exec-plan;微小任务仍可不创建计划。
|
|
204
|
+
- `plan create` 优先读取目标项目 `<governanceRoot>/templates/exec-plan.md`,不存在时回退到发布包内置模板;create/complete 同步 active/completed 索引,拒绝重复 id、路径穿越与不安全文件名,多文件操作均具备回滚保护。
|
|
205
|
+
- `dag run-task` 在生成 DAG 草稿前运行 `plan check` 同源校验,索引漂移立即失败;空仓库与索引一致的仓库不受影响。
|
|
206
|
+
- `plan list`(只读)与 `docs archive`(兼容入口)保留;`scripts/check-exec-plan-index-sync.sh` 仍作为独立最终防线。
|
|
207
|
+
|
|
133
208
|
## 已移除的顺序工作流
|
|
134
209
|
|
|
135
210
|
历史 Level 1 顺序 command surface 已从公开工作流移除。新工作不要用 `loop-agent run analyze|plan|spec|implement|verify|retrospective|auto|loop|continue|study`。
|
|
@@ -147,13 +222,12 @@ loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd .
|
|
|
147
222
|
|
|
148
223
|
## Outer Loop Runtime
|
|
149
224
|
|
|
150
|
-
`loop` 命令是长跑任务控制层,与会话治理协议不是一回事。它记录 rounds 与 signals,可跑 shell 验证、Pi review
|
|
225
|
+
`loop` 命令是长跑任务控制层,与会话治理协议不是一回事。它记录 rounds 与 signals,可跑 shell 验证、Pi review 或 DAG action(review/execute),并选择下一自动 action。自动写入只能通过受治理 Pi-only Agent DAG execute;`loopAutoExecutionPolicy` 控制是否允许自动执行,旧 `loopAutoWritePolicy` 会 fail-fast。
|
|
151
226
|
|
|
152
227
|
支持的 loop actions:
|
|
153
228
|
|
|
154
229
|
- `shell-verify`
|
|
155
230
|
- `pi-review`
|
|
156
|
-
- `cursor-fix`
|
|
157
231
|
- `dag`
|
|
158
232
|
- `record-round`
|
|
159
233
|
- `add-signal`
|
|
@@ -88,7 +88,7 @@ NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST
|
|
|
88
88
|
|
|
89
89
|
### Phase 4:实现
|
|
90
90
|
|
|
91
|
-
1. **创建失败测试用例** — 遵循 RED-GREEN-REFACTOR(见 `
|
|
91
|
+
1. **创建失败测试用例** — 遵循 RED-GREEN-REFACTOR(见 `harness-methodology-tdd.md`)
|
|
92
92
|
2. **实现单一修复** — 解决已识别的根因,一次一个改动,不顺手重构
|
|
93
93
|
3. **验证修复** — 测试通过?其他测试没坏?问题真的解决了?
|
|
94
94
|
4. **如果修复无效**:
|
|
@@ -125,6 +125,6 @@ npm test path/to/test.test.ts
|
|
|
125
125
|
|
|
126
126
|
## 参考
|
|
127
127
|
|
|
128
|
-
- Harness 工作流:`
|
|
129
|
-
- 验证矩阵:`
|
|
130
|
-
- Sprint Contract 模板:`
|
|
128
|
+
- Harness 工作流:`feature-workflow.md`
|
|
129
|
+
- 验证矩阵:`verification-matrix.md`
|
|
130
|
+
- Sprint Contract 模板:`templates/sprint-contract.md`
|
|
@@ -10,10 +10,20 @@
|
|
|
10
10
|
"docs/README.md",
|
|
11
11
|
"docs/init-surface.manifest.json",
|
|
12
12
|
"docs/architecture/runtime-boundaries.md",
|
|
13
|
+
"docs/architecture/README.md",
|
|
14
|
+
"docs/architecture/system-overview.md",
|
|
15
|
+
"docs/architecture/dag-execution.md",
|
|
16
|
+
"docs/architecture/worker-and-feature.md",
|
|
17
|
+
"docs/architecture/facts-and-state.md",
|
|
18
|
+
"docs/architecture/evolution.md",
|
|
13
19
|
"docs/skills/README.md",
|
|
14
20
|
"docs/skills/vetted-skill-registry.md",
|
|
15
21
|
"docs/templates/init-evolution-review.md",
|
|
22
|
+
"docs/templates/exec-plan.md",
|
|
16
23
|
"docs/templates/production-readiness-checklist.md",
|
|
24
|
+
"docs/templates/frontend-task-requirement.md",
|
|
25
|
+
"docs/templates/frontend-task-constraints.md",
|
|
26
|
+
"docs/templates/frontend-design-contract.md",
|
|
17
27
|
"docs/templates/worker-dogfood-setup.md",
|
|
18
28
|
"docs/templates/worker-dogfood-evidence.md",
|
|
19
29
|
"docs/templates/harness.schema.json",
|
|
@@ -32,8 +42,11 @@
|
|
|
32
42
|
"scripts/check-task-pool-root.sh",
|
|
33
43
|
"docs/templates/agent-dag.schema.json",
|
|
34
44
|
"examples/example-dag.json",
|
|
45
|
+
"skills/agent-worker/SKILL.md",
|
|
46
|
+
"skills/agent-worker/references/agent-worker-operator.md",
|
|
35
47
|
"skills/loop-agent/SKILL.md",
|
|
36
48
|
"skills/loop-agent/references/command-reference.md",
|
|
49
|
+
"skills/loop-agent/references/docs-converge.md",
|
|
37
50
|
"skills/ai-engineering-context/SKILL.md",
|
|
38
51
|
"skills/verification-before-completion/SKILL.md",
|
|
39
52
|
"skills/systematic-debugging/SKILL.md",
|
|
@@ -42,7 +55,17 @@
|
|
|
42
55
|
"skills/test-driven-development/SKILL.md",
|
|
43
56
|
"skills/code-review-core/SKILL.md",
|
|
44
57
|
"skills/init-capability-evolution/SKILL.md",
|
|
45
|
-
"skills/webapp-testing/SKILL.md"
|
|
58
|
+
"skills/webapp-testing/SKILL.md",
|
|
59
|
+
"skills/frontend-implementation/SKILL.md",
|
|
60
|
+
"skills/frontend-implementation/references/node-contracts.md",
|
|
61
|
+
"skills/frontend-implementation/references/design-spec.md",
|
|
62
|
+
"skills/frontend-implementation/references/code-standards.md",
|
|
63
|
+
"skills/frontend-design-review/SKILL.md",
|
|
64
|
+
"skills/frontend-design-review/references/review-checklist.md",
|
|
65
|
+
"skills/frontend-review/SKILL.md",
|
|
66
|
+
"skills/frontend-review/references/review-findings.md",
|
|
67
|
+
"skills/frontend-verification/SKILL.md",
|
|
68
|
+
"skills/frontend-verification/references/verification-checklist.md"
|
|
46
69
|
],
|
|
47
70
|
"initFullRequired": [
|
|
48
71
|
"README.md",
|
|
@@ -56,6 +79,9 @@
|
|
|
56
79
|
"docs/loop-agent-harness.md",
|
|
57
80
|
"docs/templates/init-evolution-review.md",
|
|
58
81
|
"docs/templates/production-readiness-checklist.md",
|
|
82
|
+
"docs/templates/frontend-task-requirement.md",
|
|
83
|
+
"docs/templates/frontend-task-constraints.md",
|
|
84
|
+
"docs/templates/frontend-design-contract.md",
|
|
59
85
|
"docs/templates/worker-dogfood-setup.md",
|
|
60
86
|
"docs/templates/worker-dogfood-evidence.md",
|
|
61
87
|
"docs/templates/harness.schema.json",
|
|
@@ -70,6 +96,7 @@
|
|
|
70
96
|
"docs/templates/product-line/task.yaml",
|
|
71
97
|
"docs/templates/product-line/closeout.yaml",
|
|
72
98
|
"docs/templates/product-line/links.md",
|
|
99
|
+
"scripts/check-skill-entry.sh",
|
|
73
100
|
"scripts/check-product-line-docs.sh",
|
|
74
101
|
"scripts/check-repo.sh",
|
|
75
102
|
"scripts/ci-governance.sh",
|
|
@@ -78,19 +105,11 @@
|
|
|
78
105
|
".harness/prompts/analyze.md",
|
|
79
106
|
".harness/tasks",
|
|
80
107
|
".harness/dag-runs/active",
|
|
81
|
-
"skills/
|
|
82
|
-
"skills/
|
|
83
|
-
"skills/ai-engineering-context/SKILL.md",
|
|
84
|
-
"skills/verification-before-completion/SKILL.md",
|
|
85
|
-
"skills/systematic-debugging/SKILL.md",
|
|
86
|
-
"skills/requesting-code-review/SKILL.md",
|
|
87
|
-
"skills/codebase-scout/SKILL.md",
|
|
88
|
-
"skills/test-driven-development/SKILL.md",
|
|
89
|
-
"skills/code-review-core/SKILL.md",
|
|
90
|
-
"skills/init-capability-evolution/SKILL.md",
|
|
91
|
-
"skills/webapp-testing/SKILL.md",
|
|
108
|
+
".agents/skills/agent-worker/SKILL.md",
|
|
109
|
+
".agents/skills/agent-worker/references/agent-worker-operator.md",
|
|
92
110
|
".agents/skills/loop-agent/SKILL.md",
|
|
93
111
|
".agents/skills/loop-agent/references/command-reference.md",
|
|
112
|
+
".agents/skills/loop-agent/references/docs-converge.md",
|
|
94
113
|
".agents/skills/ai-engineering-context/SKILL.md",
|
|
95
114
|
".agents/skills/verification-before-completion/SKILL.md",
|
|
96
115
|
".agents/skills/systematic-debugging/SKILL.md",
|
|
@@ -99,7 +118,17 @@
|
|
|
99
118
|
".agents/skills/test-driven-development/SKILL.md",
|
|
100
119
|
".agents/skills/code-review-core/SKILL.md",
|
|
101
120
|
".agents/skills/init-capability-evolution/SKILL.md",
|
|
102
|
-
".agents/skills/webapp-testing/SKILL.md"
|
|
121
|
+
".agents/skills/webapp-testing/SKILL.md",
|
|
122
|
+
".agents/skills/frontend-implementation/SKILL.md",
|
|
123
|
+
".agents/skills/frontend-implementation/references/node-contracts.md",
|
|
124
|
+
".agents/skills/frontend-implementation/references/design-spec.md",
|
|
125
|
+
".agents/skills/frontend-implementation/references/code-standards.md",
|
|
126
|
+
".agents/skills/frontend-design-review/SKILL.md",
|
|
127
|
+
".agents/skills/frontend-design-review/references/review-checklist.md",
|
|
128
|
+
".agents/skills/frontend-review/SKILL.md",
|
|
129
|
+
".agents/skills/frontend-review/references/review-findings.md",
|
|
130
|
+
".agents/skills/frontend-verification/SKILL.md",
|
|
131
|
+
".agents/skills/frontend-verification/references/verification-checklist.md"
|
|
103
132
|
],
|
|
104
133
|
"initSurface": {
|
|
105
134
|
"README.md": "managed-block",
|
|
@@ -113,6 +142,9 @@
|
|
|
113
142
|
"docs/loop-agent-harness.md": "generated",
|
|
114
143
|
"docs/templates/init-evolution-review.md": "copied",
|
|
115
144
|
"docs/templates/production-readiness-checklist.md": "copied",
|
|
145
|
+
"docs/templates/frontend-task-requirement.md": "copied",
|
|
146
|
+
"docs/templates/frontend-task-constraints.md": "copied",
|
|
147
|
+
"docs/templates/frontend-design-contract.md": "copied",
|
|
116
148
|
"docs/templates/worker-dogfood-setup.md": "copied",
|
|
117
149
|
"docs/templates/worker-dogfood-evidence.md": "copied",
|
|
118
150
|
"docs/templates/harness.schema.json": "copied",
|
|
@@ -127,6 +159,7 @@
|
|
|
127
159
|
"docs/templates/product-line/task.yaml": "copied",
|
|
128
160
|
"docs/templates/product-line/closeout.yaml": "copied",
|
|
129
161
|
"docs/templates/product-line/links.md": "copied",
|
|
162
|
+
"scripts/check-skill-entry.sh": "generated",
|
|
130
163
|
"scripts/check-product-line-docs.sh": "copied",
|
|
131
164
|
"scripts/check-repo.sh": "generated",
|
|
132
165
|
"scripts/ci-governance.sh": "generated",
|
|
@@ -136,19 +169,11 @@
|
|
|
136
169
|
".harness/tasks": "directory",
|
|
137
170
|
".harness/dag-runs/active": "directory",
|
|
138
171
|
".harness/init-surface.json": "state",
|
|
139
|
-
"skills/
|
|
140
|
-
"skills/
|
|
141
|
-
"skills/ai-engineering-context/SKILL.md": "copied",
|
|
142
|
-
"skills/verification-before-completion/SKILL.md": "copied",
|
|
143
|
-
"skills/systematic-debugging/SKILL.md": "copied",
|
|
144
|
-
"skills/requesting-code-review/SKILL.md": "copied",
|
|
145
|
-
"skills/codebase-scout/SKILL.md": "copied",
|
|
146
|
-
"skills/test-driven-development/SKILL.md": "copied",
|
|
147
|
-
"skills/code-review-core/SKILL.md": "copied",
|
|
148
|
-
"skills/init-capability-evolution/SKILL.md": "copied",
|
|
149
|
-
"skills/webapp-testing/SKILL.md": "copied",
|
|
172
|
+
".agents/skills/agent-worker/SKILL.md": "copied",
|
|
173
|
+
".agents/skills/agent-worker/references/agent-worker-operator.md": "copied",
|
|
150
174
|
".agents/skills/loop-agent/SKILL.md": "copied",
|
|
151
175
|
".agents/skills/loop-agent/references/command-reference.md": "copied",
|
|
176
|
+
".agents/skills/loop-agent/references/docs-converge.md": "copied",
|
|
152
177
|
".agents/skills/ai-engineering-context/SKILL.md": "copied",
|
|
153
178
|
".agents/skills/verification-before-completion/SKILL.md": "copied",
|
|
154
179
|
".agents/skills/systematic-debugging/SKILL.md": "copied",
|
|
@@ -157,7 +182,17 @@
|
|
|
157
182
|
".agents/skills/test-driven-development/SKILL.md": "copied",
|
|
158
183
|
".agents/skills/code-review-core/SKILL.md": "copied",
|
|
159
184
|
".agents/skills/init-capability-evolution/SKILL.md": "copied",
|
|
160
|
-
".agents/skills/webapp-testing/SKILL.md": "copied"
|
|
185
|
+
".agents/skills/webapp-testing/SKILL.md": "copied",
|
|
186
|
+
".agents/skills/frontend-implementation/SKILL.md": "copied",
|
|
187
|
+
".agents/skills/frontend-implementation/references/node-contracts.md": "copied",
|
|
188
|
+
".agents/skills/frontend-implementation/references/design-spec.md": "copied",
|
|
189
|
+
".agents/skills/frontend-implementation/references/code-standards.md": "copied",
|
|
190
|
+
".agents/skills/frontend-design-review/SKILL.md": "copied",
|
|
191
|
+
".agents/skills/frontend-design-review/references/review-checklist.md": "copied",
|
|
192
|
+
".agents/skills/frontend-review/SKILL.md": "copied",
|
|
193
|
+
".agents/skills/frontend-review/references/review-findings.md": "copied",
|
|
194
|
+
".agents/skills/frontend-verification/SKILL.md": "copied",
|
|
195
|
+
".agents/skills/frontend-verification/references/verification-checklist.md": "copied"
|
|
161
196
|
},
|
|
162
197
|
"packageExcluded": [
|
|
163
198
|
"docs/progress/20*.md",
|
|
@@ -10,20 +10,26 @@ loop-agent 提供结构化 agent 工作的本地 harness。
|
|
|
10
10
|
- `.harness/cache/` — 本地 runtime 缓存
|
|
11
11
|
- `.harness/live/` — 瞬态 live-session 文件
|
|
12
12
|
- `.harness/task-pool/` — `agent-worker` 的 Task Pool state、batch artifacts、failure handoffs 与 Observe events;它是 `.harness/` 内的独立 Worker runtime root,默认不提交
|
|
13
|
+
- `.harness/dag-runs/<lifecycle>/<run-id>/.runtime/skill-snapshot.json` — 该 run 实际使用的 resolved skill profile snapshot;由 state 中相对 ref 与原始 bytes SHA-256 锚定,随 lifecycle 目录整体迁移
|
|
13
14
|
|
|
14
15
|
## Skill 指令
|
|
15
16
|
|
|
16
17
|
- `skills/loop-agent/` — loop-agent 仓库自有的 skill 指令与参考资料
|
|
17
|
-
- `skills
|
|
18
|
+
- `skills/agent-worker/` — Feature Packet、TaskSpec、Task Pool、controller pinning、自举 candidate canary 与 Worker recovery 的可选 outer-loop operator skill;不是 DAG node skill
|
|
19
|
+
- `.agents/skills/<skill-name>/` — 目标项目 repo-local skill 副本;`skills/<skill-name>/` 仍是 loop-agent 源仓库和 npm 包内置回退路径
|
|
18
20
|
- 历史 `skill/` 不再是必需仓库路径;runtime 查找仅为 `loop-agent` 保留兼容 fallback
|
|
19
21
|
|
|
22
|
+
目标项目若在 `.agents/skills/` 中提供 `SDD-requirement-analysis`、`SDD-design-analysis`、`SDD-implementation-test-review`,hybrid DAG 生成器会按节点追加对应 skill。该增强只复用 repo-local 知识与方法:loop-agent 仍拥有流程与状态控制权,embedded-mode 约束禁止 SDD 状态推进、确认门禁和归档;初始化/扫描类 SDD skill 不会自动执行。未命中时不会改变默认 DAG。命中的节点 skill 继续由同一 resolved instruction 和 run-owned snapshot 机制冻结,没有第二套 loader 或旁路。
|
|
23
|
+
|
|
20
24
|
## Package 资产
|
|
21
25
|
|
|
22
|
-
npm 包包含运行与说明 harness 所需的静态能力资产:`bin/`、`dist/`、`skills
|
|
26
|
+
npm 包包含运行与说明 harness 所需的静态能力资产:`bin/`、`dist/`、`skills/`(包括 `loop-agent` 与 `agent-worker`)、顶层 `docs/*.md`、`docs/templates/`、`examples/`、`harness.json`、`AGENTS.md`、`README.md`、`CHANGELOG.md`。
|
|
23
27
|
|
|
24
28
|
生成或历史的 task facts 不是 package 资产。`docs/progress/`、`docs/reports/`、`docs/exec-plans/`、`docs/decisions/` 下现有文件属于目标仓库历史;包只携带这些目录的 README。
|
|
25
29
|
|
|
26
|
-
从 npm 安装 `loop-agent` 并在其他项目使用时,DAG skill
|
|
30
|
+
从 npm 安装 `loop-agent` 并在其他项目使用时,DAG skill 指令按配置、用户或目标项目 `.agents/skills/` 解析(若存在),再回退到包内 `skills/`。目标项目可添加本地 skills,但不必复制 loop-agent 源码历史或根 `skills/` 目录即可使用默认 DAG 工作流。
|
|
31
|
+
|
|
32
|
+
`scripts/self-host-canary.mjs` 是源码仓库维护脚本,不进入 npm package `files`;安装后的 package 不把它作为用户命令 surface。
|
|
27
33
|
|
|
28
34
|
## harness.json Schema
|
|
29
35
|
|
|
@@ -54,16 +60,21 @@ DAG 节点的模型由 `executorModels[executor][complexity]` 路由。新 run
|
|
|
54
60
|
|
|
55
61
|
DAG agent 节点的输出语言由 `harness.json.workflowPolicy.dag.outputLanguage` 控制,支持 `zh-CN` 和 `en`。未配置时默认 `zh-CN`;`dag run-task` 会把配置写入生成的 DagSpec,手写 DagSpec 缺少该字段时 prompt envelope 同样默认中文。语言规则只约束说明、分析、报告、总结和文档正文,不翻译代码、命令、路径、标识符、JSON 字段、VERDICT 行及其他精确协议字面量。
|
|
56
62
|
|
|
63
|
+
新 DAG run(包括 dry-run 与 init-only)会在首次 state write 前冻结所有初始 Pi task、dynamic map child template 与 loop body template 的 resolved skill profiles。profile id 包含 ordered skills、learned-pattern mode 和两个 instruction budgets;后续节点只从 snapshot 建 prompt。snapshot/hash/binding/profile 不一致时节点进入 `ERROR` / `skill-snapshot-integrity`,executor 不调用,也不回退实时 skill。旧 run 只有在 ref 与 artifact 都不存在时,才可在 resume 前创建 `legacy-resume-backfill`,且该 mode 只证明剩余节点被固定。
|
|
64
|
+
|
|
57
65
|
## Command Surface
|
|
58
66
|
|
|
59
67
|
- `new-task`、`status`、`inspect`、`doctor`
|
|
60
68
|
- `dag run-task`、`dag validate`、`run-dag`、`dag report`、`dag resume`、`dag reconcile-run`
|
|
69
|
+
- `plan list`、`plan create`、`plan complete`、`plan check`、`docs audit`、`docs archive`
|
|
61
70
|
- `delegate`、`harvest`、`promote-run`、`closeout`
|
|
62
71
|
- `loop init`、`loop run`、`loop status`、`loop closeout`
|
|
63
72
|
- `pi-prompt`、`cursor-prompt`
|
|
64
|
-
- `
|
|
73
|
+
- `handoff check`、`spine audit`、`knowledge curate`
|
|
65
74
|
- `agent-worker feature review|run|verify-final|delivery|closeout|approve-followup`、`agent-worker task validate|explain-profile|retry|draft-followup`、`agent-worker batch run-ready`、`agent-worker report morning|metrics`、`agent-worker observe serve|snapshot`
|
|
66
75
|
|
|
76
|
+
`dag run-task` 在生成 DAG 草稿前会运行与 `plan check` 同源的 exec-plan 索引校验;active plan 与 `docs/exec-plans/active/README.md` 索引不一致时立即失败,避免运行昂贵节点后才在末端 shell verify 发现。`plan create` 优先复用目标项目模板并回退到发布包内置 `docs/templates/exec-plan.md`,`plan create`/`plan complete` 的多文件写入均有回滚保护;`new-task` 不自动绑定 exec-plan。
|
|
77
|
+
|
|
67
78
|
## Feature Review
|
|
68
79
|
|
|
69
80
|
`agent-worker feature review --feature-dir <feature-dir> --repo <target-repo>` 是只读的 Feature 级决策入口。它复用 Feature Packet validation、task graph 和 `.harness/task-pool/` 事实,派生 `Draft`、`Ready`、`Running`、`NeedsAction`、`AwaitingQA`、`Deliverable`、`Closed`,同时展示 required AC 覆盖、阻塞、证据和唯一主行动。
|
|
@@ -72,6 +83,8 @@ DAG agent 节点的输出语言由 `harness.json.workflowPolicy.dag.outputLangua
|
|
|
72
83
|
|
|
73
84
|
`agent-worker feature run --feature-dir <feature-dir> --repo <target-repo>` 是薄编排入口:先执行 Feature validation 和一次目标仓库 preflight,再复用 `runReadyTasks()` 推进 Ready Task,最后刷新 morning report、`.harness/task-pool/observability/snapshot.json` 与 Feature review。`--dry-run` 只读取 Packet/Task Pool 并列出 Ready IDs、步骤和预期产物。默认无 Git 授权时单次最多执行一个 Ready 写任务;checkpoint 模式可按 `--limit` 串行推进,并在每个 Task 后建立 clean boundary。
|
|
74
85
|
|
|
86
|
+
写入型 Worker 命令可传 `--expected-controller-version` 与 `--expected-controller-fingerprint`。`LoopAgentClient` 先把请求的 bin/PATH/npm shim 解析成冻结的绝对 launch spec,再校验 package name/version、binary SHA-256 和 portable package fingerprint;expected gate 在 materialize、Task Pool `Running` 或目标仓库写入前完成。预检后的命令使用该 launch spec,不会因 PATH、symlink 或安装内容变化而静默切换 controller。
|
|
87
|
+
|
|
75
88
|
`agent-worker feature verify-final` 在 clean Delivery HEAD 上以已完成的 `qa-execute` TaskSpec 运行独立最终 DAG,跳过 promotion/task closeout,避免 repo write 或 HEAD 移动,并原子生成 canonical QA aggregate 与 HEAD-bound final verification。`agent-worker feature delivery` 从同一 Git transaction 和 Task Pool facts 生成带 hash 的 manifest、Acceptance Coverage 与稳定 `PR.md`,拒绝 dirty/wrong branch、历史或 trailer 漂移、缺失 run/QA/final verification 和 required AC 缺口。`agent-worker feature closeout` 默认只读预览 gates;显式 `--apply --owner` 才原子写回 Closeout,并在 stale facts、写入或 post-validation 失败时恢复原状态。
|
|
76
89
|
|
|
77
90
|
Morning report 顶部和 Observe 首页直接消费共享 Feature read model,固定从 Status、Next Action、Why、Evidence 开始。`agent-worker report metrics --month YYYY-MM` 写入 `.harness/task-pool/artifacts/metrics/monthly-YYYY-MM.json|md`,每项指标保留分母、样本量、窗口和 missingData。
|
|
@@ -80,6 +93,17 @@ Morning report 顶部和 Observe 首页直接消费共享 Feature read model,
|
|
|
80
93
|
|
|
81
94
|
业务 Task 失败不会跳过报告与最终 review,但命令返回 `needs-action` 和非零退出码;`noReadyReason` 用于区分 Closed、Deliverable、AwaitingQA、NeedsAction、dependency blocked 与 empty。
|
|
82
95
|
|
|
96
|
+
## Versioned Self-hosting Canary
|
|
97
|
+
|
|
98
|
+
源码仓库使用下面的 repo-maintainer 命令验证隔离 candidate package 的确定性接棒:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm run self-host:canary -- --deterministic --output <evidence.json>
|
|
102
|
+
npm run self-host:canary -- --deterministic --tarball <candidate.tgz> --output <evidence.json>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
canary 会记录 tarball SHA-256、slot containment、两个 bin identity、由维护脚本独立计算并与候选实现交叉核对的 package fingerprint、每个 required check、skill mirror hashes、Feature dry-run、static/shell DAG run/report 以及 PATH trap。所有子进程都有硬超时;它删除 `HARNESS_ALLOW_ACTIVE_DAG_RUNS`,并要求 trap 中没有 `loop-agent`、`agent-worker` 或 `pi` 调用。`--live` 当前明确失败;deterministic canary 不包含 Pi/model/provider/cost 证明。
|
|
106
|
+
|
|
83
107
|
## Follow-up 决策与批准
|
|
84
108
|
|
|
85
109
|
`agent-worker task draft-followup <task-id> --worker-run-id <id> --feature-dir <feature-dir> --repo <target-repo>` 从失败 run、TaskSpec 和 task graph 生成 `FU-<parent>-NN` 决策产物。ProductBug/TestBug/FlakyTest/DependencyFailure 生成可批准 TaskDraft;连续两次 EnvFailure 生成 `ENV-CHECK-*`,单次只建议 retry;SpecUnclear/ContractMismatch/RiskyChange/NeedsHuman/Unknown 生成人工行动卡。产物与 evidence/index 位于 `.harness/task-pool/artifacts/features/<feature-id>/follow-ups/`;生成过程受 Feature lock 和 dedupe key 保护,不写 Feature Packet、Ready state 或原失败事实。新 run 会 supersede 同 parent 的旧 unresolved 产物,但不会删除历史。
|