@tea-agent/loop-agent 0.35.0 → 0.35.1-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +108 -108
- package/CHANGELOG.md +30 -0
- package/README.md +165 -165
- package/bin/agent-worker.js +0 -0
- package/bin/loop-agent.js +21 -21
- package/dist/application/task-lifecycle/advance.js +1 -0
- package/dist/commands/cursor-prompt.js +6 -6
- package/dist/commands/init-upgrade.js +351 -19
- package/dist/commands/init.js +14 -67
- package/dist/commands/loop-benchmark.js +11 -11
- package/dist/commands/pi-reuse-benchmark.js +16 -16
- package/dist/commands/run-dag-progress.js +14 -0
- package/dist/commands/task-advance.js +33 -3
- package/dist/shared/operator/capabilities.js +38 -1
- package/dist/sidecars/cursor-prompt/executor.js +1 -1
- package/dist/worker/console/chat/pi-runtime.js +41 -25
- package/dist/worker/console/chat/routes.js +27 -4
- package/dist/worker/console/operation-runner.js +24 -0
- package/dist/worker/console/operation-wait.js +241 -0
- package/dist/worker/console/operator-actions.js +58 -0
- package/dist/worker/console/static/assets/{index-hJqCPs_g.css → index-Dups4sSM.css} +1 -1
- package/dist/worker/console/static/assets/index-SjjjZnV3.js +56 -0
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/operator-chat/slash-palette-nav.js +141 -0
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +13 -2
- package/dist/worker/console/static-src/operator-chat/useComposer.js +30 -7
- package/dist/worker/observe/static/copy.js +67 -67
- package/dist/worker/observe/static/dag-layout.d.ts +36 -36
- package/dist/worker/observe/static/dom.js +220 -220
- package/dist/worker/observe/static/relations.js +133 -133
- package/dist/worker/observe/static/run-processing.js +148 -148
- package/dist/worker/observe/static/views/batch.js +227 -227
- package/dist/worker/observe/static/views/failures.js +143 -143
- package/dist/worker/observe/static/views/feature.js +492 -492
- package/dist/worker/observe/static/views/run.js +453 -453
- package/dist/worker/observe/static/views/shell.js +7 -7
- package/dist/worker/observe/static/views/timeline.js +163 -163
- package/dist/workflows/dag/canvas-observer.js +275 -275
- package/docs/architecture/evolution.md +73 -73
- package/docs/architecture/system-overview.md +100 -100
- package/docs/architecture/worker-and-feature.md +122 -122
- package/docs/skills/README.md +7 -7
- 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.prompt.md +246 -246
- package/docs/templates/agent-dag-process-supervisor.prompt.md +98 -98
- package/docs/templates/agent-dag-report.schema.json +473 -473
- package/docs/templates/agent-dag-review-verdict.prompt.md +68 -68
- package/docs/templates/backend-test-result.schema.json +99 -99
- package/docs/templates/evaluation/agents-map-slim-v1.md +87 -87
- package/docs/templates/evaluation/agents-map-verbose-v0.md +153 -153
- package/docs/templates/feature-spec.md +53 -53
- package/docs/templates/frontend-design-contract.md +42 -42
- package/docs/templates/frontend-eval/fixtures/failures/01-type-build-error.md +17 -17
- package/docs/templates/frontend-eval/fixtures/failures/02-unit-component-test-fail.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/03-fixture-schema-drift.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/04-missing-loading-empty-error-state.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/05-forbidden-write-writeset-expansion.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/06-unapproved-dependency-add.md +16 -16
- package/docs/templates/frontend-eval/fixtures/failures/07-mock-production-on.md +21 -21
- package/docs/templates/frontend-eval/fixtures/functional/01-simple-component-style.md +29 -29
- package/docs/templates/frontend-eval/fixtures/functional/02-form-validation.md +28 -28
- package/docs/templates/frontend-eval/fixtures/functional/03-list-detail-page.md +28 -28
- package/docs/templates/frontend-eval/fixtures/functional/04-api-mock.md +29 -29
- package/docs/templates/frontend-eval/fixtures/functional/05-permission-auth-gated-ui.md +27 -27
- package/docs/templates/frontend-eval/fixtures/functional/06-ssr-server-client-boundary.md +28 -28
- package/docs/templates/frontend-eval/fixtures/functional/07-shared-public-component-api.md +28 -28
- package/docs/templates/frontend-eval/fixtures/functional/08-pure-local-no-remote.md +27 -27
- package/docs/templates/frontend-eval/metrics.md +138 -138
- package/docs/templates/frontend-eval/smoke-targets.md +53 -53
- package/docs/templates/frontend-task-constraints.md +35 -35
- package/docs/templates/frontend-task-requirement.md +70 -70
- package/docs/templates/init-evolution-review.md +35 -35
- package/docs/templates/init-managed-agents.md +156 -154
- package/docs/templates/interactive-ui-round2-experiment.md +66 -66
- package/docs/templates/knowledge-graph-bootstrap-dag.json +118 -118
- package/docs/templates/knowledge-sync-dag.json +178 -178
- package/docs/templates/knowledge-sync-draft.schema.json +71 -71
- package/docs/templates/product-line/closeout.yaml +9 -9
- package/docs/templates/product-line/design.md +13 -13
- package/docs/templates/product-line/links.md +10 -10
- package/docs/templates/product-line/requirement.md +17 -17
- package/docs/templates/product-line/test-plan.md +7 -7
- 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/templates/worker-dogfood-evidence.md +80 -80
- package/docs/templates/worker-dogfood-setup.md +68 -68
- package/harness.json +5 -2
- package/package.json +1 -1
- package/scripts/kb-bootstrap-init-skeleton.sh +0 -0
- package/scripts/kb-graph-incremental-prepare.mjs +0 -0
- package/scripts/kb-graph-materialize.mjs +105 -105
- package/scripts/kb-graph-promote.mjs +164 -164
- package/scripts/kb-query.mjs +554 -554
- package/skills/agent-worker/SKILL.md +48 -48
- package/skills/agent-worker/references/agent-worker-operator.md +159 -159
- package/skills/ai-engineering-context/SKILL.md +48 -48
- package/skills/analyze-product-dependencies/scripts/test-validators.mjs +0 -0
- package/skills/analyze-product-dependencies/scripts/validate-api-documentation.mjs +0 -0
- package/skills/analyze-product-dependencies/scripts/validate-dependency-analysis.mjs +0 -0
- package/skills/analyze-product-dependencies/scripts/validate-product-requirement-input.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/compute-source-identity.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/test-validators.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/validate-product-analysis.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/validate-product-requirement.mjs +0 -0
- package/skills/analyze-product-requirements/scripts/validate-requirement-clarification.mjs +0 -0
- package/skills/browser-tools/browser-content.js +103 -103
- package/skills/browser-tools/browser-cookies.js +35 -35
- package/skills/browser-tools/browser-eval.js +53 -53
- package/skills/browser-tools/browser-hn-scraper.js +108 -108
- package/skills/browser-tools/browser-nav.js +44 -44
- package/skills/browser-tools/browser-pick.js +162 -162
- package/skills/browser-tools/browser-screenshot.js +34 -34
- package/skills/browser-tools/browser-start.js +86 -86
- package/skills/browser-tools/package-lock.json +2556 -2556
- package/skills/browser-tools/package.json +19 -19
- package/skills/code-review-core/SKILL.md +20 -20
- package/skills/codebase-scout/SKILL.md +19 -19
- package/skills/grill-me/SKILL.md +10 -10
- package/skills/local-jacoco-coverage/scripts/run-coverage-analysis.sh +0 -0
- package/skills/local-jacoco-coverage/scripts/start-jacoco-agent.sh +0 -0
- package/skills/loop-agent/SKILL.md +1 -0
- package/skills/loop-agent/references/command-reference.md +641 -639
- package/skills/loop-agent/references/docs-converge.md +126 -126
- package/skills/loop-agent/references/learned/README.md +21 -21
- package/skills/loop-agent/references/pi-prompt.md +23 -23
- package/skills/loop-agent/references/pi-subagent-assisted-mode.md +84 -84
- package/skills/playwright-cli/references/element-attributes.md +23 -23
- package/skills/playwright-cli/references/playwright-tests.md +39 -39
- package/skills/playwright-cli/references/request-mocking.md +87 -87
- package/skills/playwright-cli/references/running-code.md +241 -241
- package/skills/playwright-cli/references/session-management.md +225 -225
- package/skills/playwright-cli/references/storage-state.md +275 -275
- package/skills/playwright-cli/references/test-generation.md +433 -433
- 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/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/using-git-worktrees/SKILL.md +215 -215
- package/skills/verification-before-completion/SKILL.md +154 -154
- package/skills/webapp-testing/SKILL.md +19 -19
- package/dist/worker/console/static/assets/index-fsjzREob.js +0 -56
|
@@ -1,639 +1,641 @@
|
|
|
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
|
-
```bash
|
|
18
|
-
npm install -g @tea-agent/loop-agent@latest
|
|
19
|
-
npm list -g @tea-agent/loop-agent --depth=0
|
|
20
|
-
loop-agent --version
|
|
21
|
-
loop-agent doctor
|
|
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/`(包内内置,含 `loop-agent` 与 `agent-worker`;`loop-agent init` 投影时镜像为目标项目 `.agents/skills/`)、`docs/templates/`、`docs/architecture/`、`docs/skills/` 和 `examples/`。`docs/templates/init-managed-agents.md` 是 package-only 的 `AGENTS.md` managed block 渲染真源,不复制到目标治理 `templates/`;其余目标模板按 init surface 投影。`ai_workspace/loop-agent/`(默认 governanceRoot)下的 `progress/`、`reports/`、`exec-plans/`、`decisions/` 由 `loop-agent init` 在目标项目创建目录并投放 README,其中的任务正文属于目标仓库运行中生成的事实,不从 npm 包复制。
|
|
29
|
-
|
|
30
|
-
## 命令参考
|
|
31
|
-
|
|
32
|
-
## 默认选择模型
|
|
33
|
-
|
|
34
|
-
选择命令时按以下优先级:
|
|
35
|
-
|
|
36
|
-
1. **主路径 lifecycle**,用于常规 autonomous work:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
# 非微小 / 跨会话(推荐默认):loop-agent plan create PLAN_ID "Title"
|
|
40
|
-
loop-agent task advance TASK_ID "Task Title" \
|
|
41
|
-
--prd path/to/prd.md \
|
|
42
|
-
--accept-recommendations DIGEST \
|
|
43
|
-
--allowed-path "src/**" \
|
|
44
|
-
--forbidden-path ".harness/**" \
|
|
45
|
-
--verify "<label>:<command>" \
|
|
46
|
-
--json
|
|
47
|
-
|
|
48
|
-
# 审查 gate.writeSet / gate.digest 后
|
|
49
|
-
loop-agent task advance TASK_ID \
|
|
50
|
-
--approve-gate "write-set-review:DIGEST" \
|
|
51
|
-
--json
|
|
52
|
-
loop-agent task status TASK_ID --json
|
|
53
|
-
|
|
54
|
-
# 有 plan 时收尾
|
|
55
|
-
loop-agent plan complete PLAN_ID --summary "..."
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
`--verify` 命令应取项目 `AGENTS.md` / `docs/governance/verification-matrix.md` 登记的验证命令(不要假定 `npm run typecheck` 存在);`--verify` 可选,省略时自动从 package.json scripts 或既有 managed `task.json.verifyCommands` 推导建议。
|
|
59
|
-
|
|
60
|
-
首次 `task advance` 内部完成 create、PRD 归档、managed contract 投影、DAG 生成与 strict validate,并停在 writeSet gate;批准后同一命令长跑到稳定终态并做确定性 promotion/closeout。决策表与反模式见 `source-and-plan-practice.md`。
|
|
61
|
-
2. **Operator 工具**,用于 recovery、诊断、评测重放:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
loop-agent eval replay --spec <path> --json
|
|
65
|
-
loop-agent eval report --replay-id <id> --markdown
|
|
66
|
-
loop-agent eval candidate register --manifest <path> --json
|
|
67
|
-
loop-agent eval candidate show --candidate-id <id> --json
|
|
68
|
-
loop-agent eval candidate list --json
|
|
69
|
-
loop-agent eval candidate transition --candidate-id <id> --to <state> --reason <text> --json
|
|
70
|
-
loop-agent task status <task-id> --json
|
|
71
|
-
loop-agent task advance <task-id> --json # 失败后重跑同一 lifecycle 入口
|
|
72
|
-
loop-agent dag report --latest --markdown # advanced forensic
|
|
73
|
-
loop-agent dag closeout-draft --run-id <run-id> # advanced forensic handoff draft
|
|
74
|
-
loop-agent spine audit <task-id> --markdown
|
|
75
|
-
loop-agent knowledge curate --markdown --output ai_workspace/loop-agent/reports/<task-id>-learned-proposal.md
|
|
76
|
-
loop-agent loop-benchmark --markdown
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
3. **Escape hatch**,仅用于 worktree 隔离委派、executor 调试或 one-shot 诊断:
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
loop-agent delegate <task-id> --auto-run
|
|
83
|
-
loop-agent harvest <task-id>
|
|
84
|
-
loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-task.md
|
|
85
|
-
loop-agent pi-prompt "Reply with exactly OK."
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Setup(首次)
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
npm install -g @tea-agent/loop-agent@latest
|
|
92
|
-
loop-agent --version
|
|
93
|
-
loop-agent --help
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
### 检查 repo harness
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
loop-agent inspect # 当前 repo(自动检测)
|
|
100
|
-
loop-agent --repo-root /path/to/target-repo inspect # 指定 repo
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### 健康检查
|
|
104
|
-
|
|
105
|
-
```bash
|
|
106
|
-
loop-agent doctor
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
`doctor` 报告当前生效的 Pi backend 及 SDK/CLI 可用性。Pi step 默认 SDK-first 执行:
|
|
110
|
-
|
|
111
|
-
```bash
|
|
112
|
-
export CODE_AGENT_PI_BACKEND=sdk-first # 默认:先试 Pi SDK,允许时 fallback 到 CLI
|
|
113
|
-
export CODE_AGENT_PI_BACKEND=cli-only # 紧急回滚:纯 CLI 路径
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
SDK 回归或 SDK 可选依赖不可用时用 `cli-only` 诊断。CLI fallback 路径须与现有 workflow 行为兼容。
|
|
117
|
-
|
|
118
|
-
### 初始化与旧项目更新
|
|
119
|
-
|
|
120
|
-
用户中文表达到命令的映射(与目标项目 `AGENTS.md` 的“自然语言入口路由”保持一致):
|
|
121
|
-
|
|
122
|
-
| 用户表达 | 命令 |
|
|
123
|
-
| --- | --- |
|
|
124
|
-
| loop-agent 初始化 / loop agent 初始化 / loop agent初始化 / 初始化 loop-agent | 先运行 `loop-agent init instructions --repo-root .`,再运行 `loop-agent init --repo-root . --profile full --merge`,随后补全 README/验证矩阵并复查 doctor/inspect/docs audit |
|
|
125
|
-
| loop-agent初始化更新 / loop-agent 初始化更新 / 更新 loop-agent 初始化内容 / 升级 loop-agent 初始化 / 初始化对齐 / 升级后对齐 | `loop-agent init upgrade --repo-root . --json`(写入型 controller-owned 闭环;主会话完成 controller 返回的具体单文件 merge task 后以 `--continue` 推进,禁止停在中间态) |
|
|
126
|
-
| 初始化更新校验 / loop agent初始化更新校验 / 检查初始化更新 / 只检查,不要修改 | `loop-agent init check-update --repo-root . --markdown`(严格只读;不得创建 upgrade run、`apply-safe` 或模型合并) |
|
|
127
|
-
| 初始化安全更新 / loop agent初始化安全更新 / 应用初始化更新 | `loop-agent init upgrade --repo-root . --json`(不要求用户拼接低层安全更新参数) |
|
|
128
|
-
| init reconcile / 控制器升级后对齐目标项目 | `loop-agent init upgrade --repo-root . --json`(保留 `reconcile` 仅作兼容低层诊断) |
|
|
129
|
-
| loop-agent 帮我完成 / 帮我实现 / 帮我修复 / 帮我开发 <需求>;使用 loop-agent 完成 <X>;按 loop-agent 流程处理 <X> | 先 `loop-agent task advance <task-id> "任务标题" --prd <prd.md> --allowed-path "<glob>" --json`,审查 writeSet gate 后 `task advance --approve-gate write-set-review:<digest> --json`;主会话编排而不直接写业务实现 |
|
|
130
|
-
|
|
131
|
-
```bash
|
|
132
|
-
loop-agent init instructions --repo-root <target-repo>
|
|
133
|
-
loop-agent init --repo-root <target-repo> --profile full --merge \
|
|
134
|
-
--provider deepseek --model deepseek/deepseek-v4-flash
|
|
135
|
-
loop-agent init doctor --repo-root <target-repo>
|
|
136
|
-
loop-agent init check-update --repo-root <target-repo> --json
|
|
137
|
-
loop-agent init check-update --repo-root <target-repo> --markdown
|
|
138
|
-
loop-agent init update --repo-root <target-repo> --bootstrap-surface
|
|
139
|
-
loop-agent init update --repo-root <target-repo> --apply-safe
|
|
140
|
-
loop-agent init reconcile --repo-root <target-repo> [--json|--markdown] # compatibility low-level diagnostic
|
|
141
|
-
loop-agent init upgrade --repo-root <target-repo> --json
|
|
142
|
-
loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --status --json
|
|
143
|
-
loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --continue --json
|
|
144
|
-
loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --report --markdown
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
fresh init 将精确引用写到 `executors.pi.LOW/MED/HIGH`。fresh `loop-agent init` 会将合格且完整的 `provider/model` 引用投影到 `executors.pi.LOW/MED/HIGH`,即 `executors.pi.LOW`、`executors.pi.MED` 和 `executors.pi.HIGH`。三个 tier 齐全时不会写入 `defaultModel`,也不会恢复或建议旧顶层 routing 字段。
|
|
148
|
-
|
|
149
|
-
`init check-update` 是只读升级报告,用于发现目标项目是否落后于当前包内初始化 surface。输出会区分 deterministic actions、model merge tasks、human decisions 和 recommended next。`--markdown` 会渲染可直接交给模型执行的合并指引,包含 `allowedPaths`、`forbiddenPaths`、`mergeRules` 和 `verification`。
|
|
150
|
-
|
|
151
|
-
`init update --bootstrap-surface` 为旧项目写入 `.harness/init-surface.json` 的 `inferred-baseline`,不伪装成历史 recorded baseline。`init update --apply-safe` 只执行确定性安全动作:补缺失文件、创建目录、刷新 managed block;已有但无法确认与当前包一致的文件会进入 model merge tasks,不会被覆盖。模型 merge 只会自动展开不含 tier 或其他旧字段的唯一、完整且可证明等价的旧 `defaultModel: "provider/model"`;顶层 `model`、`models`、`modelProfiles`、`modelRouting`、`verify`、`sequentialWorkflowRole`、部分/对象 tier、bare model、冲突 provider 或未知语义均 fail closed,并保留原始 `harness.json`。
|
|
152
|
-
|
|
153
|
-
`init upgrade` 是写入型升级入口:首次运行冻结 controller identity、检查 npm latest、扫描 surface、自动执行安全动作,并把 run facts 持久化到 `.harness/init-upgrades/<run-id>/`。`--status` 与 `--report` 严格只读;`--continue` 会重新核验 identity、当前 hash 与不变量。版本选择、无法判定冲突、凭据、破坏性删除或 active writer 才进入 human decision。普通语义冲突返回具体单文件 `allowedPaths` merge task,主会话必须合并后继续,不能把 `needs-model-merge` 作为完成。默认管理项目级 OpenCode/Pi recovery 与 `.pi/settings.json` nested merge,保留显式 disabled,Pi trust 后才加载;默认不读写 `~/.pi/agent/settings.json`。旧 `init reconcile` 保留为兼容低层诊断。
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
loop-agent examples
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
--
|
|
172
|
-
--
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
loop-agent
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
loop-agent
|
|
197
|
-
loop-agent instructions
|
|
198
|
-
loop-agent instructions
|
|
199
|
-
loop-agent instructions
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
--
|
|
223
|
-
--
|
|
224
|
-
--
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
--reference-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
#
|
|
244
|
-
loop-agent --repo-root <target-repo> task advance <task-id> --
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
```
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
loop-agent goal
|
|
277
|
-
loop-agent goal
|
|
278
|
-
loop-agent goal
|
|
279
|
-
loop-agent goal
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
-
|
|
285
|
-
-
|
|
286
|
-
- `
|
|
287
|
-
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
-
|
|
291
|
-
-
|
|
292
|
-
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json
|
|
302
|
-
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-
|
|
303
|
-
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance
|
|
304
|
-
loop-agent dag validate --dag
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
loop-agent
|
|
308
|
-
|
|
309
|
-
loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --
|
|
310
|
-
|
|
311
|
-
loop-agent dag
|
|
312
|
-
|
|
313
|
-
loop-agent dag
|
|
314
|
-
loop-agent dag workflow-
|
|
315
|
-
|
|
316
|
-
loop-agent dag
|
|
317
|
-
|
|
318
|
-
loop-agent dag
|
|
319
|
-
loop-agent dag
|
|
320
|
-
loop-agent dag
|
|
321
|
-
loop-agent dag reconcile-run --run-id <run-id>
|
|
322
|
-
loop-agent dag
|
|
323
|
-
loop-agent dag
|
|
324
|
-
loop-agent dag rerun
|
|
325
|
-
loop-agent dag
|
|
326
|
-
loop-agent dag
|
|
327
|
-
loop-agent dag
|
|
328
|
-
loop-agent dag
|
|
329
|
-
loop-agent dag
|
|
330
|
-
loop-agent dag
|
|
331
|
-
loop-agent dag
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
**
|
|
337
|
-
|
|
338
|
-
-
|
|
339
|
-
|
|
340
|
-
-
|
|
341
|
-
-
|
|
342
|
-
-
|
|
343
|
-
-
|
|
344
|
-
-
|
|
345
|
-
-
|
|
346
|
-
-
|
|
347
|
-
-
|
|
348
|
-
-
|
|
349
|
-
-
|
|
350
|
-
-
|
|
351
|
-
-
|
|
352
|
-
-
|
|
353
|
-
-
|
|
354
|
-
-
|
|
355
|
-
-
|
|
356
|
-
-
|
|
357
|
-
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
loop-agent workflow
|
|
365
|
-
loop-agent workflow
|
|
366
|
-
loop-agent workflow
|
|
367
|
-
loop-agent workflow
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
loop-agent eval candidate
|
|
393
|
-
loop-agent eval candidate
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
"
|
|
405
|
-
"
|
|
406
|
-
"
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
"
|
|
411
|
-
"
|
|
412
|
-
"
|
|
413
|
-
"
|
|
414
|
-
"
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
```
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
loop-agent
|
|
432
|
-
loop-agent
|
|
433
|
-
loop-agent plan
|
|
434
|
-
loop-agent plan
|
|
435
|
-
loop-agent
|
|
436
|
-
loop-agent
|
|
437
|
-
loop-agent
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
- `
|
|
443
|
-
- `
|
|
444
|
-
- `plan
|
|
445
|
-
- `plan
|
|
446
|
-
- `
|
|
447
|
-
- `
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
--
|
|
460
|
-
--
|
|
461
|
-
--
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
loop-agent loop
|
|
481
|
-
loop-agent loop
|
|
482
|
-
loop-agent loop run <task-id> --action
|
|
483
|
-
loop-agent loop run <task-id> --
|
|
484
|
-
loop-agent loop
|
|
485
|
-
loop-agent loop
|
|
486
|
-
loop-agent loop
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
loop-agent knowledge graph-
|
|
515
|
-
loop-agent knowledge graph-
|
|
516
|
-
loop-agent knowledge
|
|
517
|
-
loop-agent knowledge
|
|
518
|
-
loop-agent knowledge query --mode
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
agent-worker task validate
|
|
531
|
-
agent-worker
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
--
|
|
535
|
-
[--
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
agent-worker feature
|
|
539
|
-
agent-worker feature
|
|
540
|
-
agent-worker feature
|
|
541
|
-
agent-worker feature
|
|
542
|
-
agent-worker feature
|
|
543
|
-
agent-worker
|
|
544
|
-
agent-worker
|
|
545
|
-
agent-worker
|
|
546
|
-
agent-worker task
|
|
547
|
-
agent-worker
|
|
548
|
-
agent-worker
|
|
549
|
-
agent-worker
|
|
550
|
-
agent-worker pool
|
|
551
|
-
agent-worker
|
|
552
|
-
agent-worker
|
|
553
|
-
agent-worker
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
[--
|
|
559
|
-
[--
|
|
560
|
-
[--
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
agent-worker
|
|
564
|
-
agent-worker
|
|
565
|
-
agent-worker
|
|
566
|
-
agent-worker scheduler
|
|
567
|
-
agent-worker scheduler
|
|
568
|
-
agent-worker scheduler
|
|
569
|
-
agent-worker scheduler
|
|
570
|
-
agent-worker scheduler
|
|
571
|
-
agent-worker scheduler
|
|
572
|
-
agent-worker scheduler
|
|
573
|
-
agent-worker scheduler
|
|
574
|
-
agent-worker scheduler
|
|
575
|
-
agent-worker scheduler clock
|
|
576
|
-
agent-worker scheduler
|
|
577
|
-
agent-worker scheduler
|
|
578
|
-
agent-worker
|
|
579
|
-
agent-worker
|
|
580
|
-
agent-worker
|
|
581
|
-
agent-worker
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
-
|
|
589
|
-
-
|
|
590
|
-
-
|
|
591
|
-
-
|
|
592
|
-
-
|
|
593
|
-
- `
|
|
594
|
-
- `feature
|
|
595
|
-
- `feature
|
|
596
|
-
- `feature run
|
|
597
|
-
- `feature
|
|
598
|
-
- `feature
|
|
599
|
-
- `feature
|
|
600
|
-
- `feature
|
|
601
|
-
- `
|
|
602
|
-
- `
|
|
603
|
-
- `
|
|
604
|
-
-
|
|
605
|
-
-
|
|
606
|
-
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
loop-agent stats
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
loop-agent
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
loop-agent cursor-prompt --cwd <repo-root>
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
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
|
+
```bash
|
|
18
|
+
npm install -g @tea-agent/loop-agent@latest
|
|
19
|
+
npm list -g @tea-agent/loop-agent --depth=0
|
|
20
|
+
loop-agent --version
|
|
21
|
+
loop-agent doctor
|
|
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/`(包内内置,含 `loop-agent` 与 `agent-worker`;`loop-agent init` 投影时镜像为目标项目 `.agents/skills/`)、`docs/templates/`、`docs/architecture/`、`docs/skills/` 和 `examples/`。`docs/templates/init-managed-agents.md` 是 package-only 的 `AGENTS.md` managed block 渲染真源,不复制到目标治理 `templates/`;其余目标模板按 init surface 投影。`ai_workspace/loop-agent/`(默认 governanceRoot)下的 `progress/`、`reports/`、`exec-plans/`、`decisions/` 由 `loop-agent init` 在目标项目创建目录并投放 README,其中的任务正文属于目标仓库运行中生成的事实,不从 npm 包复制。
|
|
29
|
+
|
|
30
|
+
## 命令参考
|
|
31
|
+
|
|
32
|
+
## 默认选择模型
|
|
33
|
+
|
|
34
|
+
选择命令时按以下优先级:
|
|
35
|
+
|
|
36
|
+
1. **主路径 lifecycle**,用于常规 autonomous work:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# 非微小 / 跨会话(推荐默认):loop-agent plan create PLAN_ID "Title"
|
|
40
|
+
loop-agent task advance TASK_ID "Task Title" \
|
|
41
|
+
--prd path/to/prd.md \
|
|
42
|
+
--accept-recommendations DIGEST \
|
|
43
|
+
--allowed-path "src/**" \
|
|
44
|
+
--forbidden-path ".harness/**" \
|
|
45
|
+
--verify "<label>:<command>" \
|
|
46
|
+
--json
|
|
47
|
+
|
|
48
|
+
# 审查 gate.writeSet / gate.digest 后
|
|
49
|
+
loop-agent task advance TASK_ID \
|
|
50
|
+
--approve-gate "write-set-review:DIGEST" \
|
|
51
|
+
--json
|
|
52
|
+
loop-agent task status TASK_ID --json
|
|
53
|
+
|
|
54
|
+
# 有 plan 时收尾
|
|
55
|
+
loop-agent plan complete PLAN_ID --summary "..."
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`--verify` 命令应取项目 `AGENTS.md` / `docs/governance/verification-matrix.md` 登记的验证命令(不要假定 `npm run typecheck` 存在);`--verify` 可选,省略时自动从 package.json scripts 或既有 managed `task.json.verifyCommands` 推导建议。
|
|
59
|
+
|
|
60
|
+
首次 `task advance` 内部完成 create、PRD 归档、managed contract 投影、DAG 生成与 strict validate,并停在 writeSet gate;批准后同一命令长跑到稳定终态并做确定性 promotion/closeout。决策表与反模式见 `source-and-plan-practice.md`。
|
|
61
|
+
2. **Operator 工具**,用于 recovery、诊断、评测重放:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
loop-agent eval replay --spec <path> --json
|
|
65
|
+
loop-agent eval report --replay-id <id> --markdown
|
|
66
|
+
loop-agent eval candidate register --manifest <path> --json
|
|
67
|
+
loop-agent eval candidate show --candidate-id <id> --json
|
|
68
|
+
loop-agent eval candidate list --json
|
|
69
|
+
loop-agent eval candidate transition --candidate-id <id> --to <state> --reason <text> --json
|
|
70
|
+
loop-agent task status <task-id> --json
|
|
71
|
+
loop-agent task advance <task-id> --json # 失败后重跑同一 lifecycle 入口
|
|
72
|
+
loop-agent dag report --latest --markdown # advanced forensic
|
|
73
|
+
loop-agent dag closeout-draft --run-id <run-id> # advanced forensic handoff draft
|
|
74
|
+
loop-agent spine audit <task-id> --markdown
|
|
75
|
+
loop-agent knowledge curate --markdown --output ai_workspace/loop-agent/reports/<task-id>-learned-proposal.md
|
|
76
|
+
loop-agent loop-benchmark --markdown
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
3. **Escape hatch**,仅用于 worktree 隔离委派、executor 调试或 one-shot 诊断:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
loop-agent delegate <task-id> --auto-run
|
|
83
|
+
loop-agent harvest <task-id>
|
|
84
|
+
loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-task.md
|
|
85
|
+
loop-agent pi-prompt "Reply with exactly OK."
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Setup(首次)
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npm install -g @tea-agent/loop-agent@latest
|
|
92
|
+
loop-agent --version
|
|
93
|
+
loop-agent --help
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 检查 repo harness
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
loop-agent inspect # 当前 repo(自动检测)
|
|
100
|
+
loop-agent --repo-root /path/to/target-repo inspect # 指定 repo
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 健康检查
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
loop-agent doctor
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
`doctor` 报告当前生效的 Pi backend 及 SDK/CLI 可用性。Pi step 默认 SDK-first 执行:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
export CODE_AGENT_PI_BACKEND=sdk-first # 默认:先试 Pi SDK,允许时 fallback 到 CLI
|
|
113
|
+
export CODE_AGENT_PI_BACKEND=cli-only # 紧急回滚:纯 CLI 路径
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
SDK 回归或 SDK 可选依赖不可用时用 `cli-only` 诊断。CLI fallback 路径须与现有 workflow 行为兼容。
|
|
117
|
+
|
|
118
|
+
### 初始化与旧项目更新
|
|
119
|
+
|
|
120
|
+
用户中文表达到命令的映射(与目标项目 `AGENTS.md` 的“自然语言入口路由”保持一致):
|
|
121
|
+
|
|
122
|
+
| 用户表达 | 命令 |
|
|
123
|
+
| --- | --- |
|
|
124
|
+
| loop-agent 初始化 / loop agent 初始化 / loop agent初始化 / 初始化 loop-agent | 先运行 `loop-agent init instructions --repo-root .`,再运行 `loop-agent init --repo-root . --profile full --merge`,随后补全 README/验证矩阵并复查 doctor/inspect/docs audit |
|
|
125
|
+
| loop-agent初始化更新 / loop-agent 初始化更新 / 更新 loop-agent 初始化内容 / 升级 loop-agent 初始化 / 初始化对齐 / 升级后对齐 | `loop-agent init upgrade --repo-root . --json`(写入型 controller-owned 闭环;主会话完成 controller 返回的具体单文件 merge task 后以 `--continue` 推进,禁止停在中间态) |
|
|
126
|
+
| 初始化更新校验 / loop agent初始化更新校验 / 检查初始化更新 / 只检查,不要修改 | `loop-agent init check-update --repo-root . --markdown`(严格只读;不得创建 upgrade run、`apply-safe` 或模型合并) |
|
|
127
|
+
| 初始化安全更新 / loop agent初始化安全更新 / 应用初始化更新 | `loop-agent init upgrade --repo-root . --json`(不要求用户拼接低层安全更新参数) |
|
|
128
|
+
| init reconcile / 控制器升级后对齐目标项目 | `loop-agent init upgrade --repo-root . --json`(保留 `reconcile` 仅作兼容低层诊断) |
|
|
129
|
+
| loop-agent 帮我完成 / 帮我实现 / 帮我修复 / 帮我开发 <需求>;使用 loop-agent 完成 <X>;按 loop-agent 流程处理 <X> | 先 `loop-agent task advance <task-id> "任务标题" --prd <prd.md> --allowed-path "<glob>" --json`,审查 writeSet gate 后 `task advance --approve-gate write-set-review:<digest> --json`;主会话编排而不直接写业务实现 |
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
loop-agent init instructions --repo-root <target-repo>
|
|
133
|
+
loop-agent init --repo-root <target-repo> --profile full --merge \
|
|
134
|
+
--provider deepseek --model deepseek/deepseek-v4-flash
|
|
135
|
+
loop-agent init doctor --repo-root <target-repo>
|
|
136
|
+
loop-agent init check-update --repo-root <target-repo> --json
|
|
137
|
+
loop-agent init check-update --repo-root <target-repo> --markdown
|
|
138
|
+
loop-agent init update --repo-root <target-repo> --bootstrap-surface
|
|
139
|
+
loop-agent init update --repo-root <target-repo> --apply-safe
|
|
140
|
+
loop-agent init reconcile --repo-root <target-repo> [--json|--markdown] # compatibility low-level diagnostic
|
|
141
|
+
loop-agent init upgrade --repo-root <target-repo> --json
|
|
142
|
+
loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --status --json
|
|
143
|
+
loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --continue --json
|
|
144
|
+
loop-agent init upgrade --repo-root <target-repo> --run-id <run-id> --report --markdown
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
fresh init 将精确引用写到 `executors.pi.LOW/MED/HIGH`。fresh `loop-agent init` 会将合格且完整的 `provider/model` 引用投影到 `executors.pi.LOW/MED/HIGH`,即 `executors.pi.LOW`、`executors.pi.MED` 和 `executors.pi.HIGH`。三个 tier 齐全时不会写入 `defaultModel`,也不会恢复或建议旧顶层 routing 字段。
|
|
148
|
+
|
|
149
|
+
`init check-update` 是只读升级报告,用于发现目标项目是否落后于当前包内初始化 surface。输出会区分 deterministic actions、model merge tasks、human decisions 和 recommended next。`--markdown` 会渲染可直接交给模型执行的合并指引,包含 `allowedPaths`、`forbiddenPaths`、`mergeRules` 和 `verification`。
|
|
150
|
+
|
|
151
|
+
`init update --bootstrap-surface` 为旧项目写入 `.harness/init-surface.json` 的 `inferred-baseline`,不伪装成历史 recorded baseline。`init update --apply-safe` 只执行确定性安全动作:补缺失文件、创建目录、刷新 managed block;已有但无法确认与当前包一致的文件会进入 model merge tasks,不会被覆盖。模型 merge 只会自动展开不含 tier 或其他旧字段的唯一、完整且可证明等价的旧 `defaultModel: "provider/model"`;顶层 `model`、`models`、`modelProfiles`、`modelRouting`、`verify`、`sequentialWorkflowRole`、部分/对象 tier、bare model、冲突 provider 或未知语义均 fail closed,并保留原始 `harness.json`。
|
|
152
|
+
|
|
153
|
+
`init upgrade` 是写入型升级入口:首次运行冻结 controller identity、检查 npm latest、扫描 surface、自动执行安全动作,并把 run facts 持久化到 `.harness/init-upgrades/<run-id>/`。`--status` 与 `--report` 严格只读;`--continue` 会重新核验 identity、当前 hash 与不变量。版本选择、无法判定冲突、凭据、破坏性删除或 active writer 才进入 human decision。普通语义冲突返回具体单文件 `allowedPaths` merge task,主会话必须合并后继续,不能把 `needs-model-merge` 作为完成。默认管理项目级 OpenCode/Pi recovery 与 `.pi/settings.json` nested merge,保留显式 disabled,Pi trust 后才加载;默认不读写 `~/.pi/agent/settings.json`。旧 `init reconcile` 保留为兼容低层诊断。
|
|
154
|
+
|
|
155
|
+
升级在 managed block 收敛后生成只读 gitignore 迁移评估(`.harness/init-upgrades/<run-id>/gitignore-migration.json`):inventory 已跟踪的 `.harness/**` 与 `.agents/**`,建议 index-only 命令 `git rm -r --cached --ignore-unmatch .harness` / `.agents`(只改 index、保留工作区文件;`scripts/**` 与 `ai_workspace/loop-agent/**` 永不出现)。`.agents` 已跟踪内容会触发 human-decision 暂停等待审查;非 Git 仓库、git 查询失败或存在 staged 条目时 `status: blocked` 且无命令建议。controller 不自动修改 Git index。
|
|
156
|
+
|
|
157
|
+
### 查看或复制内置示例
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
loop-agent examples list
|
|
161
|
+
loop-agent examples show <name>
|
|
162
|
+
loop-agent examples copy <name> --output examples/<name>
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
`examples` 只读取或复制包内示例,不会自动写入目标项目。省略 `--output` 时,`copy` 会写到目标项目的 `examples/<name>`。
|
|
166
|
+
|
|
167
|
+
### 创建 / 推进 task(标准入口)
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
loop-agent task advance <task-id> "Task Title" \
|
|
171
|
+
--prd path/to-prd.md \
|
|
172
|
+
--allowed-path "src/**" \
|
|
173
|
+
--verify "<label>:<command>" \
|
|
174
|
+
--json
|
|
175
|
+
loop-agent task advance <task-id> --approve-gate "write-set-review:<digest>" --json
|
|
176
|
+
loop-agent task status <task-id> --json
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
首次 advance 可 create `.harness/tasks/<task-id>/`(含 `source/`、`artifacts/`、`logs/`),归档 PRD 到 `source/references/`,派生 managed `需求.md` / `执行约束.md`,生成并 strict validate DAG,停在 writeSet gate。批准后同一命令长跑并确定性 promotion/closeout。
|
|
180
|
+
|
|
181
|
+
PRD 原文 **不改写**;冲突时以 `source/references/*` 为准。`referenceDocs` 是 `{ path, name? }[]` 对象数组。
|
|
182
|
+
|
|
183
|
+
### Task Contract / operator machine surface
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
loop-agent task status <task-id> --json
|
|
187
|
+
loop-agent task advance <task-id> --from-draft <path> --json
|
|
188
|
+
loop-agent operator capabilities [--json]
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
`task` 标准面是 advance/status;managed contract 经 `task advance`/`task status`;Console Interview validate/diff 走 in-process application API,无公开 CLI。`operator` 返回 Operator machine envelope capabilities,供 Console/控制面做能力协商。
|
|
192
|
+
|
|
193
|
+
### Task action context / artifact instructions
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
loop-agent task status <task-id> --json
|
|
197
|
+
loop-agent instructions source --task <task-id> --json
|
|
198
|
+
loop-agent instructions dag-draft --task <task-id> --json
|
|
199
|
+
loop-agent instructions task-artifacts --task <task-id> --json
|
|
200
|
+
loop-agent instructions promotion --task <task-id> --json
|
|
201
|
+
loop-agent instructions closeout --task <task-id> --json
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
`task status` 是只读 lifecycle 入口,返回 `lifecycleState`、`gate`、`blockers` 与单一 `next`。`instructions` 在写入 source、DAG draft、task artifacts、promotion 或 closeout 前返回目标路径、依赖、模板、写策略与完成标准;blocked artifact 会列出 `missingDependencies`。`instructions task-artifacts` 只要求 promote 桥接的 `修改记录.md` / `验证结果.md`,不要求手写分析/计划/复盘三份 L1 报告。
|
|
205
|
+
|
|
206
|
+
### Promotion / closeout
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
loop-agent task advance <task-id> --json
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
成功路径由 `task advance` 内部从 completed DAG facts 生成 task `修改记录.md` / `验证结果.md` 与 progress handoff,不调用 LLM、不修改 completed run facts。
|
|
213
|
+
|
|
214
|
+
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`。
|
|
215
|
+
|
|
216
|
+
### 运行任何 step 前:准备 source materials
|
|
217
|
+
|
|
218
|
+
标准路径用 `task advance` 一次完成 create、归档 PRD、派生 managed contract:
|
|
219
|
+
|
|
220
|
+
```bash
|
|
221
|
+
loop-agent task advance <task-id> "标题" \
|
|
222
|
+
--prd <path-to-original-prd.md> \
|
|
223
|
+
--allowed-path "<glob>" \
|
|
224
|
+
--forbidden-path ".harness/**" \
|
|
225
|
+
--verify "<label>:<command>" \
|
|
226
|
+
--json
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
默认无 LLM 写 source;工程边界用 flags 显式给出。不要让 AI 直接改写 `source/references/*`。
|
|
230
|
+
Product Requirement V3/V4(`product-requirement.md`)由确定性解析消费;`product-analysis` / `requirement-clarification` 不能单独作为可执行 PRD。
|
|
231
|
+
intake 失败时不要在原 PRD 目录生成兼容 md/json;`--from-draft` **仅**人工 reviewed draft / managed 恢复 / 调试,不是 `EMPTY_ACCEPTANCE` 默认恢复路径。
|
|
232
|
+
|
|
233
|
+
### Feature-study workflow(参考代码 → 轻量实现)
|
|
234
|
+
|
|
235
|
+
例如「分析参考仓库的一项功能,并在目标仓库实现轻量版本」:
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
loop-agent --repo-root /path/to/target-repo study init <task-id> "Title" \
|
|
239
|
+
--reference-repo codex:/Users/mac/go/src/codex \
|
|
240
|
+
--reference-doc plan:/Users/mac/plans/codex-goal-feature.md \
|
|
241
|
+
--reference-glob "codex-rs/**/goal*.rs"
|
|
242
|
+
|
|
243
|
+
# 编辑 source/需求.md + source/执行约束.md,然后按标准 task lifecycle 推进:
|
|
244
|
+
loop-agent --repo-root <target-repo> task advance <task-id> --profile auto --dag-output .harness/tasks/<task-id>/dag.json --json
|
|
245
|
+
# 审查 writeSet gate 后,继续同一任务:
|
|
246
|
+
loop-agent --repo-root <target-repo> task advance <task-id> --approve-gate "write-set-review:<digest>" --json
|
|
247
|
+
loop-agent --repo-root <target-repo> task status <task-id> --json
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
`task advance` 会生成并 strict validate 任务 DAG;`--dag-output` 只用于导出可审阅草稿,不要求再把 `dag validate` 或 `dag execute` 当作标准任务的下一步。
|
|
251
|
+
|
|
252
|
+
仅当有意把导出的 JSON 当作**独立的 advanced arbitrary DagSpec** 排查或执行时,才使用以下高级入口;它们不替代上述标准 task lifecycle:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
loop-agent --repo-root <target-repo> dag validate --dag .harness/tasks/<task-id>/dag.json --strict-models --strict-governance
|
|
256
|
+
loop-agent --repo-root <target-repo> dag execute --dag .harness/tasks/<task-id>/dag.json --cwd <target-repo>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
目标 repo 需有 `.harness/prompts/feature-study-analyze.md` 与 `feature-study-plan.md`(缺失时从 loop-agent 复制)。
|
|
260
|
+
|
|
261
|
+
### Removed sequential workflow
|
|
262
|
+
|
|
263
|
+
历史顺序式 `run analyze|plan|spec|implement|verify|retrospective|auto|loop|continue|study` 已移除。新任务不要使用这些命令,也不要在 prompt、skill 或 docs 中把它们描述为 fallback。
|
|
264
|
+
|
|
265
|
+
### Reference helpers(compatibility)
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
loop-agent reference index <task-id>
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
`reference` 是 compatibility / feature-study 辅助入口,用于维护或检查参考资料索引。常规实现任务不要从 `reference` 起步;使用 `task advance` 推进同一任务,并用 `task status` 做只读状态确认。
|
|
272
|
+
|
|
273
|
+
### Task goal lifecycle(compatibility-only / deprecated-candidate)
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
loop-agent goal set <task-id> "Objective text" [--token-budget <number|null>]
|
|
277
|
+
loop-agent goal set <task-id> "Replacement objective" --force
|
|
278
|
+
loop-agent goal get <task-id>
|
|
279
|
+
loop-agent goal pause <task-id>
|
|
280
|
+
loop-agent goal resume <task-id>
|
|
281
|
+
loop-agent goal clear <task-id>
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
- 已有 goal 且 objective 不同时,替换须显式 `--force`。
|
|
285
|
+
- `harness.json` 可用 `features.goals=false` 关闭此 surface。
|
|
286
|
+
- `status` 现含 `goal`(`objective/status/tokenBudget/tokensUsed/timeUsedSeconds/continuationRuns`)、`verifyEnv`、`maxGoalContinuationsPerRun` 及可选 `flowHint`
|
|
287
|
+
- 在 `source/需求.md` 用 `<!-- goal-scope -->` … `<!-- /goal-scope -->` 包裹仅 goal 验收项;范围外 `- [ ]` 不阻塞 goal 完成
|
|
288
|
+
- `task.json`:`verifyEnv=clean`(默认);goal continuation 需 verify 重试时用 `flow=loop`,避免盲目 implement 循环
|
|
289
|
+
- continuation 是 runtime policy,不是普通用户消息:
|
|
290
|
+
- continuation prompts are legacy compatibility metadata under `.harness/prompts/`
|
|
291
|
+
- 触发时叠加 `.harness/prompts/objective_updated.md` 与 `.harness/prompts/budget_limit.md`
|
|
292
|
+
- 将渲染文本注入隐藏 `<goal_context>...</goal_context>` 片段供 step 执行
|
|
293
|
+
- 用于保持 continuation 行为一致,减少聊天式历史噪音
|
|
294
|
+
- preflight 含 state/mode guard + 启动前 goal 一致性复检
|
|
295
|
+
|
|
296
|
+
### Advanced arbitrary DagSpec validation 与 execution
|
|
297
|
+
|
|
298
|
+
以下 `dag validate`、`dag execute`、`dag report` 与相关 run-level 命令是 **advanced arbitrary DagSpec / forensic** surface,适用于手写或显式导出的独立 DAG、诊断与证据审阅。它们不创建标准 task lifecycle,也不取代标准 mutation 的 `task advance` 或只读状态查询的 `task status`。
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json # 常规 validation;无 .harness/dag-runs 副作用
|
|
302
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-models # 非 canonical executorModels 时失败
|
|
303
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance # governance warning 时失败
|
|
304
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-skills # missing/error/truncated skill 或 unresolved reference 时失败
|
|
305
|
+
loop-agent dag validate --dag <temp-dir>/hybrid-dag.json --strict-governance --spine-task <task-id> # 同时消费 minimal spec spine audit
|
|
306
|
+
loop-agent dag validate --dag ai_workspace/loop-agent/templates/agent-dag.supervised-implementation.json --strict-models --strict-governance # role=supervisor + write-set-gate topology
|
|
307
|
+
cp ai_workspace/loop-agent/templates/agent-dag.supervised-implementation.json <temp-dir>/supervised-dag.json
|
|
308
|
+
(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
|
|
309
|
+
loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> # advanced arbitrary DagSpec;stderr 默认输出节点进度与 30s 心跳,stdout 保持最终 JSON
|
|
310
|
+
loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> --progress-interval-ms 60000 # 调整心跳;--quiet 可禁用
|
|
311
|
+
loop-agent dag execute --dag <temp-dir>/hybrid-dag.json --init-only --canvas-path <temp-dir>/hybrid-dag.canvas.tsx # 可选 derived Canvas view
|
|
312
|
+
bash scripts/run-dag-safe.sh --dag <temp-dir>/hybrid-dag.json --cwd <repo-root> [--timeout-secs 7200] # advanced arbitrary DagSpec 的后台运行 + 轮询,避免外层 bash timeout 杀进程(见 agent-dag-runner.md §Adaptive liveness)
|
|
313
|
+
loop-agent dag init-hybrid <task-id> # 生成可审阅的 DAG draft
|
|
314
|
+
loop-agent dag workflow-plan <task-id> --profile pr-review --output .harness/tasks/<task-id>/workflows/planned/<name>.workflow.json
|
|
315
|
+
loop-agent dag workflow-validate --workflow .harness/tasks/<task-id>/workflows/planned/<name>.workflow.json --strict-governance
|
|
316
|
+
loop-agent dag workflow-compile --workflow .harness/tasks/<task-id>/workflows/planned/<name>.workflow.json --output .harness/tasks/<task-id>/workflows/compiled/<name>.dag.json --manifest .harness/tasks/<task-id>/workflows/compiled/<name>.compile-manifest.json
|
|
317
|
+
# compiled workflow DAGs stay explicit; they do not implicitly replace task root dag.json
|
|
318
|
+
loop-agent dag status --run-id <run-id> # 单次 run JSON 摘要(approvalFlow, healthIssues)
|
|
319
|
+
loop-agent dag doctor # 扫描 active/paused/completed runs;advisoryOnly health report
|
|
320
|
+
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 锁定于 ai_workspace/loop-agent/templates/agent-dag-report.schema.json;--paused-latest 聚焦最新 paused run;playbook: ai_workspace/loop-agent/agent-dag-recovery-playbook.md
|
|
321
|
+
loop-agent dag reconcile-run --run-id <run-id> # 只读检查 effectiveStatus 与恢复/收口资格
|
|
322
|
+
loop-agent dag reconcile-run --run-id <run-id> --action supersede --reason "..." # 显式保留证据并标记为任务已另行完成
|
|
323
|
+
loop-agent dag reconcile-run --run-id <run-id> --action abandon --reason "..." # 显式保留证据并收口为已放弃
|
|
324
|
+
loop-agent dag rerun --run-id <run-id> --from-node <node-id> --plan [--json] # 从节点重跑资格预检(不执行)
|
|
325
|
+
loop-agent dag rerun --run-id <run-id> --from-node <node-id> --plan-hash <sha256> --request-id <key> --reason "..." [--json] # 安全子图 continuation
|
|
326
|
+
loop-agent dag rerun-task --run-id <run-id> --reason "..." --request-id <key> [--profile auto] [--task-id <id>] [--json] # standalone 完整任务重跑
|
|
327
|
+
loop-agent dag reconcile-tasks --glob '<pattern>' # 仅报告的 task/run/artifact/verify drift audit
|
|
328
|
+
loop-agent dag final-verification <task-id> # 生成 closeout DAG,closeout artifact 后再 final verify
|
|
329
|
+
loop-agent dag decision inspect --run-id <run-id> [--node-id <node-id>] # dry-run envelope 重解析;除 run 缺失外 exit 0
|
|
330
|
+
loop-agent dag decision validate --run-id <run-id> [--node-id <node-id>] # 同上;envelope 无效时 exit 1
|
|
331
|
+
loop-agent dag approve --run-id <run-id> --option <id> # decision gate 人工 approve
|
|
332
|
+
loop-agent dag reject --run-id <run-id> --reason "..." # reject paused run
|
|
333
|
+
loop-agent dag resume --run-id <run-id> # approve 后继续
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
**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。
|
|
337
|
+
|
|
338
|
+
**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`。
|
|
339
|
+
|
|
340
|
+
- `dag validate` 做 arbitrary DagSpec 的 schema/topology/ranks 检查;审 `warnings` 中的显式 `executorModels` drift 与 governance lint。它不替代 `task advance` 的标准任务生成与严格校验。
|
|
341
|
+
- 手写临时 DAG spec 执行前用 `dag validate --strict-models`,model-matrix drift 应 fail fast。
|
|
342
|
+
- read-only artifact-boundary 或 DAG 内 shell governance warning 应 fail fast 时用 `dag validate --strict-governance`。
|
|
343
|
+
- 人工 handoff 视图用 `dag report --markdown`(summary、node timeline、failures、四段 Recovery Plan、artifacts、建议 next action)。仅 derived、advisory;需保存时重定向到平台临时目录或 `ai_workspace/loop-agent/reports/`。
|
|
344
|
+
- operator 聚焦最新 paused run 用 `dag report --paused-latest`(等同 `--lifecycle paused --latest`;勿与显式 `--lifecycle` 并用)。
|
|
345
|
+
- 需 operator 关注的 run 用 `dag report --failed-only`、`--latest`、`--action <recovery-action>` 收窄。category→action 映射见 `ai_workspace/loop-agent/agent-dag-recovery-playbook.md`。
|
|
346
|
+
- 只读扫描 `.harness/dag-runs/` 下所有 run 的生命周期 health issue 与建议 action 用 `dag doctor`(`advisoryOnly: true`;不 mutate facts)。
|
|
347
|
+
- `dag status` / `dag doctor` 的 runner heartbeat 只表示 lease;Pi meaningful progress 由 Provider/tool/output 活动决定。节点可显示 `quiet`、`suspected-stall`、`probing` 或 `needs-attention`,不要仅凭运行时长手工结束。
|
|
348
|
+
- Pi 默认 4h absolute max,`agent-worker` 默认不设置外层 `dag execute` wall-clock;显式 `worker.timeout_ms` 仍是 hard timeout。`termination-unconfirmed` 表示旧 attempt 的退出无法确认,禁止自动 retry,先保留现场并完成 operator 对账。
|
|
349
|
+
- approve/resume 前用 `dag status --run-id <id>` 看单次 lifecycle、`approvalFlow`、`hasHumanApproval`。
|
|
350
|
+
- lifecycle、raw status 与 liveness 冲突时先用 `dag reconcile-run --run-id <id>` 只读检查。只有 runner 已证明停止且 operator 明确给出 `supersede|abandon` 与 reason 时才允许收口;它保存原始 state,不把未执行节点标成成功。
|
|
351
|
+
- task status、source/artifacts、DAG outcome、verification 记录可能 drift 时用 `dag reconcile-tasks --glob '<pattern>'`。默认仅报告;`--patch` 显式且不能伪造 verification evidence。
|
|
352
|
+
- 大型 PRD closeout 用 `dag final-verification <task-id>` 生成确定性 DAG,final verification 在 closeout artifact 创建之后。
|
|
353
|
+
- 从 run facts dry-run envelope 解析用 `dag decision inspect|validate`;`validate` 在无效 envelope 时 exit 1;永不自动 resume/retry。
|
|
354
|
+
- Decision Gate prompt 可用 `buildDagDecisionGateEvidence()`(`src/workflows/dag/decision-evidence.ts`)做与 `dag report --json`、`ai_workspace/loop-agent/templates/agent-dag-report.schema.json` 对齐的只读摘要;不 mutate run state,不执行 retry/resume。
|
|
355
|
+
- `dag execute --dry-run` 仅用于 advanced arbitrary DagSpec 的预演:snapshot 写入命令返回的 `runDir`(当前形态为 `.harness/dag-runs/dry-run/<runId>/`);它不创建 active run、不出现在 active overview,也不能作为 `dag resume` 的目标。
|
|
356
|
+
- task source 应从 `harness.json.workflowPolicy.dag.profileRouting` 与确定性 candidate `governanceProfile` 选择治理强度时用 `task advance --profile auto`。无 `--profile` 仅用于旧 standard-compatible 输出;`--profile minimal|standard|reviewed|supervised` 记录治理强度,不替换已识别的专用业务 workflow。
|
|
357
|
+
- 默认 `standard` 任务先读取 `source/需求.md` 中的结构化任务类型,再结合 `allowedPaths` 与 React/Next/Vue 项目能力做确定性分类。确认是前端项目且任务不是明确后端、混合、排除前端或仅文档/测试范围时,自动选择 `frontend-implementation`,不依赖需求关键词;普通后端实现绝不自动进入 `backend-test`。
|
|
358
|
+
- 新生成 DAG 会冻结任务源路径、SHA-256 和显式 `REQ/BR/AC` 到 `sourceBinding`。前端计划漏号时 `frontend-requirement-coverage-shell` 在 writer 前阻断。中断恢复应修复 task source 后重新运行 `task advance`,不要生成只携带上游摘要的 impl-only DAG;strict governance 会拒绝无来源绑定且无只读 planner 上游的 v3 孤立 writer。
|
|
359
|
+
- 显式专用 `taskKind` 保持兼容并优先于任务源分类,也不扩充 governance profile:`frontend-implementation` 可有意覆盖为带 Mock 规范评估、contract gate、design gate 和验证链的前端模板;可选 `frontendMock` 配置 auto/required/disabled、既有服务目录和专项验证命令,required 合同不完整时不会生成 writer。`backend-test` 显式选择需求分析 → 功能用例 → 评审 → pytest 生成/执行 → 复盘的后端测试工程模板。
|
|
360
|
+
|
|
361
|
+
### Saved Dynamic Workflow operator UX
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
loop-agent workflow list
|
|
365
|
+
loop-agent workflow inspect <name>
|
|
366
|
+
loop-agent workflow save --from /tmp/<task-id>.workflow.json --name <name>
|
|
367
|
+
loop-agent workflow run <name-or-path> --cwd <repo-root>
|
|
368
|
+
loop-agent workflow diff <name> --against /tmp/<task-id>.workflow.json
|
|
369
|
+
loop-agent workflow replay <run-id>
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
`workflow` 是 Dynamic Workflow 的 saved/operator surface。它读取 `WorkflowSpec`,编译为 DAG,再进入同一套 `dag execute` runtime;不会新增 executor 能力或绕过 DAG governance。真实写入任务仍应检查 compiled DAG 的 executor、writeSet、shell gates 和 completed facts 边界。
|
|
373
|
+
|
|
374
|
+
### Cursor sidecar
|
|
375
|
+
|
|
376
|
+
`cursor-worker` 已删除。人工干预使用 `cursor-prompt` one-shot sidecar;见 `ai_workspace/loop-agent/cursor-prompt-sidecar.md`。
|
|
377
|
+
|
|
378
|
+
### Eval Replay(M1,只读 completed evidence)
|
|
379
|
+
|
|
380
|
+
```bash
|
|
381
|
+
loop-agent eval replay --spec <replay-spec.json> [--json|--markdown] [--output <path>]
|
|
382
|
+
loop-agent eval report --replay-id <id> [--json|--markdown]
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
`eval replay` 只读取 `.harness/dag-runs/completed/<runId>/state.json` 与 `run.json`,要求 spec 携带两者的 SHA-256,hash 不一致时 fail closed。它将 completed DAG report 归一化为 verification、Token、耗时、executor calls、repair passes,并把 canonical scorecard 写到 `.harness/evaluation/replays/<replayId>/`。缺失 Token/耗时记录为 `null + missingFields`,不会补造为 0。
|
|
386
|
+
|
|
387
|
+
M1 是 replay-only:不执行 Pi、不启动 DAG、不实现 private verifier、固定预算 enforcement 或 candidate promotion;所有 scorecard 固定 `promotionEligible=false` 且包含 `replay_only`。
|
|
388
|
+
|
|
389
|
+
### Eval Candidate Registry(M2 W2.1–W2.2)
|
|
390
|
+
|
|
391
|
+
```bash
|
|
392
|
+
loop-agent eval candidate register --manifest <candidate-manifest.json> [--json|--markdown]
|
|
393
|
+
loop-agent eval candidate show --candidate-id <id> [--json|--markdown]
|
|
394
|
+
loop-agent eval candidate list [--json|--markdown]
|
|
395
|
+
loop-agent eval candidate transition --candidate-id <id> --to <state> --reason <text> [--json|--markdown]
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
注册不可变 Candidate Bundle 到 `.harness/evaluation/candidates/<candidateId>/`(`manifest.json` + append-only `lifecycle.jsonl`)。`bundleHash` 由 canonical payload 计算,与 `candidateId`/createdAt/lifecycle 分离;content refs 必须为 repo-relative safe path,且不得进入 evaluator/kernel/completed-facts 等 forbidden surface。`accepted` 仅是 registry 状态,**不**移动 incumbent alias、不 promotion。
|
|
399
|
+
|
|
400
|
+
Replay spec 最小结构:
|
|
401
|
+
|
|
402
|
+
```json
|
|
403
|
+
{
|
|
404
|
+
"schemaVersion": 1,
|
|
405
|
+
"replayId": "context-policy-replay-001",
|
|
406
|
+
"incumbentCandidateId": "baseline",
|
|
407
|
+
"challengerCandidateId": "role-context-v1",
|
|
408
|
+
"evidence": [
|
|
409
|
+
{
|
|
410
|
+
"candidateId": "baseline",
|
|
411
|
+
"taskRef": "task-a",
|
|
412
|
+
"seed": 1,
|
|
413
|
+
"split": "private",
|
|
414
|
+
"runId": "completed-run-id",
|
|
415
|
+
"stateSha256": "<64 hex>",
|
|
416
|
+
"runSha256": "<64 hex>"
|
|
417
|
+
}
|
|
418
|
+
]
|
|
419
|
+
}
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
### 检查 task status
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
loop-agent task status <task-id>
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### Docs governance helpers
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
loop-agent docs audit
|
|
432
|
+
loop-agent docs archive ai_workspace/loop-agent/exec-plans/active/<plan>.md
|
|
433
|
+
loop-agent plan list
|
|
434
|
+
loop-agent plan create <plan-id> "<title>"
|
|
435
|
+
loop-agent plan complete <plan-id> --summary "<summary>"
|
|
436
|
+
loop-agent plan check
|
|
437
|
+
loop-agent handoff check [task-id]
|
|
438
|
+
loop-agent handoff coverage <task-id> [--json|--markdown]
|
|
439
|
+
loop-agent coverage report --language python|java --input <coverage.json|jacoco.xml> --requirement-id <AC-id> --source-scope <path[,path]> [--output <path>] [--json|--markdown]
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
- `docs audit`:扫描文档腐化风险,如 active/completed 漂移、失效链接、host-gap closeout
|
|
443
|
+
- `docs archive`:将 active plan 迁入 completed,并自动重写常见 markdown 引用
|
|
444
|
+
- `plan list`:列出当前 active plans 及其解析状态
|
|
445
|
+
- `plan create`:优先从目标项目模板创建 active exec-plan,不存在时回退发布包内置模板;同步 `active/README.md`,拒绝重复 id、不安全文件名,失败时回滚
|
|
446
|
+
- `plan complete`:将 active exec-plan 标记完成、迁入 completed、追加 `--summary` 并同步 active/completed 索引;失败时回滚所有已触碰文件
|
|
447
|
+
- `plan check`:确定性校验 exec-plan 目录与索引之间的 missing、stale、duplicate、status mismatch;发现问题时输出 JSON 并以非零状态失败
|
|
448
|
+
- `handoff check`:检查任务 source / artifacts / auto-commit scope 是否满足交付闭环
|
|
449
|
+
- `handoff coverage`:从 `source/需求.md` 抽取 checklist / numbered / `REQ-*` 项并输出 coverage audit;未覆盖项 exit 1;`explicitly_out_of_scope` 不计为缺口
|
|
450
|
+
|
|
451
|
+
### Pi runtime reuse benchmark / decision(无 live call)
|
|
452
|
+
|
|
453
|
+
```bash
|
|
454
|
+
loop-agent pi-reuse-benchmark \
|
|
455
|
+
--report ai_workspace/loop-agent/reports/<benchmark-report>.md \
|
|
456
|
+
--json
|
|
457
|
+
|
|
458
|
+
loop-agent pi-reuse-benchmark \
|
|
459
|
+
--report ai_workspace/loop-agent/reports/<benchmark-report>.md \
|
|
460
|
+
--off-executor /path/to/off/executor.jsonl \
|
|
461
|
+
--on-executor /path/to/on/executor.jsonl \
|
|
462
|
+
--approval /path/to/approval.json \
|
|
463
|
+
--markdown
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
对已有 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。
|
|
467
|
+
|
|
468
|
+
### Loop convergence benchmark baseline(无 live call)
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
loop-agent loop-benchmark --markdown
|
|
472
|
+
loop-agent loop-benchmark --markdown --output ai_workspace/loop-agent/reports/dogfood/2026-06-30-loop-agent-loop-benchmark.md
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
生成 M0 deterministic baseline,对照 `single-repair`、`3-pass-convergence`、`3-pass-convergence+quota`。**不**跑 live Pi/Cursor call、不创建 task、不改 `convergence.enabled` 默认值。live dogfood 证据缺失时输出 `blocked` 并建议保持 opt-in。
|
|
476
|
+
|
|
477
|
+
### Long-running loop outer state(experimental)
|
|
478
|
+
|
|
479
|
+
```bash
|
|
480
|
+
loop-agent loop init <task-id>
|
|
481
|
+
loop-agent loop status <task-id>
|
|
482
|
+
loop-agent loop run <task-id> --action dag
|
|
483
|
+
loop-agent loop run <task-id> --action shell-verify --command "bash scripts/check-repo.sh"
|
|
484
|
+
loop-agent loop run <task-id> --action workflow --profile pr-review
|
|
485
|
+
loop-agent loop run <task-id> --auto --max-rounds <count>
|
|
486
|
+
loop-agent loop record-round <task-id> --action <name> --result "..." --lesson "..." --next "..." --decision continue
|
|
487
|
+
loop-agent loop add-signal <task-id> --type human_followup --message "..."
|
|
488
|
+
loop-agent loop closeout <task-id>
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
`loop` 是 Agent DAG 之上的长程状态和 evidence layer,记录 rounds、signals、verification summaries 和 closeout draft。它不是替代 `task advance` 的实现路径;advanced 可用 `dag execute`;medium/large work 仍需要 DAG evidence 或明确 fallback reason。
|
|
492
|
+
|
|
493
|
+
### Minimal spec spine audit
|
|
494
|
+
|
|
495
|
+
```bash
|
|
496
|
+
loop-agent spine audit <task-id> --json
|
|
497
|
+
loop-agent spine audit <task-id> --markdown
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
检查 task 的 `source/需求.md`、`source/执行约束.md`、`task.json.allowedPaths` / `forbiddenPaths`、需求覆盖与 final verification command labels。`medium` / `large` task 的空 `allowedPaths`、allowed/forbidden overlap、未覆盖验收项、无 final verify command 都会让 audit 非零退出。
|
|
501
|
+
|
|
502
|
+
### Knowledge curator proposal
|
|
503
|
+
|
|
504
|
+
```bash
|
|
505
|
+
loop-agent knowledge curate --markdown
|
|
506
|
+
loop-agent knowledge curate --markdown --output ai_workspace/loop-agent/reports/<task-id>-learned-proposal.md
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
读取 `.harness/knowledge/patterns.jsonl` 中 completed convergence repair pattern,按 `failureClass + fixScope shape + invariant` 去重,生成 human-gated learned guidance proposal。命令只生成 proposal,不直接修改 `skills/loop-agent/references/learned/*.md`;输出会先通过 skill safety audit。
|
|
510
|
+
|
|
511
|
+
### Knowledge graph / query CLI
|
|
512
|
+
|
|
513
|
+
```bash
|
|
514
|
+
loop-agent knowledge graph-init --product-name <name>
|
|
515
|
+
loop-agent knowledge graph-materialize
|
|
516
|
+
loop-agent knowledge graph-promote
|
|
517
|
+
loop-agent knowledge graph-incremental-prepare --feature F-2026-004 --service <service>
|
|
518
|
+
loop-agent knowledge query --mode by_feature --feature F-2026-004 --json
|
|
519
|
+
loop-agent knowledge query --mode by_id --id SVC-order --json
|
|
520
|
+
loop-agent knowledge query --mode search --text "keyword" --json
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
这些子命令是 package-backed 公共入口,封装包内 knowledge runtime 资产。目标项目应使用 `loop-agent knowledge ...`,不要要求仓库内直接运行未投影的 package-only kb runtime scripts。Feature 测试知识日常写回用 `task.json.taskKind = "knowledge-sync"`(必须绑定 `featureId`);业务图谱开荒/增量用 `taskKind = "knowledge-graph-bootstrap"`。
|
|
524
|
+
|
|
525
|
+
### Worker TaskSpec pipeline(伴生 CLI `agent-worker`)
|
|
526
|
+
|
|
527
|
+
`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)。
|
|
528
|
+
|
|
529
|
+
```bash
|
|
530
|
+
agent-worker task validate <task.yaml> # 三层校验 TaskSpec,输出 JSON
|
|
531
|
+
agent-worker task explain-profile <task.yaml> # 解释业务 type/risk -> DAG governance profile 映射
|
|
532
|
+
agent-worker task validate-feature <feature-dir> # 校验完整 feature packet 的验收、依赖、TaskSpec 和验证命令
|
|
533
|
+
agent-worker feature scaffold --repo <repo-root> --template <backend-only|frontend-only|fe-with-api> \
|
|
534
|
+
--feature-id F-YYYY-NNN --title "..." \
|
|
535
|
+
[--be-path <pattern> ...] [--fe-path <pattern> ...] [--contract-path <path>] \
|
|
536
|
+
--verify-command <cmd> [--verify-command <cmd> ...] \
|
|
537
|
+
[--batch <yaml-or-json>] [--dry-run] [--json]
|
|
538
|
+
agent-worker feature review --feature-dir <feature-dir> --repo <repo-root> [--json]
|
|
539
|
+
agent-worker feature run --feature-dir <feature-dir> --repo <repo-root> [--dry-run] [--git-mode checkpoint] [--keep-failed-diff] [--json]
|
|
540
|
+
agent-worker feature doctor --feature-dir <feature-dir> --repo <repo-root> [--json]
|
|
541
|
+
agent-worker feature advance --feature-dir <feature-dir> --repo <repo-root> [--task-id <FINAL-VERIFY-id>] [--loop-agent-bin loop-agent] [--dry-run] [--apply --owner <owner>] [--json]
|
|
542
|
+
agent-worker feature verify-final --feature-dir <feature-dir> --repo <repo-root> --task-id <qa-execute-id> [--json]
|
|
543
|
+
agent-worker feature delivery --feature-dir <feature-dir> --repo <repo-root> [--qa-evidence <path>] [--final-verification <path>] [--waivers <path>] [--dry-run] [--json]
|
|
544
|
+
agent-worker feature closeout --feature-dir <feature-dir> --repo <repo-root> [--apply --owner <owner>] [--json]
|
|
545
|
+
agent-worker report metrics --repo <repo-root> --month <YYYY-MM> [--json]
|
|
546
|
+
agent-worker task draft-followup <task-id> --worker-run-id <id> --feature-dir <feature-dir> --repo <repo-root> [--json]
|
|
547
|
+
agent-worker feature approve-followup --feature-dir <feature-dir> --followup-id <id> --repo <repo-root> --owner <owner> [--dry-run] [--json]
|
|
548
|
+
agent-worker task retry <task-id> --repo <repo-root> [--reason "<已修复的原因>"]
|
|
549
|
+
agent-worker task reconcile <task-id> --feature-id <feature-id> --worker-run-id <id> --dag-run-id <id> --action abandon --reason "<text>" --repo <repo-root> [--force-abandon-recoverable]
|
|
550
|
+
agent-worker pool mark-failed --feature-id <feature-id> --task-id <task-id> --worker-run-id <id> --reason "<text>" --repo <repo-root>
|
|
551
|
+
agent-worker pool doctor --repo <repo-root> [--json] [--mapping <file>]
|
|
552
|
+
agent-worker pool migrate-state --repo <repo-root> [--apply --owner <owner> --reason <reason>] [--mapping <file>] [--json]
|
|
553
|
+
agent-worker feature git advance-checkpoint --feature-id <feature-id> --reason "<text>" --repo <repo-root>
|
|
554
|
+
agent-worker batch plan-ready --feature-dir <feature-dir> --repo <repo-root> [--limit <count>] [--json]
|
|
555
|
+
agent-worker batch run-ready \
|
|
556
|
+
--feature-dir <feature-dir> \ # 含 tasks/task-graph.yaml
|
|
557
|
+
--repo <repo-root> \ # 目标 repo
|
|
558
|
+
[--limit <count>] [--batch-run-id <id>] \
|
|
559
|
+
[--loop-agent-bin loop-agent] \
|
|
560
|
+
[--check-repo] [--check-repo-command <command...>] \
|
|
561
|
+
[--quiet] \
|
|
562
|
+
[--pi-model <model>] # smoke 覆盖:所有 pi 节点强制用该模型
|
|
563
|
+
agent-worker report morning --repo <repo-root> [--batch-run-id <id>] [--output <path>] [--window night] [--date YYYY-MM-DD] [--tz Asia/Shanghai]
|
|
564
|
+
agent-worker admission prepare --repo <repo-root> --feature-dir <path> --task-id <id> --at "YYYY-MM-DD HH:mm" [--tz Asia/Shanghai] [--task-card <ref>] [--json]
|
|
565
|
+
agent-worker admission show <schedule-id> --repo <repo-root> [--json]
|
|
566
|
+
agent-worker scheduler list --repo <repo-root> [--json]
|
|
567
|
+
agent-worker scheduler status <schedule-id> --repo <repo-root> [--json]
|
|
568
|
+
agent-worker scheduler ledger <schedule-id> --repo <repo-root> [--json]
|
|
569
|
+
agent-worker scheduler doctor --repo <repo-root> [--json]
|
|
570
|
+
agent-worker scheduler add <schedule-id> --repo <repo-root> --approve-gate <token> [--json]
|
|
571
|
+
agent-worker scheduler cancel <schedule-id> --repo <repo-root> [--reason <text>] [--json]
|
|
572
|
+
agent-worker scheduler harvest <schedule-id> --repo <repo-root> [--json]
|
|
573
|
+
agent-worker scheduler discard <schedule-id> --repo <repo-root> --reason <text> [--force] [--json]
|
|
574
|
+
agent-worker scheduler tick --repo <repo-root> [--json] # daemon/clock; not Operator Chat
|
|
575
|
+
agent-worker scheduler clock install --repo <repo-root> [--interval-sec 60] [--loop-agent-bin <path>] [--json] # OS timer; CLI-only
|
|
576
|
+
agent-worker scheduler clock status --repo <repo-root> [--json] # CLI-only
|
|
577
|
+
agent-worker scheduler clock uninstall --repo <repo-root> [--json] # CLI-only
|
|
578
|
+
agent-worker scheduler submit --repo <repo-root> --feature-id <id> --task-id <id> ... # low-level planning fact
|
|
579
|
+
agent-worker scheduler transition <schedule-id> --repo <repo-root> --to <status> ... # internal lifecycle
|
|
580
|
+
agent-worker console [--repo <repo-root>] [--port 8790] [--host 127.0.0.1] [--no-open] # Official 唯一入口;repo 默认当前目录;默认打开浏览器
|
|
581
|
+
agent-worker console doctor --repo <repo-root> [--json] [--console-url <url>]
|
|
582
|
+
agent-worker observe serve ... # REMOVED:stderr OBSERVE_SERVE_REMOVED,exit 2,不监听端口;请用 console + /inspect/
|
|
583
|
+
agent-worker observe snapshot --repo <repo-root> # 输出 GlobalSnapshot JSON 到 stdout
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
语义要点:
|
|
587
|
+
|
|
588
|
+
- TaskSpec 声明单个任务的业务上下文、`risk_level`、可选 `capabilities`、验收与 verify 边界;`risk_level` 被确定性映射到 task complexity。`capabilities: [interactive-ui]` 不改变风险或治理 profile,只把 implement/repair writer 路由到 HIGH,并注入禁止 helper-only 逃逸的真实 UI 交付契约。AcceptanceSpec / TaskGraphSpec 声明跨任务验收引用与依赖图,ready queue 决定可运行任务并检测未知依赖/环/文件一致性。
|
|
589
|
+
- 业务 type(`backend-feature`/`frontend-feature`/`qa-testcode` 等)是产品线 profile,不能直接传给 `loop-agent task advance --profile`(Worker 映射后传入);Worker 会映射到 `auto`/`minimal`/`standard`/`reviewed`/`supervised`。
|
|
590
|
+
- materializer 把 TaskSpec 物化为 `.harness/tasks/<task-id>`:`source_docs` 原样进入 `source/references/`,派生 `需求.md` 带权威声明、Source Docs/hash 追溯,以及 `acceptance_refs` 短摘要;随后 Worker 调用 `task advance` / `dag report`(advanced 可 `dag execute`)。review 节点须对照 references + 派生契约 + 实现。成功路径走 `task advance` 自动 promotion/closeout;失败路径收集 `dag doctor` / `dag closeout-draft` evidence,只允许写入 `.harness/task-pool/failure-handoffs/**`,不放宽其他 `.harness/**` 写入边界。
|
|
591
|
+
- Worker runtime state 落在目标 repo 的 `.harness/task-pool/`(artifacts、JSONL/state、晨报、failure handoffs)。自 0.8.0 起该目录是唯一受支持的 Task Pool runtime root;旧路径不读取、不迁移、不合并、不重映射。
|
|
592
|
+
- preflight 在 `task advance` 前跑 `loop-agent --version`、`inspect`、`docs-audit`、`git status --short --branch`,可选 `--check-repo`。一次夜间批处理期间不升级控制器,记录实际 `loop-agent` 版本。
|
|
593
|
+
- `batch run-ready` 默认在 stderr 输出人类可读进度(批次起止、每个 task 的阶段与耗时、report 决策),stdout 只保留最终 JSON,便于管道取用;加 `--quiet` 可关闭进度。
|
|
594
|
+
- `feature scaffold` 确定性生成 Feature Packet(`backend-only` / `frontend-only` / `fe-with-api`),默认 `profile: generic`,输出到 `<repo>/features/<feature-id>`;写盘前同源 `validate-feature`;`--batch` 全有或全无;不调用模型、不碰 `.harness/**`。
|
|
595
|
+
- `feature review` 只读派生 Feature 状态、required AC 覆盖、阻塞、证据和唯一下一步。默认输出简洁的人类摘要,`--json` 输出 schemaVersion 1 JSON;损坏事实会显式降级,不会写 Feature Packet 或 Task Pool。
|
|
596
|
+
- `feature run` 薄编排 validation、preflight、现有 run-ready、morning report、Observe snapshot 和最终 review。`--dry-run` 零写入;Git checkpoint 可用前单次最多推进一个 Ready 写任务。
|
|
597
|
+
- `feature run` 遇到业务 Task 失败时仍刷新证据,但返回 `needs-action` 和非零退出码;无 Ready 是正常结果,并通过 `noReadyReason` 说明 Closed、Deliverable、AwaitingQA、NeedsAction、依赖阻塞或空 Feature。
|
|
598
|
+
- `feature run --git-mode checkpoint` 是唯一 checkpoint 授权:要求 clean repo,在本地 `agent/<feature-id>` 分支按成功 Task commit;失败先保存 patch/untracked/boundary audit 再恢复 clean。默认不 commit;从不 stash/push/merge/创建远程 PR。`--keep-failed-diff` 会停止 Feature,不继续后续 Task。
|
|
599
|
+
- `feature doctor` 只读诊断 Feature 交付就绪:Task Pool 状态、dirty worktree、canonical evidence / Delivery manifest 是否存在,并给出下一步命令建议(不自动修复)。
|
|
600
|
+
- `feature advance`(ADR 0007)编排 `verify-final → delivery → closeout preview[/apply]`:默认 evidence 路径取自 verify-final;`--dry-run` 时 Delivery 不写盘且不 apply closeout;`--apply --owner` 在 closeout preview ready 后原子 apply。不执行实现链 Ready tasks(仍用 `feature run`)。
|
|
601
|
+
- `feature verify-final` 在 clean Delivery HEAD 上复用已完成的 `qa-execute` TaskSpec 运行独立 DAG,跳过 promotion/closeout,原子生成 canonical QA aggregate 和 HEAD-bound final verification;相同 HEAD 的 canonical 成功 run 可幂等复用。
|
|
602
|
+
- `feature delivery` 复用 transaction record,校验 Git history/trailers/changed files、成功 run、canonical QA/final verification 和 required AC,原子生成 manifest、coverage 与 `PR.md`;省略 evidence 路径时默认 `.harness/task-pool/evidence/<featureId>/{qa-pass,final-verification}.json`;`--dry-run` 零写入。`feature closeout` 默认只读复验全部 gates,显式 `--apply --owner` 才原子写回,stale facts 或 post-validation 失败会整体回滚。
|
|
603
|
+
- `report metrics` 按 UTC 月去重投影 Feature/Failure/Follow-up/Delivery/AC/decision/recovery/boundary 指标,同时写 JSON 与 Markdown;每项保留 numerator、denominator、sampleSize 和 missingData。
|
|
604
|
+
- `task draft-followup` 会按全部 failure category 生成 TaskDraft 或人工行动卡:ProductBug/TestBug/FlakyTest/DependencyFailure 可批准;EnvFailure 连续两次后才生成 ENV-CHECK;Spec/Contract/Risk/Human/Unknown 只给行动卡。人工以 `feature approve-followup --dry-run` 预览,再带非空 `--owner` 批准 TaskDraft;行动卡不能批准。批准在 staging validation 后写 TaskSpec、graph、Ready/approval/event,原失败事实不改写,并有 rename/state/approval/index/event 回滚门禁。
|
|
605
|
+
- `task retry` 是失败 Task 的唯一重试入口。它会保留原有运行记录和 failure handoff,并让下一次 `batch run-ready` 使用新的 `workerRunId`;不要删除运行态文件或手动修改状态来重试。
|
|
606
|
+
- **推荐**裸入口 `agent-worker console`(repo 默认当前目录,默认 `127.0.0.1:8790`)提供 Operate + Inspect;本地图形环境 listen 成功后默认打开系统浏览器,`--no-open` 禁止;`console serve` 已删除。Inspect 路径为 `/inspect/#/...`,API 仍为根 `/api/**`。`observe serve` 已硬下线(`OBSERVE_SERVE_REMOVED` + exit 2,不监听);`observe snapshot` 保留。Inspect 本身不会启动、暂停或重试 Task / Worker / DAG。
|
|
607
|
+
- Night Scheduler(本地夜间自治):白天 `admission prepare` 冻结 worktree + DAG writeSet gate;`scheduler add` 消费 gate 并预约 Task Pool `Queued`(不立即执行);`scheduler clock install` 安装本机 user-level OS timer(launchd / systemd --user / schtasks)周期调用 `scheduler tick`;tick 写统一 Clock receipt,doctor/morning/status 可解释 missing/stale/error/busy/drift;成功后 `pending-harvest`,早晨 `scheduler harvest`(exact-base FF)或 `scheduler discard`;`report morning --window night` 与 Inspect `#/night` / Operate 夜间面板读取同一套 facts。Clock install/status/uninstall 为 CLI-only。
|
|
608
|
+
- 当前 Worker 仍是 v0(库 + CLI + dogfood);日间批处理未强制定时/CI 驱动;`report morning` 默认可从 Task Pool runs 汇总,并支持 `--window night` 投影 Scheduler facts。
|
|
609
|
+
|
|
610
|
+
### 查看 duration statistics / context usage
|
|
611
|
+
|
|
612
|
+
```bash
|
|
613
|
+
loop-agent stats
|
|
614
|
+
loop-agent stats context --last 50
|
|
615
|
+
loop-agent stats context --last 50 --json
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
- `stats`:legacy step-duration 直方图(`.harness/tasks/*/logs/executor.jsonl`)。
|
|
619
|
+
- `stats context`:最近 N 个 DAG runs 的 **skill-resolution** 与节点 outcome 只读聚合(declared/resolved/missing/error、truncation、`unresolvedReferences.reason`、FINISHED/ERROR/SKIPPED + failureCategory)。**不**宣称模型遵循率或 skill execution rate;corrupted snapshot 记为 finding 且 `ok=false`。
|
|
620
|
+
|
|
621
|
+
### Worktree delegate / harvest(escape hatch)
|
|
622
|
+
|
|
623
|
+
```bash
|
|
624
|
+
loop-agent delegate <task-id> [--base <branch>] [--branch <name>] [--no-symlink] [--auto-run]
|
|
625
|
+
loop-agent harvest <task-id> [--squash] [--no-archive] [--keep-worktree]
|
|
626
|
+
loop-agent worktree create|list|remove ...
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
用于 worktree 隔离以及可选的 Pi-only DAG 执行与 merge 收口。常规 autonomous work 应优先 Agent DAG;详见 `multi-worktree.md` 与 `ai_workspace/loop-agent/cursor-prompt-sidecar.md`。
|
|
630
|
+
|
|
631
|
+
### One-shot Cursor sidecar(escape hatch)
|
|
632
|
+
|
|
633
|
+
```bash
|
|
634
|
+
loop-agent cursor-prompt --cwd <repo-root> "Review this task without editing files."
|
|
635
|
+
loop-agent cursor-prompt --cwd <repo-root> --file /tmp/bounded-cursor-task.md
|
|
636
|
+
loop-agent cursor-prompt --cwd <repo-root> --model composer-2.5 --timeout 1800000 --file /tmp/bounded-cursor-task.md
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
`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。
|
|
640
|
+
|
|
641
|
+
> **Historical(已移除)**:`subagent list|start|wait|wakeup|attach|stop` 与 `dashboard` 已移除,不再出现在 CLI registry。
|