Openclaw-Ubuntu常用命令:把 settings 改到 TaoToken 的实操清单 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 --versionbuild-essential别省Openclaw 构建阶段会编译原生模块缺了它后面pnpm build会报一堆gyp错误。Git 建议 2.30 以上git --version低于这个数就sudo apt-get install -y git升级。接下来装 Node。这里推荐用 nvm 管理版本避免污染系统 Nodecurl -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然后装全局包管理器 pnpmnpm 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-daemonpnpm 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_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后进控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 创建 API Key。Key 只在创建时完整显示一次复制后先存到安全的地方。API 根地址是https://taotoken.net/api注意这个地址不带任何查询参数配置里就写这个。模型 ID 在模型对话页 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 能看到当前可用的列表常见的有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 user192.168.129.99然后在客户机侧连本地转发端口openclaw node run --host 127.0.0.1 --port 18790 --display-name README临时信任非加密 ws 链接可以设export OPENCLAW_ALLOW_INSECURE_PRIVATE_WS1如果连网关时提示缺 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填你创建的 Keymodel填模型对话页里确认过的 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/apiKey 填 TaoToken 的 KeyModel 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 打 APIcurl -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_WS1 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 failedError: 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_proxyreading 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 支持从环境变量读 Keysettings.json 里可以留空靠TAOTOKEN_API_KEY注入export TAOTOKEN_API_KEYsk-你的TaoToken密钥这样换 Key 只改一处也避免把密钥提交进 Git。如果你用 Coding Plan 跑长期编码任务在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 能看到适合持续调用的方案配合统一通道能减少多工具切换的配置成本。第二模型 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; djson.load(sys.stdin); print(OK if choices in d else d)需要查 Key 状态或重新生成去 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 管理。接入细节和字段说明在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 有完整文档。想先在网页里试模型效果用 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 的对话入口最快。把 settings 改到 TaoToken 这件事本质就是三件套对齐Base URL 写https://taotoken.net/apiKey 用控制台创建的Model ID 用模型页确认的。Ubuntu 上的常用命令负责把环境铺好配置模板负责把通道接上验证命令负责确认它真的通了。这三步走完后面换模型、加节点、跑 Agent 都只是在这条通道上加东西不用再动底层。