news 2026/9/27 14:22:35

OpenClaw 本地 Docker 安装部署 + 自定义配置国内大模型:TaoToken 统一 Key 接入 CLI 实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenClaw 本地 Docker 安装部署 + 自定义配置国内大模型:TaoToken 统一 Key 接入 CLI 实战

1. 为什么要在本地 Docker 里跑 OpenClaw

OpenClaw 是一个把大模型能力封装成 CLI 与 Gateway 的开源项目,你可以把它理解成一个「本地 AI 助手调度台」:它自己不带模型,而是通过配置去调用外部模型服务,然后把对话、文件读写、任务执行这些能力统一暴露给命令行和网页控制台。适合谁?适合想在自己机器上折腾 Agent、又不想把配置散落一地的开发者,尤其是习惯用 Docker 管理服务的人。

我这次的目标很明确:在本地 Docker 环境里把 OpenClaw 完整跑起来,并且把模型通道换成国内可直接调用的大模型,用 TaoToken 的统一 Key 来接入,省去每个厂商单独申请、单独配 baseUrl 的麻烦。整个过程会交付三样东西:一份可复制的 docker-compose 骨架、一段 config.toml / openclaw.json 配置片段、以及一组连通性验证命令。

先说清楚一个容易踩的坑:OpenClaw 的配置目录是通过 volume 挂载到宿主机的,所以你在宿主机改配置文件,容器重启后就生效,不需要进容器 bash 里手改。这一点决定了后面「自定义配置国内大模型」到底顺不顺手。另外 Gateway 默认只监听 loopback,Docker bridge 网络下宿主机访问不到,必须改成 lan,这个在 .env 里就要定好。

下面按「前置准备 → 可复制配置 → 验证 → 排障」的顺序走,每一步都给完整命令和参数说明,你照着敲就行。

2. TaoToken 前置:统一 Key 与通道准备

TaoToken 在这里扮演的角色是「模型通道的统一入口」。你不用为每个国内大模型分别记 baseUrl、分别管 Key,而是拿一个统一 Key,通过它的 API 通道去调用后端模型。对 OpenClaw 来说,它只需要认一个 OpenAI 兼容的 baseUrl 和一个 apiKey,剩下的路由交给 TaoToken。

你需要提前准备两样东西:

第一,一个可用的 TaoToken API Key。登录官网后进入控制台,在 API Keys 页面创建一个 Key,复制保存好,后面配置里会用到。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite ,API Keys 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。

第二,确认你要用的模型 id。TaoToken 的 API 入口是 https://taotoken.net/api ,它是 OpenAI 兼容格式,所以 OpenClaw 里api字段填openai-completions即可。模型 id 按你实际要用的填,比如常见的对话模型 id,填错会直接报 model not found。

注意:baseUrl 要填到兼容路径那一层,通常是https://taotoken.net/api/v1这种形式,具体以文档为准。文档入口:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。填成根域名会 404。

如果你后面打算长期用 OpenClaw 做编码或 Agent 任务,可以顺带了解下 Coding Plan,它更适合高频调用场景:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。想先在网页里验证模型通不通,可以用模型对话页:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。

3. 可复制配置:docker-compose 骨架与 .env

这一节是全文的核心,给你可以直接抄的配置。先建目录结构,假设你在D:\openclaw下操作:

mkdir openclaw && cd openclaw mkdir config workspace

config用来挂载 OpenClaw 的配置目录,workspace是 Agent 的工作目录。然后创建.env文件:

# .env OPENCLAW_GATEWAY_TOKEN=替换成你自己生成的token OPENCLAW_CONFIG_DIR=D:/openclaw/config OPENCLAW_WORKSPACE_DIR=D:/openclaw/workspace OPENCLAW_GATEWAY_PORT=18789 OPENCLAW_GATEWAY_BIND=lan

几个参数逐个解释。OPENCLAW_GATEWAY_TOKEN是访问 Gateway 的认证密钥,Gateway 启动后会暴露 WebSocket 和 HTTP 接口,没有这个 token 任何人都能连进来,相当于你家门的钥匙,必须设置。生成方式二选一:

# Python 方式 python -c "import secrets; print(secrets.token_hex(32))" # PowerShell 方式 -join ((1..32) | ForEach-Object { '{0:x2}' -f (Get-Random -Max 256) })

OPENCLAW_CONFIG_DIR是配置文件目录,容器通过 volume 挂载它,重启后配置不丢。OPENCLAW_WORKSPACE_DIR是 Agent 读写文件、执行任务的工作目录。OPENCLAW_GATEWAY_PORT默认 18789。OPENCLAW_GATEWAY_BIND决定监听哪个网卡,loopback只有本机能访问,Docker bridge 网络下宿主机也访问不到;lan监听所有网卡,Docker 部署必须用这个。

接着是 docker-compose 骨架。如果你是从源码构建,先构建镜像:

docker build -t openclaw:local .

然后docker-compose.yml大致长这样:

services: openclaw-gateway: image: openclaw:local container_name: openclaw-gateway env_file: .env ports: - "${OPENCLAW_GATEWAY_PORT}:${OPENCLAW_GATEWAY_PORT}" volumes: - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace restart: unless-stopped openclaw-cli: image: openclaw:local env_file: .env volumes: - ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw - ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace entrypoint: ["openclaw"]

openclaw-cli这个服务是给命令行操作用的,docker compose run --rm openclaw-cli ...就是借它执行一次性命令。两个服务挂载同一份配置目录,所以 CLI 改的配置 Gateway 能读到。

初始化配置:

docker compose run --rm openclaw-cli onboard --mode local --no-install-daemon

交互过程里,模型服务商先选Skip for now,聊天平台、联网搜索、Skills、Hooks 都先跳过,把主流程跑通再说。安装 skills 要谨慎,以防投毒风险。

启动前设置访问来源:

docker compose run --rm openclaw-cli config set gateway.controlUi.allowedOrigins "[\"http://localhost:18789\"]" --strict-json docker compose up -d openclaw-gateway

访问http://localhost:18789,输入.env里的 token 登录。此时还不能进,需要后台允许设备访问:

docker compose run --rm openclaw-cli devices list docker compose run --rm openclaw-cli devices approve <设备id>

把devices list里 PendingRequest 下的字符串填到 approve 后面,就能正常登录了。

4. 自定义配置国内大模型:三种写入方式

配置目录已经挂载到宿主机,所以你可以直接在D:\openclaw\config下找到openclaw.json改,不用进容器 bash。下面三种方式任选。

方式一,交互式配置,适合还不熟的人:

docker compose run --rm openclaw-cli models auth login

它会重新走一遍模型配置界面,按提示填 baseUrl、apiKey、模型 id。

方式二,CLI 命令逐项写入,适合脚本化:

docker compose run --rm openclaw-cli config set models.providers.taotoken "{\"baseUrl\":\"https://taotoken.net/api/v1\",\"api\":\"openai-completions\",\"apiKey\":\"sk-你的key\",\"models\":[{\"id\":\"你的模型id\",\"name\":\"你的模型id\",\"reasoning\":false,\"input\":[\"text\"],\"contextWindow\":128000,\"maxTokens\":4096,\"cost\":{\"input\":0,\"output\":0,\"cacheRead\":0,\"cacheWrite\":0}}]}" --strict-json docker compose run --rm openclaw-cli models set "taotoken/你的模型id"

方式三,直接改openclaw.json,改完重启:

{ "models": { "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api/v1", "apiKey": "sk-你的key", "api": "openai-completions", "models": [ { "id": "你的模型id", "name": "你的模型id", "reasoning": false, "input": ["text"], "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 }, "contextWindow": 128000, "maxTokens": 4096 } ] } } }, "agents": { "defaults": { "model": { "primary": "taotoken/你的模型id" }, "models": { "taotoken/你的模型id": {} }, "workspace": "/home/node/.openclaw/workspace" } } }
docker compose restart openclaw-gateway

参数对照表:

字段作用注意
baseUrl模型通道地址填到 /v1 兼容层
api协议类型OpenAI 兼容填 openai-completions
apiKey统一 Key用 TaoToken 控制台创建的 Key
id模型标识必须与通道支持的 id 一致
contextWindow上下文窗口按模型实际能力填
maxTokens单次最大输出别超过模型上限

5. 验证请求与成功结果

配置完先做一次连通性验证,别急着开网页。用 CLI 发一条测试消息:

docker compose run --rm openclaw-cli models list

这条命令会列出当前已配置的 provider 和模型,确认taotoken/你的模型id在列表里。然后直接发一条对话:

docker compose run --rm openclaw-cli chat --message "用一句话说明你是什么模型"

如果返回正常文本,说明 Key、baseUrl、模型 id 三者都对上了。如果报 401,是 Key 问题;报 404,多半是 baseUrl 路径不对;报 model not found,是模型 id 写错。

再验证 Gateway 侧。浏览器打开http://localhost:18789,用 token 登录,在对话框里发一句「你好」,能收到回复就说明整条链路通了。你也可以在网页里切换模型,确认默认模型是taotoken/你的模型id。

实测下来,最容易出问题的是 baseUrl 结尾的/v1。有人填成https://taotoken.net/api,结果请求打到根路径直接 404。另一个坑是.env里OPENCLAW_GATEWAY_BIND忘了改lan,网页能打开但设备一直 pending,approve 之后还是连不上。

6. 本篇常见错排查

报错一:docker compose up后端口占用。18789 被别的服务占了。改.env里的OPENCLAW_GATEWAY_PORT,比如换成 18790,然后docker compose up -d重建。

报错二:登录后一直提示设备未授权。先devices list看有没有 PendingRequest,有就devices approve <id>。如果 approve 后还不行,检查gateway.controlUi.allowedOrigins是否设成了["http://localhost:18789"],端口要和实际访问的一致。

报错三:模型调用返回 401 Unauthorized。Key 复制时带了空格,或者用了别的平台的 Key。重新在 TaoToken 控制台生成一个,粘贴时注意首尾不要有空白字符。

报错四:返回 404 或invalid path。baseUrl 路径不对。OpenClaw 走的是 OpenAI 兼容协议,baseUrl 要指到兼容层,通常是https://taotoken.net/api/v1。改完openclaw.json记得docker compose restart openclaw-gateway。

报错五:改了配置但没生效。方式三直接改文件的话,必须重启容器。方式二用config set写入的,Gateway 会读同一份挂载目录,但保险起见也重启一次。

报错六:容器启动即退出。看日志docker compose logs openclaw-gateway。常见原因是.env里OPENCLAW_CONFIG_DIR路径不存在,或者 Windows 下路径分隔符写错。用绝对路径,正斜杠。

排障时如果怀疑是 Key 或通道问题,可以先用模型对话页单独验证 Key 是否可用:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。确认 Key 没问题再回来查 OpenClaw 配置。接入相关的细节以官方文档为准:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。

7. 后续怎么用得更顺

跑通之后,日常操作基本就三条命令:docker compose up -d openclaw-gateway启动,docker compose run --rm openclaw-cli chat ...发消息,docker compose logs -f openclaw-gateway看日志。配置改动集中在openclaw.json一个文件里,改完重启即可。

如果你要长期跑编码或 Agent 任务,建议把模型通道单独规划一下,用 Coding Plan 这类更适合高频调用的方案:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。Key 管理统一在控制台做,方便轮换和排查:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。

最后提醒一句:Skills 和 Hooks 这类扩展能力,等基础对话稳定跑通之后再逐个开,别一上来全打开,出问题不好定位。先把 Gateway、模型通道、设备授权这三件事钉死,剩下的都是增量。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 14:21:37

AI Agent 产品真正的壁垒是什么?从 OpenClaw 的 Agent Runtime 配置说起

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/27 14:21:38

3步搞定四川网站备案咨询网,搞定性能优化不踩坑

3步搞定四川网站备案咨询网,搞定性能优化不踩坑 域名买好了,服务器也租了,结果卡在备案这一步,脑子嗡嗡响。看着工信部ICP备案系统里那些术语,什么“接入服务商”、“前置审批”,是不是觉得像天书?更让人头大的是,备完案网站打开还慢,明明服务器配置不低,用户却抱怨卡顿。…

作者头像 李华
网站建设 2026/9/27 14:21:32

百度如何关键字网站域名关联实战:选对服务商避坑指南

百度如何关键字网站域名关联实战:选对服务商避坑指南 改个需求建站公司拖一周,这种经历你肯定也遇到过。明明只是调整个按钮颜色或者改个文案,客服却说要排期、要开发介入,急得人直拍大腿。这时候你才会发现,找建站公司,真的得看 哪家好…

作者头像 李华
网站建设 2026/9/27 14:21:06

南昌网站seo厂家避坑指南:3点教你做硬核对比评测

南昌网站seo厂家避坑指南:3点教你做硬核对比评测 找南昌网站seo厂家,最怕的不是价格低,而是怕被坑高价,最后钱花了,排名还是没动静。很多老板在前期沟通时,听对方吹得天花乱坠,什么“保证首页”、“包年排名”,心里直打鼓,生怕签了合同就被套牢。这时候,别光听销售嘴上说,得拿出点真东西来做 对比评测…

作者头像 李华
网站建设 2026/9/27 14:20:47

3步搞定全国域名备案查询源码下载,解决网站没人访问痛点

3步搞定全国域名备案查询源码下载,解决网站没人访问痛点 网站做好了没人访问,是不是觉得钱白花了?别急着投广告,先查一下你的域名备案状态。很多站长不知道,没备案的网站在搜索引擎眼里就是“黑户”,收录难如登天。这时候,搞一套【全国域名备案查询】的【源码下载】工具,自己搭个查询接口,不仅能让用户自助查状态…

作者头像 李华
网站建设 2026/9/27 14:20:23

万网域名预定多少钱?3步搞定企业站被黑危机

万网域名预定多少钱?3步搞定企业站被黑危机 上周凌晨两点,杭州某做外贸的张总给我打电话,声音都在抖。他说公司官网打开后全是博彩广告,后台密码也被改了。那一刻,他最关心的不是怎么修复,而是 多少钱…

作者头像 李华