ultra-builder-pro-cli 0.5.3 → 0.7.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/.ultra-template/changes/active/.gitkeep +1 -0
- package/.ultra-template/changes/archive/.gitkeep +1 -0
- package/CHANGELOG.md +90 -14
- package/README.md +38 -32
- package/adapters/_shared/codex-assets.cjs +32 -151
- package/adapters/_shared/frontmatter.cjs +2 -2
- package/adapters/_shared/handbook.cjs +10 -10
- package/adapters/_shared/path-rewrite.cjs +0 -3
- package/adapters/_shared/runtime-assets.cjs +13 -4
- package/adapters/_shared/tests/handbook.test.cjs +4 -1
- package/adapters/_shared/tests/path-rewrite.test.cjs +1 -3
- package/adapters/_shared/tests/resolve-target.test.cjs +1 -11
- package/adapters/_shared/tests/runtime-assets.test.cjs +7 -6
- package/adapters/opencode.js +82 -26
- package/adapters/tests/claude.test.cjs +1 -4
- package/adapters/tests/codex.test.cjs +9 -8
- package/adapters/tests/opencode.test.cjs +17 -11
- package/bin/install.js +6 -28
- package/bin/orchestrator.js +12 -30
- package/commands/ultra-change.md +47 -0
- package/commands/ultra-deliver.md +14 -7
- package/commands/ultra-dev.md +6 -3
- package/commands/ultra-doctor.md +36 -0
- package/commands/ultra-init.md +4 -3
- package/commands/ultra-status.md +7 -5
- package/commands/ultra-test.md +2 -1
- package/docs/AGENT-CONTEXT.md +35 -28
- package/docs/ARCHITECTURE.md +49 -21
- package/docs/PLAN.zh-CN.md +67 -68
- package/docs/ROADMAP.md +17 -17
- package/docs/RUNTIME-COMPAT-MATRIX.md +63 -62
- package/hooks/README.md +8 -7
- package/hooks/active_task_context.py +22 -15
- package/hooks/health_check.py +136 -38
- package/hooks/workflow_context.py +120 -30
- package/mcp-server/lib/change-workflow.cjs +556 -0
- package/mcp-server/lib/change-workflow.test.cjs +259 -0
- package/mcp-server/lib/doctor.cjs +112 -0
- package/mcp-server/lib/doctor.test.cjs +86 -0
- package/mcp-server/lib/init-project.cjs +32 -6
- package/mcp-server/lib/pricing.cjs +0 -6
- package/mcp-server/lib/runtime-state.cjs +222 -0
- package/mcp-server/lib/runtime-state.test.cjs +92 -0
- package/mcp-server/lib/state-db.cjs +31 -8
- package/mcp-server/lib/state-ops.cjs +24 -3
- package/mcp-server/lib/telemetry.cjs +4 -0
- package/mcp-server/server.cjs +102 -10
- package/mcp-server/tests/db-ops.test.cjs +5 -1
- package/mcp-server/tests/init-project.test.cjs +45 -0
- package/mcp-server/tests/server-contract.test.cjs +140 -1
- package/mcp-server/tests/state-db.test.cjs +44 -7
- package/mcp-server/tests/state-ops.test.cjs +42 -0
- package/mcp-server/tests/telemetry.test.cjs +14 -0
- package/orchestrator/daemon.cjs +39 -0
- package/orchestrator/dispatch-rules.cjs +15 -4
- package/orchestrator/tests/daemon.test.cjs +63 -12
- package/orchestrator/tests/dispatch-rules.test.cjs +12 -10
- package/package.json +5 -7
- package/settings.json +1 -2
- package/skills/ultra-change/SKILL.md +140 -0
- package/skills/ultra-deliver/SKILL.md +81 -15
- package/skills/ultra-dev/SKILL.md +32 -12
- package/skills/ultra-doctor/SKILL.md +90 -0
- package/skills/ultra-init/SKILL.md +8 -6
- package/skills/ultra-review/SKILL.md +16 -0
- package/skills/ultra-status/SKILL.md +30 -7
- package/skills/ultra-test/SKILL.md +14 -2
- package/skills/ultra-verify/SKILL.md +22 -41
- package/skills/ultra-verify/evals/evals.json +22 -24
- package/skills/ultra-verify/references/confidence-system.md +15 -32
- package/skills/ultra-verify/references/cross-verify-modes.md +14 -59
- package/skills/ultra-verify/scripts/verify_wait.py +44 -81
- package/spec/cli-protocol.md +12 -1
- package/spec/mcp-tools.yaml +340 -4
- package/spec/schemas/mcp-tools.schema.json +1 -1
- package/spec/schemas/skill-manifest.schema.json +2 -2
- package/spec/schemas/state-db.sql +119 -2
- package/ultra-tools/cli.cjs +3 -0
- package/ultra-tools/commands/system.cjs +57 -0
- package/ultra-tools/system-command.test.cjs +53 -0
- package/adapters/_shared/md-to-toml.cjs +0 -54
- package/adapters/_shared/rtk-detect.cjs +0 -86
- package/adapters/_shared/tests/md-to-toml.test.cjs +0 -48
- package/adapters/_shared/tests/rtk-detect.test.cjs +0 -116
- package/adapters/gemini.js +0 -204
- package/adapters/tests/gemini.test.cjs +0 -112
- package/docs/LEGACY-HERMES.md +0 -1175
- package/orchestrator/code-graph-watcher.cjs +0 -121
- package/orchestrator/tests/code-graph-watcher.test.cjs +0 -183
- package/skills/gemini-collab/SKILL.md +0 -51
- package/skills/gemini-collab/evals/evals.json +0 -42
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -10,8 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
`ultra-builder-pro-cli` is a multi-runtime plugin suite that **distributes** the
|
|
12
12
|
Ultra Builder Pro engineering loop (skills + commands + workflow hooks) as
|
|
13
|
-
native Claude Code, OpenCode, and Codex plugins,
|
|
14
|
-
adapter, and
|
|
13
|
+
native Claude Code, OpenCode, and Codex plugins, and
|
|
15
14
|
**runs** that loop with isolated sessions sharing one authoritative state
|
|
16
15
|
store (`.ultra/state.db`).
|
|
17
16
|
|
|
@@ -24,7 +23,7 @@ the supported hosts share.
|
|
|
24
23
|
┌──────────────────────────┐
|
|
25
24
|
│ runtime CLI │
|
|
26
25
|
│ (claude / opencode / │
|
|
27
|
-
│ codex
|
|
26
|
+
│ codex) │
|
|
28
27
|
└────────────┬─────────────┘
|
|
29
28
|
│
|
|
30
29
|
┌───────────────────┼────────────────────┐
|
|
@@ -36,8 +35,8 @@ the supported hosts share.
|
|
|
36
35
|
║ ║ ║ ║ ║ fallback) ║
|
|
37
36
|
╚══════╤═══════╝ ╚════════╤═══════╝ ╚══════╤═══════╝
|
|
38
37
|
│ │ │
|
|
39
|
-
│ resolve / read │ task.* etc. │
|
|
40
|
-
│ (D29 read-only) │ │
|
|
38
|
+
│ resolve / read │ task.* etc. │ selected init /
|
|
39
|
+
│ (D29 read-only) │ │ recovery / ops
|
|
41
40
|
└────────────┬───────┴──────────────────┘
|
|
42
41
|
▼
|
|
43
42
|
┌─────────────────────┐
|
|
@@ -53,26 +52,25 @@ the supported hosts share.
|
|
|
53
52
|
|
|
54
53
|
| Layer | Role | Form |
|
|
55
54
|
|--------------|----------------------------------------------|-------------------------------------------------------|
|
|
56
|
-
| **skill** | knowledge carrier; tells the runtime *what to do* | `skills/<name>/SKILL.md` discovered natively by all
|
|
57
|
-
| **MCP** | authoritative workflow-state API | stdio MCP server exposing
|
|
58
|
-
| **CLI** |
|
|
55
|
+
| **skill** | knowledge carrier; tells the runtime *what to do* | `skills/<name>/SKILL.md` discovered natively by all supported runtimes |
|
|
56
|
+
| **MCP** | authoritative workflow-state API | stdio MCP server exposing 29 live tools across task/session/change/system/plan families in [`spec/mcp-tools.yaml`](../spec/mcp-tools.yaml) |
|
|
57
|
+
| **CLI** | explicit initialization, recovery, diagnostics, and orchestration | `ultra-tools` / `ubp-orchestrator`; only commands listed by `--help` are executable (see [`spec/cli-protocol.md`](../spec/cli-protocol.md)) |
|
|
59
58
|
|
|
60
59
|
Why three: skills give us behavior portability across runtimes; MCP gives
|
|
61
60
|
us a strongly-typed contract so we can refactor implementations without
|
|
62
|
-
rewriting prompts; CLI
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
rewriting prompts; the CLI supplies bounded maintenance and recovery paths when
|
|
62
|
+
the MCP cannot start. It is deliberately not a second change-state API:
|
|
63
|
+
continuous change mutations remain MCP-only and fail closed (D12).
|
|
65
64
|
|
|
66
|
-
The skill layer is **read-only by design** (D29)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
because skills are documentation, not RPC.
|
|
65
|
+
The skill layer is **read-only by design** (D29) and is discovered directly by
|
|
66
|
+
each host. Ultra exposes no `skill.*` MCP family: skills are documentation, not
|
|
67
|
+
RPC, and host-native loaders own resolution and invocation.
|
|
70
68
|
|
|
71
69
|
## 3. Authoritative state — `.ultra/state.db`
|
|
72
70
|
|
|
73
71
|
All durable Ultra workflow state lives in one SQLite file with WAL enabled. Schema is
|
|
74
72
|
fixed in [`spec/schemas/state-db.sql`](../spec/schemas/state-db.sql) and
|
|
75
|
-
covers
|
|
73
|
+
covers fifteen tables:
|
|
76
74
|
|
|
77
75
|
| Table | Holds | Phase |
|
|
78
76
|
|--------------------|---------------------------------------------------|-------|
|
|
@@ -84,6 +82,13 @@ covers eight tables:
|
|
|
84
82
|
| `telemetry` | per-session token / cost / tool-call counters | 6 |
|
|
85
83
|
| `specs_refs` | spec change tracking → staleness propagation | 5 |
|
|
86
84
|
| `circuit_breaker` | bounded retry and halt state for failed tasks | 5 |
|
|
85
|
+
| `changes` | continuous feature/fix/incident lifecycle | 8C |
|
|
86
|
+
| `artifacts` | intent/context/verification artifact registry | 8C |
|
|
87
|
+
| `context_snapshots`| compiled context hashes, git head, provider refs | 8C |
|
|
88
|
+
| `trace_links` | task/spec/change traceability | 8C |
|
|
89
|
+
| `incidents` | structured runtime failures and resolutions | 8C |
|
|
90
|
+
| `projection_jobs` | durable projection outbox/retry state | 8C |
|
|
91
|
+
| `event_consumers` | durable monotonic consumer cursors | 8C |
|
|
87
92
|
|
|
88
93
|
Two rules make this work:
|
|
89
94
|
|
|
@@ -118,9 +123,32 @@ such as cloud-mem/claude-mem owns persistent memory and its own lifecycle. The
|
|
|
118
123
|
only related migration surface is the explicit `ultra-tools legacy-memory`
|
|
119
124
|
archive/prune command for data created by older releases.
|
|
120
125
|
|
|
121
|
-
## 4.
|
|
126
|
+
## 4. Continuous changes — the daily unit of convergence
|
|
122
127
|
|
|
123
|
-
|
|
128
|
+
After the initial baseline delivery, every fix, feature, redesign, or incident
|
|
129
|
+
is represented by a `changes` row and an inspectable packet:
|
|
130
|
+
|
|
131
|
+
```text
|
|
132
|
+
active -> blocked -> active -> ready -> archived
|
|
133
|
+
| |
|
|
134
|
+
├─ intent + delta + plan └─ verification + baseline reconciliation
|
|
135
|
+
├─ linked tasks
|
|
136
|
+
└─ context-manifest (current HEAD + provider metadata references)
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
`quick`, `standard`, `major`, and `incident` kinds require different evidence,
|
|
140
|
+
but all require completed linked tasks, current context, declared documentation
|
|
141
|
+
impact, and no open incident. Memory and graph payloads never enter Ultra;
|
|
142
|
+
`context_snapshots.provider_refs_json` stores metadata references only.
|
|
143
|
+
|
|
144
|
+
Mutating MCP calls enqueue durable `projection_jobs`. Success is exposed in MCP
|
|
145
|
+
response metadata; failure becomes a retryable structured incident instead of a
|
|
146
|
+
swallowed warning. `system.doctor` is read-only by default and performs only
|
|
147
|
+
backup-first mechanical recovery when explicitly requested.
|
|
148
|
+
|
|
149
|
+
## 5. Sessions — the execution unit
|
|
150
|
+
|
|
151
|
+
A **session** is the standard unit of execution across all three runtimes
|
|
124
152
|
(D20). One session =
|
|
125
153
|
|
|
126
154
|
- a fresh OS process for the runtime,
|
|
@@ -140,7 +168,7 @@ This admission gate is the smallest piece that prevents two agents from
|
|
|
140
168
|
silently double-writing the same task — it is part of the v0.1 minimum
|
|
141
169
|
execution layer, not deferred to Phase 5.
|
|
142
170
|
|
|
143
|
-
##
|
|
171
|
+
## 6. Two timelines — rule layer vs execution layer
|
|
144
172
|
|
|
145
173
|
The roadmap separates two concerns that compete for the same surface
|
|
146
174
|
area (D13):
|
|
@@ -168,7 +196,7 @@ value from "skills + tasks survive across sessions" long before they get
|
|
|
168
196
|
value from "ten agents in parallel." Each milestone is independently
|
|
169
197
|
shippable; downstream slip never blocks an earlier release.
|
|
170
198
|
|
|
171
|
-
##
|
|
199
|
+
## 7. Where to look next
|
|
172
200
|
|
|
173
201
|
| Question | File |
|
|
174
202
|
|----------------------------------------------------|-----------------------------------------------------|
|
|
@@ -178,7 +206,7 @@ shippable; downstream slip never blocks an earlier release.
|
|
|
178
206
|
| What does a tasks.json look like after projection? | [`spec/fixtures/valid/tasks.v4.5.json`](../spec/fixtures/valid/tasks.v4.5.json) |
|
|
179
207
|
| Phase-by-phase work breakdown + decision log | [`docs/PLAN.zh-CN.md`](./PLAN.zh-CN.md) |
|
|
180
208
|
|
|
181
|
-
##
|
|
209
|
+
## 8. Verifying the architecture
|
|
182
210
|
|
|
183
211
|
Every contract on this page is enforced by `npm run test:spec`:
|
|
184
212
|
|
package/docs/PLAN.zh-CN.md
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
# ultra-builder-pro-cli —
|
|
1
|
+
# ultra-builder-pro-cli — 历史执行计划与决策日志
|
|
2
2
|
|
|
3
|
-
> **2026-07-
|
|
3
|
+
> **2026-07-17 当前生效边界(D50-D52,覆盖下文旧 Phase 6/7 的内置图谱、memory 与 runtime 设计)**:
|
|
4
4
|
> Ultra Builder Pro 不再拥有 `memory.*`、recall、prompt/transcript/observation/summary
|
|
5
5
|
> 收集 hook 或私有 agent memory。跨会话记忆全部交给独立安装的 cloud-mem/claude-mem。
|
|
6
|
-
> 插件只保留
|
|
7
|
-
>
|
|
8
|
-
>
|
|
6
|
+
> 插件只保留 12 个 Ultra 公共 workflow(新增 daily `ultra-change` 与诊断
|
|
7
|
+
> `ultra-doctor`)、4 个 agent-only 规则 skill、宿主专属 collab companion、
|
|
8
|
+
> workflow/change hook 与 `.ultra/state.db` 权威。Memory 和代码图谱内容全部由外部
|
|
9
|
+
> provider 所有,Ultra 只保存 provider 元数据引用。Claude Code、Codex、OpenCode
|
|
10
|
+
> 采用各自 native plugin 呈现,其他旧 runtime adapter 已退役。下文所有与此冲突的
|
|
9
11
|
> memory/hindsight 章节仅作为历史实施记录,不再是当前需求或运行时契约。
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
+
**当前状态**:v0.7.0 发布候选;三宿主 native plugin、29 个 live MCP tool、
|
|
14
|
+
schema 9.0(15 表)、持续 change/context/convergence/doctor 已落地;npm 发布由
|
|
15
|
+
`v*.*.*` tag 触发。以下 Phase 0-9 正文保留为 2026-04 的实施历史,不再作为
|
|
16
|
+
当前 runtime 或发布状态的事实来源。
|
|
17
|
+
**历史版本**:0.3.1-plan · 2026-04-17 Codex 第二轮评审收尾
|
|
13
18
|
**范围**:最终目标 = 可落地的"跨 runtime coding 自动化工厂"。12 个 Phase 渐进交付。
|
|
14
19
|
**整体置信度**:**86%**(同 v0.3;Phase 2 下调被 4.5/8A/8B 上调抵消)
|
|
15
20
|
**关键变更**(vs v0.3,基于 Codex 第二轮 R1-R7):
|
|
@@ -22,14 +27,16 @@
|
|
|
22
27
|
- **Phase 4.6 拆 a/b**(R6 + D35):v0.1 只跑 smoke flow,full conformance 推 v0.2
|
|
23
28
|
- **Codex 第二轮结论**:"小改后开工"(tl;dr);本版已完成小改
|
|
24
29
|
|
|
25
|
-
**总决策数**:D1-
|
|
30
|
+
**总决策数**:D1-D52(当前边界以 D50-D52 为准)
|
|
26
31
|
**总风险数**:R1-R32(v0.3.1 新增 R25-R32 共 8 条)
|
|
27
32
|
|
|
28
33
|
---
|
|
29
34
|
|
|
30
|
-
>
|
|
31
|
-
>
|
|
32
|
-
>
|
|
35
|
+
> **当前事实权威**:live MCP 以 `spec/mcp-tools.yaml` 为准,持久状态以
|
|
36
|
+
> `spec/schemas/state-db.sql` 为准,插件边界以 `docs/AGENT-CONTEXT.md` 与
|
|
37
|
+
> `adapters/_shared/runtime-assets.cjs` 为准,宿主差异以
|
|
38
|
+
> `docs/RUNTIME-COMPAT-MATRIX.md` 为准。本文件只保存历史方案与决策来源;任何
|
|
39
|
+
> 与上述当前契约冲突的旧 Phase 文本均不生效。
|
|
33
40
|
|
|
34
41
|
---
|
|
35
42
|
|
|
@@ -41,7 +48,7 @@
|
|
|
41
48
|
**自动化 coding 工厂**。
|
|
42
49
|
|
|
43
50
|
**最终形态**(v1.0):
|
|
44
|
-
-
|
|
51
|
+
- 任何一个受支持的 coding agent CLI(Claude / OpenCode / Codex)
|
|
45
52
|
Windsurf)都能消费同一套 Hermes 规则。
|
|
46
53
|
- 独立 session 执行独立 task,无对话污染;失败自动重试带熔断。
|
|
47
54
|
- 跨 session 的记忆、代码图、token 监控通过 MCP 共享。
|
|
@@ -70,7 +77,7 @@ Hermes(Ultra Builder Pro)是一套成熟的 agent 工程系统:
|
|
|
70
77
|
|
|
71
78
|
**A. Claude 独占工具钉死**:`TaskCreate/Update/List`、`AskUserQuestion`、`Skill`、
|
|
72
79
|
`Agent(subagent)`、`TeamCreate/SendMessage`、`/compact` 这 6 类 API 让 Hermes
|
|
73
|
-
离开 Claude Code
|
|
80
|
+
离开 Claude Code 寸步难行。其它两大受支持 runtime(OpenCode / Codex)各
|
|
74
81
|
有原生等价或兼容层,但今天无人对接。
|
|
75
82
|
|
|
76
83
|
**B. 单会话污染与状态不原子**:
|
|
@@ -103,13 +110,13 @@ Hermes(Ultra Builder Pro)是一套成熟的 agent 工程系统:
|
|
|
103
110
|
|
|
104
111
|
| # | 目标 | 可验证条件 | 归属 Phase |
|
|
105
112
|
|---|------|-----------|----------|
|
|
106
|
-
| G1 | Hermes 在 Claude / OpenCode / Codex
|
|
113
|
+
| G1 | Hermes 在 Claude / OpenCode / Codex 三个 runtime 原生可用 | 每 runtime 能跑完整 `init→research→plan→dev→test` | 4 |
|
|
107
114
|
| G2 | 状态权威源单一、并发安全 | SQLite + WAL;20 worker 并发 updateTaskStatus 无丢失 | 2 |
|
|
108
115
|
| G3 | `tasks.json` / context md 降级为投影,state.db 权威 | 所有写入走 state-db;JSON/MD 自动再生成(D18) | 2 |
|
|
109
116
|
| G4 | 每 task 独立会话(新进程 + 独立 worktree + lease),对话不污染 | 2 并发 session 各独立 worktree;kill -9 后 lease 过期可清理 | **4.5** |
|
|
110
117
|
| G5 | 跨 session 事件可订阅 | MCP `session.subscribe_events` 从 state-db events 表实时推 | **4.5** |
|
|
111
118
|
| G6 | 崩溃自动恢复,失败有熔断 | kill -9 agent 后 orchestrator 重启能续;同 task 重试 ≥3 次自动停 | 5 |
|
|
112
|
-
| G7 |
|
|
119
|
+
| G7 | Memory 与代码图谱由外部 provider 完成,Ultra 只保存可追溯引用 | 三个 runtime 的 context manifest 都只含 provider 元数据,不复制 provider 内容 | 6, 7 |
|
|
113
120
|
| G8 | PRD 自动拆 task + 并行分派(8A + 8B) | 10 task 的 PRD 一键触发,≤3 失败项,其余自动完成并合入 | **8A, 8B** |
|
|
114
121
|
| G9 | 三渠道可装(npm / Homebrew / pip) | 干净 macOS / Ubuntu 60 秒装好 | 9 |
|
|
115
122
|
| G10 | 0 私人数据泄漏 | npm tarball / brew bottle / pip wheel 审计干净 | 9 |
|
|
@@ -139,7 +146,7 @@ Hermes(Ultra Builder Pro)是一套成熟的 agent 工程系统:
|
|
|
139
146
|
│ Skill 层 (知识 / 说明书) │
|
|
140
147
|
│ runtime 原生发现 │
|
|
141
148
|
│ Claude: ~/.claude/skills/ OpenCode: ~/.config/opencode │
|
|
142
|
-
│ Codex: ~/.agents/skills/
|
|
149
|
+
│ Codex: ~/.agents/skills/ │
|
|
143
150
|
│ │
|
|
144
151
|
│ ┌─ SKILL.md ──────────────────────────────┐ │
|
|
145
152
|
│ │ - 何时使用 │ │
|
|
@@ -252,7 +259,7 @@ v0.2 加执行层进阶(recovery + 监控 + 实时图谱)→ 半自动 → v
|
|
|
252
259
|
│ ▼ TDD RED/GREEN/REFACTOR (调 impact.radius + memory.recall)
|
|
253
260
|
│ ▼ review: MCP review.run → 5 个 subagent 并行
|
|
254
261
|
│ │ │
|
|
255
|
-
│ │ ▼ (Phase 6)
|
|
262
|
+
│ │ ▼ (Phase 6) telemetry
|
|
256
263
|
│ │
|
|
257
264
|
│ ▼ task.update_status completed + commit
|
|
258
265
|
│ ▼ activity-log: task_complete(id=1, commit=abc)
|
|
@@ -308,12 +315,10 @@ ultra-builder-pro-cli/
|
|
|
308
315
|
│ └── recovery.ts # Phase 5 circuit-breaker
|
|
309
316
|
├── telemetry/ # Phase 6
|
|
310
317
|
│ ├── collectors/ # token / tool_call / cost
|
|
311
|
-
│ └── rtk-integration.ts
|
|
312
318
|
├── adapters/ # Phase 4 跨 runtime 分发
|
|
313
319
|
│ ├── claude.ts
|
|
314
320
|
│ ├── opencode.ts
|
|
315
321
|
│ ├── codex.ts
|
|
316
|
-
│ ├── gemini.ts
|
|
317
322
|
│ └── _shared/
|
|
318
323
|
├── hooks/ # Python hooks 沿用
|
|
319
324
|
│ ├── *.py (15)
|
|
@@ -342,7 +347,7 @@ ultra-builder-pro-cli/
|
|
|
342
347
|
| A6 | 事件流 = state-db `events` 表(append-only)+ MCP subscribe | 取代 activity-log.json 文件;state-db 统一权威源(D18) |
|
|
343
348
|
| A7 | Python hooks 沿用,Node shell out | 15 hook 重写 Node 要 2-3 周纯折腾;零价值 |
|
|
344
349
|
| A8 | orchestrator 是可选的常驻 Node daemon | 规则层可不依赖执行层独立跑;半自动 → 全自动平滑升级 |
|
|
345
|
-
| A9 |
|
|
350
|
+
| A9 | Memory 与代码图谱全部归外部 provider 所有 | Ultra 只存 provider、project、reference、revision、indexed_head、status 等元数据引用,不内嵌内容或自建等价能力 |
|
|
346
351
|
| **A10** | **v0.1 = 规则层 + execution-lite**(非裸规则层) | Codex Q3:用户核心诉求是"独立会话",无执行层 v0.1 不够用;D19 |
|
|
347
352
|
| **A11** | **Schema v4.4 → v4.5 过渡(不直接 v5 breaking)** | Codex Q5:tasks.json 成 authoritative view,context status 降级派生,停止手写保留兼容;等命令全迁完再 v5;D21 |
|
|
348
353
|
| **A12** | **Runtime capability matrix + conformance tests** 代替纸面 parity | Codex Q8:4 runtime 在 hook / subagent / 权限 / usage 统计不等价;D23 |
|
|
@@ -374,7 +379,6 @@ ultra-builder-pro-cli/
|
|
|
374
379
|
|
|
375
380
|
| 能力 | 来源 | 加到哪 | Phase | 工时 |
|
|
376
381
|
|------|------|-------|-------|-----:|
|
|
377
|
-
| RTK Bash 命令压缩(60-90%) | RTK | `rtk init -g` + hook 注册 | 6 | 0.5d |
|
|
378
382
|
| 爆炸半径分析(8x 减少) | code-review-graph | MCP `impact.*` tool | 7 | 2d |
|
|
379
383
|
| 长期记忆(retain/recall/reflect) | hindsight | MCP `memory.*` tool | 7 | 5d |
|
|
380
384
|
| Skill 自动萃取 + 注入 | OMC | `/learn` 扩展;dev 起步读匹配 skill | 7 | 2d |
|
|
@@ -473,7 +477,7 @@ ultra-builder-pro-cli/
|
|
|
473
477
|
|
|
474
478
|
**1.3 Skill manifest 规范**(0.5 天)
|
|
475
479
|
- `spec/skill-manifest.schema.json` — 所有 skill 的 frontmatter 规范:
|
|
476
|
-
- name / description / runtime(Claude/OpenCode/Codex/
|
|
480
|
+
- name / description / runtime(Claude/OpenCode/Codex/all)/
|
|
477
481
|
mcp_tools_required / cli_fallback / complexity_hint(Haiku/Sonnet/Opus)
|
|
478
482
|
- **AC**:现有 18 skill 的 frontmatter 校验通过(≥90%,其余写 migration note)。
|
|
479
483
|
|
|
@@ -666,7 +670,7 @@ CLI"。消除对 Claude 独占工具的硬依赖。
|
|
|
666
670
|
做目录搭建 + 空 tasks.json 写入。
|
|
667
671
|
- `ultra-tools/commands/init.cjs`:CLI 兜底做同样事情。
|
|
668
672
|
- 三层都能完成 init → AC 对齐 CLAUDE 下今天的 init 行为。
|
|
669
|
-
- **AC**:在 Claude / OpenCode / Codex
|
|
673
|
+
- **AC**:在 Claude / OpenCode / Codex 任一 runtime 下跑 init,
|
|
670
674
|
产出的 `.ultra/` 目录与当前 Hermes 的 init 输出 diff-equal。
|
|
671
675
|
|
|
672
676
|
**3.2 `/ultra-research` 迁移**(1 天)
|
|
@@ -701,7 +705,7 @@ CLI"。消除对 Claude 独占工具的硬依赖。
|
|
|
701
705
|
- **AC**:全 9 命令迁完。
|
|
702
706
|
|
|
703
707
|
**3.7 AGENTS.md 统一上下文**(1 天)
|
|
704
|
-
- 合并 `CLAUDE.md` / `AGENTS.md`
|
|
708
|
+
- 合并 `CLAUDE.md` / `AGENTS.md` 为统一 **规则注入文件**
|
|
705
709
|
(命名:每 runtime 的原生 context 文件,但内容相同)。
|
|
706
710
|
- 内容:三层架构说明 + 关键 MCP tool 清单 + CLI 命令表 + skill 发现路径。
|
|
707
711
|
- 这是 OMX "scope guard" 能力(§5.2)。
|
|
@@ -709,9 +713,9 @@ CLI"。消除对 Claude 独占工具的硬依赖。
|
|
|
709
713
|
|
|
710
714
|
**3.8 Python hooks 三分拆**(1 天)
|
|
711
715
|
- 按原 PLAN v0.1 的 Phase 3 做:core/ + adapters/(claude / opencode /
|
|
712
|
-
codex
|
|
716
|
+
codex)
|
|
713
717
|
- **AC**:Claude hooks 行为字节级一致;OpenCode/Codex 只接 2 个可达事件
|
|
714
|
-
(§5.4
|
|
718
|
+
(§5.4)。
|
|
715
719
|
|
|
716
720
|
#### Phase 3 gate
|
|
717
721
|
|
|
@@ -723,8 +727,8 @@ CLI"。消除对 Claude 独占工具的硬依赖。
|
|
|
723
727
|
|
|
724
728
|
### Phase 4 — 跨 runtime 分发
|
|
725
729
|
|
|
726
|
-
**目标**:让 skill/MCP/CLI 三层正确安装到 Claude / OpenCode / Codex
|
|
727
|
-
|
|
730
|
+
**目标**:让 skill/MCP/CLI 三层正确安装到 Claude / OpenCode / Codex
|
|
731
|
+
三个 runtime。包含 MCP server 注册、skill 拷贝、CLI PATH、runtime-specific 转换。
|
|
728
732
|
|
|
729
733
|
**前置**:Phase 3(三层可用)
|
|
730
734
|
|
|
@@ -736,8 +740,8 @@ CLI"。消除对 Claude 独占工具的硬依赖。
|
|
|
736
740
|
|
|
737
741
|
**4.1 共享 adapter 工具**(1 天)
|
|
738
742
|
- `adapters/_shared/file-ops.ts` / `frontmatter.ts` / `settings-merge.ts` /
|
|
739
|
-
`path-rewrite.ts`
|
|
740
|
-
- **AC
|
|
743
|
+
`path-rewrite.ts` — 从 v0.1 PLAN §6.2.1 继承。
|
|
744
|
+
- **AC**:共享模块单元测试覆盖率 ≥85%。
|
|
741
745
|
|
|
742
746
|
**4.2 Claude adapter**(1 天)
|
|
743
747
|
- `~/.claude/{skills,commands,agents,hooks}` 直接拷贝。
|
|
@@ -760,18 +764,11 @@ CLI"。消除对 Claude 独占工具的硬依赖。
|
|
|
760
764
|
- MCP server 注册到 `config.toml [mcp_servers]`。
|
|
761
765
|
- **AC**:config.toml 合法;`codex exec "run /ultra-init"` 成功。
|
|
762
766
|
|
|
763
|
-
**4.5 Gemini adapter**(2 天,含 0.5 天 spike)
|
|
764
|
-
- spike:抓 `hooks/hooks.json` + subagent frontmatter。
|
|
765
|
-
- **整体打包成 Gemini extension**(`~/.gemini/extensions/ultra-builder-pro/`)。
|
|
766
|
-
- 命令 md → toml(`md-to-toml.ts`)。
|
|
767
|
-
- MCP server 在 extension manifest 里声明。
|
|
768
|
-
- **AC**:extension 目录合法;gemini 启动识别;`gemini --prompt` 烟测成功。
|
|
769
|
-
|
|
770
767
|
**4.6a Runtime capability matrix + v0.1 smoke flow**(1 天,**D33 收敛**)
|
|
771
|
-
- `docs/RUNTIME-COMPAT-MATRIX.md`:列
|
|
768
|
+
- `docs/RUNTIME-COMPAT-MATRIX.md`:列 3 runtime × ~25 能力点:
|
|
772
769
|
- 问答:AskUserQuestion / CLI menu / MCP `ask.question`
|
|
773
770
|
- Hook 事件:每 runtime 的可用事件名单 + payload 形状
|
|
774
|
-
- Subagent:Claude Task / Codex spawn_agent /
|
|
771
|
+
- Subagent:Claude Task / Codex spawn_agent / OpenCode @mention
|
|
775
772
|
- Usage 统计:token / cost 能否拿到
|
|
776
773
|
- MCP:stdio 稳定性 / HTTP 支持
|
|
777
774
|
- Skill 发现路径
|
|
@@ -780,23 +777,23 @@ CLI"。消除对 Claude 独占工具的硬依赖。
|
|
|
780
777
|
- `tests/conformance/<runtime>/` v0.1 基线:**每 runtime 1-2 条 smoke flow**
|
|
781
778
|
- Flow 1: `install → /ultra-init → task.create → 读投影 tasks.json → uninstall`
|
|
782
779
|
- Flow 2: `/ultra-dev 1` 通过 session.spawn 起 session → 关
|
|
783
|
-
- **AC**:matrix 文档完整;
|
|
780
|
+
- **AC**:matrix 文档完整;3 runtime × 2 smoke = 6 testcase 全绿
|
|
784
781
|
|
|
785
782
|
**4.6b Full conformance suite**(1 天,**D45 2026-04-17 完成**)
|
|
786
|
-
- ✅ 每 runtime 5 capability 完整测试 =
|
|
783
|
+
- ✅ 每 runtime 5 capability 完整测试 = 15 testcase(+ 6 smoke 保留 = 21)
|
|
787
784
|
- ✅ `tests/conformance/_capabilities.cjs` 共享 assertion;各 runtime `conformance.test.cjs` 注入 runtime-specific config
|
|
788
|
-
- ✅ `resolveTarget()` contract test(
|
|
785
|
+
- ✅ `resolveTarget()` contract test(15 tests,3 runtime × 5 scenario)
|
|
789
786
|
- ✅ Phase 4 review backlog 全清(6 P2 + 5 P3 → D45)— 含 `_source` 搬到 sibling `_ubp` 的 env 泄漏修复
|
|
790
787
|
|
|
791
788
|
**4.7 install.js 真实装配**(0.5 天)
|
|
792
789
|
- 从 Phase 0 stub 升级为真调用 adapter。
|
|
793
|
-
- `--claude/--opencode/--codex/--
|
|
790
|
+
- `--claude/--opencode/--codex/--all` + `--local/--global` + `--uninstall`。
|
|
794
791
|
- 幂等:跑两次 install diff = 空。
|
|
795
|
-
- **AC**:
|
|
792
|
+
- **AC**:3 runtime × 2 scope = 6 条安装路径全绿;uninstall 后目录干净。
|
|
796
793
|
|
|
797
794
|
#### Phase 4 gate
|
|
798
795
|
|
|
799
|
-
-
|
|
796
|
+
- 3 runtime 下 `/ultra-init` 都能跑通
|
|
800
797
|
- Claude diff-equal 基线通过
|
|
801
798
|
- runtime-compat-matrix 20 conformance testcase 全绿
|
|
802
799
|
- `docs/RUNTIME-COMPAT-MATRIX.md` 完整产出
|
|
@@ -943,16 +940,16 @@ agent 并行,orchestrator 负责 session 隔离和状态一致。
|
|
|
943
940
|
|
|
944
941
|
**前置**:Phase 5(session 是监控的归属单位)
|
|
945
942
|
|
|
946
|
-
**置信度**:93
|
|
943
|
+
**置信度**:93%(埋点与结构化事件是标准工程)
|
|
947
944
|
|
|
948
945
|
**工时**:3-4 天
|
|
949
946
|
|
|
950
947
|
#### 任务清单
|
|
951
948
|
|
|
952
|
-
**6.1
|
|
953
|
-
-
|
|
954
|
-
-
|
|
955
|
-
- **AC
|
|
949
|
+
**6.1 外部能力边界**(0.5 天)
|
|
950
|
+
- 安装器不检测、不注册、也不代理任何通用 shell 压缩工具。
|
|
951
|
+
- Memory 与代码图谱由独立 provider 安装和运行;Ultra 只消费显式传入的元数据引用。
|
|
952
|
+
- **AC**:干净环境安装不产生第三方命令代理配置,context manifest 不包含外部 provider 的内容正文。
|
|
956
953
|
|
|
957
954
|
**6.2 Telemetry collectors**(1.5 天)
|
|
958
955
|
- `telemetry/collectors/token.ts`:从 activity-log + session log 抽 token
|
|
@@ -983,9 +980,9 @@ agent 并行,orchestrator 负责 session 隔离和状态一致。
|
|
|
983
980
|
返回准确依赖集(10 文件项目的命中率 ≥95%)
|
|
984
981
|
|
|
985
982
|
**6.5 Runtime stdout 拦截(可选)**(1 天)
|
|
986
|
-
- orchestrator spawn agent 时拦截 stdout,解析 Anthropic/OpenAI
|
|
983
|
+
- orchestrator spawn agent 时拦截 stdout,解析 Anthropic/OpenAI
|
|
987
984
|
SDK 的 usage 字段(若可达)。
|
|
988
|
-
- 更精准的 token
|
|
985
|
+
- 更精准的 token 统计(不依赖命令输出压缩推测)。
|
|
989
986
|
- **AC**:对一个已知 token 数的 task 做 E2E,telemetry 与官方 usage 误差 <5%。
|
|
990
987
|
|
|
991
988
|
#### Phase 6 gate
|
|
@@ -993,7 +990,7 @@ agent 并行,orchestrator 负责 session 隔离和状态一致。
|
|
|
993
990
|
- ✅ telemetry 覆盖率:每 MCP tool 调用 100% 有埋点(state.db.telemetry + jsonl 双写)
|
|
994
991
|
- ✅ `/ultra-status --cost` panel 数字可信(token → pricing 表 → cost_usd 推算;SDK usage 精确对账推迟 6.5)
|
|
995
992
|
- ✅ code-review-graph watcher 实时增量测试过(debounce + exclude + large_batch 6 tests)
|
|
996
|
-
- ⤼ 6.5 Runtime stdout 拦截按 PLAN
|
|
993
|
+
- ⤼ 6.5 Runtime stdout 拦截按 PLAN 原文“可选”跳过(YAGNI:宿主 usage 与 pricing 估算已覆盖当前需求)
|
|
997
994
|
- ✅ **Phase 6 完成 — D44**(2026-04-17)
|
|
998
995
|
|
|
999
996
|
---
|
|
@@ -1200,8 +1197,8 @@ files_modified 重叠检测 + 自动合并。这是 "coding 工厂" 的**后端*
|
|
|
1200
1197
|
#### 任务清单
|
|
1201
1198
|
|
|
1202
1199
|
**9.1 CI 矩阵**(1 天)
|
|
1203
|
-
- GitHub Actions:`{claude, opencode, codex
|
|
1204
|
-
=
|
|
1200
|
+
- GitHub Actions:`{claude, opencode, codex} × {local, global}`
|
|
1201
|
+
= 6 jobs + 外部 provider 引用边界测试。
|
|
1205
1202
|
- **AC**:所有矩阵单元绿,每周定时跑一次(catch runtime 上游变更)。
|
|
1206
1203
|
|
|
1207
1204
|
**9.2 README 重写**(0.5 天)
|
|
@@ -1275,7 +1272,7 @@ CREATE INDEX events_task ON events(task_id, id);
|
|
|
1275
1272
|
CREATE TABLE sessions (
|
|
1276
1273
|
sid TEXT PRIMARY KEY,
|
|
1277
1274
|
task_id TEXT,
|
|
1278
|
-
runtime TEXT, -- claude|opencode|codex
|
|
1275
|
+
runtime TEXT, -- claude|opencode|codex
|
|
1279
1276
|
pid INTEGER,
|
|
1280
1277
|
worktree_path TEXT,
|
|
1281
1278
|
artifact_dir TEXT,
|
|
@@ -1567,7 +1564,7 @@ Week 18 buffer(ship 中任何 Phase 的 25% 滑动吃掉)
|
|
|
1567
1564
|
最终 commit 独立。
|
|
1568
1565
|
4. **事件传播**:agent A 完成 task 1 后,≤1s 内 agent B 通过 MCP 看到。
|
|
1569
1566
|
5. **崩溃恢复**:kill -9 跑 dev 的 agent,重启后能续或熔断。
|
|
1570
|
-
6. **
|
|
1567
|
+
6. **Provider 边界**:Memory 与图谱正文不进入 Ultra state.db 或发布包,只保留可追溯元数据引用。
|
|
1571
1568
|
7. **记忆召回**:跨 session retain → recall 命中率 ≥90%。
|
|
1572
1569
|
8. **PRD 自动拆**:2KB PRD 自动拆与人工 ≥80% 一致。
|
|
1573
1570
|
9. **并行工厂**:10 task PRD 自动完成率 ≥80%。
|
|
@@ -1592,7 +1589,7 @@ Week 18 buffer(ship 中任何 Phase 的 25% 滑动吃掉)
|
|
|
1592
1589
|
| # | 日期 | 决策 | 证据 |
|
|
1593
1590
|
|---|------|------|------|
|
|
1594
1591
|
| D1 | 2026-04-17 | 分发-adapter 路线(不自建 agent) | 用户选;get-shit-done 14 runtime 验证 |
|
|
1595
|
-
| D2 | 2026-04-17 |
|
|
1592
|
+
| D2 | 2026-04-17 | 当前 runtime:Claude + OpenCode + Codex | 0.6.0 收敛后的支持边界 |
|
|
1596
1593
|
| D3 | 2026-04-17 | 包名 `ultra-builder-pro-cli`,短名 `ubp` | 用户选 |
|
|
1597
1594
|
| D4 | 2026-04-17 | 发布渠道:npm + Homebrew + pip | 用户选 |
|
|
1598
1595
|
| D5 | 2026-04-17 | 销毁旧 git,main 重建 | 用户选;历史存 bundle |
|
|
@@ -1601,11 +1598,11 @@ Week 18 buffer(ship 中任何 Phase 的 25% 滑动吃掉)
|
|
|
1601
1598
|
| D8 | 2026-04-17 | settings.json 精简为最小合并模板 | 隐私安全 |
|
|
1602
1599
|
| D9 | 2026-04-17 | README 改写延 Phase 9 | 不阻塞开发 |
|
|
1603
1600
|
| D10 | 2026-04-17 | `hooks/tests/` 不入 npm tarball | 包体精简 |
|
|
1604
|
-
| D11 | 2026-04-17 | 基于官方文档重做 §5 + Phase 2/3 + §9 + §10 |
|
|
1601
|
+
| D11 | 2026-04-17 | 基于官方文档重做 §5 + Phase 2/3 + §9 + §10 | OpenCode、Codex 与 Claude Code 的官方命令、配置、skill、hook 和 subagent 文档 |
|
|
1605
1602
|
| **D12** | **2026-04-17** | **采用 skill + MCP + CLI 三层架构**,skill=说明书、MCP=状态操作主路径、CLI=Bash 兜底 | 参考 CTM(MCP 模式)+ OMC/OMX(skill 模式)+ get-shit-done(CLI 模式);三层分工覆盖 "knowledge / state / hook" 三类需求 |
|
|
1606
1603
|
| **D13** | **2026-04-17** | **规则层 / 执行层双时间线交付**(Phase 1-4 规则层 → v0.1;Phase 5-8 执行层 → v0.2-v0.3) | 用户明确"规则 vs 自动化执行"的维度;降低单次发布复杂度;早让用户拿到可用价值 |
|
|
1607
1604
|
| **D14** | **2026-04-17** | **范围从"分发器"扩展到"自动化 coding 工厂"**,总工时从 4-5 周扩到 11-13 周 | 用户诉求:跨 agent 上下文共享 + 独立对话避污染 + 监控 + 实时代码图 + 记忆系统;不只是 distribution tool |
|
|
1608
|
-
| **D15** | **2026-04-17** |
|
|
1605
|
+
| **D15** | **2026-04-17** | 外部 Memory / 图谱能力采用 provider 引用,不自建等价实现 | 避免复制第三方能力与内容,让 Ultra 聚焦 change workflow 与收敛证据 |
|
|
1609
1606
|
| **D16** | **2026-04-17** | GSD / GSD-2 的 **atomic-write / state-machine / ctx.newSession / DISPATCH_RULES** 直接移植(不自建) | 已在 14 runtime 实战;用户确认"可以先集成,混合" |
|
|
1610
1607
|
| **D17** | **2026-04-17** | Phase 3 消除 **tasks.json 与 context 的 status 双写**(原 v4.4 → v5.0,**后被 D21 覆盖为 v4.5 过渡**) | 用户指痛点"异步效果不好"根因之一 |
|
|
1611
1608
|
| **D18** | **2026-04-17** | **权威状态层 = `.ultra/state.db` SQLite + WAL**,md/json 降级为投影/导出视图 | Codex Q1:多主写入是最大架构风险;SQLite 提供事务 + 并发读;tasks.json/activity-log/sessions/workflow-state 多文件各管一摊易炸 |
|
|
@@ -1631,15 +1628,17 @@ Week 18 buffer(ship 中任何 Phase 的 25% 滑动吃掉)
|
|
|
1631
1628
|
| **D38** | **2026-04-17** | **Phase 1 完成** — `spec/` 锁死三层契约:30 个 MCP tool / 7 表 SQLite schema / tasks 与 context 投影 schema / skill manifest / CLI 协议 + 映射表;`npm run test:spec` 5 validator 全绿;新增 `docs/ARCHITECTURE.md` | Phase 1 gate 全过;后续 Phase 只引用 spec/,不再发明 schema |
|
|
1632
1629
|
| **D39** | **2026-04-17** | **Phase 2 完成** — 权威状态层落地:`.ultra/state.db` (7 表 WAL+busy_timeout)、`mcp-server/lib/{state-db,state-ops,projector}.cjs`、`mcp-server/server.cjs`(@modelcontextprotocol/sdk stdio + 7 task.*)、`ultra-tools {db,migrate}` 子命令、`STATE-DB-ACCESS-POLICY.md` + `COMMIT-HASH-BACKFILL.md`;6 gate 全过(20 worker / 3 进程并发 / migration 可逆 / DB 运维 4 子命令 / 投影 ≤1s / task.* MCP 契约 + events.id 无漏);`npm run test:state` 44/44 + `npm run test:spec` 5/5 | Phase 2 gate 全过;spec → state-ops → MCP 写路径成形,Phase 3 命令薄壳化可以基于 task.* MCP tool 重写 |
|
|
1633
1630
|
| **D40** | **2026-04-17** | **Phase 3 完成** — 命令规则化三层迁移:9/9 命令薄壳化(36-54 行,平均 41 行)+ 7 个新 skill (`skills/ultra-{init,plan,dev,test,deliver,status,think,learn}/SKILL.md` 148-340 行) + `skills/ultra-research/SKILL.md` frontmatter 升级;新 MCP tool `task.init_project` + 内置 `templates/.ultra/` 骨架 + `ultra-tools task init-project` CLI;`spec/command-template.md` + `command-manifest.schema.json` + `validate-commands.cjs`(UBP_COMMAND_STRICT=1 9/9 通过);`docs/AGENT-CONTEXT.md` canonical runtime 规则源;`hooks/{adapters,core}/` 骨架 + 4 个 runtime adapter stub;`test:state` 54/54 (+10) + `test:spec` 6/6 (+1) + strict-mode command gate 9/9 migrated 0 failed | Phase 3 gate 全过;skill+MCP+CLI 三层模式在 9 命令全部闭环;Phase 4 adapter 阶段可以直接基于 `docs/AGENT-CONTEXT.md` canonical + hooks/adapters/ stub 展开 |
|
|
1634
|
-
| **D41** | **2026-04-17** | **Phase 4
|
|
1631
|
+
| **D41** | **2026-04-17** | **Phase 4 初始跨 runtime 分发里程碑** — adapter、能力矩阵、smoke flow 与 installer 装配首次闭环;0.6.0 后只保留 Claude Code、OpenCode、Codex 三个 native plugin | 历史里程碑;当前边界由 D51 覆盖 |
|
|
1635
1632
|
| **D46** | **2026-04-17** | **Phase 7 完成 — 智能层落地** — 偏离原 PLAN:**不内嵌 hindsight-server(Python/Docker),改自建 SQLite FTS5 memory store**(理由:PLAN 自己说"避免 Docker"已承认痛点;Node 内嵌 Python 要 subprocess/HTTP 胶水,成本高于直接用 state.db)。**7.1 Memory store**:schema 升 5.2 → 7.1,新增 `memory_entries` 表(task_id/session_id/tag/kind/content/source/ts;kind CHECK `fact/decision/error_fix/pattern/note`)+ `memory_fts` FTS5 虚表 + 3 trigger(ai/ad/au 同步);`mcp-server/lib/memory-store.cjs` retain/recall/reflect 三函数(FTS5 MATCH 构造 escape 用 quote-wrap 防注入;空 query → 近期条目 fallback;bm25 ranking);3 MCP tool `memory.retain/recall/reflect`(spec/mcp-tools.yaml 老 schema 用 scope/ttl_days 方案 → 替换为 kind 方案,更贴事件自动提取);`orchestrator/memory-wrapper.cjs` autoRecallOnSpawn(task.title+trace_to → recall → prefetch.md)+ autoRetainOnClose(event-type heuristic 映射 task_completed→decision / task_circuit_broken→error_fix / session_crashed→pattern / task_stale_marked→fact;**不调 LLM**);session-runner opt-in `autoMemory: true`。**7.2 Tagged task lists**:`deriveBranchTag(cwd)` 用 `spawnSync`(非 throw, 状态码判断) 读 git symbolic-ref + `sanitizeTag`(slash→hyphen, @→dot, 非 `\w.-` 剥离, ≤100 chars);`switchTaskTag` + `task_tag_changed` event;`createTask` 接 `_cwd` 字段自动推导 tag 不覆盖显式传入;MCP `task.switch_tag` + spec/cli-protocol.md 加 33rd mapping;daemon `branchScoped: true` 过滤 pending by current branch tag。**7.3 Skill 萃取(heuristic, 0 LLM cost)**:`orchestrator/skill-miner.cjs` mineSession 扫 session events → 3 signal 触发(`task_completed` → task-completion / `task_circuit_broken` → debug-pattern / `session_crashed` → recovery-pattern)→ 写 `skills/learned/<ts>_<sid>_unverified.md` 含 YAML frontmatter + Problem/Signal/Evidence/Suggested reuse 4 section;idempotent(同 sid 再跑检到已有 draft 则 skip);session-runner opt-in `mineSkill: true` + `skillsRoot`。**聚合**:Phase 7 新增 38 tests(memory-store 11 + memory-wrapper 7 + tagged-tasks 11 + skill-miner 7 + server-contract 1 memory roundtrip + daemon 1 branchScoped),D45 基线 232 → **270 tests 全绿**,0 回归。schema_version 升到 7.1(第三个 seed 行),RequiredTables 加 `memory_entries` | v0.3 准备期:用户现在每 task 起步自动拿到相关历史 prefetch;branch 切换自动过滤任务;debug / crash / 完成自动生成 skill draft;所有 opt-in 默认关,不破坏现有集成 |
|
|
1636
|
-
| **D45** | **2026-04-17** | **Phase 4 backlog
|
|
1637
|
-
| **D44** | **2026-04-17** | **Phase 6 完成** —
|
|
1633
|
+
| **D45** | **2026-04-17** | **Phase 4 backlog 与 full conformance 完工** — 共享 capability assertions、三宿主 install/MCP/hook/skill/idempotency 覆盖与 `resolveTarget` 合约形成自动化防护网 | 当前三宿主 conformance 继续保留并由退役回归契约补强 |
|
|
1634
|
+
| **D44** | **2026-04-17** | **Phase 6 完成** — 三宿主 pricing/telemetry、成本面板与早期 code-graph watcher 落地 | 后续由外部 provider 边界取代内置 watcher |
|
|
1638
1635
|
| **D43** | **2026-04-17** | **Phase 5 完成** — 执行层进阶四件套落地:(5.1) `orchestrator/recovery.cjs` `recoverOnBoot` 扫 orphan 用 `process.kill(pid,0)` 探测 pid 存活,死的 → crashed + `task_failure` event(5 tests 含 kill -9 真实集成);(5.2) `circuit_breaker` 表(schema_version 升 4.5 → 5.2,`ensureSchemaVersion` 从 "latest row" 改 "exact match" 解决同 ms seed 排序不稳)+ `recordTaskFailure` 计数器(连续 ≥3 → `tripped_at` + `task_circuit_broken` 一次性 event)+ `resetCircuitBreaker` + `admissionCheck` 短路 `blocked_by_breaker` + `spawnSession` 抛 `CIRCUIT_TRIPPED`(7 tests,含 takeover 不可越过熔断);(5.3) `markTasksStaleBySpecSections` + `consumeSpecChangedEvents` 游标消费 + projector `⚠️ STALE` banner(只对 pending + 幂等,10 tests);(5.4) `orchestrator/daemon.cjs` 轮询 + `routeTask` 按 complexity_hint(haiku/sonnet/opus) 最简路由 + `bin/orchestrator.js` 四子命令 `run/start/stop/status` + `settings.json` `orchestrator.auto_dispatch` opt-in gate(11 tests + 手测 opt-in 拒启/pidfile 生命周期);Recovery 明确不自动 retry(retry 留给 Phase 8B),仅计失败交给熔断;总计 108 tests 全绿(state 76 + orch 26 + spec 6),原 118 基线 +35 无回归 | v0.2 执行层进阶完工;可起 daemon 自动捡 pending task,熔断+恢复+staleness 闭环 |
|
|
1639
1636
|
| **D42** | **2026-04-17** | **Phase 4.5 完成 — v0.1 发布就绪点** — execution-lite 落地:MCP 新增 7 个 session.* tool(spawn/close/get/list/admission_check/heartbeat/subscribe_events;spec 新增 session.list + meta-schema errors minItems 兼容);state-ops 新增 readSession / heartbeatSession / admissionCheck / reapOrphanSessions(D32/D33);`orchestrator/session-runner.cjs` 真 git worktree + child_process + state.db sessions 表 lease/heartbeat(替代 lease.json 文件 — grep 证代码零出现);`ultra-tools session {list,admission,reap,get,heartbeat,close,subscribe}` 7 verb CLI;skills/ultra-status 升级读 session.list + session.subscribe_events;Phase 4.5 gate 全过(2 并发 session 隔离 / 并发 spawn 单活 / kill -9 → orphan 识别 / event subscribe ≤1s latency / 无文件+表双源);总计 118 tests 全绿(state 59 + orch 8 + spec 6 + adapter/conformance/install 45);0 回归 | v0.1 发布就绪点达成:用户装上即可跨 4 runtime 手动并发跑任务、会话独立、事件订阅、活跃会话可见。真·可用最小单元 |
|
|
1640
1637
|
| **D47** | **2026-04-17** | **Phase 8A 完成 — planner 线就绪** — PRD → task graph → execution-plan 全链 MCP:(8A.0) schema 升 7.1 → 8A.1,tasks.parent_id TEXT REFERENCES tasks(id) ON DELETE SET NULL + `tasks_parent` 部分索引;EXPECTED_VERSION bump。(8A.1) `lib/llm-client.cjs` 官方 SDK 双 provider(`@anthropic-ai/sdk` + `openai`,+2 devDeps,用户选 D)按 model 前缀推(claude|opus|sonnet|haiku → anthropic;gpt|o1|o3 → openai),统一 `completeJson({system, user, maxTokens})`;`lib/prd-parser.cjs` Test Double 注入;`orchestrator/planner/prd-prompt.cjs` 模板;`task.parse_prd` input 加 `dry_run`(默认 false)实现 human-gate preview→approve;server.cjs dispatchTool 改 async。(8A.2) `lib/topo.cjs` Kahn + Tarjan SCC — 外部 dep 视已满足;有环返 CYCLE_DETECTED + `err.details.cycles`;errorResponse 扩展 optional `details`。(8A.3) `lib/task-expander.cjs` LLM prompt(sub_count 默认 3)→ 原子 tx(createTask children with parent_id + patchTask parent.status='expanded' → 自动 emit task_expanded);server 前置 parent 检查避免无谓 LLM client 构造。(8A.4a) `orchestrator/planner/plan-builder.cjs` Functional Core;`listWaveConflicts` pair-wise files_modified 交集;parallel wave 取 max(complexity),serial sum;cost 用 `pricing.computeCost`。(8A.4b) `lib/plan-store.cjs` `writeAtomic` 原子落 `.ultra/execution-plan.json`;`loadPlanArtifact` corrupt→null;`selectSection` 投影 tasks/topo/conflicts/all;emit plan_approved。(8A.5) `skills/ultra-plan` PRD Direct workflow — dry_run=true parse → buildPlan → ask.question → approve 走 dry_run=false + plan.export / reject 0 写入;frontmatter mcp_tools_required +5 tool。**spec 扩展**:task.create input 加 `files_modified` + `parent_id`;task.parse_prd input 加 `dry_run`。D46 基线 270 → **361 tests 全绿**(+91:state +71 / orch +20 / spec +5);0 回归 | v0.3 planner 里程碑就绪;execution-plan.json 是 Phase 8B 的权威输入;dry_run 是 human-gate 最小扩展 |
|
|
1641
1638
|
| **D48** | **2026-04-18** | **Phase 8B 完成 — executor 线就绪,v0.3 coding 工厂可用** — (8B.0) schema 不动(tasks.files_modified/session_id/parent_id 齐备);events 新增 5 type(wave_started / wave_completed / plan_completed / merged_back / merge_conflict),利用 events.type 无 CHECK 约束向后兼容。(8B.1) `orchestrator/dispatch-rules.cjs` 声明式规则数组(GSD-2 模式):`evaluate(ctx, rules)` 按 priority 取首个 match 返 `{rule_id, action, runtime}`;3 action(`spawn_agent`/`defer`/`block`);6 DEFAULT_RULES(breaker-blocked / deps-not-ready / no-runtimes / wave-conflict / by-preference / fallback-first-available);ROUTE_PREFERENCES 从 daemon.cjs 移过来;daemon.routeTask 改为 `evaluate` 的 thin wrapper,Phase 5.4 daemon 6 routeTask 测试 0 回归。(8B.2) `orchestrator/parallel-orchestrator.cjs` 读 plan waves → wave.parallel=true 批 `Promise.all` / parallel=false await 串行;前置 dispatch-rules.evaluate;`STATUS_TRANSITIONS` 约束要求 spawn 后 patchTask(in_progress),exit 后 patchTask(completed|pending);失败 task 不短路同 wave 其他任务;`finalizeSession` 调 `closeSession` 统一 session+worktree+可选 autoMerge 生命周期;runPlan 加 `autoMerge`/`mergeBaseBranch` opt-in(默认关,Phase 4/5/6/7/8A 0 回归)。(8B.3) `orchestrator/worktree-manager.cjs` N 并发 git worktree 注册簿:allocate/release/listActive/releaseAll;`listActive` 用 `git worktree list --porcelain` + realpath 规范化(macOS `/var`↔`/private/var` 符号链接坑)+ `.ultra/worktrees/` 域过滤;`releaseAll` 兼作崩溃恢复(git-tracked 清理 + 文件系统孤儿 sweep);Node 单线程 execFileSync 天然序列化避免 `.git/config.lock` 竞争。(8B.4) `orchestrator/auto-merge.cjs` — autoMerge 三出口(no_changes / merged_back / merge_conflict);冲突路径用 `git diff --name-only --diff-filter=U` 在 abort 之前收集;closeSession 加 `autoMerge`/`mergeBaseBranch` opt-in,conflict 时强制 `remove_worktree=false` 保留 worktree 给人。(8B.5 gate) `orchestrator/tests/phase-8b-gate.test.cjs` 三条 gate 全过:10-task PRD 端到端完成率 100%(要求 ≥80%);5 slice 压力 0 git lock 错误;merge 冲突正确识别 + conflict_paths 准确。**总计 +36 tests**(dispatch-rules +12 / worktree-manager +8 / parallel-orchestrator +7 / auto-merge +6 / gate +3),D47 基线 361 → **397 tests 全绿**(state 182 / orch 103 / spec 6 / rest 106),0 回归 | **v0.3 = 自动化 coding 工厂**:8A plan → 8B 执行 → 冲突人审 全链打通;autoMerge 默认关保留手动控制;worktree 全生命周期可观测可恢复 |
|
|
1642
1639
|
| **D50** | **2026-07-15** | **重划插件与记忆边界**:Claude Code、Codex、OpenCode 改为各自 native plugin;只打包 10 个 Ultra 公共 workflow、4 个 agent-only 规则 skill 与宿主专属 collab companion;删除 6 个外部 skill、recall、Impeccable 残留、Ultra memory MCP/store/wrapper/capture hooks;持久记忆由独立 cloud-mem/claude-mem 负责;用户 handbook 通过可预览、可备份的 managed block 显式同步 | 用户确认最终方案;运行时 allowlist、conformance、hook 与 handbook 回归测试共同锁定边界 |
|
|
1640
|
+
| **D51** | **2026-07-17** | **runtime 收敛为 Claude Code、OpenCode、Codex**:删除第四 runtime 的 adapter、安装参数、collab skill、prompt、schema、pricing、调度与测试面;`ultra-verify` 改为当前宿主主责加单一只读外部顾问 | 用户确认不再需要第四 runtime;0.6.0 退役契约阻止其重新进入活跃源码或发布包 |
|
|
1641
|
+
| **D52** | **2026-07-17** | **初始交付后进入持续变更闭环**:新增 `ultra-change` / `ultra-doctor`、change/context/artifact/trace/incident/projection/consumer 状态、delta-first spec、确定性 convergence 与 baseline reconciliation;删除内置 code-graph watcher 和通用命令代理,Memory/图谱只保留外部 provider 元数据引用 | 用户确认采用最佳组合落地;解决日常小改导致 spec/context 漂移、投影失败静默和异常无恢复证据的问题 |
|
|
1643
1642
|
|
|
1644
1643
|
---
|
|
1645
1644
|
|
|
@@ -1651,8 +1650,8 @@ Week 18 buffer(ship 中任何 Phase 的 25% 滑动吃掉)
|
|
|
1651
1650
|
- **activity-log**:**state.db `events` 表**(v0.3 起不再是文件);append-
|
|
1652
1651
|
only 事件流;Phase 2 建立,全程消费;`.ultra/activity-log.json` 是可选
|
|
1653
1652
|
只读导出。
|
|
1654
|
-
- **AGENTS.md**:各 runtime 原生的项目上下文文件(Claude
|
|
1655
|
-
|
|
1653
|
+
- **AGENTS.md**:各 runtime 原生的项目上下文文件(Claude 使用 CLAUDE.md);
|
|
1654
|
+
Phase 3.7 统一注入。
|
|
1656
1655
|
- **DISPATCH_RULES**:GSD-2 的声明式分派规则表,Phase 8B 移植。
|
|
1657
1656
|
- **Execution-lite**:v0.1 发布的最小执行层 = session 标准单元 + admission
|
|
1658
1657
|
+ event subscribe + 活跃会话可见;Phase 4.5 / D19。
|
|
@@ -1663,9 +1662,9 @@ Week 18 buffer(ship 中任何 Phase 的 25% 滑动吃掉)
|
|
|
1663
1662
|
- **规则层 / 执行层**:§4.2;Phase 1-4 / Phase 4.5-8。
|
|
1664
1663
|
- **Session**:GSD-2 模式升级版(D20):新进程 + 独立 worktree + lease/
|
|
1665
1664
|
heartbeat(存 sessions 表) + artifact dir;Phase 4.5 实装。
|
|
1666
|
-
- **state.db**:`.ultra/state.db` SQLite + WAL
|
|
1667
|
-
|
|
1668
|
-
|
|
1665
|
+
- **state.db**:`.ultra/state.db` SQLite + WAL 数据库,所有 Ultra workflow
|
|
1666
|
+
状态的权威源;当前 15 表,新增 changes/artifacts/context_snapshots/
|
|
1667
|
+
trace_links/incidents/projection_jobs/event_consumers;Phase 2 建立,D52 扩展。
|
|
1669
1668
|
- **三层架构**:§4.1;skill(知识,只读发现)+ MCP(状态操作主路径)+
|
|
1670
1669
|
CLI(兜底)。
|
|
1671
1670
|
- **staleness**:task 的 spec 被改后,未开工的 pending task 自动标记
|