
openclaw.json 里的 apiKey 还写着 your-api-key-hereAzure Windows 11 虚拟机上 gateway 能起、默认 agent 就是不回话。去 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 拿一把 Key再用 TaoToken 的兼容通道把模型请求接出去这台机器上的 OpenClaw 才算真的能用。很多人 RDP 进去之后把精力全花在端口、Node 版本、Azure 网络安全组上反复netstat、反复重启却忘了回头看一眼%USERPROFILE%\.openclaw\openclaw.json里那个从模板抄下来的字段——它一直是占位符而 gateway 启动时压根不需要它是真值。这篇按排障的顺序走先讲怎么一眼确认是占位符的问题再讲 Key 从哪儿来、openclaw.json 里到底改哪几个值、改完怎么验证最后把 Windows 虚拟机上常见的那几类报错摊开对照。RDP、Node.js、npm 那套安装流程仍然照原文走TaoToken 在这条链路里只做两件事发 Key、提供兼容通道。1. gateway 起来了却不回话先怀疑 openclaw.json 的占位符1.1 三个容易骗过自己的「成功信号」在 Azure 上跑 OpenClaw最先看到的往往是假象。openclaw onboard一路回车结束没有红色报错这是一PowerShell 窗口里 gateway 进程活着netstat -ano | findstr :8080能看到监听这是二浏览器打开本地地址界面正常渲染出来这是三。这三件事有个共同点它们全部发生在本地服务层面。启动一个 HTTP 服务、绑定一个端口、返回一个静态页面都不需要出网也不校验任何凭据。真正用到 apiKey 的时刻是你向默认 agent 发第一条消息、gateway 准备把请求转发到上游模型的那一刻。在此之前your-api-key-here和一把真实 Key 在行为上没有任何区别。所以当症状是「界面能开、发送无响应」而不是「进程起不来」时排查方向应该立刻从环境层切到凭据层。1.2 一次就能确认的检查把 openclaw.json 打出来RDP 会话里直接开记事本最省事notepad $env:USERPROFILE\.openclaw\openclaw.json如果不想被记事本的换行影响判断用命令行捞关键字段更快Select-String -Path $env:USERPROFILE\.openclaw\openclaw.json -Pattern apiKey|baseURL|baseUrl|model只要输出里出现your-api-key-here、sk-xxxx、your key这类明显是模板文案的字符串问题就定在这儿了不必再折腾防火墙和 DNS。顺便看一眼 base 相关的字段是不是空的、是不是填了官网首页地址——这两件事后面会单独说。1.3 为什么占位符会让 agent 一声不吭请求带着假 Key 发出去上游返回的是 401 或 403。gateway 在中转这一层通常只把状态码写进日志不一定会把它翻译成前端可见的错误提示于是界面表现就是「一直在想」「转圈然后什么都没有」。更麻烦的是超时伪装。有些版本在拿不到有效响应时会一直重试前端看起来像网络慢实际是每一条请求都被上游拒掉。判断方法是去翻 gateway 那个 PowerShell 窗口的输出或者找 OpenClaw 在用户目录下写的日志文件看有没有成片的 401。看到 401 就别再怀疑 Azure 的网络了。2. 换 Key 这一步TaoToken 只负责发凭据和通道2.1 创建 Key以及模型 ID 该从哪里抄打开 TaoToken注册登录后进控制台创建 API Key。Key 通常在创建时完整显示一次之后列表里只留前几位所以当场复制、当场贴进 openclaw.json别先存到聊天窗口再回头找。模型 ID 同样不要凭记忆写。很多教程里出现的带日期后缀、带版本号的名字换个账号或换个时间点就不一定存在写错了报的是 model not found很容易被误判成 Key 无效。正确做法是打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的模型广场按当时列表里真实存在的 ID 复制。本文的示例统一写成YOUR_MODEL_ID占位你替换成自己那份列表里的字符串。2.2 这些步骤不用动RDP、Node.js、npm、Azure 网络安全组排障最容易走偏的地方是把「模型通道不通」当成「环境要重装」。原文里那套流程——RDP 连进 Azure Windows 11 虚拟机、装 Node.js、用 npm 全局安装 OpenClaw、跑openclaw onboard生成初始配置——全部照旧。TaoToken 不进这一层它既不参与远程桌面也不管 npm 装了什么版本。需要额外留意的只有两件事都属于 Windows 虚拟机的常规操作一是安装 Node.js 时把「Add to PATH」勾上否则新开的 PowerShell 窗口找不到命令二是 onboard 生成的配置文件路径固定在用户目录下如果你用的是管理员账号和普通账号两个会话注意别在 A 账号里改文件、用 B 账号起服务。2.3 Base URL 填什么别填什么这是本篇最容易被抄错的一行。填进 openclaw.json 的模型通道地址是https://taotoken.net/api末尾不要加/v1。很多 OpenAI 兼容客户端习惯把/v1写进 base再由 SDK 拼/chat/completions但这里填的是根路径多余的/v1会拼出重复段最终表现是 404而不是 401排查时很容易和 Key 的问题混在一起。另外不要把这个地址填成https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end。那是给人点击的落地页用来注册、创建 Key、看模型广场和用量接口地址和落地页是两条不同的东西混填的结果通常是返回一页 HTML解析失败。3. 用 notepad 改 openclaw.json只动三个值3.1 改之前先备份改完先验 JSON不管多急先复制一份原文件Copy-Item $env:USERPROFILE\.openclaw\openclaw.json $env:USERPROFILE\.openclaw\openclaw.json.bak备份的意义在于onboard 生成的这份文件里除了模型通道还有 gateway 的监听地址、端口、agent 定义等内容手抖删掉一个逗号报的错会完全跑偏。改完之后立刻做一次语法检查Get-Content $env:USERPROFILE\.openclaw\openclaw.json -Raw | ConvertFrom-Json | Out-Null这条命令没有任何输出就代表 JSON 合法。如果抛异常多半是多了尾随逗号、少了引号或者记事本保存时换了引号字符——中文输入法下的引号是“”JSON 只认半角。3.2 apiKey、baseURL、model 三个值怎么填下面是一份结构示意。字段名以你本机 onboard 生成的那份为准有的版本写baseURL有的写baseUrl有的把通道配置放在providers下面。你只需要在原文件里找到对应键名改它的值不要整段替换成下面这份。{ gateway: { host: 127.0.0.1, port: 8080 }, providers: { default: { type: openai-compatible, baseURL: https://taotoken.net/api, apiKey: YOUR_API_KEY, model: YOUR_MODEL_ID } }, agents: { default: { provider: default } } }三个值的来源分别是apiKey从 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的控制台创建后复制baseURL固定写https://taotoken.net/apimodel从模型广场当时列出的 ID 里挑一个。改完保存注意编码选 UTF-8别存成带 BOM 的格式某些解析器会把开头的 BOM 当成非法字符。3.3 保存之后的重启顺序改文件不会自动生效。正确顺序是先在跑 gateway 的那个 PowerShell 窗口按CtrlC停掉进程确认端口释放再重新执行一次openclaw onboard让它按新配置把 gateway 拉起来。确认端口真的释放了netstat -ano | findstr :8080没有任何输出才说明上一个进程退干净了。如果还占着用taskkill /PID 进程号 /F收掉否则新进程可能因为端口冲突起不来你会误以为配置改坏了。4. 三条验证确认模型通道真的通了4.1 看启动日志里有没有出现 provider 和 model重启之后别急着开浏览器。先看 PowerShell 窗口里滚出来的启动日志重点找两个信息有没有加载到 provider 配置有没有打印出将要使用的模型标识。如果日志里出现的是默认值、或者干脆没有这一段说明配置文件的层级没对上——比如你把通道写在了顶层而这一版要求放在providers下。此时不必猜把 openclaw.json 完整贴出来对着上面那份结构比对一遍层级。4.2 给默认 agent 发一条最小请求开浏览器访问本地地址向默认 agent 发一句最朴素的话比如「用一句话说明你现在用的模型是什么」。观察两件事响应回来得快不快以及内容是否正常。如果这一步正常返回说明 Key、Base URL、模型 ID 三个值都对上了。如果仍然转圈先看 4.1 的日志有没有 401有 401 就回到第 3 节确认 Key 是不是残留了占位符没有报错但一直不返回就往第 5 节的超时方向查。4.3 用同一把 Key 在模型对话页交叉验证这一步能把「到底是谁的问题」这件事一刀切开。打开 TaoToken 模型对话用刚才那把 Key 和同一个模型 ID 发一条消息。对话页正常、OpenClaw 不正常问题在 openclaw.json 或 gateway不在 Key。对话页也报错Key 有问题或者模型 ID 抄错了回控制台重新确认。两边都超时先确认这台虚拟机能正常访问外部网络再考虑是否是重试策略把超时放大了。验证通过之后回 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的控制台看一眼这次的调用有没有记上用量记录里有条目才算闭环。5. 401 / 404 / model not foundWindows 虚拟机上的对照排查5.1 401Key 没换、多了引号、复制带了空格401 几乎只有一个来源发出去的凭据不被上游认可。三种最常见的情况第一种是 openclaw.json 里那行your-api-key-here根本没动过只改了 baseURL第二种是从控制台复制时把首尾空格一起带进去了或者粘贴时被记事本加了换行第三种是值外面套了两层引号变成YOUR_API_KEY。修法很直接在 openclaw.json 里让 apiKey 的值保持纯粹的字符串前后不要有空格不要有换行。改完用 3.1 那条 ConvertFrom-Json 验一遍。5.2 404baseURL 后面多写了 /v1404 和 401 的症状很像都是「发出去没结果」但含义完全不同。401 是身份不认404 是路径找不到。填https://taotoken.net/api就够了再往后加/v1客户端和网关各拼一次路径就重复了。处理方式是回到 openclaw.json把 base 相关的那个值改成不带后缀的写法保存、重启、重试。顺手确认一下自己有没有把落地页地址填进去——那会返回一整个 HTML 页面日志里看到的不是 404 也可能是一段解析错误。5.3 model not foundID 抄错或列表里没有这个报错通常写得很清楚直接告诉你哪个字符串不认识。原因是模型 ID 抄错了或者你复制的那个名字在你账号里并不存在。解决办法只有一个打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 的模型广场从当时列表里重新复制一遍覆盖 openclaw.json 里的 model 值。不要依赖任何教程里写死的模型名包括本文示例里的YOUR_MODEL_ID——它只是个占位。5.4 一直转圈出网、时间同步与重试放大排除掉前面三类之后剩下的就是网络层。Azure Windows 11 虚拟机默认能出网但如果你改过 NSG 规则、加了出站限制或者用了不合适的 DNS出网就可能被拦。用一条简单的出网测试确认连通性再把结果贴回对话里判断。还有一个容易被忽略的点是虚拟机的时间同步。系统时间偏差太大时TLS 握手会失败表现同样是长时间无响应。在 Windows 里执行一次时间同步成本很低值得一试。6. 通道通了之后把 Key 和用量管起来6.1 别把一把 Key 塞进所有环境排障阶段用一把 Key 快速跑通没问题但长期这么用会有两个隐患一是 Key 一旦泄露所有环境一起受影响二是用量混在一起看不出是哪台机器在跑。比较省事的做法是按环境拆Azure 那台虚拟机一把本地开发机一把CI 里再一把。每把 Key 起个能认出来的名字出问题的时候直接停用对应的那一把即可。新 Key 在 控制台 API Keys 里创建创建完回到 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_end 看用量分布确认三把 Key 各自跑在预期的位置上。如果这台 Windows 虚拟机是要长期挂着 OpenClaw 跑日常编码任务可以顺手看一下 Coding Plan 里的套餐额度按你的实际调用节奏选别让排障完的第二天就撞上额度墙。6.2 下一步现在这台 Azure Windows 11 虚拟机上的 OpenClaw 已经能把请求发到模型通道了gateway 在跑默认 agent 有回话openclaw.json 里三个值都是真值而不是占位符。接下来无非两件事——把模型 ID 换成更合适的那个以及把这套配置在另外几台机器上照着抄一遍。真要动手前建议先回控制台确认一次这次调用的记账记录再去模型广场把要长期使用的 ID 定下来。RDP、Node.js、npm 那一整套流程你已经走过一遍下次复制配置的时候记得落地页地址只用于注册、创建 Key 和看用量填进 openclaw.json 的永远是https://taotoken.net/api。