1. 从 Ollama 本地直连到统一通道:OpenClaw 配置改造的起点
OpenClaw 是一个可自托管的 AI 网关与对话工作台,它能对接 OpenAI 兼容接口、本地推理服务以及多家云端模型。Ollama 则是本地跑开源模型的常用工具,一条ollama run就能把模型拉起来。很多人第一次把 OpenClaw 和 Ollama 接起来时,图省事直接在配置里写死http://127.0.0.1:11434/v1,本地跑得挺顺。可一旦你想同时用云端模型、想给团队里几个人分配不同的 Key、想让容器里的 OpenClaw 也能访问模型,这套「本地直连」的写法就开始处处别扭。
这篇内容聚焦一个具体动作:修改 OpenClaw 对接 Ollama 的配置,把模型地址、API Key、Base URL 从「本地写死」切换成「统一通道管理」。适合已经在用 OpenClaw、本地装过 Ollama、并且希望把多模型调用收敛到一套 Key 和一套 API 通道下的读者。我会给出可直接复制的docker-compose.yml、openclaw.json片段,也会给出验证请求和真实会撞上的报错排查。核心检索词就是 OpenClaw 对接 Ollama 配置修改,以及通过统一 Key 通道管理多模型调用。
先说清楚为什么要改。Ollama 默认监听11434,它的 OpenAI 兼容层路径是/v1,本地调用不需要真实密钥,随便填个ollama就能过。问题在于三点:第一,Docker 容器里的127.0.0.1指向容器自己,不是宿主机,所以容器部署必须换成host.docker.internal或局域网 IP;第二,本地模型名必须和ollama list完全一致,差一个字符就报模型不存在;第三,当你同时想调云端模型时,每个供应商一套 Base URL、一套 Key,配置会迅速膨胀。统一通道的价值就在于:Base URL 只写一个,Key 只配一个,模型 ID 用命名空间区分,切换模型只改一个字符串。
我试过把本地 Ollama 和云端模型混在同一个 OpenClaw 实例里跑,最直接的感受是——配置文件的models.providers一旦超过两个供应商,维护成本就上来了。所以下面会分两条线讲:一条是保留 Ollama 本地直连的最小改动,另一条是切换到统一通道后的写法。你可以先按本地直连跑通,再决定要不要收敛到统一通道。
2. TaoToken 前置准备:统一 Key 与 API 通道是什么
在动手改配置之前,先把「统一通道」这件事讲明白。TaoToken 提供的是一个 OpenAI 兼容的 API 入口,你可以把它理解成一个「模型调用的统一收银台」:不管背后是哪个模型,OpenClaw 这边只需要认一个 Base URL 和一个 API Key。这样做的好处是,OpenClaw 的配置里不再散落多套凭证,模型切换、额度查看、Key 轮换都在一个地方完成。
你需要准备的东西不多:一个可用的 API Key,以及确认要用的模型 ID。API 入口是https://taotoken.net/api,注意这个地址不带任何查询参数,配置里就写这个。Key 的获取和查看在控制台的 API Keys 页面完成,地址是https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite。如果你还没决定用哪个模型,可以先去模型对话页面实际发几条消息感受一下,地址是https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite。
这里要强调一个容易混淆的点:Ollama 本地直连时,LLM_API_KEY填ollama只是占位,服务端根本不校验;但切换到统一通道后,Key 是真实凭证,填错会直接返回 401。所以配置改造时,Key 这一项必须换成真实值,不能沿用ollama这种占位字符串。另一个点是 Base URL 的路径:Ollama 的兼容层是http://127.0.0.1:11434/v1,而统一通道是https://taotoken.net/api,两者结尾不同,不要想当然地在后面补/v1,具体以文档为准,接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite。
如果你打算长期用 OpenClaw 做编码或 Agent 类任务,可以考虑 Coding Plan,它更适合高频、长时间的模型调用场景,入口是https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite。前置准备做到这里就够了:一个 Key、一个 Base URL、一个模型 ID。接下来进入配置改造。
3. 可复制配置:docker-compose 与 openclaw.json 改造
这一节是全文的操作核心,分 Docker 部署和本地二进制安装两种场景。先讲 Docker,因为这是最常见也最容易踩坑的部署方式。
3.1 Docker 部署:改 environment 段
找到你之前的docker-compose.yml,定位到environment部分。如果你还在用 Ollama 本地直连,写法大致是这样:
environment: - TZ=Asia/Shanghai - LLM_PROVIDER=openai - LLM_BASE_URL=http://host.docker.internal:11434/v1 - LLM_API_KEY=ollama - LLM_MODEL=deepseek-coder:6.7b这里host.docker.internal是容器访问宿主机的固定地址,Windows 和 Mac 的 Docker Desktop 自带这个解析,Linux 需要额外在docker-compose.yml里加extra_hosts。LLM_API_KEY填ollama只是占位,本地不校验。LLM_MODEL必须和ollama list里的名字完全一致。
切换到统一通道后,把这段改成:
environment: - TZ=Asia/Shanghai - LLM_PROVIDER=openai - LLM_BASE_URL=https://taotoken.net/api - LLM_API_KEY=sk-你的真实Key - LLM_MODEL=你的模型ID改完重启容器:
docker-compose down docker-compose up -d注意LLM_BASE_URL结尾不要画蛇添足加/v1,以接入文档为准。LLM_MODEL换成你在控制台确认过的模型 ID。
3.2 本地二进制安装:改 openclaw.json
默认配置文件路径:Linux/Mac 是~/.openclaw/openclaw.json,Windows 是C:\Users\你的用户名\.openclaw\openclaw.json。改之前先备份:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak找到models.providers部分。Ollama 本地直连的写法是:
{ "models": { "providers": { "ollama": { "baseUrl": "http://127.0.0.1:11434/v1", "apiKey": "ollama-local", "api": "openai-completions", "models": [ { "id": "deepseek-coder:6.7b", "name": "DeepSeek Coder 6.7B" } ] } }, "defaultModel": "ollama/deepseek-coder:6.7b" } }切换到统一通道,把 provider 换成统一入口:
{ "models": { "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的真实Key", "api": "openai-completions", "models": [ { "id": "你的模型ID", "name": "统一通道模型" } ] } }, "defaultModel": "taotoken/你的模型ID" } }defaultModel的格式是provider名/模型ID,provider 名要和上面providers里的键一致。改完重启:
openclaw gateway restart3.3 UI 界面快速配置
不想改文件的话,浏览器打开http://localhost:8000(或你的网关地址),右上角设置 → 模型配置 → 添加。地址填https://taotoken.net/api,Key 填真实值,模型名填你的模型 ID,点测试连接,成功后保存。UI 配置和文件配置本质是同一份数据,改完文件刷新页面也能看到。
4. 验证请求与成功结果:确认通道真的通了
配置改完不代表通了,必须做连通性验证。分两步:先确认模型侧可用,再确认 OpenClaw 侧能拿到回复。
第一步,如果你还保留着 Ollama 本地服务,先确认它本身是活的:
ollama list ollama run deepseek-coder:6.7b能进交互界面就说明本地模型没问题。但切换到统一通道后,OpenClaw 不再依赖本地 Ollama,这一步只是排除「本地服务挂了」这种干扰项。
第二步,直接用 curl 打统一通道,确认 Key 和 Base URL 正确:
curl https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer sk-你的真实Key" \ -H "Content-Type: application/json" \ -d '{ "model": "你的模型ID", "messages": [{"role": "user", "content": "你好"}] }'返回里能看到choices数组和message.content,就说明通道是通的。如果这里就报 401,问题在 Key;报模型不存在,问题在模型 ID。
第三步,回到 OpenClaw 里发一句「你好」。能正常回复,就是对接成功。如果 OpenClaw 报错但 curl 正常,问题多半在 OpenClaw 的配置解析上,重点检查baseUrl结尾、defaultModel的 provider 前缀、以及 JSON 是否有语法错误。
一个实用的排查技巧:把 OpenClaw 的日志级别调高,重启后看它实际请求的 URL 是什么。很多时候配置里写的是https://taotoken.net/api,但代码里又拼了一层/v1,导致 404。日志里能看到真实请求路径,比猜快得多。
5. 常见报错排查:401、local proxy failed、reading choices
这一节按真实会撞上的报错来对照。每个报错我都给出触发原因和修法。
401 Unauthorized:最常见。原因有三种——Key 填的是ollama这种占位符没换;Key 复制时带了空格或换行;Key 已失效。修法是重新从控制台复制,注意不要带首尾空白。Docker 部署时environment里的值不要加引号包裹多余字符。
local proxy failed / connection refused:这个报错在 Docker 部署里高发。原因是容器里的127.0.0.1指向容器自身,不是宿主机。如果你还在用 Ollama 本地直连,把LLM_BASE_URL换成http://host.docker.internal:11434/v1;Linux 上还要在 compose 里加:
extra_hosts: - "host.docker.internal:host-gateway"如果已经切到统一通道,这个报错说明网络出口有问题,检查容器能否访问外网。
reading choices / choices 字段为空:这个报错通常意味着请求发出去了,但返回体结构不对。原因可能是 Base URL 多拼了/v1导致打到了错误路径,或者模型 ID 写错导致服务端返回了错误对象。先用第 4 节的 curl 确认返回结构,再回头核对配置。
OAuth / 认证相关报错:如果你在 OpenClaw 里同时配了需要 OAuth 的供应商,注意统一通道用的是 Bearer Key,不要混用 OAuth 流程。配置里api字段保持openai-completions即可。
模型名不匹配:Ollama 本地直连时,模型名必须和ollama list完全一致,deepseek-coder:6.7b和deepseek-coder:6.7B是两个不同的字符串。切到统一通道后,模型 ID 以控制台或文档为准,不要沿用本地名字。
排查顺序建议固定下来:先 curl 打通道 → 再查 OpenClaw 日志里的真实请求 URL → 最后核对配置文件语法。这个顺序能覆盖九成以上的问题。
6. 把多模型调用收敛到一套 Key:长期维护建议
配置改通只是第一步,真正省心的是后续维护。如果你只用一个模型,本地直连和统一通道差别不大;但当你开始同时用多个模型、或者团队里多人共用一套 OpenClaw 时,统一通道的优势就出来了。
第一,Key 轮换只改一处。本地直连时每个供应商一套凭证,轮换要改多个文件;统一通道只有一个 Key,改完重启即可。第二,模型切换只改defaultModel一个字符串,不用动 Base URL。第三,额度查看集中在一个控制台,不用分别登录各家后台。
如果你打算把 OpenClaw 用在长期编码或 Agent 任务上,建议把模型 ID 和 Key 通过环境变量注入,而不是硬编码在openclaw.json里。这样配置文件可以进版本库,凭证留在环境变量里,安全性和可维护性都更好。Docker 部署天然支持这种写法,本地安装也可以用.env文件配合。
最后给一个实用技巧:改配置前永远先备份,openclaw.json.bak这个习惯能救你很多次。改完先用 curl 验证通道,再重启 OpenClaw,最后在界面里发消息确认。三步都过了,再去做其他改动。需要查看 Key 或接入细节时,控制台和文档这两个入口随时可用:API Keys 在https://taotoken.net/console/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite,接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite。