
1. 为什么要在飞书群里接一个 OpenClaw 机器人OpenClaw 是一个本地优先的 AI 代理网关它本身不训练模型而是把大模型能力、本机权限和聊天工具串起来。飞书机器人则是这套链路里最顺手的入口群里 一下就能触发任务结果直接回到会话里不用再切网页。适合需要在飞书群内触发 AI 能力的开发者比如让机器人读文档、跑脚本、整理日程。真正卡人的地方通常不在 OpenClaw 本体而在两件事一是模型鉴权二是飞书事件订阅的回调链路。模型侧如果每个渠道都单独配 Key维护成本会很高飞书侧如果回调地址或事件类型没配对消息根本进不来。这篇就把这两段拆开给出 TaoToken 统一 Key 的 config.toml 骨架、飞书事件订阅的配置动作以及用 curl 验证消息收发是否打通的完整流程。我试过把模型 Key 散落在多个配置文件里改一次要翻三处后来统一收敛到 TaoToken 的 Key 上OpenClaw 只认一个 base_url 和一个 token换模型只改 model 字段。下面按可跟做的顺序来。2. TaoToken 前置统一 Key 与接入地址TaoToken 在这里扮演的是模型调用的统一入口。你不需要在 OpenClaw 里为每个模型供应商写一套鉴权逻辑只要拿到一个 Key把 base_url 指向 TaoToken 的 API 地址OpenClaw 发出的推理请求就会走这条通道。对飞书机器人来说这意味着群里触发的每一次对话、每一个任务背后调用的模型都是同一套鉴权排查问题时只需要看一个地方。先到控制台创建 API Key。打开 https://taotoken.net/api-keys 登录后新建一个 Key复制出来。这个 Key 只显示一次建议先存到密码管理器里。注意不要把它写进会提交到 Git 的配置文件后面我们会用环境变量或本地 config.toml 承载。接入地址用 https://taotoken.net/api 这是 OpenAI 兼容风格的 base_urlOpenClaw 的模型配置里填这个即可。如果你用的是 Anthropic 风格的调用文档里也给了对应路径参考 https://taotoken.net/doc 里的说明。模型名按你实际要用的填比如 claude 系列或 gpt 系列具体可用列表在模型对话页能看到https://taotoken.net/model-chat 。注意Key 属于敏感凭据不要贴到飞书群、issue 或公开仓库里。回调验证阶段如果报 401先检查 Key 是否复制完整、有没有多余空格。3. 可复制配置config.toml 骨架与飞书事件订阅3.1 OpenClaw 的 config.toml 骨架OpenClaw 的配置一般放在工作目录下的 config.toml。下面是一个可直接改的骨架重点是 models 段指向 TaoTokenchannels 段启用飞书。字段名以你本地版本为准结构参考即可。# OpenClaw 主配置骨架 [gateway] host 127.0.0.1 port 18789 [models] # 统一走 TaoToken换模型只改 model 字段 provider openai-compatible base_url https://taotoken.net/api api_key ${TAOTOKEN_API_KEY} model claude-3-5-sonnet timeout_seconds 60 [channels.feishu] enabled true app_id ${FEISHU_APP_ID} app_secret ${FEISHU_APP_SECRET} # 事件订阅模式长连接或 webhook二选一 event_mode webhook verification_token ${FEISHU_VERIFICATION_TOKEN} encrypt_key ${FEISHU_ENCRYPT_KEY} # 回调路径需与飞书后台填写的一致 webhook_path /feishu/events [agent] workspace ./workspace max_steps 12把${TAOTOKEN_API_KEY}这类占位符换成真实值或者用 shell 导出环境变量后启动。用环境变量的好处是配置文件可以进版本库而不泄露凭据。export TAOTOKEN_API_KEY你的Key export FEISHU_APP_IDcli_xxxxxx export FEISHU_APP_SECRETxxxxxx export FEISHU_VERIFICATION_TOKENxxxxxx export FEISHU_ENCRYPT_KEYxxxxxx openclaw start3.2 飞书应用与事件订阅配置在飞书开放平台新建企业自建应用启用机器人能力。权限部分可以直接导入下面这段 JSON覆盖消息收发、群聊读取、文档只读等常用范围。权限按最小必要原则裁剪用不到的可以删。{ scopes: { tenant: [ im:message, im:message.group_at_msg:readonly, im:message.p2p_msg:readonly, im:message:send_as_bot, im:message:readonly, im:chat:read, im:resource, contact:contact.base:readonly, docx:document:readonly ], user: [ offline_access, contact:user.base:readonly, im:message.p2p_msg:get_as_user, im:message.group_msg:get_as_user ] } }事件订阅是关键一步。在「事件与回调」里选择请求地址模式把回调地址填成你的 OpenClaw 网关可被飞书访问的地址路径与 config.toml 里的webhook_path一致例如https://your-domain.com/feishu/events。然后添加事件im.message.receive_v1这是机器人能收到消息的核心事件。如果只做群内 触发再确认群聊相关权限已开。注意回调地址必须是公网可达的 HTTPS。本地开发可以用内网穿透工具把 18789 端口映射出去但不要把网关直接暴露成无鉴权的公网服务飞书的 verification_token 和 encrypt_key 要填对。4. 验证请求用 curl 打通消息收发配置写完先别急着在群里发消息用 curl 分两步验证能快速定位是模型侧还是飞书侧的问题。4.1 验证 TaoToken 模型调用先确认 Key 和 base_url 能正常返回。这一步不经过飞书纯粹测模型通道。curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-3-5-sonnet, messages: [{role: user, content: ping}], max_tokens: 16 }返回里能看到choices字段和一段文本说明模型通道通了。如果返回 401检查 Key返回 404检查 base_url 是否多了或少了/v1返回超时检查网络出口。4.2 验证飞书回调地址飞书在保存回调地址时会发一个 challenge 校验请求。你也可以手动模拟一次确认网关能响应。curl -s -X POST https://your-domain.com/feishu/events \ -H Content-Type: application/json \ -d { type: url_verification, challenge: test-challenge-123, token: $FEISHU_VERIFICATION_TOKEN }期望返回里包含challenge字段且值与请求一致。如果返回 403多半是 verification_token 不匹配返回 404检查 webhook_path 和反向代理转发规则。4.3 端到端群里发一条消息两步都通之后把机器人拉进飞书群 它发一句「你好」。观察 OpenClaw 日志里是否出现im.message.receive_v1事件以及随后是否有模型调用记录。正常的话群里几秒内会收到回复。如果事件进来了但没回复问题在模型段如果事件根本没进来回到 4.2 检查回调。5. 本篇常见错排查回调地址保存失败飞书要求 HTTPS 且证书有效自签证书会被拒。检查域名解析和证书链确认反向代理把/feishu/events转发到了 OpenClaw 的 18789 端口。事件进来了但机器人不回复先看 OpenClaw 日志里模型调用是否报错。常见的是 base_url 写成了https://taotoken.net而漏了/api或者 model 字段填了不存在的模型名。回到 4.1 用 curl 复测。群里 没反应私聊正常群聊需要im:message.group_at_msg:readonly权限并且机器人要被拉进群。检查权限 JSON 是否导入成功以及事件订阅里是否只加了私聊事件。401 与 403 混在一起401 通常是 TaoToken Key 问题403 通常是飞书 verification_token 或 encrypt_key 问题。两者分属不同层按 4.1 和 4.2 分别定位不要一起改。重复收到消息飞书在未及时 ACK 时会重推事件。确认 OpenClaw 在收到事件后尽快返回 200并且对同一 message_id 做了去重。日志里如果看到同一事件多次出现检查网关处理耗时是否超过了飞书的超时阈值。encrypt_key 开启后回调失败开启加密后飞书发来的 body 是加密的OpenClaw 需要配置相同的 encrypt_key 才能解密。如果只填了 verification_token 没填 encrypt_key会解密失败。两边保持一致或者先关闭加密调试。6. 接下来怎么走模型通道和飞书回调都验证通过后你可以把 OpenClaw 的能力往深里用在群里触发文档整理、定时任务、代码检查。如果后面要长期跑编码类或 Agent 类任务建议看一下 Coding Plan额度模型更适合持续调用https://taotoken.net/coding-plan 。需要管理多个 Key 或查看用量回控制台https://taotoken.net/console 。飞书事件和权限的细节以官方文档为准TaoToken 侧的接入说明在 https://taotoken.net/doc 。把 config.toml 里的占位符换成真实值重启网关群里再 一次链路就完整了。