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

📅 发布时间:2026/9/27 14:23:11
OpenClaw 本地 Docker 安装部署 + 自定义配置国内大模型:TaoToken 统一 Key 接入 CLI 实战
1. 为什么要在本地 Docker 里跑 OpenClawOpenClaw 是一个把大模型能力封装成 CLI 与 Gateway 的开源项目你可以把它理解成一个「本地 AI 助手调度台」它自己不带模型而是通过配置去调用外部模型服务然后把对话、文件读写、任务执行这些能力统一暴露给命令行和网页控制台。适合谁适合想在自己机器上折腾 Agent、又不想把配置散落一地的开发者尤其是习惯用 Docker 管理服务的人。我这次的目标很明确在本地 Docker 环境里把 OpenClaw 完整跑起来并且把模型通道换成国内可直接调用的大模型用 TaoToken 的统一 Key 来接入省去每个厂商单独申请、单独配 baseUrl 的麻烦。整个过程会交付三样东西一份可复制的 docker-compose 骨架、一段 config.toml / openclaw.json 配置片段、以及一组连通性验证命令。先说清楚一个容易踩的坑OpenClaw 的配置目录是通过 volume 挂载到宿主机的所以你在宿主机改配置文件容器重启后就生效不需要进容器 bash 里手改。这一点决定了后面「自定义配置国内大模型」到底顺不顺手。另外 Gateway 默认只监听 loopbackDocker 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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite API Keys 管理页在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。第二确认你要用的模型 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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。填成根域名会 404。如果你后面打算长期用 OpenClaw 做编码或 Agent 任务可以顺带了解下 Coding Plan它更适合高频调用场景https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。想先在网页里验证模型通不通可以用模型对话页https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。3. 可复制配置docker-compose 骨架与 .env这一节是全文的核心给你可以直接抄的配置。先建目录结构假设你在D:\openclaw下操作mkdir openclaw cd openclaw mkdir config workspaceconfig用来挂载 OpenClaw 的配置目录workspace是 Agent 的工作目录。然后创建.env文件# .env OPENCLAW_GATEWAY_TOKEN替换成你自己生成的token OPENCLAW_CONFIG_DIRD:/openclaw/config OPENCLAW_WORKSPACE_DIRD:/openclaw/workspace OPENCLAW_GATEWAY_PORT18789 OPENCLAW_GATEWAY_BINDlan几个参数逐个解释。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-completionsapiKey统一 Key用 TaoToken 控制台创建的 Keyid模型标识必须与通道支持的 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网页能打开但设备一直 pendingapprove 之后还是连不上。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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。确认 Key 没问题再回来查 OpenClaw 配置。接入相关的细节以官方文档为准https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。Key 管理统一在控制台做方便轮换和排查https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewrite 。最后提醒一句Skills 和 Hooks 这类扩展能力等基础对话稳定跑通之后再逐个开别一上来全打开出问题不好定位。先把 Gateway、模型通道、设备授权这三件事钉死剩下的都是增量。