跳到主要内容

平台支持矩阵

AI Switch 认识 7 个目标平台,每个平台在 10 种能力上的支持情况是在代码里显式声明的,不是运行时猜的。这一页把完整矩阵列出来,并解释每种能力和每个状态的实际含义。

两类支持级别

7 个平台分成两类:

原生支持supported)—— Codex、Claude Code、Gemini CLI、Grok

AI Switch 认识这些工具的配置文件格式和官方登录态格式。10 项能力全部可用(唯一例外见下面的 Gemini CLI 额度查询)。

只有 API 账号partial)—— OpenCode、OpenClaw、Hermes

这三个是 agent harness,不是模型厂商 —— 它们没有自己的官方登录态。所以官方账号那一半能力(导入、官方账号路由、deeplink、额度查询)对它们不存在,partial 现在指这件事。

其余能力它们都有:配 API 账号、通过本地代理路由、写入原生配置、启动终端、管理会话。唯一的额外约束是 API 账号必须显式填 Base URL 和接口格式 —— 这三个平台没有默认方言。

完整矩阵

三种状态:

  • ✅ 支持 —— 完整可用
  • ◐ 部分支持 —— 可用,但有额外前置条件
  • ✕ 不支持 —— 调用会被拒绝
能力CodexClaude CodeGemini CLIGrokOpenCodeOpenClawHermes
route_credentials
generic_api_routing
config_write
official_import
official_account_routing
deeplink_import
official_quota
model_test
terminal_launch
session_resume

一个例外:Gemini CLI 的额度查询

矩阵里唯一不按「原生支持 = 全绿」规律的格子是 Gemini CLI 的 official_quota

Gemini CLI 是原生支持平台,配置写入、官方导入、官方账号路由都可用,但官方额度查询不可用capability.quota_unavailable)。所以 Gemini 账号不会显示官方额度信息,也不能刷新额度。

其余三个原生平台(Codex、Claude Code、Grok)10 项能力全部支持。

10 种能力分别是什么

route_credentials

管理该平台的路由账号:创建、编辑、删除、加入或移出算力池。

7 个平台全部支持。 这是最基础的能力 —— 任何平台都可以配路由账号。

generic_api_routing

通过本地路由代理转发该平台的 API 请求。

原生四平台完整支持。OpenCode、OpenClaw、Hermes 是部分支持,原因码 capability.api_credentials_only

仅支持已配置 Base URL 和接口格式的 API 账号。

具体限制有三条:

  1. 只接受 api 类型的账号,官方登录态类型的账号不参与路由
  2. 必须显式提供 base URL
  3. 必须显式提供接口格式(上游 dialect)

原生四平台有默认 dialect(Codex 和 Grok 是 openai,Claude 是 anthropic,Gemini 是 gemini),这三个平台没有默认值,所以你不填就没法用。

注意「部分支持」不等于不能用 —— 它照样能路由,只是不给你省这两个字段。

config_write

把 CLI 的原生配置文件指向本地路由代理。

7 个平台全部支持,对应的目标文件:

平台目标文件格式
Codex~/.codex/config.toml(外加 ~/.codex/ai-switch-model-catalog.jsonTOML
Claude Code~/.claude/settings.jsonJSON
Gemini CLI~/.gemini/settings.jsonJSON
Grok~/.grok/settings.jsonJSON
OpenCode~/.config/opencode/opencode.jsonJSON
OpenClaw~/.openclaw/openclaw.jsonJSON
Hermes~/.hermes/config.yamlHERMES_HOME 为绝对路径时以它为准)YAML

后三个平台的写入内容与前四个不同 —— 它们不是靠环境变量接入,而是各自往「自定义 provider」结构里塞一条 ai-switch 记录,再把默认模型指向它:

平台写入位置关键字段
OpenCodeprovider["ai-switch"]npm: "@ai-sdk/openai-compatible"options.baseURLoptions.apiKey、每个模型的 models.<id>.limit.{context,output};再把顶层 model 设为 ai-switch/<首个模型>
OpenClawmodels.providers["ai-switch"]api: "openai-completions"baseUrlapiKeymodels[] 里每项的 id / contextWindow / maxTokens;再把 agents.defaults.model.primary 设为 ai-switch/<首个模型>
Hermescustom_providersname: ai-switch 的那条base_urlapi_keyapi_mode: chat_completions、单数 model 与复数 models.<id>.context_length;再写 model: 段的 provider / default / base_url / api_mode

三点值得单独说明:

Base URL 带 /v1 这三个客户端拼的是裸端点({base}/chat/completions),所以 /v1 必须在 base URL 里,和 Codex 一样。Claude / Gemini / Grok 反过来 —— 它们自己拼带版本号的路径,写 /v1 会变成 /v1/v1/messages

Hermes 的 api_key 是内联写死的。 这是「Hermes 报缺少 API Key」的真因:Hermes 找不到内联 key 时,会去 ~/.hermes/.env 或按端点 host 推导出的环境变量里找(openrouter.ai 对应 OPENROUTER_API_KEY,以此类推)。回环地址匹配不上任何 host,所以手写一条只有 base_url 的 provider,Hermes 就无处可读 key。

协议一律用 Chat Completions@ai-sdk/openai-compatible / openai-completions / chat_completions)。这是刻意的:代理的 chat-completions 桥接与平台无关,能把它转成四种上游方言里的任何一种,所以同一条记录既服务 OpenAI 池,也服务 Responses、Anthropic、Gemini 池。

这三个平台写入前必须有模型

它们都不会去探测自定义 provider 的 /v1/models,所以模型清单得由写入时带进文件。而且和原生四平台不同,它们没有内置的基准模型列表,因此算力池为空、或池内账号一个模型映射都没配时,写入会以 config.pool_models_empty 失败。至少配一条模型映射。

后三个平台仍需你自己填的场景(比如接一个 AI Switch 不认识的第三方工具):点工具栏的 🔌 按钮,在弹窗的「其他 Agent」标签页复制 Base URL 和 API Key。

official_import

导入平台官方的登录态或账号凭据。AI Switch 支持多种输入:OAuth CPA、API Key CPA、session JSON、auth.json、Sub2API JSON、accessToken、refresh_token。

原生四平台支持。后三个不支持,原因码 capability.official_account_unavailable

该平台不支持官方账号导入或官方账号路由。

official_account_routing

用导入的官方账号(而不是 API key 账号)来路由请求。

原生四平台支持,后三个不支持,同样是 capability.official_account_unavailable。这也是为什么它们的 generic_api_routing 限定只接受 api 类型账号。

通过 deeplink 导入账号。桌面端注册了 aiswitch 这个 URL scheme。

原生四平台支持。后三个不支持,原因码 capability.deeplink_unavailable

该平台不支持 Deeplink 导入。

official_quota

查询和刷新官方账号的额度信息。

Codex、Claude Code、Grok 支持。Gemini CLI 不支持。 OpenCode、OpenClaw、Hermes 也不支持。不支持的原因码统一是 capability.quota_unavailable

该平台不支持官方账号额度刷新。

算力池的路由逻辑会参考账号的剩余额度过滤(剩余额度为 0 的账号不参与选择),但这个信息依赖额度查询能力。Gemini 账号拿不到官方额度,所以只能靠失败反馈来发现账号不可用。

model_test

对账号发起真实生成测试。这不是可达性探测 —— AI Switch 会真的让上游生成一段内容,然后展示模型输出和完整的请求链路。

原生四平台完整支持。后三个是部分支持,同样是 capability.api_credentials_only —— 只能测试配好了 base URL 和接口格式的 api 账号。方言覆盖对它们四种全开(只有 Gemini CLI 锁死在 gemini,因为它的入站流量从不桥接;Grok 锁死在 openai,因为 xAI 只提供这一种)。

详见 模型连通性测试

terminal_launch

从 AI Switch 启动系统终端并运行该平台的 CLI。

7 个平台全部支持。

session_resume

恢复该平台之前的会话,可以在系统终端里恢复,也可以复制恢复命令自己执行。

7 个平台全部支持。

详见 会话管理

「部分支持」和「不支持」在行为上的区别

这两个状态的差别很关键,因为它决定了操作会不会被拒绝。

部分支持(partial)的操作是可以调用的。 AI Switch 只是附带了额外约束(必须是 api 类型账号、必须有 base URL、必须有接口格式),满足条件就正常执行。界面上会显示原因码对应的提示文字,告诉你为什么有限制。

不支持(unavailable)的操作会被拒绝。 调用直接返回 capability.unavailable 校验错误,消息形如 Hermes does not support official_import,并附带具体原因码。界面上对应的按钮会被禁用,鼠标悬停显示原因。

这套检查在服务端强制执行,不只是界面上的置灰 —— 即使绕过界面直接调命令,也会被同一套规则拦住。

原生配置写入的安全性

7 个平台的配置写入都不是简单的覆盖文件:

原生配置写入采用安全直写:变更前建立快照、原子写入、检测并发修改、支持带守卫的回滚。

四层保障:

变更前建立快照。 每次写入前先把原文件存一份到 ~/.ai-switch/backups/config-snapshots/(Unix 上权限 0700)。写入结果面板会显示对应的快照 id。

原子写入。 不会出现写一半的配置文件。

检测并发修改。 如果文件在 AI Switch 读取之后、写入之前被别人改了(你手动编辑、另一个工具改了),会被检测出来,而不是默默覆盖掉。写入结果里带变更前后的哈希。

带守卫的回滚。 出问题可以回滚到快照,回滚本身也有守卫检查,不会盲目覆盖当前状态。

另外,写入是增量的:AI Switch 只增改自己管理的字段,你在这些文件里的其他配置项会被保留。比如 Claude Code 的 settings.json 里已有的 env 项和其他设置不会被清掉。

Hermes 的 config.yaml 还多一层保护:它自带大量注释、官方文档也让人手改,所以 AI Switch 只对 custom_providers:model: 这两段做文本替换,其余内容按字节原样保留。反过来,读不懂的文件一律拒写而不是覆盖:OpenClaw 的 openclaw.json 名义上是 JSON5,但 AI Switch 按严格 JSON 解析,遇到注释或不带引号的键会报 validation.route_config_existing_invalid —— 一次删掉你所有 provider 的重写,比拒绝要糟得多。

平台标识和别名

命令和 API 里用的平台 id 是:codexclaudegeminigrokopencodeopenclawhermes

解析时接受一些别名:

平台 id接受的别名
codexopenaichatgpt
claudeanthropicclaude_codeclaude_desktopclaude-code
geminigooglegemini_cligemini-cli
grokxaix_aix.ai
opencodeopen_codeopen-code
openclawopen_clawopen-claw
hermes——

解析大小写不敏感,空格和连字符会被规范化成下划线。但只接受显式别名 —— 像 my-claude-wrapper 这种包含平台名的字符串会被拒绝,返回 platform.unknown,不会被模糊匹配到 Claude。

相关页面

基于 MIT 许可发布