
1. 从“龙虾安装站”排队说起OpenClaw Docker 部署到底卡在哪腾讯云前阵子搞了个“龙虾安装站”活动工程师现场帮用户免费部署 OpenClaw从现场照片看排队的人真不少。有人调侃这是“AI 下乡”也有人晒完 GitHub 截图和 Docker 截图就没了下文——因为部署只是第一步真正跑起来、接上模型、让 Agent 干活才是分水岭。OpenClaw 是一个开源的 AI Agent 运行框架能让你在本地用 Docker 拉起一个带工具调用能力的智能体服务适合想自己掌控数据、折腾本地 Agent 的开发者。但现实是很多人卡在三个地方一是 Docker 镜像拉取和容器编排不熟二是 API Key 分散在多个配置文件里换个模型就要改一堆地方三是容器起来了但接口不通日志里全是 401 或连接超时。我自己也走过一遍这个流程从 GitHub 拉镜像到容器启动再到统一 Key 接入中间踩的坑基本都集中在配置分散和网络连通性上。这篇文章就按实际操作的顺序把 docker-compose 配置、统一 Key 接入、容器日志验证和接口连通性测试串一遍让你在本地环境能完整复现这条链路。核心思路是用 TaoToken 的统一 Key 替代到处散落的各家 API Key让 OpenClaw 的模型调用配置收敛到一个入口。2. TaoToken 前置准备统一 Key 与 OpenClaw 的接入逻辑在动手改配置之前先把 TaoToken 这边的准备工作做完。TaoToken 是一个模型 API 聚合服务你可以在它的控制台里生成一个统一的 API Key然后用这个 Key 去调用不同厂商的模型。对 OpenClaw 这种需要频繁切换模型的 Agent 框架来说统一 Key 的好处很明显不用在 docker-compose、环境变量、模型配置文件里分别填不同的 Key改模型只需要改一个 Model ID。具体操作路径是这样的先打开 TaoToken 官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册并登录然后进控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsole 创建 API Key。创建的时候建议给 Key 起个容易识别的名字比如 openclaw-local方便后面在容器日志里排查问题时对得上。Key 生成后先复制保存页面刷新后就看不到了。接下来确认你要用的模型 ID。OpenClaw 的配置里需要填 Model ID这个 ID 要和 TaoToken 支持的模型列表对应。你可以在模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chat 先试一下目标模型能不能正常返回确认没问题再写进 OpenClaw 配置。这一步很多人跳过结果容器起来了但模型调用报错回头查半天才发现是 Model ID 写错了。Base URL 这块要注意TaoToken 的 API 端点是 https://taotoken.net/api不要加任何多余路径。OpenClaw 的 OpenAI 兼容接口配置里Base URL 填这个就行后面它会自动拼接 /v1/chat/completions 之类的路径。如果你用的是 Claude Code 或者 Cline 这类工具配置逻辑是一样的都是 Base URL API Key Model ID 三件套。还有一个前置动作是确认本地 Docker 环境正常。跑docker --version和docker compose version确认版本建议 Docker 24 以上、Compose v2 以上。如果之前没装过先去 Docker 官网按系统装好这里不展开。另外确认本地端口没有被占用OpenClaw 默认会用一些端口后面 docker-compose 里可以改。3. 可复制配置docker-compose 与 OpenClaw 统一 Key 接入这一节是核心操作部分。先创建一个工作目录比如mkdir -p ~/openclaw-docker cd ~/openclaw-docker然后在这个目录下创建docker-compose.yml。下面这份配置是我实测能跑通的版本你可以直接复制但要注意把 API Key 和 Model ID 换成你自己的。version: 3.8 services: openclaw: image: openclaw/openclaw:latest container_name: openclaw-local restart: unless-stopped ports: - 8080:8080 environment: - OPENAI_API_KEYsk-你的TaoTokenKey - OPENAI_BASE_URLhttps://taotoken.net/api - OPENCLAW_MODELgpt-4o-mini - OPENCLAW_LOG_LEVELinfo volumes: - ./data:/app/data - ./config:/app/config healthcheck: test: [CMD, curl, -f, http://localhost:8080/health] interval: 30s timeout: 10s retries: 3这份配置里几个关键点OPENAI_API_KEY填 TaoToken 控制台生成的 KeyOPENAI_BASE_URL固定填https://taotoken.net/apiOPENCLAW_MODEL填你在模型对话页面验证过的 Model ID。端口映射8080:8080是 OpenClaw 的默认 HTTP 端口如果本地 8080 被占用了改成18080:8080这种形式。如果你用的是 Claude Code 或者 Cline 这类需要单独配置文件的工具配置结构类似。以 Claude Code 的 settings 为例路径通常在~/.claude/settings.json内容如下{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-你的TaoTokenKey, ANTHROPIC_MODEL: claude-3-5-sonnet-20241022 } }Cline 的 MCP 配置也是同样的三件套逻辑Base URL 填https://taotoken.net/apiKey 填 TaoToken 的 KeyModel ID 填对应模型。Codex 的 auth.json 里则是把OPENAI_API_KEY和OPENAI_BASE_URL写进去。不管哪个工具核心就是这三项要对齐。配置写完后在~/openclaw-docker目录下执行docker compose up -d启动容器。第一次会拉取镜像时间取决于网络情况。启动后用docker compose ps看容器状态如果是Up且健康检查通过说明容器层面没问题。如果状态是Restarting或者Exit先看日志再排查。4. 验证请求容器日志与接口连通性测试容器起来之后先看日志确认 OpenClaw 有没有正常加载配置。执行docker compose logs -f openclaw正常的话你会看到类似这样的输出openclaw-local | [INFO] Loading config from /app/config openclaw-local | [INFO] OpenAI base URL: https://taotoken.net/api openclaw-local | [INFO] Model: gpt-4o-mini openclaw-local | [INFO] Server listening on 0.0.0.0:8080 openclaw-local | [INFO] Health check endpoint ready如果日志里出现401 Unauthorized或者invalid api key说明 Key 有问题去 TaoToken 控制台确认 Key 是否复制完整、有没有被禁用。如果出现connection refused或者timeout先检查 Base URL 是不是写成了https://taotoken.net/api/带了多余斜杠或者本地网络能不能正常访问这个地址。日志没问题后做接口连通性测试。先测健康检查接口curl -s http://localhost:8080/health正常返回{status:ok}之类的 JSON。然后测模型调用接口用 OpenClaw 暴露的 API 发一个简单请求curl -s -X POST http://localhost:8080/v1/chat/completions \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [{role: user, content: 说一句你好}] }如果返回里有choices字段和模型生成的文本说明整条链路通了。这一步能过基本就说明 OpenClaw 容器、TaoToken 统一 Key、模型调用三者都正常。如果返回的是{error: ...}把错误信息复制出来对照下一节的排查表。还有一个验证动作是进容器内部测网络docker exec -it openclaw-local curl -s https://taotoken.net/api/v1/models \ -H Authorization: Bearer sk-你的TaoTokenKey这个命令能直接验证容器内部到 TaoToken API 的连通性排除宿主机网络和容器网络之间的差异。如果容器内不通但宿主机通检查 docker-compose 里有没有配额外的网络模式或者 DNS。5. 常见报错排查401、local proxy failed 与 reading choices这一节把实际部署中最容易遇到的几个报错列出来对照着排查。401 Unauthorized / invalid api key最常见的原因是 Key 复制不完整或者 Key 前后带了空格。去 TaoToken 控制台重新生成一个 Key复制后直接粘贴到 docker-compose 里不要手动输入。另外确认OPENAI_API_KEY这个环境变量名和 OpenClaw 期望的一致有些版本用的是OPENAI_KEY或者API_KEY以官方文档为准。local proxy failed / connection refused这个报错通常出现在容器启动阶段说明 OpenClaw 尝试连接 Base URL 但失败了。先确认OPENAI_BASE_URL填的是https://taotoken.net/api没有多余路径。然后在容器内执行curl -v https://taotoken.net/api看能不能通。如果容器内不通检查 docker-compose 有没有配network_mode: host或者自定义 DNS。还有一种情况是本地防火墙拦了出站请求临时关掉防火墙测试一下。reading choices 报错 / choices 字段为空这个报错说明请求发出去了但返回的 JSON 里没有choices字段。常见原因是 Model ID 写错了或者请求体格式不对。先确认OPENCLAW_MODEL填的 Model ID 在 TaoToken 模型列表里存在然后在模型对话页面用同样的 Model ID 发一条消息看能不能正常返回。如果模型对话页面正常但 OpenClaw 报错检查 OpenClaw 的请求体是不是多了或者少了字段比如有些版本要求stream: false显式声明。OAuth 相关报错如果你用的是 Claude Code 或者 Cline 这类带 OAuth 流程的工具报错里出现OAuth token expired或者invalid_grant说明工具在尝试走 OAuth 而不是 API Key。这时候要确认配置文件里用的是ANTHROPIC_API_KEY而不是 OAuth 相关的字段Base URL 也要指向 TaoToken 的 API 端点。Claude Code 的 settings.json 里如果同时存在 OAuth 配置和 API Key 配置可能会冲突建议只保留 API Key 方式。容器反复重启看日志里有没有panic或者fatal级别的错误。常见原因是挂载的./config目录里配置文件格式不对或者./data目录权限不够。先去掉 volumes 挂载测试如果容器能正常起来再逐步加回挂载排查。排查的时候有个小技巧把OPENCLAW_LOG_LEVEL改成debug日志会输出更详细的请求和响应信息定位问题更快。问题解决后记得改回info不然日志量会很大。6. 长期编码与 Agent 场景把统一 Key 用起来容器跑通、接口验证通过之后接下来就是把它用起来。如果你只是临时测试到上一节结束就够了。但如果你打算长期用 OpenClaw 跑 Agent 任务或者把 TaoToken 的统一 Key 接入到日常编码工具里有几个地方可以优化。第一是把 docker-compose 里的 Key 抽到.env文件里不要硬编码在 YAML 里。在~/openclaw-docker下创建.env文件内容写TAOTOKEN_API_KEYsk-你的Key然后 docker-compose 里改成- OPENAI_API_KEY${TAOTOKEN_API_KEY}。这样 Key 不会进版本控制换 Key 也不用改 compose 文件。第二是如果你同时用 Claude Code、Cline、Codex 这些工具可以把它们的 Base URL 都指向https://taotoken.net/apiKey 用同一个 TaoToken KeyModel ID 按工具要求填。这样你只需要在 TaoToken 控制台管理一个 Key不用每个工具单独申请。Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_plan 有长期编码场景的套餐说明适合高频调用的用户。第三是 OpenClaw 的 Agent 任务如果涉及大量模型调用建议在 TaoToken 控制台设置用量提醒避免像有些用户那样几小时扣掉几百块还不知道。控制台的用量统计页面能看到每个 Key 的调用量和费用定期看一下。最后说一个实际经验OpenClaw 的 Docker 部署本身不复杂复杂的是模型调用的配置管理。用统一 Key 把 Base URL、API Key、Model ID 收敛到一处后面换模型、加工具、扩容器都省事。我试过在三个不同工具里分别配 Key改一次模型要改三个地方后来全部换成 TaoToken 统一 Key改一个 Model ID 就完事。如果你也在折腾本地 Agent建议一开始就把这个结构定好后面省很多重复劳动。