1. Windows 下 ollama 本地模型与 openclaw 容器混合架构的配置痛点很多人在 Windows 上折腾本地大模型时会同时装两套东西一套是 ollama 跑本地模型图的是离线、免费、响应快另一套是 openclaw 这类容器化 Agent 框架图的是工具链完整、能挂 MCP、能跑自动化任务。问题就出在这里——两条链路各自维护一套 API Key 和 Base URL改一个地方要同步改三处时间一长自己都记不清哪个配置文件对应哪个服务。我实测下来最典型的碎片化场景是这样的ollama 默认监听127.0.0.1:11434容器里的 openclaw 想调它得走host.docker.internal:11434而一旦你想让 openclaw 在本地模型不够用时回退到云端模型又得在容器里再配一套云端 Key。结果就是settings.json、环境变量、openclaw configure生成的配置各写一份谁覆盖谁完全靠猜。这篇要解决的就是这个问题用 TaoToken 作为统一入口让 Windows 本机的 ollama 和容器里的 openclaw 共用同一个 Base URL 和同一把 Key。本地模型走本地回退云端模型走统一网关配置只维护一份。适合已经在 Windows 上装了 Docker Desktop、跑过 ollama、并且正在用或准备用 openclaw 做 Agent 编排的人。先说清楚整体结构。你的 Windows 主机上跑着 ollama 服务监听11434Docker Desktop 里跑着 openclaw 容器通过端口映射暴露18789面板容器访问宿主机 ollama 用host.docker.internal。TaoToken 的角色是统一 API 入口提供兼容 OpenAI 协议的 Base URL 和 Key让 openclaw 在需要云端模型时不用再单独配一套凭证。这样本地和容器两条链路都指向同一个入口切换模型只改 Model ID不动 Key。下面按顺序走先确认 ollama 本地服务正常再拉 openclaw 镜像并启动容器然后写 TaoToken 的统一配置片段接着做容器内请求验证和本地 ollama 回退验证最后把常见报错对照一遍。每一步都给可复制的命令和配置你跟着敲就行。2. TaoToken 统一 Key 与 Base URL 的前置准备在动 openclaw 容器之前先把 TaoToken 这边的入口准备好。这一步的目标是拿到三样东西Base URL、API Key、以及你要用的 Model ID。这三样后面会同时出现在 openclaw 的配置里缺一不可。Base URL 用https://taotoken.net/api这是兼容 OpenAI 协议的入口openclaw 里凡是让你填 OpenAI Base URL 的地方都填这个。注意不要带多余的路径后缀有些工具会自动拼/v1有些不会openclaw 的 provider 配置里通常需要你填到/api这一层具体看它生成的字段名。API Key 在控制台里创建。打开 https://taotoken.net/console 进 API Keys 页面新建一把复制出来先存着。这把 Key 就是本地和容器共用的那一把不要再给 ollama 单独配 Keyollama 本地服务本身不需要鉴权。Model ID 这块要留意openclaw 里配置 provider 时会让你填模型名云端模型填 TaoToken 支持的模型 ID本地 ollama 模型填qwen3.5:4b这种 ollama 自己的名字。两者在配置里是分开的字段不要混。如果你还没装 ollama先去 https://ollama.com/download 下 Windows 版装上。装完后在 cmd 里拉一个模型ollama run qwen3.5:4b这条命令会下载模型并进入交互模式看到提示符就说明模型跑起来了。按CtrlD退出交互但 ollama 的后台服务还在跑。验证本地 API 是否正常curl http://127.0.0.1:11434/v1/models返回一个 JSON里面有models数组和qwen3.5:4b条目就说明本地服务没问题。如果你更喜欢图形界面直接打开 ollama 的 GUI 也会自动拉起这个服务命令行方式则是ollama serve单独启动。Docker Desktop 也提前装好并确保引擎在运行。openclaw 镜像走 ghcr拉取命令docker pull ghcr.io/openclaw/openclaw:latest镜像拉完后先别急着配下一节统一写配置。这里先把 TaoToken 的 Key 和 Base URL 记在手边后面openclaw configure会用到。有一点要提醒TaoToken 是统一 API 入口不是让你把 ollama 本地服务也挂上去。ollama 继续跑在11434容器通过host.docker.internal访问它TaoToken 只负责云端模型那条链路。两条链路在 openclaw 里是两个 provider共用同一把 Key 的只有云端那条。3. openclaw 容器启动与 TaoToken settings 可复制配置这一节是核心把容器跑起来并把 TaoToken 的配置写进去。先启动容器注意端口映射和配置目录挂载docker run --name openclaw -p 18789:18789 -v D:\openclaw\.openclaw:/home/node/.openclaw ghcr.io/openclaw/openclaw:latest如果你之前已经建过同名容器会报The container name /openclaw is already in use by container。先停再删docker stop openclaw docker rm openclaw然后重新跑上面的docker run。挂载的D:\openclaw\.openclaw是宿主机目录容器里对应/home/node/.openclawopenclaw 生成的配置文件会落在这里方便你在 Windows 里直接看和备份。容器起来后进配置向导docker exec -it openclaw openclaw configure也可以用docker exec -it openclaw openclaw onboard效果类似。向导里Select sections to configure选modelModel/auth provider这一步先选OllamaOllama base URL填http://host.docker.internal:11434Models in /model picker选qwen3.5:4b。这一步配的是本地回退链路。配完按CtrlC退出去看D:\openclaw\.openclaw目录会看到自动生成的配置文件。注意不要手动去填这个文件让openclaw configure生成手填容易字段名对不上。接下来配 TaoToken 这条云端链路。openclaw 的 provider 配置支持 OpenAI 兼容格式你需要在一个 settings 片段里写清楚 Base URL、Key、Model ID 三件套。参考下面这个 JSON 结构路径和字段名以你实际生成的配置文件为准把值替换成你自己的{ providers: { taotoken: { type: openai, baseUrl: https://taotoken.net/api, apiKey: sk-你的TaoToken密钥, models: { default: 你的云端模型ID } }, ollama-local: { type: openai, baseUrl: http://host.docker.internal:11434/v1, apiKey: ollama, models: { default: qwen3.5:4b } } } }这里有几个点要说明。taotoken这个 provider 的baseUrl填https://taotoken.net/apiapiKey填你在控制台建的那把 Keymodels.default填 TaoToken 支持的云端模型 ID。ollama-local这个 provider 的baseUrl填http://host.docker.internal:11434/v1注意这里带了/v1因为 ollama 的 OpenAI 兼容接口在/v1下apiKey随便填个ollama占位就行本地服务不校验。如果你用的是 TOML 格式的配置有些 openclaw 版本或插件用 TOML对应写法[providers.taotoken] type openai baseUrl https://taotoken.net/api apiKey sk-你的TaoToken密钥 [providers.taotoken.models] default 你的云端模型ID [providers.ollama-local] type openai baseUrl http://host.docker.internal:11434/v1 apiKey ollama [providers.ollama-local.models] default qwen3.5:4b配置写完后重启容器让改动生效docker restart openclaw重启后进面板看看docker exec -it openclaw openclaw dashboard它会输出一个带 token 的链接类似http://localhost:18789/#tokenxxxx复制到浏览器打开就能看到 openclaw 的 Web 面板。面板里能看到你配的两个 provider模型选择器里应该同时有云端模型和qwen3.5:4b。如果你在配置里用到了 CC Switch 或 Cline MCP 这类工具记住三件套必须写全Base URL 填https://taotoken.net/apiKey 填 TaoToken 的 KeyModel ID 填云端模型 ID。少任何一个都会在请求时报鉴权或模型找不到的错。4. 容器内请求验证与本地 ollama 回退验证配置写完不算完得实际发一次请求确认两条链路都通。先验证容器能不能访问宿主机 ollamadocker exec -it openclaw curl http://host.docker.internal:11434/api/version返回类似{version:0.x.x}就说明容器到宿主机 ollama 的网络通了。如果这一步卡住或报连接拒绝先检查 Windows 防火墙有没有拦 Docker 的虚拟网卡以及 ollama 服务是不是真的在跑curl http://127.0.0.1:11434/v1/models在宿主机上先确认一遍。接着在容器里发一次 TaoToken 的请求验证云端链路。用 curl 直接打docker exec -it openclaw curl -X POST https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的TaoToken密钥 \ -H Content-Type: application/json \ -d {model:你的云端模型ID,messages:[{role:user,content:说一句你好}]}正常返回是一个 JSONchoices[0].message.content里有模型回复。如果返回 401说明 Key 不对或没带上如果返回模型不存在的错检查 Model ID 拼写。再验证本地 ollama 回退。在容器里直接打 ollama 的 OpenAI 兼容接口docker exec -it openclaw curl -X POST http://host.docker.internal:11434/v1/chat/completions \ -H Content-Type: application/json \ -d {model:qwen3.5:4b,messages:[{role:user,content:说一句你好}]}返回里能看到qwen3.5:4b的回复就说明本地回退链路也通了。这一步不需要 Authorization 头ollama 本地不校验。两条链路都通之后回到 openclaw 面板里实际跑一次 Agent 任务。在模型选择器里先选云端模型发一条消息再切到qwen3.5:4b发一条观察响应来源。如果云端那条返回正常、本地那条也返回正常说明统一入口配置生效了。这里有个实测经验openclaw 面板里切换模型后有时候需要刷新页面或重新进一次会话模型选择才会真正生效。如果你切了模型但回复还是旧模型先刷新面板再试。另外如果你在 openclaw 里挂了 MCP 工具注意 MCP 的配置和 provider 配置是分开的。MCP 连的是工具服务provider 连的是模型服务两者不要混在同一个配置块里。TaoToken 的 Key 只配在 provider 里MCP 那边如果需要鉴权是另一套凭证。5. 本篇常见报错排查对照配置过程中最容易撞的几个错这里逐个对照。401 UnauthorizedTaoToken 请求返回 401九成是 Key 没带对。检查Authorization: Bearer sk-xxx里的 Key 是不是完整的、有没有多余空格、是不是复制时漏了字符。另外确认你请求的是https://taotoken.net/api/v1/chat/completions路径别写错。如果 Key 是在控制台刚建的确认没有过期或被禁用。local proxy failed / connection refused容器里 curlhost.docker.internal:11434报连接拒绝。先确认宿主机上curl http://127.0.0.1:11434/v1/models是通的如果宿主机通、容器不通检查 Docker Desktop 的网络设置以及 Windows 防火墙有没有放行 Docker 的虚拟网卡。有些情况下需要把 ollama 的监听地址从127.0.0.1改成0.0.0.0但这样会暴露到局域网自己权衡。reading choices 报错 / 返回结构里没有 choices通常是请求打到了错误的端点或者模型 ID 不对导致服务返回了错误结构。检查 Base URL 是不是填到了/api这一层以及 Model ID 是不是 TaoToken 支持的。如果返回体里是error字段而不是choices先看 error 内容。OAuth 相关报错如果你在 openclaw 里配了需要 OAuth 的 provider报 OAuth 失败通常是回调地址或 client 配置不对。TaoToken 这条链路用的是 API Key不涉及 OAuth所以如果你在 TaoToken provider 上看到 OAuth 报错说明配置类型选错了应该选 OpenAI 兼容类型而不是 OAuth 类型。容器名冲突The container name /openclaw is already in use按前面说的docker stop openclaw docker rm openclaw再重新 run。注意rm不会删挂载的宿主机目录配置还在。配置改了不生效openclaw 的配置在容器启动时读取改完配置文件后必须docker restart openclaw。如果你是在面板里改的有些设置需要重新进会话。npm 更新相关如果你要更新 openclaw 本身用docker exec -it -u root openclaw npm install -g openclawlatest --force docker exec -it -u root openclaw openclaw update更新完同样重启容器。改完容器想保存成新镜像docker commit openclaw openclaw_custom:v1需要以 root 进容器排查时docker exec -it -u root openclaw bash6. 统一入口后的模型切换与长期使用建议两条链路共用同一个 TaoToken 入口之后日常使用会简单很多。你只需要在 openclaw 的模型选择器里切换 provider本地模型和云端模型之间的切换不用再改 Key 或 Base URL。本地 ollama 负责离线、低延迟、免费的场景云端模型负责本地模型搞不定的复杂任务回退逻辑在 openclaw 层面控制。如果你打算长期跑 Agent 任务建议把 Coding Plan 用起来它适合需要持续调用模型、跑自动化编码或 Agent 编排的场景比按次调用更划算。入口在 https://taotoken.net/coding-plan 。日常调试模型连通性的时候用模型对话页面快速发一条消息验证就行不用每次都进容器https://taotoken.net/models 。接入文档在 https://taotoken.net/doc 里面有针对不同工具的配置说明openclaw 这类 OpenAI 兼容客户端的配法在里面能找到对应章节。API Keys 管理在 https://taotoken.net/api-keys Key 丢了或要轮换就在这里操作。最后说一个实际踩过的坑容器里的 openclaw 更新后有时候配置文件格式会变openclaw configure重新生成的字段名可能和旧版不一样。更新完 openclaw 后先跑一次openclaw configure看看生成的配置结构再对照着改 TaoToken 那段不要直接拿旧配置覆盖。另外D:\openclaw\.openclaw这个目录建议定期备份里面是你所有 provider 和会话配置重装容器时直接挂回去就能恢复。