1. 为什么在 WSL2 里装 OpenClaw 总卡在模型接入这一步
小龙虾 OpenClaw 这个项目最近在开发者圈子里讨论度很高,它本质上是一个可以本地跑起来的智能体运行框架,能接各种大模型来完成对话、代码生成、任务编排这类工作。适合谁用?适合那些想在本地环境里折腾 Agent、又不想被单一模型厂商绑死的开发者。它的安装脚本本身做得挺友好,curl -fsSL https://openclaw.ai/install.sh | bash一行下去,Node.js、pnpm、依赖包基本都帮你搞定了。
但真正让人头疼的不是安装,而是装完之后怎么把模型通道接上。OpenClaw 默认会让你选一个模型供应商,比如 Qwen、Claude 或者 OpenAI 兼容接口,可一旦你想统一管理 Key、切换模型、或者把多个项目共用一套凭证,就会发现每个模型都要单独配一遍,config.toml和settings.json里的字段还经常对不上。我在 WSL2 + Ubuntu 24.04 下用 Node.js 24 和 pnpm 部署时,就遇到过 Gateway 起来了但模型调用一直 401 的情况,排查了半天才发现是 Key 的注入位置写错了。
这篇就围绕「装完之后怎么通过 TaoToken 统一 Key 把模型通道接稳」来写,给你一份可以直接复制的config.toml配置骨架和settings.json示例,再附上启动验证和几个高频报错的排查步骤。目标很明确:一次跑通 OpenClaw 的调用链路,不用来回翻文档。
2. TaoToken 前置准备:统一 Key 与 API 通道
TaoToken 在这里扮演的角色,是一个统一的模型接入层。你可以把它理解成一个「钥匙串」——不管你后面要调 Qwen、Claude 还是别的兼容模型,都通过同一套 API Key 和同一个 Base URL 出去,OpenClaw 那边只需要认这一个通道就行。这样切换模型的时候,改的是配置里的模型名,而不是到处换 Key。
前置动作只有两步。第一步是拿到 Key:访问官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册后在控制台里创建一个 API Key。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,Key 的管理页面在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。创建的时候建议给 Key 起个能认出来的名字,比如openclaw-wsl,方便后面区分。
第二步是确认 API 通道地址。TaoToken 的 API 入口是 https://taotoken.net/api ,注意这个地址不带任何查询参数,配置里直接写它就行。OpenClaw 走的是 OpenAI 兼容协议,所以 Base URL 填https://taotoken.net/api即可,不需要在后面加/v1之类的后缀,具体以你实际调用返回为准。
提示:Key 只在创建时完整显示一次,复制后先存到安全的地方。不要直接写进会提交到 Git 的配置文件里,后面我会讲怎么用环境变量隔离。
如果你还没决定用哪个模型,可以先到模型对话页面 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 看看有哪些可用选项,确认模型名之后再往配置里填,避免配完了发现模型名写错。
3. 可复制配置:config.toml 骨架与 settings.json 示例
OpenClaw 的配置分两层:config.toml管的是 Gateway 和模型通道这类全局设置,settings.json管的是运行时行为和默认模型选择。两个文件的位置通常在~/.openclaw/目录下,WSL2 里就是/home/你的用户名/.openclaw/。如果目录不存在,先手动建一下:
mkdir -p ~/.openclaw先看config.toml的骨架。这份配置的核心是把 provider 指向 TaoToken 的统一通道,Key 用环境变量占位,避免硬编码:
# ~/.openclaw/config.toml [gateway] host = "127.0.0.1" port = 18789 log_level = "info" [provider.taotoken] type = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" default_model = "qwen-plus" timeout_seconds = 60 [provider.taotoken.models] qwen-plus = { name = "qwen-plus", context_window = 131072 } claude-sonnet = { name = "claude-sonnet", context_window = 200000 } [agent] default_provider = "taotoken" workspace = "~/openclaw-workspace"几个字段说明一下。type必须是openai-compatible,因为 TaoToken 走的是兼容协议;base_url就是前面说的 API 入口;api_key用${TAOTOKEN_API_KEY}这种形式引用环境变量,OpenClaw 启动时会去读。default_model先填一个你确认可用的模型名,后面在settings.json里还能覆盖。
然后是settings.json,它管的是会话和默认行为:
{ "defaultProvider": "taotoken", "defaultModel": "qwen-plus", "temperature": 0.7, "maxTokens": 4096, "stream": true, "session": { "persist": true, "dir": "~/.openclaw/sessions" }, "tools": { "enabled": ["shell", "file", "http"] } }把这两个文件放好之后,还需要把 Key 注入环境变量。在~/.bashrc或~/.zshrc末尾加一行:
export TAOTOKEN_API_KEY="你的Key粘贴在这里"然后source ~/.bashrc让它生效。验证一下变量有没有读到:
echo $TAOTOKEN_API_KEY能打印出 Key 就说明环境变量没问题。这一步别跳过,很多人配置写对了但 Key 没注入,结果就是 401。
4. 启动验证:确认 OpenClaw 调用链路跑通
配置就绪后,先确认 Gateway 能正常起来。在 WSL2 的 Ubuntu 终端里执行:
openclaw gateway start如果之前装的时候 systemd 没启用,这里可能会报systemctl --user相关的错。回到 WSL 配置那一步,确认/etc/wsl.conf里有systemd=true,然后在 Windows 的 CMD 里执行wsl --shutdown重启,再进来验证:
systemctl status看到State: running就说明系统级 systemd 起来了。接着确认用户级 lingering:
loginctl show-user $(whoami) | grep Linger输出Linger=yes才算完整。这两个都过了,Gateway 才能作为常驻服务跑。
Gateway 起来之后,用一条最简单的请求验证模型通道。OpenClaw 自带一个ask命令:
openclaw ask "用一句话说明什么是智能体"正常的话会流式返回一段回答。如果返回的是 401,说明 Key 没读到或者写错了;如果是 404,多半是base_url或模型名不对。你也可以直接 curl 一下 TaoToken 的接口,排除是 OpenClaw 的问题还是通道的问题:
curl https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer $TAOTOKEN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "qwen-plus", "messages": [{"role": "user", "content": "ping"}] }'这条能返回 JSON 就说明 Key 和通道都是通的,问题就缩小到 OpenClaw 的配置层了。实测下来,大部分「Gateway 起来了但模型不通」的情况,都是config.toml里base_url多写了/v1或者 Key 没注入导致的。
5. 本篇常见报错排查
报错一:systemctl --user报 “Failed to connect to bus”
这是 WSL2 默认没开 systemd 的典型症状。检查/etc/wsl.conf是否包含[boot]段和systemd=true,改完必须在 Windows 侧执行wsl --shutdown再重进,光在 WSL 里重启终端没用。
报错二:模型调用返回 401 Unauthorized
先echo $TAOTOKEN_API_KEY确认变量有值。如果为空,检查~/.bashrc里的 export 有没有写对,以及有没有source。如果变量有值但还是 401,去控制台确认 Key 是否被禁用或删除,重新生成一个再试。
报错三:返回 404 或 “model not found”
两种可能:base_url写成了https://taotoken.net/api/v1,去掉/v1;或者default_model填的模型名不在可用列表里。到模型对话页面核对一下准确的模型名,注意大小写和连字符。
报错四:Gateway 启动后端口被占用
config.toml里默认端口是 18789,如果被别的进程占了,改成 18790 之类的。查占用用ss -tlnp | grep 18789,找到进程后要么停掉要么换端口。
报错五:openclaw命令找不到
安装脚本装完后,pnpm 的全局 bin 目录可能没进 PATH。执行pnpm setup然后重开终端,或者手动把~/.local/share/pnpm加到 PATH 里。
6. 后续怎么用:模型对话、Coding Plan 与接入文档
链路跑通之后,日常使用其实就三件事。想快速验证某个模型的效果,直接去模型对话页面 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 试,不用每次都改 OpenClaw 配置。如果你打算把 OpenClaw 长期用来做编码辅助或者 Agent 任务,可以了解一下 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,它更适合高频调用的场景。接入过程中遇到字段对不上的问题,接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 里有完整的参数说明,比对着改config.toml会快很多。
最后留一个我踩过的坑:config.toml改完之后,Gateway 需要重启才会重新读配置,直接openclaw gateway restart就行,别只改文件不重启,然后对着旧配置排查半天。