☰
OpenClaw 自定义 Model Provider 一键配置脚本:settings.json 骨架与验证清单
2026/9/26 10:46:53 网站建设 项目流程

1. 为什么自定义 Provider 总是配一半就卡住

OpenClaw 支持接入兼容 OpenAI 协议的自建 Model Provider,这件事本身不复杂,真正让人头疼的是配置的碎片化:Provider 连接信息写在一处,模型 allowlist 写在另一处,默认模型又是第三个字段。手动改settings.json或openclaw.json时,只要漏掉 allowlist,聊天窗口的/model命令和 model picker 就看不到任何模型,你会以为接入失败了,其实只是没注册。

这篇面向已经用 OpenClaw 接过自建 Provider 的开发者,聚焦一件事:把一键配置脚本真正跑通。我会给出可复制的settings.json骨架、Provider 字段映射关系、最小验证动作(启动加载、请求回显、日志确认),以及几个高频报错的排查路径。目标是一次跑通,而不是反复重启试错。

如果你还没有可用的兼容 OpenAI 协议后端,可以先用 TaoToken 的 API 作为练手端点,它的接口形态和自建 Provider 一致,方便你先验证脚本逻辑再换成自己的地址。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api 。

核心检索词先明确:OpenClaw 自定义 Model Provider 一键配置脚本,本质是用 Bash + jq 拉取/models列表,然后一次性写入 Provider、allowlist、默认模型三处配置。适合谁?适合已经装好 OpenClaw、手里有一个兼容 OpenAI 协议端点、但不想每次手动改 JSON 的开发者。

2. TaoToken 作为前置练手端点

在动脚本之前,先确认你的端点能正常返回模型列表。这一步用 curl 就能验证,不需要 OpenClaw 参与。我习惯先拿 TaoToken 试,因为它的/models返回结构是标准的{data: [...]},和大多数自建 Provider 一致。

先准备 API Key。进入控制台创建密钥,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,密钥管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。创建后复制出来,后面脚本会用到。

验证端点连通性:

export TT_KEY="你的API Key" curl -sS -f --connect-timeout 15 \ -H "Authorization: Bearer $TT_KEY" \ -H "Content-Type: application/json" \ "https://taotoken.net/api/v1/models" | jq '.data | length'

如果返回一个数字,说明端点、鉴权、模型列表三件事都通了。如果报 401,检查 Key 是否复制完整;如果报连接超时,检查网络出口是否允许访问该域名。这一步过了,再进脚本环节,能省掉一半排障时间。

想先在对话界面确认模型可用,可以打开模型对话页 https://taotoken.net/models?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= ,字段说明和错误码都在里面。

3. settings.json 可复制骨架与字段映射

OpenClaw 的配置实际落在~/.openclaw/openclaw.json,但很多同学习惯叫它settings.json,这里统一按实际路径讲。脚本会改三个位置,先把骨架贴出来,你对照自己的文件看差异。

{ "models": { "providers": { "icompify": { "baseUrl": "https://taotoken.net/api/v1", "apiKey": "sk-xxxxxxxx", "api": "openai-completions", "models": [ { "id": "kimi-k2.6", "name": "kimi-k2.6", "input": ["text", "image"], "contextWindow": 262144, "contextTokens": 262144, "maxTokens": 65536, "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 } } ] } } }, "agents": { "defaults": { "models": { "icompify/kimi-k2.6": { "alias": "kimi-k2.6" } }, "model": { "primary": "icompify/kimi-k2.6" } } } }

字段映射关系是排障的关键,逐条对照:

配置路径作用漏配后果
models.providers.<id>.baseUrlProvider 请求基址请求 404 或连不上
models.providers.<id>.apiKeyBearer 鉴权401 未授权
models.providers.<id>.api协议类型,固定openai-completions请求体格式不匹配
models.providers.<id>.models[]该 Provider 下全部模型模型列表为空
agents.defaults.models聊天窗口可见的 allowlist/model和 picker 看不到模型
agents.defaults.model.primary全局默认模型启动后无默认模型可用

最容易踩的坑是:Provider 里写了 5 个模型,但 allowlist 只注册了 1 个,结果聊天窗口只显示 1 个。脚本里 allowlist 用--merge合并,就是为了避免覆盖其他 Provider 的条目。

注意:apiKey在openclaw.json里是明文存储,文件权限建议保持600。脚本不会把 Key 打印到终端,但你自己cat文件时要注意别贴到公开场合。

4. 一键配置脚本落地与执行

脚本路径按你的习惯放,示例用/home/linuxbrew/skill/init-openclaw-model.sh。依赖只有三个:curl拉模型列表、jq解析构建 JSON、openclaw写配置。缺jq脚本会直接报错退出,先装:

# Debian/Ubuntu apt install -y curl jq # RHEL/CentOS yum install -y curl jq

脚本核心逻辑分四步:拉取${API_URL}/models、解析模型列表、构建 Provider 配置(含全部模型)、写入三处配置。执行方式:

bash /home/linuxbrew/skill/init-openclaw-model.sh

交互过程会依次问你 API URL、API Key、默认模型编号、contextWindow、maxTokens。URL 直接回车用默认值,Key 输入时不显示。跑完后终端会打印 Provider 模型数、allowlist 注册数、当前默认模型和可用模型列表。

写入动作对应三条命令,理解它们比记脚本更重要:

# 1. 写 Provider(已存在则 --replace) openclaw config set models.providers.icompify "$PROVIDER_JSON" --strict-json --replace # 2. 注册 allowlist(--merge 保留其他 Provider 条目) openclaw config set agents.defaults.models "$ALLOWLIST_JSON" --strict-json --merge # 3. 设默认模型 openclaw config set agents.defaults.model.primary "icompify/kimi-k2.6"

--strict-json保证传入的是合法 JSON 而非字符串,--merge保证多 Provider 并存时不互相覆盖。这两点如果手动改文件很容易忽略。

5. 最小验证:启动加载、请求回显、日志确认

配置写完不等于生效,必须做三步验证。第一步查配置是否落盘:

openclaw models list | grep icompify openclaw config get agents.defaults.models openclaw config get agents.defaults.model.primary openclaw config get models.providers.icompify | jq '.models | length'

四条命令分别确认:模型列表里有 icompify、allowlist 已注册、默认模型正确、Provider 下模型数量对得上。数量对不上说明脚本解析阶段就丢了模型。

第二步重启 Gateway 刷新缓存,然后在聊天窗口发一条消息看回显:

openclaw gateway restart

重启后打开聊天窗口,发送/model icompify/kimi-k2.6切换,再发一句「你好」看是否有正常回复。有回显说明请求链路通了。

第三步看日志确认请求真的打到了你的 Provider:

openclaw logs --tail 100 | grep -i "icompify\|provider\|401\|404"

日志里能看到请求 URL 和状态码。如果状态码是 200 但聊天窗口没回复,多半是响应体格式不匹配;如果是 401,回去查 Key;如果是 404,查 baseUrl 是否多了或少了/v1。

6. 本篇常见报错排查

报错一:脚本跑完聊天窗口还是看不到模型。配置已写入但 Gateway 缓存未刷新。执行openclaw gateway restart,然后刷新浏览器页面。如果还不行,用openclaw config get agents.defaults.models确认 allowlist 里确实有icompify/前缀的条目。

报错二:jq: command not found。脚本依赖 jq,按第 4 节的命令装好再跑。这是最高频的新手卡点。

报错三:无法连接 API 或获取模型列表。先用第 2 节的 curl 命令单独验证端点。常见原因是 baseUrl 结尾多了斜杠导致拼成//models,脚本里已经用${API_URL%/}去掉了尾部斜杠,但如果你手动改过配置,检查一下。

报错四:Provider 已存在被覆盖。脚本检测到同名 Provider 会用--replace强制替换,这是预期行为。allowlist 用--merge不会丢其他 Provider 的模型。如果你想并存多个 Provider,把脚本里的icompify改成custom2再跑一次。

报错五:所有模型上下文长度一样。这是脚本已知的待修复点:它让你输入一个contextWindow然后填给所有模型。不同模型实际窗口差异很大(128k vs 1M),建议跑完脚本后手动按模型修正,或改用 API 返回的context_length字段。同理maxTokens和input模态也是统一填的,纯文本模型被标了["text","image"]需要手工改回["text"]。

报错六:想回滚。删除 Provider 用openclaw config unset models.providers.icompify,allowlist 里的条目需要逐个 unset,默认模型改回其他已存在的 Provider 即可。

长期跑编码任务或 Agent 场景,建议用 Coding Plan 固定额度,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。Claude Code 相关接入参考 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 里的 Anthropic 兼容说明。密钥和接入文档分别走 https://taotoken.net/api-keys?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= ,模型对话验证走 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。

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

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

立即咨询