1. 为什么你的 Openclaw 接上 QQ/钉钉/微信总是掉线
Openclaw(老玩家更熟悉的名字是 Clawdbot)本质上是一个可私有化部署的 AI 智能体运行时,它能通过 skill 插件把大模型能力接到你日常用的聊天工具里。你给它配好模型 Key,再装一个消息通道 skill,它就能在 QQ 群、钉钉群、微信里替你回消息、查资料、跑自动化任务。适合谁?适合想把 AI 助手塞进团队现有沟通链路、又不想让数据到处乱跑的个人开发者和小团队。
但零基础用户真正卡住的地方,往往不是 Openclaw 本体装不上,而是三件事叠在一起:第一,skill 装完不知道配置文件写在哪、字段叫什么;第二,每个平台都要单独填一遍模型地址和 Key,改一次要动五个文件;第三,填完之后没有任何验证动作,消息发出去石沉大海,也不知道是通道没通还是模型没通。
这篇就围绕「skill 安装 + TaoToken 统一 Key 配置」这条主线走。核心思路是:把模型调用收敛到一个统一的 OpenAI 兼容入口,让 Openclaw 的 settings.json 和 config.toml 只认一个 base_url 和一个 Key,QQ、钉钉、微信三个通道共用它。这样你以后换模型、调额度,只改一处。下面给的 settings.json 骨架和 config.toml 示例可以直接复制,改两个值就能跑。
2. 前置准备:TaoToken 统一 Key 与 Openclaw 环境
先说 TaoToken 在这里扮演的角色。它是一个 OpenAI 兼容的模型调用入口,你拿到一个 Key 之后,请求地址统一走https://taotoken.net/api,模型名按平台文档填。对 Openclaw 来说,它不关心你背后用的是哪个模型,只关心「有没有一个能返回 chat completions 的地址」。所以把 TaoToken 配成 Openclaw 的默认 provider,是最省事的做法。
你需要准备的东西不多:一台能跑 Openclaw 的机器(本地或服务器都行,2 核 2G 起步),Openclaw v2026.2 及以上版本,一个 TaoToken 的 API Key。Key 的获取入口在控制台的 API Keys 页面,登录后新建一个即可,建议按用途命名,比如openclaw-multi,方便以后排查是哪个应用在调用。
拿到 Key 之后先别急着写配置,先在终端确认一下 Openclaw 的版本和配置目录位置,不同安装方式目录不一样,这一步能帮你少走弯路:
openclaw --version openclaw config path第二条命令会打印出当前生效的配置目录,通常是~/.openclaw/或/opt/openclaw/config。记住这个路径,后面所有配置文件都放这里。如果你是用容器跑的,配置目录一般挂载在宿主机上,进容器改也行,但更推荐改宿主机挂载目录,重启不丢。
提示:TaoToken 的 API 地址是
https://taotoken.net/api,注意结尾没有多余的斜杠,Openclaw 拼接路径时对斜杠敏感,多一个少一个都可能 404。
3. 可复制配置:settings.json 骨架与 config.toml 示例
Openclaw 的配置分两层:settings.json管全局运行时和 provider,config.toml管各个 skill 通道的开关和参数。先给 settings.json 的骨架,重点是providers段,把 TaoToken 作为默认模型入口:
{ "runtime": { "name": "openclaw", "version": "2026.2", "log_level": "info" }, "providers": { "default": "taotoken", "taotoken": { "type": "openai-compatible", "base_url": "https://taotoken.net/api", "api_key": "sk-你的TaoToken密钥", "model": "按平台文档填写模型名", "timeout": 60, "max_retries": 2 } }, "skills": { "auto_load": true, "dir": "./skills" } }几个字段说明一下。type固定写openai-compatible,因为 TaoToken 走的是 OpenAI 兼容协议。timeout给 60 秒,聊天场景够用,跑长任务可以调到 120。max_retries设 2,网络抖动时自动重试,避免消息通道因为一次超时就断连。api_key那行记得换成你自己的,别直接提交到 git。
然后是 config.toml,管三个消息通道。QQ、钉钉、微信的 skill 各自有独立段,但模型调用都指向上面那个 default provider,所以这里不用再写 Key:
[channel.qq] enabled = true skill = "qq-adapter" listen_port = 18801 provider = "taotoken" [channel.dingtalk] enabled = true skill = "dingtalk-adapter" webhook_path = "/dingtalk/callback" provider = "taotoken" [channel.wechat] enabled = true skill = "wechat-adapter" mode = "personal" provider = "taotoken" [skill.qq-adapter] app_id = "你的QQ机器人AppID" token = "你的QQ机器人Token" [skill.dingtalk-adapter] client_id = "你的钉钉ClientID" client_secret = "你的钉钉ClientSecret" [skill.wechat-adapter] session_dir = "./data/wechat-session"注意每个 channel 段里的provider = "taotoken",这就是统一 Key 的关键:通道只管收发消息,模型调用全部委托给 default provider。以后你想换模型,只改 settings.json 里的model字段,三个通道同时生效,不用挨个改。
skill 的安装用 Openclaw 自带命令,装完会自动在 skills 目录生成适配器:
openclaw skills install qq-adapter openclaw skills install dingtalk-adapter openclaw skills install wechat-adapter openclaw skills list最后一条skills list会列出已加载的 skill 和状态,看到三个都是loaded就说明装好了。装完重启一次服务让配置生效:
openclaw restart openclaw status4. 验证请求:确认多平台消息通道真的通了
配置写完不代表通了,必须做连通性验证。分两步:先验模型入口,再验消息通道。
第一步,直接打 TaoToken 的接口,确认 Key 和地址没问题。用 curl 发一个最小请求:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{ "model": "按平台文档填写模型名", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 16 }'返回里如果有choices字段和一段内容,说明模型入口通了。如果返回 401,是 Key 错了;返回 404,多半是 base_url 或路径拼错;返回超时,检查网络和 timeout 设置。
第二步,验通道。Openclaw 提供了一个内置的自检命令,会依次向每个启用的 channel 发一条测试消息:
openclaw channel test --all正常输出类似:
[qq] send ok, latency 320ms [dingtalk] send ok, latency 410ms [wechat] send ok, latency 380ms三个都ok就说明消息通道和模型链路都通了。如果某个通道报provider not found,回去检查 config.toml 里那个段的provider拼写是不是taotoken,和 settings.json 里的 key 完全一致。
实测下来,最容易出问题的是微信个人模式的 session 目录权限,如果session_dir指向的目录不可写,通道会静默失败,日志里只有一行 warning。建议提前建好目录并给足权限:
mkdir -p ./data/wechat-session chmod 700 ./data/wechat-session5. 本篇常见错误排查
报错一:invalid api key但 Key 明明是对的。九成是 settings.json 里api_key带了多余空格,或者复制时把换行带进去了。用cat -A settings.json | grep api_key看一眼行尾有没有^M或多余空格。
报错二:connection refused到taotoken.net。先确认机器能正常访问外网,再确认 base_url 写的是https://taotoken.net/api而不是别的路径。Openclaw 会在 base_url 后面自动拼/v1/chat/completions,所以 base_url 不要自己带/v1。
报错三:skill 装了但skills list里没有。检查settings.json里skills.dir指向的目录和实际安装目录是否一致。容器部署时经常出现宿主机装了、容器里看不到的情况,因为目录没挂载进去。把 skills 目录也加进 volume 挂载即可。
报错四:钉钉回调 403。钉钉的 webhook 需要校验来源,webhook_path要和钉钉后台配置的地址完全一致,包括大小写。另外确认client_secret没填错,钉钉对 secret 校验比较严格。
报错五:三个通道只有一个能通。大概率是端口冲突。QQ 默认 18801,如果被占用,改listen_port换一个,然后openclaw restart。用ss -tlnp | grep 188看端口占用情况。
报错六:模型返回空内容。检查model字段填的模型名是否在 TaoToken 支持列表里,名字写错有时不报错但返回空。先用第 4 节的 curl 单独验一次,排除是 Openclaw 配置问题还是模型名问题。
6. 后续怎么调:统一 Key 的维护与扩展
配好之后,日常维护其实很轻。想加一个新通道,比如飞书,只需要openclaw skills install feishu-adapter,然后在 config.toml 加一个[channel.feishu]段,provider照样写taotoken,模型侧一行都不用动。这就是统一 Key 的价值:通道数量增长,模型配置不增长。
如果你要长期跑编码类或 Agent 类任务,比如让 Openclaw 在群里接需求、自动改代码、跑测试,那模型调用量会明显上升,这时候建议单独用一个 Coding Plan 的额度,和日常聊天通道分开,方便看用量。配置方式一样,只是在 settings.json 里多建一个 provider,然后在对应 channel 段里把provider指过去。
验证模型本身是否可用、想快速试不同模型效果,可以直接在模型对话页面里试,不用每次都改 Openclaw 配置。而接入相关的 Key 管理和文档,入口在 API Keys 和接入文档两处,遇到字段不确定的时候优先查文档,比猜字段快得多。
最后留一个我踩过的坑:改完 settings.json 一定要openclaw restart,Openclaw 不会热加载 provider 配置,只 reload skill 是不够的。很多人改完 Key 发现不生效,就是因为只重启了 skill 没重启运行时。养成「改配置就 restart,restart 完就 channel test」的习惯,多平台接入基本不会翻车。