Files
CC-Switch/src/config/codexProviderPresets.ts
T
Jason a8657d229a feat(presets): add Code0.ai partner preset for 7 apps
Partner aggregator (New API gateway) across Claude Code, Claude Desktop,
Codex, Gemini, OpenCode, OpenClaw, and Hermes. Claude Code, Claude
Desktop, and Gemini use the bare host (gemini-3.1-pro-preview for
Gemini); Codex, OpenCode, OpenClaw, and Hermes use /v1 with gpt-5.5.

Marks isPartner with ?source=ccswitch attribution on apiKeyUrl only
(website URL stays clean). Adds the partnerPromotion blurb in all four
locales and a sponsor row in all four READMEs. Positioned after
ClaudeAPI in the Claude Code and Claude Desktop lists (the two apps
that carry a ClaudeAPI preset). Registers the favicon-derived code0.png
icon via URL import; the README banner is normalized to the standard
1920x798 aspect ratio.
2026-07-01 22:27:10 +08:00

1497 lines
44 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* Codex 预设供应商配置模板
*/
import { ProviderCategory } from "../types";
import type {
CodexApiFormat,
CodexCatalogModel,
CodexChatReasoning,
} from "../types";
import type { PresetTheme } from "./claudeProviderPresets";
export interface CodexProviderPreset {
name: string;
nameKey?: string; // i18n key for localized display name
websiteUrl: string;
// 第三方供应商可提供单独的获取 API Key 链接
apiKeyUrl?: string;
auth: Record<string, any>; // 将写入 ~/.codex/auth.json
config: string; // 将写入 ~/.codex/config.tomlTOML 字符串)
isOfficial?: boolean; // 标识是否为官方预设
isPartner?: boolean; // 标识是否为商业合作伙伴
primePartner?: boolean; // 置顶合作伙伴(顶级):徽章显示为心形
partnerPromotionKey?: string; // 合作伙伴促销信息的 i18n key
category?: ProviderCategory; // 新增:分类
isCustomTemplate?: boolean; // 标识是否为自定义模板
// 新增:请求地址候选列表(用于地址管理/测速)
endpointCandidates?: string[];
// 新增:视觉主题配置
theme?: PresetTheme;
// 图标配置
icon?: string; // 图标名称
iconColor?: string; // 图标颜色
// Codex API 格式
apiFormat?: CodexApiFormat;
// Codex Chat 本地路由模式下的模型目录
modelCatalog?: CodexCatalogModel[];
// Codex Responses -> Chat Completions reasoning capability defaults
codexChatReasoning?: CodexChatReasoning;
}
/**
* 生成第三方供应商的 auth.json
*/
export function generateThirdPartyAuth(apiKey: string): Record<string, any> {
return {
OPENAI_API_KEY: apiKey || "",
};
}
/**
* 生成第三方供应商的 config.toml
*/
export function generateThirdPartyConfig(
providerName: string,
baseUrl: string,
modelName = "gpt-5.5",
): string {
const tomlString = (value: string) => JSON.stringify(value);
return `model_provider = "custom"
model = ${tomlString(modelName)}
model_reasoning_effort = "high"
disable_response_storage = true
[model_providers.custom]
name = ${tomlString(providerName)}
base_url = ${tomlString(baseUrl)}
wire_api = "responses"
requires_openai_auth = true`;
}
function modelCatalog(
models: Array<
| string
| {
model: string;
displayName?: string;
contextWindow?: number;
// Native Responses (direct) overrides for the generated
// model-catalogs.json; omit to inherit the native template defaults
// (supports_parallel_tool_calls=false, input_modalities=["text"]).
supportsParallelToolCalls?: boolean;
inputModalities?: string[];
// Vendor's OFFICIAL base_instructions; omit to inherit the neutral
// template default. Required by Codex, so the backend always emits one.
baseInstructions?: string;
}
>,
): CodexCatalogModel[] {
return models.map((entry) =>
typeof entry === "string"
? { model: entry }
: {
model: entry.model,
displayName: entry.displayName,
contextWindow: entry.contextWindow,
supportsParallelToolCalls: entry.supportsParallelToolCalls,
inputModalities: entry.inputModalities,
baseInstructions: entry.baseInstructions,
},
);
}
export const codexProviderPresets: CodexProviderPreset[] = [
{
name: "OpenAI Official",
websiteUrl: "https://chatgpt.com/codex",
isOfficial: true,
category: "official",
auth: {},
config: ``,
theme: {
icon: "codex",
backgroundColor: "#1F2937", // gray-800
textColor: "#FFFFFF",
},
icon: "openai",
iconColor: "#00A67E",
},
{
name: "Shengsuanyun",
nameKey: "providerForm.presets.shengsuanyun",
websiteUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF",
apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"shengsuanyun",
"https://router.shengsuanyun.com/api/v1",
"openai/gpt-5.5",
),
category: "aggregator",
isPartner: true,
partnerPromotionKey: "shengsuanyun",
icon: "shengsuanyun",
},
{
name: "PatewayAI",
websiteUrl: "https://pateway.ai",
apiKeyUrl: "https://pateway.ai/?ch=etzpm8&aff=WB6M6F67#/",
category: "third_party",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"patewayai",
"https://api.pateway.ai/v1",
"gpt-5.5",
),
endpointCandidates: ["https://api.pateway.ai/v1"],
isPartner: true,
partnerPromotionKey: "patewayai",
icon: "pateway",
},
{
name: "火山Agentplan",
websiteUrl: "https://www.volcengine.com/product/ark",
apiKeyUrl:
"https://www.volcengine.com/activity/codingplan?ac=MMAP8JTTCAQ2&rc=6J6FV5N2&utm_campaign=hw&utm_content=ccswitch&utm_medium=devrel_tool_web&utm_source=OWO&utm_term=ccswitch",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"ark_agentplan",
"https://ark.cn-beijing.volces.com/api/coding/v3",
"ark-code-latest",
),
endpointCandidates: ["https://ark.cn-beijing.volces.com/api/coding/v3"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "ark-code-latest",
displayName: "Ark Code Latest",
contextWindow: 256000,
},
]),
category: "cn_official",
isPartner: true,
partnerPromotionKey: "volcengine_agentplan",
icon: "huoshan",
iconColor: "#3370FF",
},
{
name: "BytePlus",
websiteUrl: "https://www.byteplus.com/en/product/modelark",
apiKeyUrl:
"https://www.byteplus.com/en/product/modelark?utm_campaign=hw&utm_content=ccswitch&utm_medium=devrel_tool_web&utm_source=OWO&utm_term=ccswitch",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"byteplus",
"https://ark.ap-southeast.bytepluses.com/api/coding/v3",
"ark-code-latest",
),
endpointCandidates: [
"https://ark.ap-southeast.bytepluses.com/api/coding/v3",
],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "ark-code-latest",
displayName: "Ark Code Latest",
contextWindow: 256000,
},
]),
category: "cn_official",
isPartner: true,
partnerPromotionKey: "byteplus",
icon: "byteplus",
iconColor: "#3370FF",
},
{
name: "DouBaoSeed",
websiteUrl: "https://www.volcengine.com/product/doubao",
apiKeyUrl:
"https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey?apikey=%7B%7D&utm_campaign=hw&utm_content=ccswitch&utm_medium=devrel_tool_web&utm_source=OWO&utm_term=ccswitch",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"doubaoseed",
"https://ark.cn-beijing.volces.com/api/v3",
"doubao-seed-2-1-pro-260628",
),
endpointCandidates: ["https://ark.cn-beijing.volces.com/api/v3"],
// 火山方舟主数据面 /api/v3 原生支持 Responses API/api/v3/responses),无需路由接管转换
apiFormat: "openai_responses",
// 无官方 catalog:合成 MiMo 式(shell_command 编辑、不发 freeform apply_patch),
// 让 Codex 直连显示模型并避免 custom 工具被网关拒绝
modelCatalog: modelCatalog([
{
model: "doubao-seed-2-1-pro-260628",
displayName: "Doubao Seed 2.1 Pro",
contextWindow: 262144,
},
]),
category: "cn_official",
isPartner: true,
partnerPromotionKey: "doubaoseed",
icon: "doubao",
iconColor: "#3370FF",
},
{
name: "CCSub",
websiteUrl: "https://www.ccsub.net",
apiKeyUrl: "https://www.ccsub.net/register?ref=Y6Z8DXEA",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"ccsub",
"https://www.ccsub.net/v1",
"gpt-5.5",
),
endpointCandidates: ["https://www.ccsub.net/v1"],
isPartner: true,
partnerPromotionKey: "ccsub",
icon: "ccsub",
},
{
name: "SubRouter",
websiteUrl: "https://subrouter.ai",
apiKeyUrl: "https://subrouter.ai/register?aff=l3ri",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"subrouter",
"https://subrouter.ai/v1",
"gpt-5.5",
),
endpointCandidates: ["https://subrouter.ai/v1"],
isPartner: true,
partnerPromotionKey: "subrouter",
icon: "subrouter",
},
{
name: "Unity2.ai",
websiteUrl: "https://unity2.ai",
apiKeyUrl: "https://unity2.ai/register?source=ccs",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"unity2",
"https://api.unity2.ai",
"gpt-5.5",
),
endpointCandidates: ["https://api.unity2.ai"],
isPartner: true,
partnerPromotionKey: "unity2",
icon: "unity2",
},
{
name: "Qiniu",
nameKey: "providerForm.presets.qiniu",
websiteUrl: "https://s.qiniu.com/nMvAvy",
apiKeyUrl: "https://s.qiniu.com/nMvAvy",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"qiniu",
"https://api.qnaigc.com/bypass/openai/v1",
"gpt-5.5",
),
endpointCandidates: [
"https://api.qnaigc.com/bypass/openai/v1",
"https://api.modelink.ai/bypass/openai/v1",
],
isPartner: true,
partnerPromotionKey: "qiniu",
icon: "qiniu",
},
{
name: "FennoAI",
websiteUrl: "https://api.fenno.ai",
apiKeyUrl:
"https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=P9MR3D3PLCNL",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"fenno",
"https://api.fenno.ai",
"gpt-5.5",
),
endpointCandidates: ["https://api.fenno.ai"],
isPartner: true,
partnerPromotionKey: "fenno",
icon: "fenno",
},
{
name: "ZetaAPI",
websiteUrl: "https://zetaapi.ai",
apiKeyUrl: "https://zetaapi.ai/go/ccs",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"zetaapi",
"https://api.zetaapi.ai/v1",
"gpt-5.5",
),
endpointCandidates: ["https://api.zetaapi.ai/v1"],
isPartner: true,
partnerPromotionKey: "zetaapi",
icon: "zetaapi",
},
{
name: "TeamoRouter",
websiteUrl: "https://teamorouter.com",
apiKeyUrl:
"https://teamorouter.com/?utm_source=cc_switch&utm_medium=referral&utm_campaign=ai_directory",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"teamorouter",
"https://api.teamorouter.com/v1",
"gpt-5.5",
),
endpointCandidates: ["https://api.teamorouter.com/v1"],
isPartner: true,
partnerPromotionKey: "teamorouter",
icon: "teamorouter",
},
{
name: "Amux",
websiteUrl: "https://amux.ai",
apiKeyUrl: "https://amux.ai",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"amux",
"https://api.amux.ai/v1",
"gpt-5.5",
),
endpointCandidates: ["https://api.amux.ai/v1"],
icon: "amux",
},
{
name: "Code0",
websiteUrl: "https://code0.ai",
apiKeyUrl: "https://code0.ai?source=ccswitch",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig("code0", "https://code0.ai/v1", "gpt-5.5"),
endpointCandidates: ["https://code0.ai/v1"],
isPartner: true,
partnerPromotionKey: "code0",
icon: "code0",
},
{
name: "Azure OpenAI",
websiteUrl:
"https://learn.microsoft.com/en-us/azure/ai-foundry/openai/how-to/codex",
category: "third_party",
isOfficial: true,
auth: generateThirdPartyAuth(""),
config: `model_provider = "custom"
model = "gpt-5.5"
model_reasoning_effort = "high"
disable_response_storage = true
[model_providers.custom]
name = "Azure OpenAI"
base_url = "https://YOUR_RESOURCE_NAME.openai.azure.com/openai"
env_key = "OPENAI_API_KEY"
query_params = { "api-version" = "2025-04-01-preview" }
wire_api = "responses"
requires_openai_auth = true`,
endpointCandidates: ["https://YOUR_RESOURCE_NAME.openai.azure.com/openai"],
theme: {
icon: "codex",
backgroundColor: "#0078D4",
textColor: "#FFFFFF",
},
icon: "azure",
iconColor: "#0078D4",
},
{
name: "DeepSeek",
websiteUrl: "https://platform.deepseek.com",
apiKeyUrl: "https://platform.deepseek.com/api_keys",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"deepseek",
"https://api.deepseek.com",
"deepseek-v4-flash",
),
endpointCandidates: ["https://api.deepseek.com"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "deepseek-v4-flash",
displayName: "DeepSeek V4 Flash",
contextWindow: 1000000,
},
{
model: "deepseek-v4-pro",
displayName: "DeepSeek V4 Pro",
contextWindow: 1000000,
},
]),
codexChatReasoning: {
supportsThinking: true,
supportsEffort: true,
thinkingParam: "thinking",
effortParam: "reasoning_effort",
effortValueMode: "deepseek",
outputFormat: "reasoning_content",
},
category: "cn_official",
icon: "deepseek",
iconColor: "#1E88E5",
},
{
name: "Zhipu GLM",
websiteUrl: "https://open.bigmodel.cn",
apiKeyUrl: "https://www.bigmodel.cn/claude-code?ic=RRVJPB5SII",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"zhipu_glm",
"https://open.bigmodel.cn/api/coding/paas/v4",
"glm-5.2",
),
endpointCandidates: ["https://open.bigmodel.cn/api/coding/paas/v4"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{ model: "glm-5.2", displayName: "GLM-5.2", contextWindow: 200000 },
]),
codexChatReasoning: {
supportsThinking: true,
supportsEffort: false,
thinkingParam: "thinking",
effortParam: "none",
outputFormat: "reasoning_content",
},
category: "cn_official",
icon: "zhipu",
iconColor: "#0F62FE",
},
{
name: "Zhipu GLM en",
websiteUrl: "https://z.ai",
apiKeyUrl: "https://z.ai/subscribe?ic=8JVLJQFSKB",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"zhipu_glm_en",
"https://api.z.ai/api/coding/paas/v4",
"glm-5.2",
),
endpointCandidates: ["https://api.z.ai/api/coding/paas/v4"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{ model: "glm-5.2", displayName: "GLM-5.2", contextWindow: 200000 },
]),
codexChatReasoning: {
supportsThinking: true,
supportsEffort: false,
thinkingParam: "thinking",
effortParam: "none",
outputFormat: "reasoning_content",
},
category: "cn_official",
icon: "zhipu",
iconColor: "#0F62FE",
},
{
name: "Baidu Qianfan Coding Plan",
websiteUrl: "https://cloud.baidu.com/product/qianfan_modelbuilder",
apiKeyUrl:
"https://console.bce.baidu.com/qianfan/ais/console/applicationConsole/application",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"qianfan_coding",
"https://qianfan.baidubce.com/v2/coding",
"qianfan-code-latest",
),
endpointCandidates: ["https://qianfan.baidubce.com/v2/coding"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "qianfan-code-latest",
displayName: "Qianfan Code Latest",
contextWindow: 131072,
},
]),
category: "cn_official",
icon: "baidu",
iconColor: "#2932E1",
},
{
name: "Bailian",
websiteUrl: "https://bailian.console.aliyun.com",
apiKeyUrl: "https://bailian.console.aliyun.com/#/api-key",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"bailian",
"https://dashscope.aliyuncs.com/compatible-mode/v1",
"qwen3-coder-plus",
),
endpointCandidates: ["https://dashscope.aliyuncs.com/compatible-mode/v1"],
// 阿里百炼 DashScope 原生支持 OpenAI Responses API/compatible-mode/v1/responses,同一 base_url),无需路由接管转换
apiFormat: "openai_responses",
// 无官方 catalog:合成 MiMo 式(shell_command 编辑、不发 freeform apply_patch
modelCatalog: modelCatalog([
{
model: "qwen3-coder-plus",
displayName: "Qwen3 Coder Plus",
contextWindow: 1048576,
},
]),
category: "cn_official",
icon: "bailian",
iconColor: "#624AFF",
},
{
name: "Kimi",
primePartner: true,
websiteUrl: "https://platform.kimi.com?aff=cc-switch",
apiKeyUrl: "https://platform.kimi.com/console/api-keys?aff=cc-switch",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"kimi",
"https://api.moonshot.cn/v1",
"kimi-k2.7-code",
),
endpointCandidates: ["https://api.moonshot.cn/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "kimi-k2.7-code",
displayName: "Kimi K2.7 Code",
contextWindow: 262144,
},
]),
codexChatReasoning: {
supportsThinking: true,
supportsEffort: false,
thinkingParam: "thinking",
effortParam: "none",
outputFormat: "reasoning_content",
},
category: "cn_official",
icon: "kimi",
iconColor: "#6366F1",
},
{
name: "Kimi For Coding",
primePartner: true,
websiteUrl: "https://www.kimi.com/code/?aff=cc-switch",
apiKeyUrl: "https://www.kimi.com/code/?aff=cc-switch",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"kimi_coding",
"https://api.kimi.com/coding/v1",
"kimi-for-coding",
),
endpointCandidates: ["https://api.kimi.com/coding/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "kimi-for-coding",
displayName: "Kimi For Coding",
contextWindow: 262144,
},
]),
codexChatReasoning: {
supportsThinking: true,
supportsEffort: false,
thinkingParam: "thinking",
effortParam: "none",
outputFormat: "reasoning_content",
},
category: "cn_official",
icon: "kimi",
iconColor: "#6366F1",
},
{
name: "StepFun",
websiteUrl: "https://platform.stepfun.com/step-plan",
apiKeyUrl: "https://platform.stepfun.com/interface-key",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"stepfun",
"https://api.stepfun.com/step_plan/v1",
"step-3.7-flash",
),
endpointCandidates: ["https://api.stepfun.com/step_plan/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "step-3.7-flash",
displayName: "Step 3.7 Flash",
contextWindow: 262144,
},
{
model: "step-3.5-flash-2603",
displayName: "Step 3.5 Flash 2603",
contextWindow: 262144,
},
{
model: "step-3.5-flash",
displayName: "Step 3.5 Flash",
contextWindow: 262144,
},
]),
category: "cn_official",
icon: "stepfun",
iconColor: "#16D6D2",
},
{
name: "StepFun en",
websiteUrl: "https://platform.stepfun.ai/step-plan",
apiKeyUrl: "https://platform.stepfun.ai/interface-key",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"stepfun_en",
"https://api.stepfun.ai/step_plan/v1",
"step-3.7-flash",
),
endpointCandidates: ["https://api.stepfun.ai/step_plan/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "step-3.7-flash",
displayName: "Step 3.7 Flash",
contextWindow: 262144,
},
{
model: "step-3.5-flash-2603",
displayName: "Step 3.5 Flash 2603",
contextWindow: 262144,
},
{
model: "step-3.5-flash",
displayName: "Step 3.5 Flash",
contextWindow: 262144,
},
]),
category: "cn_official",
icon: "stepfun",
iconColor: "#16D6D2",
},
{
name: "ModelScope",
websiteUrl: "https://modelscope.cn",
apiKeyUrl: "https://modelscope.cn/my/myaccesstoken",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"modelscope",
"https://api-inference.modelscope.cn/v1",
"ZhipuAI/GLM-5.1",
),
endpointCandidates: ["https://api-inference.modelscope.cn/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "ZhipuAI/GLM-5.1",
displayName: "ZhipuAI / GLM-5.1",
contextWindow: 200000,
},
]),
codexChatReasoning: {
supportsThinking: true,
supportsEffort: false,
thinkingParam: "thinking",
effortParam: "none",
outputFormat: "reasoning_content",
},
category: "aggregator",
icon: "modelscope",
iconColor: "#624AFF",
},
{
name: "Longcat",
websiteUrl: "https://longcat.chat/platform",
apiKeyUrl: "https://longcat.chat/platform/api_keys",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"longcat",
"https://api.longcat.chat/openai/v1",
"LongCat-2.0-Preview",
),
endpointCandidates: ["https://api.longcat.chat/openai/v1"],
// 美团 LongCat 官方 Codex 文档用 wire_api=responses 对自家 base_url,原生 Responses,无需路由接管转换
apiFormat: "openai_responses",
// 无官方 catalog:合成 MiMo 式(shell_command 编辑、不发 freeform apply_patch)。
// 注:LongCat 的 /responses 工具类型契约文档化程度最低,建议真机冒烟一次
modelCatalog: modelCatalog([
{
model: "LongCat-2.0-Preview",
displayName: "LongCat 2.0 Preview",
contextWindow: 1048576,
},
]),
category: "cn_official",
icon: "longcat",
iconColor: "#29E154",
},
{
name: "MiniMax",
websiteUrl: "https://platform.minimaxi.com",
apiKeyUrl: "https://platform.minimaxi.com/subscribe/coding-plan",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"minimax",
"https://api.minimaxi.com/v1",
"MiniMax-M3",
),
endpointCandidates: ["https://api.minimaxi.com/v1"],
// MiniMax 官方 API 参考已列 /v1/responses 为正式端点(CN/intl 双区,POST /v1/responses),原生 Responses,无需路由接管转换
apiFormat: "openai_responses",
// 官方 Codex catalogplatform.minimaxi.com/docs/token-plan/codex-cli):
// shell_command 编辑、并行工具、文本+图像,不声明 freeform apply_patch
modelCatalog: modelCatalog([
{
model: "MiniMax-M3",
displayName: "MiniMax-M3",
contextWindow: 1000000,
supportsParallelToolCalls: true,
inputModalities: ["text", "image"],
baseInstructions:
"You are Codex, a coding agent based on MiniMax-M3. You and the user share the same workspace and collaborate to achieve the user's goals.",
},
]),
category: "cn_official",
partnerPromotionKey: "minimax_cn",
theme: {
backgroundColor: "#f64551",
textColor: "#FFFFFF",
},
icon: "minimax",
iconColor: "#FF6B6B",
},
{
name: "MiniMax en",
websiteUrl: "https://platform.minimax.io",
apiKeyUrl: "https://platform.minimax.io/subscribe/coding-plan",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"minimax_en",
"https://api.minimax.io/v1",
"MiniMax-M3",
),
endpointCandidates: ["https://api.minimax.io/v1"],
// MiniMax 官方 API 参考已列 /v1/responses 为正式端点(CN/intl 双区,POST /v1/responses),原生 Responses,无需路由接管转换
apiFormat: "openai_responses",
// 官方 Codex catalogplatform.minimax.io/docs/token-plan/codex):
// shell_command 编辑、并行工具、文本+图像,不声明 freeform apply_patch
modelCatalog: modelCatalog([
{
model: "MiniMax-M3",
displayName: "MiniMax-M3",
contextWindow: 1000000,
supportsParallelToolCalls: true,
inputModalities: ["text", "image"],
baseInstructions:
"You are Codex, a coding agent based on MiniMax-M3. You and the user share the same workspace and collaborate to achieve the user's goals.",
},
]),
category: "cn_official",
partnerPromotionKey: "minimax_en",
theme: {
backgroundColor: "#f64551",
textColor: "#FFFFFF",
},
icon: "minimax",
iconColor: "#FF6B6B",
},
{
name: "BaiLing",
websiteUrl: "https://alipaytbox.yuque.com/sxs0ba/ling/get_started",
apiKeyUrl: "https://ling.tbox.cn/open",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"bailing",
"https://api.tbox.cn/api/llm/v1",
"Ling-2.6-1T",
),
endpointCandidates: ["https://api.tbox.cn/api/llm/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "Ling-2.6-1T",
displayName: "Ling-2.6-1T",
contextWindow: 262144,
},
]),
category: "cn_official",
},
{
name: "Xiaomi MiMo",
websiteUrl: "https://platform.xiaomimimo.com",
apiKeyUrl: "https://platform.xiaomimimo.com/#/console/api-keys",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"xiaomi_mimo",
"https://api.xiaomimimo.com/v1",
"mimo-v2.5-pro",
),
endpointCandidates: ["https://api.xiaomimimo.com/v1"],
// 小米 MiMo 官方 Codex 文档已声明原生支持 Responses APIwire_api=responses 对自家 base_url),无需路由接管转换
apiFormat: "openai_responses",
// 官方 Codex catalogmimo.mi.com/.../codex-configuration):
// shell_command 编辑、不声明 freeform apply_patch
modelCatalog: modelCatalog([
{
model: "mimo-v2.5-pro",
displayName: "MiMo V2.5 Pro",
contextWindow: 1048576,
inputModalities: ["text"],
baseInstructions:
"You are MiMo, an AI assistant developed by Xiaomi. Today's date: {date} {week}. Your knowledge cutoff date is December 2024.",
},
{
model: "mimo-v2.5",
displayName: "MiMo V2.5",
contextWindow: 1048576,
inputModalities: ["text", "image"],
baseInstructions:
"You are MiMo, an AI assistant developed by Xiaomi. Today's date: {date} {week}. Your knowledge cutoff date is December 2024.",
},
]),
category: "cn_official",
icon: "xiaomimimo",
iconColor: "#000000",
},
{
name: "Xiaomi MiMo Token Plan (China)",
websiteUrl: "https://platform.xiaomimimo.com/#/token-plan",
apiKeyUrl: "https://platform.xiaomimimo.com/#/console/plan-manage",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"xiaomi_mimo_token_plan",
"https://token-plan-cn.xiaomimimo.com/v1",
"mimo-v2.5-pro",
),
endpointCandidates: ["https://token-plan-cn.xiaomimimo.com/v1"],
// 小米 MiMo 官方 Codex 文档已声明原生支持 Responses APIwire_api=responses 对自家 base_url),无需路由接管转换
apiFormat: "openai_responses",
// 官方 Codex catalogmimo.mi.com/.../codex-configuration):
// shell_command 编辑、不声明 freeform apply_patch
modelCatalog: modelCatalog([
{
model: "mimo-v2.5-pro",
displayName: "MiMo V2.5 Pro",
contextWindow: 1048576,
inputModalities: ["text"],
baseInstructions:
"You are MiMo, an AI assistant developed by Xiaomi. Today's date: {date} {week}. Your knowledge cutoff date is December 2024.",
},
{
model: "mimo-v2.5",
displayName: "MiMo V2.5",
contextWindow: 1048576,
inputModalities: ["text", "image"],
baseInstructions:
"You are MiMo, an AI assistant developed by Xiaomi. Today's date: {date} {week}. Your knowledge cutoff date is December 2024.",
},
]),
category: "cn_official",
icon: "xiaomimimo",
iconColor: "#000000",
},
{
name: "SiliconFlow",
websiteUrl: "https://siliconflow.cn",
apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"siliconflow",
"https://api.siliconflow.cn/v1",
"Pro/MiniMaxAI/MiniMax-M2.7",
),
endpointCandidates: ["https://api.siliconflow.cn/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "Pro/MiniMaxAI/MiniMax-M2.7",
displayName: "Pro / MiniMax M2.7",
contextWindow: 200000,
},
]),
category: "aggregator",
isPartner: true,
partnerPromotionKey: "siliconflow",
icon: "siliconflow",
iconColor: "#6E29F6",
},
{
name: "SiliconFlow en",
websiteUrl: "https://siliconflow.com",
apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"siliconflow_en",
"https://api.siliconflow.com/v1",
"MiniMaxAI/MiniMax-M2.7",
),
endpointCandidates: ["https://api.siliconflow.com/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "MiniMaxAI/MiniMax-M2.7",
displayName: "MiniMax M2.7",
contextWindow: 200000,
},
]),
category: "aggregator",
isPartner: true,
partnerPromotionKey: "siliconflow",
icon: "siliconflow",
iconColor: "#000000",
},
{
name: "Novita AI",
websiteUrl: "https://novita.ai",
apiKeyUrl: "https://novita.ai",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"novita",
"https://api.novita.ai/openai/v1",
"zai-org/glm-5.1",
),
endpointCandidates: ["https://api.novita.ai/openai/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "zai-org/glm-5.1",
displayName: "GLM-5.1",
contextWindow: 202800,
},
]),
codexChatReasoning: {
supportsThinking: true,
supportsEffort: false,
thinkingParam: "thinking",
effortParam: "none",
outputFormat: "reasoning_content",
},
category: "aggregator",
icon: "novita",
iconColor: "#000000",
},
{
name: "Nvidia",
websiteUrl: "https://build.nvidia.com",
apiKeyUrl: "https://build.nvidia.com/settings/api-keys",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"nvidia",
"https://integrate.api.nvidia.com/v1",
"moonshotai/kimi-k2.5",
),
endpointCandidates: ["https://integrate.api.nvidia.com/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "moonshotai/kimi-k2.5",
displayName: "Kimi K2.5",
contextWindow: 262144,
},
]),
codexChatReasoning: {
supportsThinking: true,
supportsEffort: false,
thinkingParam: "thinking",
effortParam: "none",
outputFormat: "reasoning_content",
},
category: "aggregator",
icon: "nvidia",
iconColor: "#000000",
},
{
name: "OpenCode Go",
websiteUrl: "https://opencode.ai/go",
apiKeyUrl: "https://opencode.ai/go?ref=2YTRG2NGTX",
partnerPromotionKey: "opencode_go",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"opencode_go",
"https://opencode.ai/zen/go/v1",
"glm-5.2",
),
endpointCandidates: ["https://opencode.ai/zen/go/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{ model: "glm-5.2", displayName: "GLM 5.2", contextWindow: 204800 },
{ model: "glm-5.1", displayName: "GLM 5.1", contextWindow: 204800 },
{
model: "kimi-k2.7-code",
displayName: "Kimi K2.7 Code",
contextWindow: 262144,
},
{ model: "deepseek-v4-pro", displayName: "DeepSeek V4 Pro" },
{ model: "deepseek-v4-flash", displayName: "DeepSeek V4 Flash" },
{
model: "mimo-v2.5-pro",
displayName: "MiMo V2.5 Pro",
contextWindow: 1048576,
},
]),
category: "third_party",
icon: "opencode",
iconColor: "#211E1E",
},
{
name: "AiHubMix",
websiteUrl: "https://aihubmix.com",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"aihubmix",
"https://aihubmix.com/v1",
"gpt-5.5",
),
endpointCandidates: [
"https://aihubmix.com/v1",
"https://api.aihubmix.com/v1",
],
},
{
name: "CherryIN",
websiteUrl: "https://open.cherryin.ai",
apiKeyUrl: "https://open.cherryin.ai/console/token",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"cherryin",
"https://open.cherryin.net/v1",
"openai/gpt-5.5",
),
endpointCandidates: ["https://open.cherryin.net/v1"],
category: "aggregator",
icon: "cherryin",
},
{
name: "DMXAPI",
websiteUrl: "https://www.dmxapi.cn",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"dmxapi",
"https://www.dmxapi.cn/v1",
"gpt-5.5",
),
endpointCandidates: ["https://www.dmxapi.cn/v1"],
isPartner: true, // 合作伙伴
partnerPromotionKey: "dmxapi", // 促销信息 i18n key
},
{
name: "PackyCode",
websiteUrl: "https://www.packyapi.com",
apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch",
category: "third_party",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"packycode",
"https://www.packyapi.com/v1",
"gpt-5.5",
),
endpointCandidates: [
"https://www.packyapi.com/v1",
"https://api-slb.packyapi.com/v1",
],
isPartner: true, // 合作伙伴
partnerPromotionKey: "packycode", // 促销信息 i18n key
icon: "packycode",
},
{
name: "APIKEY.FUN",
websiteUrl: "https://apikey.fun",
apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch",
category: "third_party",
auth: generateThirdPartyAuth(""),
config: `model_provider = "custom"
model = "gpt-5.5"
review_model = "gpt-5.5"
model_reasoning_effort = "high"
disable_response_storage = true
[model_providers.custom]
name = "APIKEY.FUN"
base_url = "https://api.apikey.fun/v1"
wire_api = "responses"
requires_openai_auth = true`,
endpointCandidates: [
"https://api.apikey.fun/v1",
"https://slb.apikey.fun/v1",
],
apiFormat: "openai_responses",
isPartner: true,
partnerPromotionKey: "apikeyfun",
icon: "apikeyfun",
},
{
name: "APINebula",
websiteUrl: "https://apinebula.com",
apiKeyUrl: "https://apinebula.com/02rw5X",
category: "third_party",
auth: generateThirdPartyAuth(""),
config: `model_provider = "custom"
model = "gpt-5.5"
review_model = "gpt-5.5"
model_reasoning_effort = "high"
disable_response_storage = true
[model_providers.custom]
name = "APINebula"
base_url = "https://apinebula.com/v1"
wire_api = "responses"
requires_openai_auth = true`,
endpointCandidates: ["https://apinebula.com/v1"],
apiFormat: "openai_responses",
isPartner: true,
partnerPromotionKey: "apinebula",
icon: "apinebula",
},
{
name: "AtlasCloud",
websiteUrl: "https://www.atlascloud.ai/console/coding-plan",
apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: `model_provider = "custom"
model = "zai-org/glm-5.1"
disable_response_storage = true
[model_providers.custom]
name = "AtlasCloud"
base_url = "https://api.atlascloud.ai/v1"
wire_api = "responses"
requires_openai_auth = true`,
endpointCandidates: ["https://api.atlascloud.ai/v1"],
apiFormat: "openai_chat",
modelCatalog: modelCatalog([
{
model: "zai-org/glm-5.1",
displayName: "GLM 5.1",
contextWindow: 200000,
},
]),
isPartner: true,
partnerPromotionKey: "atlascloud",
icon: "atlascloud",
},
{
name: "SudoCode",
websiteUrl: "https://sudocode.us",
apiKeyUrl: "https://sudocode.us",
category: "third_party",
auth: generateThirdPartyAuth(""),
config: `model_provider = "custom"
model = "gpt-5.5"
review_model = "gpt-5.5"
model_reasoning_effort = "high"
disable_response_storage = true
model_verbosity = "high"
[model_providers.custom]
name = "sudocode"
base_url = "https://sudocode.us/v1"
wire_api = "responses"
requires_openai_auth = true`,
endpointCandidates: ["https://sudocode.us/v1", "https://sudocode.run/v1"],
apiFormat: "openai_responses",
icon: "sudocode",
},
{
name: "ClaudeCN",
websiteUrl: "https://claudecn.top",
apiKeyUrl: "https://claudecn.top/register?aff=ccswitch",
category: "third_party",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"claudecn",
"https://claudecn.top/v1",
"gpt-5.5",
),
isPartner: true,
partnerPromotionKey: "claudecn",
icon: "claudecn",
},
{
name: "RunAPI",
websiteUrl: "https://runapi.co",
apiKeyUrl: "https://runapi.co",
category: "aggregator",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"runapi",
"https://runapi.co/v1",
"gpt-5.5",
),
isPartner: true,
partnerPromotionKey: "runapi",
icon: "runapi",
},
{
name: "RelaxyCode",
websiteUrl: "https://www.relaxycode.com",
apiKeyUrl: "https://www.relaxycode.com/register",
category: "third_party",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"relaxycode",
"https://www.relaxycode.com/v1",
"gpt-5.5",
),
icon: "relaxcode",
},
{
name: "Cubence",
websiteUrl: "https://cubence.com",
apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"cubence",
"https://api.cubence.com/v1",
"gpt-5.5",
),
endpointCandidates: [
"https://api.cubence.com/v1",
"https://api-cf.cubence.com/v1",
"https://api-dmit.cubence.com/v1",
"https://api-bwg.cubence.com/v1",
],
category: "third_party",
isPartner: true, // 合作伙伴
partnerPromotionKey: "cubence", // 促销信息 i18n key
icon: "cubence",
iconColor: "#000000",
},
{
name: "AIGoCode",
websiteUrl: "https://aigocode.com",
apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH",
category: "third_party",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"aigocode",
"https://api.aigocode.com",
"gpt-5.5",
),
endpointCandidates: ["https://api.aigocode.com"],
isPartner: true, // 合作伙伴
partnerPromotionKey: "aigocode", // 促销信息 i18n key
icon: "aigocode",
iconColor: "#5B7FFF",
},
{
name: "RightCode",
websiteUrl: "https://www.right.codes",
apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"rightcode",
"https://right.codes/codex/v1",
"gpt-5.5",
),
category: "third_party",
isPartner: true,
partnerPromotionKey: "rightcode",
icon: "rc",
iconColor: "#E96B2C",
},
{
name: "AICodeMirror",
websiteUrl: "https://www.aicodemirror.com",
apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"aicodemirror",
"https://api.aicodemirror.com/api/codex/backend-api/codex",
"gpt-5.5",
),
endpointCandidates: [
"https://api.aicodemirror.com/api/codex/backend-api/codex",
"https://api.claudecode.net.cn/api/codex/backend-api/codex",
],
isPartner: true,
partnerPromotionKey: "aicodemirror",
icon: "aicodemirror",
iconColor: "#000000",
},
{
name: "CrazyRouter",
websiteUrl: "https://www.crazyrouter.com",
apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"crazyrouter",
"https://cn.crazyrouter.com/v1",
"gpt-5.5",
),
endpointCandidates: ["https://cn.crazyrouter.com/v1"],
isPartner: true,
partnerPromotionKey: "crazyrouter",
icon: "crazyrouter",
iconColor: "#000000",
},
{
name: "SSSAiCode",
websiteUrl: "https://sssaicodeapi.com",
apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"sssaicode",
"https://node-hk.sssaicodeapi.com/api/v1",
"gpt-5.5",
),
endpointCandidates: [
"https://node-hk.sssaicodeapi.com/api/v1",
"https://node-hk.sssaiapi.com/api/v1",
"https://node-cf.sssaicodeapi.com/api/v1",
],
category: "third_party",
isPartner: true, // 合作伙伴
partnerPromotionKey: "sssaicode", // 促销信息 i18n key
icon: "sssaicode",
iconColor: "#000000",
},
{
name: "Compshare",
nameKey: "providerForm.presets.ucloud",
websiteUrl: "https://www.compshare.cn",
apiKeyUrl:
"https://www.compshare.cn/coding-plan?ytag=GPU_YY_YX_git_cc-switch",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"compshare",
"https://api.modelverse.cn/v1",
"gpt-5.5",
),
endpointCandidates: ["https://api.modelverse.cn/v1"],
category: "aggregator",
isPartner: true, // 合作伙伴
partnerPromotionKey: "ucloud", // 促销信息 i18n key
icon: "ucloud",
iconColor: "#000000",
},
{
name: "Compshare Coding Plan",
nameKey: "providerForm.presets.ucloudCoding",
websiteUrl: "https://www.compshare.cn",
apiKeyUrl:
"https://www.compshare.cn/coding-plan?ytag=GPU_YY_YX_git_cc-switch",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"compshare_coding",
"https://cp.compshare.cn/v1",
"gpt-5.5",
),
endpointCandidates: ["https://cp.compshare.cn/v1"],
category: "aggregator",
isPartner: true, // 合作伙伴
partnerPromotionKey: "ucloud", // 促销信息 i18n key(复用)
icon: "ucloud",
iconColor: "#000000",
},
{
name: "Micu",
websiteUrl: "https://www.micuapi.ai",
apiKeyUrl: "https://www.micuapi.ai/register?aff=aOYQ",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"micu",
"https://www.micuapi.ai/v1",
"gpt-5.5",
),
endpointCandidates: ["https://www.micuapi.ai/v1"],
category: "third_party",
isPartner: true, // 合作伙伴
partnerPromotionKey: "micu", // 促销信息 i18n key
icon: "micu",
iconColor: "#000000",
},
{
name: "ETok.ai",
websiteUrl: "https://etok.ai",
apiKeyUrl: "https://etok.ai",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"etok",
"https://api.etok.ai/v1",
"gpt-5.5",
),
endpointCandidates: ["https://api.etok.ai/v1"],
category: "third_party",
isPartner: true, // 合作伙伴
partnerPromotionKey: "etok", // 促销信息 i18n key
icon: "etok",
iconColor: "#000000",
},
{
name: "E-FlowCode",
websiteUrl: "https://e-flowcode.cc",
apiKeyUrl: "https://e-flowcode.cc",
auth: {
OPENAI_API_KEY: "",
},
config: `model_provider = "custom"
model = "gpt-5.5"
model_reasoning_effort = "high"
disable_response_storage = true
personality = "pragmatic"
[model_providers.custom]
name = "E-FlowCode"
base_url = "https://e-flowcode.cc/v1"
wire_api = "responses"
requires_openai_auth = true
model_context_window = 1000000
model_auto_compact_token_limit = 9000000`,
category: "third_party",
endpointCandidates: ["https://e-flowcode.cc/v1"],
icon: "eflowcode",
iconColor: "#000000",
},
{
name: "PIPELLM",
websiteUrl: "https://code.pipellm.ai",
apiKeyUrl: "https://code.pipellm.ai/login?ref=uvw650za",
auth: {
OPENAI_API_KEY: "",
},
config: `model_provider = "custom"
model = "gpt-5.5"
model_reasoning_effort = "medium"
disable_response_storage = true
[model_providers.custom]
name = "PIPELLM"
wire_api = "responses"
requires_openai_auth = true
base_url = "https://cc-api.pipellm.ai/v1"`,
category: "aggregator",
endpointCandidates: ["https://cc-api.pipellm.ai/v1"],
icon: "pipellm",
},
{
name: "OpenRouter",
websiteUrl: "https://openrouter.ai",
apiKeyUrl: "https://openrouter.ai/keys",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"openrouter",
"https://openrouter.ai/api/v1",
"gpt-5.5",
),
category: "aggregator",
icon: "openrouter",
iconColor: "#6566F1",
},
{
name: "TheRouter",
websiteUrl: "https://therouter.ai",
apiKeyUrl: "https://dashboard.therouter.ai",
auth: generateThirdPartyAuth(""),
config: generateThirdPartyConfig(
"therouter",
"https://api.therouter.ai/v1",
"openai/gpt-5.3-codex",
),
endpointCandidates: ["https://api.therouter.ai/v1"],
category: "aggregator",
},
];