多代理协作概述
OpenClaw 的多代理系统允许多个具有不同专长的 AI 代理协同工作。通过消息路由和任务委托机制,用户的请求会被自动分配给最合适的代理处理。
代理定义
定义多个专业代理:
{
"agents": {
"receptionist": {
"displayName": "前台接待",
"model": "fast",
"systemPrompt": "你是前台接待员,负责理解用户意图并将请求转发给合适的专家。你不直接回答专业问题。",
"temperature": 0.3
},
"tech-support": {
"displayName": "技术支持",
"model": "code-expert",
"systemPrompt": "你是高级技术支持工程师,擅长解决技术问题、代码调试和系统配置。",
"tools": ["code_exec", "web_search"]
},
"writer": {
"displayName": "写作助手",
"model": "smart",
"systemPrompt": "你是专业写作助手,擅长文案撰写、内容创作和文本编辑。",
"temperature": 0.8
},
"data-analyst": {
"displayName": "数据分析师",
"model": "smart",
"systemPrompt": "你是数据分析师,擅长数据解读、图表建议和统计分析。",
"tools": ["code_exec"]
}
}
}
路由策略
关键词路由
{
"routing": {
"strategy": "keyword",
"rules": [
{"match": "代码|bug|部署|服务器|API", "agent": "tech-support"},
{"match": "写|文案|文章|翻译|编辑", "agent": "writer"},
{"match": "数据|报表|统计|图表|分析", "agent": "data-analyst"},
{"match": ".*", "agent": "receptionist"}
]
}
}
意图分类路由
使用 AI 进行意图分类:
{
"routing": {
"strategy": "classifier",
"classifierModel": "fast",
"classifierPrompt": "分析以下用户消息的意图,返回一个类别:technical(技术问题)、writing(写作需求)、data(数据分析)、general(其他)。只返回类别名称,不要其他内容。",
"mapping": {
"technical": "tech-support",
"writing": "writer",
"data": "data-analyst",
"general": "receptionist"
}
}
}
对话中切换代理
用户可以在对话中主动切换代理:
{
"routing": {
"allowManualSwitch": true,
"switchCommands": {
"/tech": "tech-support",
"/write": "writer",
"/data": "data-analyst",
"/help": "receptionist"
}
}
}
代理间委托
代理可以将任务委托给其他代理:
{
"agents": {
"receptionist": {
"canDelegate": ["tech-support", "writer", "data-analyst"],
"delegatePrompt": "如果用户的问题超出你的能力范围,请使用 delegate 工具将对话转给合适的专家。"
}
}
}
对话示例:
用户: 帮我分析一下这份销售数据
前台接待: 这个问题需要数据分析专家来处理,我帮你转接。
[自动切换到数据分析师]
数据分析师: 好的,请发送你的销售数据,我来帮你分析。
多代理协作管道
配置代理之间的协作流程:
{
"pipelines": {
"content-review": {
"steps": [
{"agent": "writer", "action": "generate", "prompt": "根据用户需求撰写文章"},
{"agent": "tech-support", "action": "review", "prompt": "检查文章中的技术准确性"},
{"agent": "writer", "action": "revise", "prompt": "根据审查意见修改文章"}
]
}
}
}
共享上下文
多代理之间共享对话上下文:
{
"routing": {
"sharedContext": {
"enabled": true,
"includeHistory": 10,
"includeSummary": true
}
}
}
当切换代理时,新代理会收到之前的对话摘要,确保无缝衔接。
代理负载均衡
同一角色部署多个实例进行负载均衡:
{
"agents": {
"tech-support-1": {
"displayName": "技术支持",
"group": "tech-support",
"model": "code-expert"
},
"tech-support-2": {
"displayName": "技术支持",
"group": "tech-support",
"model": "code-expert"
}
},
"routing": {
"groupBalancing": "round-robin"
}
}
监控多代理系统
openclaw agents stats --all
Agent Statistics (last 24h):
Agent Messages Avg Time Delegated Satisfaction
────────────────────────────────────────────────────────────
receptionist 500 0.8s 320 (64%) N/A
tech-support 180 2.5s 5 (3%) 4.5/5
writer 95 3.2s 2 (2%) 4.3/5
data-analyst 45 4.1s 0 (0%) 4.7/5
最佳实践
- 前台代理使用快速模型:意图判断不需要强推理能力
- 专业代理使用强模型:确保输出质量
- 设置合理的超时时间:防止代理切换时用户等待过久
- 记录路由决策:便于优化路由规则
- 定期审查路由统计:发现路由不合理的情况
总结
多代理协作架构让 OpenClaw 能够提供专业化的 AI 服务。通过智能路由和代理间委托,用户的请求总能被最合适的「专家」处理,同时保持流畅的对话体验。