☰
【大模型】openclaw 配 TaoToken 调用本地模型实验记录1:ollama + wsl + gateway 配置骨架
2026/9/27 19:13:06 网站建设 项目流程

1. 为什么要在 WSL 里折腾 openclaw + ollama 这条链路

openclaw 是一个把大模型能力封装成可编排 Agent 的开源工具,它能通过 gateway 把本地模型、远程模型、工具调用统一到一个控制台里。ollama 则是目前最省事的本地模型运行方案,一条命令就能把 qwen3、deepseek-r1 这类模型跑起来。把两者放在 WSL 里跑,好处是 Linux 环境对 Node、Python、各类依赖的兼容性明显好于 Windows 原生,同时又能复用 Windows 上已经装好的 ollama 模型文件,不用重复下载几十 GB 的权重。

这套组合适合谁?适合想在自己机器上跑通「Agent 调用本地模型」最小闭环的开发者,尤其是已经装了 WSL、装了 ollama,但卡在「openclaw 发现不了本地模型」或者「gateway 起来了但 dashboard 打不开」这两个坑上的人。我自己在配这套东西的时候,前前后后重启了七八次 WSL,才把网络链路和 token 认证这两块理顺。

这篇记录聚焦三件事:一是给出可复制的 config.toml / settings.json 骨架,二是说明 TaoToken 统一 Key 与 API 通道应该接在哪个位置,三是把 gateway 启动后验证本地模型连通性的具体命令和预期返回写清楚。目标不是讲原理,而是让你照着敲能跑通。

需要先说明一点:本地 ollama 模型和 TaoToken 的 API 通道并不冲突。本地模型负责离线、低延迟的日常对话,TaoToken 负责在需要更强模型或者需要统一计费、统一 Key 管理时做补充。两者可以在同一个 openclaw 配置里共存,后面配置章节会给出具体写法。

2. 前置准备:WSL、ollama、openclaw 与 TaoToken 的接入位置

2.1 基础环境确认

开始之前,先在 WSL 里确认三样东西都在:

# 确认 WSL 版本,建议 WSL2 wsl --version # 确认 ollama 在 Windows 侧已安装并运行 # 在 Windows PowerShell 中执行 ollama list # 确认 Node 版本,openclaw 依赖 Node 18+ node -v npm -v

如果ollama list能列出 qwen3:8b、deepseek-r1:1.5b 这类模型,说明 Windows 侧 ollama 已经就绪。接下来要解决的是 WSL 能不能访问到它。

2.2 TaoToken 统一 Key 的接入位置

TaoToken 在这里扮演的角色是「统一 API 通道 + 统一 Key 管理」。openclaw 的配置文件里通常有一个 provider 段落,本地 ollama 是一个 provider,TaoToken 是另一个 provider。TaoToken 的 API 地址是https://taotoken.net/api,Key 在控制台的 API Keys 页面生成。

接入位置有两个:

第一个位置是 openclaw 的config.toml,在[providers]段里新增一个 taotoken provider,把 base_url 指向https://taotoken.net/api,api_key 填你生成的 Key。

第二个位置是环境变量。openclaw 支持从环境变量读取 provider 凭据,你可以把TAOTOKEN_API_KEY写进~/.bashrc,这样配置文件里就不用硬编码 Key。

如果你还没生成 Key,可以去 TaoToken 控制台的 API Keys 页面创建:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite

2.3 目录结构约定

为了避免后面路径混乱,约定一下本文用到的路径:

~/.openclaw/ # openclaw 配置根目录 ~/.openclaw/config.toml # 主配置 ~/.openclaw/settings.json # 运行时设置 ~/.openclaw/logs/ # 日志目录

如果你的 openclaw 安装后没有自动生成这些目录,手动建一下:

mkdir -p ~/.openclaw/logs

3. 可复制配置:config.toml 与 settings.json 骨架

3.1 config.toml 完整骨架

下面这份配置同时包含本地 ollama provider 和 TaoToken provider,你可以直接复制后改 Key:

# ~/.openclaw/config.toml [gateway] port = 18789 host = "127.0.0.1" [gateway.auth] # token 建议用 openclaw config get gateway.auth.token 生成后回填 token = "" [agent] # 默认模型指向本地 ollama default_model = "ollama/qwen3:8b" # 备用模型走 TaoToken 通道 fallback_model = "taotoken/claude-sonnet" [providers.ollama] type = "ollama" base_url = "http://localhost:11434" api_key = "ollama-local" # 占位,ollama 本身不校验 models = ["qwen3:8b", "deepseek-r1:1.5b"] [providers.taotoken] type = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" models = ["claude-sonnet", "gpt-4o"] [skills] enabled = [] [channels] enabled = []

几个关键点解释一下。[providers.ollama]里的base_url用http://localhost:11434,前提是你已经按后面章节把 WSL 网络模式改成 mirrored,否则这里要换成 Windows 宿主机的实际 IP。[providers.taotoken]的api_key用了${TAOTOKEN_API_KEY}这种环境变量引用写法,避免把 Key 明文写进配置文件。

3.2 settings.json 骨架

settings.json 主要管运行时行为,和 config.toml 分工不同:

{ "runtime": { "logLevel": "info", "logDir": "~/.openclaw/logs", "requestTimeoutMs": 120000 }, "model": { "default": "ollama/qwen3:8b", "temperature": 0.7, "maxTokens": 4096 }, "gateway": { "enableBrowserControl": true, "browserControlPort": 18791 }, "providers": { "ollama": { "discoverModels": true, "healthCheckIntervalMs": 30000 }, "taotoken": { "enabled": true, "retryOnFailure": true } } }

discoverModels: true这个开关很重要,它决定 openclaw 启动时会不会主动去http://localhost:11434/api/tags拉模型列表。如果这里关了,后面openclaw models status就看不到 ollama 的模型。

3.3 环境变量写入

把 TaoToken Key 和 ollama 占位 Key 写进 shell 环境:

# 追加到 ~/.bashrc echo 'export TAOTOKEN_API_KEY="你的TaoToken Key"' >> ~/.bashrc echo 'export OLLAMA_API_KEY="ollama-local"' >> ~/.bashrc source ~/.bashrc

TaoToken Key 的生成入口在控制台:https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite

4. 启动 gateway 并验证本地模型连通性

4.1 先解决 WSL 访问 Windows ollama 的问题

这一步是整个链路里最容易卡住的地方。默认情况下,WSL2 里的localhost指向的是 WSL 自己,不是 Windows 宿主机,所以curl http://localhost:11434/api/tags会直接 connection refused。

先在 Windows 侧设置 ollama 监听所有网卡。打开系统环境变量,新增:

变量名:OLLAMA_HOST 变量值:0.0.0.0:11434

然后完全退出 ollama(托盘图标右键退出),重新启动。用 PowerShell 验证监听状态:

netstat -ano | findstr 11434

预期看到:

TCP 0.0.0.0:11434 0.0.0.0:0 LISTENING TCP [::]:11434 [::]:0 LISTENING

接着放行防火墙端口,管理员 PowerShell 执行:

New-NetFirewallRule -DisplayName "Allow Ollama 11434" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 11434

最后改 WSL 网络模式。在 Windows 用户目录下创建或编辑.wslconfig:

[wsl2] networkingMode=mirrored

重启 WSL:

wsl --shutdown wsl

回到 WSL 里再测一次:

curl http://localhost:11434/api/tags

预期返回类似:

{"models":[{"name":"qwen3:8b","modified_at":"2026-03-10T12:00:00Z"},{"name":"deepseek-r1:1.5b","modified_at":"2026-03-09T08:30:00Z"}]}

只要这个 curl 通了,openclaw 发现本地模型就没有网络障碍了。

4.2 启动 gateway

前台启动 gateway,方便看日志:

openclaw gateway --port 18789

正常输出:

[gateway] agent model: ollama/qwen3:8b [gateway] listening on ws://127.0.0.1:18789 [browser/server] Browser control listening on http://127.0.0.1:18791/ (auth=token)

注意这里有两个端口:18789 是 gateway 的 WebSocket 入口,18791 是 browser control 的 HTTP 入口。很多人误把 18791 当成 dashboard 打开,结果看到 Unauthorized,就是因为 browser control 默认带 token 认证。

4.3 获取带 token 的 dashboard 链接

不要手动拼 URL,直接用命令输出:

openclaw dashboard --no-open

预期输出:

Dashboard URL: http://127.0.0.1:18789/#token=b9e410df30709779cc331a63de57813922e0f9c6ec475429

把这个完整链接复制到浏览器打开,就能进入控制台。如果之前打开过旧链接导致 token mismatch,先在浏览器控制台清一下缓存:

localStorage.clear(); sessionStorage.clear(); location.reload();

4.4 验证模型连通性

在 dashboard 里发一条消息,比如「你好,请用一句话介绍你自己」。如果模型正常响应,说明整条链路通了。也可以命令行验证:

openclaw models status

预期输出:

Default : ollama/qwen3:8b Configured models (2): - ollama/qwen3:8b - taotoken/claude-sonnet

看到这个输出,说明本地 ollama 模型和 TaoToken 通道都已经注册成功。

5. 本篇常见报错排查

5.1 Failed to discover Ollama models: TypeError: fetch failed

这个报错几乎都是 WSL 访问不到 Windows ollama 导致的。按顺序排查:

# 第一步,确认 WSL 内能访问 curl http://localhost:11434/api/tags # 如果不通,确认 OLLAMA_API_KEY 已设置 echo $OLLAMA_API_KEY # 如果为空,补上 export OLLAMA_API_KEY="ollama-local"

如果 curl 本身就不通,回到 4.1 节检查 OLLAMA_HOST、防火墙、mirrored 网络模式三件套。

5.2 curl: (7) Failed to connect to 127.0.0.1 port 11434

注意这里用的是127.0.0.1而不是localhost。在 mirrored 模式下两者等价,但在 NAT 模式下127.0.0.1指向 WSL 自己,必然不通。解决办法就是切 mirrored 模式,或者把 base_url 改成 Windows 宿主机 IP。

5.3 gateway token missing / token mismatch

token missing 是浏览器没带 token,token mismatch 是带了旧 token。统一处理方式:

openclaw config get gateway.auth.token openclaw dashboard --no-open

用第二条命令输出的完整 URL 打开,不要自己拼。如果还不行,清浏览器 localStorage 再试。

5.4 ERR_CONNECTION_REFUSED 打开 18789

说明 gateway 没起来,或者起来了但端口不是 18789。先确认进程:

ps aux | grep openclaw

如果没有 gateway 进程,重新前台启动:

openclaw gateway --port 18789

5.5 openclaw: command not found

安装脚本执行后没刷新 shell:

source ~/.bashrc hash -r openclaw --version

如果还不行,检查 npm 全局 bin 是否在 PATH 里:

npm prefix -g echo $PATH

6. 后续扩展与 TaoToken 通道的配合方式

本地模型跑通之后,下一步通常有两个方向。一个是接工具调用,让 openclaw 能执行 Python 脚本、读写文件,这个在 skills 段里配置。另一个是把 TaoToken 通道用起来,在本地模型处理不了的复杂任务上做 fallback。

TaoToken 的接入文档在这里:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite

如果你打算长期跑 coding agent 或者多轮工具调用,可以看一下 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite

想直接在网页里对比不同模型的表现,模型对话入口:https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite

配置里fallback_model = "taotoken/claude-sonnet"这行的作用就是:当本地 qwen3:8b 在某个任务上超时或者返回质量不达标时,openclaw 会自动切到 TaoToken 通道的模型继续处理。这样既保留了本地模型的低延迟优势,又不会在复杂任务上卡死。

最后提醒一个实操细节:每次改完 config.toml 或 settings.json,都要重启 gateway 才生效。前台启动的话 Ctrl+C 停掉再重新openclaw gateway --port 18789就行。日志在~/.openclaw/logs/下,排查问题时先看最新那个日志文件的尾部。

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

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

立即咨询