mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 21:30:17 +08:00
df11df4d9c
Add ClaudeAPI as a new partner provider with support for: - Claude Code preset (using ANTHROPIC_AUTH_TOKEN field) - Claude Desktop preset (direct mode with passthrough routes) - Icon configuration (ClaudeApi.png) - i18n support (zh/en/ja) with test credit promotion ClaudeAPI provides official Anthropic API keys and AWS Bedrock routing with support for Tool Use and 1M context.
840 lines
24 KiB
TypeScript
840 lines
24 KiB
TypeScript
/**
|
||
* Claude Desktop 预设供应商配置模板
|
||
*
|
||
* 形态与 Claude Code 预设不同:
|
||
* - baseUrl 是顶级字段,而不是 settingsConfig.env.ANTHROPIC_BASE_URL
|
||
* - 模型信息以"Desktop 可见模型 ID → 上游模型"表达,
|
||
* 对应后端 ClaudeDesktopModelRoute 的 routeId / model
|
||
*
|
||
* 翻译来源:src/config/claudeProviderPresets.ts(排除 OAuth 与不兼容预设)
|
||
*/
|
||
import { ProviderCategory } from "../types";
|
||
import type { PresetTheme } from "./claudeProviderPresets";
|
||
|
||
export type ClaudeDesktopApiFormat =
|
||
| "anthropic"
|
||
| "openai_chat"
|
||
| "openai_responses"
|
||
| "gemini_native";
|
||
|
||
export interface ClaudeDesktopRoutePreset {
|
||
routeId: string;
|
||
upstreamModel: string;
|
||
labelOverride?: string;
|
||
supports1m: boolean;
|
||
}
|
||
|
||
/**
|
||
* Claude Desktop 3P fail-all 校验只接受 `claude-(sonnet|opus|haiku)-*` 形式的
|
||
* routeId(1.6259.1+,实测 2026-05-13)。所有预设工厂、表单角色下拉、
|
||
* 后端 `next_catalog_safe_route_id` 都从此映射派生 routeId,避免散落硬编码。
|
||
*/
|
||
export const CLAUDE_DESKTOP_ROLE_ROUTE_IDS = {
|
||
sonnet: "claude-sonnet-4-6",
|
||
opus: "claude-opus-4-7",
|
||
haiku: "claude-haiku-4-5",
|
||
} as const;
|
||
|
||
export type ClaudeDesktopRoleId = keyof typeof CLAUDE_DESKTOP_ROLE_ROUTE_IDS;
|
||
|
||
export interface ClaudeDesktopProviderPreset {
|
||
name: string;
|
||
nameKey?: string;
|
||
websiteUrl: string;
|
||
apiKeyUrl?: string;
|
||
category?: ProviderCategory;
|
||
isPartner?: boolean;
|
||
partnerPromotionKey?: string;
|
||
|
||
baseUrl: string;
|
||
apiKeyField?: "ANTHROPIC_AUTH_TOKEN" | "ANTHROPIC_API_KEY";
|
||
|
||
mode: "direct" | "proxy";
|
||
apiFormat?: ClaudeDesktopApiFormat;
|
||
modelRoutes?: ClaudeDesktopRoutePreset[];
|
||
providerType?: "github_copilot" | "codex_oauth";
|
||
requiresOAuth?: boolean;
|
||
|
||
endpointCandidates?: string[];
|
||
theme?: PresetTheme;
|
||
icon?: string;
|
||
iconColor?: string;
|
||
}
|
||
|
||
const passthroughRoutes = (supports1m = false): ClaudeDesktopRoutePreset[] => [
|
||
{
|
||
routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.sonnet,
|
||
upstreamModel: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.sonnet,
|
||
supports1m,
|
||
},
|
||
{
|
||
routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.opus,
|
||
upstreamModel: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.opus,
|
||
supports1m,
|
||
},
|
||
{
|
||
routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.haiku,
|
||
upstreamModel: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.haiku,
|
||
supports1m,
|
||
},
|
||
];
|
||
|
||
const mappedRoutes = (
|
||
sonnet: string,
|
||
opus: string,
|
||
haiku: string,
|
||
supports1m = false,
|
||
): ClaudeDesktopRoutePreset[] => [
|
||
{
|
||
routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.sonnet,
|
||
upstreamModel: sonnet,
|
||
supports1m,
|
||
},
|
||
{
|
||
routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.opus,
|
||
upstreamModel: opus,
|
||
supports1m,
|
||
},
|
||
{
|
||
routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.haiku,
|
||
upstreamModel: haiku,
|
||
supports1m,
|
||
},
|
||
];
|
||
|
||
/**
|
||
* 非 Claude 上游模型用此工厂:route ID 使用 Claude Desktop 能通过校验的
|
||
* Sonnet/Opus/Haiku 路由,真实品牌名只写入 labelOverride 和 upstreamModel。
|
||
*/
|
||
const brandedRoutes = (
|
||
sonnet: string,
|
||
opus: string,
|
||
haiku: string,
|
||
supports1m = false,
|
||
): ClaudeDesktopRoutePreset[] => {
|
||
const seenUpstream = new Set<string>();
|
||
return [
|
||
{ routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.sonnet, upstreamModel: sonnet },
|
||
{ routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.opus, upstreamModel: opus },
|
||
{ routeId: CLAUDE_DESKTOP_ROLE_ROUTE_IDS.haiku, upstreamModel: haiku },
|
||
]
|
||
.map(({ routeId, upstreamModel }) => ({
|
||
routeId,
|
||
upstreamModel,
|
||
labelOverride: upstreamModel,
|
||
supports1m,
|
||
}))
|
||
.filter((route) => {
|
||
if (seenUpstream.has(route.upstreamModel)) {
|
||
return false;
|
||
}
|
||
seenUpstream.add(route.upstreamModel);
|
||
return true;
|
||
});
|
||
};
|
||
|
||
export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [
|
||
{
|
||
name: "Shengsuanyun",
|
||
nameKey: "providerForm.presets.shengsuanyun",
|
||
websiteUrl: "https://www.shengsuanyun.com",
|
||
apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF",
|
||
category: "aggregator",
|
||
baseUrl: "https://router.shengsuanyun.com/api",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
isPartner: true,
|
||
partnerPromotionKey: "shengsuanyun",
|
||
icon: "shengsuanyun",
|
||
},
|
||
{
|
||
name: "Gemini Native",
|
||
websiteUrl: "https://ai.google.dev/gemini-api",
|
||
apiKeyUrl: "https://aistudio.google.com/app/apikey",
|
||
category: "third_party",
|
||
baseUrl: "https://generativelanguage.googleapis.com",
|
||
apiKeyField: "ANTHROPIC_API_KEY",
|
||
mode: "proxy",
|
||
apiFormat: "gemini_native",
|
||
modelRoutes: brandedRoutes(
|
||
"gemini-3.1-pro",
|
||
"gemini-3.1-pro",
|
||
"gemini-3-flash",
|
||
),
|
||
endpointCandidates: ["https://generativelanguage.googleapis.com"],
|
||
icon: "gemini",
|
||
iconColor: "#4285F4",
|
||
},
|
||
{
|
||
name: "GitHub Copilot",
|
||
websiteUrl: "https://github.com/features/copilot",
|
||
category: "third_party",
|
||
baseUrl: "https://api.githubcopilot.com",
|
||
mode: "proxy",
|
||
apiFormat: "openai_chat",
|
||
providerType: "github_copilot",
|
||
requiresOAuth: true,
|
||
modelRoutes: brandedRoutes(
|
||
"claude-sonnet-4.6",
|
||
"claude-sonnet-4.6",
|
||
"claude-haiku-4.5",
|
||
),
|
||
icon: "github",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "Codex",
|
||
websiteUrl: "https://openai.com/chatgpt/pricing",
|
||
category: "third_party",
|
||
baseUrl: "https://chatgpt.com/backend-api/codex",
|
||
mode: "proxy",
|
||
apiFormat: "openai_responses",
|
||
providerType: "codex_oauth",
|
||
requiresOAuth: true,
|
||
modelRoutes: brandedRoutes("gpt-5.4", "gpt-5.4", "gpt-5.4-mini"),
|
||
icon: "openai",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "DeepSeek",
|
||
websiteUrl: "https://platform.deepseek.com",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.deepseek.com/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"deepseek-v4-pro",
|
||
"deepseek-v4-pro",
|
||
"deepseek-v4-flash",
|
||
),
|
||
icon: "deepseek",
|
||
iconColor: "#1E88E5",
|
||
},
|
||
{
|
||
name: "Zhipu GLM",
|
||
websiteUrl: "https://open.bigmodel.cn",
|
||
apiKeyUrl: "https://www.bigmodel.cn/claude-code?ic=RRVJPB5SII",
|
||
category: "cn_official",
|
||
baseUrl: "https://open.bigmodel.cn/api/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes("glm-5", "glm-5", "glm-5"),
|
||
icon: "zhipu",
|
||
iconColor: "#0F62FE",
|
||
},
|
||
{
|
||
name: "Zhipu GLM en",
|
||
websiteUrl: "https://z.ai",
|
||
apiKeyUrl: "https://z.ai/subscribe?ic=8JVLJQFSKB",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.z.ai/api/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes("glm-5", "glm-5", "glm-5"),
|
||
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",
|
||
category: "cn_official",
|
||
baseUrl: "https://qianfan.baidubce.com/anthropic/coding",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"qianfan-code-latest",
|
||
"qianfan-code-latest",
|
||
"qianfan-code-latest",
|
||
),
|
||
endpointCandidates: ["https://qianfan.baidubce.com/anthropic/coding"],
|
||
icon: "baidu",
|
||
iconColor: "#2932E1",
|
||
},
|
||
{
|
||
name: "Bailian",
|
||
websiteUrl: "https://bailian.console.aliyun.com",
|
||
category: "cn_official",
|
||
baseUrl: "https://dashscope.aliyuncs.com/apps/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
icon: "bailian",
|
||
iconColor: "#624AFF",
|
||
},
|
||
{
|
||
name: "Bailian For Coding",
|
||
websiteUrl: "https://bailian.console.aliyun.com",
|
||
category: "cn_official",
|
||
baseUrl: "https://coding.dashscope.aliyuncs.com/apps/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
icon: "bailian",
|
||
iconColor: "#624AFF",
|
||
},
|
||
{
|
||
name: "Kimi",
|
||
websiteUrl: "https://platform.moonshot.cn/console",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.moonshot.cn/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes("kimi-k2.6", "kimi-k2.6", "kimi-k2.6"),
|
||
icon: "kimi",
|
||
iconColor: "#6366F1",
|
||
},
|
||
{
|
||
name: "Kimi For Coding",
|
||
websiteUrl: "https://www.kimi.com/code/docs/",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.kimi.com/coding/",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
icon: "kimi",
|
||
iconColor: "#6366F1",
|
||
},
|
||
{
|
||
name: "StepFun",
|
||
websiteUrl: "https://platform.stepfun.com/step-plan",
|
||
apiKeyUrl: "https://platform.stepfun.com/interface-key",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.stepfun.com/step_plan",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"step-3.5-flash-2603",
|
||
"step-3.5-flash-2603",
|
||
"step-3.5-flash-2603",
|
||
),
|
||
endpointCandidates: ["https://api.stepfun.com/step_plan"],
|
||
icon: "stepfun",
|
||
iconColor: "#16D6D2",
|
||
},
|
||
{
|
||
name: "StepFun en",
|
||
websiteUrl: "https://platform.stepfun.ai/step-plan",
|
||
apiKeyUrl: "https://platform.stepfun.ai/interface-key",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.stepfun.ai/step_plan",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"step-3.5-flash-2603",
|
||
"step-3.5-flash-2603",
|
||
"step-3.5-flash-2603",
|
||
),
|
||
endpointCandidates: ["https://api.stepfun.ai/step_plan"],
|
||
icon: "stepfun",
|
||
iconColor: "#16D6D2",
|
||
},
|
||
{
|
||
name: "ModelScope",
|
||
websiteUrl: "https://modelscope.cn",
|
||
category: "aggregator",
|
||
baseUrl: "https://api-inference.modelscope.cn",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"ZhipuAI/GLM-5",
|
||
"ZhipuAI/GLM-5",
|
||
"ZhipuAI/GLM-5",
|
||
),
|
||
icon: "modelscope",
|
||
iconColor: "#624AFF",
|
||
},
|
||
{
|
||
name: "Longcat",
|
||
websiteUrl: "https://longcat.chat/platform",
|
||
apiKeyUrl: "https://longcat.chat/platform/api_keys",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.longcat.chat/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"LongCat-Flash-Chat",
|
||
"LongCat-Flash-Chat",
|
||
"LongCat-Flash-Chat",
|
||
),
|
||
icon: "longcat",
|
||
iconColor: "#29E154",
|
||
},
|
||
{
|
||
name: "MiniMax",
|
||
websiteUrl: "https://platform.minimaxi.com",
|
||
apiKeyUrl: "https://platform.minimaxi.com/subscribe/coding-plan",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.minimaxi.com/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes("MiniMax-M2.7", "MiniMax-M2.7", "MiniMax-M2.7"),
|
||
isPartner: true,
|
||
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",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.minimax.io/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes("MiniMax-M2.7", "MiniMax-M2.7", "MiniMax-M2.7"),
|
||
isPartner: true,
|
||
partnerPromotionKey: "minimax_en",
|
||
theme: {
|
||
backgroundColor: "#f64551",
|
||
textColor: "#FFFFFF",
|
||
},
|
||
icon: "minimax",
|
||
iconColor: "#FF6B6B",
|
||
},
|
||
{
|
||
name: "DouBaoSeed",
|
||
websiteUrl: "https://www.volcengine.com/product/doubao",
|
||
apiKeyUrl: "https://www.volcengine.com/product/doubao",
|
||
category: "cn_official",
|
||
baseUrl: "https://ark.cn-beijing.volces.com/api/coding",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"doubao-seed-2-0-code-preview-latest",
|
||
"doubao-seed-2-0-code-preview-latest",
|
||
"doubao-seed-2-0-code-preview-latest",
|
||
),
|
||
icon: "doubao",
|
||
iconColor: "#3370FF",
|
||
},
|
||
{
|
||
name: "BaiLing",
|
||
websiteUrl: "https://alipaytbox.yuque.com/sxs0ba/ling/get_started",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.tbox.cn/api/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes("Ling-2.5-1T", "Ling-2.5-1T", "Ling-2.5-1T"),
|
||
},
|
||
{
|
||
name: "AiHubMix",
|
||
websiteUrl: "https://aihubmix.com",
|
||
apiKeyUrl: "https://aihubmix.com",
|
||
category: "aggregator",
|
||
baseUrl: "https://aihubmix.com",
|
||
apiKeyField: "ANTHROPIC_API_KEY",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: ["https://aihubmix.com", "https://api.aihubmix.com"],
|
||
icon: "aihubmix",
|
||
iconColor: "#006FFB",
|
||
},
|
||
{
|
||
name: "SiliconFlow",
|
||
websiteUrl: "https://siliconflow.cn",
|
||
apiKeyUrl: "https://cloud.siliconflow.cn/i/drGuwc9k",
|
||
category: "aggregator",
|
||
baseUrl: "https://api.siliconflow.cn",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"Pro/MiniMaxAI/MiniMax-M2.7",
|
||
"Pro/MiniMaxAI/MiniMax-M2.7",
|
||
"Pro/MiniMaxAI/MiniMax-M2.7",
|
||
),
|
||
isPartner: true,
|
||
partnerPromotionKey: "siliconflow",
|
||
icon: "siliconflow",
|
||
iconColor: "#6E29F6",
|
||
},
|
||
{
|
||
name: "SiliconFlow en",
|
||
websiteUrl: "https://siliconflow.com",
|
||
apiKeyUrl: "https://cloud.siliconflow.cn/i/drGuwc9k",
|
||
category: "aggregator",
|
||
baseUrl: "https://api.siliconflow.com",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"MiniMaxAI/MiniMax-M2.7",
|
||
"MiniMaxAI/MiniMax-M2.7",
|
||
"MiniMaxAI/MiniMax-M2.7",
|
||
),
|
||
isPartner: true,
|
||
partnerPromotionKey: "siliconflow",
|
||
icon: "siliconflow",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "DMXAPI",
|
||
websiteUrl: "https://www.dmxapi.cn",
|
||
apiKeyUrl: "https://www.dmxapi.cn",
|
||
category: "aggregator",
|
||
baseUrl: "https://www.dmxapi.cn",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: ["https://www.dmxapi.cn", "https://api.dmxapi.cn"],
|
||
isPartner: true,
|
||
partnerPromotionKey: "dmxapi",
|
||
},
|
||
{
|
||
name: "PackyCode",
|
||
websiteUrl: "https://www.packyapi.com",
|
||
apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch",
|
||
category: "third_party",
|
||
baseUrl: "https://www.packyapi.com",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: [
|
||
"https://www.packyapi.com",
|
||
"https://api-slb.packyapi.com",
|
||
],
|
||
isPartner: true,
|
||
partnerPromotionKey: "packycode",
|
||
icon: "packycode",
|
||
},
|
||
{
|
||
name: "PatewayAI",
|
||
websiteUrl: "https://pateway.ai",
|
||
apiKeyUrl: "https://pateway.ai/?ch=etzpm8&aff=WB6M6F67#/",
|
||
category: "third_party",
|
||
baseUrl: "https://api.pateway.ai",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
isPartner: true,
|
||
partnerPromotionKey: "patewayai",
|
||
icon: "pateway",
|
||
},
|
||
{
|
||
name: "ClaudeAPI",
|
||
websiteUrl: "https://claudeapi.com",
|
||
apiKeyUrl: "https://console.claudeapi.com/register?aff=pCLD",
|
||
category: "third_party",
|
||
baseUrl: "https://gw.claudeapi.com",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
isPartner: true,
|
||
partnerPromotionKey: "claudeapi",
|
||
icon: "claudeapi",
|
||
},
|
||
{
|
||
name: "Cubence",
|
||
websiteUrl: "https://cubence.com",
|
||
apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs",
|
||
category: "third_party",
|
||
baseUrl: "https://api.cubence.com",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: [
|
||
"https://api.cubence.com",
|
||
"https://api-cf.cubence.com",
|
||
"https://api-dmit.cubence.com",
|
||
"https://api-bwg.cubence.com",
|
||
],
|
||
isPartner: true,
|
||
partnerPromotionKey: "cubence",
|
||
icon: "cubence",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "AIGoCode",
|
||
websiteUrl: "https://aigocode.com",
|
||
apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH",
|
||
category: "third_party",
|
||
baseUrl: "https://api.aigocode.com",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: ["https://api.aigocode.com"],
|
||
isPartner: true,
|
||
partnerPromotionKey: "aigocode",
|
||
icon: "aigocode",
|
||
iconColor: "#5B7FFF",
|
||
},
|
||
{
|
||
name: "RightCode",
|
||
websiteUrl: "https://www.right.codes",
|
||
apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH",
|
||
category: "third_party",
|
||
baseUrl: "https://www.right.codes/claude",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
isPartner: true,
|
||
partnerPromotionKey: "rightcode",
|
||
icon: "rc",
|
||
iconColor: "#E96B2C",
|
||
},
|
||
{
|
||
name: "AICodeMirror",
|
||
websiteUrl: "https://www.aicodemirror.com",
|
||
apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3",
|
||
category: "third_party",
|
||
baseUrl: "https://api.aicodemirror.com/api/claudecode",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: [
|
||
"https://api.aicodemirror.com/api/claudecode",
|
||
"https://api.claudecode.net.cn/api/claudecode",
|
||
],
|
||
isPartner: true,
|
||
partnerPromotionKey: "aicodemirror",
|
||
icon: "aicodemirror",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "AICoding",
|
||
websiteUrl: "https://aicoding.sh",
|
||
apiKeyUrl: "https://aicoding.sh/i/CCSWITCH",
|
||
category: "third_party",
|
||
baseUrl: "https://api.aicoding.sh",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: ["https://api.aicoding.sh"],
|
||
isPartner: true,
|
||
partnerPromotionKey: "aicoding",
|
||
icon: "aicoding",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "CrazyRouter",
|
||
websiteUrl: "https://www.crazyrouter.com",
|
||
apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch",
|
||
category: "third_party",
|
||
baseUrl: "https://cn.crazyrouter.com",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: ["https://cn.crazyrouter.com"],
|
||
isPartner: true,
|
||
partnerPromotionKey: "crazyrouter",
|
||
icon: "crazyrouter",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "SSSAiCode",
|
||
websiteUrl: "https://www.sssaicode.com",
|
||
apiKeyUrl: "https://www.sssaicode.com/register?ref=DCP0SM",
|
||
category: "third_party",
|
||
baseUrl: "https://node-hk.sssaicode.com/api",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: [
|
||
"https://node-hk.sssaicode.com/api",
|
||
"https://claude2.sssaicode.com/api",
|
||
"https://anti.sssaicode.com/api",
|
||
],
|
||
isPartner: true,
|
||
partnerPromotionKey: "sssaicode",
|
||
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",
|
||
category: "aggregator",
|
||
baseUrl: "https://api.modelverse.cn",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: ["https://api.modelverse.cn"],
|
||
isPartner: true,
|
||
partnerPromotionKey: "ucloud",
|
||
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",
|
||
category: "aggregator",
|
||
baseUrl: "https://cp.compshare.cn",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: ["https://cp.compshare.cn"],
|
||
isPartner: true,
|
||
partnerPromotionKey: "ucloud",
|
||
icon: "ucloud",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "Micu",
|
||
websiteUrl: "https://www.micuapi.ai",
|
||
apiKeyUrl: "https://www.micuapi.ai/register?aff=aOYQ",
|
||
category: "third_party",
|
||
baseUrl: "https://www.micuapi.ai",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: ["https://www.micuapi.ai"],
|
||
isPartner: true,
|
||
partnerPromotionKey: "micu",
|
||
icon: "micu",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "CTok.ai",
|
||
websiteUrl: "https://ctok.ai",
|
||
apiKeyUrl: "https://ctok.ai",
|
||
category: "third_party",
|
||
baseUrl: "https://api.ctok.ai",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
isPartner: true,
|
||
partnerPromotionKey: "ctok",
|
||
icon: "ctok",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "E-FlowCode",
|
||
websiteUrl: "https://e-flowcode.cc",
|
||
apiKeyUrl: "https://e-flowcode.cc",
|
||
category: "third_party",
|
||
baseUrl: "https://e-flowcode.cc",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
endpointCandidates: ["https://e-flowcode.cc"],
|
||
icon: "eflowcode",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "LionCCAPI",
|
||
websiteUrl: "https://vibecodingapi.ai",
|
||
category: "third_party",
|
||
baseUrl: "https://vibecodingapi.ai",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
isPartner: true,
|
||
partnerPromotionKey: "lionccapi",
|
||
icon: "lioncc",
|
||
},
|
||
{
|
||
name: "OpenRouter",
|
||
websiteUrl: "https://openrouter.ai",
|
||
apiKeyUrl: "https://openrouter.ai/keys",
|
||
category: "aggregator",
|
||
baseUrl: "https://openrouter.ai/api",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: mappedRoutes(
|
||
"anthropic/claude-sonnet-4.6",
|
||
"anthropic/claude-opus-4.7",
|
||
"anthropic/claude-haiku-4.5",
|
||
true,
|
||
),
|
||
icon: "openrouter",
|
||
iconColor: "#6566F1",
|
||
},
|
||
{
|
||
name: "TheRouter",
|
||
websiteUrl: "https://therouter.ai",
|
||
apiKeyUrl: "https://dashboard.therouter.ai",
|
||
category: "aggregator",
|
||
baseUrl: "https://api.therouter.ai",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: mappedRoutes(
|
||
"anthropic/claude-sonnet-4.6",
|
||
"anthropic/claude-opus-4.7",
|
||
"anthropic/claude-haiku-4.5",
|
||
true,
|
||
),
|
||
endpointCandidates: ["https://api.therouter.ai"],
|
||
},
|
||
{
|
||
name: "Novita AI",
|
||
websiteUrl: "https://novita.ai",
|
||
apiKeyUrl: "https://novita.ai",
|
||
category: "aggregator",
|
||
baseUrl: "https://api.novita.ai/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes(
|
||
"zai-org/glm-5",
|
||
"zai-org/glm-5",
|
||
"zai-org/glm-5",
|
||
),
|
||
endpointCandidates: ["https://api.novita.ai/anthropic"],
|
||
icon: "novita",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "LemonData",
|
||
websiteUrl: "https://lemondata.cc",
|
||
apiKeyUrl: "https://lemondata.cc/r/FFX1ZDUP",
|
||
category: "third_party",
|
||
baseUrl: "https://api.lemondata.cc",
|
||
apiKeyField: "ANTHROPIC_API_KEY",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
isPartner: true,
|
||
partnerPromotionKey: "lemondata",
|
||
icon: "lemondata",
|
||
},
|
||
{
|
||
name: "Nvidia",
|
||
websiteUrl: "https://build.nvidia.com",
|
||
apiKeyUrl: "https://build.nvidia.com/settings/api-keys",
|
||
category: "aggregator",
|
||
baseUrl: "https://integrate.api.nvidia.com",
|
||
mode: "proxy",
|
||
apiFormat: "openai_chat",
|
||
modelRoutes: brandedRoutes(
|
||
"moonshotai/kimi-k2.5",
|
||
"moonshotai/kimi-k2.5",
|
||
"moonshotai/kimi-k2.5",
|
||
),
|
||
icon: "nvidia",
|
||
iconColor: "#000000",
|
||
},
|
||
{
|
||
name: "PIPELLM",
|
||
websiteUrl: "https://code.pipellm.ai",
|
||
apiKeyUrl: "https://code.pipellm.ai/login?ref=uvw650za",
|
||
category: "aggregator",
|
||
baseUrl: "https://cc-api.pipellm.ai",
|
||
mode: "direct",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: passthroughRoutes(),
|
||
icon: "pipellm",
|
||
},
|
||
{
|
||
name: "Xiaomi MiMo",
|
||
websiteUrl: "https://platform.xiaomimimo.com",
|
||
apiKeyUrl: "https://platform.xiaomimimo.com/#/console/api-keys",
|
||
category: "cn_official",
|
||
baseUrl: "https://api.xiaomimimo.com/anthropic",
|
||
mode: "proxy",
|
||
apiFormat: "anthropic",
|
||
modelRoutes: brandedRoutes("mimo-v2-pro", "mimo-v2-pro", "mimo-v2-pro"),
|
||
icon: "xiaomimimo",
|
||
iconColor: "#000000",
|
||
},
|
||
];
|