1. 从零搭建 QQ 机器人时最容易卡住的三个环节
OpenClaw 是一个把大模型能力接到即时通讯渠道里的智能体网关,你可以把它理解成一个“消息路由器 + 模型调度器”:QQ 用户发来的消息先到 OpenClaw,OpenClaw 再决定调用哪个模型、用哪套提示词、返回什么内容。它适合想给自己的社群、客服号或兴趣群做自动化助手的开发者,也适合已经在用 Claude Code、Codex 这类编码工具、想顺手把 AI 能力延伸到 QQ 场景的人。
但真正动手时,第一次搭建的人往往不是卡在“模型不会用”,而是卡在三个很具体的地方:AppID 申请下来后不知道哪些字段要填进配置、插件装完了openclaw channels里看不到 qqbot、配置文件写对了但机器人上线后消息不回传。这篇就按“申请凭证 → 装插件 → 写配置 → 启动验证 → 排错”的顺序走一遍,配置片段可以直接复制,路径和字段名保持和实际一致。
需要提前说明的是:QQ 开放平台的机器人创建、实名认证、IP 白名单这些属于平台侧操作,按官方控制台提示走即可;本文重点放在 OpenClaw 侧的插件安装、配置文件骨架和验证动作上。另外,如果你后续要接多个模型或多个渠道,调用凭证会越来越多,建议从一开始就用统一通道管理,后面会讲到怎么用 TaoToken 把 Key 和 API 地址收敛到一处。
先确认环境:OpenClaw 服务已能正常启动,服务器有公网 IP,默认端口 18789 已放行,Node.js 与包管理器版本满足插件要求。QQ 侧需要一个完成实名认证的账号,用于在开放平台创建机器人并拿到 AppID 与 AppSecret。这两样东西是后面所有配置的核心,先拿到手再往下走。
2. TaoToken 前置:把模型调用凭证统一收口
在写 QQ 机器人配置之前,先把模型这一侧的凭证理清楚。OpenClaw 本身是网关,它要真正回复消息,得能调到一个模型服务。很多人第一次搭的时候,模型 Key 直接硬编码在配置里,接第二个渠道时又复制一份,结果 Key 散落在三四个文件里,改一次要翻半天。我的做法是先把模型通道统一到一个入口,再让 OpenClaw 指向这个入口。
TaoToken 在这里扮演的就是“统一 Key / API 通道”的角色。你可以在它的控制台里创建 API Key,然后把 OpenClaw 的模型请求地址指向https://taotoken.net/api,模型 ID 按你实际要用的填。这样做的直接好处是:QQ 机器人、编码工具、其他渠道共用同一套凭证,换模型或轮换 Key 时只改一处,不用每个配置文件都动一遍。
具体操作路径是这样:先到控制台创建 API Key,地址是https://taotoken.net/console;创建完在 API Keys 页面复制出来,页面是https://taotoken.net/api-keys。如果你不确定该用哪个模型 ID,可以先去模型对话页面试一下,地址https://taotoken.net/chat,确认模型能正常返回再写进配置。接入文档在https://taotoken.net/doc,字段含义和请求格式以文档为准。
这里有个容易忽略的点:OpenClaw 的模型配置和渠道配置是两套东西。渠道配置(qqbot)负责“消息怎么进来、怎么出去”,模型配置负责“消息交给谁处理”。两者都写对,机器人才能完整跑通。所以下面第 3 节的配置片段里,我会把模型侧的 Base URL、Key、Model ID 和渠道侧的 AppID、AppSecret 放在一起讲,避免你只配了一半。
如果你打算长期跑编码类或 Agent 类任务,比如让 QQ 机器人背后接一个能写代码、能调工具的智能体,可以了解一下 Coding Plan,地址https://taotoken.net/coding-plan。它的定位是给长期编码和 Agent 场景用的套餐,和按量调用是两种思路,按自己的使用频率选就行。凭证准备好之后,进入下一节的配置文件环节。
3. 可复制配置:config.toml 与 settings.json 骨架
这一节是全文最需要照着做的地方。OpenClaw 的配置分两层:一层是网关主配置,通常是~/.openclaw/config.toml;另一层是渠道或插件的 settings,常见为~/.openclaw/settings.json或插件目录下的配置文件。不同版本路径可能略有差异,以你本地openclaw config path输出为准,但字段结构是一致的。
先装插件。Linux / Mac 用户走 npm 方式:
openclaw plugins install @openclaw-china/channels openclaw china setupWindows 用户如果 npm 装完识别不到,可以走源码方式:
git clone https://github.com/BytePioneer-AI/openclaw-china.git cd openclaw-china pnpm install pnpm build openclaw plugins install -l ./packages/channels装完先别急着启动,把配置写好。下面是config.toml的骨架,重点是模型段和渠道段要同时存在:
# ~/.openclaw/config.toml [model] # 统一走 TaoToken 的 API 通道 base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" model_id = "你的模型ID" [gateway] port = 18789 host = "0.0.0.0" [channels.qqbot] enabled = true app_id = "你的AppID" client_secret = "你的AppSecret"对应的settings.json里放渠道策略和插件级参数,路径按你实际安装位置调整:
{ "channels": { "qqbot": { "enabled": true, "appId": "你的AppID", "clientSecret": "你的AppSecret", "dmPolicy": "open", "groupPolicy": "allowlist", "requireMention": true } }, "plugins": { "channels": { "qqbot": { "sandbox": true } } } }字段说明用表格对照更清楚:
| 字段 | 作用 | 建议值 |
|---|---|---|
| base_url | 模型请求地址 | https://taotoken.net/api |
| api_key | 模型调用凭证 | 控制台创建的 Key |
| model_id | 使用的模型 | 按实际填写 |
| app_id | QQ 机器人唯一标识 | 开放平台复制 |
| client_secret | QQ 机器人密钥 | 开放平台复制 |
| dmPolicy | 私聊策略 | open / pairing / allowlist |
| groupPolicy | 群聊策略 | open / allowlist / disabled |
| requireMention | 群聊是否需 @ | true 更安全 |
注意:
app_id和client_secret属于敏感信息,不要提交到公开仓库。建议用环境变量注入,或在部署时用密钥管理服务替换。
配置写完后重启网关:
openclaw gateway restart openclaw channelsopenclaw channels的输出里,qqbot 那一行状态应该是 running。如果显示 stopped 或根本没出现,先别怀疑模型,去第 5 节对照报错排查。配置这一步的核心原则是:模型段和渠道段都要有,字段名大小写要和插件读取的一致,config.toml用下划线、settings.json用驼峰,这是很多人第一次踩的坑。
4. 启动后验证:机器人上线与消息回传
配置写完、网关重启完,接下来要验证两件事:机器人是否真的上线,以及消息能不能回传。这两步分开测,出问题时才好定位。
先看通道状态。执行openclaw channels,正常输出类似:
NAME STATUS TYPE qqbot running channel如果 qqbot 是 running,说明插件加载成功、凭证被读取到了。这一步只证明“通道起来了”,不证明“消息能通”。接着做上线验证:在 QQ 开放平台的沙箱配置里,把测试用的 QQ 号加为成员,然后用这个号添加机器人为好友。添加成功后,机器人应该出现在好友列表里,这是“上线”的直观标志。
然后测消息回传。先发一条最简单的:
你好如果机器人回复了内容,说明“QQ → OpenClaw → 模型 → OpenClaw → QQ”整条链路通了。如果没回复,先用命令行直接测通道,绕开 QQ 客户端:
openclaw message send "测试消息" --to qq:private:你的QQ号这条命令如果能在 QQ 里收到消息,说明出站通道没问题,问题在入站(消息进不来);如果这条也收不到,说明凭证或白名单有问题。再测模型侧是否正常,可以单独发一次模型请求,确认base_url和api_key有效。把“通道”和“模型”分开验证,是排障时最省时间的做法。
群聊场景要多一步:默认requireMention = true时,群里必须 @ 机器人才会触发。测试时在群里发@机器人 你好,看是否有回复。如果私聊通、群聊不通,八成就是这个配置在起作用,不是故障。沙箱环境下建议先把私聊跑通,再开群聊,变量少、好定位。
验证通过后,建议做一次“冷启动复测”:把网关停掉再启动,重新执行openclaw channels和发消息,确认配置是持久化的、不是靠某次交互式命令临时生效的。很多人第一次配完能用,重启服务器后就失效,就是因为配置只写在了内存或临时文件里,没落到config.toml和settings.json。
5. 常见报错排查:401、local proxy failed 与 choices 读取失败
这一节按真实会遇到的报错来对。先记住一个原则:报错信息里出现401、unauthorized、invalid api key这类词,基本是模型凭证问题;出现local proxy failed、connection refused、timeout,基本是网络或地址问题;出现reading 'choices'、undefined is not an object,基本是返回结构不符合预期,通常是模型 ID 或接口地址不对。
| 报错现象 | 可能原因 | 处理方式 |
|---|---|---|
| 401 Unauthorized | Key 错误或过期 | 重新在控制台创建 Key,更新api_key |
| local proxy failed | 地址不通或端口未放行 | 检查base_url、服务器出网、18789 端口 |
| reading 'choices' of undefined | 返回体不是预期结构 | 核对model_id与接口地址是否匹配 |
| OAuth / token 相关报错 | 凭证类型用错 | 确认用的是 API Key 而非其他凭证 |
| qqbot 状态 stopped | 插件未加载或字段名错 | 重装插件,核对大小写 |
| 机器人无响应 | IP 白名单未配 | 把服务器公网 IP 加入白名单 |
| 群聊无反应 | 未 @ 机器人 | 群里 @ 机器人或调requireMention |
重点说三个。第一个是401:最常见的原因是 Key 复制时带了空格,或者用了已经轮换掉的旧 Key。处理方式是到https://taotoken.net/api-keys重新创建一个,粘贴时注意首尾不要有空白字符。第二个是local proxy failed:这个报错容易让人以为是代理问题,其实多数是base_url写错或服务器出网受限。确认地址是https://taotoken.net/api,然后在服务器上直接curl一下这个地址,看是否有响应。第三个是reading 'choices':这个报错说明请求发出去了、也收到响应了,但响应体里没有choices字段,通常是model_id填了一个不存在的模型,或者接口路径不对。回到模型对话页面确认模型可用,再填回配置。
还有一个和 QQ 侧强相关的:机器人提示“去火星了”或完全无响应,先查 IP 白名单。开放平台只允许白名单内的 IP 调用,服务器换了公网 IP 后如果没更新白名单,就会表现为无响应。这个不是 OpenClaw 的问题,但排查时很容易绕远路。
如果你用的是 Claude Code 这类工具配合 OpenClaw,凭证配置要写全三件套:Base URL、Key、Model ID,缺一个都可能报 OAuth 或鉴权类错误。Base URL 用https://taotoken.net/api,Key 用控制台创建的,Model ID 按实际填。三样对齐之后,鉴权类报错基本会消失。
6. 凭证管理与后续接入建议
把机器人跑通只是第一步,后面真正费时间的是凭证和配置的维护。我的经验是:模型凭证和渠道凭证分开管理,模型侧统一走一个入口,渠道侧按平台各自配置。这样换模型时不动渠道,换渠道时不动模型,两边解耦。
模型侧的统一入口就是前面说的 TaoToken。控制台在https://taotoken.net/console,API Keys 在https://taotoken.net/api-keys,接入文档在https://taotoken.net/doc。需要试模型效果就去模型对话页面https://taotoken.net/chat。如果你后面要接的不只是 QQ,还有别的渠道或编码工具,这套统一凭证的价值会更明显——不用每个工具都配一遍 Key。
渠道侧的建议是:app_id和client_secret不要写死在代码里,用环境变量或部署平台的密钥管理注入。沙箱环境和正式环境的凭证分开,测试时用沙箱,上线前再切正式。IP 白名单变更后记得同步更新,服务器迁移时这是最容易漏的一步。
最后给一个实用技巧:把openclaw channels和一次命令行发消息做成一个自检脚本,每次改完配置跑一遍。通道状态 + 出站消息两条都过,基本就说明配置没写坏。这比每次手动去 QQ 里发消息快得多,尤其是在反复调groupPolicy、requireMention这些参数的时候。
需要长期跑编码或 Agent 类任务的话,可以看看 Coding Plan,地址https://taotoken.net/coding-plan,按自己的调用频率决定是否合适。凭证和配置都稳定之后,QQ 机器人就可以从沙箱切到正式环境,交给真实用户用了。