词元广场TOKPUB.COM - 欢迎您,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
课程信息 本篇你将学会: 创建多个 AI 助手、配置分工协作、设置消息路由、管理 Agent 间通信 大多数人不需要这篇! 如果你只是个人使用,一个默认的 main Agent 就够了。只有当你需要"不同平台用不同 AI 性格"或"团队多人使用"时才需要看这篇
Agent = 一个独立的 AI 员工
它有:
├── 自己的工位(工作空间目录)
├── 自己的工牌(认证凭证)
├── 自己的笔记本(记忆文件)
├── 自己的技能证书(技能集)
├── 自己的性格(SOUL.md 人格设定)
└── 自己的工作日志(会话历史)💡 术语说明: 上面提到的 SOUL.md是 Agent 的人格设定文件,定义 AI 的性格和行为风格,后面会详细介绍。
main Agent。对大多数人来说,一个 Agent 就够了 -- 它能处理你所有的消息、执行所有的任务。单 Agent 模式:
┌─────────────────────────────────────┐
│ 所有消息 → main Agent → 所有技能 │
│ (上下文臃肿,角色混乱) │
└─────────────────────────────────────┘
多 Agent 模式:
┌─────────────────────────────────────┐
│ Discord #coding → coding Agent │
│ (只加载开发技能) │
│ │
│ Telegram 家庭群 → home Agent │
│ (只加载生活技能) │
│ │
│ WhatsApp 私聊 → main Agent │
│ (通用技能) │
└─────────────────────────────────────┘⏭️ 小白可跳过 — 这是底层运行时细节
┌─────────────────────────────────────────────────────────────┐
│ 消息平台层 │
│ WhatsApp │ Telegram │ Discord │ Slack │ Signal │ WebChat │
└──────────────────────────┬──────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────┐
│ Gateway 路由引擎 │
│ │
│ 消息进来 → 检查 bindings 配置 → 匹配 Agent │
│ │
│ 路由规则: │
│ ├── Discord #coding 频道 → coding Agent │
│ ├── Telegram 群 -100xxxxx → social Agent │
│ ├── Slack #team 频道 → work Agent │
│ └── 其他所有消息 → main Agent(默认) │
└──────┬──────────┬──────────┬──────────┬─────────────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌──────────┐┌──────────┐┌──────────┐┌──────────┐
│ main ││ coding ││ social ││ work │
│ Agent ││ Agent ││ Agent ││ Agent │
│ ││ ││ ││ │
│ 工作空间 ││ 工作空间 ││ 工作空间 ││ 工作空间 │
│ 记忆文件 ││ 记忆文件 ││ 记忆文件 ││ 记忆文件 │
│ 技能集 ││ 技能集 ││ 技能集 ││ 技能集 │
│ 认证凭证 ││ 认证凭证 ││ 认证凭证 ││ 认证凭证 │
│ SOUL.md ││ SOUL.md ││ SOUL.md ││ SOUL.md │
└──────────┘└──────────┘└──────────┘└──────────┘| 资源 | 是否共享 | 说明 |
|---|---|---|
| 工作空间 | 否 | 每个 Agent 有独立的工作目录 |
| 记忆文件 | 否 | 每个 Agent 有独立的 MEMORY.md 和日志 |
| 记忆后端 | 可选 | 可配置 Builtin(SQLite)、QMD、Honcho 等后端 |
| 会话历史 | 否 | 每个 Agent 的对话记录完全隔离 |
| 认证凭证 | 否 | 每个 Agent 的 auth-profiles.json 独立 |
| 技能配置 | 可选 | 可以配置 Agent 级别的技能白名单 |
| AI 模型 | 可选 | 可以为每个 Agent 指定不同的模型 |
~/.openclaw/
├── openclaw.json # 主配置文件(包含 Agent 列表和路由规则)
│
├── agents/ # Agent 状态目录
│ ├── main/ # 默认 Agent
│ │ ├── agent/
│ │ │ └── auth-profiles.json # main 的认证凭证
│ │ └── sessions/ # main 的会话历史
│ │ ├── session-abc123.json
│ │ └── session-def456.json
│ │
│ ├── coding/ # 编程 Agent
│ │ ├── agent/
│ │ │ └── auth-profiles.json # coding 的认证凭证
│ │ └── sessions/ # coding 的会话历史
│ │
│ └── social/ # 社交 Agent
│ ├── agent/
│ │ └── auth-profiles.json # social 的认证凭证
│ └── sessions/ # social 的会话历史
│
├── workspace/ # main Agent 的工作空间
│ ├── SOUL.md # main 的人格设定
│ ├── AGENTS.md # Agent 协作说明
│ ├── USER.md # 用户信息
│ ├── MEMORY.md # main 的长期记忆
│ ├── memory/ # main 的每日日志
│ └── skills/ # main 的工作空间技能
│
├── workspace-coding/ # coding Agent 的工作空间
│ ├── SOUL.md # coding 的人格设定
│ ├── MEMORY.md # coding 的长期记忆
│ ├── memory/ # coding 的每日日志
│ └── skills/ # coding 的工作空间技能
│
└── workspace-social/ # social Agent 的工作空间
├── SOUL.md # social 的人格设定
├── MEMORY.md # social 的长期记忆
├── memory/ # social 的每日日志
└── skills/ # social 的工作空间技能AGENTS.md(Agent 的系统指令文件)定义了 Agent 之间的协作规则。~/.openclaw/openclaw.json(JSON5 格式)的 agents 字段中:{
"agents": {
"defaults": {
"model": "anthropic/claude-opus-4-6",
"sandbox": {
// 非主会话在 Docker 沙箱中运行
"mode": "non-main",
},
},
"list": [
{
"id": "main",
"workspace": "~/.openclaw/workspace",
"model": "anthropic/claude-opus-4-6",
},
{
"id": "coding",
"workspace": "~/.openclaw/workspace-coding",
"model": "anthropic/claude-opus-4-6",
// Agent 级别的 skills 是简单的字符串数组
"skills": ["coding-agent", "github", "gh-issues", "tmux"],
},
{
"id": "social",
"workspace": "~/.openclaw/workspace-social",
"model": "openai/gpt-5.2",
"skills": ["summarize", "weather", "goplaces"],
},
{
"id": "work",
"workspace": "~/.openclaw/workspace-work",
"model": "anthropic/claude-sonnet-4-6",
"skills": ["gog", "slack", "notion", "trello", "summarize"],
},
],
},
// bindings 是顶层配置,不嵌套在 agent 内部
"bindings": [
{
"agent": "coding",
"channel": "discord",
"guildId": "123456789",
"channelId": "987654321",
},
{
"agent": "social",
"channel": "telegram",
"chatId": "-100123456789",
},
{
"agent": "work",
"channel": "slack",
"teamId": "T01234567",
"channelId": "C01234567",
},
],
}| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | 是 | Agent 唯一标识符,只能用字母、数字、连字符 |
workspace | string | 是 | 工作空间目录路径 |
model | string 或 object | 否 | AI 模型,可以是字符串或 { primary, fallbacks } 对象 |
skills | string[] | 否 | Agent 可用的技能列表(简单字符串数组) |
sandbox | object | 否 | 沙箱配置 |
注意: bindings(消息路由绑定)是顶层配置,不嵌套在 Agent 内部。temperature、maxTokens等参数不是 Agent 级别的直接配置字段。
SOUL.md 文件,这是 Agent 的"灵魂"。AI 在每次会话启动时都会读取这个文件,作为系统指令的一部分。{
"agents": {
"list": [
{
"id": "coding",
"model": "anthropic/claude-opus-4-6",
// 编程需要最强的推理能力,用最好的模型
},
{
"id": "social",
"model": "openai/gpt-5.2-mini",
// 闲聊不需要太强的模型,用便宜的就行
},
{
"id": "work",
"model": "anthropic/claude-sonnet-4-6",
// 办公任务中等复杂度,用性价比最高的
},
],
},
}| 方案 | 模型 | 估算日成本 |
|---|---|---|
| 全部用 Opus | claude-opus-4-6 | ~$5-10 |
| 按需分配 | Opus + Sonnet + Mini | ~$2-4 |
| 全部用 Mini | gpt-5.2-mini | ~$0.5-1 |
⏭️ 小白可跳过 — 这是 Agent 间通信的底层机制,了解概念即可
| 工具 | 功能 | 说明 |
|---|---|---|
sessions_list | 发现活跃会话 | 列出当前所有活跃的 Agent 会话 |
sessions_history | 获取会话日志 | 查看指定会话的历史消息 |
sessions_send | 向另一个会话发消息 | 支持 reply-back ping-pong 和 announce step 模式 |
sessions_spawn | 生成新会话 | 动态创建一个新的 Agent 会话 |
coding Agent 完成代码审查
│
├── sessions_list → 发现 writer Agent 的活跃会话
│
├── sessions_send → 向 writer Agent 发送审查结果
│ (announce step 模式,不等待回复)
│
└── writer Agent 收到消息,开始生成审查报告{
"agents": {
"list": [
{
"id": "research",
"workspace": "~/.openclaw/workspace-research",
},
{
"id": "writer",
"workspace": "~/.openclaw/workspace-writer",
},
],
},
}你 → coding Agent:帮我分析这段代码的性能问题
coding Agent → 你:发现 3 个性能瓶颈:1. N+1 查询 2. 未缓存 3. 同步阻塞
你 → work Agent:帮我创建 3 个 Jira Issue,分别是...
work Agent → 你:已创建 PROJ-101, PROJ-102, PROJ-103{
"cron": {
"enabled": true,
"store": "file",
"maxConcurrentRuns": 2,
},
}注意: cron是一个配置对象(包含enabled、store、maxConcurrentRuns等字段),不是任务数组。具体的定时任务通过 CLI 管理:
消息进来
│
▼
1. 检查 bindings 配置
├── 匹配到 → 路由到对应 Agent
└── 未匹配 → 继续
│
▼
2. 检查是否是私聊
├── 是 → 路由到 main Agent(默认)
└── 否 → 继续
│
▼
3. 回退到默认 Agent(main)// 顶层 bindings 数组
{
"bindings": [
{
"agent": "coding",
"channel": "discord",
"guildId": "123456789",
"channelId": "987654321",
},
],
}guildId -- Discord 服务器 IDchannelId -- Discord 频道 IDguildId,这样整个服务器的消息都路由到这个 Agent{
"bindings": [
{
"agent": "social",
"channel": "telegram",
"chatId": "-100123456789",
},
],
}chatId -- Telegram 群组 ID(负数开头){
"bindings": [
{
"agent": "work",
"channel": "slack",
"teamId": "T01234567",
"channelId": "C01234567",
},
],
}{
"bindings": [
{
"agent": "social",
"channel": "whatsapp",
"groupId": "120363xxx@g.us",
},
],
}// 顶层 bindings 数组中,同一个 agent 可以有多条绑定
{
"bindings": [
{
"agent": "coding",
"channel": "discord",
"guildId": "111111",
"channelId": "222222",
},
{
"agent": "coding",
"channel": "discord",
"guildId": "111111",
"channelId": "333333",
},
{
"agent": "coding",
"channel": "telegram",
"chatId": "-100999888777",
},
{
"agent": "coding",
"channel": "slack",
"teamId": "T01234567",
"channelId": "C09876543",
},
],
}┌──────────────────────────────────────────────────┐
│ 按职能分工 │
│ │
│ coding Agent → 写代码、调试、GitHub 管理 │
│ office Agent → 邮件、日历、项目管理 │
│ social Agent → 社交消息、闲聊、生活助手 │
│ research Agent → 信息搜索、内容摘要、分析 │
└──────────────────────────────────────────────────┘{
"agents": {
"list": [
{
"id": "coding",
"skills": ["coding-agent", "github", "gh-issues", "tmux"],
"model": "anthropic/claude-opus-4-6",
},
{
"id": "office",
"skills": ["gog", "slack", "notion", "trello", "summarize"],
"model": "anthropic/claude-sonnet-4-6",
},
{
"id": "social",
"skills": ["weather", "goplaces", "summarize"],
"model": "openai/gpt-5.2-mini",
},
],
},
}┌──────────────────────────────────────────────────┐
│ 按平台分工 │
│ │
│ whatsapp Agent → 处理所有 WhatsApp 消息 │
│ telegram Agent → 处理所有 Telegram 消息 │
│ discord Agent → 处理所有 Discord 消息 │
│ slack Agent → 处理所有 Slack 消息 │
└──────────────────────────────────────────────────┘┌──────────────────────────────────────────────────┐
│ 按安全等级分工 │
│ │
│ trusted Agent → 有完整权限,只接受你的私聊 │
│ limited Agent → 有限权限,处理群聊消息 │
│ readonly Agent → 只读权限,处理公开频道 │
└──────────────────────────────────────────────────┘{
"agents": {
"defaults": {
"sandbox": {
// 非主会话在 Docker 沙箱中运行
"mode": "non-main",
},
},
"list": [
{
"id": "trusted",
"skills": ["coding-agent", "github", "gog", "slack"],
// 完整权限,只处理私聊
},
{
"id": "limited",
"skills": ["summarize", "weather", "goplaces"],
// 有限权限,处理群聊
},
{
"id": "readonly",
"skills": ["summarize"],
// 只读权限,处理公开频道
},
],
},
"bindings": [
{
"agent": "limited",
"channel": "telegram",
"chatId": "-100111222333",
},
{
"agent": "readonly",
"channel": "discord",
"guildId": "444555666",
},
],
}研究 Agent → 写作 Agent → 审核 Agent
│ │ │
▼ ▼ ▼
收集资料 撰写内容 审核质量
整理要点 格式排版 修改建议
保存到共享 读取资料 最终发布sessions_send 工具直接传递、定时任务或 HTTP API 来串联(详见上面的"Agent 间通信机制"章节)。~/.openclaw/workspace-community/SOUL.md:~/.openclaw/workspace-tech-support/SOUL.md:{
"agents": {
"list": [
{
"id": "main",
"workspace": "~/.openclaw/workspace",
},
{
"id": "community",
"workspace": "~/.openclaw/workspace-community",
"model": "openai/gpt-5.2-mini",
"skills": ["summarize"],
},
{
"id": "tech-support",
"workspace": "~/.openclaw/workspace-tech-support",
"model": "anthropic/claude-sonnet-4-6",
"skills": ["coding-agent", "github", "summarize"],
},
],
},
"bindings": [
{
"agent": "community",
"channel": "discord",
"guildId": "111222333",
"channelId": "444555666",
},
{
"agent": "tech-support",
"channel": "discord",
"guildId": "111222333",
"channelId": "777888999",
},
],
}~/.openclaw/workspace-translator/SOUL.md:~/.openclaw/workspace-writer/SOUL.md:你 → translator Agent:帮我翻译这篇文章(粘贴中文内容)
translator Agent → 翻译完成,保存到 shared/translations/2026-02-25-article-en.md
你 → writer Agent:帮我润色 shared/translations/2026-02-25-article-en.md
writer Agent → 润色完成,保存到 shared/published/2026-02-25-article-en.md~/.openclaw/workspace-researcher/SOUL.md:~/.openclaw/workspace-report-writer/SOUL.md:~/.openclaw/workspace-reviewer/SOUL.md:{
"agents": {
"list": [
{
"id": "coding",
// Agent 级别的 skills 是简单的字符串数组
"skills": ["coding-agent", "github", "gh-issues", "tmux"],
},
{
"id": "office",
"skills": ["gog", "slack", "notion", "trello", "summarize"],
},
{
"id": "social",
"skills": ["weather", "goplaces", "summarize"],
},
],
},
// 技能的详细配置放在顶层 skills.entries 中
"skills": {
"entries": {
"coding-agent": {
"config": {
"workDir": "~/projects",
"allowedCommands": ["npm", "node", "git", "tsc", "pnpm"],
"autoApprove": false,
},
},
"gog": {
"config": {
"timezone": "Asia/Shanghai",
"language": "zh-CN",
},
},
},
},
}⏭️ 小白可跳过 — 默认的沙箱配置已经足够安全
mode: "non-main" 模式,让非主会话在 Docker 沙箱中运行:{
"agents": {
"defaults": {
"sandbox": {
// 非主会话自动在 Docker 沙箱中运行
"mode": "non-main",
},
},
},
}| 类型 | 工具列表 |
|---|---|
| allowlist(允许使用) | bash, process, read, write, edit, sessions_list, sessions_history, sessions_send, sessions_spawn |
| denylist(禁止使用) | browser, canvas, nodes, cron, discord, gateway |
~/.openclaw/agents/<agentId>/agent/auth-profiles.json| 指标 | 说明 | 健康范围 | 异常处理 |
|---|---|---|---|
| 响应时间 | 从收到消息到发出回复 | < 10s | 检查模型选择和网络 |
| Token 消耗 | 每条消息的平均 token 数 | < 5000 | 检查技能加载是否过多 |
| 错误率 | 工具调用失败的比例 | < 5% | 检查工具配置和权限 |
| 会话长度 | 平均每个会话的消息数 | 因场景而异 | 检查是否需要优化 SOUL.md |
{
"agents": {
"list": [
{
"id": "social",
"model": "openai/gpt-5.2-mini",
// 闲聊用便宜模型
},
],
},
}{
"agents": {
"defaults": {
"compaction": {
"reserveTokensFloor": 15000,
// 更早压缩会话,减少 token 消耗
},
},
},
}model 字段支持故障转移配置:{
"agents": {
"list": [
{
"id": "work",
// model 可以是对象形式,指定主模型和备用模型
"model": {
"primary": "anthropic/claude-sonnet-4-6",
"fallbacks": [
"openai/gpt-5.2-mini",
"ollama/llama3.1",
],
},
},
],
},
}fallbacks(复数形式)。~/.openclaw/workspace-devops/SOUL.md:~/.openclaw/workspace-devops/skills/server-monitor/skill.md:{
"agents": {
"list": [
{
"id": "devops",
"workspace": "~/.openclaw/workspace-devops",
"model": "anthropic/claude-sonnet-4-6",
"skills": ["server-monitor", "summarize"],
},
],
},
"bindings": [
{
"agent": "devops",
"channel": "slack",
"teamId": "T01234567",
"channelId": "C-ops-channel",
},
],
"cron": {
"enabled": true,
},
}{
"logging": {
"level": "debug",
},
}[AGENT] Message received from telegram:chat=-100123456789
[AGENT] Routing: matched binding → agent=social
[AGENT] Loading workspace: ~/.openclaw/workspace-social
[AGENT] Loading SOUL.md (tokens: 320)
[AGENT] Loading MEMORY.md (tokens: 150)
[AGENT] Loading skills: weather, goplaces, summarize
[AGENT] Total system prompt tokens: 1,850
[AGENT] Calling model: openai/gpt-5.2-mini
[AGENT] Model response received (tokens: 120, time: 1.2s)
[AGENT] Sending response to telegram:chat=-100123456789openclaw.json 中对应 Agent 的 skills 数组配置)gh、ffmpeg)?agent=<agentId> 可以指定跟哪个 Agent 对话,方便逐个测试。~/.openclaw/shared/)memory-wiki,v2026.4.12+ 可用)-- 提供结构化的知识页面层,支持确定性的页面组织和跨 Agent 共享查询。详见官方文档 memory-wikisessions_list -- 发现活跃会话sessions_send -- 向另一个会话发消息(支持 reply-back ping-pong 和 announce step 模式)sessions_spawn -- 生成新的 Agent 会话~/.openclaw/agents/<agentId>/),但不会删除工作空间目录。你的 SOUL.md、记忆文件、技能文件都还在。如果要彻底清理,需要手动删除工作空间目录。openclaw.json 中 agents.list 的顺序 -- 排在前面的 Agent 优先匹配。openclaw.json 中添加对应的 Agent 配置。v2026.4.20+ 优化了插件启动性能(冷启动时间降低约 74%,依赖加载时间降低 82-90%),多 Agent 场景下 Gateway 的首次响应速度明显改善。
openclaw agents add)。但在运行时,Agent 可以通过 sessions_spawn 工具动态生成新的会话,实现临时任务的分发。