朋友问我能不能帮他配置5个OpenClaw机器人协同工作。我说这有啥难的,不就是改配置文件吗?结果花了7小时,踩了9个坑。这篇文章把所有实战经验整理出来,帮你省掉排错时间。
用AI工具用多了,你一定踩过这个坑:让单个Agent去做复杂任务,它要么思路乱,要么做到一半"忘了"前面说的话,要么输出质量参差不齐。
解法是什么?Multi-Agent。把大任务拆给多个专门的Agent,各司其职,像一个小团队。
对比一下:
| 模式 | 流程 | 优势 |
|---|---|---|
| 单Agent | 你 → 一个AI → 输出 | 简单,适合小任务 |
| Multi-Agent | 你 → 调度Agent → 多个专项Agent → 汇总 | 上下文聚焦、专业度高、并行更快 |
先搞清楚:什么情况该拆?
社区最常见的求助帖:「我的五只龙虾在群里互相抢消息,怎么办?」
问题不在数量,在拆分逻辑。
最常见的错误:按职责拆
直觉告诉你:前端一个、后端一个、内容一个、运营一个。
这个直觉是错的。
实战总结的判断标准:按上下文拆,不按职责拆。
该拆的三种情况
- 1. 上下文持续积累且互不干扰
- • 调研Agent积累行业知识,写作Agent积累个人风格——两套记忆混在一起会互相污染
- • 内容创作流程和代码开发流程没有共享信息的需要
- • 技术调研Agent和市场调研Agent看的世界不一样
不该拆的情况
- • 只是工具不同(都是编程)
- • 只是输出格式不同(都是写作)
- • 任务之间需要频繁共享信息——拆了反而更糟
实际案例:内容创作不要拆成选题、大纲、写作、配图、发布五个Agent。两个就够:一个负责选题到成稿(上下文连贯),一个负责多平台发布(需要记住各平台规则)。
踩坑实录:9个坑帮你避掉
坑1:API Key裸奔
离谱程度:⭐⭐⭐⭐⭐
朋友发给我的openclaw.json里,API Key、appid、appsecret全在里面,明文。
如果是别人拿到这份配置,跟把家门钥匙扔小区业主群里没区别。
解决方案:
- • 敏感凭证绝不在非加密渠道明文传输
- • 必须发的话,至少打个码
- • 如果已经发了,立刻去后台重新生成Secret轮换掉
坑2:AI生成的配置信不得
离谱程度:⭐⭐⭐⭐⭐
朋友说配置文件是让AI写的。
写得挺像那么回事,语法也对,结构也对,但配置字段名是错的。
OpenClaw还太新了,AI在这方面幻觉比较严重,会出现把全局配置放在局部这种问题。
解决方案:不要让AI帮你写OpenClaw配置文件。用官方模板改。
坑3:A2A插件投毒
离谱程度:⭐⭐⭐⭐⭐
朋友想让本地OpenClaw控制远程OpenClaw(A2A,Agent To Agent)。官方不支持,只有插件支持。
去调研时发现,A2A插件在官网标记为有风险插件。
解决方案:
- • 装一个Skill Vetter审查插件:https://clawhub.ai/spclaudehome/skill-vetter
- • 只装大厂或可信来源的插件
坑4-9:配置文件的各种坑
| 坑 | 问题 | 解决方案 |
|---|---|---|
| 4 | bindings写错了 | 用openclaw agents bind命令,别手写JSON |
| 5 | 飞书事件没订阅 | 添加im.message.receive_v1事件 + 发布新版本 |
| 6 | 权限漏加 | 添加权限后必须发布版本才生效 |
| 7 | accounts.json没同步 | openclaw.json和accounts.json两个文件都要改 |
| 8 | session损坏 | 清session + 重启Gateway |
| 9 | API限流 | 降低maxConcurrent或等待 |
五步配置Multi-Agent
Step 1:打开配置文件
所有配置集中在一个文件:
~/.openclaw/openclaw.json用VS Code或Cursor打开,接下来所有配置都在这个文件里。
Step 2:在agents.list里定义多个Agent
{
"agents": {
"defaults": {
"model": { "primary": "zai/glm-4.7" },
"compaction": { "mode": "safeguard" },
"maxConcurrent": 4
},
"list": [
{
"id": "main",
"name": "调度中枢",
"default": true,
"workspace": "~/.openclaw/workspace",
"subagents": { "allowAgents": ["*"] },
"heartbeat": {
"every": "6h",
"activeHours": { "start": "09:00", "end": "22:00" }
}
},
{
"id": "research",
"name": "调研Agent",
"workspace": "~/.openclaw/workspace-research",
"subagents": { "allowAgents": ["*"] }
},
{
"id": "writer",
"name": "写作Agent",
"workspace": "~/.openclaw/workspace-writer",
"subagents": { "allowAgents": ["*"] }
}
]
}
}关键点:
- • default: true:只有main设为true,其他都是false
- • workspace:每个Agent独立目录
- • subagents.allowAgents:跨Agent调用权限
Step 3:给每个Agent写SOUL.md
SOUL.md是Agent最重要的文件,身份、角色、原则、关系,全在这40-60行里。
调研Agent(Dwight)的SOUL.md示例:
# SOUL.md (Dwight)
## Core Identity
**Dwight** — the research brain. 彻底到极致,知道领域内所有事。
## Your Role
你是团队的情报骨干。调研、验证、组织、交付情报给其他Agent使用。
## Your Principles
### 1. NEVER Make Things Up
- 每个声明都有来源链接
- 每个指标都来自原始数据,不估算
- 不确定就标记[UNVERIFIED]
- "我不知道"比错的更好
### 2. Signal Over Noise
- 不是所有热门都重要
- 优先:AI/agents相关性、互动速度、来源可信度
## Output Files
intel/
├── data/YYYY-MM-DD.json ← 结构化数据
└── DAILY-INTEL.md ← 生成的情报汇总主Agent(Monica)的SOUL.md侧重调度:
# SOUL.md (Monica)
## Core Identity
**Monica** — 有组织、有动力、略竞争。
## Your Role
- 战略监督 — 看大局,推动进程
- 委派 — 把任务分给合适的Agent
- 直接支持 — 处理不属于专家的内容
## 调度方式
**实时调度(默认)**:直接spawn对应Agent,等待返回结果后汇总。
**异步任务**:仅当明确说"不急""下周做"时,写入work/inbox/文件。
⚠️ 如果SOUL.md不显式写明"直接spawn",Agent会默认用异步模式。Step 4:配置bindings和飞书
飞书接入必需权限:
- • im:message
- • im:message:send_as_bot
- • im:message.group_at_msg:readonly
- • im:message.p2p_msg:readonly
- • contact:contact.base:readonly
三个最容易漏的:
- 1. 忘了添加im.message.receive_v1事件 → 机器人收不到消息
- 2. 添加权限/事件后忘了发布新版本 → 不会生效
- 3. 缺少contact:contact.base:readonly → 日志报99991672错误
注册脚本:
AGENT_ID="research"
APP_ID="cli_xxxxxx"
APP_SECRET="xxxxxx"
# 1. 更新openclaw.json
node -e "
const fs = require('fs');
const config = JSON.parse(fs.readFileSync(process.env.HOME+'/.openclaw/openclaw.json','utf8'));
config.channels.feishu.accounts['$AGENT_ID'] = { appId: '$APP_ID', appSecret: '$APP_SECRET' };
fs.writeFileSync(process.env.HOME+'/.openclaw/openclaw.json', JSON.stringify(config,null,2));
"
# 2. 更新accounts.json(关键!)
node -e "
const fs = require('fs');
const acc = JSON.parse(fs.readFileSync(process.env.HOME+'/.openclaw/channels/feishu/accounts.json','utf8'));
acc.accounts['$AGENT_ID'] = { appId: '$APP_ID', appSecret: '$APP_SECRET' };
fs.writeFileSync(process.env.HOME+'/.openclaw/channels/feishu/accounts.json', JSON.stringify(acc,null,2));
"
# 3. 绑定路由
openclaw agents bind --agent $AGENT_ID --bind feishu:$AGENT_ID
# 4. 重启
openclaw gateway restart⚠️ openclaw.json和accounts.json两个文件都必须更新。只改一个飞书连不上。
Step 5:防抢消息的铁律
多Agent同群最常见的坑:所有龙虾抢着回复同一条消息。
解决方案:只让一个Agent设为requireMention: false(默认响应者),其他所有Agent必须设为true(必须@才响应)。
{
"channels": {
"telegram": {
"accounts": {
"default": {
"botToken": "YOUR_BOT_TOKEN",
"groups": {
"-100GROUP_ID": {
"allow": true,
"requireMention": false
}
}
}
}
}
}
}只有requireMention: false的群会让Agent主动响应所有消息,其他群必须@Bot名称才触发。
7×24自动运行:Cron和自愈
Cron调度顺序
上游Agent必须先跑:
08:01 Dwight(调研) → 产出DAILY-INTEL.md
09:01 Kelly(Twitter) → 读取情报,写推文草稿
09:01 Rachel(LinkedIn)→ 读取情报,写职场内容
10:01 Ross(工程) → 代码审查
16:01 Dwight(下午) → 第二次调研
17:01 Kelly + Rachel → 基于下午情报二次创作配置方式:直接告诉主Agent「每天早上8点执行调研任务」,Agent会自动创建cron job。
用openclaw cron list查看所有定时任务。
Heartbeat自愈机制
Cron job会失败——机器重启、网络抖动、API限流。
解决方案是HEARTBEAT.md:让主Agent在每次心跳时自动检查所有cron job状态。
## Cron Health Check (run on each heartbeat)
Check if any daily cron jobs have stale lastRunAtMs (>26 hours).
If stale, trigger them via CLI:
`openclaw cron run <jobId> --force`
Jobs to monitor:
- Dwight Morning (8:01 AM): 01f2e5c5-...
- Kelly Viral (9:01 AM): c9458766-...如果某个job超过26小时没执行,Monica会自动触发--force重跑。
没有自愈机制,你最终会变成Agent的运维工程师。
协作靠文件,不靠框架
多个Agent之间怎么协作?最稳的方案反而最笨:文件系统。
实战案例:6人Agent团队运行几个月。协作机制极其简单:
- • Dwight每天三次把情报写入intel/DAILY-INTEL.md
- • Kelly醒来后读这个文件写推文
- • Rachel读同一个文件写职场内容
- • Pam读同一个文件写周报
没有API调用,没有消息队列,没有编排框架。交接就是一份Markdown文档。
文件不会崩溃,不会有认证问题,不需要处理速率限制。
协调铁律
一个文件只有一个写入者,可以有多个读取者。两个Agent同时写同一个文件,迟早出事。
渐进扩展:四周路线图
第一周:一只Agent,一个任务。写SOUL.md,跑一个cron job,观察一周。
第二周:加记忆,调人格。给反馈,看记忆文件增长,修正SOUL.md。
第三周:加第二只。设好文件共享模式,配置bindings和cron顺序。
第四周及以后:按需扩展。每新增一只都应该解决一个真实存在的问题。
像招人一样对待Agent扩编。没有创始人在第一天就招六个员工。先把一只龙虾养明白,再考虑扩军。
运维速查表
日常命令
| 命令 | 用途 |
|---|---|
| openclaw agents list | 查看所有Agent |
| openclaw agents list --bindings | 查看路由绑定 |
| openclaw channels status --probe | 查看通道健康 |
| openclaw logs --follow | 实时日志 |
| openclaw gateway restart | 重启Gateway |
问题速查
| 现象 | 原因 | 解决方案 |
|---|---|---|
| 群消息不回复 | 未@机器人 | 群里必须@ |
| 新机器人完全无反应 | 未订阅事件 | 飞书添加事件+发布 |
| 收到消息但不回复 | session损坏 | 清session+重启 |
| 权限错误99991672 | 缺少飞书权限 | 添加权限+发布 |
| API限流429 | 并发过多 | 降低maxConcurrent |
| bindings报错 | 手写格式错误 | 用bind命令 |
清session重启
# 清单个Agent
find ~/.openclaw/agents/<agent-id>/sessions/ -type f -delete
# 清全部
find ~/.openclaw/agents/*/sessions/ -type f -delete
# 重启
openclaw gateway restart成本参考
6个Agent 7×24运行的月度开销:
| 项目 | 费用 |
|---|---|
| Claude API(或Max Plan) | ~$200/月 |
| Gemini API | ~$50-70/月 |
| TinyFish(浏览器Agent) | ~$50/月 |
| Eleven Labs(语音) | ~$50/月 |
| Telegram/飞书 | 免费 |
| OpenClaw | 开源免费 |
| 合计 | < $400/月 |
个人起步:一只Agent + 一个模型API,月成本可控制在$20-50以内。
想装5个机器人协同工作?这篇文章帮你省掉7小时的排错时间。
核心记住三件事:
- 1. 按上下文拆,不按职责拆
- 2. 配置文件用官方模板改,不让AI写
- 3. 只让一个Agent主动响应,其他必须@
关键词:OpenClaw, Multi-Agent, 多Agent配置, OpenClaw踩坑, 龙虾, Agent协作, 飞书接入
夜雨聆风