☰
Openclaw-Ubuntu常用命令:把 settings 改到 TaoToken 的实操清单
2026/10/7 19:37:00 网站建设 项目流程

1. 先把 Ubuntu 上的 Openclaw 环境跑通:常用命令与依赖检查

Openclaw 是一个可以在本地或局域网里跑起来的智能体运行框架,Ubuntu 是它最顺手的宿主环境之一。很多人在 Ubuntu 上装 Openclaw,卡住的地方往往不是框架本身,而是基础依赖没对齐:Git 版本太旧、Node 版本不对、缺libatomic1这种底层库,或者pnpm没装全局。等你把这些都补齐,真正要改的其实就剩一个settings文件——把它指向统一的 Key/API 通道,后面所有模型调用都走同一条路。

这一节先把「环境检查 → 依赖安装 → 仓库拉取 → 构建」这条链路用可复制的命令走一遍。你不需要一次记住所有命令,按顺序贴进终端就行。我试过在一台干净的 Ubuntu 22.04 上从零走这套流程,大概十分钟能到openclaw onboard那一步。

先确认系统基础工具是否齐全。打开终端,逐条执行:

sudo apt-get update sudo apt-get install -y git curl build-essential git --version curl --version

build-essential别省,Openclaw 构建阶段会编译原生模块,缺了它后面pnpm build会报一堆gyp错误。Git 建议 2.30 以上,git --version低于这个数就sudo apt-get install -y git升级。

接下来装 Node。这里推荐用 nvm 管理版本,避免污染系统 Node:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc # 如果你用的是 zsh,改成 source ~/.zshrc nvm --version nvm install 25.8.1 nvm use 25.8.1 node -v npm -v

装完 Node 后有一个高频报错要提前防:

node: error while loading shared libraries: libatomic.so.1: cannot open shared object file: No such file or directory

这不是 Node 装坏了,是系统缺libatomic1。一条命令解决:

sudo apt-get install -y libatomic1 node -v

然后装全局包管理器 pnpm:

npm install -g pnpm pnpm -v

到这里基础环境就绪。接着拉 Openclaw 仓库并构建:

git clone https://github.com/openclaw/openclaw.git cd openclaw pnpm install pnpm ui:build pnpm build pnpm link --global openclaw onboard --install-daemon

pnpm link --global让你在任何目录都能直接敲openclaw。onboard --install-daemon会注册一个用户级守护进程,后面systemctl --user才能管理它。如果这一步提示权限或 daemon 注册失败,先确认你在非 root 用户下执行,并且loginctl enable-linger $USER已开启,否则用户级服务在注销后会停。

Web 配置单独走一条命令:

openclaw configure --section web

升级仓库时如果本地有改动导致git pull冲突,按需选择丢弃范围:

# 只丢弃某个文件的修改 git checkout -- <文件名> # 丢弃所有未提交修改 git reset --hard HEAD git pull origin main

这套命令跑完,你的 Ubuntu 上就有一个能启动的 Openclaw。下一节开始处理真正决定「模型从哪来」的部分——settings 与统一通道的对接。

2. 把 settings 接到 TaoToken:前置准备与配置文件定位

Openclaw 的模型调用最终都读同一份配置。你要做的是找到这份settings,把里面的 Base URL、Key、Model ID 换成 TaoToken 提供的统一入口。这样不管是对话、代码补全还是 Agent 任务,都走同一条通道,省得每个模块单独配一遍。

先明确 TaoToken 侧要准备什么。打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册后,进控制台 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 创建 API Key。Key 只在创建时完整显示一次,复制后先存到安全的地方。API 根地址是:

https://taotoken.net/api

注意这个地址不带任何查询参数,配置里就写这个。模型 ID 在模型对话页 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 能看到当前可用的列表,常见的有claude-sonnet-4-5、gpt-4o这类,按你实际要用的填。

回到 Ubuntu,定位 Openclaw 的 settings。它通常在两个位置之一,取决于你是全局安装还是仓库内运行:

# 全局配置目录 ls -la ~/.config/openclaw/ # 仓库内配置 ls -la ./openclaw.json ./settings.json 2>/dev/null

如果~/.config/openclaw/下有settings.json或openclaw.json,那就是主配置。没有的话,用 onboard 生成一份:

openclaw onboard

生成后打开它。你会看到类似providers、models、gateway这样的段落。我们要改的是 provider 的接入信息。在改之前先备份:

cp ~/.config/openclaw/settings.json ~/.config/openclaw/settings.json.bak

这一步很关键。配置改错会导致 Openclaw 启动时读不到 provider 直接退出,有备份就能一条命令回滚。

关于网关绑定,Openclaw 默认可能绑在 loopback。如果你要让局域网里的其他机器(比如手机 Termux 节点)连过来,需要确认openclaw.json里的lan模式。若保持 loopback,就得走 SSH 隧道转发端口:

ssh -N -L 18790:127.0.0.1:18789 user@192.168.129.99

然后在客户机侧连本地转发端口:

openclaw node run --host 127.0.0.1 --port 18790 --display-name "README"

临时信任非加密 ws 链接可以设:

export OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1

如果连网关时提示缺 token,需要设置:

export OPENCLAW_GATEWAY_TOKEN="你的网关token" # 或 export GATEWAY_TOKEN="你的网关token"

也可以用命令行参数直接连:

openclaw node connect --gateway wss://192.168.129.99:18789 --token <TOKEN>

这些是节点侧的连接准备。真正决定模型请求发往哪里的,还是 settings 里的 provider 段。下一节给出可直接复制的配置模板。

3. 可复制配置模板:settings.json 与 openclaw.json 的完整片段

这一节给两份可直接粘贴的配置。第一份是~/.config/openclaw/settings.json里的 provider 段,第二份是openclaw.json里与网关、节点相关的段。路径和字段名按 Openclaw 实际结构写,你对照自己的文件替换 Key 和 Model ID 即可。

先看 settings.json。用编辑器打开:

nano ~/.config/openclaw/settings.json

把 provider 部分改成下面这样。注意baseUrl写 TaoToken 的 API 根地址,apiKey填你创建的 Key,model填模型对话页里确认过的 ID:

{ "providers": { "taotoken": { "type": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "models": { "default": { "id": "claude-sonnet-4-5", "maxTokens": 8192 }, "fast": { "id": "gpt-4o-mini", "maxTokens": 4096 } } } }, "defaultProvider": "taotoken", "defaultModel": "claude-sonnet-4-5" }

如果你原来的 settings.json 里已经有别的字段,不要整份覆盖,只替换providers、defaultProvider、defaultModel这三块。JSON 对逗号和引号敏感,改完用下面这条命令校验语法:

python3 -m json.tool ~/.config/openclaw/settings.json > /dev/null && echo "JSON OK"

输出JSON OK说明格式没问题。报错会指出具体行号,照着改。

再看openclaw.json,它管的是网关和节点行为。典型片段:

{ "gateway": { "bind": "loopback", "port": 18789, "token": "你的网关token" }, "node": { "displayName": "Ubuntu-Node", "capabilities": [ "system.run", "screen.record", "canvas.snapshot" ], "settings": { "camera": { "enabled": false }, "screen": { "recordEnabled": true } } } }

bind改成lan就监听局域网,改成loopback只监听本机。生产环境建议 loopback 加 SSH 隧道,别直接把网关暴露出去。token和上面环境变量里的OPENCLAW_GATEWAY_TOKEN保持一致,否则节点连接会被拒。

如果你用的是 Claude Code 或 Cline 这类工具,配置思路一样,三件套必须齐全:Base URL 填https://taotoken.net/api,Key 填 TaoToken 的 Key,Model ID 填模型页确认的值。缺任何一个都会在请求阶段报错。

改完保存,重启 Openclaw 让配置生效:

systemctl --user restart openclaw-node.service # 或者直接重启主进程 pkill -f "openclaw" || true openclaw onboard --install-daemon

配置写对只是第一步,下一节用一条命令验证通道是否真的通了。

4. 一条命令验证通道:从请求到成功返回的完整过程

配置改完,最怕的是「看起来对但请求发不出去」。这一节用一条命令直接打 TaoToken 的接口,确认 Key、Base URL、Model ID 三者匹配,再回到 Openclaw 里验证端到端。

先做最底层的连通性测试,绕开 Openclaw,直接用 curl 打 API:

curl -sS https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 16 }'

返回里如果有choices数组和content字段,说明 Key 和地址都对。如果返回401,是 Key 错了或没带Bearer前缀;返回404,多半是 Base URL 多写或少写了/v1;返回model not found,是 Model ID 和模型页对不上。这三种是最高频的。

底层通了,再验证 Openclaw 自己。用它的诊断命令:

openclaw doctor --provider taotoken

或者直接发一条测试消息:

openclaw run --prompt "回复 OK 两个字母" --provider taotoken --model claude-sonnet-4-5

正常会打印模型返回的内容。如果卡住不动,检查 settings.json 里defaultProvider是否拼写一致,以及providers.taotoken.type是否写成了openai-compatible。类型写错会导致 Openclaw 用错误的协议去请求。

节点侧验证连接状态:

openclaw node status

输出里会显示当前节点是否已连上网关、用的哪个 token、绑定的 host 和 port。如果显示未连接,先确认网关进程在跑:

systemctl --user status openclaw-node.service

重启节点并带上必要环境变量:

pkill -f "openclaw node" || true export OPENCLAW_GATEWAY_TOKEN="你的网关token" export OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1 openclaw node run --host 192.168.129.99 --port 18787 --display-name "README"

连接成功后,如果遇到「连接上无权限」,通常是节点声明的 capabilities 和网关允许的不匹配。检查openclaw.json里 node 段的 capabilities 列表,只保留你实际需要的,比如system.run、screen.record、canvas.snapshot。多声明了网关没授权的项会被拒。

到这里,从底层 API 到 Openclaw 再到节点,三层都验证过了。下一节把常见的报错集中列出来,方便你对照排查。

5. 常见报错对照排查:401、local proxy failed、reading choices、OAuth

这一节按真实报错原文整理。你遇到问题时直接搜报错关键字,对照原因和处理方式。

401 Unauthorized

{"error":{"message":"Invalid API key","type":"invalid_request_error"}}

原因:Key 写错、过期,或者请求头没带Bearer。检查 settings.json 里apiKey是否完整,curl 测试时Authorization: Bearer sk-xxx中间的空格别漏。如果 Key 是从控制台复制的,注意别把首尾空格带进去。

local proxy failed

Error: local proxy failed to connect to upstream

原因:Openclaw 本地代理层连不上你配的 Base URL。先确认https://taotoken.net/api在浏览器或 curl 里能通。如果系统设了全局代理变量,可能干扰请求,检查:

env | grep -i proxy

有http_proxy、https_proxy就临时清掉再试:

unset http_proxy https_proxy all_proxy

reading choices 相关报错

TypeError: Cannot read properties of undefined (reading 'choices')

原因:返回体里没有choices字段,通常是接口返回了错误 JSON,但代码直接去读choices[0]。根因还是请求本身失败,往上翻日志找真正的错误信息。常见是 Model ID 写错,或者 Base URL 少了/v1。用第 4 节的 curl 命令单独测一次,看原始返回。

OAuth 相关报错

OAuth token exchange failed / invalid_grant

原因:如果你在配置里混用了 OAuth 流程和 API Key 流程,会冲突。TaoToken 走的是 API Key 方式,settings 里type用openai-compatible,不要配 OAuth 的clientId、refreshToken字段。把 provider 段精简成第 3 节给的模板即可。

libatomic.so.1 缺失

node: error while loading shared libraries: libatomic.so.1

原因:系统缺库。sudo apt-get install -y libatomic1解决。

网关 token 缺失

Gateway token missing

原因:节点连接时没带 token。设置环境变量或命令行参数:

export OPENCLAW_GATEWAY_TOKEN="你的网关token" openclaw node connect --gateway wss://192.168.129.99:18789 --token <TOKEN>

连接上无权限

节点连上了但操作被拒。检查openclaw.json里 capabilities 是否声明了未授权的项,精简到实际需要的。同时确认网关侧对该节点有对应授权。

排查顺序建议固定:先 curl 测底层 API,再openclaw doctor测框架层,最后openclaw node status测节点层。哪一层先报错就修哪层,别跳着改。

6. 长期编码与 Agent 场景:把统一通道用顺的几条经验

配置跑通之后,日常使用还有几个点能让体验更稳。这些是我在实际项目里踩过坑之后留下的习惯。

第一,Key 不要硬编码在多个文件里。Openclaw 支持从环境变量读 Key,settings.json 里可以留空,靠TAOTOKEN_API_KEY注入:

export TAOTOKEN_API_KEY="sk-你的TaoToken密钥"

这样换 Key 只改一处,也避免把密钥提交进 Git。如果你用 Coding Plan 跑长期编码任务,在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 能看到适合持续调用的方案,配合统一通道能减少多工具切换的配置成本。

第二,模型 ID 用变量管理。settings.json 里defaultModel写死一个值,但不同任务想换模型时,用命令行覆盖更灵活:

openclaw run --prompt "重构这个函数" --model gpt-4o

前提是providers.taotoken.models里已经声明了gpt-4o这个 ID。没声明会报 model not found。

第三,节点 capabilities 按需开。camera.snap、screen.record这类权限开多了,一是安全面变大,二是网关授权不匹配时容易报无权限。只留当前任务真正要用的。

第四,升级前先备份配置。git pull之前把~/.config/openclaw/settings.json和openclaw.json复制一份,冲突时直接对比恢复,比git reset --hard后再重配省事。

第五,验证通道用固定脚本。把第 4 节的 curl 命令存成check-taotoken.sh,每次改完配置跑一次,几秒钟就能确认底层通不通,不用等 Openclaw 启动完才发现问题。

#!/bin/bash curl -sS https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"claude-sonnet-4-5","messages":[{"role":"user","content":"ping"}],"max_tokens":8}' \ | python3 -c "import sys,json; d=json.load(sys.stdin); print('OK' if 'choices' in d else d)"

需要查 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 有完整文档。想先在网页里试模型效果,用 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 的对话入口最快。

把 settings 改到 TaoToken 这件事,本质就是三件套对齐:Base URL 写https://taotoken.net/api,Key 用控制台创建的,Model ID 用模型页确认的。Ubuntu 上的常用命令负责把环境铺好,配置模板负责把通道接上,验证命令负责确认它真的通了。这三步走完,后面换模型、加节点、跑 Agent 都只是在这条通道上加东西,不用再动底层。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询