1. 为什么 Ubuntu 虚拟机里的 OpenClaw 一开口就报错
OpenClaw 装完那一刻其实挺有成就感的,openclaw dashboard能打开、界面能点、输入框能打字,但真正发第一条消息时,很多人会卡在同一个地方:请求转了一圈,最后返回一个连接失败或者鉴权错误。我见过最多的现象是终端里刷出ECONNREFUSED 127.0.0.1:11434,或者浏览器控制台里提示local proxy failed,再或者干脆卡在reading choices不动。
这不是 OpenClaw 本身坏了,而是它默认把模型请求指向了本机端点。OpenClaw 的设计逻辑是"自带一个本地推理入口",安装脚本会假设你本机跑着 Ollama 或者类似的本地服务,于是 settings 里默认写的是http://127.0.0.1:11434这类地址。可 Ubuntu 虚拟机里大概率没装本地模型,或者装了但没启动,请求自然打不通。
这里要区分两个概念。OpenClaw 是"手脚",负责调度工具、读写文件、控制浏览器;模型是"大脑",负责理解和决策。默认配置把大脑放在了本地,但本地没有大脑,于是整个流程就断了。你要做的不是重装 OpenClaw,而是把"大脑"的地址改成一个可用的远程推理服务,让鉴权和调用都走通。
TaoToken 在这里扮演的角色就是那个稳定的远程大脑入口。它提供兼容 OpenAI 风格的 API,OpenClaw 的 settings 只要把 base URL、API Key、模型 ID 三个字段指过去,就能完成从本地端点切换到远程端点的收尾。这篇记录聚焦的就是这个收尾动作:默认 settings 指向本地导致失败,怎么改字段,怎么用一次最小对话验证,最后在虚拟机里稳定跑起来。
适合谁看?已经在 Ubuntu 22.04 或 24.04 虚拟机里装完 OpenClaw、能打开 dashboard、但一发消息就报错的人。如果你还没装 OpenClaw,前面的安装步骤网上很多,这里不重复;如果你装完就能用,那说明你本机恰好有本地模型,也不用改。真正需要这篇的,是那些"装完了但跑不通"的中间状态。
我试过在 2 vCPU / 4 GB 的虚拟机上折腾,安装过程本身没问题,卡点全在配置收尾。下面按顺序把每一步写清楚,你可以直接照着改。
2. 改 settings 前先确认 TaoToken 的接入信息
在动 OpenClaw 的配置文件之前,先把 TaoToken 这边的三件套准备好:Base URL、API Key、Model ID。这三样缺一不可,而且顺序不能乱——先有 Key,再填地址,最后选模型。
Base URL 用https://taotoken.net/api,注意这里不加任何查询参数,就是干净的 API 根路径。OpenClaw 内部会在这个根路径后面拼接/v1/chat/completions之类的标准路径,所以你填的时候不要自己补/v1,否则会变成/api/v1/v1/...这种重复路径,直接 404。
API Key 需要你去控制台生成。打开https://taotoken.net/console,登录后在 API Keys 页面创建一个新的 Key。创建时建议给它起个能认出来的名字,比如openclaw-ubuntu-vm,方便以后区分是哪个环境在用。Key 只在创建时完整显示一次,复制下来存好,后面填进 settings 里。如果你还没账号,可以先从官网https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=进去注册,流程不复杂。
Model ID 取决于你想用哪个模型。OpenClaw 的 settings 里模型字段通常写成provider/model的形式,比如openai/gpt-4o或者anthropic/claude-sonnet-4这类。具体支持哪些模型,可以在模型对话页面https://taotoken.net/models里看当前可用的列表,选一个你熟悉的复制过去。如果你打算长期跑编码类任务,也可以考虑 Coding Plan 那条线,地址是https://taotoken.net/coding-plan,它针对代码场景做了优化,模型选择和额度策略不太一样。
这里有个容易踩的坑:很多人以为 Base URL 要填到/v1为止,结果 OpenClaw 又拼了一层,请求路径就错了。记住原则——填到/api就停,后面的路径交给 OpenClaw 自己拼。另一个坑是 Key 复制时带了空格或者换行,填进去后鉴权一直 401,排查半天以为是 Key 失效,其实是多了个不可见字符。复制后建议在终端里echo一下确认长度和内容。
准备好这三样之后,先别急着改 OpenClaw,用 curl 在虚拟机里直接打一次 API,确认网络和 Key 都没问题。这一步能帮你把"网络问题"和"配置问题"分开,后面排障会省很多事。
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "openai/gpt-4o", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 16 }'如果这条命令返回了正常的 JSON,里面有choices字段,说明网络通、Key 有效、模型可用。如果返回 401,检查 Key;如果返回 404,检查路径;如果超时,检查虚拟机网络。这一步过了,再去改 OpenClaw 的 settings,成功率会高很多。
3. 把 OpenClaw 的 settings 指向 TaoToken 的可复制配置
OpenClaw 的配置文件位置在~/.openclaw/settings.json,这是主配置文件。有些版本还会在~/.openclaw/config.toml里放一部分设置,但模型相关的字段基本都在 settings.json 里。改之前先备份一份,出问题能回滚。
cp ~/.openclaw/settings.json ~/.openclaw/settings.json.bak然后打开文件,找到模型相关的段落。默认情况下,你会看到类似这样的结构,指向本地端点:
{ "model": { "provider": "ollama", "baseUrl": "http://127.0.0.1:11434", "modelId": "llama3", "apiKey": "" } }你要把它改成指向 TaoToken。注意字段名可能因版本略有差异,有的版本用base_url而不是baseUrl,有的把modelId写成model。以你实际文件里的字段名为准,只改值,不改键名。改完大概是这样:
{ "model": { "provider": "openai", "baseUrl": "https://taotoken.net/api", "modelId": "openai/gpt-4o", "apiKey": "你的API_KEY" } }三个关键点再强调一遍。provider改成openai,因为 TaoToken 走的是 OpenAI 兼容协议,OpenClaw 看到这个 provider 就会用标准的/v1/chat/completions路径去请求。baseUrl填https://taotoken.net/api,不要带/v1。modelId填你在模型列表里选的那个,格式通常是厂商/模型名。apiKey填你创建的那个 Key。
如果你的 OpenClaw 版本用的是 TOML 格式,配置会长这样:
[model] provider = "openai" base_url = "https://taotoken.net/api" model_id = "openai/gpt-4o" api_key = "你的API_KEY"改完之后保存,然后重启 OpenClaw 的 gateway 服务,让新配置生效:
openclaw gateway restart如果 restart 命令不认,用 systemd 的方式:
systemctl --user restart openclaw-gateway重启后跑一次openclaw doctor,它会检查配置完整性。如果它提示模型连接测试失败,先别慌,往下看验证步骤。有时候 doctor 的测试用的是缓存配置,实际请求是好的。
还有一个细节:如果你之前用openclaw onboard走过引导,它可能在别的地方也写了一份模型配置,比如~/.openclaw/workspace/config.json。改完主 settings 后,搜一下整个.openclaw目录里还有没有旧的本地端点地址:
grep -r "127.0.0.1:11434" ~/.openclaw/如果有残留,一并改掉,否则 OpenClaw 可能读到旧的那份,你又得排查半天。
4. 用一次最小对话验证鉴权和调用是否打通
配置改完,最直接的验证方式不是打开 dashboard 点来点去,而是用 OpenClaw 自带的 CLI 发一条最小消息。这样能把 UI 层的干扰排除掉,直接看模型调用链路通不通。
openclaw chat --message "你好,请回复 pong"如果配置正确,你会看到终端里流式输出模型的回复,类似pong或者一句问候。这时候说明鉴权过了、模型调通了、OpenClaw 的请求组装也没问题。整个过程大概几秒钟,取决于模型响应速度。
如果 CLI 这条通了,再打开 dashboard 验证:
openclaw dashboard浏览器打开它给的地址,在输入框里发一条消息。正常情况下,你会看到回复逐字出现。如果 dashboard 里报错但 CLI 是好的,那问题在 dashboard 的前端配置或者浏览器缓存,跟模型配置无关,清一下缓存或者换个浏览器试试。
验证的时候注意看终端日志。OpenClaw 的 gateway 日志会打印每次请求的路径和状态码。如果看到POST /v1/chat/completions 200,说明请求成功。如果看到401,是 Key 的问题;404是路径的问题;ECONNREFUSED说明还在打本地端点,配置没生效。
journalctl --user -u openclaw-gateway -f这条命令可以实时看 gateway 日志,发消息的时候盯着看,报错信息一目了然。
成功的结果长这样:CLI 里模型正常回复,dashboard 里对话流畅,日志里状态码是 200。到这一步,Ubuntu 虚拟机里的 OpenClaw 就算真正跑通了,鉴权和调用都稳定。你可以接着去配消息渠道、装 skills,那些都是在这个基础上叠加的功能。
如果验证失败,别急着重装,下一节把常见报错逐个拆开。
5. 常见报错排查:401、local proxy failed、reading choices
排障的核心思路是"看报错定位环节"。不同的报错对应不同的失败点,对症下药比盲目重装快得多。
401 Unauthorized是最常见的。原因通常是三个:Key 填错、Key 前后有空格、Key 已失效。先在终端里用 curl 直接打一次 API,如果 curl 也 401,那就是 Key 本身的问题,去控制台重新生成一个。如果 curl 通了但 OpenClaw 还 401,那就是 settings 里的 Key 字段有问题,检查有没有多余字符。可以用这条命令看配置文件里的 Key 长度:
grep apiKey ~/.openclaw/settings.json | wc -c对比一下你实际 Key 的长度,差太多就是复制出问题了。
local proxy failed这个报错说明 OpenClaw 还在尝试走本地代理。根因是配置没生效,或者有残留的旧配置。先确认~/.openclaw/settings.json里的baseUrl已经是https://taotoken.net/api,然后搜一遍有没有别的配置文件还写着本地地址:
grep -rn "127.0.0.1\|localhost" ~/.openclaw/把搜出来的旧地址全改掉,重启 gateway。如果还不行,检查环境变量里有没有HTTP_PROXY或者OPENCLAW_MODEL_URL这类覆盖项:
env | grep -i proxy env | grep -i openclaw有的话 unset 掉再重启。
reading choices 卡住或者报错通常发生在请求发出去了但响应格式不对的时候。OpenClaw 期待标准的 OpenAI 响应结构,里面有choices数组。如果返回的是错误信息或者非标准格式,它解析choices就会失败。先用 curl 看原始响应:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"openai/gpt-4o","messages":[{"role":"user","content":"test"}]}' | head -c 500如果返回里有error字段,看错误信息是什么。常见的是模型 ID 写错了,比如写成了gpt-4o而不是openai/gpt-4o。模型 ID 必须和列表里的一致,大小写和斜杠都不能错。
OAuth 相关报错一般出现在你之前配过某个需要 OAuth 的 provider,切换后旧凭证还在。清理一下凭证缓存:
rm -rf ~/.openclaw/credentials openclaw gateway restart然后重新用 API Key 的方式配置。
Codex auth.json 冲突如果你同时装了 Codex 或者类似的工具,它可能在~/.codex/auth.json里也写了模型配置,OpenClaw 某些版本会读这个文件。检查一下:
cat ~/.codex/auth.json 2>/dev/null如果有内容且指向旧端点,要么改掉,要么临时移走。三件套(Base URL、Key、Model ID)在这类工具里是通用的,确保每个地方都指向https://taotoken.net/api。
排障的时候记住一个原则:先用 curl 验证 API 本身,再验证 OpenClaw 的配置,最后验证 UI。一层一层来,不要跳步。大部分问题都在前两层,UI 层很少出模型相关的错。
6. 稳定跑起来之后,把 Key 和文档收好
配置改完、验证通过之后,建议把这次用到的信息整理一下,方便以后换环境或者重装时快速恢复。Base URL 固定是https://taotoken.net/api,这个不会变。API Key 建议在控制台里管理,地址是https://taotoken.net/api-keys,可以随时查看、轮换、删除。如果你要接入别的工具,文档在https://taotoken.net/doc,里面有各语言的示例和字段说明。
长期在虚拟机里跑编码或者 Agent 任务的话,Coding Plan 那条线值得看一下,地址是https://taotoken.net/coding-plan,它在模型选择和额度上针对代码场景做了调整,比通用模型更省。如果只是想快速验证某个模型的效果,直接用模型对话页面https://taotoken.net/models就行,不用改配置。
最后提醒一句:虚拟机快照是个好东西。配置跑通之后打个快照,下次折腾坏了直接回滚,比重新配一遍快得多。Key 不要写进会提交到 git 的文件里,settings.json 最好加进.gitignore。这些习惯能帮你省下不少重复劳动。