
1. OpenClaw 接入 QQ Bot 到底解决什么问题OpenClaw 接入 QQ Bot 这件事本质上是在给一个本地运行的 AI Agent 框架装上一双能伸进 QQ 的手。OpenClaw 本身是一个支持多 Channel 的智能体网关它能把大模型的推理能力、工具调用能力、插件生态统一起来而 QQ Bot 插件则负责把 QQ 开放平台的消息事件翻译成 OpenClaw 能理解的输入再把 OpenClaw 的输出回写成 QQ 消息。两者接上之后你就能在手机 QQ 里直接和一个由自己配置的 AI 机器人对话消息链路完全跑在你自己可控的环境里。适合谁三类人最需要这套方案。第一类是已经在用 OpenClaw 做本地 Agent、但苦于没有顺手的 IM 入口的开发者第二类是想给团队或社群做一个私有问答机器人、又不想把数据交给第三方 SaaS 的运维同学第三类是想学习「IM 平台 Agent 框架」对接范式的技术爱好者。这三类人的共同诉求是链路要通、配置要可复制、鉴权要统一。我试过把鉴权散落在各个插件配置里的做法结果是每加一个 Channel 就要重新填一遍 Key改一次轮换一次非常痛苦。所以这篇指南会把 TaoToken 作为统一的 Key/API 通道来管理鉴权让 OpenClaw 侧只认一个入口QQ Bot 插件只负责消息收发职责边界清晰。整条链路可以拆成四段QQ 开放平台侧拿到 AppID 和 AppSecretOpenClaw 侧安装 qqbot 插件配置文件里把 channel 和 plugin 都启用最后重启 gateway 并用手机 QQ 发消息验证。下面按这个顺序逐步展开每一步都给可复制的命令和配置片段。需要提前说明的是QQ 开放平台的机器人目前主要面向私聊场景群聊能力受平台策略限制这一点在后面的排障章节会再提到。另外 AppSecret 首次查看后无法再次显示务必当场保存这是很多人踩过的第一个坑。2. TaoToken 统一 Key 的前置准备与鉴权思路在动手装插件之前先把鉴权通道理顺否则后面每配一个模型都要重复填 Key。TaoToken 在这里扮演的角色是统一的 API 入口你只需要在它那里生成一个 Key然后在 OpenClaw 的模型配置里指向 TaoToken 的 API 地址所有走大模型推理的请求都从这一个通道出去。QQ Bot 插件本身不直接持有模型 Key它只负责把消息转给 OpenClawOpenClaw 再用统一 Key 去调用模型。具体操作上先到 TaoToken 控制台创建一个 API Key。访问 https://taotoken.net/api 可以查看 API 的基础信息Key 的创建入口在控制台的 API Keys 页面。创建时建议按用途命名比如openclaw-qqbot方便后续轮换时定位。Key 生成后同样只显示一次复制保存到安全的地方。拿到 Key 之后在 OpenClaw 的模型配置里把它填进去。OpenClaw 的模型配置通常和 channel 配置在同一个openclaw.json里或者通过环境变量注入。推荐用环境变量的方式避免 Key 写死在配置文件里被误提交。你可以在启动 gateway 的 shell 里 export或者写进 systemd 的 Environment 字段。这里要强调一个边界TaoToken 是 API 通道不是编辑器也不是插件市场。它的职责是让 OpenClaw 在调用模型时有一个稳定、可轮换、可审计的出口。QQ Bot 插件、OpenClaw 本体、TaoToken 三者是分层协作的关系不要混为一谈。如果你后续还要接 Claude Code 或做长期编码任务可以了解 Coding Plan 这类方案它和按量调用的 API Key 是两种不同的计费与使用模式按自己的场景选。对于 QQ Bot 这种消息量不大、但要求低延迟的场景按量 API Key 通常更合适。前置准备的最后一步是确认环境。OpenClaw 已经安装并能正常运行Node.js 版本在 18 以上服务器能正常访问 QQ 开放平台。手机 QQ 准备好用于扫码登录开放平台。这些条件缺一不可尤其是 Node 版本低于 18 会在装插件时遇到各种奇怪的依赖报错。3. 可复制的 OpenClaw 与 QQ Bot 配置片段这一节是全文的核心所有配置都可以直接复制。先装插件再配 channel最后启用 plugin顺序不要乱。安装 QQ Bot 插件推荐用 npm 方式openclaw plugins install sliverp/qqbotlatest安装过程中如果看到关于「dangerous code patterns」的 WARNING这是插件里存在环境变量访问加网络发送、以及 shell 命令调用的静态扫描提示属于正常现象插件需要这些能力来做音频转换和平台适配。真正要关注的是最后一行npm install failed如果出现进入插件目录手动补依赖cd ~/.openclaw/extensions/qqbot npm install装完后验证目录结构ls -la ~/.openclaw/extensions/qqbot/确认openclaw.plugin.json、package.json、node_modules/三个都在。接下来配置 channel。推荐用命令行方式最不容易出错openclaw channels add --channel qqbot --token 你的AppID:你的AppSecret执行成功会显示Added QQ Bot account default.。注意 token 的格式是 AppID 和 AppSecret 用英文冒号连接不要有多余空格。如果你更习惯手改配置文件编辑~/.openclaw/openclaw.json加入 channel 段{ channels: { qqbot: { enabled: true, appId: 你的AppID, clientSecret: 你的AppSecret } } }然后启用插件在同一份 JSON 里加 plugins 段{ plugins: { allow: [ qqbot ], entries: { qqbot: { enabled: true } }, installs: { qqbot: { source: npm, spec: sliverp/qqbotlatest, installPath: /root/.openclaw/extensions/qqbot, version: 1.5.3 } } } }手改 JSON 最大的风险是逗号。相邻属性之间必须有逗号最后一个属性后面不能有逗号。改完立刻用 Node 验证语法node -e JSON.parse(require(fs).readFileSync(/root/.openclaw/openclaw.json, utf8)); console.log(JSON OK)看到JSON OK才算过关。这一步能帮你省掉后面一大半的排查时间。模型侧的统一 Key 配置建议通过环境变量注入在启动 gateway 前设置export TAOTOKEN_API_KEY你的TaoToken Key export TAOTOKEN_BASE_URLhttps://taotoken.net/api然后在 OpenClaw 的模型配置里引用这两个变量。这样 Key 不会出现在 JSON 文件里轮换时只改环境变量即可。4. 启动 Gateway 并验证消息收发链路配置写完重启 gateway 让改动生效openclaw gateway restart然后检查状态openclaw status在输出的 Channels 部分你应该能看到类似这样的一行│ QQ Bot │ ON │ OK │ configured │三个关键字段ON 表示启用OK 表示连接正常configured 表示配置已加载。如果 QQ Bot 显示 OFF 或 ERROR先别急着测消息回到上一节检查配置。状态正常后打开手机 QQ找到你创建的那个机器人发一条消息测试。如果机器人回复「去火星了」这类兜底话术说明消息到了 QQ 侧但没进 OpenClaw问题出在鉴权或插件注册上对照第 5 节排查。验证模型通道是否走通可以单独测一次模型对话。访问模型对话入口发一条测试消息确认 TaoToken 的 Key 有效、额度正常。这一步和 QQ Bot 解耦能帮你快速定位是模型侧的问题还是 IM 侧的问题。如果一切正常你在 QQ 里发的消息会经过这样一条路径QQ 开放平台推送事件到你的服务器qqbot 插件接收并转成 OpenClaw 输入OpenClaw 调用模型走 TaoToken 统一 Key模型返回结果插件再回写成 QQ 消息。整条链路跑通后你可以在 gateway 日志里看到完整的请求记录openclaw logs --follow日志里能看到消息进入和模型调用的时间戳延迟通常在几百毫秒到几秒之间取决于模型响应速度。如果日志里只有消息进入没有模型调用说明模型配置有问题如果两者都有但 QQ 没收到回复说明回写环节出了问题。5. 常见报错逐条排查这一节按真实报错来遇到哪个查哪个。openclaw: command not found。原因是 openclaw 命令的软链接不在 PATH 里。解决ln -sf /usr/lib/node_modules/openclaw/openclaw.mjs /usr/local/bin/openclaw chmod x /usr/local/bin/openclawUnknown channel: qqbot。这是最高频的报错。QQ Bot 不是 OpenClaw 内置 channel必须先装插件。如果装插件时npm install failed插件文件虽然复制过去了但没被正确注册OpenClaw 就认不出 qqbot。解决顺序先openclaw plugins install sliverp/qqbotlatest失败就cd ~/.openclaw/extensions/qqbot npm install然后openclaw channels add --channel qqbot --token AppID:AppSecret最后openclaw gateway restart。JSON5: invalid character at 198:7。手改 JSON 时漏了逗号。典型场景是在installedAt字段后面直接跟了qqbot: {中间缺逗号。修复sed -i 197s/}/},/ /root/.openclaw/openclaw.json node -e JSON.parse(require(fs).readFileSync(/root/.openclaw/openclaw.json, utf8)); console.log(JSON OK)教训是大文件编辑后一定用node -e JSON.parse(...)验证或者立刻openclaw status看配置是否生效。401 鉴权失败。分两种。如果是模型侧 401检查 TaoToken Key 是否正确、是否过期、环境变量是否真的注入到了 gateway 进程里。如果是 QQ 侧 401检查 AppID 和 AppSecret 是否匹配、token 格式是否是AppID:AppSecret。注意 AppSecret 首次查看后无法再次显示如果你当时没保存只能重置。local proxy failed。这类报错通常和网络出口有关检查服务器能否正常访问外部 API以及 TaoToken 的 Base URL 是否写对。Base URL 应该是https://taotoken.net/api不要多加路径。reading choices 相关报错。这是模型返回结构解析失败通常意味着请求根本没到模型或者返回的不是预期的 chat completion 结构。检查 Base URL 和模型 ID 是否匹配以及 Key 是否有对应模型的权限。OAuth 相关报错。如果你在配置里混用了 OAuth 流程和 API Key 流程会出现这类冲突。QQ Bot 插件用的是 AppID/AppSecret 的 client credentials 模式不是 OAuth 授权码模式不要混。排查的通用顺序是先openclaw status看 channel 状态再openclaw logs --follow看实时日志最后openclaw doctor --fix让工具自动修一些常见问题。这三板斧能解决八成问题。6. 统一 Key 方案的长期维护与接入入口链路跑通只是开始长期维护才是关键。统一 Key 方案的价值在于当你要加第二个、第三个 Channel 时模型鉴权部分完全不用动只需要配新的 channel 和 plugin。QQ Bot 插件只关心消息收发模型调用统一走 TaoToken职责清晰轮换 Key 时只改一处。配置文件的版本管理建议用 git但 Key 和 Secret 一定要用环境变量或.env文件隔离.env加进.gitignore。每次改完配置先备份再改cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak插件升级用openclaw plugins upgrade sliverp/qqbotlatest升级后同样要重启 gateway 并检查 status。如果你在接入过程中卡在鉴权或插件注册环节可以直接到 API Keys 页面重新生成 Key 对照测试接入文档里有各语言的调用示例。想先验证模型通道是否正常用模型对话入口发一条消息最快。如果你打算把 OpenClaw 用于长期编码或 Agent 任务Coding Plan 是比按量 Key 更省心的选择具体可以到控制台看当前方案。QQ 开放平台侧还有一点要留意机器人目前主要支持私聊群聊能力受平台策略限制如果你的场景强依赖群聊需要先确认平台是否开放了对应权限。另外测试成员要在开放平台的沙箱配置里添加否则非白名单用户发消息机器人不会响应。最后给一个实用技巧把openclaw logs --follow常驻在一个终端窗口里改配置、重启、发消息的全过程都能实时看到日志变化比反复openclaw status高效得多。链路跑通后你可以在日志里清楚看到每条消息从进入到模型调用再到回写的完整时间线任何一环出问题都能立刻定位。