1. Windows 部署 OpenClaw 前先理清环境与依赖
OpenClaw(小龙虾)是一个跑在本地的 AI Agent 网关,它本身不产出模型能力,而是把你在外部拿到的模型 API 统一收拢到一个本地端口上,再通过命令行或浏览器界面去调用。换句话说,它像是一个「本地中转站」:你给它一个 Base URL 和 Key,它负责把请求转发给模型,再把结果吐回给你。适合谁?适合想在 Windows 上快速拥有一个可编程、可脚本化、可接多个模型通道的开发者,也适合不想每次换模型都改一堆环境变量的人。
我这次的目标很明确:在 Windows 上用 Node.js + Git 把 OpenClaw 装起来,然后用 TaoToken 的统一 Key 和 API 通道完成接入,最后用 PowerShell 验证一次请求能通。整个过程不需要复杂的前置知识,只要你会复制命令、会改一个配置文件就行。
先说清楚三个核心概念,避免后面混淆:
- Node.js:OpenClaw 是 npm 包,必须有 Node 运行时。建议 18 LTS 以上,20 更稳。
- Git:部分依赖和后续更新会用到,装上是省事的选择。
- TaoToken:提供统一的 API 通道和 Key,你不需要在多个模型厂商之间来回切换配置,一个 Key 就能指向你要用的模型。
这里要强调一点:OpenClaw 只是载体,真正干活的是背后的模型。所以「部署成功」和「API 连通」是两件事,很多人卡在第二步——装完了,但请求发不出去。这篇会把这两步都走完,并且给你可复制的配置骨架和验证命令。
环境准备清单(对照检查):
| 项目 | 要求 | 检查命令 |
|---|---|---|
| 操作系统 | Windows 10/11 x64 | winver |
| Node.js | ≥ 18 LTS | node -v |
| npm | 随 Node 安装 | npm -v |
| Git | 任意较新版本 | git --version |
| PowerShell | 管理员权限 | 右键「以管理员身份运行」 |
如果你之前装过 Node 但版本太老,建议直接去官网下 msi 覆盖安装,一路下一步即可。Git 同理,下载 Windows 版安装包,默认选项走完就行。装完后一定要重开一个 PowerShell 窗口,否则 PATH 不刷新,node -v会报「无法识别」。
还有一个容易被忽略的点:Windows 默认的 PowerShell 执行策略会拦截 npm 的全局脚本。所以第一步不是急着装 OpenClaw,而是先把执行策略放开到RemoteSigned,只对当前用户生效,安全且够用。这一步不做,后面npm install -g很可能直接报错中断。
2. TaoToken 统一 Key 的前置准备与通道选择
在装 OpenClaw 之前,先把「钥匙」拿到手,这样装完就能立刻配置,不用来回切换窗口。TaoToken 的作用是给你一个统一的 API 入口和 Key,你不需要分别去每个模型厂商注册、充值、拿 Key,而是通过一个通道管理多种模型。
先访问官网了解通道和套餐:
https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=进去之后,你需要做两件事:一是确认你要用的模型(比如 Claude 系列、GPT 系列或国产模型),二是生成一个 API Key。Key 的生成入口在控制台的 API Keys 页面:
https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=生成 Key 的时候注意几点:
- Key 只在创建时完整显示一次,复制后立刻存到安全的地方,比如密码管理器。
- 不要把它写进会提交到 Git 的文件里,后面我们用环境变量来存。
- 如果你打算长期跑 Agent 或做编码类任务,可以看看 Coding Plan,额度模型更适合高频调用:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=API 的基础地址是:
https://taotoken.net/api注意这个地址后面不加 UTM 参数,它是给程序调用的,不是给人点的。你在配置里填的 Base URL 就是它。
为什么推荐用统一 Key 而不是每个模型单独配?因为 OpenClaw 的配置里,模型通道是一个整体。如果你用多个厂商的 Key,就得在配置里维护多套凭证,换模型时容易漏改。统一 Key 的好处是:Base URL 固定,Key 固定,换模型只改 Model ID 一个字段。这对后面做 PowerShell 验证和排障都省事。
这里给一个模型 ID 的对照思路(具体以你控制台里可用的为准):
| 用途 | 模型 ID 示例 | 说明 |
|---|---|---|
| 通用对话 | claude-sonnet 系列 | 响应均衡 |
| 编码/Agent | claude-opus 系列 | 复杂任务更强 |
| 轻量快速 | 国产轻量模型 | 省额度 |
拿到 Key 之后,先别急着关页面,把 Base URL、Key、Model ID 这三样记下来,这就是后面配置的「三件套」。很多人部署失败就是因为三件套缺一个,或者 Base URL 填成了带路径的完整地址导致拼接错误。
如果你只是想先验证模型能不能通,不想装任何东西,可以直接用模型对话页面测一下:
https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=在网页里发一句话,能收到回复,说明 Key 和通道本身没问题。这一步相当于「先排除 Key 的问题」,后面 OpenClaw 报错时你就能确定问题出在本地配置而不是凭证。
3. 可复制的 OpenClaw 配置骨架与环境变量
这一节是核心,给你可以直接抄的配置。先装 OpenClaw,再写配置。
以管理员身份运行 PowerShell,依次执行:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force npm install -g openclaw@latest第一条放开执行策略,第二条全局安装。装完后验证:
openclaw --version能打印版本号就说明装好了。如果报「无法识别」,检查 npm 全局路径是否在 PATH 里,通常重开窗口能解决。
接下来是配置。OpenClaw 的配置目录一般在用户目录下,Windows 路径类似:
C:\Users\你的用户名\.openclaw\config.toml如果目录不存在,先手动创建。然后写入下面的 TOML 骨架。注意:路径和字段名要和你的实际版本一致,不同版本字段可能略有差异,但核心三件套(Base URL、Key、Model ID)不变。
# OpenClaw 配置文件骨架 # 路径:C:\Users\<你的用户名>\.openclaw\config.toml [gateway] host = "127.0.0.1" port = 18789 [model] # TaoToken 统一 API 入口 base_url = "https://taotoken.net/api" # 模型 ID,按你控制台可用的填写 model_id = "claude-sonnet" # 不要在这里写 Key,用环境变量注入 api_key_env = "TAOTOKEN_API_KEY" [model.params] max_tokens = 4096 temperature = 0.7 [logging] level = "info"关键点说明:
base_url填https://taotoken.net/api,不要带多余的斜杠或路径。api_key_env指向环境变量名,而不是直接写 Key。这样配置文件可以安全地分享或备份。model_id是你要用的模型,换模型只改这一行。
然后设置环境变量。在 PowerShell 里执行(把你的Key换成真实 Key):
[Environment]::SetEnvironmentVariable("TAOTOKEN_API_KEY", "你的Key", "User")这条命令把 Key 写到用户级环境变量,重启终端后生效。想立刻在当前窗口生效,再执行:
$env:TAOTOKEN_API_KEY = "你的Key"验证环境变量是否写入成功:
[Environment]::GetEnvironmentVariable("TAOTOKEN_API_KEY", "User")能打印出你的 Key(或部分字符)就对了。注意:不要把 Key 直接写进config.toml,也不要在命令行里用echo打印完整 Key 到日志文件,避免泄露。
如果你用的是 Claude Code 类工具,配置思路一致,Base URL 和 Key 的填法相同,Model ID 换成对应的即可。接入文档在这里:
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=配置写完后,启动一次网关看看有没有语法错误:
openclaw gateway start如果配置有误,启动时会直接报错并指出行号,按提示改就行。启动成功后,网关会监听127.0.0.1:18789,这就是你后面验证的地址。
4. PowerShell 验证请求与成功结果确认
配置写完不代表通了,必须发一次真实请求确认。这一步用 PowerShell 的Invoke-RestMethod就能完成,不需要额外装工具。
先确认网关在跑。另开一个 PowerShell 窗口,执行:
openclaw gateway status如果显示 running 或监听端口正常,继续。然后发一个测试请求。注意:不同版本的 OpenClaw 暴露的接口路径可能不同,常见的是/v1/chat/completions兼容格式。下面给一个通用验证脚本:
$headers = @{ "Authorization" = "Bearer $env:TAOTOKEN_API_KEY" "Content-Type" = "application/json" } $body = @{ model = "claude-sonnet" messages = @( @{ role = "user"; content = "你是谁?能做什么?" } ) max_tokens = 128 } | ConvertTo-Json -Depth 5 $response = Invoke-RestMethod -Uri "http://127.0.0.1:18789/v1/chat/completions" ` -Method Post -Headers $headers -Body $body $response.choices[0].message.content逐段解释:
$headers里带上 Bearer Token,值从环境变量读,避免硬编码。$body是标准的 chat 格式,model字段和你配置里的 Model ID 保持一致。Invoke-RestMethod发 POST,注意反引号是 PowerShell 的换行续行符。- 最后一行取回复内容打印。
如果一切正常,你会看到模型返回的一段文字,比如自我介绍。这就说明:OpenClaw 网关在跑、TaoToken 通道通了、Key 有效、Model ID 正确。四件事一次性验证完毕。
如果网关没有暴露兼容接口,也可以直接用 TaoToken 的 API 地址做一次直连验证,排除 OpenClaw 本身的干扰:
$headers = @{ "Authorization" = "Bearer $env:TAOTOKEN_API_KEY" "Content-Type" = "application/json" } $body = @{ model = "claude-sonnet" messages = @(@{ role = "user"; content = "ping" }) max_tokens = 16 } | ConvertTo-Json -Depth 5 Invoke-RestMethod -Uri "https://taotoken.net/api/v1/chat/completions" ` -Method Post -Headers $headers -Body $body直连能通、本地网关不通,问题就在 OpenClaw 配置;两个都不通,问题在 Key 或网络。这个二分法能帮你快速定位。
成功结果的判断标准:
| 现象 | 含义 |
|---|---|
| 返回 JSON 含 choices | 请求成功 |
| 返回 401 | Key 无效或没带上 |
| 返回 404 | 路径或 Base URL 错误 |
| 连接被拒绝 | 网关没启动 |
| 超时 | 网络或通道问题 |
验证通过后,你就可以在浏览器里打开网关界面看状态:
http://127.0.0.1:18789这个地址是本地回环,只在你机器上可访问,不会暴露到外网。到这里,部署和连通就算完成了。
5. 常见报错排查:401、local proxy failed 与 reading choices
这一节把最容易踩的坑列出来,对照报错找原因。我试过几次,大部分问题都集中在这几类。
401 Unauthorized
最常见。原因通常是:
- 环境变量没生效。检查
$env:TAOTOKEN_API_KEY是否为空,空的话重开终端或手动设置。 - Key 复制时带了空格或换行。重新复制一次,确保首尾无空白。
- 请求头格式不对。必须是
Bearer加空格再加 Key,少空格会失败。
排查命令:
if ([string]::IsNullOrWhiteSpace($env:TAOTOKEN_API_KEY)) { "Key 为空" } else { "Key 已设置" }local proxy failed / connection refused
这个报错说明请求根本没发出去,或者发到了错误的地址。原因:
- 网关没启动。执行
openclaw gateway status确认。 - 端口被占用。换一个端口,改
config.toml里的port。 - Base URL 写错。确认是
https://taotoken.net/api,不要多写路径。
如果你在配置里误填了本地代理地址,也会出现类似报错。检查config.toml里有没有多余的 proxy 字段,删掉即可。
reading choices / cannot read property choices
这个报错说明请求发出去了,但返回的结构不是预期的 chat 格式。原因:
- Model ID 写错,通道返回了错误信息而不是正常回复。
- 返回的是错误 JSON,但代码直接去取
choices,导致读取失败。
排查方法:先把原始返回打印出来,不要直接取字段。
$response = Invoke-RestMethod -Uri "http://127.0.0.1:18789/v1/chat/completions" ` -Method Post -Headers $headers -Body $body $response | ConvertTo-Json -Depth 5看完整结构,如果里面有error字段,按错误信息处理。常见的是模型名不对或额度不足。
OAuth 相关报错
如果你用的是需要 OAuth 的通道,报错通常和 token 过期有关。重新在控制台生成 Key 或刷新授权即可。注意不要把 OAuth 流程和 API Key 混用,两者是不同的认证方式。
Codex auth.json 相关
如果你同时用 Codex 类工具,注意它的auth.json和 OpenClaw 的config.toml是两套配置,不要互相覆盖。三件套(Base URL、Key、Model ID)要分别填对。
排障顺序建议:
- 先直连 TaoToken API,确认 Key 和通道没问题。
- 再测本地网关,确认 OpenClaw 在跑。
- 最后看配置字段,逐个核对三件套。
接入文档里有更详细的字段说明:
https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=遇到报错不要慌,先把完整返回打印出来,90% 的问题看返回体就能定位。
6. 长期使用建议与统一 Key 的接入入口
部署跑通只是开始,长期用起来还有几个实用建议。
第一,把 Key 放在环境变量里,永远不要写进配置文件或代码。这样你备份配置、分享配置时都不会泄露凭证。如果怀疑 Key 泄露,直接去控制台重新生成一个,旧的自然失效。
第二,Model ID 做成可切换的。你可以在config.toml里保留多个模型段落,用注释切换,或者用环境变量控制。这样换模型不用改代码。
第三,定期更新 OpenClaw。npm 包更新频繁,新版本可能修复了连接问题或增加了新通道支持:
npm update -g openclaw第四,网关启动方式。日常用可以直接:
openclaw gateway start想让它开机自启,可以做成计划任务,但注意不要用管理员权限常驻,降低风险。
第五,如果你要做编码类或 Agent 类长期任务,统一 Key 的优势会更明显:一个通道管所有模型,额度集中管理,换模型只改一个字段。Coding Plan 的额度模型更适合这种高频场景:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=需要管理多个 Key 或查看用量时,控制台入口:
https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=想快速验证某个模型是否可用,不用装任何东西,直接用模型对话页面:
https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=最后给一个日常检查清单,每次改完配置后跑一遍:
# 1. 检查环境变量 [Environment]::GetEnvironmentVariable("TAOTOKEN_API_KEY", "User") # 2. 检查网关状态 openclaw gateway status # 3. 发测试请求 $headers = @{ "Authorization" = "Bearer $env:TAOTOKEN_API_KEY"; "Content-Type" = "application/json" } $body = @{ model = "claude-sonnet"; messages = @(@{ role = "user"; content = "ping" }); max_tokens = 16 } | ConvertTo-Json -Depth 5 Invoke-RestMethod -Uri "http://127.0.0.1:18789/v1/chat/completions" -Method Post -Headers $headers -Body $body这三步能过,说明你的 OpenClaw + TaoToken 组合是健康的。把这套流程固化成脚本,以后换机器或重装系统,几分钟就能恢复。