1. openclaw 使用体验里最烦人的 local proxy failed 到底卡在哪
openclaw 是一个把本地命令行、编辑器插件和消息渠道串起来的智能体运行框架,能让你用自然语言驱动终端任务、文件操作和自动化流程,适合已经在用 Claude Code、Cline 这类工具、又想统一管理模型入口的开发者。它本身不生产模型,只负责把请求转发给你配置的模型服务,所以一旦转发链路出问题,最先炸出来的就是local proxy failed。
我装完 openclaw 接飞书那天,前半小时还挺顺,发消息有回应,终端命令也能跑。结果第二天早上再打开,客户端直接甩出一行红字:local proxy failed: connect ECONNREFUSED 127.0.0.1:xxxx。当时第一反应是 openclaw 崩了,重启一遍,还是同样的报错。又去翻日志,发现它根本没往外发请求,卡在本地代理这一层就断了。
这个报错的迷惑性在于:它看起来像网络问题,实际上大多数时候是配置问题。openclaw 的请求路径是这样的——你在客户端里发一条指令,openclaw 先交给本地代理进程,代理再按你配置的 endpoint 和 Key 去请求模型服务,拿到结果后原路返回。local proxy failed意味着这条链路在“本地代理”这一跳就失败了,可能的原因有三类:代理进程没起来、endpoint 配错导致代理无法建立连接、或者鉴权信息缺失让代理在握手阶段就被拒。
我后来把这三类原因逐个排掉,才定位到真正的问题:endpoint 还停留在默认的本地地址,而我把模型服务换成了 TaoToken 的 API,两者对不上。改完配置、重启客户端、发一条最小请求,状态码从报错变成 200,链路就通了。
这篇记录就按我实际的排查顺序来写:先讲清楚 openclaw 的配置入口在哪,再给可复制的 endpoint 与 Key 片段,然后是三步验证动作,最后把几个高频报错对照着列出来。如果你也在 openclaw 使用体验里被local proxy failed卡住,可以照着走一遍。
2. 把 openclaw 的请求入口改到 TaoToken 的前置准备
在动配置之前,得先明白 openclaw 为什么要走 TaoToken 这类统一入口。openclaw 支持多种模型后端,但每个后端的 endpoint、鉴权方式、模型 ID 命名都不一样。如果你同时用 Claude Code 做编码、用 openclaw 跑自动化,两边各配一套 Key 和地址,管理成本很高,换模型时还要改多处。TaoToken 提供的是 OpenAI 兼容的接口层,openclaw 只要按 OpenAI 格式配置一次,后面换模型只改 Model ID 就行。
前置准备分三件事:拿到 API Key、确认 Base URL、选好 Model ID。这三件套在后面所有配置里都会反复出现,缺一个都会导致local proxy failed或者 401。
先说 Key。打开 TaoToken 的控制台,进入 API Keys 页面创建一个新 Key。创建时建议按用途命名,比如openclaw-local,方便后面排查时知道这个 Key 是给谁用的。Key 只在创建时完整显示一次,复制后先存到安全的地方,不要直接贴在会提交到 git 的配置文件里。
再说 Base URL。openclaw 走 OpenAI 兼容协议时,Base URL 填https://taotoken.net/api。注意这里不要带任何多余的路径后缀,openclaw 会自己在后面拼接/v1/chat/completions这类路径。如果你填成https://taotoken.net/api/v1,有些客户端会拼成/api/v1/v1/...,直接 404。
最后是 Model ID。这个取决于你想用哪个模型,在 TaoToken 的模型列表里能看到当前可用的 ID。openclaw 的配置里 Model ID 是字符串,必须和平台上的完全一致,大小写错了也会报模型不存在。
提示:Key、Base URL、Model ID 这三样建议先写在一个临时文本里,配置时逐项对照粘贴,避免手打出错。我第一次就是 Key 少复制了一位,排查了二十分钟才发现。
准备好这三样之后,就可以进 openclaw 的配置入口了。openclaw 的配置通常有两个位置:一个是全局配置文件,一个是项目级的 settings。全局配置影响所有会话,项目级配置只影响当前目录。如果你只想让某个项目走 TaoToken,改项目级就行;如果想统一入口,改全局配置。
3. 可复制的 openclaw 配置片段:endpoint、Key 与 Model ID
openclaw 的配置格式根据版本不同,可能是 JSON 也可能是 TOML。下面给两份可复制的片段,你按自己实际用的格式选一份。核心是三件套:Base URL、API Key、Model ID,一个都不能少。
先看 JSON 格式,适合大多数 openclaw 版本。路径一般在用户目录下的配置文件夹里,比如~/.openclaw/config.json或项目根目录的.openclaw/settings.json:
{ "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "model": "你的Model ID", "proxy": { "enabled": true, "host": "127.0.0.1", "port": 8317 }, "timeout": 60000 }这里有几个点要说明。provider填openai-compatible,因为 TaoToken 走的是 OpenAI 兼容协议。baseUrl就是前面说的https://taotoken.net/api,不要加/v1。apiKey换成你刚创建的 Key。model换成平台上真实的 Model ID。proxy这一段是 openclaw 本地代理的监听配置,local proxy failed很多时候就是这里端口被占用或者 host 写错。
如果你用的是 TOML 格式,配置长这样,路径可能是~/.openclaw/config.toml:
provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model = "你的Model ID" timeout = 60000 [proxy] enabled = true host = "127.0.0.1" port = 8317TOML 里字段名是下划线风格,JSON 里是驼峰风格,别混用。我见过有人把base_url写进 JSON,结果 openclaw 读不到,代理启动时拿不到 endpoint,直接local proxy failed。
如果你同时在用 Claude Code 或者 Cline,它们的配置也可以指向同一个入口。Claude Code 的 settings 里填 Base URL 和 Key,Cline 的 MCP 配置里填同样的三件套。这样你只需要维护一份 Key,换模型时改 Model ID 即可。Codex 的auth.json也是同理,把 Base URL 指向https://taotoken.net/api,Key 填进去,Model ID 对齐。
注意:配置文件里不要出现中文引号,也不要在 Key 前后留空格。这两点都会让鉴权失败,报错信息可能伪装成
local proxy failed,让你以为是网络问题。
改完配置后先别急着发复杂请求,按下一节的三步验证走一遍,确认链路通了再上真实任务。
4. 三步验证:重启客户端、最小请求、核对状态码
配置改完不代表链路就通了,openclaw 的本地代理进程可能还缓存着旧配置。所以第一步永远是重启客户端,让代理重新读取配置。
第一步,完全退出 openclaw,不是关窗口,是结束进程。在终端里可以用ps aux | grep openclaw找到进程号,然后kill掉。Windows 上在任务管理器里结束对应进程。确认进程没了之后,重新启动 openclaw。启动时留意终端输出,如果代理端口被占用,这里会打印address already in use,那就换个端口,比如把 8317 改成 8318。
第二步,发一条最小请求。不要一上来就跑复杂任务,先用最简单的对话验证链路。在 openclaw 的交互界面里输入一句你好,或者用命令行发一条 curl 请求:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{ "model": "你的Model ID", "messages": [{"role": "user", "content": "你好"}] }'这条 curl 是绕过 openclaw 直接打 TaoToken 的接口,用来确认 Key 和 Model ID 本身没问题。如果这条通了,说明三件套是对的,问题在 openclaw 的代理层;如果这条也报 401,那就是 Key 或 Model ID 的问题。
第三步,核对返回状态码。正常返回是 200,body 里会有choices字段。如果返回 401,检查 Key 是否复制完整、是否有多余空格。如果返回 404,检查 Base URL 是否多写了/v1,或者 Model ID 是否拼错。如果返回 429,说明触发了限流,等一会儿再试。如果 curl 通了但 openclaw 里还是local proxy failed,那就是代理配置的 host 或 port 和实际监听不一致,回去核对proxy段。
我实测下来,这三步走完,九成的local proxy failed都能定位到具体原因。剩下的一成通常是本地防火墙拦了代理端口,或者代理进程权限不够,这种就看系统日志。
5. 高频报错对照:401、local proxy failed、reading choices、OAuth
把我在 openclaw 使用体验里踩过的几个报错列成对照表,方便你直接对号入座。
| 报错信息 | 常见原因 | 处理动作 |
|---|---|---|
| 401 Unauthorized | Key 错误、缺失、含空格 | 重新复制 Key,检查配置文件引号 |
| local proxy failed | endpoint 配错、代理端口占用、host 写错 | 核对 baseUrl 与 proxy 段,重启客户端 |
| reading choices | 返回体不是预期 JSON,多为 404 或 500 | 检查 Base URL 是否多写/v1,Model ID 是否存在 |
| OAuth 相关报错 | 误用了需要 OAuth 的 provider 配置 | 把 provider 改为 openai-compatible,用 Key 鉴权 |
reading choices这个报错特别容易误导人。它字面意思是读取返回结果里的choices字段失败,但根因往往是请求根本没到模型服务,返回的是一个 HTML 错误页或者空 body。这时候不要盯着 openclaw 的解析逻辑看,回去看 curl 的原始返回,多半是 404 或者 502。
OAuth 报错则常见于你把 provider 配成了某个需要 OAuth 登录的后端,但实际用的是 Key 鉴权。openclaw 的 provider 字段必须和鉴权方式匹配,用 TaoToken 的 Key 就填openai-compatible,不要填成别的。
还有一个隐蔽的坑:配置文件里同时存在全局配置和项目配置,项目配置覆盖了全局配置,但项目配置里的 Key 是旧的。这种情况下 openclaw 启动不报错,一发请求就local proxy failed。排查时先确认当前生效的是哪份配置,可以临时把项目配置删掉,只留全局配置试一次。
提示:每次改完配置,都按第 4 节的三步验证走一遍,不要跳过重启。openclaw 的代理进程不会热加载配置,不重启等于没改。
6. 恢复连接后的稳定用法与入口选择
链路通了之后,openclaw 的使用体验会顺很多。我现在的做法是:把 openclaw 的全局配置指向 TaoToken,Model ID 按任务类型切换。跑终端自动化用响应快的模型,写长文档用上下文长的模型,改 Model ID 一处即可,不用动 Key 和 Base URL。
如果你主要用 openclaw 做长期编码或者 Agent 任务,可以考虑用 Coding Plan 这类按周期计费的方式,比按量付费更可控。如果只是偶尔验证某个模型的效果,用模型对话页面直接试就行,不用改 openclaw 配置。Key 的管理和创建都在 API Keys 页面,接入细节可以对照接入文档。
回到最开始那个local proxy failed,它本质上不是 openclaw 的 bug,而是配置链路里某一环没对齐。把 endpoint、Key、Model ID 三件套对齐,重启客户端,发最小请求,核对状态码,四步之内基本都能恢复。我踩过的坑是 Key 少复制一位和 Base URL 多写/v1,这两个错误都会伪装成代理失败,让人往网络方向排查,白白浪费时间。