@zmice/zc 0.2.5 → 0.2.7
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 +98 -11
- package/dist/cli/__tests__/platform.test.js +215 -2
- package/dist/cli/__tests__/platform.test.js.map +1 -1
- package/dist/cli/__tests__/surface.test.js +52 -0
- package/dist/cli/__tests__/surface.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.d.ts +2 -0
- package/dist/cli/__tests__/team.test.d.ts.map +1 -0
- package/dist/cli/__tests__/team.test.js +29 -0
- package/dist/cli/__tests__/team.test.js.map +1 -0
- package/dist/cli/__tests__/upstream.test.js +4 -0
- package/dist/cli/__tests__/upstream.test.js.map +1 -1
- package/dist/cli/platform.d.ts +11 -3
- package/dist/cli/platform.d.ts.map +1 -1
- package/dist/cli/platform.js +216 -54
- package/dist/cli/platform.js.map +1 -1
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +114 -4
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/upstream.d.ts +1 -0
- package/dist/cli/upstream.d.ts.map +1 -1
- package/dist/cli/upstream.js +84 -5
- package/dist/cli/upstream.js.map +1 -1
- package/dist/node_modules/@zmice/platform-core/dist/index.d.ts +37 -3
- package/dist/node_modules/@zmice/platform-core/dist/index.d.ts.map +1 -1
- package/dist/node_modules/@zmice/platform-core/dist/index.js +68 -0
- package/dist/node_modules/@zmice/platform-core/dist/index.js.map +1 -1
- package/dist/node_modules/@zmice/platform-core/dist/index.test.js +44 -1
- package/dist/node_modules/@zmice/platform-core/dist/index.test.js.map +1 -1
- package/dist/runtime/__tests__/worktree-manager.test.js +63 -1
- package/dist/runtime/__tests__/worktree-manager.test.js.map +1 -1
- package/dist/runtime/worktree-manager.d.ts +26 -1
- package/dist/runtime/worktree-manager.d.ts.map +1 -1
- package/dist/runtime/worktree-manager.js +126 -12
- package/dist/runtime/worktree-manager.js.map +1 -1
- package/dist/team/__tests__/orchestrator.test.js +40 -0
- package/dist/team/__tests__/orchestrator.test.js.map +1 -1
- package/dist/team/__tests__/planner.test.d.ts +2 -0
- package/dist/team/__tests__/planner.test.d.ts.map +1 -0
- package/dist/team/__tests__/planner.test.js +43 -0
- package/dist/team/__tests__/planner.test.js.map +1 -0
- package/dist/team/__tests__/task-queue.test.js +18 -0
- package/dist/team/__tests__/task-queue.test.js.map +1 -1
- package/dist/team/orchestrator.d.ts +2 -1
- package/dist/team/orchestrator.d.ts.map +1 -1
- package/dist/team/orchestrator.js +29 -10
- package/dist/team/orchestrator.js.map +1 -1
- package/dist/team/planner.d.ts +27 -0
- package/dist/team/planner.d.ts.map +1 -0
- package/dist/team/planner.js +120 -0
- package/dist/team/planner.js.map +1 -0
- package/dist/team/task-queue.d.ts +3 -0
- package/dist/team/task-queue.d.ts.map +1 -1
- package/dist/team/task-queue.js +11 -2
- package/dist/team/task-queue.js.map +1 -1
- package/package.json +2 -2
- package/vendor/node_modules/@zmice/platform-core/dist/index.d.ts +37 -3
- package/vendor/node_modules/@zmice/platform-core/dist/index.d.ts.map +1 -1
- package/vendor/node_modules/@zmice/platform-core/dist/index.js +68 -0
- package/vendor/node_modules/@zmice/platform-core/dist/index.js.map +1 -1
- package/vendor/node_modules/@zmice/platform-core/dist/index.test.js +44 -1
- package/vendor/node_modules/@zmice/platform-core/dist/index.test.js.map +1 -1
- package/vendor/packages/platform-claude/dist/index.d.ts.map +1 -1
- package/vendor/packages/platform-claude/dist/index.js +12 -70
- package/vendor/packages/platform-claude/dist/index.js.map +1 -1
- package/vendor/packages/platform-codex/dist/generate.d.ts +1 -1
- package/vendor/packages/platform-codex/dist/generate.d.ts.map +1 -1
- package/vendor/packages/platform-codex/dist/generate.js +1 -1
- package/vendor/packages/platform-codex/dist/generate.js.map +1 -1
- package/vendor/packages/platform-codex/dist/index.d.ts +15 -1
- package/vendor/packages/platform-codex/dist/index.d.ts.map +1 -1
- package/vendor/packages/platform-codex/dist/index.js +320 -47
- package/vendor/packages/platform-codex/dist/index.js.map +1 -1
- package/vendor/packages/platform-codex/dist/index.test.js +113 -5
- package/vendor/packages/platform-codex/dist/index.test.js.map +1 -1
- package/vendor/packages/platform-opencode/dist/index.d.ts.map +1 -1
- package/vendor/packages/platform-opencode/dist/index.js +15 -81
- package/vendor/packages/platform-opencode/dist/index.js.map +1 -1
- package/vendor/packages/platform-qwen/dist/index.d.ts.map +1 -1
- package/vendor/packages/platform-qwen/dist/index.js +28 -84
- package/vendor/packages/platform-qwen/dist/index.js.map +1 -1
- package/vendor/packages/toolkit/src/content/agents/architect/body.md +8 -0
- package/vendor/packages/toolkit/src/content/agents/code-reviewer/body.md +10 -0
- package/vendor/packages/toolkit/src/content/agents/product-owner/body.md +8 -0
- package/vendor/packages/toolkit/src/content/commands/plan-review/body.md +3 -1
- package/vendor/packages/toolkit/src/content/commands/start/body.md +51 -2
- package/vendor/packages/toolkit/src/content/commands/start/meta.yaml +2 -2
- package/vendor/packages/toolkit/src/content/skills/branch-finish-and-cleanup/body.md +17 -0
- package/vendor/packages/toolkit/src/content/skills/browser-qa-testing/body.md +77 -520
- package/vendor/packages/toolkit/src/content/skills/ci-cd-and-automation/body.md +56 -387
- package/vendor/packages/toolkit/src/content/skills/code-review-and-quality/body.md +10 -0
- package/vendor/packages/toolkit/src/content/skills/code-simplification/body.md +55 -301
- package/vendor/packages/toolkit/src/content/skills/context-engineering/body.md +10 -0
- package/vendor/packages/toolkit/src/content/skills/continuous-learning/body.md +66 -331
- package/vendor/packages/toolkit/src/content/skills/multi-perspective-review/body.md +30 -1
- package/vendor/packages/toolkit/src/content/skills/parallel-agent-dispatch/body.md +79 -317
- package/vendor/packages/toolkit/src/content/skills/performance-optimization/body.md +60 -330
- package/vendor/packages/toolkit/src/content/skills/planning-and-task-breakdown/body.md +35 -0
- package/vendor/packages/toolkit/src/content/skills/sdd-tdd-workflow/body.md +66 -342
- package/vendor/packages/toolkit/src/content/skills/sprint-retrospective/body.md +66 -303
- package/vendor/packages/toolkit/src/content/skills/team-orchestration/body.md +81 -327
- package/vendor/packages/toolkit/src/content/skills/test-driven-development/body.md +50 -346
- package/vendor/packages/toolkit/src/content/skills/using-agent-skills/body.md +26 -2
- package/vendor/references/upstreams.yaml +5 -0
|
@@ -1,351 +1,113 @@
|
|
|
1
1
|
# Parallel Agent Dispatch
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 角色定位
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
在用户明确允许多 agent / 并行 / team 模式时,把彼此独立的任务做上下文级 fan-out,并在结束时做 fan-in、冲突检测和集成验证。
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- **Context Fan-Out**(默认)— 单上下文内并行分派子代理
|
|
9
|
-
- **Worktree Parallel** — Git worktree 文件系统级隔离
|
|
10
|
-
- **Cascade** — 分层批次执行(层内并行,层间串行)
|
|
7
|
+
这个 skill 不是默认加速器。能并行不等于应该并行;并行会增加 token、延迟、集成和验证成本。
|
|
11
8
|
|
|
12
|
-
##
|
|
9
|
+
## 快速路径
|
|
13
10
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
是
|
|
22
|
-
▼
|
|
23
|
-
任务 >2 个? ─── 否 ──→ 串行可能更简单
|
|
24
|
-
│
|
|
25
|
-
是
|
|
26
|
-
▼
|
|
27
|
-
parallel-agent-dispatch ✓
|
|
28
|
-
│
|
|
29
|
-
▼
|
|
30
|
-
任务修改同一文件? ─── 是 ──→ Worktree 并行模式(文件系统隔离)
|
|
31
|
-
│
|
|
32
|
-
否
|
|
33
|
-
▼
|
|
34
|
-
任务有层次依赖? ── 是 ──→ Cascade 模式(分层批次)
|
|
35
|
-
│
|
|
36
|
-
否
|
|
37
|
-
▼
|
|
38
|
-
Context Fan-Out(默认模式)
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
适用场景:
|
|
42
|
-
- 多个独立模块可以同时实现
|
|
43
|
-
- 多个独立测试文件可以同时编写
|
|
44
|
-
- 多个不相关的 Bug 可以同时修复
|
|
45
|
-
- 代码审查的不同维度可以并行进行
|
|
46
|
-
|
|
47
|
-
不适用场景:
|
|
48
|
-
- 任务之间有依赖关系(Task B 需要 Task A 的输出)
|
|
49
|
-
- 任务修改同一个文件
|
|
50
|
-
- 任务需要共享状态
|
|
51
|
-
|
|
52
|
-
## 执行流程
|
|
53
|
-
|
|
54
|
-
### 阶段 1:分析与分组(Analysis)
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
读取计划中的所有任务
|
|
58
|
-
│
|
|
59
|
-
▼
|
|
60
|
-
构建依赖图
|
|
61
|
-
│
|
|
62
|
-
▼
|
|
63
|
-
识别可并行的任务组
|
|
64
|
-
│
|
|
65
|
-
▼
|
|
66
|
-
检查文件冲突(两个任务是否修改同一文件?)
|
|
67
|
-
│
|
|
68
|
-
▼
|
|
69
|
-
确定并行批次
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**关键检查:**
|
|
73
|
-
- 同一文件不能被两个并行任务修改
|
|
74
|
-
- 有依赖关系的任务必须串行
|
|
75
|
-
- 共享测试 fixtures 的任务要注意隔离
|
|
76
|
-
|
|
77
|
-
### 阶段 2:扇出(Fan-Out)
|
|
78
|
-
|
|
79
|
-
为每个并行任务分派子代理:
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
控制器
|
|
83
|
-
├─→ 子代理 A:Task 1(文件集 A)
|
|
84
|
-
├─→ 子代理 B:Task 2(文件集 B)
|
|
85
|
-
└─→ 子代理 C:Task 3(文件集 C)
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
**每个子代理接收:**
|
|
89
|
-
- 完整的任务描述
|
|
90
|
-
- 允许修改的文件列表(严格限定)
|
|
91
|
-
- 项目约定和模式示例
|
|
92
|
-
- 测试策略
|
|
93
|
-
- **明确说明不要触碰其他子代理的文件**
|
|
94
|
-
|
|
95
|
-
### 阶段 3:并行执行
|
|
96
|
-
|
|
97
|
-
每个子代理独立工作:
|
|
98
|
-
1. 遵循 TDD 循环(红 → 绿 → 重构)
|
|
99
|
-
2. 只修改分配给自己的文件
|
|
100
|
-
3. 运行自己范围内的测试
|
|
101
|
-
4. 报告状态(DONE / BLOCKED / NEEDS_CONTEXT)
|
|
102
|
-
|
|
103
|
-
### 阶段 4:扇入(Fan-In)
|
|
104
|
-
|
|
105
|
-
收集所有子代理的结果:
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
子代理 A 完成 ──┐
|
|
109
|
-
子代理 B 完成 ──┼──→ 结果汇总 → 冲突检测 → 集成测试
|
|
110
|
-
子代理 C 完成 ──┘
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**汇总检查清单:**
|
|
114
|
-
- [ ] 所有子代理报告完成
|
|
115
|
-
- [ ] 无文件冲突(检查 VCS diff)
|
|
116
|
-
- [ ] 运行完整测试套件(不仅是各自的测试)
|
|
117
|
-
- [ ] 检查跨模块的接口一致性
|
|
118
|
-
- [ ] 合并所有变更
|
|
119
|
-
|
|
120
|
-
### 扇入后的分支收尾
|
|
121
|
-
|
|
122
|
-
fan-in 结束不代表并行任务真正闭环。无论采用上下文并行还是 worktree 并行,都要继续处理每个任务分支的结束状态:
|
|
123
|
-
|
|
124
|
-
- 成功且已合入的分支:验证目标分支状态后删除
|
|
125
|
-
- 成功但等待 PR 的分支:保留到审查完成,并明确负责人
|
|
126
|
-
- 失败或被放弃的分支:记录结论后清理现场,不继续占用 worktree
|
|
127
|
-
- 暂时保留的分支:写明为什么保留、保留多久、由谁接手
|
|
128
|
-
|
|
129
|
-
并行批次里最常见的脏状态不是“代码冲突”,而是 fan-in 后残留一堆无人负责的 branch / worktree。具体判定与清理策略见 `branch-finish-and-cleanup`。
|
|
130
|
-
|
|
131
|
-
## 冲突检测
|
|
132
|
-
|
|
133
|
-
即使预先分配了文件集,仍需检测以下冲突:
|
|
134
|
-
|
|
135
|
-
| 冲突类型 | 检测方法 | 解决方式 |
|
|
136
|
-
|---------|---------|---------|
|
|
137
|
-
| 文件冲突 | 两个子代理修改了同一文件 | 手动合并或串行重做 |
|
|
138
|
-
| 接口冲突 | 模块 A 的输出与模块 B 的输入不匹配 | 修复接口层 |
|
|
139
|
-
| 命名冲突 | 不同子代理对同一概念使用不同命名 | 统一命名后批量替换 |
|
|
140
|
-
| 依赖冲突 | 子代理引入了冲突的依赖版本 | 协调统一版本 |
|
|
141
|
-
|
|
142
|
-
## 失败处理
|
|
143
|
-
|
|
144
|
-
**单任务失败不阻塞其他任务。**
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
子代理 A:✅ DONE
|
|
148
|
-
子代理 B:❌ BLOCKED
|
|
149
|
-
子代理 C:✅ DONE
|
|
150
|
-
│
|
|
151
|
-
▼
|
|
152
|
-
先合并 A 和 C 的结果
|
|
153
|
-
然后单独处理 B(串行重试或重新分析)
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
处理优先级:
|
|
157
|
-
1. 收集所有成功结果
|
|
158
|
-
2. 运行集成测试(仅成功部分)
|
|
159
|
-
3. 分析失败原因
|
|
160
|
-
4. 对失败任务:提供更多上下文 / 用更强模型 / 拆分为更小任务
|
|
161
|
-
|
|
162
|
-
## Worktree 并行模式
|
|
163
|
-
|
|
164
|
-
当任务需要真正的文件系统隔离时(例如多个任务可能触及相邻文件、或需要完整的构建环境),使用 git worktree 为每个并行代理提供独立的工作目录。
|
|
165
|
-
|
|
166
|
-
### 流程
|
|
167
|
-
|
|
168
|
-
```
|
|
169
|
-
分析任务 → 为每个任务创建 worktree + 分支
|
|
170
|
-
│
|
|
171
|
-
▼
|
|
172
|
-
并行执行(每个代理在自己的 worktree 中工作)
|
|
173
|
-
│
|
|
174
|
-
▼
|
|
175
|
-
汇入主分支 → 解决冲突 → 集成测试 → 清理 worktree
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
### 具体步骤
|
|
179
|
-
|
|
180
|
-
**1. 创建 Worktree:**
|
|
181
|
-
```bash
|
|
182
|
-
# 主仓库在 main 分支
|
|
183
|
-
git worktree add ../project-task-a feature/task-a
|
|
184
|
-
git worktree add ../project-task-b feature/task-b
|
|
185
|
-
git worktree add ../project-task-c feature/task-c
|
|
186
|
-
|
|
187
|
-
# 每个 worktree 是独立目录,独立分支
|
|
188
|
-
ls ../
|
|
189
|
-
project/ ← main 分支
|
|
190
|
-
project-task-a/ ← feature/task-a
|
|
191
|
-
project-task-b/ ← feature/task-b
|
|
192
|
-
project-task-c/ ← feature/task-c
|
|
193
|
-
```
|
|
11
|
+
1. 读取计划,列出所有任务、依赖和预计触达文件。
|
|
12
|
+
2. 判断任务是否彼此独立,是否有清晰文件所有权。
|
|
13
|
+
3. 给出并行推荐,但在用户明确确认前不启动子代理。
|
|
14
|
+
4. 为每个 worker 分配唯一责任范围、允许修改文件和验证命令。
|
|
15
|
+
5. fan-out 执行,期间不让多个 worker 修改同一文件。
|
|
16
|
+
6. fan-in 汇总,检查 diff、冲突、接口一致性和测试结果。
|
|
17
|
+
7. 记录验收 transcript:谁做了什么、证据是什么、还有什么风险。
|
|
194
18
|
|
|
195
|
-
|
|
196
|
-
每个子代理的工作目录指向其 worktree,完全隔离。
|
|
19
|
+
## 使用条件
|
|
197
20
|
|
|
198
|
-
|
|
199
|
-
```bash
|
|
200
|
-
# 完成后合并各分支
|
|
201
|
-
git checkout main
|
|
202
|
-
git merge feature/task-a --no-edit
|
|
203
|
-
git merge feature/task-b --no-edit
|
|
204
|
-
git merge feature/task-c --no-edit
|
|
21
|
+
适用:
|
|
205
22
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
git branch -d feature/task-a feature/task-b feature/task-c
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
**4. 冲突解决:**
|
|
214
|
-
- 合并时发现冲突 → 手动解决或分派子代理处理
|
|
215
|
-
- 实验失败 → 直接删除 worktree,无需复杂回滚
|
|
23
|
+
- 多个任务互不依赖。
|
|
24
|
+
- 每个任务能在独立上下文中完成。
|
|
25
|
+
- 文件所有权可以提前划清。
|
|
26
|
+
- fan-in 后有集成测试或人工审查门禁。
|
|
216
27
|
|
|
217
|
-
|
|
218
|
-
- 分支合入后删除功能分支
|
|
219
|
-
- 不再需要的 worktree 立即移除
|
|
220
|
-
- 保留中的实验分支要登记负责人与后续动作
|
|
28
|
+
不适用:
|
|
221
29
|
|
|
222
|
-
|
|
30
|
+
- 任务依赖同一个未完成设计。
|
|
31
|
+
- 多个任务必须改同一文件。
|
|
32
|
+
- 缺少测试或集成验证方式。
|
|
33
|
+
- 用户没有明确授权并行。
|
|
223
34
|
|
|
224
|
-
|
|
225
|
-
|------|----------|
|
|
226
|
-
| 任务需要完整构建环境 | 每个 worktree 可独立 `npm install` 和构建 |
|
|
227
|
-
| 任务可能触及相邻文件 | 文件系统级隔离,无写入冲突 |
|
|
228
|
-
| 探索性实验 | 失败时直接删除 worktree,零成本 |
|
|
229
|
-
| 多人/多 Agent 协作 | 每人一个 worktree,自然隔离 |
|
|
35
|
+
## 模式选择
|
|
230
36
|
|
|
231
|
-
|
|
37
|
+
| 模式 | 适用场景 | 代价 |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| Context Fan-Out | 只需要多个子代理分别分析或修改互不重叠文件 | 共享同一 worktree,fan-in 需谨慎检查 |
|
|
40
|
+
| Worktree Parallel | 任务可能触及相邻区域,或需要独立构建环境 | 需要分支和 worktree 清理 |
|
|
41
|
+
| Cascade | 任务有层级依赖,但每层内可并行 | 每层都要验证后再进下一层 |
|
|
42
|
+
| Team Orchestration | 需要 tmux + git worktree + 多 CLI worker | 运行时成本最高,需 `zc team` 收尾 |
|
|
232
43
|
|
|
233
|
-
|
|
44
|
+
如果需要文件系统级隔离,切到 `team-orchestration`;不要在本 skill 内展开完整 `zc team` 教程。
|
|
234
45
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
```
|
|
238
|
-
依赖分析 → 构建层次图 → 分层执行
|
|
46
|
+
## 授权提示
|
|
239
47
|
|
|
240
|
-
|
|
241
|
-
│ Task 1, Task 2, Task 3 ── 并行 ──→ 验证
|
|
242
|
-
▼
|
|
243
|
-
层 1:依赖层 0 的任务
|
|
244
|
-
│ Task 4, Task 5 ── 并行 ──→ 验证
|
|
245
|
-
▼
|
|
246
|
-
层 2:依赖层 1 的任务
|
|
247
|
-
│ Task 6 ── 串行 ──→ 最终验证
|
|
248
|
-
▼
|
|
249
|
-
完成
|
|
250
|
-
```
|
|
48
|
+
启动前必须给用户看到这段信息的等价内容:
|
|
251
49
|
|
|
252
|
-
|
|
50
|
+
```text
|
|
51
|
+
Recommendation: 开启 <模式> because <并行收益> outweighs <集成代价>。
|
|
52
|
+
- worker 数:
|
|
53
|
+
- 文件所有权:
|
|
54
|
+
- 不并行的替代方案:
|
|
55
|
+
- fan-in 验证:
|
|
253
56
|
|
|
254
|
-
|
|
255
|
-
1. 读取计划中的所有任务及其依赖关系
|
|
256
|
-
2. 将无依赖的任务放入层 0
|
|
257
|
-
3. 将仅依赖层 0 的任务放入层 1
|
|
258
|
-
4. 以此类推,直到所有任务分层
|
|
259
|
-
5. 每层内的任务互相独立,可并行执行
|
|
57
|
+
确认后我再启动;不确认则按串行推进。
|
|
260
58
|
```
|
|
261
59
|
|
|
262
|
-
|
|
60
|
+
## Worker 合约
|
|
263
61
|
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
```
|
|
267
|
-
层 N 完成
|
|
268
|
-
│
|
|
269
|
-
▼
|
|
270
|
-
✅ 所有任务成功 → 运行集成测试 → 进入层 N+1
|
|
271
|
-
❌ 部分失败 → 先合并成功结果 → 单独处理失败任务
|
|
272
|
-
❌ 集成测试失败 → 停止,修复后重新运行本层
|
|
273
|
-
```
|
|
62
|
+
每个子代理都必须收到:
|
|
274
63
|
|
|
275
|
-
|
|
64
|
+
- 任务目标和验收标准
|
|
65
|
+
- 允许读取的关键上下文
|
|
66
|
+
- 允许修改的文件或模块边界
|
|
67
|
+
- 不得触碰其他 worker 文件的说明
|
|
68
|
+
- 任务内验证命令
|
|
69
|
+
- 返回格式:`DONE / BLOCKED / NEEDS_CONTEXT`
|
|
276
70
|
|
|
277
|
-
|
|
71
|
+
返回时必须列出:
|
|
278
72
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
| 失败影响 | 本层失败才停 | 层失败阵止下游 |
|
|
284
|
-
| 适用场景 | 简单独立任务 | 有层次依赖的复杂计划 |
|
|
73
|
+
- 修改文件
|
|
74
|
+
- 已运行验证
|
|
75
|
+
- 未覆盖风险
|
|
76
|
+
- 需要主线程 fan-in 的事项
|
|
285
77
|
|
|
286
|
-
##
|
|
78
|
+
## Fan-In 门禁
|
|
287
79
|
|
|
288
|
-
|
|
289
|
-
|---------|---------|------|
|
|
290
|
-
| 任务完全独立,不触及同一文件 | **Context Fan-Out** | 最简单高效,无额外开销 |
|
|
291
|
-
| 任务可能触及相邻文件或需要独立构建 | **Worktree Parallel** | 文件系统级隔离,安全无冲突 |
|
|
292
|
-
| 任务有层次依赖关系 | **Cascade** | 层内并行 + 层间门控,最大化并行度 |
|
|
293
|
-
| 任务紧耦合,有严格串行依赖 | **不使用并行** | 用 subagent-driven-development 串行执行 |
|
|
294
|
-
| 探索性实验,不确定哪个方案最优 | **Worktree Parallel** | 失败时直接删除 worktree,零成本 |
|
|
295
|
-
| 大型计划(10+ 任务) | **Cascade** | 自动优化执行顺序,可控资源使用 |
|
|
80
|
+
并行完成不等于任务完成。fan-in 必须检查:
|
|
296
81
|
|
|
297
|
-
|
|
82
|
+
- 所有子代理结果是否到齐。
|
|
83
|
+
- 是否出现同文件修改、命名冲突或接口冲突。
|
|
84
|
+
- 局部验证是否可信。
|
|
85
|
+
- 主线程是否运行集成测试或目标平台验证。
|
|
86
|
+
- 是否需要清理分支、worktree、临时文件或保留待审查分支。
|
|
298
87
|
|
|
299
|
-
|
|
88
|
+
推荐记录格式:
|
|
300
89
|
|
|
90
|
+
```text
|
|
91
|
+
Parallel acceptance transcript:
|
|
92
|
+
- Plan:
|
|
93
|
+
- Workers:
|
|
94
|
+
- Files:
|
|
95
|
+
- Results:
|
|
96
|
+
- Verification:
|
|
97
|
+
- Conflicts:
|
|
98
|
+
- Follow-up:
|
|
301
99
|
```
|
|
302
|
-
批次 1:Task 1, 2, 3(并行)→ 汇总 → 集成测试
|
|
303
|
-
│
|
|
304
|
-
▼
|
|
305
|
-
批次 2:Task 4, 5(并行,依赖批次1的输出)→ 汇总 → 集成测试
|
|
306
|
-
│
|
|
307
|
-
▼
|
|
308
|
-
批次 3:Task 6(串行,依赖批次2)→ 最终测试
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
**批次划分原则:**
|
|
312
|
-
- 同一批次内的任务互相独立
|
|
313
|
-
- 下一批次可以依赖上一批次的输出
|
|
314
|
-
- 每批次后运行集成测试
|
|
315
|
-
- 批次大小根据可用资源调整
|
|
316
|
-
|
|
317
|
-
## 批次结束协议
|
|
318
100
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
1. 汇总成功结果并运行批次级验证
|
|
322
|
-
2. 标记失败任务是重试、拆分还是放弃
|
|
323
|
-
3. 为成功任务明确 branch 去向:合入、开 PR 或暂时保留
|
|
324
|
-
4. 清理本批次已经无用的 worktree 和临时分支
|
|
325
|
-
5. 再进入下一批次
|
|
326
|
-
|
|
327
|
-
不要把 branch cleanup 推迟到所有批次都结束后再统一处理。批次越大,残留越难追。
|
|
328
|
-
|
|
329
|
-
## 与其他技能的衔接
|
|
101
|
+
## 失败处理
|
|
330
102
|
|
|
331
|
-
-
|
|
332
|
-
-
|
|
333
|
-
-
|
|
334
|
-
-
|
|
335
|
-
- **verification-before-completion** — 扇入阶段和 Cascade 层间门控的集成测试遵循验证铁律
|
|
336
|
-
- **code-review-and-quality** — 所有并行结果合并后进行统一审查
|
|
337
|
-
- **continuous-learning** — 并行执行中的模式(常见冲突、有效批次大小)自动记录为 instinct
|
|
103
|
+
- 单个 worker 失败时,不要自动丢弃其他成功结果。
|
|
104
|
+
- 先收集成功结果,再判断是否可以部分合入。
|
|
105
|
+
- 失败任务优先缩小范围、补上下文或改为串行处理。
|
|
106
|
+
- 如果失败暴露计划不成立,回到 `planning-and-task-breakdown`。
|
|
338
107
|
|
|
339
|
-
##
|
|
108
|
+
## 与相关技能的边界
|
|
340
109
|
|
|
341
|
-
-
|
|
342
|
-
-
|
|
343
|
-
-
|
|
344
|
-
-
|
|
345
|
-
- 子代理间共享上下文(违背隔离原则)
|
|
346
|
-
- 单个子代理失败就放弃所有结果
|
|
347
|
-
- 不运行完整测试套件就声明并行执行完成
|
|
348
|
-
- Cascade 模式中跳过层间门控直接进入下一层
|
|
349
|
-
- Worktree 完成后不清理(浪费磁盘空间)
|
|
350
|
-
- 不根据任务特征选择并行模式,一律使用默认 Fan-Out
|
|
351
|
-
- fan-in 后不明确各分支的最终去向,留下悬空 branch / worktree
|
|
110
|
+
- `subagent-driven-development`:串行委派,不做并行 fan-out。
|
|
111
|
+
- `team-orchestration`:进程级 + 文件系统级隔离。
|
|
112
|
+
- `branch-finish-and-cleanup`:fan-in 后处理分支、worktree 和残留状态。
|
|
113
|
+
- `verification-before-completion`:声明完成前读取验证输出。
|