1. 为什么你的 OpenClaw 本地部署总卡在 Node.js 和 Ollama 这一步
OpenClaw 本地部署这件事,说穿了就是把三样东西串起来:一个能跑 JavaScript 的运行时(Node.js)、一个能装包的包管理器(npm)、一个能提供模型能力的推理服务(Ollama)。听起来简单,但零基础用户真正动手时,十有八九会卡在环境变量、版本号、端口连通性这三道坎上。我自己第一次装的时候,光是node -v显示 v18 就折腾了半小时,后来才发现 OpenClaw 强制要求 Node.js ≥ 22,版本低了连npm install -g openclaw@latest都会中途报错退出。
这篇内容聚焦的就是这个场景:你手上有一台 Windows 电脑,想在本机把 OpenClaw 跑起来,用 Ollama 提供本地模型,同时希望有一个统一的 Key 管理方式,避免在多个配置文件里反复填不同厂商的密钥。适合谁看?完全没碰过 Node.js 的小白、装过但被报错劝退的半新手、以及想把本地模型和云端模型统一接入的折腾党。核心检索词就三个:OpenClaw 本地部署、Node.js 环境配置、Ollama 模型接入。
先说清楚一个认知:OpenClaw 本身不生产模型,它只是一个调度层。你给它一个模型地址和 Key,它负责把对话请求转发过去。所以部署的本质是两件事——让 OpenClaw 能启动,让它能找到模型。前者靠 Node.js 和 npm,后者靠 Ollama 或兼容 OpenAI 接口的服务。很多人把这两件事混在一起排查,结果越查越乱。我的建议是分两步走:先确保openclaw --version能打印出版本号,再去搞模型接入。顺序反了,你连报错来自哪一层都分不清。
还有一个容易被忽略的点:OpenClaw 的配置文件默认放在用户目录下的.openclaw文件夹里,Windows 下通常是C:\Users\你的用户名\.openclaw\openclaw.json。这个文件里同时管着网关端口、认证令牌、模型提供商列表。你后面要改的 Ollama 地址、要填的统一 Key,都在这个文件里。提前知道它在哪,排障时能省一半时间。
2. TaoToken 统一 Key 的前置准备:一个 Key 管住 Ollama 和云端模型
在讲具体配置之前,先解决一个现实问题:OpenClaw 的模型配置里,每个 provider 都要填baseUrl和apiKey。如果你只用 Ollama,apiKey随便填个ollama-local就行,因为本地服务不校验。但一旦你想同时接入云端模型做对比,或者本地小模型扛不住复杂任务需要切到更强的模型,就会面临多个 Key 分散管理的问题。TaoToken 在这里的角色,就是提供一个统一的接入点,让你用同一个 Key 去访问不同的模型服务,配置层面只需要维护一份凭证。
TaoToken 是什么?简单说它是一个模型接入网关,对外暴露兼容 OpenAI 格式的 API 接口。你拿到一个 Key 之后,把baseUrl指向它的 API 地址,就能在 OpenClaw 里像调用本地 Ollama 一样调用它背后的模型。适合谁?适合那些不想在每台机器、每个工具里重复配置不同厂商 Key 的人。尤其是你同时用 OpenClaw、Cline、Claude Code 这类工具时,统一 Key 能让你换工具不换配置。
前置准备分三步。第一步,注册并登录 TaoToken 控制台,地址是 https://taotoken.net/console 。登录后找到 API Keys 页面,创建一个新的 Key,复制出来存好。这个 Key 就是你后面要填进 OpenClaw 配置文件里的凭证。注意,Key 只在创建时完整显示一次,关掉页面就看不到了,所以务必先粘贴到记事本里。
第二步,确认你的 Ollama 已经在本机跑起来。打开浏览器访问http://127.0.0.1:11434,如果看到 Ollama is running 之类的提示,说明服务正常。如果打不开,先在命令行执行ollama serve启动服务。Ollama 的默认端口是 11434,这个端口号后面要填进 OpenClaw 的配置里,别记错。
第三步,想清楚你的模型策略。纯本地跑,就用 Ollama 的模型,比如qwen2.5:3b或qwen3:4b,对内存要求低,适合先跑通流程。想兼顾能力,就在 OpenClaw 里同时配置 Ollama 和 TaoToken 两个 provider,日常对话走本地,复杂任务切到 TaoToken 背后的模型。配置文件里 provider 是并列的,切换只需要改agents.defaults.model.primary这一行。
这里给一个关键提醒:TaoToken 的 API 地址是 https://taotoken.net/api ,不要加任何多余路径。有些教程会让你在末尾加/v1,那是针对特定客户端的写法,OpenClaw 的配置里直接填这个根地址即可,它会自己拼接后续路径。填错了会报 404,排查起来很浪费时间。
3. 可复制的 OpenClaw 配置文件:Node.js 环境变量与 Ollama 接入参数
这一节是全文的核心,直接给你能复制粘贴的配置片段。先确认你的 Node.js 版本。打开 CMD,输入node -v,必须显示 v22 或更高。如果显示 v18、v20,去 Node.js 官网下载 LTS 版本重新安装,安装时勾选自动配置 PATH。装完关掉 CMD 重新打开,再验证一次。npm 跟着 Node.js 一起装好,用npm -v确认。
OpenClaw 的安装命令是:
npm install -g openclaw@latest如果卡在下载阶段不动,大概率是网络问题。可以临时切换 npm 镜像源:
npm config set registry https://registry.npmmirror.com装完后执行openclaw --version,能打印出版本号就说明 Node.js 和 npm 这一层通了。接下来初始化配置:
openclaw onboard向导里遇到模型选择时,如果你打算用 Ollama,直接选 Ollama;如果暂时没装 Ollama,选 Skip,后面手动改配置文件。向导跑完会自动生成openclaw.json,位置在C:\Users\你的用户名\.openclaw\openclaw.json。
现在打开这个文件,找到models.providers这一段,替换成下面的结构。注意 JSON 格式严格,逗号不能多也不能少:
{ "models": { "providers": { "ollama": { "baseUrl": "http://127.0.0.1:11434", "apiKey": "ollama-local", "api": "ollama", "models": [ { "id": "qwen2.5:3b", "name": "Qwen 2.5 3B" } ] }, "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "你的TaoToken密钥", "api": "openai", "models": [ { "id": "claude-sonnet-4-20250514", "name": "Claude Sonnet 4" } ] } } }, "agents": { "defaults": { "model": { "primary": "ollama/qwen2.5:3b" }, "models": { "ollama/qwen2.5:3b": {}, "taotoken/claude-sonnet-4-20250514": {} }, "workspace": "E:\\Openclaw_Lab" } } }几个参数解释一下。baseUrl对 Ollama 来说是本地地址,对 TaoToken 来说是 API 根地址。apiKey对 Ollama 是占位符,对 TaoToken 必须填真实 Key。api字段告诉 OpenClaw 用哪种协议去请求,Ollama 用ollama,TaoToken 用openai,因为它的接口兼容 OpenAI 格式。agents.defaults.model.primary决定默认用哪个模型,想切到 TaoToken 就把值改成taotoken/claude-sonnet-4-20250514。
workspace建议指向非系统盘,比如E:\Openclaw_Lab,避免 OpenClaw 操作文件时误触系统目录。这个文件夹要提前建好,路径里的反斜杠在 JSON 里要写成双反斜杠。
改完保存,重启 OpenClaw 网关:
openclaw gateway restart如果重启命令不生效,先openclaw gateway stop再openclaw gateway start。启动后浏览器访问http://127.0.0.1:18789,用配置文件里的 token 登录。token 在gateway.auth.token字段里,是一长串十六进制字符。
4. 验证请求:用 curl 和 OpenClaw 界面确认 Ollama 与 TaoToken 都通
配置写完了不代表就能用,必须做连通性验证。先验 Ollama。打开 CMD,执行:
curl http://127.0.0.1:11434/api/tags如果返回一个 JSON 数组,里面列出了你本地已有的模型,说明 Ollama 服务正常。如果报连接拒绝,说明 Ollama 没启动,执行ollama serve后重试。如果返回空数组,说明你还没拉取模型,执行ollama pull qwen2.5:3b下载一个。
再验 TaoToken。用 curl 发一个最小的对话请求:
curl https://taotoken.net/api/v1/chat/completions ^ -H "Content-Type: application/json" ^ -H "Authorization: Bearer 你的TaoToken密钥" ^ -d "{\"model\":\"claude-sonnet-4-20250514\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}"Windows CMD 里换行用^,如果你用 PowerShell,换成反引号。返回结果里如果有choices数组且包含内容,说明 Key 和地址都正确。如果返回 401,检查 Key 是否复制完整;如果返回 404,检查地址是不是写成了https://taotoken.net/api/v1,OpenClaw 配置里只填到/api即可。
两层都通了之后,回到 OpenClaw 的 Web 界面。在对话框里输入一句「你好,请介绍一下你自己」,观察返回。如果默认模型是 Ollama,回复会来自本地模型,速度取决于你的硬件。如果切到 TaoToken,回复会来自云端,速度受网络影响。界面里通常有模型切换下拉框,可以直接切换测试两个 provider 是否都能正常出结果。
我实测下来,Ollama 跑qwen2.5:3b在 16GB 内存的机器上,首次加载模型需要十几秒,之后对话响应在 2-3 秒左右。如果内存只有 8GB,建议换qwen2.5:1.5b,否则容易触发内存交换导致卡顿。TaoToken 这边响应速度取决于你选的模型,但配置正确的情况下不会出现连接超时。
验证通过后,建议把openclaw.json备份一份到E:\Openclaw_Lab目录下。后面如果改配置改崩了,直接复制回来覆盖,比重装快得多。
5. 常见报错排查:401、local proxy failed、reading choices 逐个击破
部署过程中最常遇到的报错就那么几个,我按出现频率排个序,你对照着查。
第一个,401 Unauthorized。这个基本只出现在 TaoToken 这一层。原因有三个:Key 复制时带了空格、Key 已经失效、请求头里Bearer后面没加空格。检查方法是把 Key 重新复制一遍,确保Authorization: Bearer sk-xxx格式正确。如果还报 401,去 TaoToken 控制台确认 Key 状态是否正常,必要时重新生成一个。
第二个,local proxy failed或connection refused。这个报错指向 Ollama 服务没起来,或者端口不对。先确认http://127.0.0.1:11434能在浏览器打开。如果打不开,在 CMD 里执行ollama serve,看是否有报错输出。常见原因是 Ollama 安装后没有自动启动,或者 11434 端口被其他程序占用。用netstat -ano | findstr 11434查一下端口占用情况。
第三个,reading choices相关报错,完整信息通常是Cannot read properties of undefined (reading 'choices')。这说明 OpenClaw 收到了响应,但响应结构里没有choices字段。原因通常是api字段配错了。Ollama 的 provider 必须写"api": "ollama",TaoToken 的 provider 必须写"api": "openai"。如果给 Ollama 写了openai,它返回的格式对不上,就会报这个错。反过来,给 TaoToken 写了ollama,同样会出问题。
第四个,OAuth或token expired。这个一般出现在你之前用其他方式登录过,配置文件里残留了旧的认证信息。解决办法是删掉openclaw.json里gateway.auth之外的旧 token 字段,或者直接重新跑一次openclaw onboard,让它重新生成。
第五个,npm install报EACCES或权限错误。Windows 下以管理员身份运行 CMD 再执行安装命令。如果还不行,检查 Node.js 安装路径是否在系统盘且没有写入权限,考虑重装 Node.js 到默认路径。
第六个,OpenClaw 启动后浏览器打不开127.0.0.1:18789。先确认openclaw gateway start的输出里有没有报错。如果显示端口被占用,改openclaw.json里gateway.port的值,比如改成 18790,然后重启。如果显示启动成功但浏览器还是打不开,检查防火墙是否拦截了该端口,临时关闭防火墙测试一下。
排查的核心思路是分层:先确认 Node.js 和 npm 正常,再确认 OpenClaw 能启动,再确认 Ollama 能连通,最后确认 TaoToken 能返回。每一层用独立的命令验证,不要跳步。我踩过的坑就是一开始把 Ollama 和 TaoToken 的配置混在一起改,结果报错信息指向不明,后来分开验证才定位到是api字段写错了。
6. 跑通之后:把 OpenClaw 接入日常编码流的下一步
首次对话跑通之后,OpenClaw 的本地部署就算完成了。但这时候它只是一个能聊天的界面,真正提升效率的是把它接入你的编码工作流。如果你用 VS Code,可以看看 Cline 这类插件,它支持配置自定义的 OpenAI 兼容端点。把 TaoToken 的baseUrl和 Key 填进去,就能在编辑器里直接调用模型做代码补全和重构。配置路径通常在插件的设置里,找 API Provider 选 OpenAI Compatible,然后填地址和 Key。
如果你更习惯命令行,Claude Code 这类工具也支持通过环境变量指定接入点。设置ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY两个环境变量,指向 TaoToken 的地址和你的 Key,就能在终端里用统一的凭证调用模型。这样你本地 Ollama 跑轻量任务,TaoToken 跑复杂任务,两套体系互不干扰。
长期来看,如果你发现自己每天都在用 OpenClaw 做重复性的编码或 Agent 任务,可以考虑 TaoToken 的 Coding Plan,它针对高频调用场景做了额度优化,比按量计费更适合持续使用。具体可以看 https://taotoken.net/coding-plan 。
最后给一个实用技巧:把openclaw.json里的workspace指向一个专门的实验目录,所有让 OpenClaw 操作的文件都限制在里面。这样即使模型误操作,也不会影响你的正式项目。我自己的习惯是在E:\Openclaw_Lab下再分scripts、logs、sandbox三个子目录,脚本和日志分开管理,出问题回溯起来很快。