@haiyangbg/buildbeat 2.0.1 → 3.0.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/CHANGELOG.md +24 -301
- package/README.en.md +6 -19
- package/README.md +6 -19
- package/SKILL.md +168 -219
- package/bin/buildbeat.js +14 -2
- package/docs/CAPABILITY-MATRIX.md +13 -55
- package/docs/README.md +14 -14
- package/docs/RELEASING.md +8 -9
- package/docs/v2/RFC-0001-product-definition.md +2 -0
- package/docs/v2/RFC-0003-workflow-policy.md +2 -0
- package/docs/v2/guide/00-how-to-talk.md +3 -3
- package/docs/v2/guide/01-quickstart.md +12 -12
- package/docs/v2/guide/03-policy-guide.md +1 -1
- package/docs/v2/guide/06-evidence-guide.md +3 -3
- package/docs/v2/guide/07-approval-guide.md +10 -10
- package/docs/v2/guide/10-recovery.md +6 -6
- package/docs/v2/guide/11-session-handoff.en.md +2 -2
- package/docs/v2/guide/11-session-handoff.md +2 -2
- package/docs/v2/guide/README.md +0 -6
- package/lessons.md +52 -71
- package/package.json +16 -8
- package/src/v2/cli/run.js +33 -23
- package/src/v2/engine/risk-preset.js +1 -1
- package/src/v2/runtime/notify.js +5 -5
- package/src/v2/runtime/overview.js +7 -7
- package/templates/ARCHITECTURE.md +1 -1
- package/templates/contracts/PROTOCOL.md +2 -10
- package/templates/gitignore.template +0 -3
- package/templates/pm/adr/README.md +1 -1
- package/templates/pm/decisions.md +4 -5
- package/templates/standards/CODE.md +1 -1
- package/templates/standards/DESIGN.md +1 -1
- package/templates/standards/REVIEW.md +2 -2
- package/templates/standards/STACK.md +2 -8
- package/templates/v2/AGENTS.md +18 -18
- package/templates/v2/BUILDBEAT.md +2 -3
- package/templates/v2/CLAUDE.md +1 -1
- package/templates/v2/run-config.example.yaml +1 -1
- package/templates/v2//346/214/207/346/214/245/345/217/260.md +6 -6
- package/bin/buildbeat-v2.js +0 -18
- package/bin/solobaton.js +0 -6
- package/docs/BuildBeat v2/357/274/232AI /345/216/237/347/224/237/350/275/257/344/273/266/344/272/244/344/273/230/346/216/247/345/210/266/345/271/263/351/235/242.md" +0 -2053
- package/docs/CHECKS.md +0 -326
- package/docs/CLI-PILOT-2026-08-23.md +0 -25
- package/docs/CLI-STRATEGY-2026-08.md +0 -55
- package/docs/CLI.md +0 -244
- package/docs/EXECUTION-PLAN.md +0 -487
- package/docs/LEGACY-V1.16-MIGRATION.md +0 -54
- package/docs/PHASE1-PILOT-2026-08-24.md +0 -32
- package/docs/PHASE2-BUILDBEAT-PILOT-2026-08-25.md +0 -75
- package/docs/PHASE2-PILOT-2026-08-25.md +0 -88
- package/docs/PHASE2-PILOT-PREFLIGHT-2026-08-25.md +0 -42
- package/docs/PHASE4-STABILITY-AUDIT-2026-08-25.md +0 -35
- package/docs/PHASE4-V1.20-PILOT-2026-08-25.md +0 -56
- package/docs/ROADMAP.md +0 -875
- package/docs/V1.21-RELEASE-EVIDENCE-2026-08-25.md +0 -55
- package/docs/V2-D2-DECISION-CARD.md +0 -37
- package/docs/V2-DECISIONS.md +0 -11
- package/docs/V2-ITERATION-01.md +0 -60
- package/docs/V2-ITERATION-02.md +0 -32
- package/docs/V2-ITERATION-03.md +0 -30
- package/docs/V2-ITERATION-04.md +0 -29
- package/docs/V2-ITERATION-05.md +0 -20
- package/docs/V2-ITERATION-06.md +0 -18
- package/docs/V2-ITERATION-07.md +0 -36
- package/docs/V2-ITERATION-08.md +0 -62
- package/docs/V2-PLAN.md +0 -335
- package/docs/V2-PROPOSAL.md +0 -319
- package/docs/V2.0.0-BETA.1-RELEASE-EVIDENCE-2026-08-28.md +0 -41
- package/docs/V2.0.0-BETA.2-RELEASE-EVIDENCE-2026-08-28.md +0 -8
- package/docs/V2.0.0-BETA.3-RELEASE-EVIDENCE-2026-09-01.md +0 -8
- package/docs/V2.0.0-BETA.4-RELEASE-EVIDENCE-2026-09-03.md +0 -9
- package/docs/V2.0.0-BETA.5-RELEASE-EVIDENCE-2026-09-05.md +0 -10
- package/docs/V2.0.0-RELEASE-EVIDENCE-2026-09-05.md +0 -11
- package/docs/WP4.3-RELEASE-EVIDENCE-2026-08-25.md +0 -73
- package/docs/v2/M1-ACCEPTANCE-2026-08-28.md +0 -38
- package/docs/v2/M2-DOD-2026-08-28.md +0 -34
- package/docs/v2/M4-EXTERNAL-PILOT-2026-08-28.md +0 -46
- package/docs/v2/M4-PILOT-APP-2026-08-28.md +0 -44
- package/docs/v2/M4-SELFHOST-2026-08-28.md +0 -53
- package/docs/v2/guide/08-migration-v1.md +0 -72
- package/example/.buildbeat/manifest.json +0 -45
- package/example/AGENTS.md +0 -19
- package/example/ARCHITECTURE.md +0 -39
- package/example/BUILDBEAT.md +0 -17
- package/example/CLAUDE.md +0 -7
- package/example/README.md +0 -75
- package/example/contracts/PROTOCOL.md +0 -38
- package/example/pm/NOW.md +0 -22
- package/example/pm/adr/ADR-0001-local-first-sqlite.md +0 -25
- package/example/pm/adr/README.md +0 -7
- package/example/pm/archive//344/270/200/346/234/237/evidence/gate1.md +0 -5
- package/example/pm/archive//344/270/200/346/234/237/evidence/gate2.md +0 -5
- package/example/pm/archive//344/270/200/346/234/237/evidence/gate3.md +0 -5
- package/example/pm/archive//344/270/200/346/234/237/evidence/gate4.md +0 -5
- package/example/pm/archive//344/270/200/346/234/237/evidence/implementation.md +0 -5
- package/example/pm/decisions.md +0 -20
- package/example/pm/status//344/272/247/345/223/201.md +0 -20
- package/example/pm/status//345/205/250/346/240/210.md +0 -15
- package/example/pm/status//346/265/213/350/257/225.md +0 -15
- package/example/pm//344/270/200/346/234/237-/347/234/213/346/235/277.md +0 -97
- package/example/standards/CODE.md +0 -18
- package/example/standards/DESIGN.md +0 -34
- package/example/standards/REVIEW.md +0 -16
- package/example/standards/STACK.md +0 -31
- package/src/cli.js +0 -323
- package/src/constants.js +0 -202
- package/src/doctor.js +0 -267
- package/src/planner.js +0 -251
- package/src/project.js +0 -844
- package/src/upgrader.js +0 -1249
- package/src/v2/presets/risk/legacy-four-gates.yaml +0 -44
- package/src/writer.js +0 -534
- package/templates/.claude/agents/reviewer.md +0 -62
- package/templates/AGENTS.md +0 -85
- package/templates/BUILDBEAT.md +0 -13
- package/templates/CLAUDE.md +0 -7
- package/templates/pm/NOW.md +0 -26
- package/templates/pm/changes/README.md +0 -44
- package/templates/pm/status/README.md +0 -32
- package/templates/pm//345/275/223/346/234/237/347/234/213/346/235/277.md +0 -62
- package/templates/scripts/bus-check.sh +0 -1875
- package/templates/scripts/design-preview.sh +0 -44
- package/templates/scripts/drift-check.sh +0 -112
- package/templates/scripts/pre-commit.sh +0 -74
- package/templates/scripts/verify-status.sh +0 -105
- package/templates//346/214/207/346/214/245/345/217/260.md +0 -58
|
@@ -1,2053 +0,0 @@
|
|
|
1
|
-
# BuildBeat v2:AI 原生软件交付控制平面
|
|
2
|
-
## 产品规划与落地计划书
|
|
3
|
-
|
|
4
|
-
**文档状态:** 已被 [`V2-PLAN.md`](V2-PLAN.md) 合并取代;仅作为报告 B 的运行时设计输入,不再单独执行,冲突以 `V2-PLAN.md` 为准
|
|
5
|
-
**编制日期:** 2026 年 8 月 27 日
|
|
6
|
-
**规划对象:** BuildBeat v2
|
|
7
|
-
**核心前提:** 不以 BuildBeat v1 的定位、固定 Gate、文件结构、角色模型和 CLI 边界为约束;从目标、核心模型和运行架构重新设计。本文的 Kernel-first 顺序、无 Spec 默认流、v1 Importer 等主张已被终版裁决改写,不得绕过 `V2-PLAN.md` 直接执行。
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# 1. 一页结论
|
|
12
|
-
|
|
13
|
-
BuildBeat v2 不再被定义为“多 AI 会话之间的文件协作协议与脚手架”,而应升级为:
|
|
14
|
-
|
|
15
|
-
> **一个 AI 原生软件交付控制平面。它通过版本化工件、策略化 Gate、可恢复 Agent Loop 和可验证证据,持续推动工作从意图走向交付,并只在需要人类判断时暂停。**
|
|
16
|
-
|
|
17
|
-
其核心运行目标是:
|
|
18
|
-
|
|
19
|
-
```text
|
|
20
|
-
人提出或批准目标
|
|
21
|
-
↓
|
|
22
|
-
BuildBeat 自动规划、执行、验证、修复和审查
|
|
23
|
-
↓
|
|
24
|
-
证据不足则继续 Loop
|
|
25
|
-
风险或权限超出策略则暂停
|
|
26
|
-
↓
|
|
27
|
-
最终停在人类必须作出的决定前
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
MVP 首先实现:
|
|
31
|
-
|
|
32
|
-
```text
|
|
33
|
-
Plan
|
|
34
|
-
↓
|
|
35
|
-
Build
|
|
36
|
-
↓
|
|
37
|
-
Verify ──失败──→ Fix ──→ Verify
|
|
38
|
-
↓通过
|
|
39
|
-
Independent Review
|
|
40
|
-
↓发现问题
|
|
41
|
-
Fix ──→ Verify ──→ Review
|
|
42
|
-
↓通过
|
|
43
|
-
WAIT_HUMAN:等待合并决定
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
BuildBeat v2 的完整产品构成变为:
|
|
47
|
-
|
|
48
|
-
```text
|
|
49
|
-
BuildBeat Protocol
|
|
50
|
-
+ Deterministic Kernel
|
|
51
|
-
+ Workflow / Policy Engine
|
|
52
|
-
+ Agent Runner
|
|
53
|
-
+ Tool Adapters
|
|
54
|
-
+ Evidence & Event Ledger
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
v1 不再继续扩展成 v2,而是进入维护线;v2 使用新的核心模型、配置格式和运行时。
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
# 2. 为什么不能继续在 v1 上增加功能
|
|
62
|
-
|
|
63
|
-
## 2.1 当前 BuildBeat 的真实形态
|
|
64
|
-
|
|
65
|
-
当前 BuildBeat 将自身定义为 file-first、human-gated 的工程交付协议与脚手架,并明确不负责创建 Agent、管理模型或提供运行时编排。
|
|
66
|
-
|
|
67
|
-
当前 CLI 的主要职责是:
|
|
68
|
-
|
|
69
|
-
```text
|
|
70
|
-
doctor
|
|
71
|
-
init
|
|
72
|
-
adopt
|
|
73
|
-
upgrade
|
|
74
|
-
version
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Gate、状态、证据、ADR 和规范工作流由 Skill、项目文件和脚本维护,CLI 不承担这些运行职责。
|
|
78
|
-
|
|
79
|
-
当前项目还将以下概念固化进核心协议:
|
|
80
|
-
|
|
81
|
-
- `NOW → 看板 → contracts → status/evidence`;
|
|
82
|
-
- 产品、全栈、测试三个 AI 视角;
|
|
83
|
-
- Gate1 需求、Gate2 设计、Gate3 合并、Gate4 上线;
|
|
84
|
-
- `pm/status/{视角}.md` 状态分写;
|
|
85
|
-
- review-ready 后调用一个独立 reviewer。
|
|
86
|
-
|
|
87
|
-
四个 Gate 目前是看板中的固定机器令牌。
|
|
88
|
-
Reviewer 已经具有独立上下文、固定 candidate、只读检查、closure 等合理机制,但它仍是主会话手动触发的单个 Subagent,不构成完整自动 Loop。
|
|
89
|
-
|
|
90
|
-
## 2.2 当前架构无法自然承载的能力
|
|
91
|
-
|
|
92
|
-
在现有结构上继续增加自动 Loop,会遇到以下根本冲突:
|
|
93
|
-
|
|
94
|
-
| v1 设计 | v2 自动运行需要 |
|
|
95
|
-
|---|---|
|
|
96
|
-
| CLI 是可选增强 | Runner 是自动 Loop 的必要组件 |
|
|
97
|
-
| 所有关键状态尽量进 Git | 高频运行状态、锁、重试和会话信息需要运行时存储 |
|
|
98
|
-
| Gate 是四个阶段令牌 | Gate 应附着在任意状态转换和危险动作上 |
|
|
99
|
-
| 产品/全栈/测试是默认视角 | Worker 应按能力和任务动态组合 |
|
|
100
|
-
| 人负责打开和接续会话 | 系统应自动调度下一 Worker |
|
|
101
|
-
| `status` 记录当前进展 | 当前状态应由事件和状态机派生 |
|
|
102
|
-
| reviewer 只在末期启动 | 构建、测试、修复、验证需要持续自动循环 |
|
|
103
|
-
| Skill-only 能力不能弱于 CLI | 自动运行能力无法在没有 Runtime 的情况下等价存在 |
|
|
104
|
-
|
|
105
|
-
因此,v2 不是在 v1 上增加几个命令或 Subagent,而是重建产品核心。
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
# 3. 新产品定位
|
|
110
|
-
|
|
111
|
-
## 3.1 产品定义
|
|
112
|
-
|
|
113
|
-
> **BuildBeat 是一个模型与工具无关的 AI 原生软件交付控制平面。它读取工作目标和项目策略,调用外部 Agent 或工程工具执行任务,根据证据和 Policy 推进状态,并在风险、权限或判断超出自动化边界时升级给人。**
|
|
114
|
-
|
|
115
|
-
## 3.2 核心输入与输出
|
|
116
|
-
|
|
117
|
-
### 输入
|
|
118
|
-
|
|
119
|
-
```text
|
|
120
|
-
项目仓库
|
|
121
|
-
工作目标
|
|
122
|
-
项目规则与约束
|
|
123
|
-
Workflow
|
|
124
|
-
Policy
|
|
125
|
-
可用 Worker / Adapter
|
|
126
|
-
预算和权限
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### 输出
|
|
130
|
-
|
|
131
|
-
```text
|
|
132
|
-
可审查的交付候选
|
|
133
|
-
版本化工件
|
|
134
|
-
测试和验证证据
|
|
135
|
-
完整事件记录
|
|
136
|
-
需要人类处理的最小决策
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
## 3.3 目标用户
|
|
140
|
-
|
|
141
|
-
第一阶段面向:
|
|
142
|
-
|
|
143
|
-
- 使用 Claude Code、Codex、Cursor 等 AI Coding 工具的个人开发者;
|
|
144
|
-
- 一个开发者同时运行多个 AI Worker 的场景;
|
|
145
|
-
- 希望将 Build、Verify、Fix、Review 连成自动闭环的项目;
|
|
146
|
-
- 需要保留人类合并和发布权,但不希望人工调度每一个 AI 会话的团队。
|
|
147
|
-
|
|
148
|
-
后续可扩展到:
|
|
149
|
-
|
|
150
|
-
- 多人共享的远程 Runner;
|
|
151
|
-
- GitHub PR / CI 驱动交付;
|
|
152
|
-
- 多仓库和多部署单元;
|
|
153
|
-
- 生产异常到修复 PR 的自动闭环。
|
|
154
|
-
|
|
155
|
-
## 3.4 v2 的核心价值
|
|
156
|
-
|
|
157
|
-
1. **人不再充当 Agent 调度器。**
|
|
158
|
-
2. **Agent 不能用自然语言声明替代实际完成证据。**
|
|
159
|
-
3. **低风险步骤自动循环,高风险步骤才请求人类。**
|
|
160
|
-
4. **每次执行可以暂停、恢复、追踪和审计。**
|
|
161
|
-
5. **更换模型或 AI 工具不改变工作协议。**
|
|
162
|
-
6. **审批绑定精确工件和 candidate,不会因后续修改而继续有效。**
|
|
163
|
-
|
|
164
|
-
---
|
|
165
|
-
|
|
166
|
-
# 4. 产品边界
|
|
167
|
-
|
|
168
|
-
## 4.1 v2 要做
|
|
169
|
-
|
|
170
|
-
- 定义和运行软件交付 Workflow;
|
|
171
|
-
- 调度 Planner、Builder、Fixer、Verifier、Reviewer 等 Worker;
|
|
172
|
-
- 管理 Agent Loop;
|
|
173
|
-
- 建立状态机和事件日志;
|
|
174
|
-
- 管理 worktree、分支、candidate 和写入边界;
|
|
175
|
-
- 收集实际测试、命令、截图和审查证据;
|
|
176
|
-
- 根据 Policy 自动推进、重试、路由或暂停;
|
|
177
|
-
- 支持人类批准、拒绝、修改和恢复;
|
|
178
|
-
- 提供不同 AI 工具的 Adapter;
|
|
179
|
-
- 提供本地优先的完整运行能力。
|
|
180
|
-
|
|
181
|
-
## 4.2 MVP 暂不做
|
|
182
|
-
|
|
183
|
-
- 自动合并 PR;
|
|
184
|
-
- 自动生产部署;
|
|
185
|
-
- 自动接受安全或合规风险;
|
|
186
|
-
- 多人账号、RBAC、SSO;
|
|
187
|
-
- Web 管理后台;
|
|
188
|
-
- 远程多节点调度;
|
|
189
|
-
- 自研大模型或模型路由平台;
|
|
190
|
-
- Agent Marketplace;
|
|
191
|
-
- 多项目效能排行榜;
|
|
192
|
-
- 无限自主运行;
|
|
193
|
-
- 完整的生产 Incident 自动修复;
|
|
194
|
-
- 多仓事务式原子提交。
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
# 5. 核心设计原则
|
|
199
|
-
|
|
200
|
-
## 5.1 Kernel 决策,Worker 执行
|
|
201
|
-
|
|
202
|
-
BuildBeat Kernel 负责:
|
|
203
|
-
|
|
204
|
-
```text
|
|
205
|
-
状态
|
|
206
|
-
Workflow
|
|
207
|
-
Policy
|
|
208
|
-
权限
|
|
209
|
-
调度
|
|
210
|
-
重试
|
|
211
|
-
预算
|
|
212
|
-
证据要求
|
|
213
|
-
事件记录
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
Worker 负责:
|
|
217
|
-
|
|
218
|
-
```text
|
|
219
|
-
计划
|
|
220
|
-
编码
|
|
221
|
-
修复
|
|
222
|
-
验证
|
|
223
|
-
审查
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
Worker 可以提出建议,但不能自行决定是否进入下一状态。
|
|
227
|
-
|
|
228
|
-
---
|
|
229
|
-
|
|
230
|
-
## 5.2 Artifact-first,而不是 Status-first
|
|
231
|
-
|
|
232
|
-
系统不再围绕“某个会话做到哪一步”工作,而是围绕版本化工件工作:
|
|
233
|
-
|
|
234
|
-
```text
|
|
235
|
-
Intent
|
|
236
|
-
Spec
|
|
237
|
-
Plan
|
|
238
|
-
Patch / Candidate
|
|
239
|
-
Evidence
|
|
240
|
-
Review Findings
|
|
241
|
-
Decision
|
|
242
|
-
Release Record
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
下一个 Worker 只依赖被接受的工件,不依赖上一个聊天窗口。
|
|
246
|
-
|
|
247
|
-
---
|
|
248
|
-
|
|
249
|
-
## 5.3 Gate 是 Policy 结果,不是固定阶段
|
|
250
|
-
|
|
251
|
-
不再将 Gate1–Gate4 写死在核心模型中。
|
|
252
|
-
|
|
253
|
-
Gate 是:
|
|
254
|
-
|
|
255
|
-
> **针对某一次状态转换或危险动作执行的一组 Policy。**
|
|
256
|
-
|
|
257
|
-
例如:
|
|
258
|
-
|
|
259
|
-
```text
|
|
260
|
-
plan → build
|
|
261
|
-
verify → review
|
|
262
|
-
review → ready-to-merge
|
|
263
|
-
staging → production
|
|
264
|
-
incident → rollback
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## 5.4 人类是升级目标,不是默认调度器
|
|
270
|
-
|
|
271
|
-
系统应尽量自动推进,只在以下情况暂停:
|
|
272
|
-
|
|
273
|
-
- 产品或方案存在真实取舍;
|
|
274
|
-
- 修改超出已批准范围;
|
|
275
|
-
- 需要接受安全或合规风险;
|
|
276
|
-
- 涉及合并、发布或不可逆外部动作;
|
|
277
|
-
- 证据不足;
|
|
278
|
-
- 多次重试仍无进展;
|
|
279
|
-
- 权威事实冲突;
|
|
280
|
-
- 预算或权限不足。
|
|
281
|
-
|
|
282
|
-
---
|
|
283
|
-
|
|
284
|
-
## 5.5 验证结果必须来自实际执行
|
|
285
|
-
|
|
286
|
-
测试是否通过,应由 Runner 记录真实命令结果,而不是相信 Worker 的描述。
|
|
287
|
-
|
|
288
|
-
同理:
|
|
289
|
-
|
|
290
|
-
- candidate 由 Git 回读;
|
|
291
|
-
- 工作树状态由 Git 回读;
|
|
292
|
-
- 测试结果由进程退出码和报告回读;
|
|
293
|
-
- 截图由实际渲染生成;
|
|
294
|
-
- Approval 绑定工件摘要;
|
|
295
|
-
- 外部状态无法回读时必须标记 `UNVERIFIED`。
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
## 5.6 运行必须可恢复
|
|
300
|
-
|
|
301
|
-
任何 Run 都必须能够:
|
|
302
|
-
|
|
303
|
-
```text
|
|
304
|
-
暂停
|
|
305
|
-
进程异常退出
|
|
306
|
-
重新启动 BuildBeat
|
|
307
|
-
读取事件记录
|
|
308
|
-
恢复到最近一个安全状态
|
|
309
|
-
继续执行
|
|
310
|
-
```
|
|
311
|
-
|
|
312
|
-
不能依赖某个 AI 会话仍然存在。
|
|
313
|
-
|
|
314
|
-
---
|
|
315
|
-
|
|
316
|
-
## 5.7 自动化必须有上限
|
|
317
|
-
|
|
318
|
-
所有 Loop 都必须具有:
|
|
319
|
-
|
|
320
|
-
```text
|
|
321
|
-
最大尝试次数
|
|
322
|
-
最大运行时间
|
|
323
|
-
最大成本或 Token 预算
|
|
324
|
-
连续相同失败检测
|
|
325
|
-
无进展检测
|
|
326
|
-
范围漂移检测
|
|
327
|
-
人类升级条件
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
---
|
|
331
|
-
|
|
332
|
-
## 5.8 本地优先,远程可扩展
|
|
333
|
-
|
|
334
|
-
MVP 先实现本地前台 Runner,但核心接口必须允许后续接入:
|
|
335
|
-
|
|
336
|
-
- GitHub Actions;
|
|
337
|
-
- 自托管 Runner;
|
|
338
|
-
- 远程事件存储;
|
|
339
|
-
- 团队共享控制面;
|
|
340
|
-
- Web UI。
|
|
341
|
-
|
|
342
|
-
---
|
|
343
|
-
|
|
344
|
-
# 6. 新核心模型
|
|
345
|
-
|
|
346
|
-
## 6.1 核心实体
|
|
347
|
-
|
|
348
|
-
| 实体 | 定义 |
|
|
349
|
-
|---|---|
|
|
350
|
-
| **Project** | 项目配置、仓库、Workflow、Policy 和 Adapter 集合 |
|
|
351
|
-
| **Work** | 一个要达成的用户级结果,生命周期可跨多个 Run |
|
|
352
|
-
| **Run** | 对一个 Work 的一次具体执行,可失败、重试或被替代 |
|
|
353
|
-
| **Workflow** | Step、Transition 和默认执行顺序的声明 |
|
|
354
|
-
| **Step** | 一次可调度执行单元,例如 plan、build、verify |
|
|
355
|
-
| **Worker** | 具有某种能力的逻辑执行者,例如 builder、reviewer |
|
|
356
|
-
| **Adapter** | 将 Worker 映射到 Claude、Codex、Shell 或其他执行环境 |
|
|
357
|
-
| **Artifact** | Worker 产生或消费的版本化工件 |
|
|
358
|
-
| **Evidence** | 对某个声明进行证明的机器或人工证据 |
|
|
359
|
-
| **Policy** | 判断某次转换或动作是否允许的规则 |
|
|
360
|
-
| **Decision** | 人类对精确工件或状态转换作出的决定 |
|
|
361
|
-
| **Event** | Run 中发生的不可变事实记录 |
|
|
362
|
-
| **Workspace** | 某个 Worker 实际工作的隔离目录、分支或 worktree |
|
|
363
|
-
|
|
364
|
-
---
|
|
365
|
-
|
|
366
|
-
## 6.2 Work 与 Run 的区别
|
|
367
|
-
|
|
368
|
-
### Work
|
|
369
|
-
|
|
370
|
-
表示长期目标:
|
|
371
|
-
|
|
372
|
-
```text
|
|
373
|
-
修复支付回调重复入账
|
|
374
|
-
增加订单导出功能
|
|
375
|
-
迁移鉴权服务
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
### Run
|
|
379
|
-
|
|
380
|
-
表示一次执行:
|
|
381
|
-
|
|
382
|
-
```text
|
|
383
|
-
RUN-001:第一次自动实现,验证失败
|
|
384
|
-
RUN-002:根据新计划重新执行
|
|
385
|
-
```
|
|
386
|
-
|
|
387
|
-
一个 Work 可以对应多个 Run,但只有一个最终 accepted candidate。
|
|
388
|
-
|
|
389
|
-
---
|
|
390
|
-
|
|
391
|
-
## 6.3 状态模型
|
|
392
|
-
|
|
393
|
-
### Work 状态
|
|
394
|
-
|
|
395
|
-
```text
|
|
396
|
-
OPEN
|
|
397
|
-
COMPLETED
|
|
398
|
-
CANCELLED
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
### Run 状态
|
|
402
|
-
|
|
403
|
-
```text
|
|
404
|
-
CREATED
|
|
405
|
-
QUEUED
|
|
406
|
-
RUNNING
|
|
407
|
-
WAITING_HUMAN
|
|
408
|
-
BLOCKED
|
|
409
|
-
SUCCEEDED
|
|
410
|
-
FAILED
|
|
411
|
-
CANCELLED
|
|
412
|
-
SUPERSEDED
|
|
413
|
-
```
|
|
414
|
-
|
|
415
|
-
### Step 状态
|
|
416
|
-
|
|
417
|
-
```text
|
|
418
|
-
PENDING
|
|
419
|
-
READY
|
|
420
|
-
RUNNING
|
|
421
|
-
SUCCEEDED
|
|
422
|
-
FAILED
|
|
423
|
-
SKIPPED
|
|
424
|
-
CANCELLED
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
核心状态机只识别通用运行状态;`plan`、`build`、`review` 等业务阶段由 Workflow 定义,不写死进 Kernel。
|
|
428
|
-
|
|
429
|
-
---
|
|
430
|
-
|
|
431
|
-
## 6.4 Gate 统一结果
|
|
432
|
-
|
|
433
|
-
```text
|
|
434
|
-
PASS
|
|
435
|
-
RETRY
|
|
436
|
-
ROUTE
|
|
437
|
-
WAIT_HUMAN
|
|
438
|
-
BLOCK
|
|
439
|
-
UNVERIFIED
|
|
440
|
-
```
|
|
441
|
-
|
|
442
|
-
| 结果 | 行为 |
|
|
443
|
-
|---|---|
|
|
444
|
-
| `PASS` | 进入下一 Step |
|
|
445
|
-
| `RETRY` | 重新运行当前 Step 或指定修复 Step |
|
|
446
|
-
| `ROUTE` | 转交给另一 Worker |
|
|
447
|
-
| `WAIT_HUMAN` | 持久化状态并暂停 |
|
|
448
|
-
| `BLOCK` | 确定性终止当前转换 |
|
|
449
|
-
| `UNVERIFIED` | 无法安全判断,按 Policy 升级、补证或暂停 |
|
|
450
|
-
|
|
451
|
-
`UNVERIFIED` 绝不能被隐式当成 `PASS`。
|
|
452
|
-
|
|
453
|
-
---
|
|
454
|
-
|
|
455
|
-
# 7. 总体架构
|
|
456
|
-
|
|
457
|
-
```mermaid
|
|
458
|
-
flowchart TB
|
|
459
|
-
Trigger["用户 / Git / CI / 外部事件"] --> API["CLI / API"]
|
|
460
|
-
|
|
461
|
-
API --> Orchestrator["Orchestrator<br/>Loop Controller"]
|
|
462
|
-
Orchestrator --> Workflow["Workflow Engine"]
|
|
463
|
-
Orchestrator --> Policy["Policy Engine"]
|
|
464
|
-
Orchestrator --> Scheduler["Scheduler"]
|
|
465
|
-
Orchestrator --> Store["Event Store + State Snapshot"]
|
|
466
|
-
|
|
467
|
-
Scheduler --> Runner["Worker Runner"]
|
|
468
|
-
Runner --> Adapter["Agent / Tool Adapter"]
|
|
469
|
-
Adapter --> Worker["Claude / Codex / Shell / Human Worker"]
|
|
470
|
-
|
|
471
|
-
Runner --> Workspace["Workspace Manager<br/>Git Branch / Worktree"]
|
|
472
|
-
Runner --> Evidence["Evidence Collector"]
|
|
473
|
-
Evidence --> Store
|
|
474
|
-
|
|
475
|
-
Policy --> Human["Human Decision"]
|
|
476
|
-
Human --> Orchestrator
|
|
477
|
-
|
|
478
|
-
Workspace --> Git["Git Repository / PR"]
|
|
479
|
-
Evidence --> Artifacts["Artifacts / Reports / Screenshots"]
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
---
|
|
483
|
-
|
|
484
|
-
## 7.1 Deterministic Kernel
|
|
485
|
-
|
|
486
|
-
Kernel 必须保持确定性,包含:
|
|
487
|
-
|
|
488
|
-
- Workflow 解析;
|
|
489
|
-
- 状态迁移;
|
|
490
|
-
- Policy 组合;
|
|
491
|
-
- Event reducer;
|
|
492
|
-
- Retry 和 Budget;
|
|
493
|
-
- 锁和并发控制;
|
|
494
|
-
- Approval 有效性;
|
|
495
|
-
- Candidate 身份;
|
|
496
|
-
- Evidence 完整性;
|
|
497
|
-
- Run 恢复。
|
|
498
|
-
|
|
499
|
-
Kernel 不解释自然语言,不自行做产品判断。
|
|
500
|
-
|
|
501
|
-
---
|
|
502
|
-
|
|
503
|
-
## 7.2 Orchestrator
|
|
504
|
-
|
|
505
|
-
Orchestrator 是自动 Loop 的控制器,负责:
|
|
506
|
-
|
|
507
|
-
1. 读取当前 Run 状态;
|
|
508
|
-
2. 找到下一个可运行 Step;
|
|
509
|
-
3. 运行前置 Policy;
|
|
510
|
-
4. 分配 Workspace;
|
|
511
|
-
5. 调用 Worker Runner;
|
|
512
|
-
6. 收集结果和证据;
|
|
513
|
-
7. 运行后置 Policy;
|
|
514
|
-
8. 决定转换、重试、路由或暂停;
|
|
515
|
-
9. 将全部事件写入 Ledger。
|
|
516
|
-
|
|
517
|
-
---
|
|
518
|
-
|
|
519
|
-
## 7.3 Worker Runner
|
|
520
|
-
|
|
521
|
-
Runner 负责执行 Worker:
|
|
522
|
-
|
|
523
|
-
- 准备上下文;
|
|
524
|
-
- 固定输入工件版本;
|
|
525
|
-
- 设置允许写入的路径;
|
|
526
|
-
- 设置预算、超时和环境变量;
|
|
527
|
-
- 启动 Adapter;
|
|
528
|
-
- 捕获标准输出、错误输出和退出状态;
|
|
529
|
-
- 收集 Worker 结果;
|
|
530
|
-
- 终止超时或越权执行。
|
|
531
|
-
|
|
532
|
-
---
|
|
533
|
-
|
|
534
|
-
## 7.4 Adapter
|
|
535
|
-
|
|
536
|
-
MVP 首先提供:
|
|
537
|
-
|
|
538
|
-
1. **Mock Adapter**
|
|
539
|
-
用于状态机、错误和恢复测试。
|
|
540
|
-
|
|
541
|
-
2. **Shell Adapter**
|
|
542
|
-
执行配置化命令,可接入任意支持 CLI 的 Agent 工具。
|
|
543
|
-
|
|
544
|
-
3. **Manual Adapter**
|
|
545
|
-
允许人或外部工具手动完成 Step,再由 BuildBeat 继续推进。
|
|
546
|
-
|
|
547
|
-
第一个专用 AI Adapter 在 Shell Loop 跑通后再选择,不提前绑定 Claude 或 Codex。
|
|
548
|
-
|
|
549
|
-
---
|
|
550
|
-
|
|
551
|
-
## 7.5 Workspace Manager
|
|
552
|
-
|
|
553
|
-
MVP 默认每个 Run 使用独立 worktree:
|
|
554
|
-
|
|
555
|
-
```text
|
|
556
|
-
.buildbeat/worktrees/<run-id>/
|
|
557
|
-
```
|
|
558
|
-
|
|
559
|
-
职责包括:
|
|
560
|
-
|
|
561
|
-
- 创建分支和 worktree;
|
|
562
|
-
- 检查基线 commit;
|
|
563
|
-
- 防止多个 Run 写同一 Workspace;
|
|
564
|
-
- 固定 candidate;
|
|
565
|
-
- 检测未提交修改;
|
|
566
|
-
- 回收失败 Workspace;
|
|
567
|
-
- 保留必要调试现场。
|
|
568
|
-
|
|
569
|
-
第一版只支持:
|
|
570
|
-
|
|
571
|
-
```text
|
|
572
|
-
一个 Project
|
|
573
|
-
一个 Repository
|
|
574
|
-
一个活动 Run
|
|
575
|
-
```
|
|
576
|
-
|
|
577
|
-
多仓和同项目多 Run 并发在后续阶段开放。
|
|
578
|
-
|
|
579
|
-
---
|
|
580
|
-
|
|
581
|
-
# 8. 默认软件交付 Workflow
|
|
582
|
-
|
|
583
|
-
核心引擎不写死阶段,但提供一个官方默认 Preset:
|
|
584
|
-
|
|
585
|
-
```mermaid
|
|
586
|
-
flowchart LR
|
|
587
|
-
I["Intent"] --> P["Plan"]
|
|
588
|
-
P --> PA{"Plan Policy"}
|
|
589
|
-
PA -->|PASS| B["Build"]
|
|
590
|
-
PA -->|WAIT_HUMAN| HP["等待 Plan 批准"]
|
|
591
|
-
|
|
592
|
-
HP --> B
|
|
593
|
-
B --> V["Verify"]
|
|
594
|
-
|
|
595
|
-
V -->|失败| F["Fix"]
|
|
596
|
-
F --> V
|
|
597
|
-
|
|
598
|
-
V -->|通过| R["Independent Review"]
|
|
599
|
-
R -->|P0/P1| F
|
|
600
|
-
R -->|通过| HM["等待合并决定"]
|
|
601
|
-
|
|
602
|
-
HM --> C["Complete / External Merge"]
|
|
603
|
-
```
|
|
604
|
-
|
|
605
|
-
## 8.1 默认执行规则
|
|
606
|
-
|
|
607
|
-
### Intent
|
|
608
|
-
|
|
609
|
-
明确:
|
|
610
|
-
|
|
611
|
-
- 为什么做;
|
|
612
|
-
- 目标;
|
|
613
|
-
- 非目标;
|
|
614
|
-
- 范围;
|
|
615
|
-
- 约束;
|
|
616
|
-
- 验收条件。
|
|
617
|
-
|
|
618
|
-
### Plan
|
|
619
|
-
|
|
620
|
-
明确:
|
|
621
|
-
|
|
622
|
-
- 修改范围;
|
|
623
|
-
- 实现顺序;
|
|
624
|
-
- 契约或数据变化;
|
|
625
|
-
- 风险;
|
|
626
|
-
- 测试方法;
|
|
627
|
-
- 回滚方式。
|
|
628
|
-
|
|
629
|
-
### Build
|
|
630
|
-
|
|
631
|
-
Builder 只能修改 Workflow 授权的 Workspace 和路径。
|
|
632
|
-
|
|
633
|
-
### Verify
|
|
634
|
-
|
|
635
|
-
确定性运行:
|
|
636
|
-
|
|
637
|
-
- build;
|
|
638
|
-
- lint;
|
|
639
|
-
- unit test;
|
|
640
|
-
- integration test;
|
|
641
|
-
- 项目声明的其他检查。
|
|
642
|
-
|
|
643
|
-
### Fix
|
|
644
|
-
|
|
645
|
-
Fixer 输入必须包括:
|
|
646
|
-
|
|
647
|
-
- 失败命令;
|
|
648
|
-
- 退出码;
|
|
649
|
-
- 日志摘要;
|
|
650
|
-
- candidate;
|
|
651
|
-
- 允许修改的范围。
|
|
652
|
-
|
|
653
|
-
### Independent Review
|
|
654
|
-
|
|
655
|
-
Reviewer:
|
|
656
|
-
|
|
657
|
-
- 使用 fresh context;
|
|
658
|
-
- 默认只读;
|
|
659
|
-
- 不允许修改代码;
|
|
660
|
-
- 对照 Intent、Plan、Diff 和 Evidence;
|
|
661
|
-
- 产生结构化 findings。
|
|
662
|
-
|
|
663
|
-
### Merge Decision
|
|
664
|
-
|
|
665
|
-
MVP 到此暂停,不自动合并。
|
|
666
|
-
|
|
667
|
-
---
|
|
668
|
-
|
|
669
|
-
# 9. 三种 Loop
|
|
670
|
-
|
|
671
|
-
## 9.1 Step 内反馈 Loop
|
|
672
|
-
|
|
673
|
-
```text
|
|
674
|
-
Worker 修改
|
|
675
|
-
→ 运行快速检查
|
|
676
|
-
→ 失败
|
|
677
|
-
→ Worker 继续修
|
|
678
|
-
```
|
|
679
|
-
|
|
680
|
-
由 Adapter 或 Worker 内部完成,但仍受预算和超时限制。
|
|
681
|
-
|
|
682
|
-
## 9.2 Workflow 交付 Loop
|
|
683
|
-
|
|
684
|
-
```text
|
|
685
|
-
Build
|
|
686
|
-
→ Verify
|
|
687
|
-
→ Fix
|
|
688
|
-
→ Verify
|
|
689
|
-
→ Review
|
|
690
|
-
→ Fix
|
|
691
|
-
→ Verify
|
|
692
|
-
→ Review
|
|
693
|
-
```
|
|
694
|
-
|
|
695
|
-
这是 v2 MVP 的重点,由 Orchestrator 控制。
|
|
696
|
-
|
|
697
|
-
## 9.3 生命周期 Loop
|
|
698
|
-
|
|
699
|
-
```text
|
|
700
|
-
生产异常
|
|
701
|
-
→ Intent
|
|
702
|
-
→ Plan
|
|
703
|
-
→ Build
|
|
704
|
-
→ Verify
|
|
705
|
-
→ Review
|
|
706
|
-
→ Release
|
|
707
|
-
→ 生产验证
|
|
708
|
-
```
|
|
709
|
-
|
|
710
|
-
该能力作为后续版本目标,不进入 MVP。
|
|
711
|
-
|
|
712
|
-
---
|
|
713
|
-
|
|
714
|
-
# 10. Loop 终止和升级条件
|
|
715
|
-
|
|
716
|
-
以下任一情况发生时,自动 Loop 必须停止:
|
|
717
|
-
|
|
718
|
-
| 条件 | 处理 |
|
|
719
|
-
|---|---|
|
|
720
|
-
| 达到最大修复次数 | `WAIT_HUMAN` |
|
|
721
|
-
| 连续两次出现相同失败指纹 | `WAIT_HUMAN` |
|
|
722
|
-
| Candidate 无实质变化 | 判定无进展 |
|
|
723
|
-
| Worker 修改超出 Scope | `BLOCK` |
|
|
724
|
-
| 计划需要改变 | 返回 Plan Step 或请求人类 |
|
|
725
|
-
| 发现新的高风险语义 | 路由安全 Reviewer 或人类 |
|
|
726
|
-
| Token、时间或费用超预算 | `WAIT_HUMAN` |
|
|
727
|
-
| Workspace 不干净或锁冲突 | `BLOCK` |
|
|
728
|
-
| 证据收集不完整 | `UNVERIFIED` |
|
|
729
|
-
| Adapter 不支持必要的强制能力 | 降级或阻断 |
|
|
730
|
-
| 人类拒绝继续 | `CANCELLED` |
|
|
731
|
-
|
|
732
|
-
建议 MVP 默认:
|
|
733
|
-
|
|
734
|
-
```text
|
|
735
|
-
build/fix 最大尝试:4
|
|
736
|
-
review 修复轮次:2
|
|
737
|
-
连续相同失败:2
|
|
738
|
-
单 Step 超时:项目配置
|
|
739
|
-
总 Run 预算:项目配置
|
|
740
|
-
```
|
|
741
|
-
|
|
742
|
-
---
|
|
743
|
-
|
|
744
|
-
# 11. Gate 与 Policy 重构
|
|
745
|
-
|
|
746
|
-
## 11.1 删除固定 Gate1–Gate4
|
|
747
|
-
|
|
748
|
-
固定四 Gate 不再属于核心协议。
|
|
749
|
-
|
|
750
|
-
它们可以作为迁移 Preset:
|
|
751
|
-
|
|
752
|
-
```text
|
|
753
|
-
legacy-four-gates
|
|
754
|
-
```
|
|
755
|
-
|
|
756
|
-
但新 Workflow 可以没有设计 Gate,也可以拥有安全、数据迁移、发布窗口等更多 Gate。
|
|
757
|
-
|
|
758
|
-
---
|
|
759
|
-
|
|
760
|
-
## 11.2 四类 Policy
|
|
761
|
-
|
|
762
|
-
### 前置 Policy
|
|
763
|
-
|
|
764
|
-
判断某 Step 是否可以启动:
|
|
765
|
-
|
|
766
|
-
```text
|
|
767
|
-
Plan 是否已接受
|
|
768
|
-
Workspace 是否干净
|
|
769
|
-
依赖工件是否齐全
|
|
770
|
-
预算是否充足
|
|
771
|
-
```
|
|
772
|
-
|
|
773
|
-
### 后置 Policy
|
|
774
|
-
|
|
775
|
-
判断 Step 是否真正完成:
|
|
776
|
-
|
|
777
|
-
```text
|
|
778
|
-
测试是否通过
|
|
779
|
-
Evidence 是否齐全
|
|
780
|
-
Artifact 是否产生
|
|
781
|
-
Candidate 是否固定
|
|
782
|
-
```
|
|
783
|
-
|
|
784
|
-
### 转换 Policy
|
|
785
|
-
|
|
786
|
-
决定下一状态:
|
|
787
|
-
|
|
788
|
-
```text
|
|
789
|
-
Verify 失败 → Fix
|
|
790
|
-
Review P1 → Fix
|
|
791
|
-
Review 通过 → WAIT_HUMAN
|
|
792
|
-
```
|
|
793
|
-
|
|
794
|
-
### Action Policy
|
|
795
|
-
|
|
796
|
-
约束 Worker 内部危险动作:
|
|
797
|
-
|
|
798
|
-
```text
|
|
799
|
-
merge
|
|
800
|
-
push
|
|
801
|
-
deploy
|
|
802
|
-
publish
|
|
803
|
-
migration
|
|
804
|
-
删除远端资源
|
|
805
|
-
修改生产配置
|
|
806
|
-
```
|
|
807
|
-
|
|
808
|
-
---
|
|
809
|
-
|
|
810
|
-
## 11.3 Human Approval 必须绑定精确对象
|
|
811
|
-
|
|
812
|
-
Approval 不再是:
|
|
813
|
-
|
|
814
|
-
```text
|
|
815
|
-
Gate3: passed
|
|
816
|
-
```
|
|
817
|
-
|
|
818
|
-
而是:
|
|
819
|
-
|
|
820
|
-
```yaml
|
|
821
|
-
decision: approved
|
|
822
|
-
transition: review-to-ready-for-merge
|
|
823
|
-
subject:
|
|
824
|
-
candidate: 7f3a12c
|
|
825
|
-
planDigest: sha256:...
|
|
826
|
-
evidenceDigest: sha256:...
|
|
827
|
-
approvedBy: human
|
|
828
|
-
approvedAt: 2026-08-27T...
|
|
829
|
-
```
|
|
830
|
-
|
|
831
|
-
只要 candidate、Plan 或必要 Evidence 发生变化,Approval 自动失效:
|
|
832
|
-
|
|
833
|
-
```text
|
|
834
|
-
APPROVAL_STALE
|
|
835
|
-
```
|
|
836
|
-
|
|
837
|
-
---
|
|
838
|
-
|
|
839
|
-
## 11.4 强制等级
|
|
840
|
-
|
|
841
|
-
每条 Policy 都应声明强制等级:
|
|
842
|
-
|
|
843
|
-
| 等级 | 含义 |
|
|
844
|
-
|---|---|
|
|
845
|
-
| `ADVISORY` | 通过 Prompt 或规则提示 Worker |
|
|
846
|
-
| `LOCAL_ENFORCED` | 由本地 Runner、Hook 或 Workspace 权限阻断 |
|
|
847
|
-
| `SERVER_ENFORCED` | 由 Branch Protection、CI 或部署平台阻断 |
|
|
848
|
-
|
|
849
|
-
MVP 不得宣称所有规则都被强制执行。Adapter 不支持确定性限制时,必须显示实际强制等级。
|
|
850
|
-
|
|
851
|
-
---
|
|
852
|
-
|
|
853
|
-
# 12. Worker 与 Adapter 合同
|
|
854
|
-
|
|
855
|
-
## 12.1 Worker 输入
|
|
856
|
-
|
|
857
|
-
```text
|
|
858
|
-
Project ID
|
|
859
|
-
Work ID
|
|
860
|
-
Run ID
|
|
861
|
-
Step ID
|
|
862
|
-
Objective
|
|
863
|
-
Scope
|
|
864
|
-
Base commit
|
|
865
|
-
Candidate commit
|
|
866
|
-
输入 Artifact
|
|
867
|
-
项目规则
|
|
868
|
-
允许工具
|
|
869
|
-
允许写入路径
|
|
870
|
-
预算
|
|
871
|
-
超时
|
|
872
|
-
前序 Evidence
|
|
873
|
-
```
|
|
874
|
-
|
|
875
|
-
## 12.2 Worker 输出
|
|
876
|
-
|
|
877
|
-
```yaml
|
|
878
|
-
status: succeeded | failed | blocked
|
|
879
|
-
summary: ...
|
|
880
|
-
artifacts:
|
|
881
|
-
- kind: plan
|
|
882
|
-
path: delivery/work/WORK-001/plan.md
|
|
883
|
-
changes:
|
|
884
|
-
base: abc1234
|
|
885
|
-
candidate: def5678
|
|
886
|
-
evidence:
|
|
887
|
-
- kind: test
|
|
888
|
-
ref: ...
|
|
889
|
-
findings: []
|
|
890
|
-
suggestedAction: verify
|
|
891
|
-
```
|
|
892
|
-
|
|
893
|
-
`suggestedAction` 只是一项建议。真正的下一状态由 Kernel 和 Policy 决定。
|
|
894
|
-
|
|
895
|
-
---
|
|
896
|
-
|
|
897
|
-
# 13. Evidence Contract
|
|
898
|
-
|
|
899
|
-
每份证据至少包含:
|
|
900
|
-
|
|
901
|
-
| 字段 | 含义 |
|
|
902
|
-
|---|---|
|
|
903
|
-
| `kind` | test、build、review、screenshot、deployment 等 |
|
|
904
|
-
| `subject` | 所证明的 Artifact 或 candidate |
|
|
905
|
-
| `producer` | Runner、Worker、外部系统或人 |
|
|
906
|
-
| `command` | 实际执行命令,适用时 |
|
|
907
|
-
| `exitCode` | 实际退出码 |
|
|
908
|
-
| `startedAt` / `finishedAt` | 执行时间 |
|
|
909
|
-
| `digest` | 证据内容摘要 |
|
|
910
|
-
| `location` | 本地路径或外部权威引用 |
|
|
911
|
-
| `coverage` | 已覆盖和未覆盖范围 |
|
|
912
|
-
| `status` | passed、failed、unverified |
|
|
913
|
-
| `adapter` | 证据来源 Adapter |
|
|
914
|
-
|
|
915
|
-
Worker 的自然语言总结不能单独作为测试通过证据。
|
|
916
|
-
|
|
917
|
-
---
|
|
918
|
-
|
|
919
|
-
# 14. 存储设计
|
|
920
|
-
|
|
921
|
-
## 14.1 双平面存储
|
|
922
|
-
|
|
923
|
-
### Git 中保存
|
|
924
|
-
|
|
925
|
-
- Workflow;
|
|
926
|
-
- Policy;
|
|
927
|
-
- Worker 定义;
|
|
928
|
-
- 项目标准;
|
|
929
|
-
- Intent、Spec、Plan;
|
|
930
|
-
- accepted candidate 引用;
|
|
931
|
-
- Review 报告;
|
|
932
|
-
- Human Decision;
|
|
933
|
-
- 需要长期保存的 Evidence manifest;
|
|
934
|
-
- Work 最终摘要。
|
|
935
|
-
|
|
936
|
-
### 本地 Runtime 保存
|
|
937
|
-
|
|
938
|
-
- 当前 Run 状态;
|
|
939
|
-
- Step 执行状态;
|
|
940
|
-
- Agent 进程和 session 信息;
|
|
941
|
-
- 锁;
|
|
942
|
-
- 重试次数;
|
|
943
|
-
- Budget;
|
|
944
|
-
- 临时日志;
|
|
945
|
-
- 未完成事件;
|
|
946
|
-
- Workspace 元数据。
|
|
947
|
-
|
|
948
|
-
---
|
|
949
|
-
|
|
950
|
-
## 14.2 MVP Runtime 格式
|
|
951
|
-
|
|
952
|
-
MVP 不先引入数据库服务,采用:
|
|
953
|
-
|
|
954
|
-
```text
|
|
955
|
-
append-only events.jsonl
|
|
956
|
-
+ atomic state snapshot
|
|
957
|
-
+ lock directory
|
|
958
|
-
```
|
|
959
|
-
|
|
960
|
-
目录建议:
|
|
961
|
-
|
|
962
|
-
```text
|
|
963
|
-
.buildbeat/runtime/
|
|
964
|
-
├── events.jsonl
|
|
965
|
-
├── state.json
|
|
966
|
-
├── locks/
|
|
967
|
-
├── sessions/
|
|
968
|
-
└── logs/
|
|
969
|
-
```
|
|
970
|
-
|
|
971
|
-
该目录默认进入 `.gitignore`。
|
|
972
|
-
|
|
973
|
-
状态必须可以完全由 Event Ledger 重建。`state.json` 只是加速快照,不是唯一真相源。
|
|
974
|
-
|
|
975
|
-
后续通过 `StateStore` 接口增加 SQLite 或远程存储。
|
|
976
|
-
|
|
977
|
-
---
|
|
978
|
-
|
|
979
|
-
# 15. 新项目目录
|
|
980
|
-
|
|
981
|
-
```text
|
|
982
|
-
<project>/
|
|
983
|
-
├── AGENTS.md
|
|
984
|
-
├── standards/
|
|
985
|
-
│ ├── STACK.md
|
|
986
|
-
│ ├── CODE.md
|
|
987
|
-
│ ├── REVIEW.md
|
|
988
|
-
│ └── DESIGN.md
|
|
989
|
-
├── .buildbeat/
|
|
990
|
-
│ ├── project.yaml
|
|
991
|
-
│ ├── workflows/
|
|
992
|
-
│ │ └── software-delivery.yaml
|
|
993
|
-
│ ├── policies/
|
|
994
|
-
│ │ ├── default.yaml
|
|
995
|
-
│ │ └── protected-actions.yaml
|
|
996
|
-
│ ├── workers/
|
|
997
|
-
│ │ ├── planner.yaml
|
|
998
|
-
│ │ ├── builder.yaml
|
|
999
|
-
│ │ ├── fixer.yaml
|
|
1000
|
-
│ │ ├── verifier.yaml
|
|
1001
|
-
│ │ └── reviewer.yaml
|
|
1002
|
-
│ ├── adapters/
|
|
1003
|
-
│ │ └── shell.yaml
|
|
1004
|
-
│ └── runtime/ # gitignored
|
|
1005
|
-
└── delivery/
|
|
1006
|
-
└── work/
|
|
1007
|
-
└── WORK-001/
|
|
1008
|
-
├── work.yaml
|
|
1009
|
-
├── intent.md
|
|
1010
|
-
├── spec.md
|
|
1011
|
-
├── plan.md
|
|
1012
|
-
├── decisions.jsonl
|
|
1013
|
-
├── reviews/
|
|
1014
|
-
├── evidence/
|
|
1015
|
-
└── summary.md
|
|
1016
|
-
```
|
|
1017
|
-
|
|
1018
|
-
## 15.1 `AGENTS.md` 的新职责
|
|
1019
|
-
|
|
1020
|
-
`AGENTS.md` 继续承担项目级 AI 规则入口,但不再保存:
|
|
1021
|
-
|
|
1022
|
-
- 当前工作包状态;
|
|
1023
|
-
- 调度顺序;
|
|
1024
|
-
- Gate 状态;
|
|
1025
|
-
- Agent handoff;
|
|
1026
|
-
- Run 状态。
|
|
1027
|
-
|
|
1028
|
-
Adapter 应显式将当前 Work、Artifact 和 Scope 传给 Worker,不再依赖工具是否自动加载某个文件。
|
|
1029
|
-
|
|
1030
|
-
---
|
|
1031
|
-
|
|
1032
|
-
# 16. CLI 规划
|
|
1033
|
-
|
|
1034
|
-
## 16.1 项目与环境
|
|
1035
|
-
|
|
1036
|
-
```bash
|
|
1037
|
-
buildbeat init
|
|
1038
|
-
buildbeat doctor
|
|
1039
|
-
buildbeat workflow validate
|
|
1040
|
-
buildbeat adapter list
|
|
1041
|
-
buildbeat adapter doctor
|
|
1042
|
-
```
|
|
1043
|
-
|
|
1044
|
-
## 16.2 Work
|
|
1045
|
-
|
|
1046
|
-
```bash
|
|
1047
|
-
buildbeat work create
|
|
1048
|
-
buildbeat work list
|
|
1049
|
-
buildbeat work show WORK-001
|
|
1050
|
-
buildbeat work close WORK-001
|
|
1051
|
-
```
|
|
1052
|
-
|
|
1053
|
-
## 16.3 Run
|
|
1054
|
-
|
|
1055
|
-
```bash
|
|
1056
|
-
buildbeat run start WORK-001
|
|
1057
|
-
buildbeat run status RUN-001
|
|
1058
|
-
buildbeat run inspect RUN-001
|
|
1059
|
-
buildbeat run resume RUN-001
|
|
1060
|
-
buildbeat run retry RUN-001
|
|
1061
|
-
buildbeat run stop RUN-001
|
|
1062
|
-
```
|
|
1063
|
-
|
|
1064
|
-
## 16.4 人类决定
|
|
1065
|
-
|
|
1066
|
-
```bash
|
|
1067
|
-
buildbeat approve RUN-001 --transition plan-to-build
|
|
1068
|
-
buildbeat reject RUN-001 --transition plan-to-build
|
|
1069
|
-
buildbeat approve RUN-001 --transition review-to-ready-for-merge
|
|
1070
|
-
```
|
|
1071
|
-
|
|
1072
|
-
命令执行前必须展示:
|
|
1073
|
-
|
|
1074
|
-
- 当前状态;
|
|
1075
|
-
- 将批准的精确对象;
|
|
1076
|
-
- candidate;
|
|
1077
|
-
- Evidence;
|
|
1078
|
-
- 风险;
|
|
1079
|
-
- 批准后将发生的动作。
|
|
1080
|
-
|
|
1081
|
-
## 16.5 调试和审计
|
|
1082
|
-
|
|
1083
|
-
```bash
|
|
1084
|
-
buildbeat events RUN-001
|
|
1085
|
-
buildbeat evidence RUN-001
|
|
1086
|
-
buildbeat explain RUN-001
|
|
1087
|
-
buildbeat replay RUN-001 --dry-run
|
|
1088
|
-
```
|
|
1089
|
-
|
|
1090
|
-
---
|
|
1091
|
-
|
|
1092
|
-
# 17. v1 概念迁移
|
|
1093
|
-
|
|
1094
|
-
## 17.1 保留、转换和删除
|
|
1095
|
-
|
|
1096
|
-
| v1 概念 | v2 处理 |
|
|
1097
|
-
|---|---|
|
|
1098
|
-
| Evidence-based completion | 保留并升级为 Evidence Contract |
|
|
1099
|
-
| 独立 reviewer | 保留并升级为标准 Worker |
|
|
1100
|
-
| fail-closed / unverified | 保留 |
|
|
1101
|
-
| Git 版本化事实 | 保留,但不承载全部运行时状态 |
|
|
1102
|
-
| `AGENTS.md` | 保留为项目规则入口 |
|
|
1103
|
-
| `STACK/CODE/REVIEW/DESIGN` | 保留为 Policy 输入工件 |
|
|
1104
|
-
| 固定 Gate1–Gate4 | 从核心删除,作为 Legacy Preset |
|
|
1105
|
-
| 产品/全栈/测试视角 | 从核心删除,转换为可选 Worker Preset |
|
|
1106
|
-
| `NOW.md` | 删除为必需入口,可提供生成式兼容视图 |
|
|
1107
|
-
| 当期看板 | 不再是状态权威,可转换为 Work 列表视图 |
|
|
1108
|
-
| `pm/status/{视角}.md` | 删除为核心状态源 |
|
|
1109
|
-
| `pm/changes/` | 转换为 Work + Artifact |
|
|
1110
|
-
| `decisions.md` | 转换为 Decision Event 和导出视图 |
|
|
1111
|
-
| `bus-check.sh` | 拆为确定性 Evidence Provider 和 Policy Check |
|
|
1112
|
-
| `verify-status.sh` | 转换为 Verify Provider |
|
|
1113
|
-
| `drift-check.sh` | 转换为 Runtime / Production Evidence Provider |
|
|
1114
|
-
| CLI 不调用 Agent | 修改为 Kernel 确定性、Runner 可调用外部 Agent |
|
|
1115
|
-
| Skill-only 完整等价 | 取消;手工模式是降级兼容,不承诺自动能力等价 |
|
|
1116
|
-
|
|
1117
|
-
---
|
|
1118
|
-
|
|
1119
|
-
## 17.2 运行模式变化
|
|
1120
|
-
|
|
1121
|
-
### v1
|
|
1122
|
-
|
|
1123
|
-
```text
|
|
1124
|
-
Skill-only 是完整模式
|
|
1125
|
-
CLI 是可选增强
|
|
1126
|
-
```
|
|
1127
|
-
|
|
1128
|
-
### v2
|
|
1129
|
-
|
|
1130
|
-
```text
|
|
1131
|
-
Runtime Mode:
|
|
1132
|
-
完整自动 Loop,需要 BuildBeat Runner
|
|
1133
|
-
|
|
1134
|
-
Manual Mode:
|
|
1135
|
-
文件和 Workflow 仍可人工执行,
|
|
1136
|
-
但不具备自动调度、重试和恢复能力
|
|
1137
|
-
```
|
|
1138
|
-
|
|
1139
|
-
Manual Mode 是兼容和故障降级能力,不再与 Runtime Mode 功能等价。
|
|
1140
|
-
|
|
1141
|
-
---
|
|
1142
|
-
|
|
1143
|
-
# 18. v1 与 v2 发布策略
|
|
1144
|
-
|
|
1145
|
-
## 18.1 版本线
|
|
1146
|
-
|
|
1147
|
-
- `1.x`:维护线,只修安全问题和严重缺陷;
|
|
1148
|
-
- `2.0.0-alpha`:核心模型和本地 Runner;
|
|
1149
|
-
- `2.0.0-beta`:真实 Agent Loop 和迁移试点;
|
|
1150
|
-
- `2.0.0`:完成规定的真实项目验收后发布。
|
|
1151
|
-
|
|
1152
|
-
当前项目已经有较完整的 v1 CLI、模板和测试资产,应保留作为稳定基线,不在同一主干中边维护旧协议边重写全部语义。当前源码主要集中在 CLI、项目扫描、规划、写入和升级模块,可在代码审计后选择性复用底层工具,但不沿用其领域模型。
|
|
1153
|
-
|
|
1154
|
-
## 18.2 分支建议
|
|
1155
|
-
|
|
1156
|
-
```text
|
|
1157
|
-
v1-maintenance
|
|
1158
|
-
维护 1.x
|
|
1159
|
-
|
|
1160
|
-
v2
|
|
1161
|
-
v2 开发和试点
|
|
1162
|
-
|
|
1163
|
-
main
|
|
1164
|
-
在 v2 达到 Beta 退出条件后切换
|
|
1165
|
-
```
|
|
1166
|
-
|
|
1167
|
-
npm 使用:
|
|
1168
|
-
|
|
1169
|
-
```text
|
|
1170
|
-
latest → 稳定 v1
|
|
1171
|
-
next → v2 alpha/beta
|
|
1172
|
-
```
|
|
1173
|
-
|
|
1174
|
-
在 v2 Beta 前不让 `latest` 自动指向新架构。
|
|
1175
|
-
|
|
1176
|
-
---
|
|
1177
|
-
|
|
1178
|
-
# 19. v2 MVP 范围
|
|
1179
|
-
|
|
1180
|
-
## 19.1 MVP 必须具备
|
|
1181
|
-
|
|
1182
|
-
1. 一个项目、一个仓库、一个活动 Run;
|
|
1183
|
-
2. Workflow 加载和校验;
|
|
1184
|
-
3. Policy Engine;
|
|
1185
|
-
4. Event Ledger 和恢复;
|
|
1186
|
-
5. Mock Adapter;
|
|
1187
|
-
6. Shell Adapter;
|
|
1188
|
-
7. worktree 隔离;
|
|
1189
|
-
8. Builder、Fixer、Verifier、Reviewer Worker 合同;
|
|
1190
|
-
9. Build–Verify–Fix 自动 Loop;
|
|
1191
|
-
10. Review–Fix–Verify 自动 Loop;
|
|
1192
|
-
11. Retry、Budget、Timeout、无进展检测;
|
|
1193
|
-
12. Human Approval;
|
|
1194
|
-
13. Approval stale 检测;
|
|
1195
|
-
14. Evidence manifest;
|
|
1196
|
-
15. `run start/status/inspect/resume/stop`;
|
|
1197
|
-
16. 前台运行;
|
|
1198
|
-
17. 最终停在合并批准前。
|
|
1199
|
-
|
|
1200
|
-
## 19.2 MVP 明确不具备
|
|
1201
|
-
|
|
1202
|
-
- 多仓;
|
|
1203
|
-
- 多 Run 并发;
|
|
1204
|
-
- 后台 daemon;
|
|
1205
|
-
- Web UI;
|
|
1206
|
-
- 自动 PR 合并;
|
|
1207
|
-
- 自动部署;
|
|
1208
|
-
- 远程团队共享;
|
|
1209
|
-
- Agent Marketplace;
|
|
1210
|
-
- 自动动态生成任意 Workflow;
|
|
1211
|
-
- 生产 Incident Loop。
|
|
1212
|
-
|
|
1213
|
-
---
|
|
1214
|
-
|
|
1215
|
-
# 20. MVP Definition of Done
|
|
1216
|
-
|
|
1217
|
-
在一个真实 Git 项目中,执行:
|
|
1218
|
-
|
|
1219
|
-
```bash
|
|
1220
|
-
buildbeat run start WORK-001
|
|
1221
|
-
```
|
|
1222
|
-
|
|
1223
|
-
系统必须能够:
|
|
1224
|
-
|
|
1225
|
-
1. 读取被接受的 Intent 和 Plan;
|
|
1226
|
-
2. 创建独立 worktree;
|
|
1227
|
-
3. 启动 Builder;
|
|
1228
|
-
4. 固定 candidate;
|
|
1229
|
-
5. 运行真实测试;
|
|
1230
|
-
6. 测试失败时自动路由 Fixer;
|
|
1231
|
-
7. 在限定次数内重新测试;
|
|
1232
|
-
8. 测试通过后启动 fresh-context Verifier;
|
|
1233
|
-
9. Verifier 发现问题时自动路由 Fixer;
|
|
1234
|
-
10. 再次执行验证;
|
|
1235
|
-
11. 启动只读 Reviewer;
|
|
1236
|
-
12. P0/P1 存在时进入修复闭环;
|
|
1237
|
-
13. 无阻断后进入 `WAITING_HUMAN`;
|
|
1238
|
-
14. 展示 candidate、Plan、Review 和 Evidence;
|
|
1239
|
-
15. 不自动 merge;
|
|
1240
|
-
16. 中途终止进程后可以恢复;
|
|
1241
|
-
17. 每一次执行和状态转换均可通过 Event Ledger 解释;
|
|
1242
|
-
18. Approval 在 candidate 改变后自动失效;
|
|
1243
|
-
19. 达到重试或预算上限后不会继续死循环;
|
|
1244
|
-
20. 所有未验证范围被明确暴露。
|
|
1245
|
-
|
|
1246
|
-
---
|
|
1247
|
-
|
|
1248
|
-
# 21. 落地路线图
|
|
1249
|
-
|
|
1250
|
-
以下周期为单人主导、AI 辅助开发的建议基线,不作为不可调整的发布日期。
|
|
1251
|
-
|
|
1252
|
-
| 里程碑 | 建议周期 | 目标 | 退出条件 |
|
|
1253
|
-
|---|---:|---|---|
|
|
1254
|
-
| **M0 核心重置** | 1 周 | 完成新定位、模型和协议 RFC | 核心名词、MVP 和非目标不再存在歧义 |
|
|
1255
|
-
| **M1 Deterministic Kernel** | 2 周 | 状态机、事件、Workflow、Policy | Mock Workflow 可确定性模拟和重放 |
|
|
1256
|
-
| **M2 Runner 与隔离** | 2 周 | Workspace、Shell/Mock Adapter、Evidence | 无 AI 情况下完整跑通模拟 Loop |
|
|
1257
|
-
| **M3 自动 Agent Loop** | 3 周 | Build–Verify–Fix–Review | 一个真实项目可自动推进到 WAITING_HUMAN |
|
|
1258
|
-
| **M4 Policy 与人工控制** | 2 周 | Approval、stale、预算、危险动作 | 无法绕过 candidate 绑定和重试上限 |
|
|
1259
|
-
| **M5 Eval 与真实试点** | 3 周 | 行为 Eval、自托管、外部项目试点 | 达到 Pilot 指标,关键失败模式关闭 |
|
|
1260
|
-
| **M6 Beta 与迁移** | 2 周 | v1 importer、文档、npm next | 发布 `2.0.0-beta.1` |
|
|
1261
|
-
|
|
1262
|
-
建议总窗口:**15 周左右**。
|
|
1263
|
-
|
|
1264
|
-
---
|
|
1265
|
-
|
|
1266
|
-
# 22. 分阶段工作包
|
|
1267
|
-
|
|
1268
|
-
## M0:核心重置
|
|
1269
|
-
|
|
1270
|
-
### WP0.1 产品定位 RFC
|
|
1271
|
-
|
|
1272
|
-
交付:
|
|
1273
|
-
|
|
1274
|
-
```text
|
|
1275
|
-
docs/v2/RFC-0001-product-definition.md
|
|
1276
|
-
```
|
|
1277
|
-
|
|
1278
|
-
必须回答:
|
|
1279
|
-
|
|
1280
|
-
- BuildBeat 是什么;
|
|
1281
|
-
- 不是什么;
|
|
1282
|
-
- 谁使用;
|
|
1283
|
-
- Runner 是否核心;
|
|
1284
|
-
- 手工模式是什么地位;
|
|
1285
|
-
- v1 是否继续演进。
|
|
1286
|
-
|
|
1287
|
-
### WP0.2 领域模型 RFC
|
|
1288
|
-
|
|
1289
|
-
交付:
|
|
1290
|
-
|
|
1291
|
-
```text
|
|
1292
|
-
docs/v2/RFC-0002-domain-model.md
|
|
1293
|
-
```
|
|
1294
|
-
|
|
1295
|
-
定义:
|
|
1296
|
-
|
|
1297
|
-
```text
|
|
1298
|
-
Project
|
|
1299
|
-
Work
|
|
1300
|
-
Run
|
|
1301
|
-
Workflow
|
|
1302
|
-
Step
|
|
1303
|
-
Worker
|
|
1304
|
-
Adapter
|
|
1305
|
-
Artifact
|
|
1306
|
-
Evidence
|
|
1307
|
-
Policy
|
|
1308
|
-
Event
|
|
1309
|
-
Decision
|
|
1310
|
-
Workspace
|
|
1311
|
-
```
|
|
1312
|
-
|
|
1313
|
-
### WP0.3 Workflow 与 Policy RFC
|
|
1314
|
-
|
|
1315
|
-
交付:
|
|
1316
|
-
|
|
1317
|
-
```text
|
|
1318
|
-
docs/v2/RFC-0003-workflow-policy.md
|
|
1319
|
-
```
|
|
1320
|
-
|
|
1321
|
-
明确:
|
|
1322
|
-
|
|
1323
|
-
- GateResult;
|
|
1324
|
-
- 转换顺序;
|
|
1325
|
-
- Human Approval;
|
|
1326
|
-
- stale;
|
|
1327
|
-
- retry;
|
|
1328
|
-
- route;
|
|
1329
|
-
- block;
|
|
1330
|
-
- unverified。
|
|
1331
|
-
|
|
1332
|
-
### WP0.4 v1 冻结
|
|
1333
|
-
|
|
1334
|
-
- 创建 `v1-maintenance`;
|
|
1335
|
-
- 标记 v1 功能冻结;
|
|
1336
|
-
- v1 新需求默认转入 v2 评估;
|
|
1337
|
-
- 不再向固定 Gate 和 status 体系增加新能力。
|
|
1338
|
-
|
|
1339
|
-
### M0 退出标准
|
|
1340
|
-
|
|
1341
|
-
- 通过三个 RFC;
|
|
1342
|
-
- MVP 需求稳定;
|
|
1343
|
-
- 所有旧概念已标记为保留、转换或删除;
|
|
1344
|
-
- 不开始真实 Adapter 开发。
|
|
1345
|
-
|
|
1346
|
-
---
|
|
1347
|
-
|
|
1348
|
-
## M1:Deterministic Kernel
|
|
1349
|
-
|
|
1350
|
-
### WP1.1 Schema
|
|
1351
|
-
|
|
1352
|
-
建立:
|
|
1353
|
-
|
|
1354
|
-
```text
|
|
1355
|
-
project.schema.json
|
|
1356
|
-
workflow.schema.json
|
|
1357
|
-
policy.schema.json
|
|
1358
|
-
worker.schema.json
|
|
1359
|
-
artifact.schema.json
|
|
1360
|
-
evidence.schema.json
|
|
1361
|
-
event.schema.json
|
|
1362
|
-
```
|
|
1363
|
-
|
|
1364
|
-
用户配置使用 YAML,内部验证使用 JSON Schema。
|
|
1365
|
-
|
|
1366
|
-
### WP1.2 Event Store
|
|
1367
|
-
|
|
1368
|
-
实现:
|
|
1369
|
-
|
|
1370
|
-
- append-only JSONL;
|
|
1371
|
-
- 单调 event sequence;
|
|
1372
|
-
- hash 或 checksum;
|
|
1373
|
-
- 原子追加;
|
|
1374
|
-
- Event replay;
|
|
1375
|
-
- snapshot 重建;
|
|
1376
|
-
- corrupted log 检测。
|
|
1377
|
-
|
|
1378
|
-
### WP1.3 State Reducer
|
|
1379
|
-
|
|
1380
|
-
根据 Event 计算:
|
|
1381
|
-
|
|
1382
|
-
- Run 状态;
|
|
1383
|
-
- Step 状态;
|
|
1384
|
-
- attempts;
|
|
1385
|
-
- budgets;
|
|
1386
|
-
- current candidate;
|
|
1387
|
-
- pending human request;
|
|
1388
|
-
- evidence coverage。
|
|
1389
|
-
|
|
1390
|
-
### WP1.4 Workflow Engine
|
|
1391
|
-
|
|
1392
|
-
实现:
|
|
1393
|
-
|
|
1394
|
-
- Step;
|
|
1395
|
-
- Transition;
|
|
1396
|
-
- entry;
|
|
1397
|
-
- terminal;
|
|
1398
|
-
- retry route;
|
|
1399
|
-
- branch;
|
|
1400
|
-
- skip;
|
|
1401
|
-
- loop detection。
|
|
1402
|
-
|
|
1403
|
-
### WP1.5 Policy Engine
|
|
1404
|
-
|
|
1405
|
-
第一版支持:
|
|
1406
|
-
|
|
1407
|
-
```text
|
|
1408
|
-
all
|
|
1409
|
-
any
|
|
1410
|
-
not
|
|
1411
|
-
evidence.exists
|
|
1412
|
-
artifact.accepted
|
|
1413
|
-
attempts.lt
|
|
1414
|
-
budget.remaining
|
|
1415
|
-
candidate.clean
|
|
1416
|
-
human.approved
|
|
1417
|
-
finding.maxSeverity
|
|
1418
|
-
```
|
|
1419
|
-
|
|
1420
|
-
### WP1.6 Simulator
|
|
1421
|
-
|
|
1422
|
-
```bash
|
|
1423
|
-
buildbeat workflow simulate
|
|
1424
|
-
```
|
|
1425
|
-
|
|
1426
|
-
不调用 Worker,只输入模拟事件并输出状态变化。
|
|
1427
|
-
|
|
1428
|
-
### M1 退出标准
|
|
1429
|
-
|
|
1430
|
-
- 任何状态都可以由事件重建;
|
|
1431
|
-
- 非法转换被拒绝;
|
|
1432
|
-
- `UNVERIFIED` 不会变成 `PASS`;
|
|
1433
|
-
- Retry 不会超过上限;
|
|
1434
|
-
- 终态不能被普通事件重新打开;
|
|
1435
|
-
- 100% 核心转换有单元测试。
|
|
1436
|
-
|
|
1437
|
-
---
|
|
1438
|
-
|
|
1439
|
-
## M2:Runner 与执行隔离
|
|
1440
|
-
|
|
1441
|
-
### WP2.1 Workspace Manager
|
|
1442
|
-
|
|
1443
|
-
- 创建 worktree;
|
|
1444
|
-
- 基线校验;
|
|
1445
|
-
- 分支命名;
|
|
1446
|
-
- 锁;
|
|
1447
|
-
- candidate 回读;
|
|
1448
|
-
- dirty 检测;
|
|
1449
|
-
- cleanup policy。
|
|
1450
|
-
|
|
1451
|
-
### WP2.2 Worker Contract
|
|
1452
|
-
|
|
1453
|
-
实现标准输入输出 envelope。
|
|
1454
|
-
|
|
1455
|
-
### WP2.3 Mock Adapter
|
|
1456
|
-
|
|
1457
|
-
支持:
|
|
1458
|
-
|
|
1459
|
-
- 成功;
|
|
1460
|
-
- 失败;
|
|
1461
|
-
- 超时;
|
|
1462
|
-
- 输出非法;
|
|
1463
|
-
- 修改超 Scope;
|
|
1464
|
-
- 进程崩溃;
|
|
1465
|
-
- 相同失败重复。
|
|
1466
|
-
|
|
1467
|
-
### WP2.4 Shell Adapter
|
|
1468
|
-
|
|
1469
|
-
配置示例:
|
|
1470
|
-
|
|
1471
|
-
```yaml
|
|
1472
|
-
adapter:
|
|
1473
|
-
type: shell
|
|
1474
|
-
command: agent-cli
|
|
1475
|
-
args:
|
|
1476
|
-
- run
|
|
1477
|
-
- --input
|
|
1478
|
-
- "{input}"
|
|
1479
|
-
- --output
|
|
1480
|
-
- "{output}"
|
|
1481
|
-
```
|
|
1482
|
-
|
|
1483
|
-
### WP2.5 Evidence Collector
|
|
1484
|
-
|
|
1485
|
-
第一版收集:
|
|
1486
|
-
|
|
1487
|
-
- command;
|
|
1488
|
-
- exit code;
|
|
1489
|
-
- stdout/stderr digest;
|
|
1490
|
-
- test report path;
|
|
1491
|
-
- Git diff;
|
|
1492
|
-
- base/candidate;
|
|
1493
|
-
- working tree 状态。
|
|
1494
|
-
|
|
1495
|
-
### WP2.6 Runtime CLI
|
|
1496
|
-
|
|
1497
|
-
实现:
|
|
1498
|
-
|
|
1499
|
-
```text
|
|
1500
|
-
run start
|
|
1501
|
-
run status
|
|
1502
|
-
run inspect
|
|
1503
|
-
run resume
|
|
1504
|
-
run stop
|
|
1505
|
-
events
|
|
1506
|
-
evidence
|
|
1507
|
-
```
|
|
1508
|
-
|
|
1509
|
-
### M2 退出标准
|
|
1510
|
-
|
|
1511
|
-
- Mock Adapter 可以完整执行多 Step Workflow;
|
|
1512
|
-
- 进程被中止后可以恢复;
|
|
1513
|
-
- 两个进程不能同时占用同一 Run;
|
|
1514
|
-
- Worker 无法将自然语言声明伪装成命令成功;
|
|
1515
|
-
- candidate 与证据均来自实际回读。
|
|
1516
|
-
|
|
1517
|
-
---
|
|
1518
|
-
|
|
1519
|
-
## M3:自动 Agent Loop
|
|
1520
|
-
|
|
1521
|
-
### WP3.1 Planner Worker
|
|
1522
|
-
|
|
1523
|
-
输出结构化 Plan,并明确:
|
|
1524
|
-
|
|
1525
|
-
- Scope;
|
|
1526
|
-
-文件或模块;
|
|
1527
|
-
-风险;
|
|
1528
|
-
-验证;
|
|
1529
|
-
-非目标。
|
|
1530
|
-
|
|
1531
|
-
### WP3.2 Builder Worker
|
|
1532
|
-
|
|
1533
|
-
- 只消费 accepted Plan;
|
|
1534
|
-
- 只能写 Workspace;
|
|
1535
|
-
- 不能修改 Policy 和 Workflow;
|
|
1536
|
-
- 输出 candidate。
|
|
1537
|
-
|
|
1538
|
-
### WP3.3 Fixer Worker
|
|
1539
|
-
|
|
1540
|
-
输入必须包含失败 Evidence,不接受泛化的“再检查一下”。
|
|
1541
|
-
|
|
1542
|
-
### WP3.4 Verifier Worker
|
|
1543
|
-
|
|
1544
|
-
- fresh context;
|
|
1545
|
-
- 默认只读分析;
|
|
1546
|
-
- 可运行声明的检查;
|
|
1547
|
-
- 输出结构化 verdict;
|
|
1548
|
-
- 不直接推进状态。
|
|
1549
|
-
|
|
1550
|
-
### WP3.5 Reviewer Worker
|
|
1551
|
-
|
|
1552
|
-
将当前 reviewer 的合理机制迁入通用 Worker Contract:
|
|
1553
|
-
|
|
1554
|
-
- candidate 固定;
|
|
1555
|
-
- 只读;
|
|
1556
|
-
- fresh context;
|
|
1557
|
-
- findings 分级;
|
|
1558
|
-
- 不允许自己批准合并。
|
|
1559
|
-
|
|
1560
|
-
### WP3.6 Loop Controller
|
|
1561
|
-
|
|
1562
|
-
实现:
|
|
1563
|
-
|
|
1564
|
-
```text
|
|
1565
|
-
build → verify
|
|
1566
|
-
verify failed → fix
|
|
1567
|
-
fix → verify
|
|
1568
|
-
verify passed → review
|
|
1569
|
-
review blocked → fix
|
|
1570
|
-
review passed → wait human
|
|
1571
|
-
```
|
|
1572
|
-
|
|
1573
|
-
### WP3.7 无进展检测
|
|
1574
|
-
|
|
1575
|
-
失败指纹至少结合:
|
|
1576
|
-
|
|
1577
|
-
```text
|
|
1578
|
-
Step
|
|
1579
|
-
command
|
|
1580
|
-
exit code
|
|
1581
|
-
关键错误摘要
|
|
1582
|
-
candidate diff digest
|
|
1583
|
-
```
|
|
1584
|
-
|
|
1585
|
-
### M3 退出标准
|
|
1586
|
-
|
|
1587
|
-
- 在一个真实测试项目中,系统可自动修复预埋 Bug;
|
|
1588
|
-
- 测试失败不会进入 Review;
|
|
1589
|
-
- Reviewer 不能修改代码;
|
|
1590
|
-
- Reviewer findings 可自动进入 Fix Loop;
|
|
1591
|
-
- 最终停在 `WAITING_HUMAN`。
|
|
1592
|
-
|
|
1593
|
-
---
|
|
1594
|
-
|
|
1595
|
-
## M4:Policy、权限与人类控制
|
|
1596
|
-
|
|
1597
|
-
### WP4.1 Approval
|
|
1598
|
-
|
|
1599
|
-
批准对象绑定:
|
|
1600
|
-
|
|
1601
|
-
```text
|
|
1602
|
-
transition
|
|
1603
|
-
artifact revision
|
|
1604
|
-
candidate
|
|
1605
|
-
evidence digest
|
|
1606
|
-
```
|
|
1607
|
-
|
|
1608
|
-
### WP4.2 Stale Detection
|
|
1609
|
-
|
|
1610
|
-
任何受保护输入发生改变:
|
|
1611
|
-
|
|
1612
|
-
```text
|
|
1613
|
-
approval → stale
|
|
1614
|
-
run → WAITING_HUMAN
|
|
1615
|
-
```
|
|
1616
|
-
|
|
1617
|
-
### WP4.3 Risk Profile
|
|
1618
|
-
|
|
1619
|
-
提供三个官方 Preset:
|
|
1620
|
-
|
|
1621
|
-
#### Fast
|
|
1622
|
-
|
|
1623
|
-
```text
|
|
1624
|
-
自动 Plan
|
|
1625
|
-
自动 Build/Verify/Review
|
|
1626
|
-
人工 Merge
|
|
1627
|
-
```
|
|
1628
|
-
|
|
1629
|
-
#### Standard
|
|
1630
|
-
|
|
1631
|
-
```text
|
|
1632
|
-
人工批准 Plan
|
|
1633
|
-
自动 Build/Verify/Review
|
|
1634
|
-
人工 Merge
|
|
1635
|
-
```
|
|
1636
|
-
|
|
1637
|
-
#### Controlled
|
|
1638
|
-
|
|
1639
|
-
```text
|
|
1640
|
-
人工批准 Intent
|
|
1641
|
-
人工批准 Plan
|
|
1642
|
-
自动 Build/Verify/Review
|
|
1643
|
-
人工 Merge
|
|
1644
|
-
人工 Release
|
|
1645
|
-
```
|
|
1646
|
-
|
|
1647
|
-
这些是 Preset,不是核心固定 Gate。
|
|
1648
|
-
|
|
1649
|
-
### WP4.4 Protected Actions
|
|
1650
|
-
|
|
1651
|
-
MVP 禁止 Worker 执行:
|
|
1652
|
-
|
|
1653
|
-
```text
|
|
1654
|
-
merge
|
|
1655
|
-
deploy
|
|
1656
|
-
publish
|
|
1657
|
-
force push
|
|
1658
|
-
remote delete
|
|
1659
|
-
production mutation
|
|
1660
|
-
```
|
|
1661
|
-
|
|
1662
|
-
最可靠的方式不是提示词阻止,而是不给 Worker 相应凭据和能力。
|
|
1663
|
-
|
|
1664
|
-
### WP4.5 Budget
|
|
1665
|
-
|
|
1666
|
-
支持:
|
|
1667
|
-
|
|
1668
|
-
```text
|
|
1669
|
-
maxAttempts
|
|
1670
|
-
maxDuration
|
|
1671
|
-
maxCost
|
|
1672
|
-
maxTokens
|
|
1673
|
-
maxNoProgress
|
|
1674
|
-
```
|
|
1675
|
-
|
|
1676
|
-
### M4 退出标准
|
|
1677
|
-
|
|
1678
|
-
- candidate 改变后旧 Approval 无效;
|
|
1679
|
-
- Worker 无法直接到达合并或发布;
|
|
1680
|
-
- 所有 Loop 均有终止上限;
|
|
1681
|
-
- Policy 决策可解释;
|
|
1682
|
-
- 人工决定后 Run 可以安全恢复。
|
|
1683
|
-
|
|
1684
|
-
---
|
|
1685
|
-
|
|
1686
|
-
## M5:Eval 与试点
|
|
1687
|
-
|
|
1688
|
-
当前 CI 已经覆盖文档、Shell、CLI 和打包等确定性行为,但还没有验证 Agent 是否真正遵循协议。
|
|
1689
|
-
|
|
1690
|
-
### WP5.1 Deterministic Test Suite
|
|
1691
|
-
|
|
1692
|
-
覆盖:
|
|
1693
|
-
|
|
1694
|
-
- 状态机;
|
|
1695
|
-
- Event replay;
|
|
1696
|
-
- crash recovery;
|
|
1697
|
-
- Policy;
|
|
1698
|
-
- Approval stale;
|
|
1699
|
-
- retry;
|
|
1700
|
-
- Budget;
|
|
1701
|
-
- lock;
|
|
1702
|
-
- candidate;
|
|
1703
|
-
- Evidence;
|
|
1704
|
-
- Adapter failure。
|
|
1705
|
-
|
|
1706
|
-
### WP5.2 Agent Behavior Eval
|
|
1707
|
-
|
|
1708
|
-
建立:
|
|
1709
|
-
|
|
1710
|
-
```text
|
|
1711
|
-
evals/
|
|
1712
|
-
├── plan-scope/
|
|
1713
|
-
├── gate-cannot-self-pass/
|
|
1714
|
-
├── failing-test-first/
|
|
1715
|
-
├── fix-loop/
|
|
1716
|
-
├── reviewer-readonly/
|
|
1717
|
-
├── stale-approval/
|
|
1718
|
-
├── protected-action/
|
|
1719
|
-
├── no-progress/
|
|
1720
|
-
└── evidence-required/
|
|
1721
|
-
```
|
|
1722
|
-
|
|
1723
|
-
每个 Eval 包含:
|
|
1724
|
-
|
|
1725
|
-
```text
|
|
1726
|
-
fixture repository
|
|
1727
|
-
task
|
|
1728
|
-
expected artifacts
|
|
1729
|
-
allowed actions
|
|
1730
|
-
forbidden actions
|
|
1731
|
-
machine checks
|
|
1732
|
-
semantic rubric
|
|
1733
|
-
```
|
|
1734
|
-
|
|
1735
|
-
### WP5.3 Self-host Pilot
|
|
1736
|
-
|
|
1737
|
-
BuildBeat v2 使用自己的 Runner 开发 BuildBeat v2:
|
|
1738
|
-
|
|
1739
|
-
```text
|
|
1740
|
-
BuildBeat builds BuildBeat
|
|
1741
|
-
```
|
|
1742
|
-
|
|
1743
|
-
该试点用于发现:
|
|
1744
|
-
|
|
1745
|
-
- Runtime 恢复问题;
|
|
1746
|
-
- Agent 输出协议问题;
|
|
1747
|
-
- Scope 漂移;
|
|
1748
|
-
- Prompt injection;
|
|
1749
|
-
- Review 自证;
|
|
1750
|
-
- Event 和 Git 不一致。
|
|
1751
|
-
|
|
1752
|
-
### WP5.4 外部 Pilot
|
|
1753
|
-
|
|
1754
|
-
至少选择:
|
|
1755
|
-
|
|
1756
|
-
1. 一个小型单仓项目;
|
|
1757
|
-
2. 一个具有真实自动化测试的现有项目;
|
|
1758
|
-
3. 一个包含 UI 或接口变更的项目。
|
|
1759
|
-
|
|
1760
|
-
### M5 退出指标
|
|
1761
|
-
|
|
1762
|
-
| 指标 | Beta 目标 |
|
|
1763
|
-
|---|---:|
|
|
1764
|
-
| 所有状态转换可追溯 | 100% |
|
|
1765
|
-
| stale Approval 被复用 | 0 |
|
|
1766
|
-
| 超预算后继续运行 | 0 |
|
|
1767
|
-
| 无上限 Loop | 0 |
|
|
1768
|
-
| 自动到达 `WAITING_HUMAN` 的 Pilot Run | ≥70% |
|
|
1769
|
-
| 完成 Run Evidence 完整率 | ≥95% |
|
|
1770
|
-
| 失败 Run 有明确终止原因 | 100% |
|
|
1771
|
-
| 人工手动切换 Agent 的次数 | 相比 v1 显著减少 |
|
|
1772
|
-
| Reviewer 自行修改代码 | 0 |
|
|
1773
|
-
|
|
1774
|
-
---
|
|
1775
|
-
|
|
1776
|
-
## M6:迁移与 Beta
|
|
1777
|
-
|
|
1778
|
-
### WP6.1 v1 Importer
|
|
1779
|
-
|
|
1780
|
-
新增:
|
|
1781
|
-
|
|
1782
|
-
```bash
|
|
1783
|
-
buildbeat migrate-v1 --dry-run
|
|
1784
|
-
```
|
|
1785
|
-
|
|
1786
|
-
可识别:
|
|
1787
|
-
|
|
1788
|
-
- 工作包;
|
|
1789
|
-
- `pm/changes`;
|
|
1790
|
-
- decisions;
|
|
1791
|
-
- standards;
|
|
1792
|
-
- reviewer;
|
|
1793
|
-
- verify scripts;
|
|
1794
|
-
- 当前 candidate 引用。
|
|
1795
|
-
|
|
1796
|
-
不得自动猜测:
|
|
1797
|
-
|
|
1798
|
-
- 哪个旧状态仍有效;
|
|
1799
|
-
- 哪个 Gate 仍应通过;
|
|
1800
|
-
- 哪份文档是 accepted Plan;
|
|
1801
|
-
- 哪个 status 是权威。
|
|
1802
|
-
|
|
1803
|
-
无法确定的内容输出 migration gap。
|
|
1804
|
-
|
|
1805
|
-
### WP6.2 迁移策略
|
|
1806
|
-
|
|
1807
|
-
1. 只读分析 v1;
|
|
1808
|
-
2. 生成 v2 Work 和 Artifact 草稿;
|
|
1809
|
-
3. 人工确认当前活动 Work;
|
|
1810
|
-
4. 冻结旧看板;
|
|
1811
|
-
5. 新工作只进入 v2;
|
|
1812
|
-
6. 历史 v1 文件归档,不双写;
|
|
1813
|
-
7. 完成一个真实 Run 后才正式切换。
|
|
1814
|
-
|
|
1815
|
-
### WP6.3 文档
|
|
1816
|
-
|
|
1817
|
-
必须完成:
|
|
1818
|
-
|
|
1819
|
-
- 5 分钟快速开始;
|
|
1820
|
-
- Workflow 编写指南;
|
|
1821
|
-
- Policy 指南;
|
|
1822
|
-
- Adapter 指南;
|
|
1823
|
-
- Worker 合同;
|
|
1824
|
-
- Evidence 指南;
|
|
1825
|
-
- Human Approval 指南;
|
|
1826
|
-
- v1 迁移指南;
|
|
1827
|
-
- 安全和权限边界;
|
|
1828
|
-
- 故障恢复手册。
|
|
1829
|
-
|
|
1830
|
-
### WP6.4 Beta Release
|
|
1831
|
-
|
|
1832
|
-
发布:
|
|
1833
|
-
|
|
1834
|
-
```text
|
|
1835
|
-
@haiyangbg/buildbeat@2.0.0-beta.1
|
|
1836
|
-
npm dist-tag: next
|
|
1837
|
-
```
|
|
1838
|
-
|
|
1839
|
-
---
|
|
1840
|
-
|
|
1841
|
-
# 23. 技术实施建议
|
|
1842
|
-
|
|
1843
|
-
## 23.1 语言和工程结构
|
|
1844
|
-
|
|
1845
|
-
建议 v2 Kernel 使用:
|
|
1846
|
-
|
|
1847
|
-
```text
|
|
1848
|
-
TypeScript
|
|
1849
|
-
Node.js 20+
|
|
1850
|
-
ESM
|
|
1851
|
-
JSON Schema
|
|
1852
|
-
YAML 用户配置
|
|
1853
|
-
Node 原生测试框架或现有测试体系
|
|
1854
|
-
```
|
|
1855
|
-
|
|
1856
|
-
第一阶段不立即拆多个 npm 公共包,先在同一仓库形成稳定模块合同:
|
|
1857
|
-
|
|
1858
|
-
```text
|
|
1859
|
-
src/v2/
|
|
1860
|
-
├── domain/
|
|
1861
|
-
├── schemas/
|
|
1862
|
-
├── engine/
|
|
1863
|
-
├── policy/
|
|
1864
|
-
├── runtime/
|
|
1865
|
-
├── adapters/
|
|
1866
|
-
├── workspace/
|
|
1867
|
-
├── evidence/
|
|
1868
|
-
├── storage/
|
|
1869
|
-
└── cli/
|
|
1870
|
-
```
|
|
1871
|
-
|
|
1872
|
-
Adapter 合同稳定后,再拆为独立包。
|
|
1873
|
-
|
|
1874
|
-
---
|
|
1875
|
-
|
|
1876
|
-
## 23.2 模块边界
|
|
1877
|
-
|
|
1878
|
-
```text
|
|
1879
|
-
domain/
|
|
1880
|
-
纯类型和不变量
|
|
1881
|
-
|
|
1882
|
-
engine/
|
|
1883
|
-
Workflow、状态机、Scheduler
|
|
1884
|
-
|
|
1885
|
-
policy/
|
|
1886
|
-
Policy 解析和求值
|
|
1887
|
-
|
|
1888
|
-
runtime/
|
|
1889
|
-
Orchestrator、Budget、Retry、恢复
|
|
1890
|
-
|
|
1891
|
-
adapters/
|
|
1892
|
-
Mock、Shell、Manual
|
|
1893
|
-
|
|
1894
|
-
workspace/
|
|
1895
|
-
Git、worktree、锁、candidate
|
|
1896
|
-
|
|
1897
|
-
evidence/
|
|
1898
|
-
Evidence 收集、摘要和验证
|
|
1899
|
-
|
|
1900
|
-
storage/
|
|
1901
|
-
Event Store、Snapshot、Artifact index
|
|
1902
|
-
|
|
1903
|
-
cli/
|
|
1904
|
-
用户命令和展示
|
|
1905
|
-
```
|
|
1906
|
-
|
|
1907
|
-
任何 `adapter/` 代码不得直接修改 Kernel 状态;只能返回结构化结果,由 Orchestrator 写入 Event。
|
|
1908
|
-
|
|
1909
|
-
---
|
|
1910
|
-
|
|
1911
|
-
# 24. 必须测试的系统不变量
|
|
1912
|
-
|
|
1913
|
-
1. 未通过前置 Policy 的 Step 永远不能启动。
|
|
1914
|
-
2. Worker 永远不能直接修改 Run 状态。
|
|
1915
|
-
3. 人类 Approval 必须绑定精确对象。
|
|
1916
|
-
4. 对象改变后 Approval 必须失效。
|
|
1917
|
-
5. 每次状态转换必须对应一个 Event。
|
|
1918
|
-
6. 每个成功 Step 必须有满足合同的 Evidence。
|
|
1919
|
-
7. `UNVERIFIED` 不得自动转为通过。
|
|
1920
|
-
8. Retry 不得超过预算。
|
|
1921
|
-
9. Reviewer 默认不能写代码。
|
|
1922
|
-
10. 同一 Workspace 不得被两个活动 Worker 同时占用。
|
|
1923
|
-
11. Run 终态默认不可逆。
|
|
1924
|
-
12. Event Ledger 必须能够重建 State。
|
|
1925
|
-
13. Snapshot 损坏不能导致 Event 丢失。
|
|
1926
|
-
14. Worker 输出非法时不得推进状态。
|
|
1927
|
-
15. Adapter 异常退出必须留下失败事实。
|
|
1928
|
-
16. candidate 改变后旧 Review 和 Approval 不得冒充当前结论。
|
|
1929
|
-
17. Worker 不得修改自身 Workflow、Policy 或 Evidence 记录。
|
|
1930
|
-
18. 未配置强制能力时必须公开降级级别。
|
|
1931
|
-
19. BuildBeat 进程退出不得导致安全边界消失。
|
|
1932
|
-
20. Merge 和 Release 在 MVP 中没有可调用能力。
|
|
1933
|
-
|
|
1934
|
-
---
|
|
1935
|
-
|
|
1936
|
-
# 25. 风险与应对
|
|
1937
|
-
|
|
1938
|
-
| 风险 | 影响 | 应对 |
|
|
1939
|
-
|---|---|---|
|
|
1940
|
-
| v2 范围过大 | 长期停留在架构设计 | 只做单仓、单 Run、前台 Build–Verify–Fix |
|
|
1941
|
-
| 过早绑定某个 Agent 工具 | 被厂商 CLI 变化牵制 | Mock + Shell 先行,专用 Adapter 后置 |
|
|
1942
|
-
| Agent 无限修复 | 成本和时间失控 | attempts、budget、无进展检测 |
|
|
1943
|
-
| Agent 修改控制文件 | 绕过 Workflow 和 Policy | 控制文件只读、隔离 Workspace |
|
|
1944
|
-
| Worker 伪造证据 | 错误候选被放行 | Runner 回读真实命令和 Git 状态 |
|
|
1945
|
-
| Approval 过期 | 人批的不是当前代码 | Approval 绑定 digest 和 candidate |
|
|
1946
|
-
| Runtime 状态损坏 | 无法恢复 | Event sourcing + 原子 Snapshot |
|
|
1947
|
-
| worktree 管理复杂 | 残留分支和目录 | 明确 lifecycle 和 cleanup policy |
|
|
1948
|
-
| Semantic Reviewer 不稳定 | 误判或漏判 | 确定性检查优先,语义结论不可独立批准高风险动作 |
|
|
1949
|
-
| v1/v2 双写 | 新旧事实冲突 | 单向迁移,禁止长期双写 |
|
|
1950
|
-
| 过早支持多仓 | 状态和事务复杂度骤增 | 多仓延后到单仓 MVP 稳定后 |
|
|
1951
|
-
| 自动化权限过大 | 产生不可逆损失 | MVP 不提供 merge/deploy capability |
|
|
1952
|
-
|
|
1953
|
-
---
|
|
1954
|
-
|
|
1955
|
-
# 26. 前两周立即执行清单
|
|
1956
|
-
|
|
1957
|
-
## 第 1 周
|
|
1958
|
-
|
|
1959
|
-
1. 创建 `v1-maintenance` 分支;
|
|
1960
|
-
2. 创建 `v2` 分支;
|
|
1961
|
-
3. 新建 `docs/v2/`;
|
|
1962
|
-
4. 完成产品定位 RFC;
|
|
1963
|
-
5. 完成领域模型 RFC;
|
|
1964
|
-
6. 完成 Workflow / Policy RFC;
|
|
1965
|
-
7. 删除“Skill-only 必须与 Runtime 等价”的 v2 约束;
|
|
1966
|
-
8. 将固定 Gate1–Gate4 标记为 Legacy Preset;
|
|
1967
|
-
9. 冻结 v1 新功能;
|
|
1968
|
-
10. 建立 v2 决策记录。
|
|
1969
|
-
|
|
1970
|
-
## 第 2 周
|
|
1971
|
-
|
|
1972
|
-
1. 创建 TypeScript v2 目录;
|
|
1973
|
-
2. 定义所有核心 Schema;
|
|
1974
|
-
3. 实现 Event 类型;
|
|
1975
|
-
4. 实现 append-only Event Store;
|
|
1976
|
-
5. 实现 State reducer;
|
|
1977
|
-
6. 实现最小 Workflow parser;
|
|
1978
|
-
7. 实现 GateResult;
|
|
1979
|
-
8. 实现 Mock Adapter;
|
|
1980
|
-
9. 编写第一个软件交付 Workflow;
|
|
1981
|
-
10. 完成纯模拟的 Build–Verify–Fix Loop。
|
|
1982
|
-
|
|
1983
|
-
在第 2 周结束前,不接真实 Claude 或 Codex Adapter。先证明 Kernel、事件和 Loop 本身正确。
|
|
1984
|
-
|
|
1985
|
-
---
|
|
1986
|
-
|
|
1987
|
-
# 27. Beta 发布前的最终决策点
|
|
1988
|
-
|
|
1989
|
-
以下问题在对应阶段必须形成明确结论:
|
|
1990
|
-
|
|
1991
|
-
| 决策 | 最晚时间 |
|
|
1992
|
-
|---|---|
|
|
1993
|
-
| v2 是否正式采用“交付控制平面”定位 | M0 |
|
|
1994
|
-
| Artifact 和 Runtime 的存储边界 | M0 |
|
|
1995
|
-
| Workflow / Policy Schema | M1 |
|
|
1996
|
-
| Event Store 格式 | M1 |
|
|
1997
|
-
| 一个 Run 是否强制独立 worktree | M2 |
|
|
1998
|
-
| 第一个专用 Agent Adapter | M3 |
|
|
1999
|
-
| 默认 Risk Preset | M4 |
|
|
2000
|
-
| v1 Importer 的自动化边界 | M5 |
|
|
2001
|
-
| `main` 何时切换至 v2 | M6 |
|
|
2002
|
-
| v1 `latest` 何时停止维护 | 2.0 稳定版后单独决定 |
|
|
2003
|
-
|
|
2004
|
-
---
|
|
2005
|
-
|
|
2006
|
-
# 28. 最终产品形态
|
|
2007
|
-
|
|
2008
|
-
BuildBeat v2 的核心不再是:
|
|
2009
|
-
|
|
2010
|
-
```text
|
|
2011
|
-
给项目生成几份规则文件
|
|
2012
|
-
让多个会话按看板和 status 协作
|
|
2013
|
-
```
|
|
2014
|
-
|
|
2015
|
-
而是:
|
|
2016
|
-
|
|
2017
|
-
```text
|
|
2018
|
-
接受一个工作目标
|
|
2019
|
-
↓
|
|
2020
|
-
建立版本化工件
|
|
2021
|
-
↓
|
|
2022
|
-
由确定性 Kernel 推进 Workflow
|
|
2023
|
-
↓
|
|
2024
|
-
自动调用适合的 Worker
|
|
2025
|
-
↓
|
|
2026
|
-
根据实际 Evidence 继续、修复或暂停
|
|
2027
|
-
↓
|
|
2028
|
-
在人类必须判断的地方请求最小决策
|
|
2029
|
-
↓
|
|
2030
|
-
产生可审查、可恢复、可追溯的交付结果
|
|
2031
|
-
```
|
|
2032
|
-
|
|
2033
|
-
最终产品公式为:
|
|
2034
|
-
|
|
2035
|
-
```text
|
|
2036
|
-
BuildBeat v2
|
|
2037
|
-
=
|
|
2038
|
-
Artifact Protocol
|
|
2039
|
-
+ Deterministic Workflow Kernel
|
|
2040
|
-
+ Policy-based Gates
|
|
2041
|
-
+ Agent Loop Runtime
|
|
2042
|
-
+ Execution Adapters
|
|
2043
|
-
+ Evidence Ledger
|
|
2044
|
-
+ Human Escalation
|
|
2045
|
-
```
|
|
2046
|
-
|
|
2047
|
-
## 核心定位语
|
|
2048
|
-
|
|
2049
|
-
> **BuildBeat 是一个 AI 原生软件交付控制平面:它让外部 Agent 围绕版本化工件持续计划、构建、验证、修复和审查,并通过策略、证据和人类升级机制控制每一次状态转换。**
|
|
2050
|
-
|
|
2051
|
-
## MVP 核心承诺
|
|
2052
|
-
|
|
2053
|
-
> **给 BuildBeat 一个已批准的目标和计划,它会自动完成 Build–Verify–Fix–Review 循环,并携带完整证据停在合并决定前。**
|