vibe-coding-master 0.0.6 → 0.0.8
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/README.md +207 -66
- package/dist/backend/adapters/filesystem.js +13 -0
- package/dist/backend/adapters/git-adapter.js +79 -1
- package/dist/backend/adapters/translation-provider.js +145 -0
- package/dist/backend/api/artifact-routes.js +16 -7
- package/dist/backend/api/harness-routes.js +22 -0
- package/dist/backend/api/message-routes.js +2 -0
- package/dist/backend/api/project-routes.js +3 -8
- package/dist/backend/api/task-routes.js +14 -0
- package/dist/backend/api/translation-routes.js +70 -0
- package/dist/backend/runtime/node-pty-runtime.js +20 -18
- package/dist/backend/server.js +33 -2
- package/dist/backend/services/app-settings-service.js +128 -0
- package/dist/backend/services/artifact-service.js +7 -4
- package/dist/backend/services/claude-transcript-service.js +509 -0
- package/dist/backend/services/command-dispatcher.js +4 -2
- package/dist/backend/services/harness-service.js +196 -0
- package/dist/backend/services/message-service.js +1 -1
- package/dist/backend/services/project-service.js +50 -9
- package/dist/backend/services/session-service.js +13 -9
- package/dist/backend/services/status-service.js +79 -1
- package/dist/backend/services/task-service.js +118 -4
- package/dist/backend/services/translation-prompts.js +173 -0
- package/dist/backend/services/translation-queue.js +39 -0
- package/dist/backend/services/translation-service.js +546 -0
- package/dist/backend/templates/handoff.js +32 -0
- package/dist/backend/templates/harness/architect-agent.js +12 -0
- package/dist/backend/templates/harness/claude-root.js +14 -0
- package/dist/backend/templates/harness/coder-agent.js +11 -0
- package/dist/backend/templates/harness/gitignore.js +9 -0
- package/dist/backend/templates/harness/project-manager-agent.js +14 -0
- package/dist/backend/templates/harness/reviewer-agent.js +13 -0
- package/dist/backend/ws/translation-ws.js +35 -0
- package/dist/shared/types/harness.js +1 -0
- package/dist/shared/types/translation.js +5 -0
- package/dist/shared/validation/artifact-check.js +15 -1
- package/dist/shared/validation/language-detect.js +46 -0
- package/dist-frontend/assets/index-CuiNNOzj.css +32 -0
- package/dist-frontend/assets/index-D59GuHCR.js +58 -0
- package/dist-frontend/index.html +2 -2
- package/docs/cc-best-practices.md +109 -40
- package/docs/product-design.md +370 -1374
- package/docs/v1-architecture-design.md +595 -1114
- package/docs/v1-implementation-plan.md +898 -1603
- package/package.json +1 -1
- package/scripts/verify-package.mjs +8 -0
- package/dist/backend/templates/role-messaging-context.js +0 -44
- package/dist-frontend/assets/index-Bah6k-Ix.css +0 -32
- package/dist-frontend/assets/index-EMaQuIB6.js +0 -58
- package/docs/v1-message-bus-orchestration-design.md +0 -534
package/docs/product-design.md
CHANGED
|
@@ -1,1307 +1,387 @@
|
|
|
1
|
-
# VibeCodingMaster
|
|
1
|
+
# VibeCodingMaster Product Design
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
日期:2026-05-29
|
|
5
|
-
状态:产品设计草案
|
|
6
|
-
依据:`docs/cc-best-practices.md`
|
|
3
|
+
Last updated: 2026-05-31
|
|
7
4
|
|
|
8
|
-
|
|
5
|
+
This document describes the current product direction and implemented V1 behavior for VCM.
|
|
9
6
|
|
|
10
|
-
|
|
7
|
+
## 1. Product Positioning
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
VibeCodingMaster is a local GUI task workspace for Claude Code.
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
It helps a user run one engineering task through several explicit Claude Code role sessions:
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
- `project-manager`
|
|
14
|
+
- `architect`
|
|
15
|
+
- `coder`
|
|
16
|
+
- `reviewer`
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
The user should mostly talk to `project-manager`. The project manager coordinates the other roles through VCM messaging and durable handoff files. The user can still switch into any role session to inspect, guide, or interrupt.
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
user intent
|
|
22
|
-
-> GUI task workspace
|
|
23
|
-
-> project manager session clarification
|
|
24
|
-
-> project manager command planning
|
|
25
|
-
-> task severity classification
|
|
26
|
-
-> task spec
|
|
27
|
-
-> required role route
|
|
28
|
-
-> role session cockpit
|
|
29
|
-
-> role-specific command generation
|
|
30
|
-
-> architecture plan
|
|
31
|
-
-> public contract review
|
|
32
|
-
-> Claude Code implementation
|
|
33
|
-
-> validation
|
|
34
|
-
-> independent AI review
|
|
35
|
-
-> replan when needed
|
|
36
|
-
-> PR / final acceptance
|
|
37
|
-
-> project memory update
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## 2. 产品背景
|
|
41
|
-
|
|
42
|
-
Claude Code 已经可以在真实项目中高效写代码,但复杂项目里的失败通常不是因为模型完全不会写代码,而是因为缺少工程控制层:
|
|
43
|
-
|
|
44
|
-
- 需求没有被澄清,Claude Code 直接开始改代码。
|
|
45
|
-
- 任务没有 scope、non-goals、public contract、test contract。
|
|
46
|
-
- 一个 session 同时承担架构、编码、测试、review,导致自我确认。
|
|
47
|
-
- 任务进度、实现偏差、验证结果和决策只留在聊天里,无法跨 session 延续。
|
|
48
|
-
- 文档、模块边界、测试策略和代码变化不同步。
|
|
49
|
-
- AI 发现了计划问题,但没有正式 Replan 协议,只能边做边改。
|
|
50
|
-
- 代码完成后缺少独立 reviewer 和验收清单。
|
|
51
|
-
|
|
52
|
-
最新最佳实践的核心判断是:
|
|
53
|
-
|
|
54
|
-
> AI coding reliability comes from two things: public contract design prevents architecture drift, and public contract tests prevent behavior drift.
|
|
55
|
-
|
|
56
|
-
VibeCodingMaster 的产品机会,就是把这条原则变成日常 AI 编程工作流。
|
|
57
|
-
|
|
58
|
-
## 3. 核心价值
|
|
59
|
-
|
|
60
|
-
### 3.1 对用户
|
|
61
|
-
|
|
62
|
-
- 用户可以用自然语言描述需求,不需要手写复杂 Claude Code prompt。
|
|
63
|
-
- 用户能在编码前看到清晰的实现方案和风险。
|
|
64
|
-
- 用户能知道 Claude Code 做了什么、为什么这么做、如何验证。
|
|
65
|
-
- 用户能把长期项目的经验沉淀到 repo,而不是沉没在聊天记录里。
|
|
66
|
-
|
|
67
|
-
### 3.2 对工程团队
|
|
68
|
-
|
|
69
|
-
- 降低 AI 编码带来的架构漂移。
|
|
70
|
-
- 降低行为回归和测试缺失。
|
|
71
|
-
- 让高风险任务进入更严格的角色路由和 human approval。
|
|
72
|
-
- 让 AI 生成代码具备可审计的任务、计划、验证和 review 证据。
|
|
73
|
-
|
|
74
|
-
### 3.3 对 Claude Code
|
|
75
|
-
|
|
76
|
-
- 给 Claude Code 提供正确上下文,而不是大量噪音。
|
|
77
|
-
- 把模糊需求转成明确 task spec。
|
|
78
|
-
- 用 public contract 限制可变范围。
|
|
79
|
-
- 用 contract tests 和 validation commands 提供可执行反馈。
|
|
80
|
-
- 用 handoff artifacts 跨 session 保留任务状态。
|
|
81
|
-
|
|
82
|
-
## 4. 目标用户
|
|
83
|
-
|
|
84
|
-
### 4.1 Solo Builder
|
|
20
|
+
VCM is not a hosted SaaS product. It runs locally, connects to a local repository path, starts local Claude Code processes, and writes local task metadata into that repository.
|
|
85
21
|
|
|
86
|
-
|
|
22
|
+
## 2. Product Goals
|
|
87
23
|
|
|
88
|
-
-
|
|
89
|
-
- 一次做太多。
|
|
90
|
-
- 上下文丢失。
|
|
91
|
-
- 测试没跑。
|
|
92
|
-
- 代码能跑但架构变形。
|
|
24
|
+
VCM V1 must make multi-session Claude Code work visible and recoverable:
|
|
93
25
|
|
|
94
|
-
|
|
26
|
+
- Connect a local Git repository.
|
|
27
|
+
- Create a named task with its own branch and task-level worktree by default.
|
|
28
|
+
- Start, stop, restart, and resume one Claude Code session per role.
|
|
29
|
+
- Keep role terminals embedded in one GUI.
|
|
30
|
+
- Preserve task state, session state, handoff files, message history, and raw terminal logs.
|
|
31
|
+
- Let roles communicate through a PM-mediated message bus.
|
|
32
|
+
- Let users choose between manual message approval and auto orchestration.
|
|
33
|
+
- Install or update VCM role rules into `CLAUDE.md` and `.claude/agents/*.md`.
|
|
34
|
+
- Provide a low-cost translation layer so the user can write Chinese while Claude Code receives English engineering instructions.
|
|
35
|
+
- Clean up completed task worktrees and VCM task metadata when the task is done.
|
|
95
36
|
|
|
96
|
-
|
|
37
|
+
## 3. Non-Goals
|
|
97
38
|
|
|
98
|
-
|
|
39
|
+
V1 does not include:
|
|
99
40
|
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
41
|
+
- tmux.
|
|
42
|
+
- Worktree isolation per role.
|
|
43
|
+
- Switching a task to a different branch or worktree after task creation.
|
|
44
|
+
- A separate `Create task worktree` action after the task already exists.
|
|
45
|
+
- Concurrent edits across roles as a product workflow.
|
|
46
|
+
- Automatic confirmation of Claude Code permission prompts.
|
|
47
|
+
- A main-page artifact inspector.
|
|
48
|
+
- Raw PTY parsing to infer Claude answer boundaries.
|
|
49
|
+
- Automatic writing of translations into repo artifacts.
|
|
50
|
+
- Hosted auth, cloud sync, multi-user collaboration, or project indexing.
|
|
104
51
|
|
|
105
|
-
|
|
52
|
+
## 4. Core Workflow
|
|
106
53
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
能表达产品意图,但不能稳定写出高质量工程 prompt。
|
|
110
|
-
|
|
111
|
-
VibeCodingMaster 把业务语言转成:
|
|
112
|
-
|
|
113
|
-
- task spec
|
|
114
|
-
- architecture plan
|
|
115
|
-
- public surface contract
|
|
116
|
-
- validation plan
|
|
117
|
-
- PR summary
|
|
118
|
-
|
|
119
|
-
## 5. 产品原则
|
|
120
|
-
|
|
121
|
-
### 5.1 Repo 是事实源
|
|
122
|
-
|
|
123
|
-
重要项目知识必须进入 repo,成为 Claude Code 可读取、可版本化、可 review 的 artifact。
|
|
124
|
-
|
|
125
|
-
核心 artifact:
|
|
54
|
+
Recommended flow:
|
|
126
55
|
|
|
127
56
|
```text
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
tools/
|
|
57
|
+
project-manager
|
|
58
|
+
-> architect architecture plan
|
|
59
|
+
-> coder implementation and validation
|
|
60
|
+
-> reviewer independent review
|
|
61
|
+
-> architect docs sync / architecture drift check
|
|
62
|
+
-> project-manager final acceptance, commit, and PR
|
|
135
63
|
```
|
|
136
64
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
普通 feature、bug fix、PR 不能只说“改哪些文件”,还要定义:
|
|
140
|
-
|
|
141
|
-
- public/exported functions
|
|
142
|
-
- public methods
|
|
143
|
-
- module APIs
|
|
144
|
-
- service / controller / repository public entry points
|
|
145
|
-
- route handlers / command handlers
|
|
146
|
-
- hooks
|
|
147
|
-
- externally used component props
|
|
148
|
-
|
|
149
|
-
VibeCodingMaster 必须在编码前帮助用户锁定这些公共边界。
|
|
150
|
-
|
|
151
|
-
### 5.3 Public Contract Tests 是验收底线
|
|
152
|
-
|
|
153
|
-
新增或修改 public function 必须有契约测试。
|
|
154
|
-
|
|
155
|
-
最低要求:
|
|
156
|
-
|
|
157
|
-
- happy path
|
|
158
|
-
- boundary or failure path
|
|
159
|
-
|
|
160
|
-
高风险业务还需要:
|
|
65
|
+
The workflow is a soft guide in V1. VCM computes readiness from handoff artifact checks and session state, then shows the result in the sidebar. It does not block the user from manually starting a role out of order.
|
|
161
66
|
|
|
162
|
-
|
|
163
|
-
- permission or state constraints
|
|
164
|
-
- side effects
|
|
165
|
-
- idempotency
|
|
166
|
-
- historical regressions
|
|
67
|
+
### 4.1 Task Worktree Model
|
|
167
68
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
复杂任务中,不允许一个 Claude Code session 同时拥有架构、编码、最终测试和独立 review。
|
|
171
|
-
|
|
172
|
-
默认角色链:
|
|
69
|
+
Task-level worktree management is the current model for multi-task parallelism:
|
|
173
70
|
|
|
174
71
|
```text
|
|
175
|
-
|
|
72
|
+
one task
|
|
73
|
+
-> one branch
|
|
74
|
+
-> one git worktree
|
|
75
|
+
-> one handoff directory
|
|
76
|
+
-> one set of role sessions
|
|
176
77
|
```
|
|
177
78
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
角色之间通过 handoff artifacts 交接:
|
|
79
|
+
VCM must not create worktrees per role. `project-manager`, `architect`, `coder`, and `reviewer` for the same task all run in the same task worktree and hand off sequentially.
|
|
181
80
|
|
|
182
|
-
|
|
183
|
-
.ai/handoffs/<task-slug>/
|
|
184
|
-
architecture-plan.md
|
|
185
|
-
implementation-log.md
|
|
186
|
-
validation-log.md
|
|
187
|
-
review-report.md
|
|
188
|
-
```
|
|
81
|
+
When the user creates a task, VCM creates the branch and worktree immediately. There is no separate later button named `Create task worktree`, and a task cannot be switched to another worktree after creation.
|
|
189
82
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
### 5.6 Replan 是正式流程
|
|
193
|
-
|
|
194
|
-
当计划和代码现实不一致时,不能悄悄改方向。
|
|
195
|
-
|
|
196
|
-
VibeCodingMaster 必须触发:
|
|
83
|
+
Branch naming:
|
|
197
84
|
|
|
198
85
|
```text
|
|
199
|
-
|
|
200
|
-
-> Explain blocker
|
|
201
|
-
-> Compare approved plan with code reality
|
|
202
|
-
-> List options
|
|
203
|
-
-> Recommend new plan
|
|
204
|
-
-> Ask approval if scope or risk changed
|
|
205
|
-
-> Update docs
|
|
206
|
-
-> Continue
|
|
86
|
+
feature/<task-name>
|
|
207
87
|
```
|
|
208
88
|
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
VibeCodingMaster 不是让所有任务都变重,而是按任务风险选择流程重量。
|
|
212
|
-
|
|
213
|
-
小任务要快,复杂任务要稳,高风险任务要有硬 gate。
|
|
214
|
-
|
|
215
|
-
### 5.8 GUI 是主交互入口
|
|
216
|
-
|
|
217
|
-
V1 的主入口不是 CLI,而是本地 GUI 工作台。
|
|
218
|
-
|
|
219
|
-
用户应该通过页面完成:
|
|
220
|
-
|
|
221
|
-
- 选择本地 repo。
|
|
222
|
-
- 创建任务。
|
|
223
|
-
- 启动或停止 role sessions。
|
|
224
|
-
- 切换 `project-manager / architect / coder / reviewer`。
|
|
225
|
-
- 直接在 session 面板里和 Claude Code 沟通。
|
|
226
|
-
- 查看 role command、handoff artifacts、logs、状态和风险。
|
|
227
|
-
|
|
228
|
-
CLI 可以作为开发、调试或自动化入口保留,但不能成为 V1 的主要用户体验。
|
|
229
|
-
|
|
230
|
-
### 5.9 终端是能力,不是产品界面
|
|
231
|
-
|
|
232
|
-
Claude Code 本质上仍然是交互式终端程序,VibeCodingMaster 可以使用 embedded terminal 来承载它。
|
|
233
|
-
|
|
234
|
-
但用户不应该被迫理解:
|
|
235
|
-
|
|
236
|
-
- pseudo-terminal。
|
|
237
|
-
- process id。
|
|
238
|
-
- terminal stream。
|
|
239
|
-
- WebSocket message。
|
|
240
|
-
- input/output bridge。
|
|
241
|
-
|
|
242
|
-
这些只应该是底层实现细节。产品界面表达的是任务、角色、会话、状态、artifact 和验收。
|
|
243
|
-
|
|
244
|
-
## 6. 核心概念
|
|
245
|
-
|
|
246
|
-
### 6.1 Project Manager
|
|
247
|
-
|
|
248
|
-
VibeCodingMaster 的核心角色是 Project Manager。
|
|
249
|
-
|
|
250
|
-
Project Manager 是面向用户的沟通者,也是面向 AI 角色的指令调度者。它不只是记录流程,而是负责把用户的业务语言逐步转成其他角色可以准确执行的命令。
|
|
251
|
-
|
|
252
|
-
它负责:
|
|
253
|
-
|
|
254
|
-
- 和用户对话,澄清需求。
|
|
255
|
-
- 把用户输入整理成 task brief 和 task spec。
|
|
256
|
-
- 判断任务严重级别。
|
|
257
|
-
- 选择 required role route。
|
|
258
|
-
- 决定下一步应该调用 architect、coder、reviewer 还是 specialist。
|
|
259
|
-
- 为每个角色准备准确、完整、边界清楚的 role command。
|
|
260
|
-
- 确保 handoff artifacts 存在。
|
|
261
|
-
- 调度 Claude Code 的 architect、coder、reviewer session。
|
|
262
|
-
- 收集 validation evidence。
|
|
263
|
-
- 判断是否需要 Replan。
|
|
264
|
-
- 维护项目状态和最终验收。
|
|
265
|
-
|
|
266
|
-
它不应该成为一个“什么都自己做”的 coding session。
|
|
267
|
-
|
|
268
|
-
它发给其他角色的命令必须包含:
|
|
269
|
-
|
|
270
|
-
- role identity
|
|
271
|
-
- task spec path
|
|
272
|
-
- required input artifacts
|
|
273
|
-
- allowed scope
|
|
274
|
-
- public surface contract
|
|
275
|
-
- test contract
|
|
276
|
-
- stop conditions
|
|
277
|
-
- validation commands
|
|
278
|
-
- expected output artifact path
|
|
279
|
-
- escalation / Replan triggers
|
|
280
|
-
|
|
281
|
-
换句话说:
|
|
89
|
+
Worktree path:
|
|
282
90
|
|
|
283
91
|
```text
|
|
284
|
-
|
|
92
|
+
<base-repo>/.ai/vcm/worktrees/<task-name>
|
|
285
93
|
```
|
|
286
94
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
### 6.2 Task Spec
|
|
290
|
-
|
|
291
|
-
Task Spec 是用户需求进入工程系统的入口。
|
|
292
|
-
|
|
293
|
-
建议路径:
|
|
95
|
+
Example:
|
|
294
96
|
|
|
295
97
|
```text
|
|
296
|
-
|
|
98
|
+
base repo: /workspace
|
|
99
|
+
task: docs-cleanup
|
|
100
|
+
branch: feature/docs-cleanup
|
|
101
|
+
worktree: /workspace/.ai/vcm/worktrees/docs-cleanup
|
|
297
102
|
```
|
|
298
103
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
```md
|
|
302
|
-
# Task Spec
|
|
303
|
-
|
|
304
|
-
## Goal
|
|
305
|
-
## Background
|
|
306
|
-
## Scope
|
|
307
|
-
## Non-goals
|
|
308
|
-
## Task Severity
|
|
309
|
-
## Required Role Route
|
|
310
|
-
## Handoff Directory
|
|
311
|
-
## Relevant Files
|
|
312
|
-
## File Responsibilities
|
|
313
|
-
## Public Surface Contract
|
|
314
|
-
## Test Contract
|
|
315
|
-
## Architecture Constraints
|
|
316
|
-
## Stop Conditions
|
|
317
|
-
## Expected Behavior
|
|
318
|
-
## Validation Commands
|
|
319
|
-
## Definition of Done
|
|
320
|
-
## Risks
|
|
321
|
-
## Questions
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
### 6.3 Architecture Plan
|
|
325
|
-
|
|
326
|
-
Architecture Plan 是 architect role 的输出。
|
|
327
|
-
|
|
328
|
-
建议路径:
|
|
329
|
-
|
|
330
|
-
```text
|
|
331
|
-
.ai/handoffs/<task-slug>/architecture-plan.md
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
它定义:
|
|
335
|
-
|
|
336
|
-
- task classification
|
|
337
|
-
- required role route
|
|
338
|
-
- modules and files
|
|
339
|
-
- file responsibilities
|
|
340
|
-
- public surface contract
|
|
341
|
-
- dependency direction
|
|
342
|
-
- data flow
|
|
343
|
-
- phases
|
|
344
|
-
- validation per phase
|
|
345
|
-
- rollback / replan triggers
|
|
346
|
-
- risks
|
|
347
|
-
- docs to update
|
|
348
|
-
|
|
349
|
-
### 6.4 Implementation Log
|
|
350
|
-
|
|
351
|
-
Implementation Log 是 coder role 的输出。
|
|
104
|
+
The repo's `.gitignore` must ignore `.ai/vcm/`. This is mandatory because the task worktrees live under `.ai/vcm/worktrees/`, and the base repository must not see nested worktree files as untracked source files.
|
|
352
105
|
|
|
353
|
-
|
|
106
|
+
Task creation flow:
|
|
354
107
|
|
|
355
108
|
```text
|
|
356
|
-
|
|
109
|
+
New Task submit
|
|
110
|
+
-> validate task name
|
|
111
|
+
-> derive branch feature/<task-name>
|
|
112
|
+
-> derive worktree path .ai/vcm/worktrees/<task-name>
|
|
113
|
+
-> verify .ai/vcm/ is ignored and the base repo is clean
|
|
114
|
+
-> git worktree add -b feature/<task-name> .ai/vcm/worktrees/<task-name> <base-ref>
|
|
115
|
+
-> create task metadata
|
|
116
|
+
-> create handoff structure inside the task worktree
|
|
117
|
+
-> open the task workspace with role session cwd = task worktree
|
|
357
118
|
```
|
|
358
119
|
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
- files changed
|
|
362
|
-
- public surface changed
|
|
363
|
-
- tests added / updated
|
|
364
|
-
- validation run
|
|
365
|
-
- deviations from architecture plan
|
|
366
|
-
- follow-ups
|
|
367
|
-
|
|
368
|
-
### 6.5 Validation Log
|
|
369
|
-
|
|
370
|
-
Validation Log 是任务级验证证据。
|
|
371
|
-
|
|
372
|
-
建议路径:
|
|
120
|
+
Task cleanup flow:
|
|
373
121
|
|
|
374
122
|
```text
|
|
375
|
-
|
|
123
|
+
task complete
|
|
124
|
+
-> stop running role sessions
|
|
125
|
+
-> verify task worktree is safe to remove
|
|
126
|
+
-> remove git worktree
|
|
127
|
+
-> remove VCM task/session/message/orchestration metadata
|
|
128
|
+
-> keep or delete branch according to guarded branch cleanup policy
|
|
376
129
|
```
|
|
377
130
|
|
|
378
|
-
|
|
379
|
-
`.ai/state/validation-log.md` 只是跨任务滚动索引。
|
|
131
|
+
Branch deletion should be a separate guarded confirmation, ideally only after the branch is merged or the user explicitly confirms deletion. Worktree cleanup itself removes the local working directory and task metadata.
|
|
380
132
|
|
|
381
|
-
|
|
133
|
+
## 5. Roles
|
|
382
134
|
|
|
383
|
-
|
|
135
|
+
### Project Manager
|
|
384
136
|
|
|
385
|
-
|
|
137
|
+
The project manager owns:
|
|
386
138
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
-
|
|
394
|
-
- scope review
|
|
395
|
-
- architecture review
|
|
396
|
-
- public contract review
|
|
397
|
-
- test review
|
|
398
|
-
- missing tests added
|
|
399
|
-
- validation evidence
|
|
400
|
-
- docs sync
|
|
401
|
-
- findings
|
|
402
|
-
- decision
|
|
139
|
+
- user communication
|
|
140
|
+
- task clarification
|
|
141
|
+
- role routing
|
|
142
|
+
- message dispatch
|
|
143
|
+
- handoff verification
|
|
144
|
+
- final acceptance
|
|
145
|
+
- commit and PR preparation after gates pass
|
|
403
146
|
|
|
404
|
-
|
|
147
|
+
The project manager must not become the architect, coder, and reviewer for non-trivial work.
|
|
405
148
|
|
|
406
|
-
|
|
149
|
+
### Architect
|
|
407
150
|
|
|
408
|
-
|
|
151
|
+
The architect owns:
|
|
409
152
|
|
|
410
|
-
Role Command 的输入:
|
|
411
|
-
|
|
412
|
-
- user intent
|
|
413
|
-
- task spec
|
|
414
|
-
- required role route
|
|
415
153
|
- architecture plan
|
|
416
|
-
-
|
|
417
|
-
-
|
|
418
|
-
-
|
|
419
|
-
-
|
|
420
|
-
-
|
|
421
|
-
-
|
|
422
|
-
|
|
423
|
-
Role Command 必须写入当前 VCM task 的 canonical handoff directory:
|
|
424
|
-
|
|
425
|
-
```text
|
|
426
|
-
.ai/handoffs/<task-slug>/role-commands/<role>.md
|
|
427
|
-
```
|
|
428
|
-
|
|
429
|
-
Project Manager 不得为同一个 VCM task 创建或使用另一个 `.ai/handoffs/<other-task>/` 目录。如果 task slug 不对,Project Manager 必须停下来要求用户创建或选择正确的 VCM task。
|
|
430
|
-
|
|
431
|
-
Role Command 的输出形式:
|
|
432
|
-
|
|
433
|
-
```text
|
|
434
|
-
Start the architect role for task <task-slug>.
|
|
435
|
-
|
|
436
|
-
Read:
|
|
437
|
-
- <task spec path>
|
|
438
|
-
- <relevant docs>
|
|
439
|
-
|
|
440
|
-
Produce:
|
|
441
|
-
- .ai/handoffs/<task-slug>/architecture-plan.md
|
|
154
|
+
- module boundaries
|
|
155
|
+
- file responsibilities
|
|
156
|
+
- public contracts
|
|
157
|
+
- test contracts
|
|
158
|
+
- Replan triggers
|
|
159
|
+
- post-review docs sync and architecture drift checks
|
|
442
160
|
|
|
443
|
-
|
|
444
|
-
- define public surface contract
|
|
445
|
-
- define test contract
|
|
446
|
-
- do not edit production code
|
|
447
|
-
- stop and escalate if ...
|
|
448
|
-
```
|
|
161
|
+
Outputs:
|
|
449
162
|
|
|
450
|
-
|
|
163
|
+
- `.ai/handoffs/<task>/architecture-plan.md`
|
|
164
|
+
- `.ai/handoffs/<task>/docs-sync-report.md`
|
|
451
165
|
|
|
452
|
-
|
|
166
|
+
### Coder
|
|
453
167
|
|
|
454
|
-
|
|
168
|
+
The coder owns:
|
|
455
169
|
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
| T2 | ordinary feature | 有边界的多文件 feature、普通 PR | `architect -> coder -> reviewer` |
|
|
461
|
-
| T3 | cross-module / architectural | 跨模块改动、重构、新 public surface | `architect -> coder -> reviewer` |
|
|
462
|
-
| T4 | high-risk | auth、permission、payment、billing、schema、public API、security | `architect -> specialist -> coder -> reviewer -> human approval` |
|
|
463
|
-
| T5 | large rewrite / greenfield | 新子系统、大迁移、长期重构 | `architect`,然后每个 phase 循环 `coder -> reviewer`,阶段边界做 architect review |
|
|
170
|
+
- implementation within the approved plan
|
|
171
|
+
- direct unit/contract/regression tests
|
|
172
|
+
- validation evidence
|
|
173
|
+
- implementation log
|
|
464
174
|
|
|
465
|
-
|
|
175
|
+
Outputs:
|
|
466
176
|
|
|
467
|
-
|
|
177
|
+
- `.ai/handoffs/<task>/implementation-log.md`
|
|
178
|
+
- `.ai/handoffs/<task>/validation-log.md`
|
|
468
179
|
|
|
469
|
-
###
|
|
180
|
+
### Reviewer
|
|
470
181
|
|
|
471
|
-
|
|
182
|
+
The reviewer owns:
|
|
472
183
|
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
-> check CLAUDE.md
|
|
479
|
-
-> check docs/ARCHITECTURE.md
|
|
480
|
-
-> check docs/MODULE_MAP.md
|
|
481
|
-
-> check docs/TESTING.md
|
|
482
|
-
-> check module-local CLAUDE.md
|
|
483
|
-
-> check validation tools
|
|
484
|
-
-> check generated artifacts
|
|
485
|
-
-> report harness gaps
|
|
486
|
-
```
|
|
184
|
+
- independent review
|
|
185
|
+
- test adequacy
|
|
186
|
+
- scope and architecture compliance
|
|
187
|
+
- docs gap detection
|
|
188
|
+
- risk findings
|
|
487
189
|
|
|
488
|
-
|
|
190
|
+
Output:
|
|
489
191
|
|
|
490
|
-
-
|
|
491
|
-
- 缺失的核心文档。
|
|
492
|
-
- 缺失的 validation commands。
|
|
493
|
-
- 高风险模块。
|
|
494
|
-
- 是否存在 generated artifact freshness check。
|
|
495
|
-
- 是否适合执行非平凡 AI coding。
|
|
192
|
+
- `.ai/handoffs/<task>/review-report.md`
|
|
496
193
|
|
|
497
|
-
|
|
194
|
+
## 6. Information Architecture
|
|
498
195
|
|
|
499
|
-
|
|
196
|
+
The app has two primary areas:
|
|
500
197
|
|
|
501
198
|
```text
|
|
502
|
-
|
|
199
|
+
┌───────────────────────────────┬─────────────────────────────────────────────┐
|
|
200
|
+
│ Sidebar │ Task Workspace │
|
|
201
|
+
│ collapsible sections │ header + active role console │
|
|
202
|
+
└───────────────────────────────┴─────────────────────────────────────────────┘
|
|
503
203
|
```
|
|
504
204
|
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
- 期望行为是什么?
|
|
508
|
-
- 哪些入口受影响?
|
|
509
|
-
- 是否允许改 public API?
|
|
510
|
-
- 是否允许改 schema?
|
|
511
|
-
- 是否涉及权限、支付、数据删除?
|
|
512
|
-
- 成功标准是什么?
|
|
513
|
-
- 需要保留哪些兼容行为?
|
|
205
|
+
### Sidebar
|
|
514
206
|
|
|
515
|
-
|
|
207
|
+
All sidebar groups are collapsible and default to collapsed. When no task is selected, `Repository Path` opens by default.
|
|
516
208
|
|
|
517
|
-
|
|
209
|
+
Sections:
|
|
518
210
|
|
|
519
|
-
|
|
211
|
+
- `Repository Path`
|
|
212
|
+
- `Repository`
|
|
213
|
+
- `Workflow`
|
|
214
|
+
- `Settings`
|
|
215
|
+
- `VCM Harness`
|
|
216
|
+
- `New Task`
|
|
217
|
+
- `Tasks`
|
|
520
218
|
|
|
521
|
-
|
|
522
|
-
- 普通任务定义 public surface contract。
|
|
523
|
-
- 新增或修改 public function 定义 test contract。
|
|
524
|
-
- 高风险任务定义 human approval gate。
|
|
525
|
-
|
|
526
|
-
### 8.4 Preflight Architecture Review
|
|
527
|
-
|
|
528
|
-
VibeCodingMaster 调用 Claude Code architect session 或等价架构角色生成 `architecture-plan.md`。
|
|
529
|
-
|
|
530
|
-
随后可调用独立模型做 Preflight Review,例如 ChatGPT、Gemini 或 fresh Claude session。
|
|
531
|
-
|
|
532
|
-
Preflight Review 输出:
|
|
219
|
+
`Repository Path` layout:
|
|
533
220
|
|
|
534
221
|
```text
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
Architecture Risks:
|
|
539
|
-
Public Contract Risks:
|
|
540
|
-
Missing Context:
|
|
541
|
-
Test Requirements:
|
|
542
|
-
Suggested Plan Changes:
|
|
543
|
-
Final Recommendation:
|
|
222
|
+
Repository Path
|
|
223
|
+
[ /path/to/repo ]
|
|
224
|
+
[ Recent v ] [ Connect ]
|
|
544
225
|
```
|
|
545
226
|
|
|
546
|
-
|
|
547
|
-
如果 decision 是 `block`,停止并请求用户或 human reviewer 决策。
|
|
227
|
+
`Repository` shows:
|
|
548
228
|
|
|
549
|
-
|
|
229
|
+
- path
|
|
230
|
+
- branch
|
|
231
|
+
- working tree state
|
|
550
232
|
|
|
551
|
-
|
|
233
|
+
The old `Dirty: yes/no` label is not used. The UI uses `Working tree: clean` or `Working tree: uncommitted changes`.
|
|
552
234
|
|
|
553
|
-
|
|
235
|
+
`Workflow` shows the five soft workflow gates:
|
|
554
236
|
|
|
555
|
-
-
|
|
556
|
-
-
|
|
557
|
-
-
|
|
558
|
-
-
|
|
559
|
-
-
|
|
560
|
-
- validation commands
|
|
561
|
-
- stop conditions
|
|
562
|
-
- handoff log path
|
|
237
|
+
- Architecture
|
|
238
|
+
- Implementation
|
|
239
|
+
- Review
|
|
240
|
+
- Docs Sync
|
|
241
|
+
- PM Final
|
|
563
242
|
|
|
564
|
-
|
|
243
|
+
`Settings` contains:
|
|
565
244
|
|
|
566
|
-
-
|
|
567
|
-
-
|
|
568
|
-
-
|
|
569
|
-
- architecture direction
|
|
570
|
-
- test strategy
|
|
245
|
+
- `Messages` button, opening a modal list of role messages.
|
|
246
|
+
- `Events` button, opening a modal list of runtime UI events for the current task.
|
|
247
|
+
- `Auto orchestration` on/off toggle.
|
|
571
248
|
|
|
572
|
-
|
|
249
|
+
There is no separate `Pause orchestration` or `Resume orchestration` control in the GUI. The current product model is one on/off toggle.
|
|
573
250
|
|
|
574
|
-
|
|
251
|
+
`VCM Harness` shows whether VCM managed blocks are installed/up to date in the project rules files and `.gitignore`.
|
|
575
252
|
|
|
576
|
-
|
|
253
|
+
`New Task` contains:
|
|
577
254
|
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
L1 Focused Unit / Contract Tests
|
|
583
|
-
changed-file tests, public contract tests, regression tests
|
|
255
|
+
- `task name`
|
|
256
|
+
- a checked, non-optional `Create worktree and branch` indicator
|
|
257
|
+
- generated branch preview: `feature/<task-name>`
|
|
258
|
+
- generated worktree preview: `.ai/vcm/worktrees/<task-name>`
|
|
584
259
|
|
|
585
|
-
|
|
586
|
-
module service tests, DB integration, API contract
|
|
260
|
+
There is no optional title input in the current UI.
|
|
587
261
|
|
|
588
|
-
|
|
589
|
-
core user journeys, browser/API smoke flows
|
|
590
|
-
|
|
591
|
-
L4 Full Regression / Release Suite
|
|
592
|
-
historical replay, visual, accessibility, perf, cross-browser
|
|
593
|
-
```
|
|
262
|
+
The worktree/branch path is the normal VCM task model, not a separate mode users toggle later. The checked indicator is shown so the user understands what will happen; VCM should not require a separate worktree creation action later.
|
|
594
263
|
|
|
595
|
-
|
|
264
|
+
### Task Workspace
|
|
596
265
|
|
|
597
|
-
|
|
598
|
-
- T1:L0 + focused L1。
|
|
599
|
-
- T2:L0 + L1 + relevant L2。
|
|
600
|
-
- T3:L0 + L1 + L2。
|
|
601
|
-
- T4:L0 + L1 + L2 + relevant L3,release 前 L4。
|
|
602
|
-
- T5:每个 phase 有独立 validation plan。
|
|
603
|
-
|
|
604
|
-
### 8.7 Independent Review
|
|
605
|
-
|
|
606
|
-
Reviewer role 使用 fresh context 或独立 reviewer session。
|
|
607
|
-
|
|
608
|
-
Review 优先级:
|
|
609
|
-
|
|
610
|
-
1. correctness
|
|
611
|
-
2. security / permission risk
|
|
612
|
-
3. regressions
|
|
613
|
-
4. missing tests
|
|
614
|
-
5. architecture boundary violations
|
|
615
|
-
6. public contract mismatch
|
|
616
|
-
7. docs sync
|
|
617
|
-
|
|
618
|
-
Reviewer 可以做小范围、低风险、review-scoped fixes,例如:
|
|
619
|
-
|
|
620
|
-
- 增强测试断言。
|
|
621
|
-
- 增加小的边界测试。
|
|
622
|
-
- 修复测试 fixture。
|
|
623
|
-
- 修复明显 typo、import、lint。
|
|
624
|
-
|
|
625
|
-
Reviewer 不能接管中大型实现。如果发现业务逻辑或架构问题,必须退回 coder 或 architect。
|
|
626
|
-
|
|
627
|
-
### 8.8 Final Acceptance
|
|
628
|
-
|
|
629
|
-
VibeCodingMaster 的最终验收检查:
|
|
630
|
-
|
|
631
|
-
```text
|
|
632
|
-
behavior is correct
|
|
633
|
-
+ architecture is compliant
|
|
634
|
-
+ public contract is accurate
|
|
635
|
-
+ tests are sufficient
|
|
636
|
-
+ validation evidence exists
|
|
637
|
-
+ docs are synced
|
|
638
|
-
+ plan deviations are traceable
|
|
639
|
-
```
|
|
640
|
-
|
|
641
|
-
最终报告必须包含:
|
|
266
|
+
The task workspace header is one compact row:
|
|
642
267
|
|
|
643
268
|
```text
|
|
644
|
-
|
|
645
|
-
Role sessions used:
|
|
646
|
-
Handoff artifacts:
|
|
647
|
-
Files changed:
|
|
648
|
-
Public surface changed:
|
|
649
|
-
Tests added/updated:
|
|
650
|
-
Validation run:
|
|
651
|
-
Architecture checks:
|
|
652
|
-
Docs updated:
|
|
653
|
-
Plan deviations:
|
|
654
|
-
Remaining risks:
|
|
655
|
-
Decision:
|
|
269
|
+
TASK WORKSPACE <task> <branch> <worktree> [Project Manager] [Architect] [Coder] [Reviewer] [Refresh]
|
|
656
270
|
```
|
|
657
271
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
### 9.1 Chat Intake
|
|
661
|
-
|
|
662
|
-
负责和用户沟通,把自然语言变成工程需求。
|
|
663
|
-
|
|
664
|
-
能力:
|
|
272
|
+
Role tabs show the session status for each role.
|
|
665
273
|
|
|
666
|
-
|
|
667
|
-
- 判断风险等级。
|
|
668
|
-
- 追问关键需求。
|
|
669
|
-
- 识别 high-risk boundaries。
|
|
670
|
-
- 生成 task brief。
|
|
274
|
+
The main task workspace only renders the active role console. Messages, Events, and Workflow are in the sidebar.
|
|
671
275
|
|
|
672
|
-
|
|
276
|
+
## 7. Role Console
|
|
673
277
|
|
|
674
|
-
|
|
278
|
+
The role console owns a single role session.
|
|
675
279
|
|
|
676
|
-
|
|
280
|
+
Controls:
|
|
677
281
|
|
|
678
|
-
-
|
|
679
|
-
-
|
|
680
|
-
-
|
|
681
|
-
-
|
|
682
|
-
-
|
|
683
|
-
-
|
|
684
|
-
- validation commands。
|
|
685
|
-
- stop conditions。
|
|
282
|
+
- Permission mode select.
|
|
283
|
+
- `Start`.
|
|
284
|
+
- `Resume`.
|
|
285
|
+
- `Restart`.
|
|
286
|
+
- `Stop`.
|
|
287
|
+
- `Translate` toggle.
|
|
686
288
|
|
|
687
|
-
|
|
289
|
+
Permission modes:
|
|
688
290
|
|
|
689
|
-
|
|
291
|
+
- `default`
|
|
292
|
+
- `bypassPermissions`
|
|
293
|
+
- `--dangerously-skip-permissions`
|
|
690
294
|
|
|
691
|
-
|
|
295
|
+
The permission mode applies on the next start/resume/restart. If a session is already running, changing the select does not mutate that live process.
|
|
692
296
|
|
|
693
|
-
|
|
694
|
-
- 检查当前 session role 是否匹配。
|
|
695
|
-
- 阻止错误角色继续执行。
|
|
696
|
-
- 在 GUI 中引导用户启动或切换到正确 Claude Code role session。
|
|
297
|
+
When translation is off, the console shows one embedded terminal.
|
|
697
298
|
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
负责管理 `.ai/handoffs/<task-slug>/`。
|
|
701
|
-
|
|
702
|
-
能力:
|
|
703
|
-
|
|
704
|
-
- 创建 handoff directory。
|
|
705
|
-
- 校验 artifact schema。
|
|
706
|
-
- 检查前置 artifact 是否存在。
|
|
707
|
-
- 汇总角色输出。
|
|
708
|
-
- 标记缺失或不一致内容。
|
|
709
|
-
|
|
710
|
-
### 9.5 Contract Manager
|
|
711
|
-
|
|
712
|
-
负责管理 public surface contract 和 test contract。
|
|
713
|
-
|
|
714
|
-
能力:
|
|
715
|
-
|
|
716
|
-
- 识别 public functions / module APIs。
|
|
717
|
-
- 记录输入、输出、副作用、错误行为、依赖规则。
|
|
718
|
-
- 检查代码变更是否修改 public surface。
|
|
719
|
-
- 提醒新增或更新 contract tests。
|
|
720
|
-
- 调用 `tools/check-public-surface` 和 `tools/check-contract-tests`。
|
|
721
|
-
|
|
722
|
-
### 9.6 Prompt Compiler
|
|
723
|
-
|
|
724
|
-
负责把 VibeCodingMaster 的结构化任务上下文编译成 AI 角色可以准确执行的完整命令。
|
|
725
|
-
|
|
726
|
-
它服务于 Project Manager,是 Project Manager “给其他角色发准确命令”的核心能力。
|
|
727
|
-
|
|
728
|
-
输入:
|
|
729
|
-
|
|
730
|
-
- 用户原始需求。
|
|
731
|
-
- Task Spec。
|
|
732
|
-
- Required Role Route。
|
|
733
|
-
- Architecture Plan。
|
|
734
|
-
- Public Surface Contract。
|
|
735
|
-
- Test Contract。
|
|
736
|
-
- Handoff Directory。
|
|
737
|
-
- Validation Commands。
|
|
738
|
-
- Stop Conditions。
|
|
739
|
-
- 当前任务状态。
|
|
740
|
-
|
|
741
|
-
输出:
|
|
742
|
-
|
|
743
|
-
- architect role command。
|
|
744
|
-
- coder role command。
|
|
745
|
-
- reviewer role command。
|
|
746
|
-
- specialist role command。
|
|
747
|
-
- human approval brief。
|
|
748
|
-
|
|
749
|
-
每个 role command 必须回答:
|
|
750
|
-
|
|
751
|
-
- 你是谁。
|
|
752
|
-
- 你要读什么。
|
|
753
|
-
- 你要产出什么。
|
|
754
|
-
- 你可以改什么。
|
|
755
|
-
- 你不能改什么。
|
|
756
|
-
- 什么情况下必须停止。
|
|
757
|
-
- 你必须运行或检查哪些验证。
|
|
758
|
-
- 你的完成标准是什么。
|
|
759
|
-
|
|
760
|
-
### 9.7 Session Cockpit
|
|
761
|
-
|
|
762
|
-
V1 的核心产品模块。负责在 GUI 中管理一个任务里的多个 Claude Code role sessions。
|
|
763
|
-
|
|
764
|
-
推荐结构:
|
|
299
|
+
When translation is on, the console splits horizontally:
|
|
765
300
|
|
|
766
301
|
```text
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
project-manager
|
|
771
|
-
architect
|
|
772
|
-
coder
|
|
773
|
-
reviewer
|
|
774
|
-
|
|
775
|
-
Each role session:
|
|
776
|
-
embedded terminal
|
|
777
|
-
input channel
|
|
778
|
-
output stream
|
|
779
|
-
status badge
|
|
780
|
-
role command link
|
|
781
|
-
raw log link
|
|
782
|
-
handoff artifact link
|
|
302
|
+
┌────────────────────────────┬────────────────────────────┐
|
|
303
|
+
│ embedded Claude terminal │ Translation panel │
|
|
304
|
+
└────────────────────────────┴────────────────────────────┘
|
|
783
305
|
```
|
|
784
306
|
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
- 在页面中展示一个任务下的所有 role sessions。
|
|
788
|
-
- 允许用户用 tabs 或 split view 切换 `project-manager`、`architect`、`coder`、`reviewer`。
|
|
789
|
-
- 在每个 session 面板中嵌入真实 Claude Code 交互终端。
|
|
790
|
-
- 支持用户直接在当前 role session 中输入、确认权限、继续对话。
|
|
791
|
-
- 支持启动、停止、重启、恢复单个 role session。
|
|
792
|
-
- 展示每个 role session 的状态:not started / starting / running / waiting / blocked / done / crashed。
|
|
793
|
-
- 展示每个 role session 对应的 role command、raw log 和 handoff artifact。
|
|
794
|
-
- 支持把 Project Manager 生成的 role command 从 GUI 发送到目标 role session。
|
|
795
|
-
- 支持将 terminal output 持续写入 task logs。
|
|
307
|
+
The split should stay close to 50/50 width. Both panes expand vertically to fill the remaining workspace height.
|
|
796
308
|
|
|
797
|
-
|
|
309
|
+
## 8. Session Lifecycle
|
|
798
310
|
|
|
799
|
-
|
|
800
|
-
- 一个任务默认对应一个 session cockpit。
|
|
801
|
-
- 一个角色默认对应一个 Claude Code session。
|
|
802
|
-
- 多个 role session 可以同时存在,但写代码仍遵守 single-writer rule。
|
|
803
|
-
- VibeCodingMaster 负责 session lifecycle、可见性、artifact 管理和状态汇总,不替代 role agent 的专业判断。
|
|
311
|
+
Buttons:
|
|
804
312
|
|
|
805
|
-
|
|
313
|
+
- `Start`: creates a new Claude session id and starts a fresh role process.
|
|
314
|
+
- `Resume`: reuses the persisted Claude session id and starts Claude Code with resume.
|
|
315
|
+
- `Restart`: stops the current process and starts a fresh Claude session id.
|
|
316
|
+
- `Stop`: stops the current embedded terminal process.
|
|
806
317
|
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
V1 推荐:
|
|
318
|
+
Current command shapes:
|
|
810
319
|
|
|
811
320
|
```text
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
-> claude --agent <role> [permission option]
|
|
321
|
+
claude --agent <role> --session-id <uuid>
|
|
322
|
+
claude --agent <role> --resume <uuid>
|
|
323
|
+
claude --agent <role> --session-id <uuid> --permission-mode bypassPermissions
|
|
324
|
+
claude --agent <role> --session-id <uuid> --dangerously-skip-permissions
|
|
817
325
|
```
|
|
818
326
|
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
- 为每个 role 创建 pseudo-terminal。
|
|
822
|
-
- 将终端输出流式推送到前端 embedded terminal。
|
|
823
|
-
- 将用户键盘输入从前端写回对应 pty。
|
|
824
|
-
- 允许 backend 在用户触发时向 pty 写入短指令。
|
|
825
|
-
- 允许 backend 监听 pty output,并用于日志、状态和 GUI 提醒。
|
|
826
|
-
- 支持 resize。
|
|
827
|
-
- 支持进程退出、异常、重启和状态上报。
|
|
828
|
-
- 支持将 raw terminal stream 保存到 logs。
|
|
829
|
-
|
|
830
|
-
权限模式:
|
|
831
|
-
|
|
832
|
-
- GUI 在每个 role session 的 Start / Restart 上方提供权限选项。
|
|
833
|
-
- `默认`:不额外传权限参数,使用 Claude Code 默认权限行为。
|
|
834
|
-
- `bypassPermissions`:启动参数为 `--permission-mode bypassPermissions`。
|
|
835
|
-
- `--dangerously-skip-permissions`:启动参数为 `--dangerously-skip-permissions`。
|
|
836
|
-
- 选项只影响新启动或重启的 session,不自动改变已经运行中的 Claude Code 进程。
|
|
837
|
-
|
|
838
|
-
自动化边界:
|
|
839
|
-
|
|
840
|
-
- V1 可以程序化写入 terminal input,但只用于用户触发的 command dispatch。
|
|
841
|
-
- V1 可以程序化读取 terminal output,但只做 raw log、轻量状态和 UI 提醒。
|
|
842
|
-
- V1 不自动确认 Claude Code 权限提示。
|
|
843
|
-
- V1 允许用户在启动 session 时主动选择较宽松的 Claude Code 权限模式。
|
|
844
|
-
- V1 不让 PM 自动连续驱动 architect / coder / reviewer。
|
|
845
|
-
- V1 不根据 terminal output 自动执行高风险下一步。
|
|
846
|
-
|
|
847
|
-
### 9.9 Claude Code Adapter
|
|
848
|
-
|
|
849
|
-
负责将 Prompt Compiler 生成的 role command 交给 Claude Code 执行,或生成可复制的 Claude Code prompt。
|
|
850
|
-
|
|
851
|
-
能力:
|
|
852
|
-
|
|
853
|
-
- 启动或恢复 architect session。
|
|
854
|
-
- 启动或恢复 coder session。
|
|
855
|
-
- 启动或恢复 reviewer session。
|
|
856
|
-
- 注入 artifact paths。
|
|
857
|
-
- 注入 stop conditions。
|
|
858
|
-
- 收集执行输出。
|
|
859
|
-
- 处理 Claude Code 交互式权限确认和等待状态。
|
|
860
|
-
|
|
861
|
-
V1 中,Claude Code Adapter 主要通过 Terminal Runtime Manager 工作。它不直接实现翻译功能;翻译由 `project-manager` agent 根据自己的 role prompt 完成。
|
|
862
|
-
|
|
863
|
-
### 9.10 Cross-Model Reviewer
|
|
864
|
-
|
|
865
|
-
负责让另一个 AI 模型审查计划或代码。
|
|
866
|
-
|
|
867
|
-
能力:
|
|
327
|
+
VCM persists:
|
|
868
328
|
|
|
869
|
-
-
|
|
870
|
-
-
|
|
871
|
-
-
|
|
872
|
-
-
|
|
873
|
-
-
|
|
874
|
-
-
|
|
329
|
+
- terminal runtime session id
|
|
330
|
+
- Claude session id
|
|
331
|
+
- transcript path
|
|
332
|
+
- role status
|
|
333
|
+
- permission mode
|
|
334
|
+
- display command
|
|
335
|
+
- cwd
|
|
336
|
+
- pid when running
|
|
337
|
+
- log path
|
|
875
338
|
|
|
876
|
-
|
|
339
|
+
## 9. Harness Installation
|
|
877
340
|
|
|
878
|
-
|
|
879
|
-
- 在编码前发现方案问题。
|
|
880
|
-
- 在 PR 前发现遗漏测试、边界问题和架构漂移。
|
|
881
|
-
|
|
882
|
-
### 9.11 Validation Runner
|
|
883
|
-
|
|
884
|
-
负责验证命令管理。
|
|
885
|
-
|
|
886
|
-
能力:
|
|
887
|
-
|
|
888
|
-
- 推荐验证层级。
|
|
889
|
-
- 运行或指导运行 validation commands。
|
|
890
|
-
- 摘要失败日志。
|
|
891
|
-
- 要求失败后 rerun。
|
|
892
|
-
- 写入 task-level validation log。
|
|
893
|
-
|
|
894
|
-
### 9.12 Replan Controller
|
|
895
|
-
|
|
896
|
-
负责处理计划偏差。
|
|
897
|
-
|
|
898
|
-
能力:
|
|
899
|
-
|
|
900
|
-
- 识别 replan trigger。
|
|
901
|
-
- 冻结当前实现状态。
|
|
902
|
-
- 比较 plan 和 code reality。
|
|
903
|
-
- 生成选项:patch forward、partial rollback、full rollback。
|
|
904
|
-
- 记录用户或 human reviewer 的决策。
|
|
905
|
-
- 更新 task spec、architecture plan 和 docs。
|
|
906
|
-
|
|
907
|
-
### 9.13 Project Memory
|
|
908
|
-
|
|
909
|
-
负责项目长期状态。
|
|
910
|
-
|
|
911
|
-
文件:
|
|
341
|
+
On repository connect, VCM checks:
|
|
912
342
|
|
|
913
343
|
```text
|
|
914
|
-
.
|
|
915
|
-
.
|
|
916
|
-
.
|
|
917
|
-
.
|
|
918
|
-
.
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
能力:
|
|
922
|
-
|
|
923
|
-
- 记录 active tasks。
|
|
924
|
-
- 记录架构和设计决策。
|
|
925
|
-
- 记录 deferred findings。
|
|
926
|
-
- 记录 validation index。
|
|
927
|
-
- 清理 session-local scratch。
|
|
928
|
-
|
|
929
|
-
### 9.14 PR Assistant
|
|
930
|
-
|
|
931
|
-
负责把任务结果整理成 PR。
|
|
932
|
-
|
|
933
|
-
PR 描述应包含:
|
|
934
|
-
|
|
935
|
-
- task summary。
|
|
936
|
-
- task spec link。
|
|
937
|
-
- architecture plan link。
|
|
938
|
-
- files changed。
|
|
939
|
-
- public surface changed。
|
|
940
|
-
- tests added / updated。
|
|
941
|
-
- validation evidence。
|
|
942
|
-
- docs sync。
|
|
943
|
-
- remaining risks。
|
|
944
|
-
|
|
945
|
-
## 10. 信息架构
|
|
946
|
-
|
|
947
|
-
推荐 repo 结构:
|
|
948
|
-
|
|
949
|
-
```text
|
|
950
|
-
repo/
|
|
951
|
-
CLAUDE.md
|
|
952
|
-
|
|
953
|
-
docs/
|
|
954
|
-
ARCHITECTURE.md
|
|
955
|
-
MODULE_MAP.md
|
|
956
|
-
TESTING.md
|
|
957
|
-
SECURITY.md
|
|
958
|
-
DEPENDENCY_RULES.md
|
|
959
|
-
cc-best-practices.md
|
|
960
|
-
product-design.md
|
|
961
|
-
exec-plans/
|
|
962
|
-
active/
|
|
963
|
-
completed/
|
|
964
|
-
|
|
965
|
-
.claude/
|
|
966
|
-
settings.json
|
|
967
|
-
skills/
|
|
968
|
-
agents/
|
|
969
|
-
architect.md
|
|
970
|
-
coder.md
|
|
971
|
-
reviewer.md
|
|
972
|
-
optional/
|
|
973
|
-
security-specialist.md
|
|
974
|
-
migration-specialist.md
|
|
975
|
-
performance-specialist.md
|
|
976
|
-
frontend-qa.md
|
|
977
|
-
commands/
|
|
978
|
-
|
|
979
|
-
.ai/
|
|
980
|
-
task-specs/
|
|
981
|
-
handoffs/
|
|
982
|
-
state/
|
|
983
|
-
generated/
|
|
984
|
-
|
|
985
|
-
tools/
|
|
986
|
-
check-fast
|
|
987
|
-
check-changed
|
|
988
|
-
check-module
|
|
989
|
-
check-e2e-smoke
|
|
990
|
-
check-boundaries
|
|
991
|
-
check-public-surface
|
|
992
|
-
check-contract-tests
|
|
993
|
-
check-generated-artifacts
|
|
994
|
-
check-docs-freshness
|
|
995
|
-
check-agent-rules
|
|
996
|
-
```
|
|
997
|
-
|
|
998
|
-
## 11. 关键界面
|
|
999
|
-
|
|
1000
|
-
### 11.1 Project Dashboard
|
|
1001
|
-
|
|
1002
|
-
显示:
|
|
1003
|
-
|
|
1004
|
-
- 已连接 repo。
|
|
1005
|
-
- active tasks。
|
|
1006
|
-
- task severity。
|
|
1007
|
-
- required role route。
|
|
1008
|
-
- 每个任务的 session health。
|
|
1009
|
-
- blocked tasks。
|
|
1010
|
-
- recent validation failures。
|
|
1011
|
-
- known issues。
|
|
1012
|
-
- harness health。
|
|
1013
|
-
- 最近打开的 role session。
|
|
1014
|
-
|
|
1015
|
-
### 11.2 Task Workspace
|
|
1016
|
-
|
|
1017
|
-
一个任务的主工作台。
|
|
1018
|
-
|
|
1019
|
-
左侧:
|
|
1020
|
-
|
|
1021
|
-
- 任务列表。
|
|
1022
|
-
- 用户需求。
|
|
1023
|
-
- task spec。
|
|
1024
|
-
- required role route。
|
|
1025
|
-
- open questions。
|
|
1026
|
-
|
|
1027
|
-
中间:
|
|
1028
|
-
|
|
1029
|
-
- role session tabs。
|
|
1030
|
-
- embedded Claude Code terminal。
|
|
1031
|
-
- 当前 role 的输入框和输出流。
|
|
1032
|
-
- session toolbar:start / stop / restart / clear view / open log。
|
|
1033
|
-
- role status:starting / running / waiting / blocked / done / crashed。
|
|
1034
|
-
- acceptance checklist。
|
|
1035
|
-
|
|
1036
|
-
### 11.3 Session Console
|
|
1037
|
-
|
|
1038
|
-
显示单个 Claude Code role session 的完整交互界面:
|
|
1039
|
-
|
|
1040
|
-
- role name。
|
|
1041
|
-
- agent command,例如 `claude --agent architect`。
|
|
1042
|
-
- terminal viewport。
|
|
1043
|
-
- terminal input。
|
|
1044
|
-
- running / waiting / crashed 状态。
|
|
1045
|
-
- last output time。
|
|
1046
|
-
- raw log path。
|
|
1047
|
-
- restart / stop / mark done 操作。
|
|
1048
|
-
|
|
1049
|
-
Session Console 必须支持 Claude Code 的交互式确认场景,例如权限确认、继续执行确认、失败后用户补充指令。
|
|
1050
|
-
|
|
1051
|
-
### 11.4 Handoff Files
|
|
1052
|
-
|
|
1053
|
-
V1 不在任务主界面展示独立 artifact panel。role commands、handoff artifacts 和 raw logs 仍保存在任务目录中,作为 Claude Code sessions 之间的文件级事实源;GUI 优先把空间留给 embedded terminal。
|
|
1054
|
-
|
|
1055
|
-
### 11.5 Contract View
|
|
1056
|
-
|
|
1057
|
-
显示当前任务涉及的 public surface:
|
|
1058
|
-
|
|
1059
|
-
- public function name。
|
|
1060
|
-
- owner module。
|
|
1061
|
-
- inputs。
|
|
1062
|
-
- outputs。
|
|
1063
|
-
- side effects。
|
|
1064
|
-
- error behavior。
|
|
1065
|
-
- dependency rules。
|
|
1066
|
-
- existing tests。
|
|
1067
|
-
- required tests。
|
|
1068
|
-
- contract status。
|
|
1069
|
-
|
|
1070
|
-
### 11.6 Review Inbox
|
|
1071
|
-
|
|
1072
|
-
集中处理:
|
|
1073
|
-
|
|
1074
|
-
- Preflight Review findings。
|
|
1075
|
-
- Code Review findings。
|
|
1076
|
-
- Replan requests。
|
|
1077
|
-
- Missing test warnings。
|
|
1078
|
-
- Docs sync warnings。
|
|
1079
|
-
- Human approval gates。
|
|
1080
|
-
|
|
1081
|
-
### 11.7 Harness Health
|
|
1082
|
-
|
|
1083
|
-
显示:
|
|
1084
|
-
|
|
1085
|
-
- root `CLAUDE.md` 是否存在。
|
|
1086
|
-
- module-local `CLAUDE.md` 覆盖率。
|
|
1087
|
-
- architecture docs 是否存在。
|
|
1088
|
-
- testing docs 是否存在。
|
|
1089
|
-
- validation tools 是否存在。
|
|
1090
|
-
- generated artifacts 是否 freshness-checked。
|
|
1091
|
-
- role agents 是否存在。
|
|
1092
|
-
- hooks / CI gates 是否存在。
|
|
1093
|
-
- known issues 是否过期。
|
|
1094
|
-
|
|
1095
|
-
## 12. 数据对象
|
|
1096
|
-
|
|
1097
|
-
### 12.1 Project
|
|
1098
|
-
|
|
1099
|
-
```json
|
|
1100
|
-
{
|
|
1101
|
-
"id": "project_123",
|
|
1102
|
-
"name": "VibeCodingMaster",
|
|
1103
|
-
"repoPath": "/path/to/repo",
|
|
1104
|
-
"defaultBranch": "main",
|
|
1105
|
-
"harnessHealth": "partial",
|
|
1106
|
-
"validationCommands": [
|
|
1107
|
-
"tools/check-fast",
|
|
1108
|
-
"tools/check-changed"
|
|
1109
|
-
]
|
|
1110
|
-
}
|
|
344
|
+
CLAUDE.md
|
|
345
|
+
.gitignore
|
|
346
|
+
.claude/agents/project-manager.md
|
|
347
|
+
.claude/agents/architect.md
|
|
348
|
+
.claude/agents/coder.md
|
|
349
|
+
.claude/agents/reviewer.md
|
|
1111
350
|
```
|
|
1112
351
|
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
```json
|
|
1116
|
-
{
|
|
1117
|
-
"id": "task_123",
|
|
1118
|
-
"slug": "coupon-partial-refund",
|
|
1119
|
-
"title": "Fix coupon and partial refund calculation",
|
|
1120
|
-
"severity": "T4",
|
|
1121
|
-
"status": "planning",
|
|
1122
|
-
"requiredRoleRoute": [
|
|
1123
|
-
"architect",
|
|
1124
|
-
"billing-specialist",
|
|
1125
|
-
"coder",
|
|
1126
|
-
"reviewer",
|
|
1127
|
-
"human-approval"
|
|
1128
|
-
],
|
|
1129
|
-
"specPath": ".ai/task-specs/coupon-partial-refund.md",
|
|
1130
|
-
"handoffDirectory": ".ai/handoffs/coupon-partial-refund"
|
|
1131
|
-
}
|
|
1132
|
-
```
|
|
352
|
+
If a file is missing, VCM can create a recommended default.
|
|
1133
353
|
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
```json
|
|
1137
|
-
{
|
|
1138
|
-
"symbol": "RefundService.calculateRefundAmount",
|
|
1139
|
-
"module": "billing",
|
|
1140
|
-
"signatureStatus": "unchanged",
|
|
1141
|
-
"inputs": ["invoiceId", "request"],
|
|
1142
|
-
"output": "Money",
|
|
1143
|
-
"sideEffects": [],
|
|
1144
|
-
"errorBehavior": ["throws when invoice is not refundable"],
|
|
1145
|
-
"dependencyRules": ["must not call payment adapter internals"],
|
|
1146
|
-
"requiredTests": [
|
|
1147
|
-
"happy path",
|
|
1148
|
-
"refund cannot exceed post-discount total",
|
|
1149
|
-
"invalid invoice state"
|
|
1150
|
-
]
|
|
1151
|
-
}
|
|
1152
|
-
```
|
|
1153
|
-
|
|
1154
|
-
### 12.4 Review
|
|
1155
|
-
|
|
1156
|
-
```json
|
|
1157
|
-
{
|
|
1158
|
-
"id": "review_123",
|
|
1159
|
-
"type": "preflight_plan",
|
|
1160
|
-
"reviewer": "cross_model_reviewer",
|
|
1161
|
-
"decision": "request_changes",
|
|
1162
|
-
"findings": [
|
|
1163
|
-
{
|
|
1164
|
-
"severity": "high",
|
|
1165
|
-
"category": "public_contract",
|
|
1166
|
-
"message": "The plan changes refund behavior but does not define consumer-facing contract tests."
|
|
1167
|
-
}
|
|
1168
|
-
]
|
|
1169
|
-
}
|
|
1170
|
-
```
|
|
354
|
+
If a file already exists, VCM only inserts or replaces the managed block:
|
|
1171
355
|
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
"id": "session_architect_123",
|
|
1177
|
-
"claudeSessionId": "00000000-0000-4000-8000-000000000001",
|
|
1178
|
-
"taskSlug": "coupon-partial-refund",
|
|
1179
|
-
"role": "architect",
|
|
1180
|
-
"status": "running",
|
|
1181
|
-
"command": "claude --agent architect --permission-mode bypassPermissions",
|
|
1182
|
-
"permissionMode": "bypassPermissions",
|
|
1183
|
-
"terminalBackend": "node-pty",
|
|
1184
|
-
"logPath": ".ai/handoffs/coupon-partial-refund/logs/architect.log",
|
|
1185
|
-
"roleCommandPath": ".ai/handoffs/coupon-partial-refund/role-commands/architect.md",
|
|
1186
|
-
"handoffArtifactPath": ".ai/handoffs/coupon-partial-refund/architecture-plan.md",
|
|
1187
|
-
"startedAt": "2026-05-29T00:00:00+08:00",
|
|
1188
|
-
"lastOutputAt": "2026-05-29T00:03:14+08:00"
|
|
1189
|
-
}
|
|
356
|
+
```md
|
|
357
|
+
<!-- VCM:BEGIN version=1 -->
|
|
358
|
+
...
|
|
359
|
+
<!-- VCM:END -->
|
|
1190
360
|
```
|
|
1191
361
|
|
|
1192
|
-
|
|
362
|
+
For `.gitignore`, VCM uses hash comments:
|
|
1193
363
|
|
|
1194
|
-
```
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
"timestamp": "2026-05-29T00:03:14+08:00",
|
|
1200
|
-
"data": "Architecture Summary..."
|
|
1201
|
-
}
|
|
364
|
+
```gitignore
|
|
365
|
+
# VCM:BEGIN version=1
|
|
366
|
+
.ai/vcm/
|
|
367
|
+
.vcm/
|
|
368
|
+
# VCM:END
|
|
1202
369
|
```
|
|
1203
370
|
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
### 13.1 V1 产品定位
|
|
1207
|
-
|
|
1208
|
-
V1 只做一件事:
|
|
1209
|
-
|
|
1210
|
-
> 做一个本地 GUI Session Cockpit,让用户可以在一个任务工作台中启动、切换、查看、输入和管理多个 Claude Code role sessions。
|
|
1211
|
-
|
|
1212
|
-
V1 不在产品层做翻译功能。
|
|
1213
|
-
用户输入和 Claude Code 输出的中英翻译,交给 `.claude/agents/project-manager.md` 中定义的 Project Manager 角色完成。
|
|
1214
|
-
|
|
1215
|
-
V1 的核心判断标准不是“CLI 是否能控制多个终端”,而是:
|
|
1216
|
-
|
|
1217
|
-
> 用户是否可以不离开 GUI,就完成多 Claude Code sessions 的创建、切换、沟通、观察、日志保存和 handoff artifact 查看。
|
|
1218
|
-
|
|
1219
|
-
### 13.2 V1 必须支持
|
|
1220
|
-
|
|
1221
|
-
1. 启动本地 GUI 应用。
|
|
1222
|
-
2. 连接或选择本地 Git repo。
|
|
1223
|
-
3. 检查本机是否安装 Claude Code。
|
|
1224
|
-
4. 创建任务 workspace。
|
|
1225
|
-
5. 为任务创建 handoff directory:
|
|
1226
|
-
- `.ai/handoffs/<task-slug>/`
|
|
1227
|
-
- `.ai/handoffs/<task-slug>/role-commands/`
|
|
1228
|
-
- `.ai/handoffs/<task-slug>/logs/`
|
|
1229
|
-
6. 在 GUI 中展示 role session tabs:
|
|
1230
|
-
- `project-manager`
|
|
1231
|
-
- `architect`
|
|
1232
|
-
- `coder`
|
|
1233
|
-
- `reviewer`
|
|
1234
|
-
7. 在对应 role session 中启动 Claude Code:
|
|
1235
|
-
- 首次启动:`claude --agent <role> --session-id <uuid>`
|
|
1236
|
-
- 恢复启动:`claude --agent <role> --resume <uuid>`
|
|
1237
|
-
8. 在页面中嵌入每个 Claude Code session 的终端输出和输入。
|
|
1238
|
-
9. 支持用户切换 role session 并直接沟通。
|
|
1239
|
-
10. 支持 Claude Code 权限确认、等待用户输入、失败后补充指令等交互式场景。
|
|
1240
|
-
11. 展示每个 role session 的状态:not started / starting / running / waiting / blocked / done / crashed。
|
|
1241
|
-
12. 支持启动、停止、重启某个 role session。
|
|
1242
|
-
13. 支持 Project Manager 生成 role command artifact。
|
|
1243
|
-
14. 支持用户在 GUI 中查看 role command,并一键发送到目标 role session。
|
|
1244
|
-
15. 将每个 role session 的 raw output 保存为日志。
|
|
1245
|
-
16. 在 GUI 中查看 architecture-plan / implementation-log / validation-log / review-report。
|
|
1246
|
-
17. 检查 handoff artifacts 是否存在、是否为空、是否包含必要标题。
|
|
1247
|
-
18. 展示当前任务的状态摘要和下一步建议。
|
|
1248
|
-
19. 在 `.vcm/sessions/<task-slug>.json` 中记录每个 role 的 `claudeSessionId`,支持异常中断后 Resume。
|
|
1249
|
-
20. 保留 CLI 作为开发和调试入口,但不要求用户用 CLI 完成主流程。
|
|
1250
|
-
|
|
1251
|
-
### 13.3 V1 明确不做
|
|
1252
|
-
|
|
1253
|
-
- SaaS 多用户协作。
|
|
1254
|
-
- 企业权限和审计。
|
|
1255
|
-
- 完整 Desktop 打包和自动更新。
|
|
1256
|
-
- 产品层翻译管线。
|
|
1257
|
-
- 独立翻译模型调用。
|
|
1258
|
-
- 自动生成完整 Task Spec。
|
|
1259
|
-
- 自动做 Preflight Review。
|
|
1260
|
-
- 自动做 Cross-Model Code Review。
|
|
1261
|
-
- 自动判断 public contract 和 test contract。
|
|
1262
|
-
- 自动运行 validation commands。
|
|
1263
|
-
- 自动创建 PR。
|
|
1264
|
-
- Jira / Linear / GitHub 双向同步。
|
|
1265
|
-
- 云端 session 托管。
|
|
1266
|
-
- 多 repo / 多任务并行调度。
|
|
1267
|
-
- 多 worktree 自动管理。
|
|
1268
|
-
- 让用户手动管理底层 terminal process。
|
|
1269
|
-
|
|
1270
|
-
这些能力可以作为后续版本演进。V1 的判断标准不是“PM 流程是否全部自动化”,而是“GUI 是否让多 Claude Code role sessions 变得可见、可切换、可沟通、可恢复、可交接”。
|
|
1271
|
-
|
|
1272
|
-
### 13.4 V1 本地执行机制
|
|
1273
|
-
|
|
1274
|
-
推荐 V1 使用本地 Web GUI:
|
|
371
|
+
`.ai/vcm/` is the active VCM local control area. `.vcm/` is included only as a legacy ignore rule for older VCM state.
|
|
1275
372
|
|
|
1276
|
-
|
|
1277
|
-
Browser UI / Desktop shell
|
|
1278
|
-
-> local Node backend
|
|
1279
|
-
-> WebSocket terminal bridge
|
|
1280
|
-
-> node-pty
|
|
1281
|
-
-> claude --agent <role>
|
|
1282
|
-
```
|
|
373
|
+
VCM must preserve all user-authored content outside the managed block.
|
|
1283
374
|
|
|
1284
|
-
|
|
375
|
+
After applying harness changes, the UI tells the user what changed and recommends reviewing and committing those files.
|
|
1285
376
|
|
|
1286
|
-
|
|
1287
|
-
- Backend 负责 repo 连接、进程生命周期、pty I/O、日志写入、artifact 读写。
|
|
1288
|
-
- Claude Code role session 负责实际沟通和执行。
|
|
1289
|
-
- Handoff artifacts 负责跨 session 传递稳定结果。
|
|
377
|
+
Role sessions get VCM behavior from `CLAUDE.md` and `.claude/agents/*.md`, not from a pasted startup context.
|
|
1290
378
|
|
|
1291
|
-
|
|
379
|
+
## 10. Handoff Files
|
|
1292
380
|
|
|
1293
|
-
|
|
1294
|
-
TerminalRuntime implementation = node-pty
|
|
1295
|
-
```
|
|
1296
|
-
|
|
1297
|
-
后续如果要增强持久性,应优先改进本地 backend lifecycle、session registry、raw logs 和恢复体验,而不是引入额外终端复用层。
|
|
1298
|
-
|
|
1299
|
-
### 13.5 Controller-Mediated Role Command
|
|
1300
|
-
|
|
1301
|
-
推荐文件:
|
|
381
|
+
Each task creates:
|
|
1302
382
|
|
|
1303
383
|
```text
|
|
1304
|
-
.ai/handoffs/<task
|
|
384
|
+
.ai/handoffs/<task>/
|
|
1305
385
|
role-commands/
|
|
1306
386
|
architect.md
|
|
1307
387
|
coder.md
|
|
@@ -1315,283 +395,199 @@ TerminalRuntime implementation = node-pty
|
|
|
1315
395
|
implementation-log.md
|
|
1316
396
|
validation-log.md
|
|
1317
397
|
review-report.md
|
|
398
|
+
docs-sync-report.md
|
|
399
|
+
messages/
|
|
400
|
+
<message-id>.md
|
|
1318
401
|
```
|
|
1319
402
|
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
正确模型:
|
|
1323
|
-
|
|
1324
|
-
```text
|
|
1325
|
-
Project Manager session
|
|
1326
|
-
-> writes role command artifact
|
|
1327
|
-
-> GUI shows command artifact to user
|
|
1328
|
-
-> user approves or sends from GUI
|
|
1329
|
-
-> VibeCodingMaster backend writes short instruction to target role session
|
|
1330
|
-
-> target role session executes
|
|
1331
|
-
-> backend records raw log
|
|
1332
|
-
-> handoff artifact becomes stable result
|
|
1333
|
-
```
|
|
403
|
+
The product treats handoff files as durable facts. The terminal is useful for live interaction, but handoff files and message history are what survive task handoffs cleanly.
|
|
1334
404
|
|
|
1335
|
-
|
|
405
|
+
The main UI no longer has a dedicated artifact panel. Artifact APIs still exist for status checks, role command compatibility, and future UI work.
|
|
1336
406
|
|
|
1337
|
-
|
|
1338
|
-
- GUI 负责让用户看见、确认和发送。
|
|
1339
|
-
- Backend 负责把命令送进正确 role session。
|
|
1340
|
-
- Role agent 负责执行命令并输出结果。
|
|
1341
|
-
- Handoff artifacts 负责跨 session 传递稳定结果。
|
|
407
|
+
## 11. Message Bus
|
|
1342
408
|
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
第一版应该是本地 GUI:
|
|
409
|
+
VCM messaging is API-driven.
|
|
1346
410
|
|
|
1347
411
|
```text
|
|
1348
|
-
|
|
1349
|
-
->
|
|
1350
|
-
->
|
|
1351
|
-
->
|
|
1352
|
-
->
|
|
1353
|
-
->
|
|
1354
|
-
-> Send architect command
|
|
1355
|
-
-> View architecture-plan.md
|
|
1356
|
-
-> Start coder session
|
|
1357
|
-
-> Send coder command
|
|
1358
|
-
-> View implementation-log.md and validation-log.md
|
|
1359
|
-
-> Start reviewer session
|
|
1360
|
-
-> Send reviewer command
|
|
1361
|
-
-> View review-report.md
|
|
1362
|
-
-> Final acceptance
|
|
412
|
+
role terminal
|
|
413
|
+
-> vcmctl
|
|
414
|
+
-> VCM backend API
|
|
415
|
+
-> policy validation
|
|
416
|
+
-> durable message snapshots
|
|
417
|
+
-> target terminal write when allowed
|
|
1363
418
|
```
|
|
1364
419
|
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
- 启动 dev server。
|
|
1368
|
-
- 调试 backend。
|
|
1369
|
-
- 导出状态。
|
|
1370
|
-
- 执行自动化 smoke test。
|
|
1371
|
-
|
|
1372
|
-
但用户主流程必须在 GUI 中完成。
|
|
1373
|
-
|
|
1374
|
-
## 14. 成功指标
|
|
1375
|
-
|
|
1376
|
-
### 14.1 V1 稳定性指标
|
|
1377
|
-
|
|
1378
|
-
- GUI 启动成功率。
|
|
1379
|
-
- repo 连接成功率。
|
|
1380
|
-
- role session 创建成功率。
|
|
1381
|
-
- Claude Code role session 启动成功率。
|
|
1382
|
-
- embedded terminal 输入输出成功率。
|
|
1383
|
-
- WebSocket 断线重连成功率。
|
|
1384
|
-
- role command 从 GUI 发送成功率。
|
|
1385
|
-
- session output 保存为 raw log 的成功率。
|
|
1386
|
-
- stop / restart / recover 成功率。
|
|
1387
|
-
|
|
1388
|
-
### 14.2 流程指标
|
|
1389
|
-
|
|
1390
|
-
- 每个任务都有 GUI workspace 的比例。
|
|
1391
|
-
- 每个 role session 都有 raw log 的比例。
|
|
1392
|
-
- 每个 role command 都有 artifact 的比例。
|
|
1393
|
-
- 用户能在 GUI 中查看 handoff artifacts 的比例。
|
|
1394
|
-
- PM 能读取 architect / coder / reviewer 输出并生成状态摘要的比例。
|
|
1395
|
-
- 用户在 role session 中手动介入后,VibeCodingMaster 能恢复 session 状态的比例。
|
|
1396
|
-
|
|
1397
|
-
### 14.3 用户体验指标
|
|
1398
|
-
|
|
1399
|
-
- 用户手写 prompt 长度下降。
|
|
1400
|
-
- 用户可以清楚看到每个 role session 当前状态。
|
|
1401
|
-
- 用户可以在 GUI 中切换到任意 Claude Code role session。
|
|
1402
|
-
- 用户可以直接在 GUI 中输入、确认权限和继续对话。
|
|
1403
|
-
- 用户觉得多 Claude Code session 的切换和管理成本下降。
|
|
1404
|
-
- 用户愿意用 VibeCodingMaster 启动下一次多角色任务。
|
|
1405
|
-
|
|
1406
|
-
## 15. 里程碑
|
|
1407
|
-
|
|
1408
|
-
### Phase 1:Local GUI Shell
|
|
1409
|
-
|
|
1410
|
-
- 创建本地 Web GUI 或 Desktop shell。
|
|
1411
|
-
- 支持选择本地 repo。
|
|
1412
|
-
- 显示 Project Dashboard。
|
|
1413
|
-
- 显示 Task Workspace。
|
|
1414
|
-
- 创建 `.vcm` 和 `.ai/handoffs/` 基础目录。
|
|
1415
|
-
|
|
1416
|
-
### Phase 2:Embedded Claude Code Sessions
|
|
1417
|
-
|
|
1418
|
-
- 使用 `node-pty` 启动 `claude --agent <role>`。
|
|
1419
|
-
- 使用 xterm.js 嵌入 terminal。
|
|
1420
|
-
- 支持 terminal input / output / resize。
|
|
1421
|
-
- 支持 `project-manager / architect / coder / reviewer` tabs。
|
|
1422
|
-
- 支持 stop / restart / crashed 状态。
|
|
1423
|
-
|
|
1424
|
-
### Phase 3:Task Artifacts Panel
|
|
1425
|
-
|
|
1426
|
-
- 创建 `.ai/handoffs/<task-slug>/`。
|
|
1427
|
-
- 创建 `role-commands/` 和 `logs/`。
|
|
1428
|
-
- 展示 architecture-plan / implementation-log / validation-log / review-report。
|
|
1429
|
-
- 检查 handoff artifact 是否存在。
|
|
1430
|
-
- 检查 handoff artifact schema completeness。
|
|
1431
|
-
- 支持从 artifact 跳转到对应 role session。
|
|
420
|
+
Allowed message routes:
|
|
1432
421
|
|
|
1433
|
-
|
|
422
|
+
- `project-manager` to `architect` / `coder` / `reviewer`: `task`, `question`, `review-request`, `revise`, `cancel`
|
|
423
|
+
- `architect` / `coder` / `reviewer` to `project-manager`: `result`, `question`, `blocked`, `finding`
|
|
424
|
+
- `user` to `project-manager`: `user-request`
|
|
1434
425
|
|
|
1435
|
-
|
|
1436
|
-
- GUI 展示 command 并允许用户发送到 architect session。
|
|
1437
|
-
- PM 生成 coder.md。
|
|
1438
|
-
- GUI 展示 command 并允许用户发送到 coder session。
|
|
1439
|
-
- PM 生成 reviewer.md。
|
|
1440
|
-
- GUI 展示 command 并允许用户发送到 reviewer session。
|
|
1441
|
-
- Backend 保存 raw logs 和 dispatch event。
|
|
426
|
+
Manual mode:
|
|
1442
427
|
|
|
1443
|
-
|
|
428
|
+
- message status becomes `pending_approval` when the target role is running
|
|
429
|
+
- user opens `Messages`
|
|
430
|
+
- user clicks `Stage`
|
|
431
|
+
- VCM writes a short prompt into the target terminal
|
|
432
|
+
- VCM does not submit Enter
|
|
1444
433
|
|
|
1445
|
-
|
|
1446
|
-
- public contract / test contract gate。
|
|
1447
|
-
- Preflight Review。
|
|
1448
|
-
- Cross-Model Code Review。
|
|
1449
|
-
- validation runner。
|
|
1450
|
-
- GitHub PR integration。
|
|
1451
|
-
- session persistence hardening。
|
|
1452
|
-
- Desktop packaging。
|
|
434
|
+
Auto mode:
|
|
1453
435
|
|
|
1454
|
-
|
|
436
|
+
- if target role is running, VCM writes a `[VCM MESSAGE]` envelope and submits it
|
|
437
|
+
- PM remains the routing hub
|
|
438
|
+
- non-PM roles reply to PM
|
|
1455
439
|
|
|
1456
|
-
|
|
440
|
+
The backend still has a `paused` state field and pause/resume API routes for compatibility. The current GUI exposes only manual/auto.
|
|
1457
441
|
|
|
1458
|
-
|
|
442
|
+
## 12. Translation
|
|
1459
443
|
|
|
1460
|
-
|
|
444
|
+
Translation is a local assistant layer beside the role terminal.
|
|
1461
445
|
|
|
1462
|
-
|
|
1463
|
-
- 使用 node-pty 承载真实 pty。
|
|
1464
|
-
- 保留 raw terminal stream。
|
|
1465
|
-
- 支持用户直接在当前 session 面板中输入。
|
|
1466
|
-
- 对 waiting / crashed / exited 状态做显式提示。
|
|
446
|
+
### Provider Settings
|
|
1467
447
|
|
|
1468
|
-
|
|
448
|
+
Settings are saved in:
|
|
1469
449
|
|
|
1470
|
-
|
|
450
|
+
```text
|
|
451
|
+
~/.vcm/settings.json
|
|
452
|
+
```
|
|
1471
453
|
|
|
1472
|
-
|
|
454
|
+
The settings file stores:
|
|
1473
455
|
|
|
1474
|
-
-
|
|
1475
|
-
-
|
|
1476
|
-
-
|
|
1477
|
-
- 页面刷新后从 backend 重新订阅 session。
|
|
1478
|
-
- 后续增强本地 backend lifecycle、session metadata 和恢复体验。
|
|
456
|
+
- translation provider settings
|
|
457
|
+
- translation API key
|
|
458
|
+
- recent repository paths
|
|
1479
459
|
|
|
1480
|
-
|
|
460
|
+
The API key input is a normal text input. The file is local to the user's machine/runtime.
|
|
1481
461
|
|
|
1482
|
-
|
|
462
|
+
Provider type:
|
|
1483
463
|
|
|
1484
|
-
|
|
464
|
+
- OpenAI-compatible chat completions
|
|
1485
465
|
|
|
1486
|
-
|
|
1487
|
-
- T0/T1 只启动 project-manager 和 coder。
|
|
1488
|
-
- 未使用 role session 保持 not started。
|
|
1489
|
-
- UI 显示运行中 session 和资源提示。
|
|
466
|
+
Prompt slots:
|
|
1490
467
|
|
|
1491
|
-
|
|
468
|
+
- `zh-to-en`
|
|
469
|
+
- `zh-to-en-with-context`
|
|
470
|
+
- `en-to-zh`
|
|
1492
471
|
|
|
1493
|
-
|
|
472
|
+
The settings modal shows the default prompt for each slot and allows a user override. Empty override means use the default prompt.
|
|
1494
473
|
|
|
1495
|
-
|
|
474
|
+
### Claude Output Translation
|
|
1496
475
|
|
|
1497
|
-
|
|
1498
|
-
- PM 只产出 role command artifact。
|
|
1499
|
-
- GUI 显示 role command,用户可确认后发送。
|
|
1500
|
-
- Backend 负责发送短指令和记录 dispatch。
|
|
1501
|
-
- 对高风险命令要求用户确认。
|
|
476
|
+
Output translation does not read raw PTY text.
|
|
1502
477
|
|
|
1503
|
-
|
|
478
|
+
VCM tails Claude Code transcript JSONL files under:
|
|
1504
479
|
|
|
1505
|
-
|
|
480
|
+
```text
|
|
481
|
+
~/.claude/projects/<project-hash>/<claude-session-id>.jsonl
|
|
482
|
+
```
|
|
1506
483
|
|
|
1507
|
-
|
|
484
|
+
The transcript path is persisted in the role session record. If that path is missing, VCM falls back to resolving by current working directory and then scanning `~/.claude/projects` for the newest file with the session id.
|
|
1508
485
|
|
|
1509
|
-
|
|
1510
|
-
- T0/T1 可以只启动 `project-manager` 和 `coder`。
|
|
1511
|
-
- T2 以上才推荐完整 role route。
|
|
1512
|
-
- UI 中默认折叠高级 contract 字段,但内部仍保留检查。
|
|
486
|
+
Transcript event handling:
|
|
1513
487
|
|
|
1514
|
-
|
|
488
|
+
- assistant text -> `prose` -> translated
|
|
489
|
+
- AskUserQuestion tool -> formatted `prose` -> translated
|
|
490
|
+
- TodoWrite tool -> formatted `prose` -> translated
|
|
491
|
+
- Agent/Task tool -> formatted `prose` -> translated
|
|
492
|
+
- normal tool_use -> `tool-output` -> preserved
|
|
493
|
+
- tool_result -> `tool-output` -> preserved
|
|
1515
494
|
|
|
1516
|
-
|
|
495
|
+
Display behavior:
|
|
1517
496
|
|
|
1518
|
-
|
|
497
|
+
- `prose` starts by showing the English source.
|
|
498
|
+
- while translating, panel status shows `translating <elapsed>`.
|
|
499
|
+
- when translation succeeds, the English source is replaced by Chinese translated text.
|
|
500
|
+
- when translation fails, panel status shows `error` and the entry keeps the visible source plus an error.
|
|
501
|
+
- `tool-output` is dim, one-line, truncated by CSS, and not translated.
|
|
1519
502
|
|
|
1520
|
-
-
|
|
1521
|
-
- 要求引用代码证据。
|
|
1522
|
-
- 区分 block、request changes、suggestion。
|
|
1523
|
-
- 高风险任务保留 human approval。
|
|
503
|
+
There is no keyword classifier that drops assistant text. A previous design skipped permission-looking or log-looking text; that is removed.
|
|
1524
504
|
|
|
1525
|
-
###
|
|
505
|
+
### User Input Translation
|
|
1526
506
|
|
|
1527
|
-
|
|
507
|
+
The composer has one textarea and one `Send English` button.
|
|
1528
508
|
|
|
1529
|
-
|
|
509
|
+
Keyboard behavior:
|
|
1530
510
|
|
|
1531
|
-
-
|
|
1532
|
-
-
|
|
1533
|
-
- final acceptance 把 handoff artifact 作为硬条件。
|
|
1534
|
-
- UI 中直接显示 missing / incomplete / ok。
|
|
511
|
+
- `Enter`: translate current Chinese text, or send the current English draft.
|
|
512
|
+
- `Shift+Enter`: insert newline.
|
|
1535
513
|
|
|
1536
|
-
|
|
514
|
+
After translation succeeds, the English draft replaces the original Chinese text in the same textarea.
|
|
1537
515
|
|
|
1538
|
-
|
|
516
|
+
`Send English` writes the current English text to the active role terminal and submits Enter.
|
|
1539
517
|
|
|
1540
|
-
|
|
518
|
+
Translation panel `Auto-send` is separate from task `Auto orchestration`:
|
|
1541
519
|
|
|
1542
|
-
- `
|
|
1543
|
-
-
|
|
1544
|
-
- PR template 加 docs sync checklist。
|
|
1545
|
-
- 月度 harness review 删除无用文档。
|
|
520
|
+
- `Auto-send` on: translate and send if there is no translation warning.
|
|
521
|
+
- `Auto-send` off: translate to English draft and wait for user send.
|
|
1546
522
|
|
|
1547
|
-
|
|
523
|
+
## 13. Local State
|
|
1548
524
|
|
|
1549
|
-
|
|
525
|
+
App-level settings:
|
|
1550
526
|
|
|
1551
|
-
|
|
527
|
+
```text
|
|
528
|
+
~/.vcm/settings.json
|
|
529
|
+
```
|
|
1552
530
|
|
|
1553
|
-
-
|
|
1554
|
-
- 不把核心价值放在 terminal 包装。
|
|
1555
|
-
- 核心放在 GUI session cockpit、project orchestration、public contract、test contract、handoff、review gate、acceptance。
|
|
531
|
+
Repository-level VCM state:
|
|
1556
532
|
|
|
1557
|
-
|
|
533
|
+
```text
|
|
534
|
+
.ai/vcm/config.json
|
|
535
|
+
.ai/vcm/tasks/<task>.json
|
|
536
|
+
.ai/vcm/sessions/<task>.json
|
|
537
|
+
.ai/vcm/messages/<task>.jsonl
|
|
538
|
+
.ai/vcm/orchestration/<task>.json
|
|
539
|
+
.ai/vcm/worktrees/<task>/
|
|
540
|
+
```
|
|
1558
541
|
|
|
1559
|
-
|
|
542
|
+
In task-worktree mode, the base repository's `.ai/vcm/` directory is the project control area. Task source changes and handoff artifacts live inside the task worktree at `.ai/vcm/worktrees/<task>/`.
|
|
1560
543
|
|
|
1561
|
-
|
|
544
|
+
Task worktree local files:
|
|
1562
545
|
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
- 先把 embedded Claude Code sessions 和 handoff artifact visibility 做扎实。
|
|
546
|
+
```text
|
|
547
|
+
.ai/vcm/worktrees/<task>/.ai/handoffs/<task>/
|
|
548
|
+
```
|
|
1567
549
|
|
|
1568
|
-
|
|
550
|
+
External Claude transcripts:
|
|
1569
551
|
|
|
1570
|
-
|
|
552
|
+
```text
|
|
553
|
+
~/.claude/projects/<project-hash>/<claude-session-id>.jsonl
|
|
554
|
+
```
|
|
1571
555
|
|
|
1572
|
-
|
|
556
|
+
## 14. Packaging Expectations
|
|
1573
557
|
|
|
1574
|
-
|
|
1575
|
-
- 显示当前 repo path 和 branch。
|
|
1576
|
-
- 高风险任务保留 human approval。
|
|
1577
|
-
- 后续接入 Claude Code permissions/hooks。
|
|
1578
|
-
- 不隐藏 Claude Code 的权限确认。
|
|
558
|
+
Published npm packages must include built output:
|
|
1579
559
|
|
|
1580
|
-
|
|
560
|
+
- `dist/main.js`
|
|
561
|
+
- `dist/cli/vcmctl.js`
|
|
562
|
+
- backend route/service/template output in `dist/`
|
|
563
|
+
- frontend static assets in `dist-frontend/`
|
|
564
|
+
- `README.md`
|
|
565
|
+
- `docs/`
|
|
566
|
+
- `scripts/`
|
|
1581
567
|
|
|
1582
|
-
|
|
568
|
+
`prepack` runs:
|
|
1583
569
|
|
|
1584
|
-
|
|
570
|
+
```text
|
|
571
|
+
npm run build && npm run verify:package
|
|
572
|
+
```
|
|
1585
573
|
|
|
1586
|
-
|
|
574
|
+
This protects against publishing raw TypeScript bin files or missing frontend assets.
|
|
1587
575
|
|
|
1588
|
-
|
|
576
|
+
## 15. Success Criteria
|
|
1589
577
|
|
|
1590
|
-
|
|
1591
|
-
Claude Code = coding engine
|
|
1592
|
-
VibeCodingMaster = GUI session cockpit + project manager + harness manager + quality gatekeeper
|
|
1593
|
-
```
|
|
578
|
+
VCM V1 is successful when:
|
|
1594
579
|
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
580
|
+
- A user can connect a repo without global Git safe-directory setup.
|
|
581
|
+
- A user can create a task, which creates `feature/<task>` and `.ai/vcm/worktrees/<task>`.
|
|
582
|
+
- A user can start all four role sessions in that task worktree.
|
|
583
|
+
- Switching roles never loses the embedded terminal.
|
|
584
|
+
- Restart creates a fresh Claude session; Resume reconnects to the persisted one.
|
|
585
|
+
- Permission modes are reflected in the Claude command.
|
|
586
|
+
- PM can route messages through `vcmctl`.
|
|
587
|
+
- Manual orchestration lets the user inspect and stage messages without auto-submitting Enter.
|
|
588
|
+
- Auto orchestration can deliver PM-approved work to running target roles.
|
|
589
|
+
- Translation settings save to `~/.vcm/settings.json`.
|
|
590
|
+
- Translation reads Claude transcript JSONL reliably after start, resume, and restart.
|
|
591
|
+
- Terminal and translation panel have equal, stable reading space.
|
|
592
|
+
- Harness install/update preserves user content outside VCM managed blocks.
|
|
593
|
+
- Completed tasks can cleanly remove their worktree and VCM task metadata without affecting other tasks.
|