
1. 从单机器人到多智能体OpenClaw 多飞书机器人部署到底解决什么问题如果你已经在用 OpenClaw 接飞书机器人大概率会遇到一个尴尬的瓶颈一个机器人只能对应一个 Agent所有消息都涌向同一个智能体。写代码的请求、查资料的请求、整理文档的请求全混在一起Agent 的人设和上下文被反复污染回复质量肉眼可见地下降。传统解法是“一个机器人配一个 OpenClaw 实例”听起来干净实际部署起来是灾难。每个实例都要占内存、占端口、维护独立的配置文件服务器上跑三四个实例就开始吃紧日志分散在多个进程里排查问题要来回切换终端。更麻烦的是每个实例都要单独配置 API 通道Key 分散在各处轮换和额度管理变成体力活。OpenClaw 的多飞书机器人部署方案核心思路是单实例多机器人。所有 Agent 跑在同一个 OpenClaw 网关进程里共享资源但每个 Agent 通过openclaw.json里的bindings和channels.feishu.accounts绑定一个独立的飞书机器人。用户在飞书里 哪个机器人消息就路由到哪个 Agent互不干扰。这套架构适合谁适合已经在用 OpenClaw 做自动化、但被单机器人限制住的团队适合想让不同 Agent 各司其职研究员查资料、程序员写代码、秘书管日程却不想堆实例的开发者也适合想把多个飞书应用的鉴权统一收口、用一套 API 通道管理所有 Agent 的运维同学。我试过在 2 核 4G 的轻量服务器上跑 6 个 Agent 加 6 个飞书机器人内存占用稳定在 1.2G 左右CPU 空闲时几乎不动。对比之前跑 3 个独立实例就快撑爆的情况单实例多机器人的资源效率提升非常明显。但这里有个容易被忽略的环节多 Agent 意味着多路模型调用。如果每个 Agent 各自配置一套 API Key不仅管理麻烦额度分散后还容易出现某个 Agent 把额度吃光、其他 Agent 干瞪眼的情况。所以本文在讲完多机器人配置后会重点讲怎么用 TaoToken 统一接入把所有 Agent 的模型请求收口到一个 Key 上既省心又方便做额度监控。接下来的内容按这个顺序展开先讲飞书应用和权限准备再给可复制的openclaw.json多机器人配置片段然后讲 TaoToken 统一 Key 的接入步骤接着是启动授权和消息路由验证最后是常见报错排查。每一步都有完整命令和配置你可以直接跟着做。2. 前置准备飞书应用创建、权限配置与 TaoToken 统一 Key 获取2.1 飞书应用创建与必备权限每个飞书机器人对应一个独立的飞书应用。你需要为每个 Agent 创建一个应用比如researcher、coder、secretary各一个。创建方式有两种官方一键部署工具适合快速起步手动创建适合需要精细控制权限的场景。手动创建的流程是登录飞书开放平台新建应用添加「机器人」能力订阅im.message.receive_v1事件配置权限然后发布应用。权限这块是踩坑重灾区。少一个权限机器人可能收不到消息或者收到了但发不出去。下面这张表是每个应用都需要配齐的核心权限建议对照勾选权限名称权限标识核心用途获取群信息im:chat:readonly读取群聊基础信息群聊场景必需读取消息im:message:readonly接收用户发给机器人的消息发送消息im:message:send_as_bot以机器人身份回复消息读取云文档docx:document:readonly查看飞书云文档内容读写云文档docx:document:rw编辑、修改云文档读取知识库wiki:wiki:readonly访问知识库内容读取多维表格bitable:app:readonly查看多维表格数据日历权限calendar:*日程管理、提醒按需添加配置路径是飞书开放平台 → 对应应用 → 权限管理 → 新增权限 → 勾选上述权限并保存。每个应用都要单独配一遍不能批量操作。配完后记得发布应用否则权限不生效。2.2 TaoToken 统一 Key 获取多 Agent 架构下模型调用会分散到多个 Agent。如果每个 Agent 各配一套 Key管理成本高额度也容易失控。TaoToken 的做法是提供一个统一的 API 通道你只需要一个 Key就能让所有 Agent 共用同一套模型调用能力。获取 Key 的步骤访问 TaoToken 官网注册登录后进入控制台在 API Keys 页面创建一个新的 Key。这个 Key 就是后续所有 Agent 共用的凭证。创建时建议给 Key 起一个能识别的名字比如openclaw-multi-agent方便后续在控制台查看用量。拿到 Key 后你需要记住两个地址Base URL 是https://taotoken.net/api模型调用走这个地址。控制台地址是https://taotoken.net/console用来管理 Key 和查看额度。如果你需要查看接入文档可以访问https://taotoken.net/doc。这里有个细节TaoToken 的 Key 是统一收口的意味着你不需要为每个 Agent 单独申请 Key。所有 Agent 在openclaw.json里引用同一个 Key 即可。这样做的另一个好处是当你想换模型或者调整额度时只需要在 TaoToken 控制台操作一次所有 Agent 同步生效不用逐个改配置。2.3 工作空间目录结构在写配置之前先把目录结构建好。OpenClaw 默认把配置放在~/.openclaw/下每个 Agent 需要独立的工作空间。建议按下面的结构创建mkdir -p ~/.openclaw/agents/{researcher,coder,secretary,artist,docwriter}/workspace touch ~/.openclaw/agents/{researcher,coder,secretary,artist,docwriter}/SOUL.md touch ~/.openclaw/agents/{researcher,coder,secretary,artist,docwriter}/USER.mdSOUL.md定义 Agent 的身份、性格、说话风格和工作能力USER.md记录对接用户的信息。这两个文件直接决定 Agent 的交互风格不同角色的 Agent 要差异化编写。比如研究员 Agent 可以写得好奇、话多程序员 Agent 可以写得直接、理性。文件内容按 Markdown 格式写就行没有严格的字段要求但建议把身份、性格、说话风格、工作能力分节写清楚方便后续调整。目录建好后~/.openclaw/下应该长这样~/.openclaw/ ├── agents/ │ ├── researcher/ │ │ ├── SOUL.md │ │ ├── USER.md │ │ └── workspace/ │ ├── coder/ │ │ ├── SOUL.md │ │ ├── USER.md │ │ └── workspace/ │ ├── secretary/ │ ├── artist/ │ └── docwriter/ └── openclaw.json路径唯一且存在是后续配置能正常工作的前提。如果路径写错或者目录没建Agent 启动时会报 workspace 相关的错误。3. 可复制配置openclaw.json 多机器人 Agent 路由与 TaoToken 接入3.1 完整 openclaw.json 配置片段openclaw.json是多机器人部署的核心。下面这份配置可以直接复制把appId、appSecret和 TaoToken Key 替换成你自己的值即可。配置分三块agents.list定义 Agentbindings做路由绑定channels.feishu.accounts配飞书凭证。{ agents: { list: [ { id: main, default: true, workspace: /root/.openclaw/workspace }, { id: researcher, workspace: /root/.openclaw/agents/researcher/workspace/ }, { id: coder, workspace: /root/.openclaw/agents/coder/workspace/ }, { id: secretary, workspace: /root/.openclaw/agents/secretary/workspace/ }, { id: artist, workspace: /root/.openclaw/agents/artist/workspace/ }, { id: docwriter, workspace: /root/.openclaw/agents/docwriter/workspace/ } ] }, bindings: [ { type: route, agentId: main, match: { channel: feishu, accountId: main } }, { type: route, agentId: researcher, match: { channel: feishu, accountId: researcher } }, { type: route, agentId: coder, match: { channel: feishu, accountId: coder } }, { type: route, agentId: secretary, match: { channel: feishu, accountId: secretary } }, { type: route, agentId: artist, match: { channel: feishu, accountId: artist } }, { type: route, agentId: docwriter, match: { channel: feishu, accountId: docwriter } } ], channels: { feishu: { enabled: true, connectionMode: websocket, accounts: { default: { dmPolicy: allowlist, allowFrom: [*] }, main: { appId: cli_*****, appSecret: *****, dmPolicy: allowlist, allowFrom: [*] }, researcher: { appId: cli_*****, appSecret: *****, dmPolicy: allowlist, allowFrom: [*] }, coder: { appId: cli_*****, appSecret: *****, dmPolicy: allowlist, allowFrom: [*] }, secretary: { appId: cli_*****, appSecret: *****, dmPolicy: allowlist, allowFrom: [*] }, artist: { appId: cli_*****, appSecret: *****, dmPolicy: allowlist, allowFrom: [*] }, docwriter: { appId: cli_*****, appSecret: *****, dmPolicy: allowlist, allowFrom: [*] } } } }, models: { providers: { taotoken: { baseUrl: https://taotoken.net/api, apiKey: 你的TaoToken统一Key, model: claude-sonnet-4-20250514 } }, default: taotoken } }3.2 关键配置项说明agents.list里每个 Agent 的id必须唯一default: true只给main主控 Agent 设置。workspace路径要和前面创建的目录一致末尾斜杠建议保留避免路径拼接问题。bindings是路由核心。每条规则把accountId和agentId绑定channel固定为feishu。accountId是自定义的机器人账号名对应channels.feishu.accounts下的对象 Key不是飞书机器人的open_id。建议accountId和agentId保持一致比如researcher机器人绑researcherAgent维护起来一目了然。channels.feishu.accounts里每个账号配一个飞书应用的appId和appSecret。dmPolicy设为allowlist表示仅白名单用户可访问allowFrom设为[*]表示允许所有用户。生产环境建议把allowFrom改成具体的用户 ID 列表只开放给授权人员。models.providers.taotoken是 TaoToken 统一接入的关键。baseUrl填https://taotoken.net/apiapiKey填你在 TaoToken 控制台创建的 Keymodel填你要用的模型 ID。所有 Agent 共用这一个 provider不需要每个 Agent 单独配 Key。3.3 多 Agent 共用 TaoToken 的配置逻辑这里要特别说明一下OpenClaw 的模型配置是全局的models.default指向taotoken后所有 Agent 默认都走 TaoToken 通道。如果你想让某个 Agent 用不同的模型可以在该 Agent 的配置里单独覆盖model字段但baseUrl和apiKey仍然共用 TaoToken 的。这样既保证了统一鉴权又保留了单个 Agent 的模型灵活性。如果你用的是 Claude Code 或者 Cline 这类工具TaoToken 的接入方式类似Base URL 填https://taotoken.net/apiKey 填统一 KeyModel ID 填对应模型。三件套配齐就能通。对于 OpenClaw 来说openclaw.json里的models.providers.taotoken就是这三件套的载体。配置写完后建议用jq校验一下 JSON 格式避免因为少个逗号或者括号导致启动失败jq . ~/.openclaw/openclaw.json /dev/null echo JSON 格式正确如果输出JSON 格式正确说明配置没有语法问题。如果有报错jq会指出具体行号按提示修就行。4. 启动、授权与消息路由验证确认每个飞书机器人精准触达对应 Agent4.1 启动 OpenClaw 网关服务配置写好后重启网关让配置生效openclaw gateway restart openclaw gateway status openclaw logs -frestart确保新配置被加载status查看服务运行状态logs -f实时看日志。日志里没有ERROR级别的报错就说明启动正常。如果看到bindings或accounts相关的警告检查一下accountId是否和agents.list里的id对得上。4.2 飞书机器人授权每个飞书机器人首次使用前必须单独授权不能批量操作。步骤是在飞书里找到对应的机器人发送任意私信比如“测试”或“授权”。机器人会返回一条提示消息内容是access not configured并附带一个配对码Pairing Code。然后在服务器上执行openclaw pairing approve feishu 配对码把配对码替换成实际收到的代码。命令执行成功后这个机器人就完成授权了。每个机器人都要重复一遍这个流程六个机器人就授权六次。4.3 消息路由验证授权完成后从三个维度验证路由是否正确。私聊测试分别给每个飞书机器人发一条测试消息比如给coder机器人发“写一个 Python 快排”给researcher机器人发“查一下最近的大模型新闻”。确认每个机器人都能回复且回复风格和对应 Agent 的SOUL.md一致。如果coder机器人回复得像研究员说明路由绑错了。群聊测试把多个机器人拉进同一个飞书群在群里 某个机器人名称加需求。比如 coder 写代码secretary 安排日程。确认消息精准触达对应 Agent没有串号。群聊里 的时候要注意飞书的 是选中机器人后自动补全的手动输入名称可能不触发。Agent 间协作测试如果开启了agentToAgent功能可以发一个跨 Agent 协作任务比如让main协调researcher查资料后交给docwriter整理。确认 Agent 之间能正常传递任务。这个测试不是必须的但能验证多智能体协作链路是否通畅。验证过程中可以用openclaw logs -f实时观察消息路由日志。每条消息进来时日志会打印accountId和匹配到的agentId对照一下就能确认路由是否正确。5. 常见报错排查401、local proxy failed、reading choices 与 OAuth 问题5.1 401 Unauthorized这个报错通常出现在模型调用环节说明 TaoToken Key 无效或者没配对上。排查顺序先检查openclaw.json里models.providers.taotoken.apiKey是否填了正确的 Key注意不要有多余空格或换行。然后去 TaoToken 控制台确认这个 Key 是否还在有效期内有没有被禁用。如果 Key 没问题检查baseUrl是否写成了https://taotoken.net/api少个/api或者多写路径都会导致 401。还有一种情况是 Key 权限不足。TaoToken 的 Key 可能绑定了特定的模型范围如果你在openclaw.json里指定的model不在这个范围内也会返回 401。去控制台看一下 Key 的模型权限或者换一个模型 ID 试试。5.2 local proxy failed这个报错一般和网络配置有关。OpenClaw 在调用外部 API 时如果系统配了代理但代理不可用就会报local proxy failed。排查方法是检查环境变量HTTP_PROXY和HTTPS_PROXY是否设置了无效的代理地址。如果有取消掉或者改成正确的地址。另外如果服务器 DNS 解析有问题也可能导致连接失败可以用curl -I https://taotoken.net/api测试一下网络连通性。5.3 reading choices 报错reading choices通常出现在模型返回格式不符合预期时。比如 TaoToken 返回的响应结构里没有choices字段OpenClaw 解析时就会报错。这种情况多半是baseUrl配错了请求发到了非预期的端点。确认baseUrl是https://taotoken.net/api不要写成https://taotoken.net/api/v1或者其他路径。另外如果model字段填了一个不存在的模型 ID也可能导致返回格式异常。5.4 OAuth 相关报错如果日志里出现 OAuth 相关的错误比如OAuth token expired或OAuth callback failed说明飞书应用的授权流程有问题。检查飞书开放平台里对应应用的「事件订阅」是否配置正确im.message.receive_v1事件是否已订阅。另外飞书应用的appId和appSecret要确保和openclaw.json里填的一致复制时不要漏字符。如果用的是 Claude Code 或者 Cline 的 OAuth 流程确保回调地址配置正确。TaoToken 的接入文档里有详细的 OAuth 配置说明可以对照检查。5.5 机器人无响应排查清单如果机器人完全没反应按这个顺序排查先openclaw gateway status确认网关在运行再检查bindings里的accountId和channels.feishu.accounts的 Key 是否完全一致大小写和拼写都要对然后去飞书开放平台确认应用已发布、事件订阅已生效最后openclaw logs -f看实时日志根据报错信息定位。常见的是权限没配齐比如少了im:message:send_as_bot机器人能收到消息但发不出去。6. 多智能体协作的长期运行建议与 TaoToken 统一接入收口多机器人部署跑起来之后日常维护的重点会从“能不能用”变成“稳不稳定”和“额度可不可控”。TaoToken 统一接入的价值在这里会越来越明显所有 Agent 的模型调用都走同一个 Key你在控制台能看到总用量和每个模型的消耗分布不用在多个 Key 之间来回切换。如果某个 Agent 突然用量飙升也能快速定位到是哪个 Agent 在频繁调用。长期运行建议把allowFrom从[*]改成具体的用户 ID 列表只开放给授权人员。appSecret不要明文写在配置里可以用环境变量或者密钥管理服务注入。日志定期检查确保没有敏感信息泄露。OpenClaw 和 TaoToken 的版本保持更新修复已知问题。如果你还在单机器人阶段建议先从两个 Agent 开始试跑顺了再扩展到六个。多智能体协作的收益不是线性的Agent 之间的路由和协作需要调试一开始铺太大反而不好定位问题。等路由验证稳定了再逐步加机器人每次加完都做一轮私聊和群聊测试。TaoToken 的 Coding Plan 适合长期跑编码类 Agent 的场景模型对话入口可以用来快速验证模型连通性API Keys 页面管理所有凭证。接入文档里有完整的配置示例遇到问题可以先对照文档排查。把这套多机器人架构和统一 Key 接入口跑通后后面加 Agent 就是复制配置、改accountId、授权三步扩展成本很低。