1. 为什么要在单台 Lighthouse 上跑 OpenClaw 全栈工作流
OpenClaw 是 2026 年开源 AI Agent 框架里热度最高的一个,GitHub Star 已经突破 31 万。它能做什么?简单说,它把「消息通道 + 大模型 + 工具调用 + 定时任务」串成一条流水线,你对着聊天窗口说一句话,背后可以触发模型推理、文件读写、浏览器操作、邮件发送。适合谁?适合手里有一台闲置云服务器、想把日常重复劳动交给 Agent 的开发者,也适合想低成本验证 AI 工作流的产品同学。
但网上大多数教程停在「安装完成」这一步。装完之后怎么和腾讯云生态打通、怎么把 QClaw Bot 和 LKEAP 接进来、怎么让整条链路稳定跑两个月,几乎没人写。我手里正好有一台腾讯云 Lighthouse 轻量应用服务器,2 核 2G、50G SSD、Ubuntu 24.04,就用它把 OpenClaw 全栈工作流跑了起来:OpenClaw 做中枢,QClaw Bot 做 IM 入口,LKEAP 做低延迟模型源,再挂上 QQ Bot、WebHook、cron 定时任务,支撑 20 多个站点和 10 多个后端服务。
这篇文章交付的是可复制路径:Lighthouse 初始化脚本、OpenClaw 配置片段、QClaw Bot 接入命令、LKEAP 挂载 JSON、端到端验证动作,以及我踩过的真实报错。你照着做,能在自己的实例上复现从环境准备到工作流跑通的全过程。
先说硬件账。2G 内存跑 Node.js Gateway + MySQL + Nginx 刚好够,50G SSD 放日志、配置和浏览器缓存也没问题。两个月下来的真实占用:Gateway 进程约 777MB(Node.js v22.22.1),Chromium 实例约 150MB(Playwright,7 个子进程),MySQL 约 50MB,Nginx + PHP-FPM 约 30MB,可用内存还剩 469Mi。这个数字说明一件事:单台 Lighthouse 撑 AI 全栈工作流,不是勉强,是够用。
架构上分三层。底层是腾讯云 Lighthouse 实例,提供计算和网络;中间是 OpenClaw Gateway,监听 20071 端口,做 Token 认证和消息路由;上层是通道和模型,QClaw Bot 接腾讯 IM,QQ Bot 接 QQ 开放平台,LKEAP 走腾讯云内网提供模型推理,DeepSeek 和豆包做兜底。整条链路里,QClaw 的消息通过 Gateway 路由到 LKEAP 模型,全程在腾讯云体系内,延迟极低。
2. TaoToken 前置:模型接入与 Key 管理
在把 OpenClaw 跑起来之前,得先解决模型从哪来的问题。OpenClaw 本身不生产模型,它是个调度中枢,需要你给它配模型源。我试过几种方案,最后收敛成「主力 + 备选 + 低延迟」三引擎并行。
这里要提一个很多教程忽略的环节:模型 API 的 Key 管理和统一接入。如果你同时用多个模型源,每个源一套 Key、一套 Base URL、一套模型 ID,配置散落在不同文件里,排查问题时非常痛苦。我的做法是用 TaoToken 做统一接入层,把模型对话、Coding Plan、API Key 管理集中在一个控制台里。
TaoToken 官网是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。它的定位是模型接入与 Key 管理平台,不是替代编辑器,也不是灰色中转。你可以把它理解成一个「模型网关」:上游接多个模型源,下游给你的应用一个统一的 Base URL 和 Key。
具体怎么用?先在控制台创建 API Key,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 。创建完 Key 之后,在 OpenClaw 的模型配置里把 Base URL 指向 TaoToken 的 API 地址,模型 ID 填你实际要调用的模型。这样 OpenClaw 只需要认一个入口,后面换模型、加模型都不用改 OpenClaw 的配置。
如果你主要做长期编码或者 Agent 类任务,可以看 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。它适合需要持续调用模型、对成本敏感的场景。如果只是想先验证模型能不能通,用模型对话页面最快,地址是 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite ,直接在网页里发一条消息,看返回是否正常。
API Key 的管理页面在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite ,接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。我建议先把文档过一遍,特别是 Base URL 和 Model ID 的对应关系,后面配 OpenClaw 的时候直接抄。
这里有个关键点:OpenClaw 的模型配置支持 OpenAI 兼容格式,所以 TaoToken 的 API 可以直接作为openai-completions类型的源接进去。你不需要改 OpenClaw 的代码,只需要在配置文件里加一段 JSON。这也是我选 TaoToken 做统一接入的原因——它不绑定特定框架,OpenClaw、Cline、Claude Code 都能用同一套 Key。
配好 Key 之后,先别急着接 OpenClaw,用 curl 验证一下模型通不通。这一步能帮你排除掉 80% 的「连不上」问题。验证命令在下一节给。
3. 可复制配置:Lighthouse 初始化 + OpenClaw + QClaw Bot + LKEAP
这一节是全文的核心,所有配置都可以直接抄。我按「系统初始化 → OpenClaw 安装 → 模型配置 → QClaw Bot 接入 → LKEAP 挂载 → Nginx 反代」的顺序来。
3.1 Lighthouse 初始化脚本
拿到 Lighthouse 实例后,第一件事是更新系统、装基础依赖、配 swap。2G 内存的机器,swap 是保命的东西。
#!/bin/bash # Lighthouse 初始化脚本 set -e # 1. 更新系统 apt update && apt upgrade -y # 2. 装基础依赖 apt install -y curl wget git build-essential nginx mysql-server \ iptables-persistent fail2ban # 3. 配 swap(2G 内存必做) fallocate -l 4G /swapfile chmod 600 /swapfile mkswap /swapfile swapon /swapfile echo '/swapfile none swap sw 0 0' >> /etc/fstab # 4. 验证 free -h df -h /跑完这个脚本,你的 Lighthouse 就有了 Node.js 编译环境、Nginx、MySQL、防火墙和 fail2ban。swap 我给了 4G,实际用下来峰值到过 9.9G 扩展交换分区,但日常 4G 够。
3.2 安装 OpenClaw
两种方式,我推荐第二种。
方式一是一键脚本:
curl -fsSL https://get.openclaw.ai | sh优点是自动处理依赖和 systemd 服务,缺点是路径不可控,出问题不好排查。
方式二是 pnpm 全局安装,我实际用的就是这个:
npm install -g pnpm pnpm add -g openclaw openclaw --version输出应该是OpenClaw 2026.6.1 (2e08f0f)。版本管理方便,升级回滚简单。注意装完后需要手动配 Gateway 自启动,这个后面讲。
3.3 OpenClaw 模型配置片段
OpenClaw 的配置文件在~/.openclaw/openclaw.json。模型部分我配了三个源,下面是可直接复制的 JSON 片段:
{ "models": { "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "api": "openai-completions", "apiKey": "sk-你的TaoTokenKey", "models": [ { "id": "deepseek-v4-pro", "name": "DeepSeek V4 Pro" }, { "id": "deepseek-v4-flash", "name": "DeepSeek V4 Flash" } ] }, "qcloudlkeap": { "baseUrl": "https://api.lkeap.cloud.tencent.com/v1", "api": "openai-completions", "apiKey": "你的LKEAPKey", "models": [ { "id": "deepseek-v3.2", "name": "DeepSeek V3.2" }, { "id": "deepseek-r1-0528", "name": "DeepSeek R1 0528" } ] }, "doubao": { "baseUrl": "https://ark.cn-beijing.volces.com/api/v3", "api": "openai-completions", "apiKey": "你的豆包Key", "models": [ { "id": "doubao-seed-2-0-pro", "name": "Doubao Seed 2.0 Pro" }, { "id": "doubao-seed-code-preview", "name": "Doubao Seed Code" } ] } } } }注意baseUrl和api两个字段必须匹配。TaoToken 和 LKEAP 都是 OpenAI 兼容格式,所以api填openai-completions。如果你用的是 Claude Code 或者 Anthropic 格式的源,api要改成对应的值,具体看接入文档。
3.4 QClaw Bot 接入
QClaw Bot 是腾讯出品的 IM 即时通信 AI 助手插件,接入体验是鹅厂级别的开箱即用。一条命令完成安装、配置、注册:
bash <(curl -fsSL https://cdn.qclaw.qq.com/qclaw_miniapp/qclaw/install.sh) \ --bot-token "appId:appSecret"appId和appSecret从 QClaw 开放平台拿。对比其他通道:钉钉需要开放平台创建应用、配置回调、验证 Token;微信需要公众号后台多步操作。QClaw 这条命令下去,基本就完事了。
QClaw Bot 的核心能力包括:私聊流式回复(WebSocket 长连接,打字机效果)、消息自动合并(短时间多条消息合并再发给 AI,省 token)、媒体消息收发(图片/语音/视频/文件)、定时提醒(自然语言创建,5m/1h30m/2d/cron)、技能管理(安装/查看/删除 AI 技能)。
3.5 LKEAP 挂载
LKEAP 是腾讯云的模型 API 平台,走腾讯云内网。如果你 Lighthouse 和 LKEAP 在同一区域,延迟几乎可以忽略。实测对比:
| 模型源 | 延迟 | 说明 |
|---|---|---|
| LKEAP(腾讯云内网) | < 5ms | 同区域最佳 |
| DeepSeek 官方 API | 30~50ms | 公网 |
| 豆包(火山引擎) | 15~25ms | 国内公网 |
LKEAP 的配置已经在 3.3 的 JSON 里了,baseUrl是https://api.lkeap.cloud.tencent.com/v1。挂载完成后,QClaw 通道的消息通过 OpenClaw Gateway 路由到 LKEAP 模型,整条链路都在腾讯云体系内。
3.6 Nginx 反代配置
OpenClaw Gateway 监听 20071 端口,用 Nginx 做反代,解决端口限制、SSL、安全隔离三合一:
server { listen 80; server_name openclaw.example.com; location / { proxy_pass http://127.0.0.1:20071; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }Upgrade和Connection两个头是 WebSocket 长连接必须的,少了 QClaw 的流式回复会断。
4. 验证请求与成功结果
配置写完,必须验证。我按「模型通 → Gateway 通 → QClaw 通 → 端到端通」四步来。
4.1 验证模型 API
先用 curl 直接打 TaoToken 的 API,确认 Key 和 Base URL 没问题:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-v4-flash", "messages": [{"role": "user", "content": "回复 OK"}] }'正常返回里会有choices[0].message.content,内容是OK。如果返回 401,说明 Key 错了;如果返回model not found,说明模型 ID 填错了。
4.2 验证 OpenClaw Gateway
openclaw status openclaw doctoropenclaw status会列出当前活跃的 Agent、会话、通道。openclaw doctor会检查配置文件和依赖,有问题会提示--fix。
4.3 验证 QClaw Bot
在 QClaw 私聊窗口发一条消息:
我: 帮我查一下现在服务器内存占用 QClaw: [流式回复] 当前内存占用...如果收到流式回复,说明 QClaw → Gateway → 模型 → 回复这条链路通了。
4.4 验证定时任务
通过 QClaw Bot 用自然语言创建定时任务:
我: 每天下午 6 点发邮件汇报系统状态 QClaw: 已创建定时任务:每天 18:00 发送邮件汇报然后查看任务列表:
我: 查看我的定时任务 QClaw: 当前定时任务: 每天 18:00 — 发送邮件汇报 每周日 3:00 — 清理日志 ...4.5 验证成功结果
跑通后,openclaw status的输出应该类似:
Active Agents: 2 Active Sessions: 13 Scheduled Tasks: 6 Channels: 8两个月运行下来的真实数据:活跃 Agent 2 个,活跃会话 13 个,定时任务 6 个,消息通道 8 个,在线站点 20+ 个,后端服务 10+ 个,Cache 命中率 47%~99%(QClaw 最高),端口从 22 个缩减到 4 个。
5. 本篇常见错排查
这一节列我实际踩过的报错,对照着排查。
5.1 401 Unauthorized
报错:401 Unauthorized或invalid api key。
原因:Key 错了、Key 过期、或者 Base URL 和 Key 不匹配。如果你用 TaoToken 的 Key 去打 LKEAP 的地址,就会 401。
排查:先用 4.1 的 curl 命令单独验证 Key。确认 Key 对应的 Base URL 是https://taotoken.net/api,不是别的。
5.2 local proxy failed
报错:local proxy failed或connection refused。
原因:OpenClaw Gateway 没起来,或者 Nginx 反代配错了。
排查:
systemctl --user status openclaw-gateway ss -tlnp | grep 20071如果 Gateway 没起来,先systemctl --user start openclaw-gateway。如果端口没监听,检查~/.openclaw/openclaw.json里的端口配置。
5.3 reading choices 报错
报错:error reading choices或unexpected response format。
原因:模型返回的 JSON 格式和 OpenClaw 预期的不一致。常见于api字段填错,比如把openai-completions填成了anthropic。
排查:确认api字段和模型源匹配。TaoToken、LKEAP、豆包都是openai-completions。
5.4 OAuth 相关报错
报错:OAuth token expired或refresh token failed。
原因:如果你用 Claude Code 或者 Anthropic 的 OAuth 接入,token 会过期。
排查:重新走一遍 OAuth 授权流程。如果用 TaoToken 的 API Key 模式,不会有这个问题。
5.5 CC Switch / Cline MCP / Codex auth.json 三件套
如果你用 CC Switch、Cline MCP 或者 Codex,配置里必须写全三件套:Base URL、Key、Model ID。少一个都会报错。
以 Codex 的auth.json为例:
{ "base_url": "https://taotoken.net/api", "api_key": "sk-你的TaoTokenKey", "model": "deepseek-v4-flash" }Cline MCP 的配置类似,在 MCP 设置里填这三个字段。CC Switch 也是。
5.6 Nginx location 优先级
报错:前端请求被当成 API 发到后端。
原因:Nginx location 匹配优先级搞错了。优先级从高到低是:=精确 >^~前缀(禁止正则)>~正则 > 普通前缀。
# 被正则 ~ .php$ 抢先匹配 location /sub-path/ { ... } # 用 ^~ 禁止正则覆盖 location ^~ /sub-path/ { ... }5.7 内存碎片
报错:Gateway 跑几天后内存涨到 1G+,响应变慢。
原因:Node.js 内存碎片。
排查:加一个每周重启的 cron:
0 3 * * 0 openclaw gateway restart5.8 飞书多账号
报错:channels.lightclawbot: accounts.default is missing。
原因:飞书多账号配置里没指定默认账号。
排查:在accounts里加default字段。
5.9 SMTP 被封
报错:邮件发送失败,SMTP 返回 550。
原因:短时间内多次测试邮件,被邮箱服务商封了。
排查:换腾讯企业邮(smtp.qcloudmail.com:465),稳定很多。
5.10 插件 TS 未编译
报错:插件加载失败,提示 TS 文件未编译。
排查:
openclaw doctor --fix会自动清理过期配置和未编译的插件。
6. 长期编码与 Agent 场景的 CTA
跑通之后,你可能会想把这套工作流用在长期编码或者 Agent 任务上。这里给几个方向。
如果你主要做长期编码,比如让 Agent 持续帮你写代码、审查 PR、跑测试,建议看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。它适合需要持续调用模型、对成本敏感的场景。
如果你还在验证阶段,想先确认模型能不能通,用模型对话页面最快:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。直接在网页里发消息,看返回。
如果你要管理多个 Key、多个模型源,API Keys 页面在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,配 OpenClaw 之前先过一遍。
最后说几个我实际用下来的经验。第一,QClaw Bot + LKEAP 是鹅厂生态的最优入口,安装体验丝滑,延迟极低,日常高频使用。第二,多模型兜底比单模型稳太多,DeepSeek Pro 主力 + Flash 日常 + LKEAP 高频 + 豆包备选,任何一个挂了都不影响。第三,Nginx 反代是必需品,解决端口限制、SSL、安全隔离三合一。第四,安全左移要制度化,上线即审计,端口/CORS/鉴权一条龙。第五,cron + Agent 是最好的自动化搭子,自然语言设任务,每天自动执行。
一台 2G 内存的 Lighthouse + 开源 OpenClaw + 鹅厂生态产品,一个人也能撑起一支技术团队。OpenClaw 版本 2026.6.1,部署于腾讯云 Lighthouse(2C2G,Ubuntu 24.04),QClaw Bot v1.0.14。