1. 为什么要在 openEuler 上折腾 openclaw 小龙虾openclaw 是一个可以本地部署、通过浏览器控制面板交互的智能体项目社区里管它叫「小龙虾」。它适合想在自己服务器上跑一套可控 AI 工作流的人能接多种大模型、能挂插件、能通过网关对外提供接口。而 openEuler 是国产服务器操作系统里比较常见的选择稳定、干净、适合长期挂着跑服务。问题出在「多工具 Key 分散」这件事上。openclaw 本身要配模型 Key你在服务器上写代码可能还要用 Claude Code、Cursor 这类编码工具它们各自又要一份 Key。时间一长Key 散落在 config.toml、settings.json、环境变量、各种 CLI 的登录态里换一次就得满服务器找。我这次的做法是用 TaoToken 做统一入口一个 Key 覆盖对话、编码、Agent 几类调用再配合 SSH 隧道把无 GUI 的 openEuler 服务器控制面板映射到本地浏览器。这篇会给你三样能直接抄的东西一份 config.toml 骨架、一份 settings.json 骨架、以及 SSH 隧道 API 调用的验证动作。环境是 openEuler 24.03 LTS-SP3、node.js v24、pnpm服务器固定 IP 假设为 10.0.201.66控制面板端口 18789。2. 前置准备node.js、pnpm 与 TaoToken 统一 Key先把运行环境铺好。openclaw 要求 node.js 版本大于等于 22我选的是 v24.14.0 的官方二进制包解压即用不污染系统包管理。cd /root wget https://nodejs.org/dist/v24.14.0/node-v24.14.0-linux-x64.tar.xz tar -xf node-v24.14.0-linux-x64.tar.xz export PATH/root/node-v24.14.0-linux-x64/bin:$PATH node -v # v24.14.0 npm -v # 11.9.0为了让 PATH 永久生效把它写进 shell 配置echo export PATH/root/node-v24.14.0-linux-x64/bin:$PATH /root/.bashrc source /root/.bashrc接着装 pnpm 并换国内镜像否则拉依赖会慢到怀疑人生npm install -g pnpm pnpm config set registry https://registry.npmmirror.com/ pnpm -v然后是 TaoToken 这一环。它的作用是给你一个统一的 API 入口和一把 Key模型对话、编码计划、Agent 调用都走同一个地址省得每个工具单独配。先去控制台创建 Key注册/登录后进控制台https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite在 API Keys 页面新建一把 Keyhttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite接入文档在这里参数以文档为准https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewriteAPI 基础地址统一用https://taotoken.net/api注意这个地址后面不加任何查询参数。拿到 Key 后先别急着写进项目用环境变量存一份方便后续所有工具复用echo export TAOTOKEN_API_KEYsk-你的Key /root/.bashrc echo export TAOTOKEN_BASE_URLhttps://taotoken.net/api /root/.bashrc source /root/.bashrc注意Key 只放在服务器本地环境变量或配置文件里不要提交到 git 仓库也不要在截图里露出完整串。3. 克隆 openclaw 并完成首次构建环境好了就开始拉项目。国内服务器建议用 Gitee 镜像速度快很多cd /root git clone https://gitee.com/OpenClaw-CN/openclaw-cn.git cd openclaw-cn pnpm install pnpm ui:build pnpm buildpnpm ui:build是构建前端控制面板资源pnpm build是构建主项目。两步都跑完再启动初始化向导pnpm openclaw onboard --install-daemon这个向导会问你一些基础配置比如工作目录、默认模型、是否安装守护进程。装守护进程的好处是服务器重启后网关能自动拉起不用每次手动敲命令。向导跑完后启动网关和控制面板pnpm openclaw gateway pnpm openclaw dashboard网关负责对外提供 API控制面板是浏览器里操作的那个界面。默认控制面板监听在 127.0.0.1:18789只对本机开放这也是为什么后面必须走 SSH 隧道。4. 可复制的 config.toml 与 settings.json 骨架openclaw 的模型接入配置集中在 config.toml编码类工具比如 Claude Code 风格的工具读的是 settings.json。下面两份骨架你可以直接改 Key 和模型名用。config.toml 骨架把模型指向 TaoToken 的统一入口# /root/openclaw-cn/config.toml [gateway] host 127.0.0.1 port 18789 [model] provider openai-compatible base_url https://taotoken.net/api api_key ${TAOTOKEN_API_KEY} model claude-sonnet-4-5 timeout 120 [model.params] max_tokens 4096 temperature 0.7 [plugins] enabled [qwen-portal-auth]这里provider用openai-compatible是因为 TaoToken 的接口兼容 OpenAI 风格base_url填https://taotoken.net/apiapi_key用${TAOTOKEN_API_KEY}引用环境变量避免明文写死。模型名按你实际要用的填具体可用列表看接入文档。settings.json 骨架给编码类工具复用同一把 Key{ apiProvider: openai-compatible, apiKey: ${TAOTOKEN_API_KEY}, baseURL: https://taotoken.net/api, model: claude-sonnet-4-5, maxTokens: 8192, temperature: 0.3, env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: ${TAOTOKEN_API_KEY} } }两份配置的核心思路一样地址统一、Key 统一、模型名按需换。这样你在服务器上不管跑 openclaw 还是编码工具都只维护一把 Key。配置项config.tomlsettings.json说明接口地址base_urlbaseURL都填 https://taotoken.net/api鉴权api_keyapiKey引用同一环境变量模型modelmodel按需替换超时timeout无长任务建议调大5. SSH 隧道打通控制面板与 API 验证openEuler 最小安装没有图形界面控制面板跑在服务器本机 127.0.0.1:18789本地浏览器直接访问不到。解决办法是本地端口转发在你自己办公机上执行ssh -N -L 18789:127.0.0.1:18789 root10.0.201.66-N表示只转发不执行远程命令-L是本地转发。这条命令保持不关然后在本地浏览器打开http://127.0.0.1:18789/#token你的面板token面板 token 在启动 dashboard 时终端会打印一定要带上否则没有权限。隧道通了之后控制面板就等于跑在你本地。接下来验证 API 调用是否真的走通。先在服务器上直接测 TaoToken 的接口curl -s 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: 回复一句小龙虾已上线}] }返回里能看到choices字段和模型输出就说明 Key 和地址都对。再验证 openclaw 网关本身curl -s http://127.0.0.1:18789/health返回{status:ok}之类的健康状态即可。最后在控制面板里发一条消息确认前端到网关到模型整条链路通。如果你想先在网页里直接试模型效果可以用模型对话页https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite6. 本篇常见报错排查pnpm install 卡住或报网络错误多半是镜像没生效重新执行pnpm config set registry https://registry.npmmirror.com/再删掉node_modules和pnpm-lock.yaml重装。node 版本不满足openclaw 要求 22用node -v确认。如果系统自带旧版本检查 PATH 里 node 二进制包的路径是否排在前面。SSH 隧道连上但浏览器打不开先确认服务器上 dashboard 进程还在跑再确认本地 18789 端口没被别的程序占用。换一个本地端口也行比如-L 18888:127.0.0.1:18789浏览器对应改 18888。面板提示无权限URL 里的#token没带或带错。重新看 dashboard 启动日志里的 token完整复制。API 返回 401Key 没读到或写错。echo $TAOTOKEN_API_KEY确认环境变量存在注意 config.toml 里用的是${TAOTOKEN_API_KEY}这种引用写法别把变量名当字符串。API 返回 404地址写错了。基础地址是https://taotoken.net/api具体路径以接入文档为准别自己拼。模型名报错模型名要和文档里列出的保持一致大小写、连字符都别改。网关重启后配置没生效改完 config.toml 记得pnpm openclaw gateway restart只改文件不重启是不生效的。7. 长期编码与 Agent 场景的 Key 管理建议如果你不只是跑 openclaw还要在服务器上长期用编码类工具或 Agent建议把 Key 管理收敛成一套。TaoToken 的 Coding Plan 就是为这种长期编码场景准备的一个订阅覆盖多工具调用省得每个工具单独充值、单独配 Keyhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite具体做法是环境变量只维护TAOTOKEN_API_KEY和TAOTOKEN_BASE_URL两个所有工具的配置都引用它们。config.toml 用${TAOTOKEN_API_KEY}settings.json 用${TAOTOKEN_API_KEY}CLI 工具读环境变量。这样换 Key 只改一处重启服务即可。另外把 SSH 隧道做成一个开机自启的 systemd 服务或写进本地 shell 别名省得每次手敲。服务器上的守护进程用--install-daemon装好网关跟着系统走。整套下来openEuler 上这只小龙虾就能稳定养着了Key 也不再到处散落。