1. 为什么“养龙虾”第一步就卡在部署上
OpenClaw 是一个可以常驻运行、能挂载多种 Skill 的 AI Agent 网关,你可以把它理解成一只住在服务器里的“龙虾”:它自己不会思考,但只要你把模型 API 接上、把技能喂进去,它就能 7×24 小时帮你跑自动化任务、盯数据、做内容分发,进而产生可持续的收益。适合谁?适合想用一台便宜云主机或本地 Docker 跑通 AI Agent 变现闭环的人,尤其是做自动化内容、监控、客服分流、批量任务调度的开发者和小团队。
但真正动手时,绝大多数人卡住的不是“怎么赚钱”,而是最前面的部署环节。我见过太多人在这几个地方反复折腾:Docker 拉镜像慢到超时、容器起来了但 18789 端口访问不了、API Key 写进配置文件后模型调用返回 401、日志里冒出local proxy failed却不知道是网络还是配置问题。这些问题的共同点是——它们都不难,但每一个都能让你停摆半天。
这篇内容聚焦 OpenClaw 原生部署与变现全流程:用 Docker 拉起服务、配置统一 API Key、排查常见报错,并演示如何通过 TaoToken 的统一 Key/API 通道接入模型调用。你会拿到可复制的 Docker Compose 配置、环境变量模板和报错速查表,最后完成一次完整的部署验证动作。整条链路跑通之后,你再去接飞书、钉钉或定时任务,才是真正开始“养龙虾”赚钱的阶段。
需要先明确一个认知:OpenClaw 本身是网关和调度层,它的“智能”完全来自你接入的模型。所以部署只是上半场,模型接入的稳定性才是决定你能不能持续变现的下半场。很多人部署完发现“龙虾不动”,八成是模型通道没配好,而不是 OpenClaw 本身有问题。下面从环境准备开始,一步步把这条链路打通。
2. TaoToken 统一 Key 接入:让 OpenClaw 的模型调用不再东拼西凑
在讲具体配置之前,先说清楚为什么要用 TaoToken 来做 OpenClaw 的模型通道。OpenClaw 支持多种 provider,你可以分别填 OpenAI、Anthropic、各家兼容接口的 Key,但实际用起来会有几个麻烦:不同 Skill 可能默认走不同 provider,你得维护好几套 Key;某个 provider 限流或额度用尽时,整个 Agent 就卡住;换模型要改多处配置,容易漏。
TaoToken 提供的是统一 Key 和统一 API 通道,你只需要一个 Base URL 加一个 Key,就能在 OpenClaw 里调用多种模型。对“养龙虾”这种需要长期稳定运行、可能同时挂多个 Skill 的场景来说,统一通道的价值在于:配置只写一次,模型切换只改 Model ID,不用动 Key 和地址。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 地址是 https://taotoken.net/api ,注意 API 地址不带 UTM 参数,配置时直接填这个。
具体到 OpenClaw,你需要准备三件套:Base URL、API Key、Model ID。Base URL 填https://taotoken.net/api,Key 在控制台的 API Keys 页面生成,Model ID 根据你要用的模型填,比如claude-sonnet-4-20250514或gpt-4o这类。这三件套在后面的 Docker 环境变量和openclaw.json里都会用到,建议先记下来。
有一点要提醒:TaoToken 是合规的 API 聚合通道,不是让你去搞什么网络绕行。它的作用是帮你把多个模型的调用统一到一个入口,减少配置维护成本。你在 OpenClaw 里配置时,就当成一个标准的 OpenAI 兼容接口来对待即可。如果你还没生成 Key,先去 https://taotoken.net/api-keys 创建,生成后立刻复制保存,页面关闭后通常不再显示完整 Key。
对于长期跑 Agent 的场景,如果你发现自己调用频率很高、按 Token 计费不划算,可以了解一下 Coding Plan,它更适合高频、持续的编码和 Agent 调用场景,入口在 https://taotoken.net/coding-plan 。不过这是后话,先把基础通道跑通。
3. 可复制配置:Docker Compose + 环境变量 + openclaw.json
这一节是整篇的核心,给你可以直接复制粘贴的配置。先建目录,再写 Compose 文件,然后配环境变量,最后改 OpenClaw 的模型配置。每一步都给出完整内容,你只需要替换 Key 和 Model ID。
第一步,创建持久化目录。OpenClaw 的数据和配置要挂载出来,否则容器重建后配置全丢:
mkdir -p ~/openclaw/data ~/openclaw/config cd ~/openclaw第二步,写docker-compose.yml。相比docker run一长串参数,Compose 更好维护,也方便你后面加服务:
services: openclaw: image: openclaw/openclaw:latest container_name: openclaw restart: unless-stopped ports: - "18789:18789" volumes: - ./data:/app/data - ./config:/app/config env_file: - .env environment: - TZ=Asia/Shanghai - NODE_ENV=production第三步,写.env环境变量文件。这里就是 TaoToken 三件套的落地点,Key 不要写进 Compose 文件,避免提交到仓库时泄露:
# TaoToken 统一通道 OPENAI_BASE_URL=https://taotoken.net/api OPENAI_API_KEY=sk-你的TaoTokenKey OPENAI_MODEL=claude-sonnet-4-20250514 # OpenClaw 网关 OPENCLAW_GATEWAY_PORT=18789 OPENCLAW_LOG_LEVEL=info第四步,配置config/openclaw.json。这是 OpenClaw 的模型 provider 配置,把 TaoToken 当成一个 OpenAI 兼容 provider 来写。注意baseUrl结尾不要多加/v1,OpenClaw 会自己拼接:
{ "models": { "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "${OPENAI_API_KEY}", "api": "openai-completions", "models": [ { "id": "claude-sonnet-4-20250514", "name": "Claude Sonnet 4", "reasoning": false, "contextWindow": 200000 }, { "id": "gpt-4o", "name": "GPT-4o", "reasoning": false, "contextWindow": 128000 } ] } } }, "agents": { "defaults": { "model": { "primary": "taotoken/claude-sonnet-4-20250514" } } } }这里有几个参数要解释。api字段填openai-completions,表示走 OpenAI 兼容的对话补全接口,TaoToken 的通道支持这个格式。reasoning建议先关掉,部分模型开启思考模式后如果通道不支持对应字段,会出现回复为空的情况,这个坑后面排障章节会细说。contextWindow按你实际用的模型填,填小了会导致长对话被截断。
第五步,启动服务:
docker compose up -d docker compose logs -f openclaw看到日志里出现网关监听 18789 端口、模型 provider 加载成功的字样,就说明配置被正确读取了。如果日志报apiKey is empty,说明.env没被加载,检查env_file路径和文件是否在同一目录。
4. 验证请求:一次完整的部署验证动作
配置写完不算跑通,必须做一次真实的模型调用验证。这一步很多人跳过,结果等到接业务时才发现通道不通。验证分两层:先验证容器和网关活着,再验证模型调用能返回内容。
第一层,检查容器状态和端口:
docker compose ps curl -s http://127.0.0.1:18789/healthdocker compose ps里 STATUS 应该是Up,不是Restarting。如果一直在重启,看日志找原因。/health返回类似{"status":"ok"}就说明网关进程正常。
第二层,直接调一次模型,确认 TaoToken 通道通。OpenClaw 一般提供 CLI 或 HTTP 接口来触发一次对话,你可以用它的 gateway 接口发一条测试消息。更直接的方式是先用 curl 验证 TaoToken 通道本身:
curl -s https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer sk-你的TaoTokenKey" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "只回复两个字:通了"}] }'如果返回的 JSON 里choices[0].message.content是“通了”,说明 Key、Base URL、Model ID 三件套全部正确。这一步能排除掉 90% 的配置问题。如果这里就报 401,那是 Key 的问题;报 model not found,那是 Model ID 写错了;报连接超时,那是网络或 Base URL 的问题。
第三层,通过 OpenClaw 触发一次 Agent 对话。进入容器执行:
docker exec -it openclaw openclaw gateway status docker exec -it openclaw openclaw agent run --message "你好,报一下当前模型"如果 Agent 返回了模型信息,说明 OpenClaw 已经成功通过 TaoToken 通道调用了模型。到这一步,你的“龙虾”就算真正活了。接下来你可以去 Web UI 用 Token 登录,或者直接接飞书、钉钉的 webhook,让它开始干活。
验证通过后,建议把这次成功的配置备份一份。OpenClaw 的配置改动频繁,有个能回滚的基线很重要。你可以把docker-compose.yml、.env、openclaw.json三个文件打包存好,下次换服务器直接复用。
5. 常见报错排查:401、local proxy failed、reading choices、OAuth
这一节按真实报错来对照,你遇到哪个直接查哪个。这些报错我在部署和接入过程中基本都踩过,下面给出原因和解决动作。
报错一:401 Unauthorized / invalid api key
这是最常见的。原因通常是三种:Key 复制时带了空格或换行、.env没被容器加载、Key 本身已失效。排查顺序:先在宿主机执行docker exec openclaw env | grep OPENAI_API_KEY,确认容器里拿到的 Key 和你写的一致;再用第 4 节的 curl 直接测 TaoToken 通道,排除 Key 本身问题。如果 curl 通但 OpenClaw 不通,那就是openclaw.json里apiKey字段没写${OPENAI_API_KEY}或者写成了硬编码的旧 Key。
报错二:local proxy failed / connection refused
这个报错通常出现在 OpenClaw 尝试访问模型通道时。原因可能是 Base URL 写错、容器内 DNS 解析失败、或者你填了一个本地代理地址但容器里没有对应服务。注意,这里说的代理是程序内部的转发配置,不是让你去搞网络绕行。解决动作:确认baseUrl是https://taotoken.net/api,然后在容器内测连通性:
docker exec -it openclaw curl -s -o /dev/null -w "%{http_code}" https://taotoken.net/api返回 200 或 401 都说明网络通,返回 000 就是容器网络问题,检查 Docker 的 DNS 配置。
报错三:reading choices / cannot read property 'choices' of undefined
这个报错说明请求发出去了,但返回结构不是预期的 OpenAI 格式。常见原因是api字段填错,比如填成了anthropic-messages但通道返回的是 OpenAI 格式;或者模型开启了 reasoning 但通道不支持,返回了空结构。解决动作:把openclaw.json里的api改成openai-completions,把reasoning设为false,重启服务再试。
报错四:OAuth / token expired
如果你在 OpenClaw 里配了需要 OAuth 的 provider,或者用了带过期时间的临时凭证,会出现这个。用 TaoToken 统一 Key 的好处就是它是长期有效的 API Key,不涉及 OAuth 刷新。如果你看到 OAuth 相关报错,检查是不是openclaw.json里还残留了其他 provider 的配置,把不用的 provider 删掉,只留taotoken这一个。
报错五:EADDRINUSE 18789
端口被占用。先docker compose down,再检查宿主机有没有其他进程占 18789:
lsof -i :18789有就 kill 掉,或者改 Compose 里的端口映射,比如18790:18789。
报错六:openclaw: command not found
如果你是在宿主机直接装而不是用 Docker,重启终端后找不到命令,是 npm 全局路径没进 PATH。用npm root -g找到路径,加到~/.bashrc或~/.zshrc里。用 Docker 的话不会遇到这个问题,这也是我推荐 Docker 部署的原因之一。
把这张速查表存下来,遇到报错先对号入座,能省掉大量搜索时间。大部分问题都出在 Key、Base URL、Model ID 这三个值的某一个上,逐个用 curl 验证就能定位。
6. 从跑通到变现:让龙虾持续干活的几个实操建议
部署验证通过只是起点,真正决定能不能持续变现的是稳定性和任务设计。先说稳定性:OpenClaw 跑在 Docker 里,restart: unless-stopped已经能应对大部分崩溃重启。但你要关注的是模型通道的额度,如果某个 Model ID 突然限流,Agent 会卡住。用 TaoToken 统一通道的好处是,你可以在openclaw.json里配多个 Model ID,主模型不可用时切备用,只改primary字段就行,不用动 Key。
再说任务设计。OpenClaw 的收益来自它挂载的 Skill 和定时任务。常见的可持续方向包括:定时抓取指定信息源做摘要分发、批量处理内容做多平台适配、监控特定数据变化触发通知。这些任务的共同点是重复性高、对实时性要求不极端,正好适合 Agent 常驻运行。你要做的是把任务拆成 OpenClaw 能理解的指令,配上合适的模型。
模型选择上,长文本摘要和内容生成用上下文窗口大的模型,简单分类和路由用便宜快速的模型。在openclaw.json里配多个 Model ID,不同 Agent 用不同primary,这样成本和效果能平衡。如果你调用频率高,记得看看 Coding Plan 是否更适合你的场景。
最后提醒一点:不要把生产环境的数据库直连给 Agent,也不要把高权限凭证写进 Skill。OpenClaw 的能力越强,配置时的边界感越重要。先用只读权限跑通流程,确认稳定后再逐步放开。
到这里,从 Docker 拉起服务、TaoToken 统一 Key 接入、配置验证到报错排查,整条链路已经完整。你现在应该有一只跑起来的“龙虾”了。接下来就是给它派活,让它开始产出。