服务商是配置方案的上游定义,一条服务商记录对应一个可用的 API 端点:API 地址、协议类型,以及是否原生支持 OpenAI Responses 接口。a4api 启动时会自动写入 7 个常用服务商模板并保持同步,也支持添加任意自定义端点。本文章介绍服务商的数据模型、协议类型的差异、预置模板清单与同步机制、自定义服务商的管理方式,以及服务商与应用目标的搭配规则。

1. 服务商与协议类型

每个配置方案都必须挂在一个服务商上;服务商本身由以下字段构成:

字段 说明
名称 全局唯一,预置模板遵循「服务商-协议」命名约定(如 DeepSeek-openai
API 地址 上游 Base URL,如 https://api.deepseek.com/
协议类型 anthropicopenai,决定切换时如何生成目标配置
原生 Responses 仅 OpenAI 兼容服务商有意义:上游原生提供 /responses 接口时勾选,Codex 可直连上游
自定义标记 预置模板为否,用户手工添加的为是

两种协议类型的差异决定了整条切换链路的形态:

协议类型 典型上游 Claude Code 如何使用 Codex 如何使用 dsh 如何使用
anthropic DeepSeek、智谱的 Anthropic 端点 直连上游 不支持 不支持
openai + 原生 Responses DeepSeek 官方 经本地翻译代理 直连上游 /responses 经代理透传
openai(非原生) 智谱 v4、OpenRouter 等 经本地翻译代理 经本地翻译代理转发 经代理透传

本地翻译代理的工作机制详见本地翻译代理;三端各自的写入细节见ClaudeCode目标切换Codex目标切换dsh目标切换

2. 预置服务商模板

首次启动时 a4api 自动写入 7 个预置模板,开箱即用:

模板名称 API 地址 协议 原生 Responses
DeepSeek-anthropic https://api.deepseek.com/anthropic Anthropic
智谱-anthropic https://open.bigmodel.cn/api/anthropic Anthropic
DeepSeek-openai https://api.deepseek.com/ OpenAI 是(Codex 可直连)
智谱-openai https://open.bigmodel.cn/api/paas/v4 OpenAI
OpenRouter-openai https://openrouter.ai/api/v1 OpenAI
OpenCodeGo-openai https://opencode.ai/zen/go/v1 OpenAI
本地llmstudio-openai http://127.0.0.1:1234/v1 OpenAI

关于这份清单有几点值得注意:

  • 同一服务商可能同时提供两套接口,因此预置两条记录(如 DeepSeek-anthropicDeepSeek-openai),分别服务 Claude Code 直连场景与 Codex/dsh 场景。
  • OpenRouter 是 OpenAI 兼容聚合网关,配置方案中填入 OpenRouter 的 API Key 即可路由到其上架的各家模型。
  • 本地 LLM Studio 指向本机回环地址,适合搭配 LM Studio 等 local server 做零成本试验。
  • 原生 Responses 标记目前仅 DeepSeek 官方满足(其 Responses 接口仅 deepseek-v4-flash 模型可用)。勾选后 Codex 直接连接上游 /responses,无需本地翻译代理参与。

2.1 模板的自动播种与同步

预置模板在每次启动时幂等补种:缺失的按模板定义新增;已有的预置行若与模板定义不一致,会按模板同步更新 API 地址协议类型原生 Responses 三个托管字段——例如某天 DeepSeek 的 Anthropic 端点换了地址,升级新版 a4api 后预置行会自动跟上。用户自定义的服务商永远不做任何改动。

graph LR A[应用启动] --> B{逐条检查
预置模板} B -->|数据库缺失| C[新增该模板] B -->|已存在且
非自定义| D[同步托管字段
地址/协议/Responses] B -->|同名但为
用户自定义| E[跳过不改动] C --> F[完成播种
进入主界面] D --> F E --> F style A fill:#e8f4f8,stroke:#1a6b8a,stroke-width:2px style B fill:#ebdef0,stroke:#8e44ad,stroke-width:2px style C fill:#d5f5e3,stroke:#27ae60,stroke-width:2px style D fill:#d6eaf8,stroke:#1a6b8a,stroke-width:2px style E fill:#fdebd0,stroke:#b7950b,stroke-width:2px style F fill:#d5f5e3,stroke:#27ae60,stroke-width:2px

3. 新增与管理自定义服务商

在「供应商管理」页签中可以增删改服务商:

  1. 点击「新增供应商」,填写名称、API 地址;
  2. 选择协议类型:Anthropic 原生或 OpenAI 兼容;
  3. 选择「OpenAI 兼容」时界面自动浮现「原生 Responses」开关,仅当上游确实提供 /responses 接口时才应勾选;
  4. 保存后即可在新建配置方案时选用。

服务商名称全局唯一,重名会被拒绝并提示「服务商 XX 已存在」。选择服务商时支持按名称关键字实时搜索,输入 openrouterdeep 等片段即可快速定位。

删除保护:若服务商之下还挂着配置方案,删除会被拒绝并提示「该服务商下还有 N 个配置方案,请先删除这些配置方案」。先删除或改绑相关配置方案后才能删除服务商,从根源上杜绝孤儿数据。

4. 服务商与应用目标的搭配

把协议类型与三个应用目标放在一张表里,就是选择服务商时的完整决策依据:

目标 \ 服务商 Anthropic 类型 OpenAI 兼容(非原生) OpenAI 兼容(原生 Responses)
Claude Code 直连上游 经本地翻译代理 经本地翻译代理
Codex 不允许 经本地翻译代理转发 直连上游 /responses
dsh 不允许 经代理透传 经代理透传

搭配不当不会产生静默错误:勾选了 Codex 或 dsh 却选择了 Anthropic 类型服务商时,切换会在写入前直接报错(见配置方案与一键切换第 3 节)。

5. 常见问题

问:预置模板可以删除或修改吗?

答:可以增删改,界面上与自定义服务商一视同仁。但要注意两点:其一,删除的预置模板会在下次启动时被重新播种回来;其二,保留的预置行的托管字段(地址、协议、原生 Responses)以模板定义为准,手工改动可能在下次启动时被同步覆盖。想完全自主管理的端点,建议以自定义服务商方式另录一条。

问:为什么我的 DeepSeek 配置给 Codex 用时不启动本地代理?

答:因为你选的是 DeepSeek-openai 模板,它带有原生 Responses 标记,Codex 会直连 https://api.deepseek.com//responses 接口,这是当前唯一默认直连的上游。其余 OpenAI 兼容服务商(智谱、OpenRouter 等)因未提供公开的 Responses 接口,一律经本地翻译代理把 Responses 翻译为 Chat Completions 后转发。

问:本地 LLM Studio 模板连不上怎么办?

答:先确认 LM Studio 已在本机 1234 端口启动了 local server 并加载了模型;该模板地址是 http://127.0.0.1:1234/v1,端口或路径不同的话,编辑服务商地址或自建一条即可。本地推理不消耗 API 费用,适合验证 a4api 各链路是否通畅。