多 Agent 路由
Multi-Agent(多 Agent)允许在单个 Gateway 上运行多个专业化 Agent,根据路由规则将消息分发到最合适的 Agent 处理。
基本概念
核心思想
每个 Agent 专注于特定领域。通过路由规则,用户的消息自动到达最合适的 Agent,无需手动切换。
用户消息
│
▼
┌──────────────┐
│ Agent Router │
│ 路由器 │
└──────┬───────┘
│
┌────┼────┬────────┐
│ │ │ │
▼ ▼ ▼ ▼
┌────┐┌────┐┌──────┐┌────────┐
│通用││编程││写作 ││数据分析│
│助手││专家││助手 ││专家 │
└────┘└────┘└──────┘└────────┘Agent 定义
在配置中声明多个 Agent:
yaml
agents:
- name: general
description: 通用助手,处理日常对话
model: openai/gpt-4o
workspace: ~/.openclaw/agents/general/
- name: coder
description: 编程专家,处理代码相关问题
model: anthropic/claude-3-5-sonnet
workspace: ~/.openclaw/agents/coder/
- name: writer
description: 写作助手,处理文案和内容创作
model: deepseek/deepseek-chat
workspace: ~/.openclaw/agents/writer/
- name: analyst
description: 数据分析专家
model: openai/gpt-4o
workspace: ~/.openclaw/agents/analyst/路由规则
按渠道路由
yaml
routing:
rules:
- channel: telegram
agent: general # Telegram 消息发给通用助手
- channel: discord
server: "dev-server"
agent: coder # Discord 开发服务器发给编程专家
- channel: whatsapp
agent: writer # WhatsApp 消息发给写作助手按用户路由
yaml
routing:
rules:
- user: admin_user
agent: coder # 管理员的消息发给编程专家
- user: marketing_team
agent: writer # 营销团队发给写作助手按群组路由
yaml
routing:
rules:
- group: "dev-team"
agent: coder # 开发群组使用编程专家
- group: "content-team"
agent: writer # 内容团队使用写作助手默认路由
yaml
routing:
default: general # 无匹配规则时使用通用助手
rules:
- channel: discord
agent: coder
# 其他消息 → general规则优先级
当多条规则匹配时,按以下优先级决定:
1. 用户 + 渠道 + 群组 (最具体)
2. 用户 + 渠道
3. 群组 + 渠道
4. 用户
5. 群组
6. 渠道
7. 默认路由 (最宽泛)Agent 专业化
每个 Agent 通过工作区文件实现专业化:
markdown
# Coder Agent
You are an expert programmer.
## Specializations
- Code review and debugging
- Architecture design
- Performance optimization
## Rules
- Always provide executable code examples
- Include error handling
- Follow best practices for the languagemarkdown
# Writer Agent
You are a professional content writer.
## Specializations
- Blog posts and articles
- Marketing copy
- Technical documentation
## Rules
- Use clear, engaging language
- Maintain consistent tone
- Optimize for readability会话隔离
完全隔离
不同 Agent 的会话完全隔离。用户与 coder Agent 的对话不会影响与 writer Agent 的对话。
用户 user_12345 的会话:
├── general::user_12345 → 通用助手会话
├── coder::user_12345 → 编程专家会话
└── writer::user_12345 → 写作助手会话隔离范围:
| 资源 | 是否隔离 |
|---|---|
| 对话历史 | ✅ 完全隔离 |
| 工作区文件 | ✅ 完全隔离 |
| 每日记忆 | ✅ 完全隔离 |
| 长期记忆 | ✅ 完全隔离 |
| 模型配置 | ✅ 各自独立 |
| 技能加载 | ✅ 各自独立 |
Agent 间通信
虽然会话隔离,但 Agent 之间可以通过消息转发进行协作:
yaml
# 允许 Agent 间转发消息
interAgentCommunication:
enabled: true
allowedPairs:
- from: general
to: coder # 通用助手可以转发给编程专家
- from: general
to: writer # 通用助手可以转发给写作助手智能转发
通用助手可以识别用户意图,自动将编程问题转发给 coder Agent,将写作需求转发给 writer Agent。
用户切换 Agent
用户可以手动切换 Agent:
bash
# 切换到编程专家
/agent coder
# 切换到写作助手
/agent writer
# 查看可用 Agent
/agents
# 输出:
# AGENT DESCRIPTION MODEL
# general 通用助手 (当前) openai/gpt-4o
# coder 编程专家 anthropic/claude-3-5-sonnet
# writer 写作助手 deepseek/deepseek-chat🇨🇳 中国用户须知
- 建议为不同 Agent 配置不同的模型以优化成本
- 通用助手可使用国产模型(如 DeepSeek),编程助手使用 Claude
- Agent 的
SOUL.md可以使用中文定义,提升中文场景下的专业度
