
1. Windows 上跑 OpenClaw为什么我劝你别裸装OpenClaw 这个项目最近在技术圈里热度很高很多人管它叫“大龙虾”因为它能做的事情确实多设备配对、网关转发、本地服务编排一套跑起来之后你可以在浏览器里直接管理各种接入的设备。但问题也恰恰出在这里——功能越强环境依赖就越重尤其是在 Windows 上。我见过太多人卡在第一步Node.js 版本不对、npm 全局安装权限报错、WSL 里跑了一半发现端口映射不通、手动审批配对点到手酸。更麻烦的是OpenClaw 在运行过程中会涉及大量底层文件操作如果你直接在宿主机或者 WSL 里裸跑一旦配置文件写错或者程序出现异常极端情况下可能影响到系统关键目录。这不是危言耸听而是权限模型决定的。所以这篇内容的核心思路很明确用 Docker 把 OpenClaw 关进一个隔离的“小黑盒”里。容器内部随便折腾宿主机 Windows 毫发无伤。同时我会给你一套可复制的 Dockerfile 和 Shell 启动命令把 Node.js 依赖检查、容器运行验证、自动审批脚本全部串起来。零基础也能跟着做不需要你懂太多 Linux 命令复制粘贴就能跑通。适合谁看如果你用的是 Windows 10 或 Windows 11装了 Docker Desktop想快速把 OpenClaw 大龙虾环境跑起来又不想污染本机环境那这篇就是为你写的。下面从环境准备开始一步步来。2. 前置准备TaoToken 与 Docker 环境确认在正式构建容器之前有两件事需要先确认好。第一是模型接入侧的配置第二是本机 Docker 和 Node.js 的基础状态。这两块理顺了后面基本不会卡壳。2.1 TaoToken 侧的准备OpenClaw 本身是一个网关和编排层它需要对接模型服务才能真正跑起来。我实测下来用 TaoToken 的 API 接入比较顺手因为它兼容常见的 OpenAI 风格接口配置项少不需要折腾太多额外参数。你需要先去 TaoToken 官网注册并创建一个 API Key。地址是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content注册完成后进入控制台创建密钥。控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite创建好的 Key 先复制到记事本里后面写openclaw.json配置文件的时候要用。API 的基础地址是https://taotoken.net/api注意这个地址后面不加任何 UTM 参数直接用在配置文件里就行。如果你对模型对话效果想先做个快速验证可以打开模型对话页面试一句https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite2.2 Windows 侧 Docker 与 Node.js 检查Docker Desktop 安装完成后打开 PowerShell先确认 Docker 引擎是否正常运行docker version如果能看到 Client 和 Server 两段信息说明 Docker 已经就绪。如果只显示 Client 没有 Server大概率是 Docker Desktop 还没启动去开始菜单里点一下图标等托盘图标变绿再试。接着检查 Node.js。虽然我们最终是在容器里跑 OpenClaw但宿主机上有一个可用的 Node.js 环境会方便你做一些本地调试和脚本验证。推荐 Node.js 22 或以上node -v npm -v如果版本低于 18建议去 Node.js 官网下载 LTS 版本覆盖安装。安装完后重新打开 PowerShell再执行一次node -v确认。还有一个关键点WSL2 是否启用。Docker Desktop 在 Windows 上默认依赖 WSL2 后端。你可以在 PowerShell 里执行wsl --status如果提示 WSL 未安装执行wsl --install然后重启电脑。这一步不做的话Docker 容器跑不起来。3. 可复制配置Dockerfile、openclaw.json 与自动审批脚本这一章是整篇的核心。我会把三个文件的内容完整给出来你只需要在本地建一个工作目录比如D:\openclaw-docker然后把文件放进去。3.1 目录结构先规划好文件布局避免后面 COPY 路径写错D:\openclaw-docker\ ├── Dockerfile ├── openclaw.json └── auto-approve.sh三个文件缺一不可。下面逐个说明。3.2 openclaw.json 配置文件这个文件是 OpenClaw 的核心配置预置好之后可以跳过初始化交互避免很多疑难杂症。内容如下你需要把sk-你的TaoToken密钥替换成自己在控制台创建的真实 Key{ gateway: { port: 18789, host: 0.0.0.0 }, model: { provider: openai-compatible, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, modelName: gpt-4o-mini }, pairing: { autoApprove: true, pollInterval: 5 }, logging: { level: info } }几个参数说明一下。gateway.port是容器对外暴露的端口默认 18789你可以改成别的但后面docker run -p的时候要对应上。model.baseUrl固定填 TaoToken 的 API 地址不要加斜杠结尾。modelName可以根据你实际想用的模型调整这里填的是示例。pairing.autoApprove设为 true 配合后面的脚本实现自动审批。注意apiKey 不要提交到公开仓库本地保存即可。如果你要分享配置文件记得先把 Key 删掉。3.3 auto-approve.sh 自动审批脚本OpenClaw 默认在设备配对时需要手动点击审批这在容器环境里很不方便。这个脚本的作用是每 5 秒扫描一次待审批列表发现有 pending 状态的请求就自动批准#!/bin/bash # OpenClaw 自动审批脚本 while true; do ID$(openclaw devices list --json 2/dev/null | jq -r .pending[0].requestId // empty) if [ -n $ID ]; then echo [$(date)] 发现配对请求: $ID正在自动批准... openclaw devices approve $ID fi sleep 5 done脚本依赖jq来解析 JSON所以 Dockerfile 里必须安装 jq。这个脚本会以后台进程方式运行和 Gateway 主进程共存。3.4 Dockerfile 完整内容基于官方 Node.js 22 镜像构建把环境、配置、脚本全部封装进去FROM node:22-bookworm # 安装基础工具与 jq RUN apt update apt install -y vim net-tools jq \ npm install -g openclawlatest # 预创建配置目录 RUN mkdir -p /root/.openclaw # 注入预设配置与审批脚本 COPY openclaw.json /root/.openclaw/openclaw.json COPY auto-approve.sh /usr/local/bin/auto-approve.sh RUN chmod x /usr/local/bin/auto-approve.sh # 启动项后台运行审批脚本 前台运行 Gateway ENTRYPOINT [/bin/bash, -c, /usr/local/bin/auto-approve.sh exec openclaw gateway run]这里有几个细节值得说。第一node:22-bookworm是 Debian 12 基础镜像apt 源比较新装 jq 不会报错。第二npm install -g openclawlatest装的是最新版如果你需要固定版本把latest换成具体版本号。第三ENTRYPOINT 里用把审批脚本放到后台然后用exec启动 Gateway这样容器的主进程是 Gateway日志和生命周期管理都正常。3.5 构建与启动命令打开 PowerShell进入D:\openclaw-docker目录cd D:\openclaw-docker第一步构建镜像docker build -t openclaw -f Dockerfile .构建过程会拉取 node:22-bookworm 镜像然后安装依赖。第一次构建大概需要 2 到 5 分钟取决于网络速度。看到Successfully tagged openclaw:latest就说明构建成功了。第二步运行容器docker run -d --name openclaw -p 18789:18789 openclaw-d表示后台运行--name openclaw给容器起个名字方便管理-p 18789:18789把容器端口映射到宿主机。如果你改了配置文件里的端口这里也要同步改。启动后检查容器状态docker ps看到 openclaw 容器状态是 Up 就对了。如果状态是 Exited用docker logs openclaw看日志排查。4. 验证请求容器运行状态与浏览器访问配置写完了容器也起来了接下来要确认它真的能工作。这一章分两步先看容器内部日志再从浏览器访问管理界面。4.1 容器日志检查执行docker logs -f openclaw你会看到类似这样的输出[Mon Jan 1 00:00:00 UTC 2025] 发现配对请求: abc123正在自动批准... Gateway listening on 0.0.0.0:18789如果看到Gateway listening这一行说明 OpenClaw 的网关服务已经正常启动。如果只看到审批脚本在循环但没有 Gateway 启动信息可能是openclaw gateway run命令报错了检查一下 openclaw.json 的 JSON 格式是否合法。4.2 浏览器访问管理界面打开 Windows 浏览器访问http://127.0.0.1:18789第一次打开时页面可能会提示Pair required。别慌这是正常的。自动审批脚本每 5 秒运行一次你只需要等 5 到 10 秒然后刷新页面就能直接进入管理界面了。如果你在配置文件里设置了 token访问地址需要带上 token 参数格式是http://127.0.0.1:18789/#token你的token值进入管理界面后你可以看到设备列表、网关状态、模型连接情况。如果模型那一栏显示已连接说明 TaoToken 的 API 配置生效了。4.3 用 curl 做一次接口验证除了浏览器你也可以在 PowerShell 里用 curl 快速验证网关是否响应curl http://127.0.0.1:18789/health如果返回{status:ok}之类的 JSON说明网关健康检查通过。这一步能帮你排除浏览器缓存或者前端渲染的问题。提示如果你在验证模型对话时想确认 TaoToken 侧的连通性可以打开模型对话页面发一条测试消息地址是https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite。这样能快速区分是网关问题还是模型接入问题。5. 本篇常见错排查Node.js、端口与审批卡住即使步骤再详细实际跑的时候还是可能遇到问题。这一章把我踩过的坑和常见报错整理出来你对照着排查。5.1 Node.js 版本不兼容导致构建失败报错现象docker build过程中出现npm ERR! engine Unsupported engine或者openclaw requires Node.js 20。原因很直接Dockerfile 里用的基础镜像 Node.js 版本太低。解决办法是确认FROM node:22-bookworm这一行没有被改过。如果你之前用的是node:18或者node:16换成 22 重新构建。另外宿主机上的 Node.js 版本不影响容器内运行但如果你在宿主机上执行npm install -g openclaw做本地调试那就需要 Node.js 22 以上。5.2 端口 18789 被占用报错现象docker run时提示Bind for 0.0.0.0:18789 failed: port is already allocated。这说明宿主机上已经有别的程序占用了 18789 端口。你可以用 PowerShell 查一下netstat -ano | findstr 18789找到占用端口的 PID然后在任务管理器里结束对应进程。或者换个端口比如把docker run -p 18790:18789 openclaw改成映射到 18790同时浏览器访问http://127.0.0.1:18790。5.3 自动审批脚本不生效报错现象浏览器一直提示Pair required刷新多次也进不去。排查步骤分三步。第一进容器看看脚本有没有在跑docker exec -it openclaw ps aux | grep auto-approve如果没有这个进程说明 ENTRYPOINT 里的后台启动没成功。第二检查 jq 是否安装docker exec -it openclaw which jq如果没有输出说明 Dockerfile 里 apt 安装那一步失败了重新构建镜像。第三手动执行一次审批命令看看报什么错docker exec -it openclaw openclaw devices list --json如果这个命令本身报错那问题出在 OpenClaw 的配置或者版本上跟脚本无关。5.4 容器启动后立刻退出报错现象docker ps看不到容器docker ps -a显示状态是 Exited。用docker logs openclaw看最后几行日志。最常见的原因是 openclaw.json 格式错误比如多了逗号、少了引号。你可以用在线 JSON 校验工具检查一下或者直接在 PowerShell 里用 Node.js 验证node -e JSON.parse(require(fs).readFileSync(openclaw.json,utf8)); console.log(JSON OK)如果输出JSON OK说明格式没问题。如果报错根据提示修正。5.5 模型连接失败报错现象管理界面里模型状态显示红色或者disconnected。先确认 openclaw.json 里的baseUrl和apiKey是否正确。baseUrl必须是https://taotoken.net/api不要多加斜杠或者路径。apiKey必须是以sk-开头的完整字符串不要有空格。然后进容器手动测试一下网络连通性docker exec -it openclaw curl -I https://taotoken.net/api如果返回 200 或 401说明网络是通的401 表示 Key 有问题。如果直接超时检查 Docker Desktop 的网络设置确认容器能访问外网。如果你需要重新生成 API Key去控制台操作https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里面有更详细的参数说明。6. 跑通之后长期编码与 Agent 场景的接入建议环境跑通只是第一步。如果你打算把 OpenClaw 用在长期编码或者 Agent 自动化场景里有几个点值得提前规划。首先是 API Key 的管理。不要把 Key 硬编码在 openclaw.json 里然后提交到 Git。建议用环境变量注入Docker run 的时候通过-e传进去配置文件里用占位符。这样既安全又方便切换。其次是 Coding Plan 的选择。如果你需要长时间跑编码任务或者 Agent 工作流按量计费可能不如套餐划算。TaoToken 的 Coding Plan 页面有详细说明https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite另外如果你用的是 Claude Code 或者 Anthropic 风格的接入方式TaoToken 也有对应的配置指引https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentclaude-code-anthropicutm_campaignrewrite最后说一个实用技巧。容器跑起来之后你可以用docker exec进去装一些调试工具比如htop、curl、vim方便排查问题。但注意这些改动不会持久化容器重建就没了。如果需要持久化建议写个自己的 Dockerfile 继承当前镜像把额外工具装进去。整个流程走下来从零到跑通大概 3 到 5 分钟前提是 Docker Desktop 已经装好、网络通畅。如果你卡在某一步优先看docker logs的输出大部分问题日志里都有线索。