首页
/ CC Switch 中 Claude Desktop 第三方供应商接入实战:直连模式、模型映射与本地路由原理

CC Switch 中 Claude Desktop 第三方供应商接入实战:直连模式、模型映射与本地路由原理

2026-09-06 16:58:28作者:丁柯新Fawn

本文以 CC Switch 的 Claude Desktop 供应商面板为主线,完整讲解如何把 Anthropic 兼容的第三方 API 接入 Claude Desktop:包括从 Claude Code 一键导入供应商、直连模式与模型映射模式两种工作模式的选择、本地路由(127.0.0.1:15721/claude-desktop)的开关逻辑,以及 3P profile 配置文件的落盘位置与故障排查方法。读完本文,你可以独立完成 Claude Desktop 与 Claude Code 的供应商复用,并结合 CC Switch 源码理解 profile 写入、网关 token 生成与请求模型映射的底层实现。

Claude Desktop 供应商面板

一、功能概览与适用范围

Claude Desktop 面板允许你在 CC Switch 上集中管理 Claude Desktop 的供应商配置。启用后可以做到:

  • 在 Claude Desktop 中使用第三方 Anthropic 兼容供应商;
  • 为非“三角色 ID”模型建立映射:旧式 Claude ID(如 claude-3-5-sonnet)以及 DeepSeek / Kimi / 豆包(DouBao)/ OpenAI / Gemini 等非 Claude 模型都需要映射;
  • 复用 Copilot / Codex OAuth / xAI OAuth 等账号型供应商;
  • 在 Claude Desktop 官方模式与第三方供应商之间来回切换。

这里有一个容易混淆的概念:Claude Desktop 与 Claude Code 是两个独立的应用入口。Claude Code 读写 ~/.claude/settings.json,而 Claude Desktop 使用专用的 3P(third-party)profile 配置。在 CC Switch 中两者也分别显示为“Claude”和“Claude Desktop”两个入口,图标右下角的小徽章用于区分。另外,Claude Desktop 的 3P profile 不使用 CC Switch 的 MCP / Skills 同步能力,这一点在做同步规划时需要注意。

适用范围速查表:

项目 说明
支持系统 macOS、Windows
未支持 Linux 上的 Claude Desktop 3P 配置写入
生效方式 切换供应商后需重启 Claude Desktop
官方模式 使用 Claude Desktop 内置登录,无需 API Key 与端点 URL
第三方模式 写入 CC Switch 管理的 3P profile
MCP / Skills 不进入 Claude Desktop 3P profile 同步

从源码结构看,平台限制由 claude_desktop_config.rs 中的 is_supported_platform()cfg!(any(target_os = "macos", windows)))决定:非 macOS/Windows 平台会直接返回“平台不受支持”的错误,这与文档表格中“Linux 未支持”的说明完全一致。

二、快速上手

步骤 1:进入 Claude Desktop 面板

在左侧应用切换器中选择 Claude Desktop。如果看不到该入口,检查:设置 → 一般 → 主页显示,确认 Claude Desktop 没有被隐藏。

步骤 2:导入或新增供应商

推荐:从 Claude Code 批量导入。 多数用户会先在 Claude Code 侧配好供应商,希望同一批供应商也能用于 Claude Desktop。CC Switch 在首次启动或首次打开 Claude Desktop 面板且其中没有供应商时,会提示 导入 Claude Code 现有供应商

从 Claude Code 导入供应商

如果 Claude Code 侧已有较多供应商,可以借此一键批量导入到 Claude Desktop 面板,不必逐个重填端点 URL、API Key 与默认模型。导入规则如下:

  • 已存在相同 ID 的供应商不会被覆盖;
  • 模型名能直接使用三个角色 ID(claude-sonnet-* / claude-opus-* / claude-haiku-*)直连的供应商,以直连模式导入;
  • 模型名不属于三个角色 ID(含旧式 Claude ID)或需要格式转换的供应商,在可判定情况下以模型映射模式导入;
  • ANTHROPIC_DEFAULT_SONNET_MODELANTHROPIC_DEFAULT_OPUS_MODELANTHROPIC_DEFAULT_HAIKU_MODEL 会被转换成 Claude Desktop 的 Sonnet / Opus / Haiku 映射;
  • 旧式 [1M] 后缀会被翻译成 Claude Desktop profile 中的 supports1m 标志——源码常量 ONE_M_CONTEXT_MARKER 注明了这一点:Claude Code 的环境变量习惯用 [1M] 后缀声明 1M 上下文,而 Claude Desktop 的 schema 不接受该后缀,因此在导入边界处翻译为 supports1m 字段;
  • 无法判断模型映射的供应商会被跳过。

导入后请核对每个供应商的模型映射是否与真实上游模型一致。除三个角色 ID 外的模型(Kimi、DeepSeek、GLM、豆包等非 Claude 模型或旧式 Claude ID)通常需要模型映射模式。

新增 Claude Desktop 供应商

如果没有可导入的配置,或者想为 Claude Desktop 专属添加供应商,点击面板右上角的 + 按钮,可选三种方式:

  • 预设供应商:从内置的 Claude Desktop 预设中选择(预设定义见 claudeDesktopProviderPresets.ts),只需填写 API Key;
  • 自定义配置:手动填写名称、端点 URL、API Key、模型配置;
  • Claude Desktop Official:恢复 Claude Desktop 官方登录模式。

对于已经接受三个角色 ID(claude-sonnet-* / claude-opus-* / claude-haiku-*)的原生 Anthropic Messages API 供应商,基本操作只有五步:

  1. 选择预设或自定义供应商;
  2. 填写 API Key
  3. 确认 API 端点
  4. 保持 需要模型映射 为关闭状态;
  5. 点击 添加

步骤 3:切换并重启 Claude Desktop

在供应商卡片上点击 启用。切换后:

  • 直连供应商:重启 Claude Desktop 即生效;
  • 需要路由的供应商:保持 CC Switch 运行,打开 Claude Desktop 本地路由,再重启 Claude Desktop。

注意:Claude Desktop 不像 Claude Code 那样热加载配置。每次切换供应商,都需要把 Claude Desktop 完全退出后重新打开。

三、两种工作模式

3.1 直连模式

直连模式适用于供应商自身提供 Anthropic Messages API、Claude Desktop 可以直接访问的场景。此时 CC Switch 把 Claude Desktop 的 3P profile 指向供应商端点:

{
  "inferenceProvider": "gateway",
  "inferenceGatewayBaseUrl": "https://api.example.com",
  "inferenceGatewayAuthScheme": "bearer",
  "inferenceGatewayApiKey": "your API key"
}

这段 JSON 并非手写,而是由 build_gateway_profile() 生成。从源码可以看到,CC Switch 实际写入的字段还包括 coworkEgressAllowedHosts: ["*"]disableDeploymentModeChooser: true,以及(当配置了模型规格时)inferenceModels 数组。

直连模式的适用条件:

  • 供应商公开原生 Anthropic Messages API;
  • 模型 ID 是 Claude Desktop 认识的角色名:claude-sonnet-*claude-opus-*claude-haiku-*(或带 anthropic/claude- 前缀的同族名称);
  • 无需格式转换;
  • 使用时不需要保持 CC Switch 本地路由常驻。

源码中的准入校验 validate_direct_provider() 对上述条件做了硬性约束:

  • api_format 必须为空或 anthropic,否则报“Claude Desktop 第一阶段只支持原生 Anthropic Messages API”;
  • provider_typegithub_copilot / codex_oauth / xai_oauth 的账号型供应商不允许直连(这类供应商需要本地代理转换,应走模型映射模式);
  • 直连凭据来自供应商的 env 配置:ANTHROPIC_BASE_URL 作为网关地址、ANTHROPIC_AUTH_TOKEN 作为 Bearer Token,两者缺一不可(见 direct_gateway_credentials())。

直连模式下的“手动指定 Claude Desktop 模型”是高级可选项:多数原生 Claude 模型供应商不需要,Claude Desktop 会自动拉取 /v1/models。只有当供应商的 /v1/models 不可用、或返回的模型名无法被 Claude Desktop 识别时才手动添加,且手填的模型名必须是 claude-sonnet-* / claude-opus-* / claude-haiku-* 形式(claude-3-5-sonnet-… 这类旧式 ID 会被拒绝)。这条规则对应 is_claude_safe_model_id():它要求去掉 claude-anthropic/claude- 前缀后,剩余部分必须以 sonnet- / opus- / haiku- / fable- 开头且不能为空——注释里说明,claude-sonnet- 这类退化值会被拒绝,因为会触发 Claude Desktop 的 fail-all 校验、导致整组模型被拒收。直连模式下还禁止“route 名 → 其他模型”的映射(direct_inference_model_specs() 中一旦发现 upstream_model != route_id 就报错并提示改用本地路由模式)。

3.2 模型映射模式

当供应商模型不属于三个角色 ID(旧式 Claude ID、DeepSeek、Kimi 等非 Claude 模型),或需要 CC Switch 做 API 格式转换时,应启用 需要模型映射。开启后,Claude Desktop 连接的是 CC Switch 的本地网关:

http://127.0.0.1:15721/claude-desktop

这个地址不是硬编码在 profile 里就完事的:proxy_gateway_base_url_from_db() 在每次写入 profile 时读取本地代理实际监听地址与端口,再拼接 /claude-desktop 前缀(常量 CLAUDE_DESKTOP_PROXY_PREFIX),保证端口配置变化后 profile 仍指向正确的网关。

启用模型映射模式后,CC Switch 负责四件事:

  1. 向 Claude Desktop 暴露安全的 Claude 模型路由;
  2. 把 Desktop 中选择的模型角色映射为真实上游模型;
  3. 按供应商情况在 Anthropic / OpenAI / Gemini 请求格式之间转换;
  4. 使用 CC Switch 中保存的供应商凭据访问上游。

支持的 API 格式:

格式 用途
Anthropic Messages 原生或兼容 Anthropic 请求
OpenAI Chat Completions OpenAI 兼容 /chat/completions
OpenAI Responses API OpenAI Responses 兼容端点
Gemini Native generateContent Gemini 原生 API

这一点与后端路由注册一致:本地代理服务器在 proxy/server.rs 中为 Claude Desktop 3P 网关单独注册了 /claude-desktop/v1/models(GET)和 /claude-desktop/v1/messages(POST)两条路由,与 Claude Code / Codex 的路由相互隔离。

请求进来后的模型映射逻辑在 map_proxy_request_model():先按精确 route 匹配,找不到时尝试 Opus 别名兼容,再做“角色关键词回落”——Claude Desktop 的子 agent 等调用可能请求带发布日期的完整官方名(如 claude-haiku-4-5-20251001),而 manifest 暴露的是简短 route ID(claude-haiku-4-5),代码会按 opus/haiku/sonnet/fable 归入同档已配置路由,且只对 Claude Desktop 认可的安全模型名做这种宽松匹配,避免非 Claude route 被误映射。

模型映射模式下,Claude Desktop 只能看到 claude-sonnet-* / claude-opus-* / claude-haiku-* 三种角色路由,真实上游模型名不会写进 Claude Desktop profile——它保存在 CC Switch 的供应商配置里,在请求经过本地网关时完成映射。profile 中的 API Key 位置则放一个 CC Switch 自生成的网关 token:get_or_create_gateway_token() 在数据库设置键 claude_desktop_gateway_token 下生成形如 ccs-{uuid} 的一次性 token,用于区分来自 Claude Desktop 3P 网关的流量。

四、模型映射的配置

字段说明

Claude Desktop 模型映射行配置

字段 说明
模型角色 Claude Desktop 认识的 Sonnet / Opus / Haiku 路由
菜单显示名 在 Claude Desktop 模型菜单中展示的名称
请求模型 实际发给供应商的上游模型 ID
1M 向 Claude Desktop 声明支持 1M 上下文

这些字段最终会落进 profile 的 inferenceModels 数组:带 labelOverride(菜单显示名)或 supports1m 的条目以对象形式写出,否则退化为纯字符串(见 inference_model_json())。

推荐配置

使用 Kimi:

模型角色 菜单显示名 请求模型 1M
Sonnet Kimi K2 kimi-k2 按供应商能力

使用 DeepSeek:

模型角色 菜单显示名 请求模型 1M
Sonnet DeepSeek V4 Pro deepseek-v4-pro 按供应商能力

原因是当前 Claude Desktop 会拒绝 Sonnet / Opus / Haiku 角色族以外的模型,所以必须借 CC Switch 的路由功能做一次模型映射。

多角色映射

可以同时配置 Sonnet、Opus、Haiku 三个角色:

模型角色 推荐用途
Sonnet 默认主力模型
Opus 高质量或复杂任务
Haiku 高速、低成本模型

如果供应商只有一个模型,只填一个角色的请求模型即可:空角色会自动继承第一个填入的模型(优先 Sonnet),因此子 agent 调用 Haiku 时也不会落空。模型映射模式至少需要一个请求模型——后端 proxy_model_routes() 在校验阶段就会因“至少需要一个模型路由映射”而拒绝空配置。

还有一个细节值得注意:当某条映射的 route ID 不是合法的 Claude 安全模型名时,proxy_model_routes() 会调用 next_catalog_safe_route_id() 自动分配一个安全路由 ID(按 sonnet → opus → haiku → fable 顺序借用默认角色名,用完再递增 claude-sonnet-5-r2 之类),并把菜单显示名回退为上游模型名。这就是文档所说“空角色自动继承”与异常 route 仍能成功启用的底层机制。

五、本地路由开关

模型映射模式依赖 CC Switch 本地路由来做请求转换。本地路由功能强大但也稍显复杂,为避免误操作,主页面默认不显示路由开关,需要时手动开启:

设置 → 路由 → 本地路由 → 打开 在主页面显示路由开关

本地路由显示设置

打开后回到 Claude Desktop 面板,主页面右上角会出现 Claude Desktop 本地路由开关。

Claude Desktop 本地路由开关

状态说明:

状态 说明
本地网关运行中,通常为 127.0.0.1:15721
直连供应商可用;模型映射供应商无法正常工作
加载中 路由服务正在启动或停止

前端实现见 ClaudeDesktopRouteToggle.tsx:打开时调用 startProxyServer();关闭前会检查 takeoverStatus,若 Claude / Codex / Gemini / Grok Build 中任一应用的代理接管仍在使用本地路由,停止操作会被拦截并弹出警告“其它应用正在使用代理接管,请先在设置中关闭对应应用接管,再停止本地路由”——这正是文档中“其它应用使用代理接管时,本地路由的停止可能被阻止”的来源。开关的提示文案也会实时显示当前监听地址与端口(默认端口常量 15721 见组件第 34 行)。

只有 需要模型映射 的供应商依赖本地路由;直连供应商不需要此开关。

六、恢复官方 Claude Desktop

要回到 Claude Desktop 官方登录,操作三步:

  1. 选择 Claude Desktop Official
  2. 点击 启用
  3. 重启 Claude Desktop。

CC Switch 会把 Claude Desktop 的 1P 官方模式恢复原状,并删除它管理的 3P profile。官方模式既不需要 API Key,也不需要本地路由。从 Claude Code 导入供应商时,CC Switch 还会自动把 Claude Desktop Official 一并加进来,方便随时切回。

恢复动作的具体实现是 restore_official_at_paths_inner():把两个配置文件的 deploymentMode 写回 "1p"、移除 Claude-3p 配置中 CC Switch 写入的 enterpriseConfig 相关键(inferenceProviderinferenceGatewayBaseUrl 等)、删除 profile 文件,并清理 _meta.json 中的 applied 记录。整个写入流程还带有文件级回滚:with_rollback() 会在写盘前对全部四个文件做快照,任何一步失败即自动恢复原状。

七、配置文件位置

CC Switch 写入 Claude Desktop 的 3P 配置目录如下。

macOS

~/Library/Application Support/Claude/claude_desktop_config.json
~/Library/Application Support/Claude-3p/claude_desktop_config.json
~/Library/Application Support/Claude-3p/configLibrary/_meta.json
~/Library/Application Support/Claude-3p/configLibrary/00000000-0000-4000-8000-000000157210.json

Windows

%LOCALAPPDATA%\Claude\claude_desktop_config.json
%LOCALAPPDATA%\Claude-3p\claude_desktop_config.json
%LOCALAPPDATA%\Claude-3p\configLibrary\_meta.json
%LOCALAPPDATA%\Claude-3p\configLibrary\00000000-0000-4000-8000-000000157210.json

源码中 current_platform_paths() 按平台分别组装这些路径;固定 profile ID 00000000-0000-4000-8000-000000157210 与 profile 名称 CC Switch 定义在 claude_desktop_config.rs 顶部。写入 3P 模式时,ClaudeClaude-3p 两个目录的 claude_desktop_config.json 都会被打上 deploymentMode: "3p" 标记(apply_provider_to_paths_inner())。

这些文件由 CC Switch 自动管理,不建议手工编辑。若出现配置不一致,通常重新启用当前供应商即可修复(借助文件快照回滚机制保证半写状态可恢复)。

八、状态检查与故障处置

Claude Desktop 面板顶部可能显示“Claude Desktop 配置需要检查”。状态检测由 get_status() 完成,它比对 profile 实际 inferenceGatewayBaseUrl 与当前模式期望地址、检查 inferenceModels 中是否有非安全模型名、网关 token 是否已生成、路由映射是否缺失。对应处置表:

显示 处置
当前平台不支持 3P 配置写入目前仅支持 macOS / Windows
profile 含 Sonnet / Opus / Haiku 角色族以外的模型名 重新切换一次当前供应商,或编辑为使用模型映射
模型映射已启用但没有有效路由 编辑供应商,至少添加一条模型映射
本地路由 token 未生成 重新切换到该供应商,CC Switch 会写入新 token
profile URL 与当前供应商不一致 重新切换当前供应商,把 profile 指回正确 URL

九、常见问题

切换显示成功,但 Claude Desktop 没变化? 把 Claude Desktop 完全退出后重启。Claude Desktop 通常在启动时读取 3P profile,切换后不会自动热加载。

模型映射供应商请求失败? 依次检查:

  • CC Switch 是否保持运行;
  • Claude Desktop 本地路由是否为开;
  • 供应商的 API Key 与端点 URL 是否正确;
  • 模型映射中是否填了请求模型;
  • 切换供应商后是否重启了 Claude Desktop。

Claude Desktop 模型菜单不显示品牌名? 编辑供应商,在模型映射的 菜单显示名 中填写名称,然后重新启用供应商并重启 Claude Desktop。

直连模式为什么报错? 直连模式要求供应商提供原生 Anthropic Messages API,并接受 Claude Desktop 的三个角色 ID(claude-sonnet-* / claude-opus-* / claude-haiku-*)。供应商使用 OpenAI、Gemini 格式、非 Claude 模型 ID 或旧式 Claude ID(如 claude-3-5-sonnet-…)时必然失败,应打开 需要模型映射 改走本地路由。

CC Switch 可以关掉吗? 取决于模式:

  • 直连模式:Claude Desktop 重启并读取配置后,无需保持本地路由运行;
  • 模型映射模式:必须保持 CC Switch 运行,且 Claude Desktop 本地路由为开。

真实上游模型名会写进 Claude Desktop 吗? 模型映射模式下不会。Claude Desktop profile 只保存安全的 Sonnet / Opus / Haiku 角色路由与显示名;真实上游模型名保存在 CC Switch 的供应商配置中,在请求经过本地网关时映射。

十、小结与延伸阅读

Claude Desktop 面板的核心价值在于:用同一套供应商数据打通 Claude Code 与 Claude Desktop 两个入口,并通过“直连 + 本地网关映射”双模式覆盖从原生 Anthropic 到非 Claude 系模型的全部接入场景。理解 3P profile 的字段结构、127.0.0.1:15721/claude-desktop 网关路由与状态自检逻辑,能让绝大多数“切换后不生效”的问题在三步内定位。

延伸阅读(同为用户手册章节):

登录后查看全文
热门项目推荐
相关项目推荐