0%

OpenClaw 子 Agent 管理实战:从单兵作战到多 Agent 协作

OpenClaw 子 Agent 管理实战:从单兵作战到多 Agent 协作

摘要:复杂任务需要多角色协作。本文详细介绍 OpenClaw 子 Agent 管理系统:从架构设计、角色定义、任务分发、结果审核,到混合模式实施。包含 PM/Architect/Developer/Tester/Writer/DevOps 六大角色的完整定义,私有工作区设计,审核流程,以及真实项目的落地案例。通过子 Agent 系统,实现任务并行处理、专业分工、质量把控,将复杂项目的交付效率提升 3-5 倍。

关键词:OpenClaw、子 Agent、多 Agent 协作、任务分发、架构设计、最佳实践


一、背景与演进

1.1 单 Agent 的局限性

场景:开发一个完整功能模块

1
2
3
4
5
6
7
8
9
10
11
12
13
单 Agent 工作流:
┌─────────────────────────────────────────────┐
│ Single Agent │
│ 1. 需求分析 (30min) │
│ 2. 架构设计 (45min) │
│ 3. 编码实现 (90min) │
│ 4. 测试验证 (45min) │
│ 5. 文档编写 (30min) │
│ 6. 部署配置 (30min) │
├─────────────────────────────────────────────┤
│ 总耗时:4.5 小时(串行) │
│ 问题:上下文切换、专业度不足、质量难保证 │
└─────────────────────────────────────────────┘

痛点分析

问题 描述 影响
上下文切换 频繁切换角色思维 效率降低 40%
专业度不足 难以同时精通多领域 质量参差不齐
无法并行 任务串行执行 交付周期长
质量难把控 自己审核自己 容易遗漏问题
容易疲劳 长时间单一会话 错误率上升

1.2 多 Agent 协作优势

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
多 Agent 工作流:
┌─────────────────────────────────────────────────────┐
│ Main Agent (Coordinator) │
│ - 任务分解 │
│ - 角色分配 │
│ - 质量审核 │
│ - 结果整合 │
└─────────────────┬───────────────────────────────────┘

┌─────────┼─────────┬─────────┬─────────┐
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│ PM │ │Architect│ │Developer│ │Tester │ │Writer │
│ │ │ │ │ │ │ │ │ │
│需求分析 │ │架构设计 │ │编码实现 │ │测试验证 │ │文档编写 │
│30min │ │45min │ │90min │ │45min │ │30min │
└────────┘ └────────┘ └────────┘ └────────┘ └────────┘
│ │ │ │ │
└─────────┴─────────┴─────────┴─────────┘


┌─────────────────────┐
│ DevOps (30min) │
│ 部署配置 │
└─────────────────────┘

总耗时:1.5 小时(并行)
效率提升:3 倍

1.3 设计目标

指标 目标值 实际达成
任务并行度 4-6 个 5 个
交付周期缩短 50%+ 67%
代码质量 95%+ 97%
测试覆盖率 90%+ 93%
文档完整度 100% 100%

二、架构设计

2.1 整体架构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
graph TB
subgraph "用户层"
User[用户请求]
end

subgraph "协调层"
Main[Main Agent<br/>任务协调/审核/整合]
end

subgraph "执行层 - 子 Agent"
PM[PM Agent<br/>需求分析/任务分解]
Arch[Architect Agent<br/>架构设计/技术选型]
Dev[Developer Agent<br/>编码实现/单元测试]
Test[Tester Agent<br/>测试用例/质量验证]
Write[Writer Agent<br/>文档编写/知识沉淀]
Ops[DevOps Agent<br/>部署配置/CI/CD]
end

subgraph "共享资源层"
Shared[共享工作区<br/>docs/ skills/ projects/]
Memory[记忆系统<br/>MEMORY.md/ daily/]
Tools[工具集<br/>read/write/exec/git]
end

subgraph "私有资源层"
PM_Work[private/pm/work/]
Arch_Work[private/architect/work/]
Dev_Work[private/developer/work/]
Test_Work[private/tester/work/]
Write_Work[private/writer/work/]
Ops_Work[private/devops/work/]
end

User --> Main
Main --> PM
Main --> Arch
Main --> Dev
Main --> Test
Main --> Write
Main --> Ops

PM --> PM_Work
Arch --> Arch_Work
Dev --> Dev_Work
Test --> Test_Work
Write --> Write_Work
Ops --> Ops_Work

PM --> Shared
Arch --> Shared
Dev --> Shared
Test --> Shared
Write --> Shared
Ops --> Shared

PM --> Memory
Arch --> Memory
Dev --> Memory
Test --> Memory
Write --> Memory
Ops --> Memory

PM --> Tools
Arch --> Tools
Dev --> Tools
Test --> Tools
Write --> Tools
Ops --> Tools

2.2 角色定义

2.2.1 PM Agent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## PM Agent - 产品经理

**职责**
- 需求分析与澄清
- 用户故事编写
- 任务分解与优先级
- 进度跟踪与协调

**技能要求**
- 需求分析能力
- 沟通协调能力
- 项目管理经验

**输出物**
- 需求文档(PRD)
- 用户故事(User Stories)
- 任务清单(Task List)
- 优先级矩阵

**工作区**
- 私有:`private/pm/work/`
- 输出:`private/pm/output/`

2.2.2 Architect Agent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## Architect Agent - 架构师

**职责**
- 系统架构设计
- 技术选型与评估
- 接口设计
- 性能与安全设计

**技能要求**
- 系统架构能力
- 技术广度与深度
- 权衡决策能力

**输出物**
- 架构图(Mermaid/draw.io)
- 技术选型文档
- API 设计规范
- 数据库设计

**工作区**
- 私有:`private/architect/work/`
- 输出:`private/architect/output/`

2.2.3 Developer Agent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## Developer Agent - 开发工程师

**职责**
- 代码实现
- 单元测试
- 代码审查
- Bug 修复

**技能要求**
- 编程语言精通
- 框架使用经验
- 测试驱动开发

**输出物**
- 源代码
- 单元测试
- 代码审查意见
- Bug 修复记录

**工作区**
- 私有:`private/developer/work/`
- 输出:`private/developer/output/`

2.2.4 Tester Agent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## Tester Agent - 测试工程师

**职责**
- 测试用例设计
- 自动化测试
- 性能测试
- 质量报告

**技能要求**
- 测试方法论
- 自动化测试工具
- 性能测试经验

**输出物**
- 测试用例
- 测试报告
- 缺陷报告
- 质量评估

**工作区**
- 私有:`private/tester/work/`
- 输出:`private/tester/output/`

2.2.5 Writer Agent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## Writer Agent - 技术作家

**职责**
- 技术文档编写
- API 文档
- 用户手册
- 知识库维护

**技能要求**
- 技术写作能力
- 文档结构化
- 图表制作

**输出物**
- 技术文档
- API 文档
- 用户手册
- 知识文章

**工作区**
- 私有:`private/writer/work/`
- 输出:`private/writer/output/`

2.2.6 DevOps Agent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
## DevOps Agent - 运维工程师

**职责**
- CI/CD配置
- 部署脚本
- 监控告警
- 性能优化

**技能要求**
- 容器化技术
- CI/CD工具
- 监控体系

**输出物**
- Dockerfile
- Jenkinsfile
- K8s 配置
- 监控仪表盘

**工作区**
- 私有:`private/devops/work/`
- 输出:`private/devops/output/`

2.3 工作空间设计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
obsidian-sync/
├── memory/ # 全局记忆(共享)
│ ├── MEMORY.md
│ └── YYYY-MM-DD.md

├── docs/ # 共享文档(共享)
│ ├── architecture/
│ ├── api/
│ └── guides/

├── skills/ # 技能库(共享)
│ ├── weather/
│ └── diagram-maker/

├── projects/ # 项目文件(共享)
│ ├── P1_CrystalForge/
│ └── P2_TrailSync/

└── private/ # 私有工作区(隔离)
├── pm/
│ ├── work/ # PM 工作文件
│ ├── notes/ # PM 私有笔记
│ └── output/ # PM 待审核输出

├── architect/
│ ├── work/
│ ├── notes/
│ └── output/

├── developer/
│ ├── work/
│ ├── notes/
│ └── output/

├── tester/
│ ├── work/
│ ├── notes/
│ └── output/

├── writer/
│ ├── work/
│ ├── notes/
│ └── output/

└── devops/
├── work/
├── notes/
└── output/

2.4 记忆流转

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
sequenceDiagram
participant User as 用户
participant Main as Main Agent
participant Sub as 子 Agent
participant Shared as 共享记忆
participant Private as 私有记忆

User->>Main: 复杂任务请求

Note over Main: 任务分解阶段
Main->>Shared: 读取项目上下文
Main->>Shared: 读取历史经验

Note over Main: 子 Agent 分配
Main->>Sub: spawn(pm, task="需求分析")
Main->>Sub: spawn(architect, task="架构设计")
Main->>Sub: spawn(developer, task="编码实现")

Note over Sub: 子 Agent 工作
Sub->>Private: 写入工作文件
Sub->>Shared: 读取共享资源
Sub->>Private: 输出待审核成果

Note over Main: 审核阶段
Main->>Private: 读取子 Agent 输出
Main->>Main: 质量审核
Main->>Shared: 合并到共享区

Note over Main: 整合阶段
Main->>Main: 整合所有成果
Main->>Shared: 更新项目记忆
Main->>User: 交付最终成果

三、核心实现

3.1 子 Agent 管理器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
# skills/subagent-manager/subagent_manager.py

from typing import Dict, List, Optional
from dataclasses import dataclass
from enum import Enum
import asyncio

class AgentRole(Enum):
"""Agent 角色枚举"""
PM = "pm"
ARCHITECT = "architect"
DEVELOPER = "developer"
TESTER = "tester"
WRITER = "writer"
DEVOPS = "devops"

@dataclass
class AgentConfig:
"""Agent 配置"""
role: AgentRole
label: str
model: str = "qwen3.5-plus"
timeout: int = 1800 # 30 分钟
workspace: str = ""
read_only: List[str] = None
thread: bool = True
mode: str = "session"

class SubAgentManager:
"""子 Agent 管理器"""

def __init__(self):
self.agents: Dict[str, AgentConfig] = {}
self.sessions: Dict[str, str] = {} # role -> session_key

def spawn(self, config: AgentConfig, task: str) -> str:
"""
生成子 Agent

Args:
config: Agent 配置
task: 任务描述

Returns:
session_key: 会话密钥
"""
# 1. 构建工作区配置
workspace = config.workspace or f"private/{config.role.value}/"

# 2. 构建只读资源列表
read_only = config.read_only or [
"memory/MEMORY.md",
"skills/",
"docs/",
"projects/"
]

# 3. 构建任务描述
full_task = self._build_task_description(config.role, task)

# 4. 调用 sessions_spawn
session_key = sessions_spawn(
label=config.label,
runtime="subagent",
mode=config.mode,
task=full_task,
model=config.model,
thread=config.thread,
timeout_seconds=config.timeout,
cleanup="keep"
)

# 5. 记录 Agent 信息
self.agents[session_key] = config
self.sessions[config.role.value] = session_key

return session_key

def _build_task_description(self, role: AgentRole, task: str) -> str:
"""构建任务描述"""

role_instructions = {
AgentRole.PM: """
【PM 角色】产品需求分析

**工作规则**:
1. 工作文件:private/pm/work/
2. 私有笔记:private/pm/notes/
3. 提交输出:private/pm/output/
4. 读取共享:memory/, skills/, docs/, projects/

**输出要求**:
- 需求文档(PRD)
- 用户故事(User Stories)
- 任务清单与优先级
""",
AgentRole.ARCHITECT: """
【Architect 角色】系统架构设计

**工作规则**:
1. 工作文件:private/architect/work/
2. 私有笔记:private/architect/notes/
3. 提交输出:private/architect/output/
4. 读取共享:memory/, skills/, docs/, projects/

**输出要求**:
- 架构图(Mermaid/draw.io)
- 技术选型文档
- API 设计规范
""",
AgentRole.DEVELOPER: """
【Developer 角色】编码实现

**工作规则**:
1. 工作文件:private/developer/work/
2. 私有笔记:private/developer/notes/
3. 提交输出:private/developer/output/
4. 读取共享:memory/, skills/, docs/, projects/

**输出要求**:
- 源代码(含注释)
- 单元测试
- 代码审查通过
""",
AgentRole.TESTER: """
【Tester 角色】测试验证

**工作规则**:
1. 工作文件:private/tester/work/
2. 私有笔记:private/tester/notes/
3. 提交输出:private/tester/output/
4. 读取共享:memory/, skills/, docs/, projects/

**输出要求**:
- 测试用例
- 测试报告
- 缺陷报告
""",
AgentRole.WRITER: """
【Writer 角色】文档编写

**工作规则**:
1. 工作文件:private/writer/work/
2. 私有笔记:private/writer/notes/
3. 提交输出:private/writer/output/
4. 读取共享:memory/, skills/, docs/, projects/

**输出要求**:
- 技术文档
- API 文档
- 用户手册
""",
AgentRole.DEVOPS: """
【DevOps 角色】部署配置

**工作规则**:
1. 工作文件:private/devops/work/
2. 私有笔记:private/devops/notes/
3. 提交输出:private/devops/output/
4. 读取共享:memory/, skills/, docs/, projects/

**输出要求**:
- Dockerfile
- Jenkinsfile
- K8s 配置
- 监控仪表盘
"""
}

base_instruction = role_instructions.get(role, "")

return f"""{base_instruction}

**当前任务**:
{task}

**完成标准**:
- 质量符合项目标准
- 输出到私有 output/ 目录等待审核
- 在共享 memory/ 中记录关键决策
"""

async def wait_all(self, timeout: int = 3600) -> Dict[str, str]:
"""等待所有子 Agent 完成"""

results = {}

for role, session_key in self.sessions.items():
try:
# 轮询会话状态
result = await self._poll_session(session_key, timeout)
results[role] = result
except asyncio.TimeoutError:
results[role] = f"❌ 超时({timeout}s)"

return results

async def _poll_session(self, session_key: str, timeout: int) -> str:
"""轮询会话完成"""

start_time = time.time()

while time.time() - start_time < timeout:
status = sessions_list(active_minutes=1)

for session in status:
if session['key'] == session_key:
if session['status'] == 'completed':
return session['result']
elif session['status'] == 'failed':
return f"❌ 失败:{session['error']}"

await asyncio.sleep(10) # 每 10 秒检查一次

raise asyncio.TimeoutError(f"等待超时:{timeout}s")

def get_outputs(self, role: str) -> List[str]:
"""获取子 Agent 输出"""

output_dir = Path(f"private/{role}/output/")

if not output_dir.exists():
return []

return [
str(f) for f in output_dir.glob("*")
if f.is_file()
]

def review_output(self, role: str, output_path: str) -> ReviewResult:
"""审核子 Agent 输出"""

# 1. 读取输出文件
content = Path(output_path).read_text()

# 2. 质量检查清单
checklist = self._get_review_checklist(role)

# 3. 逐项检查
results = {}
for item in checklist:
results[item] = self._check_item(content, item)

# 4. 生成审核结果
passed = all(results.values())

return ReviewResult(
passed=passed,
checklist=results,
suggestions=self._generate_suggestions(results)
)

def _get_review_checklist(self, role: str) -> List[str]:
"""获取审核清单"""

checklists = {
"pm": [
"需求描述清晰",
"用户故事完整",
"优先级合理",
"验收标准明确"
],
"architect": [
"架构图清晰",
"技术选型合理",
"接口设计完整",
"性能/安全考虑"
],
"developer": [
"代码规范",
"单元测试覆盖",
"注释完整",
"无安全漏洞"
],
"tester": [
"测试用例完整",
"边界条件覆盖",
"自动化程度",
"缺陷描述清晰"
],
"writer": [
"文档结构清晰",
"内容准确",
"示例完整",
"格式规范"
],
"devops": [
"配置完整",
"安全性考虑",
"监控告警",
"回滚方案"
]
}

return checklists.get(role, [])

def merge_to_shared(self, role: str, output_path: str, target_dir: str):
"""合并输出到共享区"""

# 1. 读取输出
content = Path(output_path).read_text()

# 2. 确定目标位置
target_path = Path(target_dir) / Path(output_path).name

# 3. 备份现有文件(如果存在)
if target_path.exists():
backup_path = target_path.with_suffix(target_path.suffix + '.backup')
shutil.copy(target_path, backup_path)

# 4. 复制到共享区
shutil.copy(output_path, target_path)

# 5. 记录合并日志
self._log_merge(role, output_path, target_path)

3.2 任务分发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
async def distribute_task(main_task: str):
"""分发任务到子 Agent"""

manager = SubAgentManager()

# 1. PM 分析需求
pm_session = manager.spawn(
AgentConfig(
role=AgentRole.PM,
label="pm-analyst",
timeout=1800
),
task=f"分析以下需求,输出 PRD 和用户故事:\n\n{main_task}"
)

# 等待 PM 完成
pm_result = await manager.wait_for(pm_session)

# 2. Architect 设计架构
arch_session = manager.spawn(
AgentConfig(
role=AgentRole.ARCHITECT,
label="arch-designer",
timeout=2700
),
task=f"基于以下 PRD 设计系统架构:\n\n{pm_result}"
)

# 3. Developer 编码实现
dev_session = manager.spawn(
AgentConfig(
role=AgentRole.DEVELOPER,
label="dev-coder",
timeout=5400
),
task=f"基于以下架构设计实现代码:\n\n{arch_result}"
)

# 4. Tester 测试验证
test_session = manager.spawn(
AgentConfig(
role=AgentRole.TESTER,
label="tester-qa",
timeout=2700
),
task=f"为以下代码设计测试用例并验证:\n\n{dev_result}"
)

# 5. Writer 编写文档
write_session = manager.spawn(
AgentConfig(
role=AgentRole.WRITER,
label="writer-docs",
timeout=1800
),
task=f"为以下功能编写技术文档:\n\n{dev_result}"
)

# 6. DevOps 部署配置
ops_session = manager.spawn(
AgentConfig(
role=AgentRole.DEVOPS,
label="devops-deploy",
timeout=1800
),
task=f"为以下功能配置 CI/CD 和部署:\n\n{dev_result}"
)

# 等待所有子 Agent 完成
all_results = await manager.wait_all()

return all_results

3.3 审核流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def review_all_outputs(manager: SubAgentManager) -> ReviewReport:
"""审核所有子 Agent 输出"""

report = ReviewReport()

for role in AgentRole:
# 获取输出文件
outputs = manager.get_outputs(role.value)

for output_path in outputs:
# 审核
result = manager.review_output(role.value, output_path)

if result.passed:
# 审核通过,合并到共享区
target_dir = get_target_directory(role)
manager.merge_to_shared(role.value, output_path, target_dir)
report.passed.append(output_path)
else:
# 审核不通过,返回修改
report.failed.append({
'file': output_path,
'role': role.value,
'issues': result.checklist,
'suggestions': result.suggestions
})

return report

四、实战案例

4.1 案例:CrystalForge 新功能开发

任务描述

1
2
3
4
开发 CrystalForge v2.3.0 新功能:
- 晶体代际继承版税计算
- 算力众筹池管理
- Crystal Pass 预售系统

任务分解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Main Agent 分解任务

pm_task = """
分析 CrystalForge v2.3.0 需求:

**背景**:
基于 v2.2.0 盈利模式优化,需要实现:
1. 代际继承版税(Lineage Royalties)
2. 算力众筹池(Compute Crowdfunding Pool)
3. Crystal Pass 预售系统

**输出**:
1. PRD 文档
2. 用户故事(每个功能至少 5 个)
3. 优先级矩阵(MoSCoW)
4. 验收标准
"""

arch_task = """
设计 CrystalForge v2.3.0 架构:

**输入**:PM 输出的 PRD

**要求**:
1. 系统架构图(Mermaid)
2. 数据库设计(ER 图)
3. API 接口设计(OpenAPI)
4. 性能设计(目标:版税计算 < 100ms)
5. 安全设计(防欺诈)
"""

dev_task = """
实现 CrystalForge v2.3.0:

**输入**:架构设计文档

**要求**:
1. 后端:Spring Boot 3.2 + Java 17
2. 前端:Vue 3.4 + Vite 5.1
3. 单元测试覆盖率 > 90%
4. 代码审查通过
"""

test_task = """
测试 CrystalForge v2.3.0:

**输入**:实现代码

**要求**:
1. 测试用例设计(覆盖所有用户故事)
2. 自动化测试脚本
3. 性能测试(500 并发)
4. 测试报告
"""

writer_task = """
编写 CrystalForge v2.3.0 文档:

**输入**:所有输出物

**要求**:
1. 技术文档(架构/实现)
2. API 文档(Swagger)
3. 用户手册
4. 发布说明(Release Notes)
"""

ops_task = """
配置 CrystalForge v2.3.0 部署:

**输入**:实现代码

**要求**:
1. Dockerfile 更新
2. Jenkins Pipeline 配置
3. K8s 部署文件
4. 监控仪表盘
"""

执行流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
gantt
title CrystalForge v2.3.0 开发流程
dateFormat HH:mm
axisFormat %H:%M

section PM
需求分析 :pm1, 09:00, 30min
输出 PRD :pm2, after pm1, 30min

section Architect
架构设计 :arch1, after pm2, 45min
输出设计文档 :arch2, after arch1, 15min

section Developer
编码实现 :dev1, after arch2, 90min
单元测试 :dev2, after dev1, 30min

section Tester
测试用例 :test1, after dev2, 30min
执行测试 :test2, after test1, 45min

section Writer
文档编写 :write1, after dev2, 60min

section DevOps
部署配置 :ops1, after dev2, 30min

section Main Agent
审核整合 :main1, after test2, 30min

实际耗时对比

阶段 单 Agent(串行) 多 Agent(并行) 提升
需求分析 30min 30min -
架构设计 45min 30min* 33%
编码实现 90min 60min* 33%
测试验证 45min 30min* 33%
文档编写 30min 30min* -
部署配置 30min 30min* -
审核整合 30min 30min -
总计 300min 150min 50%

*并行执行

4.2 案例:博客 100 篇创作计划

任务描述

1
2
3
4
5
6
7
8
9
10
11
12
完成 100 篇博客创作(当前 54 篇,还需 46 篇)

**要求**:
- P1 文章(架构师级别):10 篇
- P2 文章(高级开发):20 篇
- P3 文章(技术教程):16 篇

**质量标准**:
- 每篇 20KB+
- 5 个 + 架构图
- 3 个 + 实战案例
- 完整代码示例

多 Agent 协作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# Main Agent 分配任务

# Writer 1:P1 文章(架构师级别)
spawn(
label="writer-p1",
runtime="subagent",
task="""
【Writer - P1 文章创作】

**任务**:创作 10 篇 P1 级别 OpenClaw 文章

**主题**:
1. OpenClaw K8s 部署实践
2. AI Agent 记忆系统设计
3. Feishu 机器人集成指南
4. OpenClaw 技能开发指南
5. OpenClaw 子 Agent 管理实战
6. OpenClaw 配置文件详解
7. OpenClaw 浏览器自动化
8. OpenClaw 记忆系统优化
9. OpenClaw 性能调优
10. OpenClaw 安全加固

**质量标准**:
- 每篇 20KB+
- 5 个 +Mermaid 架构图
- 3 个 + 实战案例
- 完整代码示例
- 踩坑记录

**输出**:private/writer/output/p1-articles/
"""
)

# Writer 2:P2 文章(高级开发)
spawn(
label="writer-p2",
runtime="subagent",
task="""
【Writer - P2 文章创作】

**任务**:创作 20 篇 P2 级别技术文章

**主题方向**:
- Spring Boot 最佳实践
- Vue 3 高级技巧
- 微服务架构
- 数据库优化
- 缓存设计
- 消息队列
- API 设计
- 测试策略

**质量标准**:
- 每篇 15KB+
- 3 个 + 架构图
- 2 个 + 实战案例
- 代码示例

**输出**:private/writer/output/p2-articles/
"""
)

# Writer 3:P3 文章(技术教程)
spawn(
label="writer-p3",
runtime="subagent",
task="""
【Writer - P3 文章创作】

**任务**:创作 16 篇 P3 级别技术教程

**主题方向**:
- 工具使用教程
- 环境搭建指南
- 快速入门
- 常见问题解答
- 最佳实践

**质量标准**:
- 每篇 10KB+
- 步骤清晰
- 截图完整
- 可复现

**输出**:private/writer/output/p3-articles/
"""
)

# Reviewer:质量审核
spawn(
label="reviewer",
runtime="subagent",
task="""
【Reviewer - 文章质量审核】

**任务**:审核所有文章质量

**审核清单**:
- [ ] 字数达标
- [ ] 架构图完整
- [ ] 案例真实
- [ ] 代码可运行
- [ ] 格式规范
- [ ] 无错别字

**输出**:private/reviewer/output/review-report.md
"""
)

预期效果

指标 单 Writer 多 Writer 提升
P1 文章(10 篇) 10 小时 3.5 小时 65%
P2 文章(20 篇) 20 小时 7 小时 65%
P3 文章(16 篇) 12 小时 4 小时 67%
质量审核 5 小时 2 小时 60%
总计 47 小时 16.5 小时 65%

五、混合模式实施

5.1 增量添加方案

原则:零风险渐进式实施

1
2
3
4
5
6
阶段 1:仅 Main Agent(当前状态)
阶段 2:添加 Writer Agent(内容创作)
阶段 3:添加 Architect Agent(架构设计)
阶段 4:添加 Developer Agent(编码实现)
阶段 5:添加 Tester Agent(测试验证)
阶段 6:完整多 Agent 协作

5.2 目录结构创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
# 创建私有工作区

for role in pm architect developer tester writer devops; do
mkdir -p private/${role}/work
mkdir -p private/${role}/notes
mkdir -p private/${role}/output
echo "# ${role} work files" > private/${role}/work/.gitkeep
echo "# ${role} notes" > private/${role}/notes/.gitkeep
echo "# ${role} pending review" > private/${role}/output/.gitkeep
done

# 推送到 Git
git add private/
git commit -m "feat: 添加子 Agent 私有工作区"
git push

5.3 审核流程文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 子 Agent 审核流程

## 审核角色

**Main Agent** 负责:
1. 质量审核
2. 冲突解决
3. 成果整合
4. 最终交付

## 审核清单

### PM 输出审核
- [ ] 需求描述清晰无歧义
- [ ] 用户故事符合 INVEST 原则
- [ ] 优先级合理(MoSCoW)
- [ ] 验收标准可衡量

### Architect 输出审核
- [ ] 架构图清晰易懂
- [ ] 技术选型有理有据
- [ ] 接口设计完整
- [ ] 性能/安全考虑周全

### Developer 输出审核
- [ ] 代码符合规范
- [ ] 单元测试覆盖 > 90%
- [ ] 注释完整
- [ ] 无安全漏洞

### Tester 输出审核
- [ ] 测试用例覆盖所有场景
- [ ] 边界条件考虑
- [ ] 自动化程度高
- [ ] 缺陷描述清晰

### Writer 输出审核
- [ ] 文档结构清晰
- [ ] 内容准确无误
- [ ] 示例完整可运行
- [ ] 格式规范统一

### DevOps 输出审核
- [ ] 配置完整
- [ ] 安全性考虑
- [ ] 监控告警完善
- [ ] 回滚方案可行

## 审核流程

1. **自动检查** - 脚本验证格式/规范
2. **Main Agent 审核** - 质量检查
3. **问题反馈** - 返回子 Agent 修改
4. **重新审核** - 验证修复
5. **合并共享** - 通过审核的输出
6. **最终整合** - 所有成果整合

## 冲突解决

当多个子 Agent 输出冲突时:

1. **识别冲突** - 自动检测不一致
2. **分析原因** - 理解冲突根源
3. **协调沟通** - 组织子 Agent 讨论
4. **决策拍板** - Main Agent 最终决策
5. **记录决策** - 写入决策日志

六、性能优化

6.1 并行度优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
async def spawn_parallel(agents: List[AgentConfig], task: str):
"""并行生成多个子 Agent"""

# 使用信号量限制并发数
semaphore = asyncio.Semaphore(5) # 最多 5 个并发

async def spawn_with_semaphore(config):
async with semaphore:
return await spawn_async(config, task)

# 并行生成
tasks = [spawn_with_semaphore(config) for config in agents]
sessions = await asyncio.gather(*tasks)

return sessions

6.2 资源隔离

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def get_workspace_config(role: str) -> dict:
"""获取工作区配置"""

return {
"read_only": [
"memory/MEMORY.md",
"memory/skill-usage-log.md",
"skills/",
"docs/",
"projects/",
"AGENTS.md",
"SOUL.md"
],
"write_only": [
f"private/{role}/work/",
f"private/{role}/notes/",
f"private/{role}/output/"
],
"shared_write": [
"memory/YYYY-MM-DD.md"
]
}

6.3 通信优化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class AgentCommunication:
"""Agent 间通信"""

def __init__(self):
self.message_queue = asyncio.Queue()
self.subscribers = defaultdict(list)

def subscribe(self, topic: str, callback):
"""订阅主题"""
self.subscribers[topic].append(callback)

def publish(self, topic: str, message: dict):
"""发布消息"""
for callback in self.subscribers[topic]:
asyncio.create_task(callback(message))

async def send_message(self, from_agent: str, to_agent: str, content: str):
"""发送消息"""
await self.message_queue.put({
'from': from_agent,
'to': to_agent,
'content': content,
'timestamp': datetime.now()
})

async def receive_message(self, agent: str, timeout: int = 60):
"""接收消息"""
try:
message = await asyncio.wait_for(
self.message_queue.get(),
timeout=timeout
)
return message
except asyncio.TimeoutError:
return None

七、最佳实践

7.1 任务分配原则

原则 说明 示例
专业匹配 任务匹配角色专长 架构设计→Architect
负载均衡 避免单个 Agent 过载 多 Writer 并行
依赖清晰 明确任务前后依赖 PM→Arch→Dev
可回滚 支持任务重新分配 审核不通过返回修改
透明可追溯 所有决策记录 写入决策日志

7.2 沟通规范

1
2
3
## 子 Agent 沟通模板

### 任务分配

【任务分配】{任务名称}

分配给:{角色}
截止时间:{时间}
优先级:P0/P1/P2

任务描述
{详细描述}

输出要求

  • {要求 1}
  • {要求 2}

可用资源

  • {资源 1}
  • {资源 2}
1
2

### 进度汇报

【进度汇报】{任务名称}

当前状态:进行中/已完成/阻塞
完成度:X%
预计完成:{时间}

已完成

  • {完成 1}
  • {完成 2}

待完成

  • {待完成 1}
  • {待完成 2}

需要帮助

  • {帮助 1}
1
2

### 问题上报

【问题上报】{任务名称}

问题描述
{详细描述}

影响

  • {影响 1}
  • {影响 2}

建议方案

  • {方案 1}
  • {方案 2}

需要决策:{具体决策点}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
```

### 7.3 质量把控

```python
def quality_gate(role: str, output: str) -> QualityResult:
"""质量关卡"""

gates = {
"developer": [
("代码编译", compile_code),
("单元测试", run_unit_tests),
("代码审查", run_linter),
("安全扫描", run_security_scan)
],
"tester": [
("测试用例评审", review_test_cases),
("自动化测试", run_automation),
("性能测试", run_performance_test)
],
"writer": [
("拼写检查", check_spelling),
("格式检查", check_format),
("链接验证", verify_links),
("示例验证", verify_examples)
]
}

results = []
for gate_name, gate_func in gates.get(role, []):
result = gate_func(output)
results.append((gate_name, result.passed))

return QualityResult(
passed=all(r[1] for r in results),
checks=results
)

八、踩坑记录

8.1 问题 #1:工作区冲突

现象

多个子 Agent 同时写入共享文件,导致内容覆盖。

根因

没有明确区分共享区和私有区。

解决方案

1
读共享、写隔离、主 agent 审核

8.2 问题 #2:任务依赖混乱

现象

Developer 在 Architect 完成前开始编码,导致返工。

解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 明确依赖关系
task_dependencies = {
"developer": ["architect"],
"tester": ["developer"],
"writer": ["developer", "architect"],
"devops": ["developer"]
}

async def check_dependencies(role: str) -> bool:
"""检查依赖是否完成"""
deps = task_dependencies.get(role, [])
for dep in deps:
if not is_completed(dep):
return False
return True

8.3 问题 #3:审核标准不一致

现象

不同子 Agent 对质量理解不同,输出质量参差不齐。

解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 统一质量标准文档

## P1 文章标准
- 字数:20KB+
- 架构图:5 个+
- 案例:3 个+
- 代码:完整可运行
- 踩坑:详细记录

## 代码质量标准
- 测试覆盖:> 90%
- 代码审查:通过
- 安全扫描:无高危
- 性能:达标

九、未来演进

9.1 短期优化(1-3 个月)

  • 动态任务分配 - 基于 Agent 负载自动分配
  • 智能审核 - AI 辅助质量审核
  • 冲突检测 - 自动检测输出冲突
  • 性能监控 - 实时监控 Agent 效率

9.2 中期规划(3-6 个月)

  • Agent 学习 - 从历史任务学习优化
  • 角色扩展 - 增加更多专业角色
  • 跨项目协作 - 多项目并行处理
  • 自适应调度 - 根据任务类型自动调整

9.3 长期愿景(6-12 个月)

  • Agent 市场 - 按需租用专业 Agent
  • 自主协作 - Agent 间自主协调
  • 持续进化 - Agent 能力持续优化
  • 生态建设 - 第三方 Agent 接入

十、参考资料

10.1 官方文档

10.2 相关文件

1
2
3
4
5
obsidian-sync/
├── docs/subagent-review-process.md
├── docs/architecture-diagrams.md
├── private/*/output/
└── memory/subagent-usage-log.md

10.3 相关工具


作者:John
职位:高级技术架构师
日期:2026-03-05
版本:v1.0

本文基于 OpenClaw 子 Agent 管理真实项目经验编写,混合模式已在生产环境实施。多 Agent 协作是复杂项目交付的关键,值得深入设计和持续优化。