
1. 先搞清楚 openclaw、QQBOT、LMSTUDIO 三者在配置文件里的关系openclaw 是一个把本地模型、云端模型、聊天渠道串起来的 Agent 运行框架QQBOT 是它的一个渠道插件LMSTUDIO 则是跑在你自己机器上的本地推理服务。很多人第一次配的时候会把三者混在一起写结果启动后要么 QQBOT 不回消息要么 LMSTUDIO 明明开着却报连接超时。核心原因就一个渠道、模型、网关这三块在 config.toml 里是分开的各管各的。这篇聚焦的是配置文件怎么组织。我会给你一份可以直接抄的 config.toml 骨架把 QQBOT 渠道、LMSTUDIO 本地模型、以及通过 TaoToken 统一 Key 走 API 通道这三件事拆开讲清楚最后给一套启动后的连通性验证动作。适合已经在本地跑起 LMSTUDIO、手里有 QQBOT 应用凭证、想让 openclaw 同时吃本地模型和云端模型的人。先说结论性的结构channels.qqbot负责消息进出models.providers负责模型来源gateway负责本地控制面plugins负责插件装载。TaoToken 在这里的角色是统一 Key 和 API 通道——你不需要给每个云端模型单独配一套鉴权用一个 Key 走同一个 baseUrl 就能切换模型。官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。2. TaoToken 前置统一 Key 与 API 通道准备在写 config.toml 之前先把 TaoToken 这边的两样东西拿到手API Key和baseUrl。API Key 在控制台的 API Keys 页面创建地址是 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 。创建时给它起个能认出来的名字比如openclaw-qqbot方便后面在多个项目里区分。baseUrl 统一用https://taotoken.net/api注意这个地址后面不加 UTM 参数它是给程序调用的加了反而可能被当成非法路径。协议上它兼容 OpenAI 的chat/completions格式所以 openclaw 里 provider 的api字段填openai-completions就能对接。这里有个容易踩的点TaoToken 的 Key 是统一 Key意味着你配一个 provider 就能在里面挂多个模型 id不用为每个模型建一个 provider。这跟 LMSTUDIO 那种本地单模型服务的思路不一样后面配置里会体现出来。注意API Key 属于敏感凭证不要写进会提交到公开仓库的文件里。本地调试可以用环境变量注入或者至少把 config.toml 加进 .gitignore。如果你还想在写配置前先确认某个模型 id 能不能调通可以直接在模型对话页面手动发一条消息试试地址是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。确认能出结果了再往 config.toml 里写能省掉一轮排查。3. 可复制的 config.toml 骨架下面这份骨架把 QQBOT 渠道、LMSTUDIO 本地 provider、TaoToken 云端 provider 三块都放进去了。字段名和层级按 openclaw 的约定来你可以直接复制后改成本机的值。# openclaw config.toml 骨架 # 本地 LMSTUDIO TaoToken 统一 Key QQBOT 渠道 [meta] lastTouchedVersion 2026.4.1 [auth] # TaoToken 统一 Key 走环境变量注入避免明文落盘 # 在启动前 export TAOTOKEN_API_KEYsk-xxxx defaultProfile taotoken:default [auth.profiles.taotoken:default] provider taotoken mode api_key apiKeyEnv TAOTOKEN_API_KEY [models] mode merge # ---- 本地 LMSTUDIO ---- [models.providers.local-model] baseUrl http://127.0.0.1:1234/v1 apiKey lmstudio api openai-completions [[models.providers.local-model.models]] id gemma-4-e4b name gemma-4-e4b api openai-completions reasoning false input [text] contextWindow 131072 maxTokens 10000 [models.providers.local-model.models.cost] input 0 output 0 cacheRead 0 cacheWrite 0 # ---- TaoToken 云端统一通道 ---- [models.providers.taotoken] baseUrl https://taotoken.net/api apiKeyEnv TAOTOKEN_API_KEY api openai-completions [[models.providers.taotoken.models]] id claude-sonnet-4-5 name claude-sonnet-4-5 api openai-completions reasoning true input [text] contextWindow 200000 maxTokens 8192 [agents.defaults] workspace C:\\Users\\Administrator\\.openclaw\\workspace [agents.defaults.model] primary local-model/gemma-4-e4b [agents.defaults.models.local-model/gemma-4-e4b] alias Local LLM [agents.defaults.models.taotoken/claude-sonnet-4-5] alias Cloud LLM [agents.defaults.compaction] mode safeguard [tools] profile coding [tools.web.search] enabled true provider kimi [commands] native auto nativeSkills auto restart true ownerDisplay raw [session] dmScope per-channel-peer # ---- QQBOT 渠道 ---- [channels.qqbot] enabled true appId 你的AppID clientSecret 你的ClientSecret markdownSupport true allowFrom [*] [gateway] port 18789 mode local bind loopback [gateway.auth] mode token token 换成你自己的随机串 [gateway.tailscale] mode off resetOnExit false [gateway.nodes] denyCommands [ camera.snap, camera.clip, screen.record, contacts.add, calendar.add, reminders.add, sms.send ] [plugins.entries.qqbot] enabled false [plugins.entries.openclaw-qqbot] enabled true [plugins.installs.openclaw-qqbot] source npm spec tencent-connect/openclaw-qqbot version 1.6.7几个关键点解释一下。models.mode merge表示本地和云端 provider 合并进同一个模型池agent 可以按provider/model的形式引用。auth.profiles里用apiKeyEnv而不是直接写apiKey是为了让 TaoToken 的 Key 从环境变量读避免明文。QQBOT 那块plugins.entries.qqbot.enabled false同时openclaw-qqbot.enabled true是因为旧的内置 qqbot 入口和新插件会冲突只留插件那个。LMSTUDIO 的 baseUrl 我写的是http://127.0.0.1:1234/v1这是 LMSTUDIO 默认端口。如果你改过端口去 LMSTUDIO 的 Developer 面板看实际值。注意别写成局域网 IP 又忘了开监听本地回环最稳。4. 启动与连通性验证配置写完先别急着开 QQBOT。分三步验证每步都能独立定位问题。第一步验证 LMSTUDIO 本身活着。在浏览器或 curl 里打它的模型列表接口curl http://127.0.0.1:1234/v1/models正常会返回一个 JSON里面能看到你加载的模型 id比如gemma-4-e4b。如果这里就报连接拒绝说明 LMSTUDIO 没启动或者端口不对跟 openclaw 无关先把这步弄通。第二步验证 TaoToken 通道。用你的 Key 发一条最小请求curl https://taotoken.net/api/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: ping}] }返回里有choices字段就说明 Key 和通道都正常。如果返回 401检查环境变量有没有 export 成功返回 404 一般是模型 id 写错了去模型对话页面核对一下。第三步启动 openclaw 并看网关状态。启动前确认环境变量已注入export TAOTOKEN_API_KEYsk-你的key openclaw gateway start然后用网关的 token 查健康状态curl http://127.0.0.1:18789/health \ -H Authorization: Bearer 你的gateway token返回ok或类似状态就说明网关起来了。接着看 QQBOT 插件有没有连上日志里会打印渠道注册信息。这时候去 QQ 里给机器人发一条消息如果 agent 用的是local-model/gemma-4-e4b回复会走本地 LMSTUDIO把 primary 改成taotoken/claude-sonnet-4-5重启回复就走云端通道。实测下来最容易卡住的是 QQBOT 的 appId 和 clientSecret 填错表现是网关起来了但渠道一直重连。这时候看 openclaw 的日志会明确提示鉴权失败对着 QQ 开放平台的凭证重新复制一遍就行。5. 本篇常见错排查报错一provider not found: taotoken。说明models.providers.taotoken这段没被解析到常见原因是 TOML 层级写错比如把[models.providers.taotoken]写成了[models.provider.taotoken]。TOML 对表名很敏感少个 s 就找不到。报错二LMSTUDIO 返回model not found。config 里的模型 id 必须和 LMSTUDIO 实际加载的 id 完全一致大小写也要对。你可以在 LMSTUDIO 界面复制模型名别手打。报错三QQBOT 渠道 enabled 但收不到消息。先确认plugins.entries.openclaw-qqbot.enabled true再确认channels.qqbot.allowFrom没有把你的账号挡掉。[*]是放行所有调试阶段先用这个。报错四TaoToken 请求 401。九成是环境变量没生效。apiKeyEnv读的是进程启动时的环境变量如果你在另一个终端 export 的当前终端看不到。用echo $TAOTOKEN_API_KEY确认一下再启动。报错五网关端口被占。gateway.port默认 18789如果被别的进程占了启动会失败。换个端口同时记得改验证命令里的端口号。提示排查时把 openclaw 日志级别调高渠道和 provider 的初始化信息都会打出来比猜快得多。6. 后续怎么扩展这套配置这套骨架跑通之后扩展方向很直接。想加云端模型就在models.providers.taotoken.models数组里追加一个[[...]]块换个 id 就行Key 和 baseUrl 不用动这就是统一 Key 的好处。想加第二个本地模型在 LMSTUDIO 里加载后同样往local-model.models里加一项。如果你打算长期跑编码类 Agent或者要让 QQBOT 承担比较重的任务建议了解一下 Coding Plan地址是 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 它在长会话和工具调用场景下的配额更合适。接入细节和字段说明可以对照接入文档 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 核对文档里对 provider 字段有完整列表。最后留一个我自己的习惯每次改完 config.toml先跑一遍openclaw config validate如果你的版本支持再启动网关。配置文件这种一次性写对很难验证命令能帮你把语法错误挡在启动之前比启动后看一堆报错省事。