1. 为什么我劝你先用 Docker 跑 OpenClaw,而不是直接装本机
OpenClaw 这个项目最近在开发者圈子里讨论度很高,中文社区习惯叫它「小龙虾」。它本质上是一个能调用系统能力、执行文件操作、联动外部工具的智能体框架,你可以把它理解成一个「住在你电脑里、能听指令干活的助手」。但正因为它的权限很大,直接装在本机风险不小——它能读写文件、调用浏览器、执行命令,一旦配置不当或者模型行为跑偏,影响的可是你真实的开发环境。
所以第一次接触 OpenClaw,我强烈建议走 Docker 路线。容器把它的活动范围限制在一个隔离环境里,就算玩坏了,删掉容器和数据卷就干净了,不会污染你的宿主机。这也是「OpenClaw Docker 安装教程」这个搜索词一直有热度的原因:大家既想尝鲜,又怕出事。
不过 Docker 路线有两个经典拦路虎。第一个是镜像拉取,OpenClaw 官方镜像在境外仓库,国内直连经常卡在Pulling fs layer或者直接超时;第二个是模型接入,OpenClaw 本身不带模型,你得给它配一个能用的 API 端点,否则装好了也是个空壳。这篇就按「拉镜像 → 起容器 → 配统一 Key → 发一次对话验证」的完整路径走一遍,每一步都给可复制的命令。
适合谁看:第一次接触 OpenClaw、机器上装了 Docker Desktop、想用最省事的方式把模型接进去的开发者。如果你连 Docker 都还没装,文末的排错部分也覆盖了 WSL 相关的常见坑。
先说清楚一个概念,避免后面混淆。OpenClaw 的容器里跑的是「框架」,它负责接收你的指令、组织上下文、调用工具;真正生成回复的是「模型」,模型通过一个兼容 OpenAI 协议的 API 地址来访问。我们要做的,就是让容器里的框架知道「去哪里找模型」。这个「去哪里」的地址和密钥,就是后面要配的核心内容。
我试过几种接法,最省心的是用一个统一的 API 网关,把不同模型的调用收敛到一个 Base URL 和一把 Key 上,这样 OpenClaw 的配置里只填一次,换模型也不用改容器。下面进入正题。
2. TaoToken 统一 Key 的前置准备与镜像加速配置
在动 Docker 之前,先把两件事准备好:一个能用的模型 API Key,以及让 Docker 能顺畅拉镜像。这两件事没搞定,后面docker run起来也是白搭。
2.1 拿到统一 Key 和 Base URL
TaoToken 的作用是把模型调用统一到一个入口。你不需要在 OpenClaw 里分别配 OpenAI、Claude、国产模型的地址,只要一个 Base URL 加一把 Key,模型 ID 在请求时指定就行。对 OpenClaw 这种要频繁切换模型的框架来说,这点很关键——它的配置文件里只需要维护一份凭证。
具体操作:打开浏览器访问官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册登录后进入控制台。在左侧找到「API Keys」菜单,点「创建新密钥」,给它起个名字比如openclaw-test,复制生成的 Key。这个 Key 只显示一次,先粘到记事本里存好。
Base URL 固定是https://taotoken.net/api,注意结尾不要带斜杠,也不要自己加/v1,OpenClaw 或 SDK 内部会拼接路径。这一点很多人踩坑:手动写成https://taotoken.net/api/v1反而会 404。
如果你还没决定用哪个模型,可以先在「模型对话」页面里试几个,看看哪个响应速度和风格合你胃口,再回到 OpenClaw 里配。模型 ID 常见的有gpt-4o、claude-3-5-sonnet这类,具体以控制台「模型列表」里显示的为准。
2.2 配置 Docker 镜像加速
国内拉 Docker Hub 镜像慢是常态。打开 Docker Desktop,点右上角齿轮图标进入设置,左侧选「Docker Engine」,你会看到一个 JSON 编辑框。把registry-mirrors字段加进去,保留原有内容,只追加这一项:
{ "registry-mirrors": [ "https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com" ] }改完点右下角「Apply & Restart」,Docker 会重启引擎。等托盘图标变绿再继续。如果你用的是阿里云个人加速地址,把上面数组换成你自己的https://xxxx.mirror.aliyuncs.com即可,效果通常更好。
注意:镜像加速只影响从 Docker Hub 拉取的镜像。如果 OpenClaw 镜像本身托管在阿里云容器镜像服务(
registry.cn-hangzhou.aliyuncs.com),那它走的是阿里云内网通道,不受这个配置影响,速度本来就快。
2.3 验证 Docker 环境
在 PowerShell 里跑一条命令确认引擎正常:
docker version能看到 Client 和 Server 两段版本信息就说明引擎在跑。如果只显示 Client 不显示 Server,多半是 Docker Desktop 没启动或者 WSL 后端卡住了,先别急着往下走,去第 5 节看排错。
3. 可复制的 docker run 配置与 OpenClaw 接入参数
环境就绪后,开始拉镜像、起容器、写配置。这一节的所有命令都可以直接复制,路径和参数我按实际跑通的版本给你。
3.1 拉取 OpenClaw 镜像
优先用国内镜像源,速度差别很明显:
docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/openclaw:latest拉完后给它打个本地短标签,后面命令写起来清爽:
docker tag registry.cn-hangzhou.aliyuncs.com/qiluo-images/openclaw:latest openclaw:latest用docker images确认能看到openclaw:latest这一行。
3.2 创建数据卷
OpenClaw 的配置和会话数据要持久化,否则每次重建容器都得重配。先建一个命名卷:
docker volume create openclaw-data这个卷会挂到容器内的/root/.openclaw,也就是 OpenClaw 读取配置的默认目录。
3.3 写入模型接入配置
关键一步来了。OpenClaw 的模型配置放在数据卷里的配置文件中。最稳妥的做法是先起一个临时容器,把配置写进去,再正式启动。先跑一条一次性命令,把 Base URL 和 Key 写进配置:
docker run --rm -v openclaw-data:/root/.openclaw openclaw:latest openclaw config set model.base_url "https://taotoken.net/api" docker run --rm -v openclaw-data:/root/.openclaw openclaw:latest openclaw config set model.api_key "sk-你的Key" docker run --rm -v openclaw-data:/root/.openclaw openclaw:latest openclaw config set model.name "gpt-4o"三件套对应关系要记牢:Base URL 填https://taotoken.net/api,Key 填你复制的那串,Model ID 填控制台里确认过的模型名。这三项缺一不可,少一个都会在请求时报错。
如果你更习惯直接编辑配置文件,也可以进容器手动改。OpenClaw 的配置通常是 TOML 或 JSON 格式,路径在/root/.openclaw/config下。用下面命令进容器看一眼:
docker run --rm -it -v openclaw-data:/root/.openclaw openclaw:latest sh进去后ls /root/.openclaw就能看到配置文件,用vi编辑即可。不过对新手来说,用config set命令更不容易写错格式。
3.4 正式启动容器
配置写好后,用完整命令启动。端口映射把宿主机 18789 对到容器 18789,数据卷挂上,重启策略设为除非手动停止否则一直拉起:
docker run -d ` --name openclaw ` --restart unless-stopped ` -p 18789:18789 ` -v openclaw-data:/root/.openclaw ` openclaw:latest跑完用docker ps看容器状态,STATUS显示Up就对了。如果显示Restarting或者秒退,用docker logs openclaw看日志,多半是配置格式问题或者端口被占用。
提示:默认网关只绑定本机,手机或平板访问不了。如果你想让局域网内其他设备也能连,进容器执行
openclaw config set gateway.bind lan,然后重启容器。个人开发机上一般用不到,先保持默认更安全。
4. 发一次对话请求验证安装成功
容器起来了不代表模型通了。这一步用一次真实请求把整条链路走通,确认 OpenClaw 能拿到模型回复。
4.1 用 curl 直接验证 API 连通性
在宿主机上先绕过 OpenClaw,直接打 TaoToken 的接口,确认 Key 和 Base URL 没问题:
curl https://taotoken.net/api/chat/completions ` -H "Authorization: Bearer sk-你的Key" ` -H "Content-Type: application/json" ` -d '{ "model": "gpt-4o", "messages": [{"role": "user", "content": "用一句话介绍你自己"}] }'正常返回是一个 JSON,choices[0].message.content里就是模型回复。如果这里就报 401,说明 Key 错了或者没带上Bearer前缀;报 404 多半是 Base URL 写错,检查是不是多加了/v1。
4.2 通过 OpenClaw 发指令
API 通了之后,进容器用 OpenClaw 自己的命令发一条:
docker exec -it openclaw openclaw chat "帮我列出当前目录下的文件"如果配置正确,你会看到 OpenClaw 先输出它准备调用的工具(比如列目录),然后返回结果。这一步能跑通,说明「框架 → 统一 Key → 模型 → 返回」整条链路是活的。
4.3 看日志确认请求走向
想确认请求确实打到了 TaoToken,可以开另一个终端跟日志:
docker logs -f openclaw发指令时观察日志里出现的请求地址,应该是https://taotoken.net/api/...。如果看到的是别的域名,说明配置没生效,回去检查model.base_url是否写对,以及写配置时用的数据卷和启动容器时挂的是不是同一个。
到这里,一次完整的安装验证就结束了。你能看到模型回复、能看到工具调用、日志里地址正确,这三条同时满足,才算真正跑通。
5. 本篇常见错误排查:401、local proxy failed 与 reading choices
装的过程中报错是常态,这一节把几个高频错误对照着讲清楚,遇到了直接对号入座。
5.1 401 Unauthorized
最常见。表现是请求返回{"error":{"message":"Invalid API key"...}}或者状态码 401。原因有三个:Key 复制时漏了字符、Key 前后带了空格、请求头里没写Bearer。排查方法:重新去控制台复制一次 Key,粘贴时注意别带上换行;用 4.1 的 curl 单独测,排除 OpenClaw 配置的干扰。如果 curl 也 401,那就是 Key 本身的问题,去控制台确认这个 Key 是否被禁用或删除。
5.2 local proxy failed 或 connection refused
这个报错通常出现在容器内请求外部 API 时。表现是 OpenClaw 日志里出现local proxy failed、dial tcp: connection refused之类。原因一般是容器网络配置问题,或者你在配置里填了一个本机地址(比如http://127.0.0.1:xxxx)——容器里的127.0.0.1指的是容器自己,不是宿主机。解决办法:Base URL 必须填公网可访问的地址,也就是https://taotoken.net/api,不要填 localhost。如果你确实需要走本机服务,得用host.docker.internal代替127.0.0.1。
5.3 reading choices 相关报错
有时候日志里会出现error reading choices或者解析响应失败。这通常不是网络问题,而是返回体格式和 OpenClaw 预期的不一致。可能原因:模型 ID 写错,导致接口返回了错误结构;或者 Base URL 少了/api路径,请求打到了错误端点。排查:先用 curl 确认返回的 JSON 里有choices字段,再检查model.name是否和控制台模型列表完全一致,大小写都别错。
5.4 容器启动即退出
docker ps -a看到状态是Exited (1)。用docker logs openclaw看最后几行,常见的是配置文件语法错误。如果你手动编辑过 TOML/JSON,一个逗号或引号写错就会导致解析失败。最省事的办法是删掉数据卷重建:
docker volume rm openclaw-data docker volume create openclaw-data然后重新执行 3.3 的三条config set命令。配置用命令写而不是手编,能避开大部分格式坑。
5.5 WSL 相关卡顿
如果你在 Windows 上用 Docker Desktop,偶尔会遇到引擎起不来、wsl --update卡住。先在 PowerShell 里跑wsl --shutdown,然后重启 Docker Desktop,多数情况能恢复。确认 WSL 版本用wsl -l -v,后端要是2。这些是 Docker 本身的环境问题,和 OpenClaw 无关,但会直接挡住安装第一步,所以单独列出来。
6. 把统一 Key 用顺之后的下一步
跑通这次安装后,你手里其实已经有了一个可复用的模式:容器隔离运行 + 统一 Key 接入模型。这个模式的价值在于,以后你想换模型、加新工具,都不用动容器本身,改配置里的 Model ID 就行。
如果你打算长期用 OpenClaw 做编码或者跑 Agent 任务,频繁地单次调用会比较费神,可以考虑用 Coding Plan 这类按周期计费的方式,把额度固定下来,适合每天都要跑几轮任务的场景。入口在控制台的订阅页面,具体选哪个档位看你的调用频率。
想继续折腾模型本身,比如对比不同模型在工具调用上的表现,可以直接在「模型对话」里试,不用每次都起容器。地址是 https://taotoken.net/api ,配合你已有的 Key 就能用。
接入过程中如果卡在某个报错上,先去「接入文档」里对照参数,文档里对 Base URL、鉴权头、模型 ID 的写法都有示例。文档入口在控制台顶部导航。实在搞不定,把docker logs openclaw的完整输出贴出来,比只描述现象更容易定位。
最后留一个实用习惯:每次改完配置,先docker restart openclaw,再用 4.2 的命令发一条最短指令验证。别攒一堆改动一起测,出问题不好定位。这个习惯能帮你省下大量排查时间。