1. 为什么要在腾讯云上跑 OpenClaw,还要接飞书
OpenClaw 是一个能自主操作浏览器、读写文件、执行命令的 AI Agent 框架,你可以把它理解成一个 7x24 小时待命的数字员工。它和传统自动化脚本最大的区别在于:你不需要写死每一步逻辑,用自然语言描述任务,它会自己拆解、执行、根据结果调整。适合谁?适合想把重复性工作(比如定时抓数据、跑 UI 回归、整理文档)交给 AI 但又不想把数据传到第三方沙箱的开发者。
我选择腾讯云轻量应用服务器来部署,原因很直接:OpenClaw 权限很高,能操作整台机器的文件系统,放在主力电脑上跑风险太大。云端部署的好处是不占本地资源、可以 7x24 小时运行,而且腾讯云有现成的 OpenClaw 镜像,省去手动装依赖的麻烦。飞书作为交互入口,是因为它的事件订阅支持长连接模式,不需要公网 IP 回调,对个人开发者非常友好。
整条链路是这样的:腾讯云轻量服务器跑 OpenClaw 核心 → 阿里云百炼 CodingPlan 提供模型推理能力 → 飞书机器人作为对话入口 → TaoToken 统一管理 API Key 和模型路由。下面我会给出可复制的 config.toml 骨架、settings.json 配置片段,以及飞书回调验证的具体动作。
2. 前置准备:TaoToken 统一 Key 与阿里云百炼 CodingPlan
在开始部署之前,先把两个关键凭证准备好:模型侧的 CodingPlan API Key 和统一网关的 TaoToken Key。
阿里云百炼 CodingPlan 是包月套餐,每 5 小时自动刷新额度,适合 OpenClaw 这种高频调用场景。购买后在控制台生成 API Key,格式通常是sk-开头的一串字符。这里注意:CodingPlan 的 Key 只能用于百炼平台,如果你后续想切换模型或者做多模型路由,就需要 TaoToken 来统一管理。
TaoToken 的作用是提供一个统一的 API 入口,你可以在一个地方管理多个模型供应商的 Key,OpenClaw 只需要配置一个 Base URL 和一个 Key 就能调用不同模型。访问 https://taotoken.net/api 获取 API Key,然后在控制台创建你的第一个 Key。建议给 OpenClaw 单独创建一个 Key,方便后续排查调用量。
拿到两个 Key 之后,在腾讯云轻量服务器控制台的「应用管理」页面,先配置模型。选择「阿里云百炼 CodingPlan」作为模型供应商,填入百炼的 API Key,点击添加并应用。如果你想让 OpenClaw 通过 TaoToken 走统一网关,就在模型配置里选择「自定义 OpenAI 兼容接口」,Base URL 填https://taotoken.net/api,Key 填 TaoToken 的 Key,Model ID 填你要用的模型名,比如qwen3-coder或glm-4.7。
这里有个细节:OpenClaw 的模型配置和通道配置是分开的。模型决定「大脑」,通道决定「嘴巴」。先把模型配好,确认能正常推理,再去配飞书通道,否则飞书那边消息进来了但模型没响应,排查起来会很乱。
3. 可复制配置:config.toml 骨架与 settings.json 片段
OpenClaw 在腾讯云镜像里的配置文件路径通常是/root/.openclaw/config.toml,如果你用的是自定义安装,路径可能是~/.config/openclaw/config.toml。下面是一个可以直接复制修改的骨架:
# /root/.openclaw/config.toml [server] host = "0.0.0.0" port = 8080 log_level = "info" [model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-your-taotoken-key" model_id = "qwen3-coder" max_tokens = 8192 temperature = 0.7 [channel.feishu] enabled = true app_id = "cli_xxxxxxxxxxxx" app_secret = "your_app_secret" verification_token = "your_verification_token" encrypt_key = "your_encrypt_key" use_long_connection = true [agent] workspace = "/root/openclaw-workspace" allowed_commands = ["ls", "cat", "grep", "curl", "python3"] max_execution_time = 300如果你更习惯用 JSON 格式的 settings.json,OpenClaw 也支持。在~/.openclaw/settings.json里写入:
{ "model": { "provider": "openai-compatible", "base_url": "https://taotoken.net/api", "api_key": "sk-your-taotoken-key", "model_id": "qwen3-coder" }, "channel": { "feishu": { "app_id": "cli_xxxxxxxxxxxx", "app_secret": "your_app_secret", "use_long_connection": true } }, "agent": { "workspace": "/root/openclaw-workspace", "max_execution_time": 300 } }注意三个关键点:Base URL 必须带https://,不要写成taotoken.net/api;Model ID 要和 TaoToken 控制台里显示的模型名完全一致,大小写敏感;飞书的use_long_connection设为true后就不需要配置公网回调地址了,这是个人开发者最省事的方案。
配置写完后,重启 OpenClaw 服务:
systemctl restart openclaw systemctl status openclaw如果状态显示active (running),说明配置加载成功。如果报错,先看/var/log/openclaw/error.log,最常见的错误是api_key invalid或model not found,前者检查 Key 是否复制完整,后者检查 Model ID 拼写。
4. 验证请求:从 curl 测试到飞书端到端联调
配置写好了不代表链路通了,必须一步步验证。先测模型侧,再测飞书侧,最后端到端。
第一步,用 curl 直接测 TaoToken 的接口是否可用:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-your-taotoken-key" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen3-coder", "messages": [{"role": "user", "content": "回复一个字:好"}], "max_tokens": 10 }'如果返回 JSON 里有choices字段且内容正常,说明模型侧通了。如果返回 401,说明 Key 有问题;如果返回model not found,说明 Model ID 不对。
第二步,测 OpenClaw 本地接口:
curl -X POST http://localhost:8080/v1/chat \ -H "Content-Type: application/json" \ -d '{"message": "你好,测试一下"}'这一步验证 OpenClaw 服务本身是否正常加载了模型配置。
第三步,飞书侧验证。在飞书开放平台确认三件事:事件订阅方式选的是「长连接」;已添加im.message.receive_v1事件;权限管理里导入了完整的 JSON 权限配置。然后发布版本,在飞书里给机器人发一条消息,比如「你好」。如果机器人回复了内容,说明链路通了。如果没回复,去 OpenClaw 日志里搜feishu关键字,看是否有event received记录。
第四步,配对。首次使用时,飞书机器人会返回一个 Pairing code,在服务器上执行:
openclaw pairing approve feishu <配对码>配对成功后,再发消息就能正常对话了。实测下来,从发消息到收到回复,延迟大概在 2-3 秒,主要取决于模型推理速度。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
部署过程中最容易踩的坑集中在几个报错上,我按出现频率排序。
401 Unauthorized:九成是 Key 的问题。先确认 TaoToken 的 Key 有没有复制完整,注意不要有多余空格。如果用的是百炼 CodingPlan 的 Key 直连,检查 Key 是否已激活、套餐是否在有效期内。还有一种情况是 Base URL 写错了,比如写成了https://taotoken.net/api/v1而实际应该是https://taotoken.net/api,多一层路径会导致鉴权失败。
local proxy failed:这个报错通常出现在 OpenClaw 尝试通过本地代理访问外部接口时。检查服务器是否有环境变量HTTP_PROXY或HTTPS_PROXY被设置,如果有就 unset 掉。另外确认服务器的 DNS 能正常解析taotoken.net,用nslookup taotoken.net测一下。
reading choices 报错:完整报错通常是error reading choices from response,意思是模型返回的 JSON 结构不符合预期。原因可能是 Model ID 填错了,比如填了一个 TaoToken 不支持的模型名,接口返回了错误信息而不是标准的 choices 结构。解决方法是先用 curl 单独测一下该 Model ID 是否可用。
OAuth 相关报错:飞书侧如果出现 OAuth 错误,检查 App ID 和 App Secret 是否匹配,以及应用是否已发布版本。未发布的应用无法接收事件。另外确认「事件与回调」里的订阅方式是长连接,如果选的是 Webhook 但没配公网地址,也会报 OAuth 验证失败。
飞书消息无响应:先看 OpenClaw 日志有没有收到事件,如果收到了但没回复,说明模型侧有问题;如果根本没收到事件,说明飞书配置有问题。分步排查比盲目改配置高效得多。
6. 长期运行建议与统一 Key 管理
部署跑通只是第一步,长期稳定运行还需要注意几件事。
第一,把 OpenClaw 配置成 systemd 服务,开机自启。腾讯云镜像通常已经配好了,但如果你是自己安装的,需要手动创建 service 文件。这样服务器重启后 OpenClaw 会自动恢复,不用手动登录去启动。
第二,用 TaoToken 统一管理 Key。当你后续想切换模型、增加新的供应商时,只需要在 TaoToken 控制台操作,OpenClaw 侧的配置不用改。比如你今天用qwen3-coder,明天想换成glm-4.7,只改 config.toml 里的model_id就行,Base URL 和 Key 都不变。访问 https://taotoken.net/api-keys 可以创建和管理多个 Key,建议给不同用途分配不同的 Key,方便追踪调用量。
第三,定期检查日志和额度。CodingPlan 每 5 小时刷新额度,如果 OpenClaw 任务比较重,可能会在刷新前耗尽。可以在 TaoToken 控制台设置用量提醒,或者用 API 查询余额。日志方面,重点关注error和timeout关键字,提前发现潜在问题。
第四,工作目录权限控制。OpenClaw 的workspace目录建议单独设置,不要直接指向/root或/,避免误操作影响系统文件。在 config.toml 里把allowed_commands限制在必要范围内,减少安全风险。
如果你需要更完整的接入文档和配置示例,可以访问 https://taotoken.net/doc 查看。模型对话调试可以用 https://taotoken.net/chat,Coding Plan 的详细说明在 https://taotoken.net/coding-plan。整套链路跑通后,你可以在飞书里直接给 OpenClaw 派任务,比如「帮我抓取某个页面的数据并整理成表格」,它会自己规划步骤并执行。