1. Windows 上跑 AI 助手,为什么 PowerShell 是第一道坎
如果你在 Windows 上折腾过 OpenClaw 这类本地 AI 助手,大概率经历过这样的场景:命令敲下去,终端先给你来一段红字,然后你开始怀疑是不是网络问题、是不是 Key 填错了、是不是飞书那边没配对。折腾一整天,最后发现是 PowerShell 版本太老。
这篇记录的就是我踩过的完整链路:从 PowerShell 环境准备,到 OpenClaw 接入飞书,再到 401、local proxy failed、reading choices 这几类典型报错的定位方法。目标很明确,让你在 Windows 上把 AI 助手跑起来,并且知道每一步出错时该看哪里。
先说清楚这套东西是什么。OpenClaw 是一个可以常驻运行的 AI 助手框架,它能接飞书、钉钉、企业微信这类 IM 工具,让你在聊天窗口里直接召唤 AI 干活。适合谁?适合手里有一台不关机的 Windows 机器、想搞个 7×24 小时在线助手的人。不适合谁?如果你只是想偶尔问两句,直接用网页版模型对话就够了,没必要上这套。
Windows 和 macOS 最大的区别在于终端环境。macOS 自带 zsh,一行命令下去基本顺滑。Windows 默认给你的是 PowerShell 5.1,这个版本在装依赖、跑脚本时会报各种奇怪的错。所以第一步不是装 OpenClaw,而是先把 PowerShell 升到 7。
你可以先查一下当前版本。打开 PowerShell,注意不是 CMD,输入:
$PSVersionTable.PSVersion如果 Major 显示 5,那就是 5.1,必须升级。升级方式很简单,打开微软应用商店搜 PowerShell,安装即可。装完之后一定要新开一个窗口,旧窗口还是老版本。这一步看着简单,但很多人卡在这里,因为装完直接在当前窗口继续敲命令,结果还是报错。
我试过在 5.1 上硬跑安装脚本,报错信息五花八门,有的说解析失败,有的说找不到命令。换到 7 之后,同样的命令一次过。所以别省这一步。
还有一个细节:PowerShell 里粘贴不是 Ctrl+V,是 Shift+Insert,或者右键。这个习惯问题会让新手以为命令没复制进去。
环境准备好之后,才进入真正的安装和配置环节。下面按顺序讲。
2. TaoToken 前置准备:Base URL、Key 和 Model ID 三件套
在配置 OpenClaw 之前,你需要先准备好模型接入的三件套:Base URL、API Key、Model ID。这三样东西缺一不可,而且顺序不能乱。
我用的是 TaoToken 作为接入层。它的作用是统一管理模型调用,你不需要在本地存一堆不同厂商的 Key,也不用担心某个模型接口变了要改代码。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。
先说 Base URL。在 OpenClaw 的配置里,你需要填的是 API 地址,也就是 https://taotoken.net/api 。注意这里不要加 UTM 参数,配置里只写干净的 API 地址。
然后是 API Key。你需要去控制台创建一个。打开 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,登录后进入 API Keys 页面,点创建。创建出来的 Key 是一串以 sk- 开头的字符串,复制下来,后面配置要用。这个 Key 只显示一次,丢了就得重新建。
如果你还没决定用哪个模型,可以先在模型对话页面试一下。打开 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite ,选一个模型发条消息,确认能正常返回。这一步能帮你排除 Key 本身的问题。
Model ID 这块要注意。OpenClaw 配置里填的模型名必须和接入层支持的名称一致。比如你想用 MiniMax,就填对应的模型 ID,不要自己编一个名字。常见的写法是类似 minimax-2.5 这种格式,具体以你控制台里看到的为准。
为什么强调这三件套?因为后面 401 报错、local proxy failed、reading choices 这三类问题,90% 都能通过检查这三样东西定位。401 通常是 Key 错了或者没带上;local proxy failed 往往是 Base URL 写错或者网络层有问题;reading choices 则是返回结构不对,可能是 Model ID 填错导致接口返回了非预期格式。
如果你打算长期跑编码类任务或者 Agent 场景,可以看一下 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。它适合高频调用的场景,比按量单独买要省心。
准备好这三样之后,就可以进入 OpenClaw 的配置环节了。
3. 可复制配置:OpenClaw 接入飞书的完整片段
这一节给你可以直接复制的配置片段。我按文件路径和字段名来写,你对照着改就行。
首先是 OpenClaw 的主配置文件。在 Windows 上,它通常在用户目录下的 .openclaw 文件夹里。你可以用 PowerShell 打开:
cd $env:USERPROFILE\.openclaw如果这个目录不存在,说明 OpenClaw 还没初始化,先跑一次 openclaw onboard。
主配置里和模型接入相关的部分,结构大概是这样:
{ "provider": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的Key", "model": "minimax-2.5" }, "channel": { "type": "feishu", "appId": "cli_你的AppID", "appSecret": "你的AppSecret", "connectionMode": "websocket", "domain": "china" } }注意 baseUrl 后面不要加斜杠,也不要带任何查询参数。apiKey 就是你在控制台创建的那串。model 填你实际要用的模型 ID。
飞书这边,你需要在开放平台创建自建应用,拿到 App ID 和 App Secret。权限配置用下面这段:
{ "scopes": { "tenant": [ "im:message", "im:message:send_as_bot", "contact:user.base:readonly", "contact:contact.base:readonly" ], "user": ["docx:document:readonly"] } }这段权限是最简可用集。im:message 负责收发消息,im:message:send_as_bot 让机器人能以自己身份发消息,后面两个是读取用户和通讯录基本信息。如果你还要让机器人发图片,需要额外加资源相关权限。
连接方式选 websocket,domain 选 china。这两个字段很关键,选错了飞书那边收不到事件。
如果你用的是 Claude Code 这类工具,配置方式类似,但文件路径不同。Claude Code 的配置在 settings 文件里,Base URL 和 Key 的填法一致。具体可以参考接入文档:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。
配置写完之后,不要急着启动。先用一个最小请求验证三件套是否通。在 PowerShell 里跑:
$headers = @{ "Authorization" = "Bearer sk-你的Key" "Content-Type" = "application/json" } $body = @{ "model" = "minimax-2.5" "messages" = @(@{ "role" = "user"; "content" = "ping" }) } | ConvertTo-Json Invoke-RestMethod -Uri "https://taotoken.net/api/v1/chat/completions" -Method Post -Headers $headers -Body $body如果返回里有 choices 字段,说明鉴权和模型都通了。如果报 401,检查 Key。如果报连接失败,检查 Base URL。这一步过了,再启动 OpenClaw。
4. 验证请求:从 PowerShell 到飞书消息的逐步排查
配置写完只是开始,真正的问题是启动之后能不能通。这一节给你一套逐步验证的方法,从本地请求一路查到飞书消息。
第一步,验证模型接口。上面那段 Invoke-RestMethod 就是干这个的。返回正常的话,你会看到类似这样的结构:
{ "choices": [ { "message": { "role": "assistant", "content": "pong" } } ] }如果这一步就失败,后面都不用看了。先解决鉴权和地址问题。
第二步,启动 OpenClaw 网关。在 PowerShell 里跑:
openclaw gateway start启动成功后,终端会输出一个带 token 的本地地址,类似 http://127.0.0.1:端口/?token=xxx。用浏览器打开这个地址,能看到 Web 界面就说明网关起来了。
第三步,检查飞书长连接。网关启动后,它会主动向飞书发起 websocket 连接。你可以在日志里看到连接状态。如果日志里一直重连或者报错,去飞书开放平台检查事件订阅方式是不是选了长连接。
第四步,发消息测试。在飞书里给机器人发一条消息。第一次会触发配对,终端会提示你执行配对命令:
openclaw pairing approve feishu 你的配对码配对成功后,再发一条消息,机器人应该会回复。
如果消息发出去了但没回复,按这个顺序查:先看网关日志有没有收到事件,再看模型请求有没有发出去,最后看返回有没有被正确解析。这三步对应三个不同的故障点。
我实测下来,最容易出问题的是飞书事件订阅没配好。很多人权限配了、应用发布了,但忘了在事件与回调里添加接收消息的事件。没有这个,飞书根本不会把消息推给 OpenClaw。
另一个常见问题是机器人没有聊天窗口。这是因为应用版本没发布,或者发布后没等审核通过。自建应用一般发布即生效,但版本号要填对。
验证通过之后,你就可以在飞书里正常使唤它了。截图、开浏览器这些能力取决于你装了什么 Skill,以及飞书那边有没有对应权限。
5. 本篇常见错排查:401、local proxy failed、reading choices
这一节专门对着报错讲。你遇到问题的时候,直接搜报错关键词。
401 Unauthorized
这是最常见的。原因有三个:Key 没填、Key 填错、Key 没带上。检查配置文件里的 apiKey 字段,确认是 sk- 开头,没有多余空格。如果你用的是环境变量,确认变量名和代码里读的一致。在 PowerShell 里可以用:
echo $env:TAOTOKEN_API_KEY看看有没有值。没有的话,在配置文件里直接写死,或者用 setx 设置。
local proxy failed
这个报错通常出现在请求发不出去的时候。原因可能是 Base URL 写错了,比如多写了斜杠、写成了 http 而不是 https、或者带了不该带的参数。检查配置里的 baseUrl,确保是 https://taotoken.net/api 。
另一个可能是本地网络层的问题。如果你之前配过系统代理,PowerShell 可能走了代理导致连接失败。可以临时清一下:
$env:HTTP_PROXY = "" $env:HTTPS_PROXY = ""然后再试。如果清了就通,说明是代理配置的问题。
reading choices 相关报错
这类报错一般是返回结构不对。最常见的原因是 Model ID 填错了,导致接口返回了错误信息而不是正常的 choices 结构。检查配置里的 model 字段,确认和你控制台里看到的模型名完全一致。
还有一种情况是返回了流式数据但代码按非流式解析。OpenClaw 默认应该处理了这种情况,但如果你自己改了配置,注意 stream 字段。
OAuth 相关报错
如果你用的是 Claude Code 或者类似工具,可能会遇到 OAuth 报错。这通常是因为认证方式选错了。用 API Key 接入的话,不需要走 OAuth 流程。检查配置里是不是混用了两种认证方式。
飞书消息不回复
这个不算报错,但很常见。排查顺序:网关日志有没有收到事件、模型请求有没有发出去、返回有没有解析成功。如果网关日志里没有事件,去飞书开放平台检查事件订阅。如果有事件但没请求,检查 OpenClaw 的 channel 配置。如果有请求但没回复,检查模型返回。
配对失败
配对码过期或者输错。重新发一条消息触发配对,然后尽快执行配对命令。配对码一般几分钟内有效。
这些错我都踩过,大部分是配置问题,不是代码问题。所以遇到报错先别慌,按上面的顺序查一遍,基本能定位。
6. 长期运行建议与接入入口
跑通之后,如果你打算让它长期在线,有几个点要注意。
第一,Windows 的电源设置。默认情况下,系统空闲一段时间会休眠,你的 AI 助手就断了。去电源选项里把睡眠改成“从不”,屏幕可以关,但系统不要睡。
第二,OpenClaw 的日志。装一个 command-logger 这类 Hook,把所有操作记下来。出问题的时候,日志比你的记忆靠谱。
第三,模型选择。长期高频调用的话,选一个便宜且快的模型。MiniMax 这类在国内接入方便,价格也适合 7×24 跑。如果你要做编码类任务,可以看看 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。
第四,Key 的管理。不要把 Key 写在会提交到 Git 的文件里。用环境变量或者本地配置文件,并且把配置文件加到 .gitignore。
如果你还没创建 Key,去这里:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 。创建之后复制保存好。
接入文档在这里:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。里面有不同工具的配置示例,包括 Claude Code 的接入方式。
想先试试模型效果的话,模型对话入口:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 。
整套流程走下来,最花时间的其实是飞书那边的配置和排查。模型接入本身很快,三件套填对就通。所以如果你卡住了,先确认 PowerShell 版本,再确认三件套,最后查飞书事件订阅。按这个顺序,基本能解决大部分问题。