@tea-agent/loop-agent 0.3.0 → 0.4.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 +135 -133
- package/CHANGELOG.md +88 -63
- package/README.md +171 -168
- package/bin/agent-worker.js +22 -0
- package/bin/loop-agent.js +21 -21
- package/dist/commands/init.js +457 -457
- package/dist/commands/loop-benchmark.js +11 -11
- package/dist/commands/pi-reuse-benchmark.js +16 -16
- package/dist/executors/cursor-executor.js +1 -1
- package/dist/executors/dag-pi-executor.js +8 -1
- package/dist/task/runtime.js +27 -27
- package/dist/worker/cli.js +119 -0
- package/dist/worker/loop-agent/command-result.js +1 -0
- package/dist/worker/loop-agent/loop-agent-client.js +105 -0
- package/dist/worker/loop-agent/parse-json.js +14 -0
- package/dist/worker/materialize/harness-task-materializer.js +157 -0
- package/dist/worker/pool/failure-routing.js +98 -0
- package/dist/worker/pool/run-store.js +117 -0
- package/dist/worker/pool/types.js +1 -0
- package/dist/worker/preflight.js +108 -0
- package/dist/worker/profile-mapping.js +76 -0
- package/dist/worker/progress-reporter.js +81 -0
- package/dist/worker/report/morning-report.js +69 -0
- package/dist/worker/repos/repo-resolver.js +23 -0
- package/dist/worker/run-task/run-task.js +359 -0
- package/dist/worker/runner/run-ready.js +216 -0
- package/dist/worker/task-graph/acceptance-schema.js +25 -0
- package/dist/worker/task-graph/ready-queue.js +23 -0
- package/dist/worker/task-graph/task-graph-schema.js +28 -0
- package/dist/worker/task-graph/types.js +1 -0
- package/dist/worker/task-graph/validate.js +188 -0
- package/dist/worker/task-spec/complexity-mapping.js +8 -0
- package/dist/worker/task-spec/schema.js +116 -0
- package/dist/worker/task-spec/types.js +1 -0
- package/dist/worker/task-spec/validate.js +352 -0
- package/dist/workflows/dag/canvas-observer.js +275 -275
- package/docs/README.md +65 -61
- package/docs/agent-dag-recovery-playbook.md +184 -184
- package/docs/agent-dag-runner.md +42 -42
- package/docs/architecture/runtime-boundaries.md +147 -147
- package/docs/cursor-executor-usage.md +25 -25
- package/docs/decisions/README.md +3 -3
- package/docs/design/README.md +36 -36
- package/docs/development-principles.md +73 -71
- package/docs/dynamic-workflow-dag-engine-roadmap.md +1749 -1749
- package/docs/exec-plans/README.md +6 -6
- package/docs/exec-plans/active/README.md +7 -7
- package/docs/exec-plans/completed/README.md +19 -11
- package/docs/feature-workflow.md +186 -186
- package/docs/harness-methodology-debugging.md +153 -153
- package/docs/harness-methodology-tdd.md +130 -130
- package/docs/harness-methodology-verification.md +27 -27
- package/docs/loop-agent-harness.md +42 -42
- package/docs/production-readiness.md +96 -96
- package/docs/progress/README.md +3 -3
- package/docs/reports/README.md +5 -5
- package/docs/skills/README.md +6 -6
- package/docs/skills/vetted-skill-registry.md +22 -22
- package/docs/templates/adr.md +60 -60
- package/docs/templates/agent-dag-authority-surface-audit.prompt.md +94 -94
- package/docs/templates/agent-dag-decision-envelope.schema.json +213 -213
- package/docs/templates/agent-dag-decision-gate-dogfood-report.md +117 -117
- package/docs/templates/agent-dag-decision-gate.prompt.md +246 -246
- package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
- package/docs/templates/agent-dag-report.schema.json +454 -454
- package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
- package/docs/templates/agent-dag.base.json +195 -195
- package/docs/templates/agent-dag.final-verification.json +190 -190
- package/docs/templates/agent-dag.schema.json +316 -316
- package/docs/templates/agent-dag.supervised-implementation.json +500 -500
- package/docs/templates/exec-plan.md +64 -64
- package/docs/templates/feature-spec.md +53 -53
- package/docs/templates/hybrid-dag.json +193 -193
- package/docs/templates/production-readiness-checklist.md +57 -57
- package/docs/templates/progress-log.md +17 -17
- package/docs/templates/project-start-checklist.md +9 -9
- package/docs/templates/qa-report.md +48 -48
- package/docs/templates/sprint-contract.md +29 -29
- package/docs/verification-matrix.md +41 -41
- package/examples/decision-gate-agent-dag.json +123 -123
- package/examples/example-dag.json +51 -51
- package/examples/hybrid-loop-agent-dag.json +194 -194
- package/harness.json +89 -89
- package/package.json +60 -58
- package/skills/ai-engineering-context/SKILL.md +48 -48
- package/skills/code-review-core/SKILL.md +20 -20
- package/skills/codebase-scout/SKILL.md +19 -19
- package/skills/loop-agent/SKILL.md +147 -145
- package/skills/loop-agent/references/README.md +67 -67
- package/skills/loop-agent/references/command-reference.md +368 -340
- package/skills/loop-agent/references/harness-policy.md +259 -258
- package/skills/loop-agent/references/hybrid-dag.md +216 -216
- package/skills/loop-agent/references/learned/README.md +21 -21
- package/skills/loop-agent/references/long-running-loop.md +59 -59
- package/skills/loop-agent/references/model-routing.md +36 -36
- package/skills/loop-agent/references/multi-worktree.md +54 -54
- package/skills/loop-agent/references/one-shot-runs.md +85 -85
- package/skills/loop-agent/references/orchestrator-and-interventions.md +169 -169
- package/skills/loop-agent/references/pi-prompt.md +23 -23
- package/skills/loop-agent/references/pi-subagent-assisted-mode.md +81 -81
- package/skills/loop-agent/references/post-implementation-and-patterns.md +44 -44
- package/skills/loop-agent/references/task-workflow.md +84 -84
- package/skills/loop-agent/references/verification-and-failure-handling.md +128 -128
- package/skills/requesting-code-review/SKILL.md +101 -101
- package/skills/requesting-code-review/code-reviewer.md +168 -168
- package/skills/systematic-debugging/CREATION-LOG.md +119 -119
- package/skills/systematic-debugging/SKILL.md +296 -296
- package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -158
- package/skills/systematic-debugging/condition-based-waiting.md +115 -115
- package/skills/systematic-debugging/defense-in-depth.md +122 -122
- package/skills/systematic-debugging/find-polluter.sh +63 -63
- package/skills/systematic-debugging/root-cause-tracing.md +169 -169
- package/skills/systematic-debugging/test-academic.md +14 -14
- package/skills/systematic-debugging/test-pressure-1.md +58 -58
- package/skills/systematic-debugging/test-pressure-2.md +68 -68
- package/skills/systematic-debugging/test-pressure-3.md +69 -69
- package/skills/test-driven-development/SKILL.md +20 -20
- package/skills/verification-before-completion/SKILL.md +154 -154
- package/skills/webapp-testing/SKILL.md +19 -19
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
# loop-agent 命令参考
|
|
2
|
-
|
|
3
|
-
需要 loop-agent 的精确 CLI 命令、setup 命令、task lifecycle 命令、docs helper、goal 命令或 stats 时使用本文。
|
|
4
|
-
|
|
5
|
-
## loop-agent 入口
|
|
6
|
-
|
|
7
|
-
**优先在目标 repo 目录内执行命令** — loop-agent 通过 `harness.json.project` 自动检测使用哪个 repo adapter。跨目录操作时显式加 `--repo-root <target-repo>`。
|
|
8
|
-
|
|
9
|
-
默认使用全局 CLI:
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
loop-agent <command> ...
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
面向自举迭代和日常使用时,全局 CLI 应来自 npm 上已发布的安装包。首次安装或有意升级使用 `@latest`:
|
|
16
|
-
|
|
1
|
+
# loop-agent 命令参考
|
|
2
|
+
|
|
3
|
+
需要 loop-agent 的精确 CLI 命令、setup 命令、task lifecycle 命令、docs helper、goal 命令或 stats 时使用本文。
|
|
4
|
+
|
|
5
|
+
## loop-agent 入口
|
|
6
|
+
|
|
7
|
+
**优先在目标 repo 目录内执行命令** — loop-agent 通过 `harness.json.project` 自动检测使用哪个 repo adapter。跨目录操作时显式加 `--repo-root <target-repo>`。
|
|
8
|
+
|
|
9
|
+
默认使用全局 CLI:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
loop-agent <command> ...
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
面向自举迭代和日常使用时,全局 CLI 应来自 npm 上已发布的安装包。首次安装或有意升级使用 `@latest`:
|
|
16
|
+
|
|
17
17
|
```bash
|
|
18
18
|
npm install -g @tea-agent/loop-agent@latest
|
|
19
19
|
npm list -g @tea-agent/loop-agent --depth=0
|
|
20
20
|
loop-agent --version
|
|
21
21
|
loop-agent doctor
|
|
22
22
|
```
|
|
23
|
-
|
|
24
|
-
一次自举任务启动后不要中途升级控制器;记录 `npm list -g` 显示的实际版本。不要在 DAG 节点中反复用 `npx @latest` 拉取,也不要使用当前工作区的 `npm link` 或 `npm run dev` 作为控制器去修改 loop-agent 本仓库的 CLI、DAG runtime、executor、package metadata 或 build output。`npm run dev -- <command> ...` 只用于源码调试和聚焦 CLI 开发。
|
|
25
|
-
|
|
26
|
-
发布包入口加载 `dist/cli.js`;开发入口加载 `src/cli.ts`。
|
|
27
|
-
|
|
28
|
-
发布包携带静态能力资料:`skills/`、`docs/*.md`、`docs/templates/` 和 `examples/`。`docs/progress/`、`docs/reports/`、`docs/exec-plans/`、`docs/decisions/` 的任务正文属于目标仓库运行中生成的事实,不从 npm 包复制;包内只保留这些目录的 README 说明。
|
|
29
|
-
|
|
30
|
-
## 命令参考
|
|
31
|
-
|
|
32
|
-
## 默认选择模型
|
|
33
|
-
|
|
34
|
-
选择命令时按以下优先级:
|
|
35
|
-
|
|
36
|
-
1. **主路径 DAG**,用于常规 autonomous work:
|
|
37
|
-
```bash
|
|
38
|
-
loop-agent new-task <task-id> "Task Title"
|
|
39
|
-
loop-agent dag run-task <task-id> --profile auto --strict-models --output <temp-dir>/<task-id>-dag.json
|
|
40
|
-
loop-agent dag validate --dag <temp-dir>/<task-id>-dag.json --strict-models --strict-governance
|
|
41
|
-
loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <repo-root>
|
|
42
|
-
```
|
|
43
|
-
`<temp-dir>` 表示平台原生临时目录;也可以省略 `--output`,再使用命令 JSON 输出里的 `outputPath`。主路径 JSON 输出含稳定 summary:`dag run-task` 的 `message` 为 `DAG draft created`,`dag validate` 的 `message` 为 `DAG validation passed` 且含 `checks.writeSets` / `checks.decisionGates`,`run-dag` 的 `message` 为 `DAG run finished`。
|
|
44
|
-
2. **Operator 工具**,用于 recovery、诊断与 closeout:
|
|
45
|
-
```bash
|
|
46
|
-
loop-agent dag status --run-id <run-id>
|
|
47
|
-
loop-agent dag doctor
|
|
48
|
-
loop-agent dag report --latest --markdown
|
|
49
|
-
loop-agent dag closeout-draft --run-id <run-id>
|
|
50
|
-
loop-agent dag reconcile-tasks --glob '<pattern>' --markdown
|
|
51
|
-
loop-agent dag final-verification <task-id> --output <temp-dir>/<task-id>-final-verification-dag.json
|
|
52
|
-
loop-agent status <task-id> --json
|
|
53
|
-
loop-agent instructions task-artifacts --task <task-id> --json
|
|
54
|
-
loop-agent promote-run <task-id> --run-id <run-id>
|
|
55
|
-
loop-agent closeout task <task-id>
|
|
56
|
-
loop-agent spine audit <task-id> --markdown
|
|
57
|
-
loop-agent knowledge curate --markdown --output docs/reports/<task-id>-learned-proposal.md
|
|
58
|
-
loop-agent loop-benchmark --markdown
|
|
59
|
-
```
|
|
60
|
-
3. **Escape hatch**,仅用于 worktree 隔离委派、executor 调试或 one-shot 诊断:
|
|
61
|
-
```bash
|
|
62
|
-
loop-agent delegate <task-id> --executor cursor
|
|
63
|
-
loop-agent harvest <task-id>
|
|
64
|
-
loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-task.md
|
|
65
|
-
loop-agent pi-prompt "Reply with exactly OK."
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Setup(首次)
|
|
23
|
+
|
|
24
|
+
一次自举任务启动后不要中途升级控制器;记录 `npm list -g` 显示的实际版本。不要在 DAG 节点中反复用 `npx @latest` 拉取,也不要使用当前工作区的 `npm link` 或 `npm run dev` 作为控制器去修改 loop-agent 本仓库的 CLI、DAG runtime、executor、package metadata 或 build output。`npm run dev -- <command> ...` 只用于源码调试和聚焦 CLI 开发。
|
|
25
|
+
|
|
26
|
+
发布包入口加载 `dist/cli.js`;开发入口加载 `src/cli.ts`。
|
|
27
|
+
|
|
28
|
+
发布包携带静态能力资料:`skills/`、`docs/*.md`、`docs/templates/` 和 `examples/`。`docs/progress/`、`docs/reports/`、`docs/exec-plans/`、`docs/decisions/` 的任务正文属于目标仓库运行中生成的事实,不从 npm 包复制;包内只保留这些目录的 README 说明。
|
|
29
|
+
|
|
30
|
+
## 命令参考
|
|
31
|
+
|
|
32
|
+
## 默认选择模型
|
|
33
|
+
|
|
34
|
+
选择命令时按以下优先级:
|
|
35
|
+
|
|
36
|
+
1. **主路径 DAG**,用于常规 autonomous work:
|
|
37
|
+
```bash
|
|
38
|
+
loop-agent new-task <task-id> "Task Title"
|
|
39
|
+
loop-agent dag run-task <task-id> --profile auto --strict-models --output <temp-dir>/<task-id>-dag.json
|
|
40
|
+
loop-agent dag validate --dag <temp-dir>/<task-id>-dag.json --strict-models --strict-governance
|
|
41
|
+
loop-agent run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <repo-root>
|
|
42
|
+
```
|
|
43
|
+
`<temp-dir>` 表示平台原生临时目录;也可以省略 `--output`,再使用命令 JSON 输出里的 `outputPath`。主路径 JSON 输出含稳定 summary:`dag run-task` 的 `message` 为 `DAG draft created`,`dag validate` 的 `message` 为 `DAG validation passed` 且含 `checks.writeSets` / `checks.decisionGates`,`run-dag` 的 `message` 为 `DAG run finished`。
|
|
44
|
+
2. **Operator 工具**,用于 recovery、诊断与 closeout:
|
|
45
|
+
```bash
|
|
46
|
+
loop-agent dag status --run-id <run-id>
|
|
47
|
+
loop-agent dag doctor
|
|
48
|
+
loop-agent dag report --latest --markdown
|
|
49
|
+
loop-agent dag closeout-draft --run-id <run-id>
|
|
50
|
+
loop-agent dag reconcile-tasks --glob '<pattern>' --markdown
|
|
51
|
+
loop-agent dag final-verification <task-id> --output <temp-dir>/<task-id>-final-verification-dag.json
|
|
52
|
+
loop-agent status <task-id> --json
|
|
53
|
+
loop-agent instructions task-artifacts --task <task-id> --json
|
|
54
|
+
loop-agent promote-run <task-id> --run-id <run-id>
|
|
55
|
+
loop-agent closeout task <task-id>
|
|
56
|
+
loop-agent spine audit <task-id> --markdown
|
|
57
|
+
loop-agent knowledge curate --markdown --output docs/reports/<task-id>-learned-proposal.md
|
|
58
|
+
loop-agent loop-benchmark --markdown
|
|
59
|
+
```
|
|
60
|
+
3. **Escape hatch**,仅用于 worktree 隔离委派、executor 调试或 one-shot 诊断:
|
|
61
|
+
```bash
|
|
62
|
+
loop-agent delegate <task-id> --executor cursor
|
|
63
|
+
loop-agent harvest <task-id>
|
|
64
|
+
loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-task.md
|
|
65
|
+
loop-agent pi-prompt "Reply with exactly OK."
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Setup(首次)
|
|
69
69
|
```bash
|
|
70
70
|
npm install -g @tea-agent/loop-agent@latest
|
|
71
71
|
loop-agent --version
|
|
72
72
|
loop-agent --help
|
|
73
73
|
```
|
|
74
|
-
|
|
75
|
-
### 检查 repo harness
|
|
76
|
-
```bash
|
|
77
|
-
loop-agent inspect # 当前 repo(自动检测)
|
|
78
|
-
loop-agent --repo-root /path/to/target-repo inspect # 指定 repo
|
|
79
|
-
```
|
|
80
|
-
|
|
74
|
+
|
|
75
|
+
### 检查 repo harness
|
|
76
|
+
```bash
|
|
77
|
+
loop-agent inspect # 当前 repo(自动检测)
|
|
78
|
+
loop-agent --repo-root /path/to/target-repo inspect # 指定 repo
|
|
79
|
+
```
|
|
80
|
+
|
|
81
81
|
### 健康检查
|
|
82
82
|
```bash
|
|
83
83
|
loop-agent doctor
|
|
84
84
|
```
|
|
85
|
-
|
|
86
|
-
`doctor` 报告当前生效的 Pi backend 及 SDK/CLI 可用性。Pi step 默认 SDK-first 执行:
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
export CODE_AGENT_PI_BACKEND=sdk-first # 默认:先试 Pi SDK,允许时 fallback 到 CLI
|
|
90
|
-
export CODE_AGENT_PI_BACKEND=cli-only # 紧急回滚:纯 CLI 路径
|
|
91
|
-
```
|
|
92
|
-
|
|
85
|
+
|
|
86
|
+
`doctor` 报告当前生效的 Pi backend 及 SDK/CLI 可用性。Pi step 默认 SDK-first 执行:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
export CODE_AGENT_PI_BACKEND=sdk-first # 默认:先试 Pi SDK,允许时 fallback 到 CLI
|
|
90
|
+
export CODE_AGENT_PI_BACKEND=cli-only # 紧急回滚:纯 CLI 路径
|
|
91
|
+
```
|
|
92
|
+
|
|
93
93
|
SDK 回归或 SDK 可选依赖不可用时用 `cli-only` 诊断。CLI fallback 路径须与现有 workflow 行为兼容。
|
|
94
94
|
|
|
95
95
|
### 初始化与旧项目更新
|
|
@@ -110,266 +110,294 @@ loop-agent init update --repo-root <target-repo> --apply-safe
|
|
|
110
110
|
### 创建新 task
|
|
111
111
|
```bash
|
|
112
112
|
loop-agent new-task <task-id> "Task Title"
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
创建 `.harness/tasks/<task-id>/`,含 `source/`、`artifacts/`、`logs/` 及初始 state。
|
|
116
|
-
|
|
117
|
-
### Task action context / artifact instructions
|
|
118
|
-
```bash
|
|
119
|
-
loop-agent status <task-id> --json
|
|
120
|
-
loop-agent instructions source --task <task-id> --json
|
|
121
|
-
loop-agent instructions dag-draft --task <task-id> --json
|
|
122
|
-
loop-agent instructions task-artifacts --task <task-id> --json
|
|
123
|
-
loop-agent instructions promotion --task <task-id> --json
|
|
124
|
-
loop-agent instructions closeout --task <task-id> --json
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
`status` 是 agent 行动上下文入口,返回 `artifactPaths`、`runRefs`、`actionContext` 与 `nextActions`。`instructions` 在写入 source、DAG draft、task artifacts、promotion 或 closeout 前返回目标路径、依赖、模板、写策略与完成标准;blocked artifact 会列出 `missingDependencies`。
|
|
128
|
-
|
|
129
|
-
### Promotion / closeout
|
|
130
|
-
```bash
|
|
131
|
-
loop-agent promote-run <task-id> --run-id <run-id>
|
|
132
|
-
loop-agent closeout task <task-id>
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
`promote-run` 从 completed DAG facts 或 one-shot completed run evidence 生成 task `修改记录.md` / `验证结果.md`,不调用 LLM、不修改 completed run facts。`closeout task` 从 task artifacts 生成 `docs/progress/YYYY-MM-DD-<slug>.md`,验证证据不足时必须写明剩余风险。
|
|
136
|
-
|
|
137
|
-
one-shot run evidence 位于 `.harness/runs/{active,completed,failed}/<run-id>/`。`cursor-prompt` 与 Pi `cursor` tool 会创建这类 run evidence;当前 `pi-prompt` 不创建 `.harness/runs/`。active 目录只应保留 live one-shot run,残留或 `.DS_Store` 等系统文件应清理。详见 `one-shot-runs.md`。
|
|
138
|
-
|
|
139
|
-
### 运行任何 step 前:准备 source materials
|
|
140
|
-
`new-task` 之后,至少添加 `需求.md`:
|
|
141
|
-
```bash
|
|
142
|
-
mkdir -p <repo-root>/.harness/tasks/<task-id>/source
|
|
143
|
-
cat > <repo-root>/.harness/tasks/<task-id>/source/需求.md
|
|
144
|
-
```
|
|
145
|
-
然后写明需求、目标范围与约束。
|
|
146
|
-
|
|
147
|
-
若 task 有硬约束(仅允许特定文件、禁止改动),另加:
|
|
148
|
-
```bash
|
|
149
|
-
cat > <repo-root>/.harness/tasks/<task-id>/source/执行约束.md
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### Feature-study workflow(参考代码 → 轻量实现)
|
|
153
|
-
例如「分析参考仓库的一项功能,并在目标仓库实现轻量版本」:
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
loop-agent --repo-root /path/to/target-repo study init <task-id> "Title" \
|
|
157
|
-
--reference-repo codex:/Users/mac/go/src/codex \
|
|
158
|
-
--reference-doc plan:/Users/mac/plans/codex-goal-feature.md \
|
|
159
|
-
--reference-glob "codex-rs/**/goal*.rs"
|
|
160
|
-
|
|
161
|
-
# 编辑 source/需求.md + source/执行约束.md,然后走 DAG 路径:
|
|
162
|
-
loop-agent --repo-root <target-repo> dag run-task <task-id> --profile auto --strict-models --output <temp-dir>/<task-id>-dag.json
|
|
163
|
-
loop-agent --repo-root <target-repo> dag validate --dag <temp-dir>/<task-id>-dag.json --strict-models --strict-governance
|
|
164
|
-
loop-agent --repo-root <target-repo> run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <target-repo>
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
目标 repo 需有 `.harness/prompts/feature-study-analyze.md` 与 `feature-study-plan.md`(缺失时从 loop-agent 复制)。
|
|
168
|
-
|
|
169
|
-
### Removed sequential workflow
|
|
170
|
-
|
|
171
|
-
历史顺序式 `run analyze|plan|spec|implement|verify|retrospective|auto|loop|continue|study` 已移除。新任务不要使用这些命令,也不要在 prompt、skill 或 docs 中把它们描述为 fallback。
|
|
172
|
-
|
|
173
|
-
### Reference helpers(compatibility)
|
|
174
|
-
```bash
|
|
175
|
-
loop-agent reference index
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
`reference` 是 compatibility / feature-study 辅助入口,用于维护或检查参考资料索引。常规实现任务不要从 `reference` 起步;按 `new-task` + DAG 路径执行。
|
|
179
|
-
|
|
180
|
-
### Task goal lifecycle(compatibility-only / deprecated-candidate)
|
|
181
|
-
```bash
|
|
182
|
-
loop-agent goal set <task-id> "Objective text" [--token-budget <number|null>]
|
|
183
|
-
loop-agent goal set <task-id> "Replacement objective" --force
|
|
184
|
-
loop-agent goal get <task-id>
|
|
185
|
-
loop-agent goal pause <task-id>
|
|
186
|
-
loop-agent goal resume <task-id>
|
|
187
|
-
loop-agent goal clear <task-id>
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
- 已有 goal 且 objective 不同时,替换须显式 `--force`。
|
|
191
|
-
- `harness.json` 可用 `features.goals=false` 关闭此 surface。
|
|
192
|
-
- `status` 现含 `goal`(`objective/status/tokenBudget/tokensUsed/timeUsedSeconds/continuationRuns`)、`verifyEnv`、`maxGoalContinuationsPerRun` 及可选 `flowHint`
|
|
193
|
-
- 在 `source/需求.md` 用 `<!-- goal-scope -->` … `<!-- /goal-scope -->` 包裹仅 goal 验收项;范围外 `- [ ]` 不阻塞 goal 完成
|
|
194
|
-
- `task.json`:`verifyEnv=clean`(默认);goal continuation 需 verify 重试时用 `flow=loop`,避免盲目 implement 循环
|
|
195
|
-
- continuation 是 runtime policy,不是普通用户消息:
|
|
196
|
-
- continuation prompts are legacy compatibility metadata under `.harness/prompts/`
|
|
197
|
-
- 触发时叠加 `.harness/prompts/objective_updated.md` 与 `.harness/prompts/budget_limit.md`
|
|
198
|
-
- 将渲染文本注入隐藏 `<goal_context>...</goal_context>` 片段供 step 执行
|
|
199
|
-
- 用于保持 continuation 行为一致,减少聊天式历史噪音
|
|
200
|
-
- preflight 含 state/mode guard + 启动前 goal 一致性复检
|
|
201
|
-
|
|
202
|
-
### Agent DAG validation 与 execution
|
|
203
|
-
```bash
|
|
204
|
-
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json # 常规 validation;无 .harness/dag-runs 副作用
|
|
205
|
-
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-models # 非 canonical executorModels 时失败
|
|
206
|
-
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance # governance warning 时失败
|
|
207
|
-
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-skills # missing/error/truncated skill 或 unresolved reference 时失败
|
|
208
|
-
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance --spine-task <task-id> # 同时消费 minimal spec spine audit
|
|
209
|
-
loop-agent dag validate --dag docs/templates/agent-dag.supervised-implementation.json --strict-models --strict-governance # role=supervisor + write-set-gate topology
|
|
210
|
-
cp docs/templates/agent-dag.supervised-implementation.json <temp-dir>/supervised-dag.json
|
|
211
|
-
(npx vitest run test/dag-supervised-template.test.ts test/dag-validate.test.ts test/dag-shell-executor.test.ts --reporter=dot) # supervised template + shell.verdictGate runtime
|
|
212
|
-
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --forbid-executor cursor # 存在 cursor node 时失败
|
|
213
|
-
loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> # 执行 Agent DAG
|
|
214
|
-
loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> --no-cursor # 执行前若存在 cursor node 则失败
|
|
215
|
-
loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <temp-dir>/hybrid-dag.canvas.tsx # 可选 derived Canvas view
|
|
216
|
-
loop-agent dag init-hybrid <task-id> # 生成可审阅的 DAG draft
|
|
217
|
-
loop-agent dag run-task <task-id> # generate + validate(安全默认;无 dag-runs;standard-compatible)
|
|
218
|
-
loop-agent dag run-task <task-id> --profile auto # 推断 governanceProfile,经 workflowPolicy.dag.profileRouting 路由
|
|
219
|
-
loop-agent dag run-task <task-id> --profile minimal # 强制当前 minimal 路由(standard-dag)
|
|
220
|
-
loop-agent dag run-task <task-id> --profile standard # 强制 standard-dag
|
|
221
|
-
loop-agent dag run-task <task-id> --profile reviewed # 强制 review-gated DAG
|
|
222
|
-
loop-agent dag run-task <task-id> --profile supervised # 强制 supervised implementation DAG
|
|
223
|
-
loop-agent dag run-task <task-id> --execute --cwd <repo-root> # generate + validate + execute(先 narrow writeSet)
|
|
224
|
-
loop-agent dag run-task <task-id> --dry-run --cwd <repo-root> # generate + validate + active dry-run snapshot
|
|
225
|
-
loop-agent dag status --run-id <run-id> # 单次 run JSON 摘要(approvalFlow, healthIssues)
|
|
226
|
-
loop-agent dag doctor # 扫描 active/paused/completed runs;advisoryOnly health report
|
|
227
|
-
loop-agent dag report [--run-id <run-id>] [--lifecycle active|paused|completed|all] [--json|--markdown] [--failed-only] [--latest] [--paused-latest] [--action <recovery-action>] # derived per-node 聚合(只读);JSON 锁定于 docs/templates/agent-dag-report.schema.json;--paused-latest 聚焦最新 paused run;playbook: docs/agent-dag-recovery-playbook.md
|
|
228
|
-
loop-agent dag reconcile-tasks --glob '<pattern>' # 仅报告的 task/run/artifact/verify drift audit
|
|
229
|
-
loop-agent dag final-verification <task-id> # 生成 closeout DAG,closeout artifact 后再 final verify
|
|
230
|
-
loop-agent dag decision inspect --run-id <run-id> [--node-id <node-id>] # dry-run envelope 重解析;除 run 缺失外 exit 0
|
|
231
|
-
loop-agent dag decision validate --run-id <run-id> [--node-id <node-id>] # 同上;envelope 无效时 exit 1
|
|
232
|
-
loop-agent dag approve --run-id <run-id> --option <id> # decision gate 人工 approve
|
|
233
|
-
loop-agent dag reject --run-id <run-id> --reason "..." # reject paused run
|
|
234
|
-
loop-agent dag resume --run-id <run-id> # approve 后继续
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
**Decision gate(M3–M5)**:Pi node 上 `decisionGate.enabled: true` 启用 envelope 解析(M3 `record-only` 或 M4 `pause-on-human`)。M4 pause 后用 `dag approve/reject/resume/status/doctor` — 仅确定性 artifact,无新 `human`/`decision` executor。用 `dag report --paused-latest` 聚焦最新 paused run;`dag decision inspect|validate` 做 envelope dry-run(永不自动 resume/retry)。`browser` 仍 deferred。
|
|
238
|
-
|
|
239
|
-
**In-flight DAG governance**:shell verify node 内用 `HARNESS_ALLOW_ACTIVE_DAG_RUNS=1 bash scripts/check-repo.sh`;run 归档到 `completed/` 后,在 DAG 外跑裸 `bash scripts/check-repo.sh`。
|
|
240
|
-
|
|
241
|
-
- `dag validate` 做 schema/topology/ranks 检查;审 `warnings` 中的显式 `executorModels` drift 与 governance lint。
|
|
242
|
-
- 手写临时 DAG spec 执行前用 `dag validate --strict-models`,model-matrix drift 应 fail fast。
|
|
243
|
-
- read-only artifact-boundary 或 DAG 内 shell governance warning 应 fail fast 时用 `dag validate --strict-governance`。
|
|
244
|
-
- 人工 handoff 视图用 `dag report --markdown`(summary、node timeline、failures、四段 Recovery Plan、artifacts、建议 next action)。仅 derived、advisory;需保存时重定向到平台临时目录或 `docs/reports/`。
|
|
245
|
-
- operator 聚焦最新 paused run 用 `dag report --paused-latest`(等同 `--lifecycle paused --latest`;勿与显式 `--lifecycle` 并用)。
|
|
246
|
-
- 需 operator 关注的 run 用 `dag report --failed-only`、`--latest`、`--action <recovery-action>` 收窄。category→action 映射见 `docs/agent-dag-recovery-playbook.md`。
|
|
247
|
-
- 只读扫描 `.harness/dag-runs/` 下所有 run 的生命周期 health issue 与建议 action 用 `dag doctor`(`advisoryOnly: true`;不 mutate facts)。
|
|
248
|
-
- approve/resume 前用 `dag status --run-id <id>` 看单次 lifecycle、`approvalFlow`、`hasHumanApproval`。
|
|
249
|
-
- task status、source/artifacts、DAG outcome、verification 记录可能 drift 时用 `dag reconcile-tasks --glob '<pattern>'`。默认仅报告;`--patch` 显式且不能伪造 verification evidence。
|
|
250
|
-
- 大型 PRD closeout 用 `dag final-verification <task-id>` 生成确定性 DAG,final verification 在 closeout artifact 创建之后。
|
|
251
|
-
- 从 run facts dry-run envelope 解析用 `dag decision inspect|validate`;`validate` 在无效 envelope 时 exit 1;永不自动 resume/retry。
|
|
252
|
-
- Decision Gate prompt 可用 `buildDagDecisionGateEvidence()`(`src/workflows/dag/decision-evidence.ts`)做与 `dag report --json`、`docs/templates/agent-dag-report.schema.json` 对齐的只读摘要;不 mutate run state,不执行 retry/resume。
|
|
253
|
-
- 仅当有意在 `.harness/dag-runs/active/` 下要 active run snapshot 时用 `run-dag --dry-run`。
|
|
254
|
-
- task source 应从 `harness.json.workflowPolicy.dag.profileRouting` 与确定性 candidate `governanceProfile` 选 standard / review-gated / supervised template 时用 `dag run-task --profile auto`。无 `--profile` 仅用于旧 standard-compatible 输出;强制 template family 用 `--profile minimal|standard|reviewed|supervised`。
|
|
255
|
-
|
|
256
|
-
### Saved Dynamic Workflow operator UX
|
|
257
|
-
```bash
|
|
258
|
-
loop-agent workflow list
|
|
259
|
-
loop-agent workflow inspect <name>
|
|
260
|
-
loop-agent workflow save --from /tmp/<task-id>.workflow.json --name <name>
|
|
261
|
-
loop-agent workflow run <name-or-path> --cwd <repo-root>
|
|
262
|
-
loop-agent workflow diff <name> --against /tmp/<task-id>.workflow.json
|
|
263
|
-
loop-agent workflow replay <run-id>
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
`workflow` 是 Dynamic Workflow 的 saved/operator surface。它读取 `WorkflowSpec`,编译为 DAG,再进入同一套 `run-dag` runtime;不会新增 executor 能力或绕过 DAG governance。真实写入任务仍应检查 compiled DAG 的 executor、writeSet、shell gates 和 completed facts 边界。
|
|
267
|
-
|
|
268
|
-
### Cursor worker lifecycle
|
|
269
|
-
```bash
|
|
270
|
-
loop-agent cursor-worker status # enabled/running/child/entry path
|
|
271
|
-
loop-agent cursor-worker stop # SIGTERM worker 并清 parent state
|
|
272
|
-
loop-agent cursor-worker ping # 启动 worker 并跑短 execute smoke(之后 stop worker)
|
|
273
|
-
```
|
|
274
|
-
|
|
275
|
-
- DAG / `executeCursorTask({ useWorker: true })` 保持长驻 Cursor SDK child,避免 CLI exit hang。
|
|
276
|
-
- Parent RPC timeout(`timeoutMs + 5s`)返回 `details.timeoutKind=rpc`,终止 worker(`SIGTERM`),defer SDK cancel(`cancelDeferred=true`,`cancelAttempted=false`);下次 execute 启动新 worker。
|
|
277
|
-
|
|
278
|
-
### 检查 task status
|
|
279
|
-
```bash
|
|
280
|
-
loop-agent status <task-id>
|
|
281
|
-
```
|
|
282
|
-
|
|
283
|
-
### Docs governance helpers
|
|
284
|
-
```bash
|
|
285
|
-
loop-agent docs audit
|
|
286
|
-
loop-agent docs archive docs/exec-plans/active/<plan>.md
|
|
287
|
-
loop-agent plan list
|
|
288
|
-
loop-agent handoff check [task-id]
|
|
289
|
-
loop-agent handoff coverage <task-id> [--json|--markdown]
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
- `docs audit`:扫描文档腐化风险,如 active/completed 漂移、失效链接、host-gap closeout
|
|
293
|
-
- `docs archive`:将 active plan 迁入 completed,并自动重写常见 markdown 引用
|
|
294
|
-
- `plan list`:列出当前 active plans 及其解析状态
|
|
295
|
-
- `handoff check`:检查任务 source / artifacts / auto-commit scope 是否满足交付闭环
|
|
296
|
-
- `handoff coverage`:从 `source/需求.md` 抽取 checklist / numbered / `REQ-*` 项并输出 coverage audit;未覆盖项 exit 1;`explicitly_out_of_scope` 不计为缺口
|
|
297
|
-
|
|
298
|
-
### Pi runtime reuse benchmark / decision(无 live call)
|
|
299
|
-
```bash
|
|
300
|
-
loop-agent pi-reuse-benchmark \
|
|
301
|
-
--report docs/reports/<benchmark-report>.md \
|
|
302
|
-
--json
|
|
303
|
-
|
|
304
|
-
loop-agent pi-reuse-benchmark \
|
|
305
|
-
--report docs/reports/<benchmark-report>.md \
|
|
306
|
-
--off-executor /path/to/off/executor.jsonl \
|
|
307
|
-
--on-executor /path/to/on/executor.jsonl \
|
|
308
|
-
--approval /path/to/approval.json \
|
|
309
|
-
--markdown
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
对已有 benchmark plan/report 文件及可选 `executor.jsonl` evidence 做确定性摘要。**不**跑 live Pi call、不创建 task、不改 `CODE_AGENT_PI_REUSE_RUNTIME`(默认仍为 `off`)。输出 `defer`、`maintain-opt-in` 或 `eligible-for-human-review` — 永不 default-on。
|
|
313
|
-
|
|
314
|
-
### Loop convergence benchmark baseline(无 live call)
|
|
315
|
-
```bash
|
|
316
|
-
loop-agent loop-benchmark --markdown
|
|
317
|
-
loop-agent loop-benchmark --markdown --output docs/reports/2026-06-30-loop-agent-loop-benchmark.md
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
生成 M0 deterministic baseline,对照 `single-repair`、`3-pass-convergence`、`3-pass-convergence+quota`。**不**跑 live Pi/Cursor call、不创建 task、不改 `convergence.enabled` 默认值。live dogfood 证据缺失时输出 `blocked` 并建议保持 opt-in。
|
|
321
|
-
|
|
322
|
-
### Long-running loop outer state(experimental)
|
|
323
|
-
```bash
|
|
324
|
-
loop-agent loop init <task-id>
|
|
325
|
-
loop-agent loop status <task-id>
|
|
326
|
-
loop-agent loop run <task-id> --action dag
|
|
327
|
-
loop-agent loop run <task-id> --action shell-verify --command "bash scripts/check-repo.sh"
|
|
328
|
-
loop-agent loop record-round <task-id> --decision continue --summary "..."
|
|
329
|
-
loop-agent loop add-signal <task-id> --kind note --message "..."
|
|
330
|
-
loop-agent loop closeout <task-id>
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
`loop` 是 Agent DAG 之上的长程状态和 evidence layer,记录 rounds、signals、verification summaries 和 closeout draft。它不是替代 `dag run-task` / `run-dag` 的实现路径;medium/large work 仍需要 DAG evidence 或明确 fallback reason。
|
|
334
|
-
|
|
335
|
-
### Minimal spec spine audit
|
|
336
|
-
```bash
|
|
337
|
-
loop-agent spine audit <task-id> --json
|
|
338
|
-
loop-agent spine audit <task-id> --markdown
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
检查 task 的 `source/需求.md`、`source/执行约束.md`、`task.json.allowedPaths` / `forbiddenPaths`、需求覆盖与 final verification command labels。`medium` / `large` task 的空 `allowedPaths`、allowed/forbidden overlap、未覆盖验收项、无 final verify command 都会让 audit 非零退出。
|
|
342
|
-
|
|
343
|
-
### Knowledge curator proposal
|
|
344
|
-
```bash
|
|
345
|
-
loop-agent knowledge curate --markdown
|
|
346
|
-
loop-agent knowledge curate --markdown --output docs/reports/<task-id>-learned-proposal.md
|
|
347
|
-
```
|
|
348
|
-
|
|
349
|
-
读取 `.harness/knowledge/patterns.jsonl` 中 completed convergence repair pattern,按 `failureClass + fixScope shape + invariant` 去重,生成 human-gated learned guidance proposal。命令只生成 proposal,不直接修改 `./skill/references/learned/*.md`;输出会先通过 skill safety audit。
|
|
350
|
-
|
|
351
|
-
###
|
|
352
|
-
|
|
353
|
-
loop-agent
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
`
|
|
374
|
-
|
|
375
|
-
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
创建 `.harness/tasks/<task-id>/`,含 `source/`、`artifacts/`、`logs/` 及初始 state。
|
|
116
|
+
|
|
117
|
+
### Task action context / artifact instructions
|
|
118
|
+
```bash
|
|
119
|
+
loop-agent status <task-id> --json
|
|
120
|
+
loop-agent instructions source --task <task-id> --json
|
|
121
|
+
loop-agent instructions dag-draft --task <task-id> --json
|
|
122
|
+
loop-agent instructions task-artifacts --task <task-id> --json
|
|
123
|
+
loop-agent instructions promotion --task <task-id> --json
|
|
124
|
+
loop-agent instructions closeout --task <task-id> --json
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
`status` 是 agent 行动上下文入口,返回 `artifactPaths`、`runRefs`、`actionContext` 与 `nextActions`。`instructions` 在写入 source、DAG draft、task artifacts、promotion 或 closeout 前返回目标路径、依赖、模板、写策略与完成标准;blocked artifact 会列出 `missingDependencies`。
|
|
128
|
+
|
|
129
|
+
### Promotion / closeout
|
|
130
|
+
```bash
|
|
131
|
+
loop-agent promote-run <task-id> --run-id <run-id>
|
|
132
|
+
loop-agent closeout task <task-id>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
`promote-run` 从 completed DAG facts 或 one-shot completed run evidence 生成 task `修改记录.md` / `验证结果.md`,不调用 LLM、不修改 completed run facts。`closeout task` 从 task artifacts 生成 `docs/progress/YYYY-MM-DD-<slug>.md`,验证证据不足时必须写明剩余风险。
|
|
136
|
+
|
|
137
|
+
one-shot run evidence 位于 `.harness/runs/{active,completed,failed}/<run-id>/`。`cursor-prompt` 与 Pi `cursor` tool 会创建这类 run evidence;当前 `pi-prompt` 不创建 `.harness/runs/`。active 目录只应保留 live one-shot run,残留或 `.DS_Store` 等系统文件应清理。详见 `one-shot-runs.md`。
|
|
138
|
+
|
|
139
|
+
### 运行任何 step 前:准备 source materials
|
|
140
|
+
`new-task` 之后,至少添加 `需求.md`:
|
|
141
|
+
```bash
|
|
142
|
+
mkdir -p <repo-root>/.harness/tasks/<task-id>/source
|
|
143
|
+
cat > <repo-root>/.harness/tasks/<task-id>/source/需求.md
|
|
144
|
+
```
|
|
145
|
+
然后写明需求、目标范围与约束。
|
|
146
|
+
|
|
147
|
+
若 task 有硬约束(仅允许特定文件、禁止改动),另加:
|
|
148
|
+
```bash
|
|
149
|
+
cat > <repo-root>/.harness/tasks/<task-id>/source/执行约束.md
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Feature-study workflow(参考代码 → 轻量实现)
|
|
153
|
+
例如「分析参考仓库的一项功能,并在目标仓库实现轻量版本」:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
loop-agent --repo-root /path/to/target-repo study init <task-id> "Title" \
|
|
157
|
+
--reference-repo codex:/Users/mac/go/src/codex \
|
|
158
|
+
--reference-doc plan:/Users/mac/plans/codex-goal-feature.md \
|
|
159
|
+
--reference-glob "codex-rs/**/goal*.rs"
|
|
160
|
+
|
|
161
|
+
# 编辑 source/需求.md + source/执行约束.md,然后走 DAG 路径:
|
|
162
|
+
loop-agent --repo-root <target-repo> dag run-task <task-id> --profile auto --strict-models --output <temp-dir>/<task-id>-dag.json
|
|
163
|
+
loop-agent --repo-root <target-repo> dag validate --dag <temp-dir>/<task-id>-dag.json --strict-models --strict-governance
|
|
164
|
+
loop-agent --repo-root <target-repo> run-dag --dag <temp-dir>/<task-id>-dag.json --cwd <target-repo>
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
目标 repo 需有 `.harness/prompts/feature-study-analyze.md` 与 `feature-study-plan.md`(缺失时从 loop-agent 复制)。
|
|
168
|
+
|
|
169
|
+
### Removed sequential workflow
|
|
170
|
+
|
|
171
|
+
历史顺序式 `run analyze|plan|spec|implement|verify|retrospective|auto|loop|continue|study` 已移除。新任务不要使用这些命令,也不要在 prompt、skill 或 docs 中把它们描述为 fallback。
|
|
172
|
+
|
|
173
|
+
### Reference helpers(compatibility)
|
|
174
|
+
```bash
|
|
175
|
+
loop-agent reference index
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
`reference` 是 compatibility / feature-study 辅助入口,用于维护或检查参考资料索引。常规实现任务不要从 `reference` 起步;按 `new-task` + DAG 路径执行。
|
|
179
|
+
|
|
180
|
+
### Task goal lifecycle(compatibility-only / deprecated-candidate)
|
|
181
|
+
```bash
|
|
182
|
+
loop-agent goal set <task-id> "Objective text" [--token-budget <number|null>]
|
|
183
|
+
loop-agent goal set <task-id> "Replacement objective" --force
|
|
184
|
+
loop-agent goal get <task-id>
|
|
185
|
+
loop-agent goal pause <task-id>
|
|
186
|
+
loop-agent goal resume <task-id>
|
|
187
|
+
loop-agent goal clear <task-id>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
- 已有 goal 且 objective 不同时,替换须显式 `--force`。
|
|
191
|
+
- `harness.json` 可用 `features.goals=false` 关闭此 surface。
|
|
192
|
+
- `status` 现含 `goal`(`objective/status/tokenBudget/tokensUsed/timeUsedSeconds/continuationRuns`)、`verifyEnv`、`maxGoalContinuationsPerRun` 及可选 `flowHint`
|
|
193
|
+
- 在 `source/需求.md` 用 `<!-- goal-scope -->` … `<!-- /goal-scope -->` 包裹仅 goal 验收项;范围外 `- [ ]` 不阻塞 goal 完成
|
|
194
|
+
- `task.json`:`verifyEnv=clean`(默认);goal continuation 需 verify 重试时用 `flow=loop`,避免盲目 implement 循环
|
|
195
|
+
- continuation 是 runtime policy,不是普通用户消息:
|
|
196
|
+
- continuation prompts are legacy compatibility metadata under `.harness/prompts/`
|
|
197
|
+
- 触发时叠加 `.harness/prompts/objective_updated.md` 与 `.harness/prompts/budget_limit.md`
|
|
198
|
+
- 将渲染文本注入隐藏 `<goal_context>...</goal_context>` 片段供 step 执行
|
|
199
|
+
- 用于保持 continuation 行为一致,减少聊天式历史噪音
|
|
200
|
+
- preflight 含 state/mode guard + 启动前 goal 一致性复检
|
|
201
|
+
|
|
202
|
+
### Agent DAG validation 与 execution
|
|
203
|
+
```bash
|
|
204
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json # 常规 validation;无 .harness/dag-runs 副作用
|
|
205
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-models # 非 canonical executorModels 时失败
|
|
206
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance # governance warning 时失败
|
|
207
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-skills # missing/error/truncated skill 或 unresolved reference 时失败
|
|
208
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance --spine-task <task-id> # 同时消费 minimal spec spine audit
|
|
209
|
+
loop-agent dag validate --dag docs/templates/agent-dag.supervised-implementation.json --strict-models --strict-governance # role=supervisor + write-set-gate topology
|
|
210
|
+
cp docs/templates/agent-dag.supervised-implementation.json <temp-dir>/supervised-dag.json
|
|
211
|
+
(npx vitest run test/dag-supervised-template.test.ts test/dag-validate.test.ts test/dag-shell-executor.test.ts --reporter=dot) # supervised template + shell.verdictGate runtime
|
|
212
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --forbid-executor cursor # 存在 cursor node 时失败
|
|
213
|
+
loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> # 执行 Agent DAG
|
|
214
|
+
loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> --no-cursor # 执行前若存在 cursor node 则失败
|
|
215
|
+
loop-agent run-dag --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <temp-dir>/hybrid-dag.canvas.tsx # 可选 derived Canvas view
|
|
216
|
+
loop-agent dag init-hybrid <task-id> # 生成可审阅的 DAG draft
|
|
217
|
+
loop-agent dag run-task <task-id> # generate + validate(安全默认;无 dag-runs;standard-compatible)
|
|
218
|
+
loop-agent dag run-task <task-id> --profile auto # 推断 governanceProfile,经 workflowPolicy.dag.profileRouting 路由
|
|
219
|
+
loop-agent dag run-task <task-id> --profile minimal # 强制当前 minimal 路由(standard-dag)
|
|
220
|
+
loop-agent dag run-task <task-id> --profile standard # 强制 standard-dag
|
|
221
|
+
loop-agent dag run-task <task-id> --profile reviewed # 强制 review-gated DAG
|
|
222
|
+
loop-agent dag run-task <task-id> --profile supervised # 强制 supervised implementation DAG
|
|
223
|
+
loop-agent dag run-task <task-id> --execute --cwd <repo-root> # generate + validate + execute(先 narrow writeSet)
|
|
224
|
+
loop-agent dag run-task <task-id> --dry-run --cwd <repo-root> # generate + validate + active dry-run snapshot
|
|
225
|
+
loop-agent dag status --run-id <run-id> # 单次 run JSON 摘要(approvalFlow, healthIssues)
|
|
226
|
+
loop-agent dag doctor # 扫描 active/paused/completed runs;advisoryOnly health report
|
|
227
|
+
loop-agent dag report [--run-id <run-id>] [--lifecycle active|paused|completed|all] [--json|--markdown] [--failed-only] [--latest] [--paused-latest] [--action <recovery-action>] # derived per-node 聚合(只读);JSON 锁定于 docs/templates/agent-dag-report.schema.json;--paused-latest 聚焦最新 paused run;playbook: docs/agent-dag-recovery-playbook.md
|
|
228
|
+
loop-agent dag reconcile-tasks --glob '<pattern>' # 仅报告的 task/run/artifact/verify drift audit
|
|
229
|
+
loop-agent dag final-verification <task-id> # 生成 closeout DAG,closeout artifact 后再 final verify
|
|
230
|
+
loop-agent dag decision inspect --run-id <run-id> [--node-id <node-id>] # dry-run envelope 重解析;除 run 缺失外 exit 0
|
|
231
|
+
loop-agent dag decision validate --run-id <run-id> [--node-id <node-id>] # 同上;envelope 无效时 exit 1
|
|
232
|
+
loop-agent dag approve --run-id <run-id> --option <id> # decision gate 人工 approve
|
|
233
|
+
loop-agent dag reject --run-id <run-id> --reason "..." # reject paused run
|
|
234
|
+
loop-agent dag resume --run-id <run-id> # approve 后继续
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
**Decision gate(M3–M5)**:Pi node 上 `decisionGate.enabled: true` 启用 envelope 解析(M3 `record-only` 或 M4 `pause-on-human`)。M4 pause 后用 `dag approve/reject/resume/status/doctor` — 仅确定性 artifact,无新 `human`/`decision` executor。用 `dag report --paused-latest` 聚焦最新 paused run;`dag decision inspect|validate` 做 envelope dry-run(永不自动 resume/retry)。`browser` 仍 deferred。
|
|
238
|
+
|
|
239
|
+
**In-flight DAG governance**:shell verify node 内用 `HARNESS_ALLOW_ACTIVE_DAG_RUNS=1 bash scripts/check-repo.sh`;run 归档到 `completed/` 后,在 DAG 外跑裸 `bash scripts/check-repo.sh`。
|
|
240
|
+
|
|
241
|
+
- `dag validate` 做 schema/topology/ranks 检查;审 `warnings` 中的显式 `executorModels` drift 与 governance lint。
|
|
242
|
+
- 手写临时 DAG spec 执行前用 `dag validate --strict-models`,model-matrix drift 应 fail fast。
|
|
243
|
+
- read-only artifact-boundary 或 DAG 内 shell governance warning 应 fail fast 时用 `dag validate --strict-governance`。
|
|
244
|
+
- 人工 handoff 视图用 `dag report --markdown`(summary、node timeline、failures、四段 Recovery Plan、artifacts、建议 next action)。仅 derived、advisory;需保存时重定向到平台临时目录或 `docs/reports/`。
|
|
245
|
+
- operator 聚焦最新 paused run 用 `dag report --paused-latest`(等同 `--lifecycle paused --latest`;勿与显式 `--lifecycle` 并用)。
|
|
246
|
+
- 需 operator 关注的 run 用 `dag report --failed-only`、`--latest`、`--action <recovery-action>` 收窄。category→action 映射见 `docs/agent-dag-recovery-playbook.md`。
|
|
247
|
+
- 只读扫描 `.harness/dag-runs/` 下所有 run 的生命周期 health issue 与建议 action 用 `dag doctor`(`advisoryOnly: true`;不 mutate facts)。
|
|
248
|
+
- approve/resume 前用 `dag status --run-id <id>` 看单次 lifecycle、`approvalFlow`、`hasHumanApproval`。
|
|
249
|
+
- task status、source/artifacts、DAG outcome、verification 记录可能 drift 时用 `dag reconcile-tasks --glob '<pattern>'`。默认仅报告;`--patch` 显式且不能伪造 verification evidence。
|
|
250
|
+
- 大型 PRD closeout 用 `dag final-verification <task-id>` 生成确定性 DAG,final verification 在 closeout artifact 创建之后。
|
|
251
|
+
- 从 run facts dry-run envelope 解析用 `dag decision inspect|validate`;`validate` 在无效 envelope 时 exit 1;永不自动 resume/retry。
|
|
252
|
+
- Decision Gate prompt 可用 `buildDagDecisionGateEvidence()`(`src/workflows/dag/decision-evidence.ts`)做与 `dag report --json`、`docs/templates/agent-dag-report.schema.json` 对齐的只读摘要;不 mutate run state,不执行 retry/resume。
|
|
253
|
+
- 仅当有意在 `.harness/dag-runs/active/` 下要 active run snapshot 时用 `run-dag --dry-run`。
|
|
254
|
+
- task source 应从 `harness.json.workflowPolicy.dag.profileRouting` 与确定性 candidate `governanceProfile` 选 standard / review-gated / supervised template 时用 `dag run-task --profile auto`。无 `--profile` 仅用于旧 standard-compatible 输出;强制 template family 用 `--profile minimal|standard|reviewed|supervised`。
|
|
255
|
+
|
|
256
|
+
### Saved Dynamic Workflow operator UX
|
|
257
|
+
```bash
|
|
258
|
+
loop-agent workflow list
|
|
259
|
+
loop-agent workflow inspect <name>
|
|
260
|
+
loop-agent workflow save --from /tmp/<task-id>.workflow.json --name <name>
|
|
261
|
+
loop-agent workflow run <name-or-path> --cwd <repo-root>
|
|
262
|
+
loop-agent workflow diff <name> --against /tmp/<task-id>.workflow.json
|
|
263
|
+
loop-agent workflow replay <run-id>
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
`workflow` 是 Dynamic Workflow 的 saved/operator surface。它读取 `WorkflowSpec`,编译为 DAG,再进入同一套 `run-dag` runtime;不会新增 executor 能力或绕过 DAG governance。真实写入任务仍应检查 compiled DAG 的 executor、writeSet、shell gates 和 completed facts 边界。
|
|
267
|
+
|
|
268
|
+
### Cursor worker lifecycle
|
|
269
|
+
```bash
|
|
270
|
+
loop-agent cursor-worker status # enabled/running/child/entry path
|
|
271
|
+
loop-agent cursor-worker stop # SIGTERM worker 并清 parent state
|
|
272
|
+
loop-agent cursor-worker ping # 启动 worker 并跑短 execute smoke(之后 stop worker)
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
- DAG / `executeCursorTask({ useWorker: true })` 保持长驻 Cursor SDK child,避免 CLI exit hang。
|
|
276
|
+
- Parent RPC timeout(`timeoutMs + 5s`)返回 `details.timeoutKind=rpc`,终止 worker(`SIGTERM`),defer SDK cancel(`cancelDeferred=true`,`cancelAttempted=false`);下次 execute 启动新 worker。
|
|
277
|
+
|
|
278
|
+
### 检查 task status
|
|
279
|
+
```bash
|
|
280
|
+
loop-agent status <task-id>
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Docs governance helpers
|
|
284
|
+
```bash
|
|
285
|
+
loop-agent docs audit
|
|
286
|
+
loop-agent docs archive docs/exec-plans/active/<plan>.md
|
|
287
|
+
loop-agent plan list
|
|
288
|
+
loop-agent handoff check [task-id]
|
|
289
|
+
loop-agent handoff coverage <task-id> [--json|--markdown]
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
- `docs audit`:扫描文档腐化风险,如 active/completed 漂移、失效链接、host-gap closeout
|
|
293
|
+
- `docs archive`:将 active plan 迁入 completed,并自动重写常见 markdown 引用
|
|
294
|
+
- `plan list`:列出当前 active plans 及其解析状态
|
|
295
|
+
- `handoff check`:检查任务 source / artifacts / auto-commit scope 是否满足交付闭环
|
|
296
|
+
- `handoff coverage`:从 `source/需求.md` 抽取 checklist / numbered / `REQ-*` 项并输出 coverage audit;未覆盖项 exit 1;`explicitly_out_of_scope` 不计为缺口
|
|
297
|
+
|
|
298
|
+
### Pi runtime reuse benchmark / decision(无 live call)
|
|
299
|
+
```bash
|
|
300
|
+
loop-agent pi-reuse-benchmark \
|
|
301
|
+
--report docs/reports/<benchmark-report>.md \
|
|
302
|
+
--json
|
|
303
|
+
|
|
304
|
+
loop-agent pi-reuse-benchmark \
|
|
305
|
+
--report docs/reports/<benchmark-report>.md \
|
|
306
|
+
--off-executor /path/to/off/executor.jsonl \
|
|
307
|
+
--on-executor /path/to/on/executor.jsonl \
|
|
308
|
+
--approval /path/to/approval.json \
|
|
309
|
+
--markdown
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
对已有 benchmark plan/report 文件及可选 `executor.jsonl` evidence 做确定性摘要。**不**跑 live Pi call、不创建 task、不改 `CODE_AGENT_PI_REUSE_RUNTIME`(默认仍为 `off`)。输出 `defer`、`maintain-opt-in` 或 `eligible-for-human-review` — 永不 default-on。
|
|
313
|
+
|
|
314
|
+
### Loop convergence benchmark baseline(无 live call)
|
|
315
|
+
```bash
|
|
316
|
+
loop-agent loop-benchmark --markdown
|
|
317
|
+
loop-agent loop-benchmark --markdown --output docs/reports/2026-06-30-loop-agent-loop-benchmark.md
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
生成 M0 deterministic baseline,对照 `single-repair`、`3-pass-convergence`、`3-pass-convergence+quota`。**不**跑 live Pi/Cursor call、不创建 task、不改 `convergence.enabled` 默认值。live dogfood 证据缺失时输出 `blocked` 并建议保持 opt-in。
|
|
321
|
+
|
|
322
|
+
### Long-running loop outer state(experimental)
|
|
323
|
+
```bash
|
|
324
|
+
loop-agent loop init <task-id>
|
|
325
|
+
loop-agent loop status <task-id>
|
|
326
|
+
loop-agent loop run <task-id> --action dag
|
|
327
|
+
loop-agent loop run <task-id> --action shell-verify --command "bash scripts/check-repo.sh"
|
|
328
|
+
loop-agent loop record-round <task-id> --decision continue --summary "..."
|
|
329
|
+
loop-agent loop add-signal <task-id> --kind note --message "..."
|
|
330
|
+
loop-agent loop closeout <task-id>
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
`loop` 是 Agent DAG 之上的长程状态和 evidence layer,记录 rounds、signals、verification summaries 和 closeout draft。它不是替代 `dag run-task` / `run-dag` 的实现路径;medium/large work 仍需要 DAG evidence 或明确 fallback reason。
|
|
334
|
+
|
|
335
|
+
### Minimal spec spine audit
|
|
336
|
+
```bash
|
|
337
|
+
loop-agent spine audit <task-id> --json
|
|
338
|
+
loop-agent spine audit <task-id> --markdown
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
检查 task 的 `source/需求.md`、`source/执行约束.md`、`task.json.allowedPaths` / `forbiddenPaths`、需求覆盖与 final verification command labels。`medium` / `large` task 的空 `allowedPaths`、allowed/forbidden overlap、未覆盖验收项、无 final verify command 都会让 audit 非零退出。
|
|
342
|
+
|
|
343
|
+
### Knowledge curator proposal
|
|
344
|
+
```bash
|
|
345
|
+
loop-agent knowledge curate --markdown
|
|
346
|
+
loop-agent knowledge curate --markdown --output docs/reports/<task-id>-learned-proposal.md
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
读取 `.harness/knowledge/patterns.jsonl` 中 completed convergence repair pattern,按 `failureClass + fixScope shape + invariant` 去重,生成 human-gated learned guidance proposal。命令只生成 proposal,不直接修改 `./skill/references/learned/*.md`;输出会先通过 skill safety audit。
|
|
350
|
+
|
|
351
|
+
### Worker TaskSpec pipeline(伴生 CLI `agent-worker`)
|
|
352
|
+
|
|
353
|
+
`agent-worker` 是与 `loop-agent` 一起发布的独立 CLI(`bin/agent-worker.js -> dist/worker/cli.js`),面向“产品线 Worker”场景:把一批 TaskSpec 规约成可校验、可串行调度、可晨报的流水线。它不进入 `loop-agent` 命令树,也不自带 executor——执行权全部通过子进程委托给已发布的 `loop-agent` CLI(最终是 DAG runtime + shell verification)。
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
agent-worker task validate <task.yaml> # 三层校验 TaskSpec,输出 JSON
|
|
357
|
+
agent-worker task explain-profile <task.yaml> # 解释业务 type/risk -> DAG governance profile 映射
|
|
358
|
+
agent-worker batch run-ready \
|
|
359
|
+
--feature-dir <feature-dir> \ # 含 tasks/task-graph.yaml
|
|
360
|
+
--repo <repo-root> \ # 目标 repo
|
|
361
|
+
[--limit <count>] [--batch-run-id <id>] \
|
|
362
|
+
[--loop-agent-bin loop-agent] \
|
|
363
|
+
[--check-repo] [--check-repo-command <command...>] \
|
|
364
|
+
[--quiet] \
|
|
365
|
+
[--pi-model <model>] # smoke 覆盖:所有 pi 节点强制用该模型
|
|
366
|
+
agent-worker report morning --repo <repo-root> [--batch-run-id <id>] [--output <path>]
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
语义要点:
|
|
370
|
+
|
|
371
|
+
- TaskSpec 声明单个任务的业务上下文、`risk_level`、验收与 verify 边界;`risk_level` 被确定性映射到 task complexity。AcceptanceSpec / TaskGraphSpec 声明跨任务验收引用与依赖图,ready queue 决定可运行任务并检测未知依赖/环/文件一致性。
|
|
372
|
+
- 业务 type(`backend-feature`/`frontend-feature`/`qa-testcode` 等)是产品线 profile,不能直接传给 `loop-agent dag run-task --profile`;Worker 会映射到 `auto`/`minimal`/`standard`/`reviewed`/`supervised`。
|
|
373
|
+
- materializer 把 TaskSpec 物化为 `.harness/tasks/<task-id>` 后,Worker 调用 `dag run-task` / `dag validate` / `run-dag` / `dag report`。成功路径走 `promote-run` + `closeout task`;失败路径收集 `dag doctor` / `dag closeout-draft` evidence,写入目标 repo 的 `.task-pool/failure-handoffs/`(不写 `.harness/`,因为 `dag closeout-draft` 会拒绝在 completed facts 之外写入)。
|
|
374
|
+
- Worker runtime state 落在目标 repo 的 `.task-pool/`(artifacts、JSONL/state、晨报、failure handoffs),与 `.harness/` 分离;`.task-pool/` 默认被 `.gitignore` 忽略。
|
|
375
|
+
- preflight 在 `new-task` 前跑 `loop-agent --version`、`inspect`、`docs-audit`、`git status --short --branch`,可选 `--check-repo`。一次夜间批处理期间不升级控制器,记录实际 `loop-agent` 版本。
|
|
376
|
+
- `batch run-ready` 默认在 stderr 输出人类可读进度(批次起止、每个 task 的阶段与耗时、report 决策),stdout 只保留最终 JSON,便于管道取用;加 `--quiet` 可关闭进度。
|
|
377
|
+
- 当前 Worker 仍是 v0(库 + CLI + dogfood),未接入定时/CI 驱动;`report morning` 只能从已有 Task Pool runs 汇总。
|
|
378
|
+
|
|
379
|
+
### 查看 duration statistics
|
|
380
|
+
```bash
|
|
381
|
+
loop-agent stats
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Worktree delegate / harvest(escape hatch)
|
|
385
|
+
|
|
386
|
+
```bash
|
|
387
|
+
loop-agent delegate <task-id> [--executor pi|cursor] [--base <branch>] [--branch <name>] [--no-symlink] [--auto-run] [--no-auto-run]
|
|
388
|
+
loop-agent harvest <task-id> [--squash] [--no-archive] [--keep-worktree]
|
|
389
|
+
loop-agent worktree create|list|remove ...
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
用于 worktree 隔离的 cursor-direct 执行与 merge 收口。常规 autonomous work 应优先 Agent DAG;详见 `multi-worktree.md` 与 `docs/cursor-executor-usage.md`。
|
|
393
|
+
|
|
394
|
+
### One-shot Cursor sidecar(escape hatch)
|
|
395
|
+
```bash
|
|
396
|
+
loop-agent cursor-prompt --cwd <repo-root> "Review this task without editing files."
|
|
397
|
+
loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-cursor-task.md
|
|
398
|
+
loop-agent cursor-prompt --cwd <repo-root> --model composer-2.5 --timeout 1800000 --file /tmp/bounded-cursor-task.md
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
`cursor-prompt` 是 one-shot Cursor SDK helper。用于 bounded diagnosis、小修复或调试 executor;写入 prompt 必须包含 task id、objective、allowed paths、forbidden paths、verification 和 preserve-unrelated-changes 要求。需要 `CURSOR_API_KEY`。它会创建 one-shot run evidence,但 Cursor 自报成功不替代 shell verification。
|
|
402
|
+
|
|
403
|
+
> **Historical(已移除)**:`subagent list|start|wait|wakeup|attach|stop` 与 `dashboard` 已移除,不再出现在 CLI registry。
|