ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OpenClaw自定义模型Windows安装教程:TaoToken统一Key接入WSL2 Ubuntu环境

OpenClaw自定义模型Windows安装教程:TaoToken统一Key接入WSL2 Ubuntu环境 1. 为什么 Windows 跑 OpenClaw 总卡在模型配置这一步很多人第一次在 Windows 上折腾 OpenClaw卡住的地方往往不是安装脚本本身而是模型接入。OpenClaw 本身只是个“壳”它需要外接一个大语言模型当大脑。问题在于市面上的模型服务商太多通义千问一个 Key、DeepSeek 一个 Key、智谱一个 Key每换一个模型就要改一次 Base URL、换一次 API Key、重启一次 Gateway。配置散落在~/.openclaw下的多个文件里改错一个字段网页控制台就报reading choices或者401。我试过最笨的办法把每个厂商的 Key 分别写进不同的 provider 配置用哪个切哪个。结果是配置文件越堆越长切换一次要改三处还经常忘记哪个 Key 对应哪个端点。后来换成 TaoToken 的统一 Key 方案一个 Key 走一个 API 通道Base URL 固定不变模型 ID 在请求里指定就行。这样 OpenClaw 的 settings 里只需要维护一份 provider 配置换模型只改一个字符串。这篇教程面向的是已经在 Windows 上装好 WSL2 UbuntuOpenClaw 也跑起来了但卡在“自定义模型怎么填”这一步的人。如果你还没装 WSL2文末的排错章节也覆盖了wsl --install报错和 Ubuntu 密码重置。核心目标只有一个让 OpenClaw 的模型列表里出现你配置的模型并且发一条消息能收到正常回复。TaoToken 在这里的角色是“统一入口”。它兼容 OpenAI 的/v1/chat/completions格式所以 OpenClaw 里选 Custom Provider、端点选 OpenAI 兼容填上 TaoToken 的 Base URL 和 Key就能把多个模型挂到同一个通道下。官网入口在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 地址是 https://taotoken.net/api 注意 API 地址不带 UTM 参数配置时直接写这个。WSL2 的网络模式和纯 Linux 不一样它默认走 NATWindows 宿主机和 Ubuntu 子系统之间有一层虚拟网卡。OpenClaw 的 Gateway 跑在 Ubuntu 里监听127.0.0.1:18789Windows 浏览器访问这个地址时WSL2 会自动做端口转发一般不用手动配。但如果你在 Ubuntu 里用curl测 TaoToken 的 API 通不通走的是 Ubuntu 自己的网络栈和 Windows 的代理设置无关。这一点后面验证章节会具体给命令。还有一个容易忽略的点OpenClaw 的配置文件权限。WSL2 里用sudo装完 OpenClaw 后~/.openclaw目录的属主可能是 root而你平时用普通用户跑openclaw命令读不到配置就会报权限错误。这个在排错章节会给chown的修法。2. TaoToken 统一 Key 的前置准备与 WSL2 环境确认在动 OpenClaw 的 settings 之前先把两件事确认好WSL2 里的网络能通到 TaoToken 的 API以及你手里有一个可用的 TaoToken Key。这两步不做后面配置填得再对也是白搭。先确认 WSL2 版本。在 Windows PowerShell不是 Ubuntu 窗口里执行wsl --list --verbose输出里VERSION列应该是2。如果是1执行wsl --set-version Ubuntu-24.04 2升级。WSL2 才有完整的网络栈和 systemd 支持OpenClaw 的 Gateway 依赖 systemd 常驻WSL1 跑不起来。然后进 Ubuntu 窗口测 TaoToken API 的连通性。TaoToken 的 API 根地址是https://taotoken.net/api模型列表接口是/v1/models。用 curl 测curl -s -o /dev/null -w %{http_code}\n https://taotoken.net/api/v1/models如果返回401说明网络通了只是没带 Key这是正常现象。如果返回000或者卡住不动说明 Ubuntu 里的 DNS 或出站有问题。先测 DNScat /etc/resolv.confWSL2 默认会把 DNS 指向 Windows 宿主机的虚拟网卡。如果这里解析不了taotoken.net可以临时换成公共 DNSsudo tee /etc/resolv.conf /dev/null EOF nameserver 223.5.5.5 nameserver 119.29.29.29 EOF注意 WSL2 重启后/etc/resolv.conf可能被覆盖要持久化得改/etc/wsl.conf加[network] generateResolvConffalse然后wsl --shutdown重启。这一步不是必须的大部分情况下 WSL2 的默认 DNS 能正常工作。接下来拿 TaoToken 的 Key。打开 https://taotoken.net/api-keys 登录后创建一个新的 API Key。创建时注意权限范围如果只是给 OpenClaw 用选默认的对话权限即可。Key 的格式通常是一串sk-开头的字符串复制下来存好后面配置要用。TaoToken 的模型列表可以在 https://taotoken.net/models 查看或者在 Ubuntu 里用带 Key 的请求拉curl -s https://taotoken.net/api/v1/models \ -H Authorization: Bearer 你的Key | head -c 500返回的 JSON 里data数组就是可用模型每个元素有id字段比如gpt-4o、claude-3-5-sonnet、deepseek-chat之类。记下你打算用的模型 IDOpenClaw 配置里要填这个。这里有个坑TaoToken 的 Base URL 到底是https://taotoken.net/api还是https://taotoken.net/api/v1OpenClaw 的 Custom Provider 配置里Base URL 填https://taotoken.net/api端点类型选 OpenAI 兼容OpenClaw 会自动在末尾拼/v1/chat/completions。如果你填成https://taotoken.net/api/v1拼出来就变成/api/v1/v1/chat/completions直接 404。这个在排错章节会再强调。WSL2 和 Windows 宿主机的网络互通验证在 Ubuntu 里跑ip addr show eth0记下inet后面的 IP通常是172.x.x.x。然后在 Windows PowerShell 里ping这个 IP能通说明双向网络正常。OpenClaw 的 Web 控制台监听127.0.0.1:18789Windows 浏览器直接访问http://127.0.0.1:18789即可WSL2 的 localhost 转发会自动处理。如果访问不了检查 OpenClaw Gateway 是否在跑openclaw gateway status。3. OpenClaw 自定义模型的 settings 配置片段OpenClaw 的模型配置存在~/.openclaw/settings.json里但直接手改这个文件容易出错推荐用openclaw configure交互式配置或者用openclaw agents add main重新走一遍模型配置流程。不过交互式配置每次都要点选批量改或者脚本化部署时还是直接写 JSON 快。下面给一份完整的 settings 片段你可以对照自己的文件改。先看~/.openclaw/settings.json的结构。关键字段是providers和agents。providers定义模型服务端点agents定义每个 agent 用哪个 provider 和哪个模型。TaoToken 作为统一通道只需要一个 provider 条目{ providers: { taotoken: { type: openai, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoTokenKey, models: [ { id: gpt-4o, name: GPT-4o via TaoToken }, { id: claude-3-5-sonnet, name: Claude 3.5 Sonnet via TaoToken }, { id: deepseek-chat, name: DeepSeek Chat via TaoToken } ] } }, agents: { main: { provider: taotoken, model: gpt-4o, alias: 主力模型 } } }几个字段说明。type填openai因为 TaoToken 兼容 OpenAI 的请求格式。baseUrl填https://taotoken.net/api不要带/v1。apiKey填你从 https://taotoken.net/api-keys 拿到的 Key。models数组里每个元素的id是 TaoToken 侧的模型 IDname是 OpenClaw 界面里显示的名字可以随便起。agents.main里的provider指向上面定义的taotokenmodel填models数组里某个id。如果你用的是 OpenClaw 较新版本配置文件可能是 TOML 格式路径在~/.openclaw/config.toml。对应的 TOML 写法[providers.taotoken] type openai base_url https://taotoken.net/api api_key sk-你的TaoTokenKey [[providers.taotoken.models]] id gpt-4o name GPT-4o via TaoToken [[providers.taotoken.models]] id claude-3-5-sonnet name Claude 3.5 Sonnet via TaoToken [agents.main] provider taotoken model gpt-4o alias 主力模型TOML 里数组表用[[...]]注意不要写成[...]否则解析会报错。改完文件后需要重启 OpenClaw Gateway 让配置生效openclaw gateway restart如果重启报config parse error用openclaw config validate检查语法。这个命令会指出具体哪一行有问题。还有一种情况你不想动全局 settings只想给某个 agent 单独配模型。OpenClaw 支持在 agent 目录下放agent.json优先级高于全局配置。路径在~/.openclaw/agents/main/agent.json内容{ provider: taotoken, model: deepseek-chat, alias: 代码专用 }这样mainagent 用 DeepSeek其他 agent 还是走全局的 GPT-4o。适合一个 OpenClaw 实例里跑多个角色的场景。配置写完后用openclaw models list看模型列表是否加载成功。正常输出会列出taotokenprovider 下的所有模型以及每个模型的 ID 和别名。如果列表为空说明 provider 配置没被读到检查 JSON 的括号是否配对、providers字段是否拼写正确。关于 CC Switch如果你之前用 CC Switch 管理过 Claude Code 的配置它的配置文件在~/.cc-switch/config.json和 OpenClaw 的 settings 是两套东西不要混。CC Switch 里配 TaoToken 的话Base URL 同样填https://taotoken.net/apiKey 填同一个Model ID 填你要用的。三件套Base URL Key Model ID在 CC Switch 和 OpenClaw 里是一致的只是文件路径不同。4. 验证请求与模型列表加载成功的确认步骤配置写完、Gateway 重启后怎么确认真的通了分三层验证API 层、OpenClaw 层、对话层。API 层验证在 Ubuntu 里直接用 curl 打 TaoToken 的 chat completions 接口确认 Key 和模型 ID 都对。curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoTokenKey \ -H Content-Type: application/json \ -d { model: gpt-4o, messages: [{role: user, content: 回复一个字通}], max_tokens: 10 }正常返回是一个 JSONchoices[0].message.content里是模型回复的内容。如果返回401Key 错了或者没带Bearer前缀。如果返回404模型 ID 写错了去 https://taotoken.net/models 核对。如果返回reading choices之类的解析错误说明返回的不是标准 OpenAI 格式检查 Base URL 是不是多写了/v1。OpenClaw 层验证在 Ubuntu 里执行openclaw models list输出应该类似Provider: taotoken - gpt-4o (GPT-4o via TaoToken) - claude-3-5-sonnet (Claude 3.5 Sonnet via TaoToken) - deepseek-chat (DeepSeek Chat via TaoToken)如果这里只显示 provider 名字但没有模型说明models数组没解析到。检查 JSON 里models是不是写成了对象而不是数组或者 TOML 里[[providers.taotoken.models]]的括号数量对不对。然后测 OpenClaw 自己能不能调通模型openclaw agents test main这个命令会让mainagent 发一条测试消息给配置的模型返回结果会打印在终端。如果报local proxy failed说明 OpenClaw 的 Gateway 没起来先openclaw gateway status看状态没跑就openclaw gateway start。对话层验证打开 Web 控制台。在 Ubuntu 里执行openclaw dashboard终端会输出一个 URL通常是http://127.0.0.1:18789。在 Windows 浏览器里打开这个地址进入聊天界面。在输入框里发一条消息比如“你好你是什么模型”。如果配置正确几秒内会收到回复回复内容来自你配置的模型。如果界面一直转圈然后报错打开浏览器开发者工具的 Network 面板看/api/chat请求的返回里面会有具体错误信息。还有一个确认点OpenClaw 的日志。Gateway 的日志在~/.openclaw/logs/gateway.log用tail -f实时看tail -f ~/.openclaw/logs/gateway.log发消息时观察日志正常会看到POST /v1/chat/completions的请求记录和响应状态码。如果看到ECONNREFUSED说明 OpenClaw 连不上 TaoToken 的 API检查 Ubuntu 的出站网络。如果看到401 UnauthorizedKey 有问题。如果看到model not found模型 ID 不对。WSL2 特有的一个验证点Windows 浏览器访问127.0.0.1:18789时如果页面打不开但 Ubuntu 里curl http://127.0.0.1:18789能通说明 WSL2 的 localhost 转发没生效。解决办法是在 Windows PowerShell 里执行wsl --shutdown然后重新打开 UbuntuWSL2 重启时会重建端口转发。如果还不行在 Ubuntu 里查 Gateway 监听地址ss -tlnp | grep 18789如果监听的是127.0.0.1:18789Windows 访问不了是正常的因为 WSL2 的 NAT 模式下Windows 访问 Ubuntu 的127.0.0.1需要转发。把 OpenClaw 的监听地址改成0.0.0.0:18789可以绕过但安全性降低。更稳妥的做法是用 WSL2 的localhostForwarding功能默认是开的重启 WSL 即可。5. 本篇常见错误排查401、local proxy failed、reading choices配置过程中最容易撞上的几个报错这里逐个拆。401 Unauthorized。这个最直接Key 不对或者没带上。先确认~/.openclaw/settings.json里apiKey字段的值是不是完整的sk-开头字符串有没有多余空格或换行。然后确认 TaoToken 后台这个 Key 还在有效期内没被删除或禁用。用 curl 单独测curl -s -o /dev/null -w %{http_code}\n https://taotoken.net/api/v1/models \ -H Authorization: Bearer sk-你的Key返回200说明 Key 没问题问题在 OpenClaw 配置里。返回401说明 Key 本身无效去 https://taotoken.net/api-keys 重新生成一个。注意 OpenClaw 有些版本读的是环境变量OPENAI_API_KEY如果你在 settings 里配了但环境变量里有个旧的可能会覆盖。检查~/.bashrc里有没有export OPENAI_API_KEY...有的话注释掉。local proxy failed。这个报错通常出现在openclaw agents test或 Web 控制台发消息时。意思是 OpenClaw 的本地代理层连不上 Gateway。先看 Gateway 状态openclaw gateway status如果显示not running启动它openclaw gateway start如果启动失败看日志cat ~/.openclaw/logs/gateway.log | tail -50常见原因是端口18789被占用。查一下ss -tlnp | grep 18789如果有其他进程占着要么杀掉那个进程要么改 OpenClaw 的监听端口。改端口在~/.openclaw/settings.json里加gateway: {port: 18790}然后重启。另一个原因是 systemd 没启用。WSL2 默认不开 systemdOpenClaw 的 Gateway 依赖 systemd 常驻。检查systemctl is-system-running如果返回offline或报错说明 systemd 没开。按前面章节的方法在/etc/wsl.conf里加[boot] systemdtrue然后wsl --shutdown重启。重启后systemctl is-system-running应该返回running或degraded。reading choices。这个报错是 OpenClaw 解析模型返回时找不到choices字段。原因通常是 Base URL 配错了请求打到了错误的端点返回的不是 OpenAI 格式的 JSON。检查baseUrl是不是https://taotoken.net/api有没有多写/v1。用 curl 直接打这个 Base URL 加/v1/chat/completions看返回的 JSON 里有没有choices数组。如果没有说明端点不对。还有一种情况TaoToken 返回了错误信息但 OpenClaw 把它当成正常响应解析。比如模型 ID 不存在时TaoToken 返回{error: {message: model not found}}没有choices字段OpenClaw 就报reading choices。这时候去日志里看完整的响应体就能看到真实的错误信息。日志路径还是~/.openclaw/logs/gateway.log。OAuth 相关报错。如果你在 OpenClaw 配置里选了 Anthropic 或 Google 的 OAuth 认证方式而不是 API Key可能会遇到OAuth token expired或invalid_grant。TaoToken 走的是 API Key 认证不需要 OAuth。在 OpenClaw 的 provider 配置里type选openai认证方式就是 Bearer Token不会触发 OAuth 流程。如果你之前配过 OAuth 的 provider把它从providers里删掉只留taotoken这一个。WSL2 网络相关报错。curl: (7) Failed to connect to taotoken.net port 443说明 Ubuntu 出站被挡了。先ping taotoken.net看 DNS 解析再curl -v https://taotoken.net/api/v1/models看详细握手过程。如果卡在 TLS 握手可能是 Ubuntu 的 CA 证书过期sudo apt update sudo apt install ca-certificates -y更新一下。如果 DNS 解析不了按前面章节改/etc/resolv.conf。配置文件权限报错。Permission denied: ~/.openclaw/settings.json说明当前用户读不了这个文件。查属主ls -la ~/.openclaw/settings.json如果属主是root改成你的用户sudo chown -R $USER:$USER ~/.openclaw然后重新跑openclaw models list。CC Switch 和 OpenClaw 配置冲突。如果你同时用 CC Switch 管理 Claude Code又用 OpenClaw两个工具的配置文件是独立的不会互相覆盖。但如果你把 CC Switch 的配置目录软链到了~/.openclaw就会出问题。检查~/.openclaw是不是符号链接ls -la ~/.openclaw如果是- /some/other/path说明被链走了删掉链接重建目录。6. 长期编码与 Agent 场景的接入建议OpenClaw 跑通之后如果你打算长期用它做编码辅助或者跑 Agent 任务有几个实践上的建议。模型选择上TaoToken 统一通道的好处是可以按任务切模型。写代码用claude-3-5-sonnet或deepseek-chat日常对话用gpt-4o长文档总结用claude-3-5-sonnet的 200K 上下文。切换只需要改~/.openclaw/agents/main/agent.json里的model字段然后openclaw gateway restart。不用改 Base URL不用换 Key。如果你要跑多个 Agent 并行比如一个负责写代码、一个负责查资料、一个负责整理文件可以在~/.openclaw/agents/下建多个目录每个目录一个agent.json分别指向不同的模型。OpenClaw 的 Web 控制台里可以切换 agent每个 agent 的对话历史独立。长期运行的话建议把 OpenClaw 的 Gateway 配成 systemd 服务开机自启。OpenClaw 安装脚本默认会注册一个 systemd unit检查systemctl --user status openclaw-gateway如果没注册手动建一个mkdir -p ~/.config/systemd/user cat ~/.config/systemd/user/openclaw-gateway.service EOF [Unit] DescriptionOpenClaw Gateway Afternetwork.target [Service] ExecStart%h/.openclaw/bin/openclaw gateway start --foreground Restarton-failure RestartSec5 [Install] WantedBydefault.target EOF systemctl --user daemon-reload systemctl --user enable --now openclaw-gateway注意ExecStart的路径要换成你实际的openclaw二进制路径用which openclaw查。WSL2 里 systemd user service 需要loginctl enable-linger $USER才能在没登录时也跑。日志管理上OpenClaw 的日志默认会一直追加时间长了文件很大。配个 logrotatesudo tee /etc/logrotate.d/openclaw /dev/null EOF /home/你的用户名/.openclaw/logs/*.log { daily rotate 7 compress missingok notifempty copytruncate } EOF把你的用户名换成 Ubuntu 里的实际用户名。copytruncate保证 OpenClaw 不用重启就能轮转日志。API Key 的安全方面不要把 Key 硬编码在 settings.json 里然后提交到 Git。如果 settings.json 在版本控制里用环境变量引用{ providers: { taotoken: { type: openai, baseUrl: https://taotoken.net/api, apiKey: ${TAOTOKEN_API_KEY}, models: [...] } } }然后在~/.bashrc里export TAOTOKEN_API_KEYsk-...。OpenClaw 支持${VAR}语法读取环境变量。这样 settings.json 可以安全地分享或备份。如果你需要更细粒度的用量控制TaoToken 后台有按 Key 的用量统计可以给不同的 Agent 分配不同的 Key分别看消耗。创建 Key 的入口在 https://taotoken.net/api-keys 每个 Key 可以设独立的额度上限。最后WSL2 的资源限制。默认 WSL2 会占用最多 50% 的 Windows 内存跑 OpenClaw 加模型请求时如果觉得卡可以在 Windows 用户目录下建.wslconfig[wsl2] memory8GB processors4然后wsl --shutdown重启。根据你机器的实际配置调整一般 8GB 内存给 WSL2 足够跑 OpenClaw 加几个 Agent。接入文档在 https://taotoken.net/doc 里面有各语言 SDK 的调用示例OpenClaw 的配置格式和标准 OpenAI SDK 一致遇到字段不确定的时候可以对照看。模型对话调试可以直接在 https://taotoken.net/chat 里试确认模型 ID 和返回格式没问题再写进 OpenClaw 配置。
返回列表