diff --git a/src/components/providers/forms/ProviderPresetSelector.tsx b/src/components/providers/forms/ProviderPresetSelector.tsx index 8cc2d13ae..eb301a806 100644 --- a/src/components/providers/forms/ProviderPresetSelector.tsx +++ b/src/components/providers/forms/ProviderPresetSelector.tsx @@ -87,10 +87,16 @@ export function sortPresetEntries( sortMode: PresetSortMode, t: PresetTranslator, ): PresetEntry[] { + const byDisplayName = (a: PresetEntry, b: PresetEntry) => + getPresetDisplayName(a.preset, t).localeCompare( + getPresetDisplayName(b.preset, t), + ); + if (sortMode === PresetSortMode.Original) { - // 置顶优先级:官方分类 > 尊享合作伙伴(Kimi)> 其余原顺序。 - // 用分区拼接而非排序,确保每组内部各自的相对顺序都不变; - // 排他条件保证「既是官方又是 prime」的预设只归入官方组、不被重复。 + // 置顶优先级:官方分类 > 尊享合作伙伴(Kimi)> 其余赞助商 > 非赞助商。 + // 前三组用分区拼接而非排序,保持各自在预设文件里的相对顺序 + // (赞助商的文件顺序与 README 赞助商表对齐);非赞助商按显示名排序。 + // 排他条件保证同时命中多组的预设只归入最前面的组、不被重复。 const official = entries.filter( (entry) => entry.preset.category === "official", ); @@ -98,18 +104,24 @@ export function sortPresetEntries( (entry) => entry.preset.category !== "official" && entry.preset.primePartner, ); - const rest = entries.filter( + const partner = entries.filter( (entry) => - entry.preset.category !== "official" && !entry.preset.primePartner, + entry.preset.category !== "official" && + !entry.preset.primePartner && + entry.preset.isPartner, ); - return [...official, ...prime, ...rest]; + const rest = entries + .filter( + (entry) => + entry.preset.category !== "official" && + !entry.preset.primePartner && + !entry.preset.isPartner, + ) + .sort(byDisplayName); + return [...official, ...prime, ...partner, ...rest]; } - return [...entries].sort((a, b) => - getPresetDisplayName(a.preset, t).localeCompare( - getPresetDisplayName(b.preset, t), - ), - ); + return [...entries].sort(byDisplayName); } export interface PresetVisibilityOptions { diff --git a/src/config/claudeDesktopProviderPresets.ts b/src/config/claudeDesktopProviderPresets.ts index 9ecbd6f65..428daeb74 100644 --- a/src/config/claudeDesktopProviderPresets.ts +++ b/src/config/claudeDesktopProviderPresets.ts @@ -153,6 +153,150 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ icon: "anthropic", iconColor: "#D4915D", }, + // ===== 赞助商预设:文件顺序 = 应用内展示顺序,与 README 赞助商表对齐 ===== + { + name: "Kimi", + primePartner: true, + websiteUrl: "https://platform.kimi.com?aff=cc-switch", + category: "cn_official", + baseUrl: "https://api.moonshot.cn/anthropic", + mode: "proxy", + apiFormat: "anthropic", + modelRoutes: brandedRoutes( + "kimi-k2.7-code", + "kimi-k2.7-code", + "kimi-k2.7-code", + ), + icon: "kimi", + iconColor: "#6366F1", + }, + { + name: "Kimi For Coding", + primePartner: true, + websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", + category: "cn_official", + baseUrl: "https://api.kimi.com/coding/", + mode: "proxy", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + icon: "kimi", + iconColor: "#6366F1", + }, + { + 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: "ZetaAPI", + websiteUrl: "https://zetaapi.ai", + apiKeyUrl: "https://zetaapi.ai/go/u117", + category: "aggregator", + baseUrl: "https://api.zetaapi.ai", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + isPartner: true, + partnerPromotionKey: "zetaapi", + icon: "zetaapi", + }, + { + name: "APINebula", + websiteUrl: "https://apinebula.com", + apiKeyUrl: "https://apinebula.com/VjM74M", + category: "third_party", + baseUrl: "https://apinebula.com", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + endpointCandidates: ["https://apinebula.com"], + isPartner: true, + partnerPromotionKey: "apinebula", + icon: "apinebula", + }, + { + 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: "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: "FennoAI", + websiteUrl: "https://api.fenno.ai", + apiKeyUrl: + "https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=P9MR3D3PLCNL", + category: "aggregator", + baseUrl: "https://api.fenno.ai", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + isPartner: true, + partnerPromotionKey: "fenno", + icon: "fenno", + }, + { + name: "RunAPI", + websiteUrl: "https://runapi.co", + apiKeyUrl: "https://runapi.co/register?aff=iOKB", + category: "aggregator", + baseUrl: "https://runapi.co", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + isPartner: true, + partnerPromotionKey: "runapi", + icon: "runapi", + }, + { + name: "Unity2.ai", + websiteUrl: "https://unity2.ai", + apiKeyUrl: "https://unity2.ai/register?source=ccs", + category: "aggregator", + baseUrl: "https://api.unity2.ai", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(true), + isPartner: true, + partnerPromotionKey: "unity2", + icon: "unity2", + }, { name: "Shengsuanyun", nameKey: "providerForm.presets.shengsuanyun", @@ -172,59 +316,72 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ icon: "shengsuanyun", }, { - name: "PatewayAI", - websiteUrl: "https://pateway.ai", - apiKeyUrl: "https://pateway.ai/?ch=etzpm8&aff=WB6M6F67#/", + name: "AIGoCode", + websiteUrl: "https://aigocode.com", + apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", category: "third_party", - baseUrl: "https://api.pateway.ai", + baseUrl: "https://api.aigocode.com", mode: "direct", apiFormat: "anthropic", modelRoutes: passthroughRoutes(), + endpointCandidates: ["https://api.aigocode.com"], isPartner: true, - partnerPromotionKey: "patewayai", - icon: "pateway", + partnerPromotionKey: "aigocode", + icon: "aigocode", + iconColor: "#5B7FFF", }, { - name: "Qiniu", - nameKey: "providerForm.presets.qiniu", - websiteUrl: "https://s.qiniu.com/nMvAvy", - apiKeyUrl: "https://s.qiniu.com/nMvAvy", + name: "SubRouter", + websiteUrl: "https://subrouter.ai", + apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", category: "aggregator", - baseUrl: "https://api.qnaigc.com", + baseUrl: "https://subrouter.ai", mode: "direct", apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - endpointCandidates: ["https://api.qnaigc.com", "https://api.modelink.ai"], + modelRoutes: passthroughRoutes(true), isPartner: true, - partnerPromotionKey: "qiniu", - icon: "qiniu", + partnerPromotionKey: "subrouter", + icon: "subrouter", }, { - name: "FennoAI", - websiteUrl: "https://api.fenno.ai", - apiKeyUrl: - "https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=P9MR3D3PLCNL", - category: "aggregator", - baseUrl: "https://api.fenno.ai", + name: "APIKEY.FUN", + websiteUrl: "https://apikey.fun", + apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", + category: "third_party", + baseUrl: "https://api.apikey.fun", mode: "direct", apiFormat: "anthropic", modelRoutes: passthroughRoutes(), + endpointCandidates: ["https://api.apikey.fun", "https://slb.apikey.fun"], isPartner: true, - partnerPromotionKey: "fenno", - icon: "fenno", + partnerPromotionKey: "apikeyfun", + icon: "apikeyfun", }, { - name: "ZetaAPI", - websiteUrl: "https://zetaapi.ai", - apiKeyUrl: "https://zetaapi.ai/go/u117", + name: "ClaudeAPI", + websiteUrl: "https://claudeapi.com", + apiKeyUrl: "https://console.claudeapi.com/register?aff=pCLD", category: "aggregator", - baseUrl: "https://api.zetaapi.ai", + baseUrl: "https://gw.claudeapi.com", mode: "direct", apiFormat: "anthropic", modelRoutes: passthroughRoutes(), isPartner: true, - partnerPromotionKey: "zetaapi", - icon: "zetaapi", + partnerPromotionKey: "claudeapi", + icon: "claudeapi", + }, + { + name: "Code0", + websiteUrl: "https://code0.ai", + apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", + category: "aggregator", + baseUrl: "https://code0.ai", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + isPartner: true, + partnerPromotionKey: "code0", + icon: "code0", }, { name: "TeamoRouter", @@ -241,15 +398,17 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ icon: "teamorouter", }, { - name: "Amux", - websiteUrl: "https://amux.ai", - apiKeyUrl: "https://amux.ai", - category: "aggregator", - baseUrl: "https://api.amux.ai", + name: "ClaudeCN", + websiteUrl: "https://claudecn.top", + apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", + category: "third_party", + baseUrl: "https://claudecn.top", mode: "direct", apiFormat: "anthropic", modelRoutes: passthroughRoutes(), - icon: "amux", + isPartner: true, + partnerPromotionKey: "claudecn", + icon: "claudecn", }, { name: "火山Agentplan", @@ -311,6 +470,103 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ icon: "doubao", iconColor: "#3370FF", }, + { + name: "SiliconFlow", + websiteUrl: "https://siliconflow.cn", + apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", + 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/YflgU2Ve", + 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: "NekoCode", + websiteUrl: "https://nekocode.ai", + apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", + category: "aggregator", + baseUrl: "https://nekocode.ai", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + isPartner: true, + partnerPromotionKey: "nekocode", + icon: "nekocode", + }, + { + name: "AtlasCloud", + websiteUrl: "https://www.atlascloud.ai/console/coding-plan", + apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan", + category: "aggregator", + baseUrl: "https://api.atlascloud.ai", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + endpointCandidates: ["https://api.atlascloud.ai"], + isPartner: true, + partnerPromotionKey: "atlascloud", + icon: "atlascloud", + }, + { + 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: "CCSub", websiteUrl: "https://www.ccsub.net", @@ -325,30 +581,169 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ icon: "ccsub", }, { - name: "SubRouter", - websiteUrl: "https://subrouter.ai", - apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", - category: "aggregator", - baseUrl: "https://subrouter.ai", + name: "SSSAiCode", + websiteUrl: "https://sssaicodeapi.com", + apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", + category: "third_party", + baseUrl: "https://node-hk.sssaicodeapi.com/api", mode: "direct", apiFormat: "anthropic", - modelRoutes: passthroughRoutes(true), + modelRoutes: passthroughRoutes(), + endpointCandidates: [ + "https://node-hk.sssaicodeapi.com/api", + "https://node-hk.sssaiapi.com/api", + "https://node-cf.sssaicodeapi.com/api", + ], isPartner: true, - partnerPromotionKey: "subrouter", - icon: "subrouter", + partnerPromotionKey: "sssaicode", + icon: "sssaicode", + iconColor: "#000000", }, { - name: "Unity2.ai", - websiteUrl: "https://unity2.ai", - apiKeyUrl: "https://unity2.ai/register?source=ccs", - category: "aggregator", - baseUrl: "https://api.unity2.ai", + 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(true), + modelRoutes: passthroughRoutes(), + endpointCandidates: ["https://www.micuapi.ai"], isPartner: true, - partnerPromotionKey: "unity2", - icon: "unity2", + partnerPromotionKey: "micu", + icon: "micu", + iconColor: "#000000", + }, + { + 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: "ETok.ai", + websiteUrl: "https://etok.ai", + apiKeyUrl: "https://etok.ai", + category: "third_party", + baseUrl: "https://api.etok.ai", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + isPartner: true, + partnerPromotionKey: "etok", + icon: "etok", + iconColor: "#000000", + }, + { + 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: "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: "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: "Qiniu", + nameKey: "providerForm.presets.qiniu", + websiteUrl: "https://s.qiniu.com/nMvAvy", + apiKeyUrl: "https://s.qiniu.com/nMvAvy", + category: "aggregator", + baseUrl: "https://api.qnaigc.com", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + endpointCandidates: ["https://api.qnaigc.com", "https://api.modelink.ai"], + isPartner: true, + partnerPromotionKey: "qiniu", + icon: "qiniu", + }, + { + name: "SudoCode.chat", + websiteUrl: "https://sudocode.chat", + apiKeyUrl: + "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", + category: "third_party", + baseUrl: "https://api.sudocode.chat", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + endpointCandidates: ["https://api.sudocode.chat"], + isPartner: true, + partnerPromotionKey: "sudocode", + icon: "sudocode", + }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + category: "third_party", + baseUrl: "https://sudocode.us", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + endpointCandidates: ["https://sudocode.us", "https://sudocode.run"], + isPartner: true, + icon: "sudocode-us", + }, + // ===== 非赞助商预设:应用内展示按显示名排序,此处文件顺序不影响展示 ===== + { + name: "Amux", + websiteUrl: "https://amux.ai", + apiKeyUrl: "https://amux.ai", + category: "aggregator", + baseUrl: "https://api.amux.ai", + mode: "direct", + apiFormat: "anthropic", + modelRoutes: passthroughRoutes(), + icon: "amux", }, { name: "Gemini Native", @@ -508,34 +903,6 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ icon: "bailian", iconColor: "#624AFF", }, - { - name: "Kimi", - primePartner: true, - websiteUrl: "https://platform.kimi.com?aff=cc-switch", - category: "cn_official", - baseUrl: "https://api.moonshot.cn/anthropic", - mode: "proxy", - apiFormat: "anthropic", - modelRoutes: brandedRoutes( - "kimi-k2.7-code", - "kimi-k2.7-code", - "kimi-k2.7-code", - ), - icon: "kimi", - iconColor: "#6366F1", - }, - { - name: "Kimi For Coding", - primePartner: true, - websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", - 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", @@ -670,207 +1037,6 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ endpointCandidates: ["https://open.cherryin.net"], icon: "cherryin", }, - { - name: "SiliconFlow", - websiteUrl: "https://siliconflow.cn", - apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", - 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/YflgU2Ve", - 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: "APIKEY.FUN", - websiteUrl: "https://apikey.fun", - apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", - category: "third_party", - baseUrl: "https://api.apikey.fun", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - endpointCandidates: ["https://api.apikey.fun", "https://slb.apikey.fun"], - isPartner: true, - partnerPromotionKey: "apikeyfun", - icon: "apikeyfun", - }, - { - name: "APINebula", - websiteUrl: "https://apinebula.com", - apiKeyUrl: "https://apinebula.com/VjM74M", - category: "third_party", - baseUrl: "https://apinebula.com", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - endpointCandidates: ["https://apinebula.com"], - 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", - baseUrl: "https://api.atlascloud.ai", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - endpointCandidates: ["https://api.atlascloud.ai"], - isPartner: true, - partnerPromotionKey: "atlascloud", - icon: "atlascloud", - }, - { - name: "SudoCode.chat", - websiteUrl: "https://sudocode.chat", - apiKeyUrl: - "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", - category: "third_party", - baseUrl: "https://api.sudocode.chat", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - endpointCandidates: ["https://api.sudocode.chat"], - isPartner: true, - partnerPromotionKey: "sudocode", - icon: "sudocode", - }, - { - name: "SudoCode.us", - websiteUrl: "https://sudocode.us", - apiKeyUrl: "https://sudocode.us", - category: "third_party", - baseUrl: "https://sudocode.us", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - endpointCandidates: ["https://sudocode.us", "https://sudocode.run"], - isPartner: true, - icon: "sudocode-us", - }, - { - name: "ClaudeAPI", - websiteUrl: "https://claudeapi.com", - apiKeyUrl: "https://console.claudeapi.com/register?aff=pCLD", - category: "aggregator", - baseUrl: "https://gw.claudeapi.com", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - isPartner: true, - partnerPromotionKey: "claudeapi", - icon: "claudeapi", - }, - { - name: "Code0", - websiteUrl: "https://code0.ai", - apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", - category: "aggregator", - baseUrl: "https://code0.ai", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - isPartner: true, - partnerPromotionKey: "code0", - icon: "code0", - }, - { - name: "NekoCode", - websiteUrl: "https://nekocode.ai", - apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", - category: "aggregator", - baseUrl: "https://nekocode.ai", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - isPartner: true, - partnerPromotionKey: "nekocode", - icon: "nekocode", - }, - { - name: "ClaudeCN", - websiteUrl: "https://claudecn.top", - apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", - category: "third_party", - baseUrl: "https://claudecn.top", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - isPartner: true, - partnerPromotionKey: "claudecn", - icon: "claudecn", - }, - { - name: "RunAPI", - websiteUrl: "https://runapi.co", - apiKeyUrl: "https://runapi.co/register?aff=iOKB", - category: "aggregator", - baseUrl: "https://runapi.co", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - isPartner: true, - partnerPromotionKey: "runapi", - icon: "runapi", - }, { name: "RelaxyCode", websiteUrl: "https://www.relaxycode.com", @@ -882,170 +1048,6 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ modelRoutes: passthroughRoutes(), icon: "relaxcode", }, - { - 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: "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://sssaicodeapi.com", - apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", - category: "third_party", - baseUrl: "https://node-hk.sssaicodeapi.com/api", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - endpointCandidates: [ - "https://node-hk.sssaicodeapi.com/api", - "https://node-hk.sssaiapi.com/api", - "https://node-cf.sssaicodeapi.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: "ETok.ai", - websiteUrl: "https://etok.ai", - apiKeyUrl: "https://etok.ai", - category: "third_party", - baseUrl: "https://api.etok.ai", - mode: "direct", - apiFormat: "anthropic", - modelRoutes: passthroughRoutes(), - isPartner: true, - partnerPromotionKey: "etok", - icon: "etok", - iconColor: "#000000", - }, { name: "E-FlowCode", websiteUrl: "https://e-flowcode.cc", diff --git a/src/config/claudeProviderPresets.ts b/src/config/claudeProviderPresets.ts index 2e733194b..47e140281 100644 --- a/src/config/claudeProviderPresets.ts +++ b/src/config/claudeProviderPresets.ts @@ -90,6 +90,183 @@ export const providerPresets: ProviderPreset[] = [ icon: "anthropic", iconColor: "#D4915D", }, + // ===== 赞助商预设:文件顺序 = 应用内展示顺序,与 README 赞助商表对齐 ===== + { + name: "Kimi", + primePartner: true, + websiteUrl: "https://platform.kimi.com?aff=cc-switch", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.moonshot.cn/anthropic", + ANTHROPIC_AUTH_TOKEN: "", + ANTHROPIC_MODEL: "kimi-k2.7-code", + ANTHROPIC_DEFAULT_HAIKU_MODEL: "kimi-k2.7-code", + ANTHROPIC_DEFAULT_SONNET_MODEL: "kimi-k2.7-code", + ANTHROPIC_DEFAULT_OPUS_MODEL: "kimi-k2.7-code", + }, + }, + category: "cn_official", + icon: "kimi", + iconColor: "#6366F1", + }, + { + name: "Kimi For Coding", + primePartner: true, + websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.kimi.com/coding/", + ANTHROPIC_AUTH_TOKEN: "", + // CLAUDE_CODE_MAX_CONTEXT_TOKENS 只对非 claude- 前缀模型 id 生效, + // 必须显式路由端点别名 kimi-for-coding(与 codex/hermes/opencode 预设一致) + ANTHROPIC_MODEL: "kimi-for-coding", + ANTHROPIC_DEFAULT_HAIKU_MODEL: "kimi-for-coding", + ANTHROPIC_DEFAULT_SONNET_MODEL: "kimi-for-coding", + ANTHROPIC_DEFAULT_OPUS_MODEL: "kimi-for-coding", + // 双键钉 256K:压缩窗口=min(模型窗口,值),与窗口同值时行为等价于不设, + // 但显式钉住可屏蔽远程实验下发的更小压缩点;调整直接改 JSON,不出表单字段 + CLAUDE_CODE_MAX_CONTEXT_TOKENS: "262144", + CLAUDE_CODE_AUTO_COMPACT_WINDOW: "262144", + }, + }, + category: "cn_official", + icon: "kimi", + iconColor: "#6366F1", + }, + { + name: "PackyCode", + websiteUrl: "https://www.packyapi.com", + apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://www.packyapi.com", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + // 请求地址候选(用于地址管理/测速) + endpointCandidates: [ + "https://www.packyapi.com", + "https://api-slb.packyapi.com", + ], + category: "third_party", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "packycode", // 促销信息 i18n key + icon: "packycode", + }, + { + name: "ZetaAPI", + websiteUrl: "https://zetaapi.ai", + apiKeyUrl: "https://zetaapi.ai/go/u117", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.zetaapi.ai", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "zetaapi", + icon: "zetaapi", + }, + { + name: "APINebula", + websiteUrl: "https://apinebula.com", + apiKeyUrl: "https://apinebula.com/VjM74M", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://apinebula.com", + ANTHROPIC_AUTH_TOKEN: "", + CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1", + }, + }, + endpointCandidates: ["https://apinebula.com"], + category: "third_party", + isPartner: true, + partnerPromotionKey: "apinebula", + icon: "apinebula", + }, + { + name: "AICodeMirror", + websiteUrl: "https://www.aicodemirror.com", + apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.aicodemirror.com/api/claudecode", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + endpointCandidates: [ + "https://api.aicodemirror.com/api/claudecode", + "https://api.claudecode.net.cn/api/claudecode", + ], + category: "third_party", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "aicodemirror", // 促销信息 i18n key + icon: "aicodemirror", + iconColor: "#000000", + }, + { + name: "PatewayAI", + websiteUrl: "https://pateway.ai", + apiKeyUrl: "https://pateway.ai/?ch=etzpm8&aff=WB6M6F67#/", + apiKeyField: "ANTHROPIC_API_KEY", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.pateway.ai", + ANTHROPIC_API_KEY: "", + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "patewayai", + icon: "pateway", + }, + { + name: "FennoAI", + websiteUrl: "https://api.fenno.ai", + apiKeyUrl: + "https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=P9MR3D3PLCNL", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.fenno.ai", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "fenno", + icon: "fenno", + }, + { + name: "RunAPI", + websiteUrl: "https://runapi.co", + apiKeyUrl: "https://runapi.co/register?aff=iOKB", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://runapi.co", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "runapi", + icon: "runapi", + }, + { + name: "Unity2.ai", + websiteUrl: "https://unity2.ai", + apiKeyUrl: "https://unity2.ai/register?source=ccs", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.unity2.ai", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "unity2", + icon: "unity2", + }, { name: "Shengsuanyun", nameKey: "providerForm.presets.shengsuanyun", @@ -111,20 +288,115 @@ export const providerPresets: ProviderPreset[] = [ icon: "shengsuanyun", }, { - name: "PatewayAI", - websiteUrl: "https://pateway.ai", - apiKeyUrl: "https://pateway.ai/?ch=etzpm8&aff=WB6M6F67#/", - apiKeyField: "ANTHROPIC_API_KEY", + name: "AIGoCode", + websiteUrl: "https://aigocode.com", + apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", settingsConfig: { env: { - ANTHROPIC_BASE_URL: "https://api.pateway.ai", - ANTHROPIC_API_KEY: "", + ANTHROPIC_BASE_URL: "https://api.aigocode.com", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + // 请求地址候选(用于地址管理/测速) + endpointCandidates: ["https://api.aigocode.com"], + category: "third_party", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "aigocode", // 促销信息 i18n key + icon: "aigocode", + iconColor: "#5B7FFF", + }, + { + name: "SubRouter", + websiteUrl: "https://subrouter.ai", + apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://subrouter.ai", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "subrouter", + icon: "subrouter", + }, + { + name: "APIKEY.FUN", + websiteUrl: "https://apikey.fun", + apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.apikey.fun", + ANTHROPIC_AUTH_TOKEN: "", + CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1", + }, + }, + endpointCandidates: ["https://api.apikey.fun", "https://slb.apikey.fun"], + category: "third_party", + isPartner: true, + partnerPromotionKey: "apikeyfun", + icon: "apikeyfun", + }, + { + name: "ClaudeAPI", + websiteUrl: "https://claudeapi.com", + apiKeyUrl: "https://console.claudeapi.com/register?aff=pCLD", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://gw.claudeapi.com", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "claudeapi", + icon: "claudeapi", + }, + { + name: "Code0", + websiteUrl: "https://code0.ai", + apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://code0.ai", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "code0", + icon: "code0", + }, + { + name: "TeamoRouter", + websiteUrl: "https://teamorouter.com", + apiKeyUrl: + "https://teamorouter.com/?utm_source=cc_switch&utm_medium=referral&utm_campaign=ai_directory", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.teamorouter.com", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "teamorouter", + icon: "teamorouter", + }, + { + name: "ClaudeCN", + websiteUrl: "https://claudecn.top", + apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://claudecn.top", + ANTHROPIC_AUTH_TOKEN: "", }, }, category: "third_party", isPartner: true, - partnerPromotionKey: "patewayai", - icon: "pateway", + partnerPromotionKey: "claudecn", + icon: "claudecn", }, { name: "火山Agentplan", @@ -194,6 +466,120 @@ export const providerPresets: ProviderPreset[] = [ icon: "doubao", iconColor: "#3370FF", }, + { + name: "SiliconFlow", + websiteUrl: "https://siliconflow.cn", + apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.siliconflow.cn", + ANTHROPIC_AUTH_TOKEN: "", + ANTHROPIC_MODEL: "Pro/MiniMaxAI/MiniMax-M2.7", + ANTHROPIC_DEFAULT_HAIKU_MODEL: "Pro/MiniMaxAI/MiniMax-M2.7", + ANTHROPIC_DEFAULT_SONNET_MODEL: "Pro/MiniMaxAI/MiniMax-M2.7", + ANTHROPIC_DEFAULT_OPUS_MODEL: "Pro/MiniMaxAI/MiniMax-M2.7", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "siliconflow", + icon: "siliconflow", + iconColor: "#6E29F6", + }, + { + name: "SiliconFlow en", + websiteUrl: "https://siliconflow.com", + apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.siliconflow.com", + ANTHROPIC_AUTH_TOKEN: "", + ANTHROPIC_MODEL: "MiniMaxAI/MiniMax-M2.7", + ANTHROPIC_DEFAULT_HAIKU_MODEL: "MiniMaxAI/MiniMax-M2.7", + ANTHROPIC_DEFAULT_SONNET_MODEL: "MiniMaxAI/MiniMax-M2.7", + ANTHROPIC_DEFAULT_OPUS_MODEL: "MiniMaxAI/MiniMax-M2.7", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "siliconflow", + icon: "siliconflow", + iconColor: "#000000", + }, + { + name: "NekoCode", + websiteUrl: "https://nekocode.ai", + apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://nekocode.ai", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "nekocode", + icon: "nekocode", + }, + { + name: "AtlasCloud", + websiteUrl: "https://www.atlascloud.ai/console/coding-plan", + apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.atlascloud.ai", + ANTHROPIC_AUTH_TOKEN: "", + ANTHROPIC_MODEL: "zai-org/glm-5.1", + ANTHROPIC_DEFAULT_HAIKU_MODEL: "zai-org/glm-5.1", + ANTHROPIC_DEFAULT_SONNET_MODEL: "zai-org/glm-5.1", + ANTHROPIC_DEFAULT_OPUS_MODEL: "zai-org/glm-5.1", + CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: "1", + }, + }, + endpointCandidates: ["https://api.atlascloud.ai"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "atlascloud", + icon: "atlascloud", + }, + { + 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", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.modelverse.cn", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + endpointCandidates: ["https://api.modelverse.cn"], + 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", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://cp.compshare.cn", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + endpointCandidates: ["https://cp.compshare.cn"], + category: "aggregator", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "ucloud", // 促销信息 i18n key(复用) + icon: "ucloud", + iconColor: "#000000", + }, { name: "CCSub", websiteUrl: "https://www.ccsub.net", @@ -210,34 +596,129 @@ export const providerPresets: ProviderPreset[] = [ icon: "ccsub", }, { - name: "SubRouter", - websiteUrl: "https://subrouter.ai", - apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + name: "SSSAiCode", + websiteUrl: "https://sssaicodeapi.com", + apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", settingsConfig: { env: { - ANTHROPIC_BASE_URL: "https://subrouter.ai", + ANTHROPIC_BASE_URL: "https://node-hk.sssaicodeapi.com/api", ANTHROPIC_AUTH_TOKEN: "", }, }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "subrouter", - icon: "subrouter", + endpointCandidates: [ + "https://node-hk.sssaicodeapi.com/api", + "https://node-hk.sssaiapi.com/api", + "https://node-cf.sssaicodeapi.com/api", + ], + category: "third_party", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "sssaicode", // 促销信息 i18n key + icon: "sssaicode", + iconColor: "#000000", }, { - name: "Unity2.ai", - websiteUrl: "https://unity2.ai", - apiKeyUrl: "https://unity2.ai/register?source=ccs", + name: "Micu", + websiteUrl: "https://www.micuapi.ai", + apiKeyUrl: "https://www.micuapi.ai/register?aff=aOYQ", settingsConfig: { env: { - ANTHROPIC_BASE_URL: "https://api.unity2.ai", + ANTHROPIC_BASE_URL: "https://www.micuapi.ai", ANTHROPIC_AUTH_TOKEN: "", }, }, - category: "aggregator", + endpointCandidates: ["https://www.micuapi.ai"], + category: "third_party", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "micu", // 促销信息 i18n key + icon: "micu", + iconColor: "#000000", + }, + { + name: "RightCode", + websiteUrl: "https://www.right.codes", + apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://www.right.codes/claude", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "third_party", isPartner: true, - partnerPromotionKey: "unity2", - icon: "unity2", + partnerPromotionKey: "rightcode", + icon: "rc", + iconColor: "#E96B2C", + }, + { + name: "ETok.ai", + websiteUrl: "https://etok.ai", + apiKeyUrl: "https://etok.ai", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.etok.ai", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + category: "third_party", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "etok", // 促销信息 i18n key + icon: "etok", + iconColor: "#000000", + }, + { + name: "Cubence", + websiteUrl: "https://cubence.com", + apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.cubence.com", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + endpointCandidates: [ + "https://api.cubence.com", + "https://api-cf.cubence.com", + "https://api-dmit.cubence.com", + "https://api-bwg.cubence.com", + ], + category: "third_party", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "cubence", // 促销信息 i18n key + icon: "cubence", + iconColor: "#000000", + }, + { + name: "CrazyRouter", + websiteUrl: "https://www.crazyrouter.com", + apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://cn.crazyrouter.com", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + endpointCandidates: ["https://cn.crazyrouter.com"], + category: "third_party", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "crazyrouter", // 促销信息 i18n key + icon: "crazyrouter", + iconColor: "#000000", + }, + { + name: "DMXAPI", + websiteUrl: "https://www.dmxapi.cn", + apiKeyUrl: "https://www.dmxapi.cn", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://www.dmxapi.cn", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + // 请求地址候选(用于地址管理/测速),用户可自行选择/覆盖 + endpointCandidates: ["https://www.dmxapi.cn", "https://api.dmxapi.cn"], + category: "aggregator", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "dmxapi", // 促销信息 i18n key }, { name: "Qiniu", @@ -257,52 +738,40 @@ export const providerPresets: ProviderPreset[] = [ icon: "qiniu", }, { - name: "FennoAI", - websiteUrl: "https://api.fenno.ai", + name: "SudoCode.chat", + websiteUrl: "https://sudocode.chat", apiKeyUrl: - "https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=P9MR3D3PLCNL", + "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", settingsConfig: { env: { - ANTHROPIC_BASE_URL: "https://api.fenno.ai", + ANTHROPIC_BASE_URL: "https://api.sudocode.chat", ANTHROPIC_AUTH_TOKEN: "", + API_TIMEOUT_MS: "300000", }, }, - category: "aggregator", + endpointCandidates: ["https://api.sudocode.chat"], + category: "third_party", isPartner: true, - partnerPromotionKey: "fenno", - icon: "fenno", + partnerPromotionKey: "sudocode", + icon: "sudocode", }, { - name: "ZetaAPI", - websiteUrl: "https://zetaapi.ai", - apiKeyUrl: "https://zetaapi.ai/go/u117", + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", settingsConfig: { env: { - ANTHROPIC_BASE_URL: "https://api.zetaapi.ai", + ANTHROPIC_BASE_URL: "https://sudocode.us", ANTHROPIC_AUTH_TOKEN: "", + API_TIMEOUT_MS: "300000", }, }, - category: "aggregator", + endpointCandidates: ["https://sudocode.us", "https://sudocode.run"], + category: "third_party", 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", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.teamorouter.com", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "teamorouter", - icon: "teamorouter", + icon: "sudocode-us", }, + // ===== 非赞助商预设:应用内展示按显示名排序,此处文件顺序不影响展示 ===== { name: "Amux", websiteUrl: "https://amux.ai", @@ -460,48 +929,6 @@ export const providerPresets: ProviderPreset[] = [ icon: "bailian", iconColor: "#624AFF", }, - { - name: "Kimi", - primePartner: true, - websiteUrl: "https://platform.kimi.com?aff=cc-switch", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.moonshot.cn/anthropic", - ANTHROPIC_AUTH_TOKEN: "", - ANTHROPIC_MODEL: "kimi-k2.7-code", - ANTHROPIC_DEFAULT_HAIKU_MODEL: "kimi-k2.7-code", - ANTHROPIC_DEFAULT_SONNET_MODEL: "kimi-k2.7-code", - ANTHROPIC_DEFAULT_OPUS_MODEL: "kimi-k2.7-code", - }, - }, - category: "cn_official", - icon: "kimi", - iconColor: "#6366F1", - }, - { - name: "Kimi For Coding", - primePartner: true, - websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.kimi.com/coding/", - ANTHROPIC_AUTH_TOKEN: "", - // CLAUDE_CODE_MAX_CONTEXT_TOKENS 只对非 claude- 前缀模型 id 生效, - // 必须显式路由端点别名 kimi-for-coding(与 codex/hermes/opencode 预设一致) - ANTHROPIC_MODEL: "kimi-for-coding", - ANTHROPIC_DEFAULT_HAIKU_MODEL: "kimi-for-coding", - ANTHROPIC_DEFAULT_SONNET_MODEL: "kimi-for-coding", - ANTHROPIC_DEFAULT_OPUS_MODEL: "kimi-for-coding", - // 双键钉 256K:压缩窗口=min(模型窗口,值),与窗口同值时行为等价于不设, - // 但显式钉住可屏蔽远程实验下发的更小压缩点;调整直接改 JSON,不出表单字段 - CLAUDE_CODE_MAX_CONTEXT_TOKENS: "262144", - CLAUDE_CODE_AUTO_COMPACT_WINDOW: "262144", - }, - }, - category: "cn_official", - icon: "kimi", - iconColor: "#6366F1", - }, { name: "StepFun", websiteUrl: "https://platform.stepfun.com/step-plan", @@ -705,246 +1132,6 @@ export const providerPresets: ProviderPreset[] = [ endpointCandidates: ["https://open.cherryin.net"], icon: "cherryin", }, - { - name: "SiliconFlow", - websiteUrl: "https://siliconflow.cn", - apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.siliconflow.cn", - ANTHROPIC_AUTH_TOKEN: "", - ANTHROPIC_MODEL: "Pro/MiniMaxAI/MiniMax-M2.7", - ANTHROPIC_DEFAULT_HAIKU_MODEL: "Pro/MiniMaxAI/MiniMax-M2.7", - ANTHROPIC_DEFAULT_SONNET_MODEL: "Pro/MiniMaxAI/MiniMax-M2.7", - ANTHROPIC_DEFAULT_OPUS_MODEL: "Pro/MiniMaxAI/MiniMax-M2.7", - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "siliconflow", - icon: "siliconflow", - iconColor: "#6E29F6", - }, - { - name: "SiliconFlow en", - websiteUrl: "https://siliconflow.com", - apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.siliconflow.com", - ANTHROPIC_AUTH_TOKEN: "", - ANTHROPIC_MODEL: "MiniMaxAI/MiniMax-M2.7", - ANTHROPIC_DEFAULT_HAIKU_MODEL: "MiniMaxAI/MiniMax-M2.7", - ANTHROPIC_DEFAULT_SONNET_MODEL: "MiniMaxAI/MiniMax-M2.7", - ANTHROPIC_DEFAULT_OPUS_MODEL: "MiniMaxAI/MiniMax-M2.7", - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "siliconflow", - icon: "siliconflow", - iconColor: "#000000", - }, - { - name: "DMXAPI", - websiteUrl: "https://www.dmxapi.cn", - apiKeyUrl: "https://www.dmxapi.cn", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://www.dmxapi.cn", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - // 请求地址候选(用于地址管理/测速),用户可自行选择/覆盖 - endpointCandidates: ["https://www.dmxapi.cn", "https://api.dmxapi.cn"], - category: "aggregator", - isPartner: true, // 合作伙伴 - partnerPromotionKey: "dmxapi", // 促销信息 i18n key - }, - { - name: "PackyCode", - websiteUrl: "https://www.packyapi.com", - apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://www.packyapi.com", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - // 请求地址候选(用于地址管理/测速) - endpointCandidates: [ - "https://www.packyapi.com", - "https://api-slb.packyapi.com", - ], - category: "third_party", - isPartner: true, // 合作伙伴 - partnerPromotionKey: "packycode", // 促销信息 i18n key - icon: "packycode", - }, - { - name: "APIKEY.FUN", - websiteUrl: "https://apikey.fun", - apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.apikey.fun", - ANTHROPIC_AUTH_TOKEN: "", - CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1", - }, - }, - endpointCandidates: ["https://api.apikey.fun", "https://slb.apikey.fun"], - category: "third_party", - isPartner: true, - partnerPromotionKey: "apikeyfun", - icon: "apikeyfun", - }, - { - name: "APINebula", - websiteUrl: "https://apinebula.com", - apiKeyUrl: "https://apinebula.com/VjM74M", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://apinebula.com", - ANTHROPIC_AUTH_TOKEN: "", - CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "1", - }, - }, - endpointCandidates: ["https://apinebula.com"], - category: "third_party", - isPartner: true, - partnerPromotionKey: "apinebula", - icon: "apinebula", - }, - { - name: "AtlasCloud", - websiteUrl: "https://www.atlascloud.ai/console/coding-plan", - apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.atlascloud.ai", - ANTHROPIC_AUTH_TOKEN: "", - ANTHROPIC_MODEL: "zai-org/glm-5.1", - ANTHROPIC_DEFAULT_HAIKU_MODEL: "zai-org/glm-5.1", - ANTHROPIC_DEFAULT_SONNET_MODEL: "zai-org/glm-5.1", - ANTHROPIC_DEFAULT_OPUS_MODEL: "zai-org/glm-5.1", - CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: "1", - }, - }, - endpointCandidates: ["https://api.atlascloud.ai"], - category: "aggregator", - isPartner: true, - partnerPromotionKey: "atlascloud", - icon: "atlascloud", - }, - { - name: "SudoCode.chat", - websiteUrl: "https://sudocode.chat", - apiKeyUrl: - "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.sudocode.chat", - ANTHROPIC_AUTH_TOKEN: "", - API_TIMEOUT_MS: "300000", - }, - }, - endpointCandidates: ["https://api.sudocode.chat"], - category: "third_party", - isPartner: true, - partnerPromotionKey: "sudocode", - icon: "sudocode", - }, - { - name: "SudoCode.us", - websiteUrl: "https://sudocode.us", - apiKeyUrl: "https://sudocode.us", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://sudocode.us", - ANTHROPIC_AUTH_TOKEN: "", - API_TIMEOUT_MS: "300000", - }, - }, - endpointCandidates: ["https://sudocode.us", "https://sudocode.run"], - category: "third_party", - isPartner: true, - icon: "sudocode-us", - }, - { - name: "ClaudeAPI", - websiteUrl: "https://claudeapi.com", - apiKeyUrl: "https://console.claudeapi.com/register?aff=pCLD", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://gw.claudeapi.com", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "claudeapi", - icon: "claudeapi", - }, - { - name: "Code0", - websiteUrl: "https://code0.ai", - apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://code0.ai", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "code0", - icon: "code0", - }, - { - name: "NekoCode", - websiteUrl: "https://nekocode.ai", - apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://nekocode.ai", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "nekocode", - icon: "nekocode", - }, - { - name: "ClaudeCN", - websiteUrl: "https://claudecn.top", - apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://claudecn.top", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "claudecn", - icon: "claudecn", - }, - { - name: "RunAPI", - websiteUrl: "https://runapi.co", - apiKeyUrl: "https://runapi.co/register?aff=iOKB", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://runapi.co", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "runapi", - icon: "runapi", - }, { name: "RelaxyCode", websiteUrl: "https://www.relaxycode.com", @@ -958,191 +1145,6 @@ export const providerPresets: ProviderPreset[] = [ category: "third_party", icon: "relaxcode", }, - { - name: "Cubence", - websiteUrl: "https://cubence.com", - apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.cubence.com", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - endpointCandidates: [ - "https://api.cubence.com", - "https://api-cf.cubence.com", - "https://api-dmit.cubence.com", - "https://api-bwg.cubence.com", - ], - 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", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.aigocode.com", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - // 请求地址候选(用于地址管理/测速) - endpointCandidates: ["https://api.aigocode.com"], - category: "third_party", - 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", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://www.right.codes/claude", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - 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", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.aicodemirror.com/api/claudecode", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - endpointCandidates: [ - "https://api.aicodemirror.com/api/claudecode", - "https://api.claudecode.net.cn/api/claudecode", - ], - category: "third_party", - isPartner: true, // 合作伙伴 - partnerPromotionKey: "aicodemirror", // 促销信息 i18n key - icon: "aicodemirror", - iconColor: "#000000", - }, - { - name: "CrazyRouter", - websiteUrl: "https://www.crazyrouter.com", - apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://cn.crazyrouter.com", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - endpointCandidates: ["https://cn.crazyrouter.com"], - category: "third_party", - isPartner: true, // 合作伙伴 - partnerPromotionKey: "crazyrouter", // 促销信息 i18n key - icon: "crazyrouter", - iconColor: "#000000", - }, - { - name: "SSSAiCode", - websiteUrl: "https://sssaicodeapi.com", - apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://node-hk.sssaicodeapi.com/api", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - endpointCandidates: [ - "https://node-hk.sssaicodeapi.com/api", - "https://node-hk.sssaiapi.com/api", - "https://node-cf.sssaicodeapi.com/api", - ], - 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", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.modelverse.cn", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - endpointCandidates: ["https://api.modelverse.cn"], - 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", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://cp.compshare.cn", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - endpointCandidates: ["https://cp.compshare.cn"], - 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", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://www.micuapi.ai", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - endpointCandidates: ["https://www.micuapi.ai"], - category: "third_party", - isPartner: true, // 合作伙伴 - partnerPromotionKey: "micu", // 促销信息 i18n key - icon: "micu", - iconColor: "#000000", - }, - { - name: "ETok.ai", - websiteUrl: "https://etok.ai", - apiKeyUrl: "https://etok.ai", - settingsConfig: { - env: { - ANTHROPIC_BASE_URL: "https://api.etok.ai", - ANTHROPIC_AUTH_TOKEN: "", - }, - }, - category: "third_party", - isPartner: true, // 合作伙伴 - partnerPromotionKey: "etok", // 促销信息 i18n key - icon: "etok", - iconColor: "#000000", - }, { name: "E-FlowCode", websiteUrl: "https://e-flowcode.cc", diff --git a/src/config/codexProviderPresets.ts b/src/config/codexProviderPresets.ts index 2d97e38f5..fa77f44c8 100644 --- a/src/config/codexProviderPresets.ts +++ b/src/config/codexProviderPresets.ts @@ -125,6 +125,216 @@ export const codexProviderPresets: CodexProviderPreset[] = [ icon: "openai", iconColor: "#00A67E", }, + // ===== 赞助商预设:文件顺序 = 应用内展示顺序,与 README 赞助商表对齐 ===== + { + 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, + }, + { + model: "kimi-k3", + displayName: "Kimi K3", + contextWindow: 1048576, + }, + ]), + 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", + promptCacheRouting: "enabled", + 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: "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: "ZetaAPI", + websiteUrl: "https://zetaapi.ai", + apiKeyUrl: "https://zetaapi.ai/go/u117", + 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: "APINebula", + websiteUrl: "https://apinebula.com", + apiKeyUrl: "https://apinebula.com/VjM74M", + 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: "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: "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: "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: "RunAPI", + websiteUrl: "https://runapi.co", + apiKeyUrl: "https://runapi.co/register?aff=iOKB", + category: "aggregator", + auth: generateThirdPartyAuth(""), + config: generateThirdPartyConfig( + "runapi", + "https://runapi.co/v1", + "gpt-5.5", + ), + isPartner: true, + partnerPromotionKey: "runapi", + icon: "runapi", + }, + { + 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: "Shengsuanyun", nameKey: "providerForm.presets.shengsuanyun", @@ -142,20 +352,107 @@ export const codexProviderPresets: CodexProviderPreset[] = [ icon: "shengsuanyun", }, { - name: "PatewayAI", - websiteUrl: "https://pateway.ai", - apiKeyUrl: "https://pateway.ai/?ch=etzpm8&aff=WB6M6F67#/", + name: "AIGoCode", + websiteUrl: "https://aigocode.com", + apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", category: "third_party", auth: generateThirdPartyAuth(""), config: generateThirdPartyConfig( - "patewayai", - "https://api.pateway.ai/v1", + "aigocode", + "https://api.aigocode.com", "gpt-5.5", ), - endpointCandidates: ["https://api.pateway.ai/v1"], + endpointCandidates: ["https://api.aigocode.com"], + isPartner: true, // 合作伙伴 + partnerPromotionKey: "aigocode", // 促销信息 i18n key + icon: "aigocode", + iconColor: "#5B7FFF", + }, + { + 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: "patewayai", - icon: "pateway", + partnerPromotionKey: "subrouter", + icon: "subrouter", + }, + { + 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: "Code0", + websiteUrl: "https://code0.ai", + apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", + 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: "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: "ClaudeCN", + websiteUrl: "https://claudecn.top", + apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", + category: "third_party", + auth: generateThirdPartyAuth(""), + config: generateThirdPartyConfig( + "claudecn", + "https://claudecn.top/v1", + "gpt-5.5", + ), + isPartner: true, + partnerPromotionKey: "claudecn", + icon: "claudecn", }, { name: "火山Agentplan", @@ -243,6 +540,138 @@ export const codexProviderPresets: CodexProviderPreset[] = [ icon: "doubao", iconColor: "#3370FF", }, + { + 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: "NekoCode", + websiteUrl: "https://nekocode.ai", + apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", + category: "aggregator", + auth: generateThirdPartyAuth(""), + config: generateThirdPartyConfig( + "nekocode", + "https://nekocode.ai/v1", + "gpt-5.5", + ), + endpointCandidates: ["https://nekocode.ai/v1"], + isPartner: true, + partnerPromotionKey: "nekocode", + icon: "nekocode", + }, + { + 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: "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: "CCSub", websiteUrl: "https://www.ccsub.net", @@ -260,36 +689,127 @@ export const codexProviderPresets: CodexProviderPreset[] = [ icon: "ccsub", }, { - name: "SubRouter", - websiteUrl: "https://subrouter.ai", - apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", - category: "aggregator", + name: "SSSAiCode", + websiteUrl: "https://sssaicodeapi.com", + apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", auth: generateThirdPartyAuth(""), config: generateThirdPartyConfig( - "subrouter", - "https://subrouter.ai/v1", + "sssaicode", + "https://node-hk.sssaicodeapi.com/api/v1", "gpt-5.5", ), - endpointCandidates: ["https://subrouter.ai/v1"], - isPartner: true, - partnerPromotionKey: "subrouter", - icon: "subrouter", + 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: "Unity2.ai", - websiteUrl: "https://unity2.ai", - apiKeyUrl: "https://unity2.ai/register?source=ccs", + 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: "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: "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: "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: "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: "DMXAPI", + websiteUrl: "https://www.dmxapi.cn", category: "aggregator", auth: generateThirdPartyAuth(""), config: generateThirdPartyConfig( - "unity2", - "https://api.unity2.ai", + "dmxapi", + "https://www.dmxapi.cn/v1", "gpt-5.5", ), - endpointCandidates: ["https://api.unity2.ai"], - isPartner: true, - partnerPromotionKey: "unity2", - icon: "unity2", + endpointCandidates: ["https://www.dmxapi.cn/v1"], + isPartner: true, // 合作伙伴 + partnerPromotionKey: "dmxapi", // 促销信息 i18n key }, { name: "Qiniu", @@ -312,55 +832,53 @@ export const codexProviderPresets: CodexProviderPreset[] = [ icon: "qiniu", }, { - name: "FennoAI", - websiteUrl: "https://api.fenno.ai", + name: "SudoCode.chat", + websiteUrl: "https://sudocode.chat", apiKeyUrl: - "https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=P9MR3D3PLCNL", - category: "aggregator", + "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", + category: "third_party", auth: generateThirdPartyAuth(""), - config: generateThirdPartyConfig( - "fenno", - "https://api.fenno.ai", - "gpt-5.5", - ), - endpointCandidates: ["https://api.fenno.ai"], + config: `model_provider = "custom" +model = "gpt-5.6-sol" +review_model = "gpt-5.6-sol" +model_reasoning_effort = "high" +disable_response_storage = true + +[model_providers.custom] +name = "SudoCode" +base_url = "https://api.sudocode.chat/v1" +wire_api = "responses" +requires_openai_auth = true`, + endpointCandidates: ["https://api.sudocode.chat/v1"], + apiFormat: "openai_responses", isPartner: true, - partnerPromotionKey: "fenno", - icon: "fenno", + partnerPromotionKey: "sudocode", + icon: "sudocode", }, { - name: "ZetaAPI", - websiteUrl: "https://zetaapi.ai", - apiKeyUrl: "https://zetaapi.ai/go/u117", - category: "aggregator", + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + category: "third_party", auth: generateThirdPartyAuth(""), - config: generateThirdPartyConfig( - "zetaapi", - "https://api.zetaapi.ai/v1", - "gpt-5.5", - ), - endpointCandidates: ["https://api.zetaapi.ai/v1"], + 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", 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", + icon: "sudocode-us", }, + // ===== 非赞助商预设:应用内展示按显示名排序,此处文件顺序不影响展示 ===== { name: "Amux", websiteUrl: "https://amux.ai", @@ -375,34 +893,6 @@ export const codexProviderPresets: CodexProviderPreset[] = [ endpointCandidates: ["https://api.amux.ai/v1"], icon: "amux", }, - { - name: "Code0", - websiteUrl: "https://code0.ai", - apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", - 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: "NekoCode", - websiteUrl: "https://nekocode.ai", - apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", - category: "aggregator", - auth: generateThirdPartyAuth(""), - config: generateThirdPartyConfig( - "nekocode", - "https://nekocode.ai/v1", - "gpt-5.5", - ), - endpointCandidates: ["https://nekocode.ai/v1"], - isPartner: true, - partnerPromotionKey: "nekocode", - icon: "nekocode", - }, { name: "Azure OpenAI", websiteUrl: @@ -568,74 +1058,6 @@ requires_openai_auth = true`, 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, - }, - { - model: "kimi-k3", - displayName: "Kimi K3", - contextWindow: 1048576, - }, - ]), - 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", - promptCacheRouting: "enabled", - 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", @@ -923,56 +1345,6 @@ requires_openai_auth = true`, 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", @@ -1144,193 +1516,6 @@ requires_openai_auth = true`, 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/VjM74M", - 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.chat", - websiteUrl: "https://sudocode.chat", - apiKeyUrl: - "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", - category: "third_party", - auth: generateThirdPartyAuth(""), - config: `model_provider = "custom" -model = "gpt-5.6-sol" -review_model = "gpt-5.6-sol" -model_reasoning_effort = "high" -disable_response_storage = true - -[model_providers.custom] -name = "SudoCode" -base_url = "https://api.sudocode.chat/v1" -wire_api = "responses" -requires_openai_auth = true`, - endpointCandidates: ["https://api.sudocode.chat/v1"], - apiFormat: "openai_responses", - isPartner: true, - partnerPromotionKey: "sudocode", - icon: "sudocode", - }, - { - name: "SudoCode.us", - 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", - isPartner: true, - icon: "sudocode-us", - }, - { - name: "ClaudeCN", - websiteUrl: "https://claudecn.top", - apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", - 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/register?aff=iOKB", - 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", @@ -1344,189 +1529,6 @@ requires_openai_auth = true`, ), 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", diff --git a/src/config/geminiProviderPresets.ts b/src/config/geminiProviderPresets.ts index 4dc65eb9b..8eebb11a1 100644 --- a/src/config/geminiProviderPresets.ts +++ b/src/config/geminiProviderPresets.ts @@ -51,103 +51,7 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [ icon: "gemini", iconColor: "#4285F4", }, - { - name: "Shengsuanyun", - nameKey: "providerForm.presets.shengsuanyun", - websiteUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", - apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", - settingsConfig: { - env: { - GOOGLE_GEMINI_BASE_URL: "https://router.shengsuanyun.com/api", - GEMINI_MODEL: "google/gemini-3.5-flash", - }, - }, - baseURL: "https://router.shengsuanyun.com/api", - model: "google/gemini-3.5-flash", - description: "Shengsuanyun", - category: "aggregator", - isPartner: true, - partnerPromotionKey: "shengsuanyun", - icon: "shengsuanyun", - }, - { - name: "Unity2.ai", - websiteUrl: "https://unity2.ai", - apiKeyUrl: "https://unity2.ai/register?source=ccs", - settingsConfig: { - env: { - GOOGLE_GEMINI_BASE_URL: "https://api.unity2.ai", - GEMINI_MODEL: "gemini-3.1-pro", - }, - }, - baseURL: "https://api.unity2.ai", - model: "gemini-3.1-pro", - description: "Unity2.ai", - category: "aggregator", - isPartner: true, - partnerPromotionKey: "unity2", - icon: "unity2", - }, - { - name: "SubRouter", - websiteUrl: "https://subrouter.ai", - apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", - settingsConfig: { - env: { - GOOGLE_GEMINI_BASE_URL: "https://subrouter.ai/v1beta", - GEMINI_MODEL: "gemini-3.5-flash", - }, - }, - baseURL: "https://subrouter.ai/v1beta", - model: "gemini-3.5-flash", - description: "SubRouter", - category: "aggregator", - isPartner: true, - partnerPromotionKey: "subrouter", - endpointCandidates: ["https://subrouter.ai/v1beta"], - icon: "subrouter", - }, - { - name: "Qiniu", - nameKey: "providerForm.presets.qiniu", - websiteUrl: "https://s.qiniu.com/nMvAvy", - apiKeyUrl: "https://s.qiniu.com/nMvAvy", - settingsConfig: { - env: { - GOOGLE_GEMINI_BASE_URL: "https://api.qnaigc.com/bypass/vertex", - GEMINI_MODEL: "gemini-3.1-pro-preview", - }, - }, - baseURL: "https://api.qnaigc.com/bypass/vertex", - model: "gemini-3.1-pro-preview", - description: "Qiniu", - category: "aggregator", - isPartner: true, - partnerPromotionKey: "qiniu", - endpointCandidates: [ - "https://api.qnaigc.com/bypass/vertex", - "https://api.modelink.ai/bypass/vertex", - ], - icon: "qiniu", - }, - { - name: "Code0", - websiteUrl: "https://code0.ai", - apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", - settingsConfig: { - env: { - GOOGLE_GEMINI_BASE_URL: "https://code0.ai", - GEMINI_MODEL: "gemini-3.1-pro-preview", - }, - }, - baseURL: "https://code0.ai", - model: "gemini-3.1-pro-preview", - description: "Code0", - category: "aggregator", - isPartner: true, - partnerPromotionKey: "code0", - icon: "code0", - }, + // ===== 赞助商预设:文件顺序 = 应用内展示顺序,与 README 赞助商表对齐 ===== { name: "PackyCode", websiteUrl: "https://www.packyapi.com", @@ -170,26 +74,6 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [ ], icon: "packycode", }, - { - name: "APIKEY.FUN", - websiteUrl: "https://apikey.fun", - apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", - settingsConfig: { - env: { - GOOGLE_GEMINI_BASE_URL: "https://api.apikey.fun", - GEMINI_API_KEY: "", - GEMINI_MODEL: "gemini-3.5-flash", - }, - }, - baseURL: "https://api.apikey.fun", - model: "gemini-3.5-flash", - description: "APIKEY.FUN", - category: "third_party", - isPartner: true, - partnerPromotionKey: "apikeyfun", - endpointCandidates: ["https://api.apikey.fun", "https://slb.apikey.fun"], - icon: "apikeyfun", - }, { name: "APINebula", websiteUrl: "https://apinebula.com", @@ -210,70 +94,6 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [ endpointCandidates: ["https://apinebula.com"], icon: "apinebula", }, - { - name: "SudoCode.us", - websiteUrl: "https://sudocode.us", - apiKeyUrl: "https://sudocode.us", - settingsConfig: { - env: { - GOOGLE_GEMINI_BASE_URL: "https://sudocode.us", - GEMINI_API_KEY: "", - GEMINI_MODEL: "gemini-3.1-flash-lite", - }, - }, - baseURL: "https://sudocode.us", - model: "gemini-3.1-flash-lite", - description: "SudoCode.us", - category: "third_party", - isPartner: true, - endpointCandidates: ["https://sudocode.us", "https://sudocode.run"], - icon: "sudocode-us", - }, - { - name: "Cubence", - websiteUrl: "https://cubence.com", - apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", - settingsConfig: { - env: { - GOOGLE_GEMINI_BASE_URL: "https://api.cubence.com", - GEMINI_MODEL: "gemini-3.5-flash", - }, - }, - baseURL: "https://api.cubence.com", - model: "gemini-3.5-flash", - description: "Cubence", - category: "third_party", - isPartner: true, - partnerPromotionKey: "cubence", - endpointCandidates: [ - "https://api.cubence.com/v1", - "https://api-cf.cubence.com/v1", - "https://api-dmit.cubence.com/v1", - "https://api-bwg.cubence.com/v1", - ], - icon: "cubence", - iconColor: "#000000", - }, - { - name: "AIGoCode", - websiteUrl: "https://aigocode.com", - apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", - settingsConfig: { - env: { - GOOGLE_GEMINI_BASE_URL: "https://api.aigocode.com", - GEMINI_MODEL: "gemini-3.5-flash", - }, - }, - baseURL: "https://api.aigocode.com", - model: "gemini-3.5-flash", - description: "AIGoCode", - category: "third_party", - isPartner: true, - partnerPromotionKey: "aigocode", - endpointCandidates: ["https://api.aigocode.com"], - icon: "aigocode", - iconColor: "#5B7FFF", - }, { name: "AICodeMirror", websiteUrl: "https://www.aicodemirror.com", @@ -298,24 +118,118 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [ iconColor: "#000000", }, { - name: "CrazyRouter", - websiteUrl: "https://www.crazyrouter.com", - apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", + name: "Unity2.ai", + websiteUrl: "https://unity2.ai", + apiKeyUrl: "https://unity2.ai/register?source=ccs", settingsConfig: { env: { - GOOGLE_GEMINI_BASE_URL: "https://cn.crazyrouter.com", + GOOGLE_GEMINI_BASE_URL: "https://api.unity2.ai", + GEMINI_MODEL: "gemini-3.1-pro", + }, + }, + baseURL: "https://api.unity2.ai", + model: "gemini-3.1-pro", + description: "Unity2.ai", + category: "aggregator", + isPartner: true, + partnerPromotionKey: "unity2", + icon: "unity2", + }, + { + name: "Shengsuanyun", + nameKey: "providerForm.presets.shengsuanyun", + websiteUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://router.shengsuanyun.com/api", + GEMINI_MODEL: "google/gemini-3.5-flash", + }, + }, + baseURL: "https://router.shengsuanyun.com/api", + model: "google/gemini-3.5-flash", + description: "Shengsuanyun", + category: "aggregator", + isPartner: true, + partnerPromotionKey: "shengsuanyun", + icon: "shengsuanyun", + }, + { + name: "AIGoCode", + websiteUrl: "https://aigocode.com", + apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://api.aigocode.com", GEMINI_MODEL: "gemini-3.5-flash", }, }, - baseURL: "https://cn.crazyrouter.com", + baseURL: "https://api.aigocode.com", model: "gemini-3.5-flash", - description: "CrazyRouter", + description: "AIGoCode", category: "third_party", isPartner: true, - partnerPromotionKey: "crazyrouter", - endpointCandidates: ["https://cn.crazyrouter.com"], - icon: "crazyrouter", - iconColor: "#000000", + partnerPromotionKey: "aigocode", + endpointCandidates: ["https://api.aigocode.com"], + icon: "aigocode", + iconColor: "#5B7FFF", + }, + { + name: "SubRouter", + websiteUrl: "https://subrouter.ai", + apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://subrouter.ai/v1beta", + GEMINI_MODEL: "gemini-3.5-flash", + }, + }, + baseURL: "https://subrouter.ai/v1beta", + model: "gemini-3.5-flash", + description: "SubRouter", + category: "aggregator", + isPartner: true, + partnerPromotionKey: "subrouter", + endpointCandidates: ["https://subrouter.ai/v1beta"], + icon: "subrouter", + }, + { + name: "APIKEY.FUN", + websiteUrl: "https://apikey.fun", + apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://api.apikey.fun", + GEMINI_API_KEY: "", + GEMINI_MODEL: "gemini-3.5-flash", + }, + }, + baseURL: "https://api.apikey.fun", + model: "gemini-3.5-flash", + description: "APIKEY.FUN", + category: "third_party", + isPartner: true, + partnerPromotionKey: "apikeyfun", + endpointCandidates: ["https://api.apikey.fun", "https://slb.apikey.fun"], + icon: "apikeyfun", + }, + { + name: "Code0", + websiteUrl: "https://code0.ai", + apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://code0.ai", + GEMINI_MODEL: "gemini-3.1-pro-preview", + }, + }, + baseURL: "https://code0.ai", + model: "gemini-3.1-pro-preview", + description: "Code0", + category: "aggregator", + isPartner: true, + partnerPromotionKey: "code0", + icon: "code0", }, { name: "SSSAiCode", @@ -361,6 +275,94 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [ icon: "etok", iconColor: "#000000", }, + { + name: "Cubence", + websiteUrl: "https://cubence.com", + apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://api.cubence.com", + GEMINI_MODEL: "gemini-3.5-flash", + }, + }, + baseURL: "https://api.cubence.com", + model: "gemini-3.5-flash", + description: "Cubence", + category: "third_party", + isPartner: true, + partnerPromotionKey: "cubence", + endpointCandidates: [ + "https://api.cubence.com/v1", + "https://api-cf.cubence.com/v1", + "https://api-dmit.cubence.com/v1", + "https://api-bwg.cubence.com/v1", + ], + icon: "cubence", + iconColor: "#000000", + }, + { + name: "CrazyRouter", + websiteUrl: "https://www.crazyrouter.com", + apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://cn.crazyrouter.com", + GEMINI_MODEL: "gemini-3.5-flash", + }, + }, + baseURL: "https://cn.crazyrouter.com", + model: "gemini-3.5-flash", + description: "CrazyRouter", + category: "third_party", + isPartner: true, + partnerPromotionKey: "crazyrouter", + endpointCandidates: ["https://cn.crazyrouter.com"], + icon: "crazyrouter", + iconColor: "#000000", + }, + { + name: "Qiniu", + nameKey: "providerForm.presets.qiniu", + websiteUrl: "https://s.qiniu.com/nMvAvy", + apiKeyUrl: "https://s.qiniu.com/nMvAvy", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://api.qnaigc.com/bypass/vertex", + GEMINI_MODEL: "gemini-3.1-pro-preview", + }, + }, + baseURL: "https://api.qnaigc.com/bypass/vertex", + model: "gemini-3.1-pro-preview", + description: "Qiniu", + category: "aggregator", + isPartner: true, + partnerPromotionKey: "qiniu", + endpointCandidates: [ + "https://api.qnaigc.com/bypass/vertex", + "https://api.modelink.ai/bypass/vertex", + ], + icon: "qiniu", + }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + settingsConfig: { + env: { + GOOGLE_GEMINI_BASE_URL: "https://sudocode.us", + GEMINI_API_KEY: "", + GEMINI_MODEL: "gemini-3.1-flash-lite", + }, + }, + baseURL: "https://sudocode.us", + model: "gemini-3.1-flash-lite", + description: "SudoCode.us", + category: "third_party", + isPartner: true, + endpointCandidates: ["https://sudocode.us", "https://sudocode.run"], + icon: "sudocode-us", + }, + // ===== 非赞助商预设:应用内展示按显示名排序,此处文件顺序不影响展示 ===== { name: "E-FlowCode", websiteUrl: "https://e-flowcode.cc", diff --git a/src/config/grokBuildProviderPresets.ts b/src/config/grokBuildProviderPresets.ts index a4d84bf62..ddcf3c9ca 100644 --- a/src/config/grokBuildProviderPresets.ts +++ b/src/config/grokBuildProviderPresets.ts @@ -77,210 +77,7 @@ requires_openai_auth = true`; } export const grokBuildProviderPresets: GrokBuildProviderPreset[] = [ - { - name: "xAI (Grok)", - websiteUrl: "https://x.ai/api", - apiKeyUrl: "https://console.x.ai", - auth: grokAuth(), - config: grokPresetConfig("xAI (Grok)", "https://api.x.ai/v1"), - endpointCandidates: ["https://api.x.ai/v1"], - apiFormat: "openai_responses", - category: "third_party", - icon: "xai", - iconColor: "#000000", - }, - { - name: "Shengsuanyun", - nameKey: "providerForm.presets.shengsuanyun", - websiteUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", - apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", - auth: grokAuth(), - config: grokPresetConfig( - "Shengsuanyun", - "https://router.shengsuanyun.com/api/v1", - OPENROUTER_STYLE_GROK_MODEL, - ), - category: "aggregator", - isPartner: true, - partnerPromotionKey: "shengsuanyun", - icon: "shengsuanyun", - }, - { - name: "PatewayAI", - websiteUrl: "https://pateway.ai", - apiKeyUrl: "https://pateway.ai/?ch=etzpm8&aff=WB6M6F67#/", - auth: grokAuth(), - config: grokPresetConfig("PatewayAI", "https://api.pateway.ai/v1"), - endpointCandidates: ["https://api.pateway.ai/v1"], - category: "third_party", - isPartner: true, - partnerPromotionKey: "patewayai", - icon: "pateway", - }, - { - name: "CCSub", - websiteUrl: "https://www.ccsub.net", - apiKeyUrl: "https://www.ccsub.net/register?ref=Y6Z8DXEA", - auth: grokAuth(), - config: grokPresetConfig("CCSub", "https://www.ccsub.net/v1"), - endpointCandidates: ["https://www.ccsub.net/v1"], - category: "aggregator", - isPartner: true, - partnerPromotionKey: "ccsub", - icon: "ccsub", - }, - { - name: "SubRouter", - websiteUrl: "https://subrouter.ai", - apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", - auth: grokAuth(), - config: grokPresetConfig("SubRouter", "https://subrouter.ai/v1"), - endpointCandidates: ["https://subrouter.ai/v1"], - category: "aggregator", - isPartner: true, - partnerPromotionKey: "subrouter", - icon: "subrouter", - }, - { - name: "Unity2.ai", - websiteUrl: "https://unity2.ai", - apiKeyUrl: "https://unity2.ai/register?source=ccs", - auth: grokAuth(), - config: grokPresetConfig("Unity2.ai", "https://api.unity2.ai"), - endpointCandidates: ["https://api.unity2.ai"], - category: "aggregator", - isPartner: true, - partnerPromotionKey: "unity2", - icon: "unity2", - }, - { - name: "Qiniu", - nameKey: "providerForm.presets.qiniu", - websiteUrl: "https://s.qiniu.com/nMvAvy", - apiKeyUrl: "https://s.qiniu.com/nMvAvy", - auth: grokAuth(), - config: grokPresetConfig( - "Qiniu", - "https://api.qnaigc.com/bypass/openai/v1", - ), - endpointCandidates: [ - "https://api.qnaigc.com/bypass/openai/v1", - "https://api.modelink.ai/bypass/openai/v1", - ], - category: "aggregator", - 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", - auth: grokAuth(), - config: grokPresetConfig("FennoAI", "https://api.fenno.ai"), - endpointCandidates: ["https://api.fenno.ai"], - category: "aggregator", - isPartner: true, - partnerPromotionKey: "fenno", - icon: "fenno", - }, - { - name: "ZetaAPI", - websiteUrl: "https://zetaapi.ai", - apiKeyUrl: "https://zetaapi.ai/go/u117", - auth: grokAuth(), - config: grokPresetConfig("ZetaAPI", "https://api.zetaapi.ai/v1"), - endpointCandidates: ["https://api.zetaapi.ai/v1"], - category: "aggregator", - 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", - auth: grokAuth(), - config: grokPresetConfig("TeamoRouter", "https://api.teamorouter.com/v1"), - endpointCandidates: ["https://api.teamorouter.com/v1"], - category: "aggregator", - isPartner: true, - partnerPromotionKey: "teamorouter", - icon: "teamorouter", - }, - { - name: "Amux", - websiteUrl: "https://amux.ai", - apiKeyUrl: "https://amux.ai", - auth: grokAuth(), - config: grokPresetConfig("Amux", "https://api.amux.ai/v1"), - endpointCandidates: ["https://api.amux.ai/v1"], - category: "aggregator", - icon: "amux", - }, - { - name: "Code0", - websiteUrl: "https://code0.ai", - apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", - auth: grokAuth(), - config: grokPresetConfig("Code0", "https://code0.ai/v1"), - endpointCandidates: ["https://code0.ai/v1"], - category: "aggregator", - isPartner: true, - partnerPromotionKey: "code0", - icon: "code0", - }, - { - name: "NekoCode", - websiteUrl: "https://nekocode.ai", - apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", - auth: grokAuth(), - config: grokPresetConfig("NekoCode", "https://nekocode.ai/v1"), - endpointCandidates: ["https://nekocode.ai/v1"], - category: "aggregator", - isPartner: true, - partnerPromotionKey: "nekocode", - icon: "nekocode", - }, - { - name: "AiHubMix", - websiteUrl: "https://aihubmix.com", - auth: grokAuth(), - config: grokPresetConfig("AiHubMix", "https://aihubmix.com/v1"), - endpointCandidates: [ - "https://aihubmix.com/v1", - "https://api.aihubmix.com/v1", - ], - category: "aggregator", - icon: "aihubmix", - iconColor: "#006FFB", - }, - { - name: "CherryIN", - websiteUrl: "https://open.cherryin.ai", - apiKeyUrl: "https://open.cherryin.ai/console/token", - auth: grokAuth(), - config: grokPresetConfig( - "CherryIN", - "https://open.cherryin.net/v1", - OPENROUTER_STYLE_GROK_MODEL, - ), - endpointCandidates: ["https://open.cherryin.net/v1"], - category: "aggregator", - icon: "cherryin", - }, - { - name: "DMXAPI", - websiteUrl: "https://www.dmxapi.cn", - auth: grokAuth(), - config: grokPresetConfig("DMXAPI", "https://www.dmxapi.cn/v1"), - endpointCandidates: ["https://www.dmxapi.cn/v1"], - category: "aggregator", - isPartner: true, - partnerPromotionKey: "dmxapi", - }, + // ===== 赞助商预设:文件顺序 = 应用内展示顺序,与 README 赞助商表对齐 ===== { name: "PackyCode", websiteUrl: "https://www.packyapi.com", @@ -297,20 +94,16 @@ export const grokBuildProviderPresets: GrokBuildProviderPreset[] = [ icon: "packycode", }, { - name: "APIKEY.FUN", - websiteUrl: "https://apikey.fun", - apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", + name: "ZetaAPI", + websiteUrl: "https://zetaapi.ai", + apiKeyUrl: "https://zetaapi.ai/go/u117", auth: grokAuth(), - config: grokPresetConfig("APIKEY.FUN", "https://api.apikey.fun/v1"), - endpointCandidates: [ - "https://api.apikey.fun/v1", - "https://slb.apikey.fun/v1", - ], - apiFormat: "openai_responses", - category: "third_party", + config: grokPresetConfig("ZetaAPI", "https://api.zetaapi.ai/v1"), + endpointCandidates: ["https://api.zetaapi.ai/v1"], + category: "aggregator", isPartner: true, - partnerPromotionKey: "apikeyfun", - icon: "apikeyfun", + partnerPromotionKey: "zetaapi", + icon: "zetaapi", }, { name: "APINebula", @@ -325,106 +118,6 @@ export const grokBuildProviderPresets: GrokBuildProviderPreset[] = [ partnerPromotionKey: "apinebula", icon: "apinebula", }, - { - name: "SudoCode.chat", - websiteUrl: "https://sudocode.chat", - apiKeyUrl: - "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", - auth: grokAuth(), - config: grokPresetConfig("SudoCode.chat", "https://api.sudocode.chat/v1"), - endpointCandidates: ["https://api.sudocode.chat/v1"], - apiFormat: "openai_responses", - category: "third_party", - isPartner: true, - partnerPromotionKey: "sudocode", - icon: "sudocode", - }, - { - name: "SudoCode.us", - websiteUrl: "https://sudocode.us", - apiKeyUrl: "https://sudocode.us", - auth: grokAuth(), - config: grokPresetConfig("SudoCode.us", "https://sudocode.us/v1"), - endpointCandidates: ["https://sudocode.us/v1", "https://sudocode.run/v1"], - apiFormat: "openai_responses", - category: "third_party", - isPartner: true, - icon: "sudocode-us", - }, - { - name: "ClaudeCN", - websiteUrl: "https://claudecn.top", - apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", - auth: grokAuth(), - config: grokPresetConfig("ClaudeCN", "https://claudecn.top/v1"), - category: "third_party", - isPartner: true, - partnerPromotionKey: "claudecn", - icon: "claudecn", - }, - { - name: "RunAPI", - websiteUrl: "https://runapi.co", - apiKeyUrl: "https://runapi.co/register?aff=iOKB", - auth: grokAuth(), - config: grokPresetConfig("RunAPI", "https://runapi.co/v1"), - category: "aggregator", - isPartner: true, - partnerPromotionKey: "runapi", - icon: "runapi", - }, - { - name: "RelaxyCode", - websiteUrl: "https://www.relaxycode.com", - apiKeyUrl: "https://www.relaxycode.com/register", - auth: grokAuth(), - config: grokPresetConfig("RelaxyCode", "https://www.relaxycode.com/v1"), - category: "third_party", - icon: "relaxcode", - }, - { - name: "Cubence", - websiteUrl: "https://cubence.com", - apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", - auth: grokAuth(), - config: grokPresetConfig("Cubence", "https://api.cubence.com/v1"), - 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", - icon: "cubence", - iconColor: "#000000", - }, - { - name: "AIGoCode", - websiteUrl: "https://aigocode.com", - apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", - auth: grokAuth(), - config: grokPresetConfig("AIGoCode", "https://api.aigocode.com"), - endpointCandidates: ["https://api.aigocode.com"], - category: "third_party", - isPartner: true, - partnerPromotionKey: "aigocode", - icon: "aigocode", - iconColor: "#5B7FFF", - }, - { - name: "RightCode", - websiteUrl: "https://www.right.codes", - apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH", - auth: grokAuth(), - config: grokPresetConfig("RightCode", "https://right.codes/codex/v1"), - category: "third_party", - isPartner: true, - partnerPromotionKey: "rightcode", - icon: "rc", - iconColor: "#E96B2C", - }, { name: "AICodeMirror", websiteUrl: "https://www.aicodemirror.com", @@ -444,36 +137,157 @@ export const grokBuildProviderPresets: GrokBuildProviderPreset[] = [ iconColor: "#000000", }, { - name: "CrazyRouter", - websiteUrl: "https://www.crazyrouter.com", - apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", + name: "PatewayAI", + websiteUrl: "https://pateway.ai", + apiKeyUrl: "https://pateway.ai/?ch=etzpm8&aff=WB6M6F67#/", auth: grokAuth(), - config: grokPresetConfig("CrazyRouter", "https://cn.crazyrouter.com/v1"), - 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: grokAuth(), - config: grokPresetConfig( - "SSSAiCode", - "https://node-hk.sssaicodeapi.com/api/v1", - ), - endpointCandidates: [ - "https://node-hk.sssaicodeapi.com/api/v1", - "https://node-hk.sssaiapi.com/api/v1", - "https://node-cf.sssaicodeapi.com/api/v1", - ], + config: grokPresetConfig("PatewayAI", "https://api.pateway.ai/v1"), + endpointCandidates: ["https://api.pateway.ai/v1"], category: "third_party", isPartner: true, - partnerPromotionKey: "sssaicode", - icon: "sssaicode", - iconColor: "#000000", + partnerPromotionKey: "patewayai", + icon: "pateway", + }, + { + name: "FennoAI", + websiteUrl: "https://api.fenno.ai", + apiKeyUrl: + "https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=P9MR3D3PLCNL", + auth: grokAuth(), + config: grokPresetConfig("FennoAI", "https://api.fenno.ai"), + endpointCandidates: ["https://api.fenno.ai"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "fenno", + icon: "fenno", + }, + { + name: "RunAPI", + websiteUrl: "https://runapi.co", + apiKeyUrl: "https://runapi.co/register?aff=iOKB", + auth: grokAuth(), + config: grokPresetConfig("RunAPI", "https://runapi.co/v1"), + category: "aggregator", + isPartner: true, + partnerPromotionKey: "runapi", + icon: "runapi", + }, + { + name: "Unity2.ai", + websiteUrl: "https://unity2.ai", + apiKeyUrl: "https://unity2.ai/register?source=ccs", + auth: grokAuth(), + config: grokPresetConfig("Unity2.ai", "https://api.unity2.ai"), + endpointCandidates: ["https://api.unity2.ai"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "unity2", + icon: "unity2", + }, + { + name: "Shengsuanyun", + nameKey: "providerForm.presets.shengsuanyun", + websiteUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + auth: grokAuth(), + config: grokPresetConfig( + "Shengsuanyun", + "https://router.shengsuanyun.com/api/v1", + OPENROUTER_STYLE_GROK_MODEL, + ), + category: "aggregator", + isPartner: true, + partnerPromotionKey: "shengsuanyun", + icon: "shengsuanyun", + }, + { + name: "AIGoCode", + websiteUrl: "https://aigocode.com", + apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", + auth: grokAuth(), + config: grokPresetConfig("AIGoCode", "https://api.aigocode.com"), + endpointCandidates: ["https://api.aigocode.com"], + category: "third_party", + isPartner: true, + partnerPromotionKey: "aigocode", + icon: "aigocode", + iconColor: "#5B7FFF", + }, + { + name: "SubRouter", + websiteUrl: "https://subrouter.ai", + apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + auth: grokAuth(), + config: grokPresetConfig("SubRouter", "https://subrouter.ai/v1"), + endpointCandidates: ["https://subrouter.ai/v1"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "subrouter", + icon: "subrouter", + }, + { + name: "APIKEY.FUN", + websiteUrl: "https://apikey.fun", + apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", + auth: grokAuth(), + config: grokPresetConfig("APIKEY.FUN", "https://api.apikey.fun/v1"), + endpointCandidates: [ + "https://api.apikey.fun/v1", + "https://slb.apikey.fun/v1", + ], + apiFormat: "openai_responses", + category: "third_party", + isPartner: true, + partnerPromotionKey: "apikeyfun", + icon: "apikeyfun", + }, + { + name: "Code0", + websiteUrl: "https://code0.ai", + apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", + auth: grokAuth(), + config: grokPresetConfig("Code0", "https://code0.ai/v1"), + endpointCandidates: ["https://code0.ai/v1"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "code0", + icon: "code0", + }, + { + name: "TeamoRouter", + websiteUrl: "https://teamorouter.com", + apiKeyUrl: + "https://teamorouter.com/?utm_source=cc_switch&utm_medium=referral&utm_campaign=ai_directory", + auth: grokAuth(), + config: grokPresetConfig("TeamoRouter", "https://api.teamorouter.com/v1"), + endpointCandidates: ["https://api.teamorouter.com/v1"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "teamorouter", + icon: "teamorouter", + }, + { + name: "ClaudeCN", + websiteUrl: "https://claudecn.top", + apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", + auth: grokAuth(), + config: grokPresetConfig("ClaudeCN", "https://claudecn.top/v1"), + category: "third_party", + isPartner: true, + partnerPromotionKey: "claudecn", + icon: "claudecn", + }, + { + name: "NekoCode", + websiteUrl: "https://nekocode.ai", + apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", + auth: grokAuth(), + config: grokPresetConfig("NekoCode", "https://nekocode.ai/v1"), + endpointCandidates: ["https://nekocode.ai/v1"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "nekocode", + icon: "nekocode", }, { name: "Compshare", @@ -508,6 +322,38 @@ export const grokBuildProviderPresets: GrokBuildProviderPreset[] = [ icon: "ucloud", iconColor: "#000000", }, + { + name: "CCSub", + websiteUrl: "https://www.ccsub.net", + apiKeyUrl: "https://www.ccsub.net/register?ref=Y6Z8DXEA", + auth: grokAuth(), + config: grokPresetConfig("CCSub", "https://www.ccsub.net/v1"), + endpointCandidates: ["https://www.ccsub.net/v1"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "ccsub", + icon: "ccsub", + }, + { + name: "SSSAiCode", + websiteUrl: "https://sssaicodeapi.com", + apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", + auth: grokAuth(), + config: grokPresetConfig( + "SSSAiCode", + "https://node-hk.sssaicodeapi.com/api/v1", + ), + 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", + icon: "sssaicode", + iconColor: "#000000", + }, { name: "Micu", websiteUrl: "https://www.micuapi.ai", @@ -521,6 +367,18 @@ export const grokBuildProviderPresets: GrokBuildProviderPreset[] = [ icon: "micu", iconColor: "#000000", }, + { + name: "RightCode", + websiteUrl: "https://www.right.codes", + apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH", + auth: grokAuth(), + config: grokPresetConfig("RightCode", "https://right.codes/codex/v1"), + category: "third_party", + isPartner: true, + partnerPromotionKey: "rightcode", + icon: "rc", + iconColor: "#E96B2C", + }, { name: "ETok.ai", websiteUrl: "https://etok.ai", @@ -534,6 +392,150 @@ export const grokBuildProviderPresets: GrokBuildProviderPreset[] = [ icon: "etok", iconColor: "#000000", }, + { + name: "Cubence", + websiteUrl: "https://cubence.com", + apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", + auth: grokAuth(), + config: grokPresetConfig("Cubence", "https://api.cubence.com/v1"), + 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", + icon: "cubence", + iconColor: "#000000", + }, + { + name: "CrazyRouter", + websiteUrl: "https://www.crazyrouter.com", + apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", + auth: grokAuth(), + config: grokPresetConfig("CrazyRouter", "https://cn.crazyrouter.com/v1"), + endpointCandidates: ["https://cn.crazyrouter.com/v1"], + isPartner: true, + partnerPromotionKey: "crazyrouter", + icon: "crazyrouter", + iconColor: "#000000", + }, + { + name: "DMXAPI", + websiteUrl: "https://www.dmxapi.cn", + auth: grokAuth(), + config: grokPresetConfig("DMXAPI", "https://www.dmxapi.cn/v1"), + endpointCandidates: ["https://www.dmxapi.cn/v1"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "dmxapi", + }, + { + name: "Qiniu", + nameKey: "providerForm.presets.qiniu", + websiteUrl: "https://s.qiniu.com/nMvAvy", + apiKeyUrl: "https://s.qiniu.com/nMvAvy", + auth: grokAuth(), + config: grokPresetConfig( + "Qiniu", + "https://api.qnaigc.com/bypass/openai/v1", + ), + endpointCandidates: [ + "https://api.qnaigc.com/bypass/openai/v1", + "https://api.modelink.ai/bypass/openai/v1", + ], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "qiniu", + icon: "qiniu", + }, + { + name: "SudoCode.chat", + websiteUrl: "https://sudocode.chat", + apiKeyUrl: + "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", + auth: grokAuth(), + config: grokPresetConfig("SudoCode.chat", "https://api.sudocode.chat/v1"), + endpointCandidates: ["https://api.sudocode.chat/v1"], + apiFormat: "openai_responses", + category: "third_party", + isPartner: true, + partnerPromotionKey: "sudocode", + icon: "sudocode", + }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + auth: grokAuth(), + config: grokPresetConfig("SudoCode.us", "https://sudocode.us/v1"), + endpointCandidates: ["https://sudocode.us/v1", "https://sudocode.run/v1"], + apiFormat: "openai_responses", + category: "third_party", + isPartner: true, + icon: "sudocode-us", + }, + // ===== 非赞助商预设:应用内展示按显示名排序,此处文件顺序不影响展示 ===== + { + name: "xAI (Grok)", + websiteUrl: "https://x.ai/api", + apiKeyUrl: "https://console.x.ai", + auth: grokAuth(), + config: grokPresetConfig("xAI (Grok)", "https://api.x.ai/v1"), + endpointCandidates: ["https://api.x.ai/v1"], + apiFormat: "openai_responses", + category: "third_party", + icon: "xai", + iconColor: "#000000", + }, + { + name: "Amux", + websiteUrl: "https://amux.ai", + apiKeyUrl: "https://amux.ai", + auth: grokAuth(), + config: grokPresetConfig("Amux", "https://api.amux.ai/v1"), + endpointCandidates: ["https://api.amux.ai/v1"], + category: "aggregator", + icon: "amux", + }, + { + name: "AiHubMix", + websiteUrl: "https://aihubmix.com", + auth: grokAuth(), + config: grokPresetConfig("AiHubMix", "https://aihubmix.com/v1"), + endpointCandidates: [ + "https://aihubmix.com/v1", + "https://api.aihubmix.com/v1", + ], + category: "aggregator", + icon: "aihubmix", + iconColor: "#006FFB", + }, + { + name: "CherryIN", + websiteUrl: "https://open.cherryin.ai", + apiKeyUrl: "https://open.cherryin.ai/console/token", + auth: grokAuth(), + config: grokPresetConfig( + "CherryIN", + "https://open.cherryin.net/v1", + OPENROUTER_STYLE_GROK_MODEL, + ), + endpointCandidates: ["https://open.cherryin.net/v1"], + category: "aggregator", + icon: "cherryin", + }, + { + name: "RelaxyCode", + websiteUrl: "https://www.relaxycode.com", + apiKeyUrl: "https://www.relaxycode.com/register", + auth: grokAuth(), + config: grokPresetConfig("RelaxyCode", "https://www.relaxycode.com/v1"), + category: "third_party", + icon: "relaxcode", + }, { name: "E-FlowCode", websiteUrl: "https://e-flowcode.cc", diff --git a/src/config/hermesProviderPresets.ts b/src/config/hermesProviderPresets.ts index df2cb8a6a..699d13d01 100644 --- a/src/config/hermesProviderPresets.ts +++ b/src/config/hermesProviderPresets.ts @@ -129,44 +129,134 @@ export interface HermesProviderSettingsConfig { } export const hermesProviderPresets: HermesProviderPreset[] = [ + // ===== 赞助商预设:文件顺序 = 应用内展示顺序,与 README 赞助商表对齐 ===== { - name: "Shengsuanyun", - nameKey: "providerForm.presets.shengsuanyun", - websiteUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", - apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + name: "Kimi", + primePartner: true, + websiteUrl: "https://platform.kimi.com?aff=cc-switch", settingsConfig: { - name: "shengsuanyun", - base_url: "https://router.shengsuanyun.com/api/v1", + name: "kimi", + base_url: "https://api.moonshot.cn/v1", api_key: "", api_mode: "chat_completions", - models: [{ id: "openai/gpt-5.5", name: "GPT-5.5" }], + models: [ + { id: "kimi-k2.7-code", name: "Kimi K2.7 Code" }, + { id: "kimi-k3", name: "Kimi K3", context_length: 1048576 }, + ], }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "shengsuanyun", - icon: "shengsuanyun", + category: "cn_official", + icon: "kimi", + iconColor: "#6366F1", suggestedDefaults: { - model: { default: "openai/gpt-5.5", provider: "shengsuanyun" }, + model: { default: "kimi-k2.7-code", provider: "kimi" }, }, }, { - name: "Qiniu", - nameKey: "providerForm.presets.qiniu", - websiteUrl: "https://s.qiniu.com/nMvAvy", - apiKeyUrl: "https://s.qiniu.com/nMvAvy", + name: "Kimi For Coding", + primePartner: true, + websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", settingsConfig: { - name: "qiniu", - base_url: "https://api.qnaigc.com/v1", + name: "kimi_coding", + base_url: "https://api.kimi.com/coding/", + api_key: "", + api_mode: "anthropic_messages", + models: [{ id: "kimi-for-coding", name: "Kimi For Coding" }], + }, + category: "cn_official", + icon: "kimi", + iconColor: "#6366F1", + suggestedDefaults: { + model: { default: "kimi-for-coding", provider: "kimi_coding" }, + }, + }, + { + name: "PackyCode", + websiteUrl: "https://www.packyapi.com", + apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch", + settingsConfig: { + name: "packycode", + base_url: "https://www.packyapi.com", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "packycode", + icon: "packycode", + suggestedDefaults: { + model: { default: "claude-opus-4-8", provider: "packycode" }, + }, + }, + { + name: "ZetaAPI", + websiteUrl: "https://zetaapi.ai", + apiKeyUrl: "https://zetaapi.ai/go/u117", + settingsConfig: { + name: "zetaapi", + base_url: "https://api.zetaapi.ai/v1", api_key: "", api_mode: "chat_completions", models: [{ id: "gpt-5.5", name: "GPT-5.5" }], }, category: "aggregator", isPartner: true, - partnerPromotionKey: "qiniu", - icon: "qiniu", + partnerPromotionKey: "zetaapi", + icon: "zetaapi", suggestedDefaults: { - model: { default: "gpt-5.5", provider: "qiniu" }, + model: { default: "gpt-5.5", provider: "zetaapi" }, + }, + }, + { + name: "APINebula", + websiteUrl: "https://apinebula.com", + apiKeyUrl: "https://apinebula.com/VjM74M", + settingsConfig: { + name: "apinebula", + base_url: "https://apinebula.com/v1", + api_key: "", + api_mode: "chat_completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "apinebula", + icon: "apinebula", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "apinebula" }, + }, + }, + { + name: "AICodeMirror", + websiteUrl: "https://www.aicodemirror.com", + apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", + settingsConfig: { + name: "aicodemirror", + base_url: "https://api.aicodemirror.com/api/claudecode", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "aicodemirror", + icon: "aicodemirror", + iconColor: "#000000", + suggestedDefaults: { + model: { default: "claude-opus-4-8", provider: "aicodemirror" }, }, }, { @@ -190,22 +280,181 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ }, }, { - name: "ZetaAPI", - websiteUrl: "https://zetaapi.ai", - apiKeyUrl: "https://zetaapi.ai/go/u117", + name: "RunAPI", + websiteUrl: "https://runapi.co", + apiKeyUrl: "https://runapi.co/register?aff=iOKB", settingsConfig: { - name: "zetaapi", - base_url: "https://api.zetaapi.ai/v1", + name: "runapi", + base_url: "https://runapi.co", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5", name: "Claude Haiku 4.5" }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "runapi", + icon: "runapi", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { default: "claude-sonnet-5", provider: "runapi" }, + }, + }, + { + name: "Unity2.ai", + websiteUrl: "https://unity2.ai", + apiKeyUrl: "https://unity2.ai/register?source=ccs", + settingsConfig: { + name: "unity2", + base_url: "https://api.unity2.ai/v1", + api_key: "", + api_mode: "chat_completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + context_length: 400000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "unity2", + icon: "unity2", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "unity2" }, + }, + }, + { + name: "Shengsuanyun", + nameKey: "providerForm.presets.shengsuanyun", + websiteUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + settingsConfig: { + name: "shengsuanyun", + base_url: "https://router.shengsuanyun.com/api/v1", + api_key: "", + api_mode: "chat_completions", + models: [{ id: "openai/gpt-5.5", name: "GPT-5.5" }], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "shengsuanyun", + icon: "shengsuanyun", + suggestedDefaults: { + model: { default: "openai/gpt-5.5", provider: "shengsuanyun" }, + }, + }, + { + name: "AIGoCode", + websiteUrl: "https://aigocode.com", + apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", + settingsConfig: { + name: "aigocode", + base_url: "https://api.aigocode.com", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "aigocode", + icon: "aigocode", + iconColor: "#5B7FFF", + suggestedDefaults: { + model: { default: "claude-opus-4-8", provider: "aigocode" }, + }, + }, + { + name: "SubRouter", + websiteUrl: "https://subrouter.ai", + apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + settingsConfig: { + name: "subrouter", + base_url: "https://subrouter.ai/v1", + api_key: "", + api_mode: "chat_completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + context_length: 400000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "subrouter", + icon: "subrouter", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "subrouter" }, + }, + }, + { + name: "APIKEY.FUN", + websiteUrl: "https://apikey.fun", + apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", + settingsConfig: { + name: "apikeyfun", + base_url: "https://api.apikey.fun", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + context_length: 1000000, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + context_length: 1000000, + }, + { + id: "claude-haiku-4-5", + name: "Claude Haiku 4.5", + context_length: 200000, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "apikeyfun", + icon: "apikeyfun", + suggestedDefaults: { + model: { default: "claude-opus-4-8", provider: "apikeyfun" }, + }, + }, + { + name: "Code0", + websiteUrl: "https://code0.ai", + apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", + settingsConfig: { + name: "code0", + base_url: "https://code0.ai/v1", api_key: "", api_mode: "chat_completions", models: [{ id: "gpt-5.5", name: "GPT-5.5" }], }, category: "aggregator", isPartner: true, - partnerPromotionKey: "zetaapi", - icon: "zetaapi", + partnerPromotionKey: "code0", + icon: "code0", suggestedDefaults: { - model: { default: "gpt-5.5", provider: "zetaapi" }, + model: { default: "gpt-5.5", provider: "code0" }, }, }, { @@ -229,58 +478,33 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ }, }, { - name: "Amux", - websiteUrl: "https://amux.ai", - apiKeyUrl: "https://amux.ai", + name: "ClaudeCN", + websiteUrl: "https://claudecn.top", + apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", settingsConfig: { - name: "amux", - base_url: "https://api.amux.ai/v1", + name: "claudecn", + base_url: "https://claudecn.top", api_key: "", - api_mode: "chat_completions", - models: [{ id: "gpt-5.5", name: "GPT-5.5" }], + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5", name: "Claude Haiku 4.5" }, + ], }, - category: "aggregator", - icon: "amux", - suggestedDefaults: { - model: { default: "gpt-5.5", provider: "amux" }, - }, - }, - { - name: "Code0", - websiteUrl: "https://code0.ai", - apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", - settingsConfig: { - name: "code0", - base_url: "https://code0.ai/v1", - api_key: "", - api_mode: "chat_completions", - models: [{ id: "gpt-5.5", name: "GPT-5.5" }], - }, - category: "aggregator", + category: "third_party", isPartner: true, - partnerPromotionKey: "code0", - icon: "code0", - suggestedDefaults: { - model: { default: "gpt-5.5", provider: "code0" }, + partnerPromotionKey: "claudecn", + icon: "claudecn", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, }, - }, - { - name: "NekoCode", - websiteUrl: "https://nekocode.ai", - apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", - settingsConfig: { - name: "nekocode", - base_url: "https://nekocode.ai/v1", - api_key: "", - api_mode: "chat_completions", - models: [{ id: "gpt-5.5", name: "GPT-5.5" }], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "nekocode", - icon: "nekocode", suggestedDefaults: { - model: { default: "gpt-5.5", provider: "nekocode" }, + model: { default: "claude-sonnet-5", provider: "claudecn" }, }, }, { @@ -373,6 +597,144 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ }, }, }, + { + name: "SiliconFlow", + websiteUrl: "https://siliconflow.cn", + apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", + settingsConfig: { + name: "siliconflow", + base_url: "https://api.siliconflow.cn/v1", + api_key: "", + api_mode: "chat_completions", + models: [ + { + id: "Pro/MiniMaxAI/MiniMax-M2.7", + name: "Pro / MiniMax M2.7", + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "siliconflow", + icon: "siliconflow", + iconColor: "#6E29F6", + suggestedDefaults: { + model: { + default: "Pro/MiniMaxAI/MiniMax-M2.7", + provider: "siliconflow", + }, + }, + }, + { + name: "SiliconFlow en", + websiteUrl: "https://siliconflow.com", + apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", + settingsConfig: { + name: "siliconflow_en", + base_url: "https://api.siliconflow.com/v1", + api_key: "", + api_mode: "chat_completions", + models: [{ id: "MiniMaxAI/MiniMax-M2.7", name: "MiniMax M2.7" }], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "siliconflow", + icon: "siliconflow", + iconColor: "#000000", + suggestedDefaults: { + model: { + default: "MiniMaxAI/MiniMax-M2.7", + provider: "siliconflow_en", + }, + }, + }, + { + name: "NekoCode", + websiteUrl: "https://nekocode.ai", + apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", + settingsConfig: { + name: "nekocode", + base_url: "https://nekocode.ai/v1", + api_key: "", + api_mode: "chat_completions", + models: [{ id: "gpt-5.5", name: "GPT-5.5" }], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "nekocode", + icon: "nekocode", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "nekocode" }, + }, + }, + { + name: "AtlasCloud", + websiteUrl: "https://www.atlascloud.ai/console/coding-plan", + apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan", + settingsConfig: { + name: "atlascloud", + base_url: "https://api.atlascloud.ai/v1", + api_key: "", + api_mode: "chat_completions", + models: [ + { + id: "zai-org/glm-5.1", + name: "GLM 5.1", + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "atlascloud", + icon: "atlascloud", + suggestedDefaults: { + model: { default: "zai-org/glm-5.1", provider: "atlascloud" }, + }, + }, + { + 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", + settingsConfig: { + name: "compshare", + base_url: "https://api.modelverse.cn/v1", + api_key: "", + api_mode: "chat_completions", + models: [{ id: "gpt-5.5", name: "GPT-5.5" }], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "ucloud", + icon: "ucloud", + iconColor: "#000000", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "compshare" }, + }, + }, + { + 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", + settingsConfig: { + name: "compshare_coding", + base_url: "https://cp.compshare.cn/v1", + api_key: "", + api_mode: "chat_completions", + models: [{ id: "gpt-5.5", name: "GPT-5.5" }], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "ucloud", + icon: "ucloud", + iconColor: "#000000", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "compshare_coding" }, + }, + }, { name: "CCSub", websiteUrl: "https://www.ccsub.net", @@ -399,53 +761,251 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ }, }, { - name: "SubRouter", - websiteUrl: "https://subrouter.ai", - apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + name: "SSSAiCode", + websiteUrl: "https://sssaicodeapi.com", + apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", settingsConfig: { - name: "subrouter", - base_url: "https://subrouter.ai/v1", + name: "sssaicode", + base_url: "https://node-hk.sssaicodeapi.com/api", api_key: "", - api_mode: "chat_completions", + api_mode: "anthropic_messages", models: [ - { - id: "gpt-5.5", - name: "GPT-5.5", - context_length: 400000, - }, + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, ], }, - category: "aggregator", + category: "third_party", isPartner: true, - partnerPromotionKey: "subrouter", - icon: "subrouter", + partnerPromotionKey: "sssaicode", + icon: "sssaicode", + iconColor: "#000000", suggestedDefaults: { - model: { default: "gpt-5.5", provider: "subrouter" }, + model: { default: "claude-opus-4-8", provider: "sssaicode" }, }, }, { - name: "Unity2.ai", - websiteUrl: "https://unity2.ai", - apiKeyUrl: "https://unity2.ai/register?source=ccs", + name: "Micu", + websiteUrl: "https://www.micuapi.ai", + apiKeyUrl: "https://www.micuapi.ai/register?aff=aOYQ", settingsConfig: { - name: "unity2", - base_url: "https://api.unity2.ai/v1", + name: "micu", + base_url: "https://www.micuapi.ai", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "micu", + icon: "micu", + iconColor: "#000000", + suggestedDefaults: { + model: { default: "claude-opus-4-8", provider: "micu" }, + }, + }, + { + name: "RightCode", + websiteUrl: "https://www.right.codes", + apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH", + settingsConfig: { + name: "rightcode", + base_url: "https://www.right.codes/claude", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "rightcode", + icon: "rc", + iconColor: "#E96B2C", + suggestedDefaults: { + model: { default: "claude-opus-4-8", provider: "rightcode" }, + }, + }, + { + name: "ETok.ai", + websiteUrl: "https://etok.ai", + apiKeyUrl: "https://etok.ai", + settingsConfig: { + name: "etok", + base_url: "https://api.etok.ai", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "etok", + icon: "etok", + iconColor: "#000000", + suggestedDefaults: { + model: { default: "claude-opus-4-8", provider: "etok" }, + }, + }, + { + name: "Cubence", + websiteUrl: "https://cubence.com", + apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", + settingsConfig: { + name: "cubence", + base_url: "https://api.cubence.com", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "cubence", + icon: "cubence", + iconColor: "#000000", + suggestedDefaults: { + model: { default: "claude-opus-4-8", provider: "cubence" }, + }, + }, + { + name: "CrazyRouter", + websiteUrl: "https://www.crazyrouter.com", + apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", + settingsConfig: { + name: "crazyrouter", + base_url: "https://cn.crazyrouter.com", + api_key: "", + api_mode: "anthropic_messages", + models: [ + { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, + { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, + { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "crazyrouter", + icon: "crazyrouter", + iconColor: "#000000", + suggestedDefaults: { + model: { default: "claude-opus-4-8", provider: "crazyrouter" }, + }, + }, + { + name: "DMXAPI", + websiteUrl: "https://www.dmxapi.cn", + apiKeyUrl: "https://www.dmxapi.cn", + settingsConfig: { + name: "dmxapi", + base_url: "https://www.dmxapi.cn/v1", api_key: "", api_mode: "chat_completions", + models: [{ id: "gpt-5.5", name: "GPT-5.5" }], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "dmxapi", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "dmxapi" }, + }, + }, + { + name: "Qiniu", + nameKey: "providerForm.presets.qiniu", + websiteUrl: "https://s.qiniu.com/nMvAvy", + apiKeyUrl: "https://s.qiniu.com/nMvAvy", + settingsConfig: { + name: "qiniu", + base_url: "https://api.qnaigc.com/v1", + api_key: "", + api_mode: "chat_completions", + models: [{ id: "gpt-5.5", name: "GPT-5.5" }], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "qiniu", + icon: "qiniu", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "qiniu" }, + }, + }, + { + name: "SudoCode.chat", + websiteUrl: "https://sudocode.chat", + apiKeyUrl: + "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", + settingsConfig: { + name: "sudocode", + base_url: "https://api.sudocode.chat/v1", + api_key: "", + api_mode: "codex_responses", + models: [ + { + id: "gpt-5.6-sol", + name: "GPT-5.6 Sol", + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "sudocode", + icon: "sudocode", + suggestedDefaults: { + model: { default: "gpt-5.6-sol", provider: "sudocode" }, + }, + }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + settingsConfig: { + name: "sudocode_us", + base_url: "https://sudocode.us/v1", + api_key: "", + api_mode: "codex_responses", models: [ { id: "gpt-5.5", name: "GPT-5.5", - context_length: 400000, }, ], }, - category: "aggregator", + category: "third_party", isPartner: true, - partnerPromotionKey: "unity2", - icon: "unity2", + icon: "sudocode-us", suggestedDefaults: { - model: { default: "gpt-5.5", provider: "unity2" }, + model: { default: "gpt-5.5", provider: "sudocode_us" }, + }, + }, + // ===== 非赞助商预设:应用内展示按显示名排序,此处文件顺序不影响展示 ===== + { + name: "Amux", + websiteUrl: "https://amux.ai", + apiKeyUrl: "https://amux.ai", + settingsConfig: { + name: "amux", + base_url: "https://api.amux.ai/v1", + api_key: "", + api_mode: "chat_completions", + models: [{ id: "gpt-5.5", name: "GPT-5.5" }], + }, + category: "aggregator", + icon: "amux", + suggestedDefaults: { + model: { default: "gpt-5.5", provider: "amux" }, }, }, { @@ -592,7 +1152,6 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ }, }, - // ===== 以下为从 Claude 应用预设同步而来的供应商 ===== // 字段映射:env.ANTHROPIC_BASE_URL → base_url;env.ANTHROPIC_AUTH_TOKEN → api_key; // apiFormat "anthropic"(默认) → api_mode "anthropic_messages"; // apiFormat "openai_chat" → api_mode "chat_completions"; @@ -673,45 +1232,6 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ model: { default: "qwen3-coder-plus", provider: "bailian_coding" }, }, }, - { - name: "Kimi", - primePartner: true, - websiteUrl: "https://platform.kimi.com?aff=cc-switch", - settingsConfig: { - name: "kimi", - base_url: "https://api.moonshot.cn/v1", - api_key: "", - api_mode: "chat_completions", - models: [ - { id: "kimi-k2.7-code", name: "Kimi K2.7 Code" }, - { id: "kimi-k3", name: "Kimi K3", context_length: 1048576 }, - ], - }, - category: "cn_official", - icon: "kimi", - iconColor: "#6366F1", - suggestedDefaults: { - model: { default: "kimi-k2.7-code", provider: "kimi" }, - }, - }, - { - name: "Kimi For Coding", - primePartner: true, - websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", - settingsConfig: { - name: "kimi_coding", - base_url: "https://api.kimi.com/coding/", - api_key: "", - api_mode: "anthropic_messages", - models: [{ id: "kimi-for-coding", name: "Kimi For Coding" }], - }, - category: "cn_official", - icon: "kimi", - iconColor: "#6366F1", - suggestedDefaults: { - model: { default: "kimi-for-coding", provider: "kimi_coding" }, - }, - }, { name: "StepFun", websiteUrl: "https://platform.stepfun.ai", @@ -887,525 +1407,6 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ model: { default: "anthropic/claude-opus-4.8", provider: "cherryin" }, }, }, - { - name: "SiliconFlow", - websiteUrl: "https://siliconflow.cn", - apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", - settingsConfig: { - name: "siliconflow", - base_url: "https://api.siliconflow.cn/v1", - api_key: "", - api_mode: "chat_completions", - models: [ - { - id: "Pro/MiniMaxAI/MiniMax-M2.7", - name: "Pro / MiniMax M2.7", - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "siliconflow", - icon: "siliconflow", - iconColor: "#6E29F6", - suggestedDefaults: { - model: { - default: "Pro/MiniMaxAI/MiniMax-M2.7", - provider: "siliconflow", - }, - }, - }, - { - name: "SiliconFlow en", - websiteUrl: "https://siliconflow.com", - apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", - settingsConfig: { - name: "siliconflow_en", - base_url: "https://api.siliconflow.com/v1", - api_key: "", - api_mode: "chat_completions", - models: [{ id: "MiniMaxAI/MiniMax-M2.7", name: "MiniMax M2.7" }], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "siliconflow", - icon: "siliconflow", - iconColor: "#000000", - suggestedDefaults: { - model: { - default: "MiniMaxAI/MiniMax-M2.7", - provider: "siliconflow_en", - }, - }, - }, - { - name: "DMXAPI", - websiteUrl: "https://www.dmxapi.cn", - apiKeyUrl: "https://www.dmxapi.cn", - settingsConfig: { - name: "dmxapi", - base_url: "https://www.dmxapi.cn/v1", - api_key: "", - api_mode: "chat_completions", - models: [{ id: "gpt-5.5", name: "GPT-5.5" }], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "dmxapi", - suggestedDefaults: { - model: { default: "gpt-5.5", provider: "dmxapi" }, - }, - }, - { - name: "PackyCode", - websiteUrl: "https://www.packyapi.com", - apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch", - settingsConfig: { - name: "packycode", - base_url: "https://www.packyapi.com", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "packycode", - icon: "packycode", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "packycode" }, - }, - }, - { - name: "APIKEY.FUN", - websiteUrl: "https://apikey.fun", - apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", - settingsConfig: { - name: "apikeyfun", - base_url: "https://api.apikey.fun", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - context_length: 1000000, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - context_length: 1000000, - }, - { - id: "claude-haiku-4-5", - name: "Claude Haiku 4.5", - context_length: 200000, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "apikeyfun", - icon: "apikeyfun", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "apikeyfun" }, - }, - }, - { - name: "APINebula", - websiteUrl: "https://apinebula.com", - apiKeyUrl: "https://apinebula.com/VjM74M", - settingsConfig: { - name: "apinebula", - base_url: "https://apinebula.com/v1", - api_key: "", - api_mode: "chat_completions", - models: [ - { - id: "gpt-5.5", - name: "GPT-5.5", - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "apinebula", - icon: "apinebula", - suggestedDefaults: { - model: { default: "gpt-5.5", provider: "apinebula" }, - }, - }, - { - name: "AtlasCloud", - websiteUrl: "https://www.atlascloud.ai/console/coding-plan", - apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan", - settingsConfig: { - name: "atlascloud", - base_url: "https://api.atlascloud.ai/v1", - api_key: "", - api_mode: "chat_completions", - models: [ - { - id: "zai-org/glm-5.1", - name: "GLM 5.1", - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "atlascloud", - icon: "atlascloud", - suggestedDefaults: { - model: { default: "zai-org/glm-5.1", provider: "atlascloud" }, - }, - }, - { - name: "SudoCode.chat", - websiteUrl: "https://sudocode.chat", - apiKeyUrl: - "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", - settingsConfig: { - name: "sudocode", - base_url: "https://api.sudocode.chat/v1", - api_key: "", - api_mode: "codex_responses", - models: [ - { - id: "gpt-5.6-sol", - name: "GPT-5.6 Sol", - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "sudocode", - icon: "sudocode", - suggestedDefaults: { - model: { default: "gpt-5.6-sol", provider: "sudocode" }, - }, - }, - { - name: "SudoCode.us", - websiteUrl: "https://sudocode.us", - apiKeyUrl: "https://sudocode.us", - settingsConfig: { - name: "sudocode_us", - base_url: "https://sudocode.us/v1", - api_key: "", - api_mode: "codex_responses", - models: [ - { - id: "gpt-5.5", - name: "GPT-5.5", - }, - ], - }, - category: "third_party", - isPartner: true, - icon: "sudocode-us", - suggestedDefaults: { - model: { default: "gpt-5.5", provider: "sudocode_us" }, - }, - }, - { - name: "Cubence", - websiteUrl: "https://cubence.com", - apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", - settingsConfig: { - name: "cubence", - base_url: "https://api.cubence.com", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "cubence", - icon: "cubence", - iconColor: "#000000", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "cubence" }, - }, - }, - { - name: "ClaudeCN", - websiteUrl: "https://claudecn.top", - apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", - settingsConfig: { - name: "claudecn", - base_url: "https://claudecn.top", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "claudecn", - icon: "claudecn", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { default: "claude-sonnet-5", provider: "claudecn" }, - }, - }, - { - name: "RunAPI", - websiteUrl: "https://runapi.co", - apiKeyUrl: "https://runapi.co/register?aff=iOKB", - settingsConfig: { - name: "runapi", - base_url: "https://runapi.co", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5", name: "Claude Haiku 4.5" }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "runapi", - icon: "runapi", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { default: "claude-sonnet-5", provider: "runapi" }, - }, - }, - { - name: "AIGoCode", - websiteUrl: "https://aigocode.com", - apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", - settingsConfig: { - name: "aigocode", - base_url: "https://api.aigocode.com", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "aigocode", - icon: "aigocode", - iconColor: "#5B7FFF", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "aigocode" }, - }, - }, - { - name: "RightCode", - websiteUrl: "https://www.right.codes", - apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH", - settingsConfig: { - name: "rightcode", - base_url: "https://www.right.codes/claude", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "rightcode", - icon: "rc", - iconColor: "#E96B2C", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "rightcode" }, - }, - }, - { - name: "AICodeMirror", - websiteUrl: "https://www.aicodemirror.com", - apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", - settingsConfig: { - name: "aicodemirror", - base_url: "https://api.aicodemirror.com/api/claudecode", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "aicodemirror", - icon: "aicodemirror", - iconColor: "#000000", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "aicodemirror" }, - }, - }, - { - name: "CrazyRouter", - websiteUrl: "https://www.crazyrouter.com", - apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", - settingsConfig: { - name: "crazyrouter", - base_url: "https://cn.crazyrouter.com", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "crazyrouter", - icon: "crazyrouter", - iconColor: "#000000", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "crazyrouter" }, - }, - }, - { - name: "SSSAiCode", - websiteUrl: "https://sssaicodeapi.com", - apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", - settingsConfig: { - name: "sssaicode", - base_url: "https://node-hk.sssaicodeapi.com/api", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "sssaicode", - icon: "sssaicode", - iconColor: "#000000", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "sssaicode" }, - }, - }, - { - 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", - settingsConfig: { - name: "compshare", - base_url: "https://api.modelverse.cn/v1", - api_key: "", - api_mode: "chat_completions", - models: [{ id: "gpt-5.5", name: "GPT-5.5" }], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "ucloud", - icon: "ucloud", - iconColor: "#000000", - suggestedDefaults: { - model: { default: "gpt-5.5", provider: "compshare" }, - }, - }, - { - 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", - settingsConfig: { - name: "compshare_coding", - base_url: "https://cp.compshare.cn/v1", - api_key: "", - api_mode: "chat_completions", - models: [{ id: "gpt-5.5", name: "GPT-5.5" }], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "ucloud", - icon: "ucloud", - iconColor: "#000000", - suggestedDefaults: { - model: { default: "gpt-5.5", provider: "compshare_coding" }, - }, - }, - { - name: "Micu", - websiteUrl: "https://www.micuapi.ai", - apiKeyUrl: "https://www.micuapi.ai/register?aff=aOYQ", - settingsConfig: { - name: "micu", - base_url: "https://www.micuapi.ai", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "micu", - icon: "micu", - iconColor: "#000000", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "micu" }, - }, - }, - { - name: "ETok.ai", - websiteUrl: "https://etok.ai", - apiKeyUrl: "https://etok.ai", - settingsConfig: { - name: "etok", - base_url: "https://api.etok.ai", - api_key: "", - api_mode: "anthropic_messages", - models: [ - { id: "claude-opus-4-8", name: "Claude Opus 4.8" }, - { id: "claude-sonnet-5", name: "Claude Sonnet 5" }, - { id: "claude-haiku-4-5-20251001", name: "Claude Haiku 4.5" }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "etok", - icon: "etok", - iconColor: "#000000", - suggestedDefaults: { - model: { default: "claude-opus-4-8", provider: "etok" }, - }, - }, { name: "E-FlowCode", websiteUrl: "https://e-flowcode.cc", diff --git a/src/config/openclawProviderPresets.ts b/src/config/openclawProviderPresets.ts index bd52adc59..4f37f7c2d 100644 --- a/src/config/openclawProviderPresets.ts +++ b/src/config/openclawProviderPresets.ts @@ -99,6 +99,373 @@ export const openclawApiProtocols = [ * OpenClaw provider presets list */ export const openclawProviderPresets: OpenClawProviderPreset[] = [ + // ===== 赞助商预设:文件顺序 = 应用内展示顺序,与 README 赞助商表对齐 ===== + { + name: "Kimi", + primePartner: true, + websiteUrl: "https://platform.kimi.com?aff=cc-switch", + apiKeyUrl: "https://platform.kimi.com/console/api-keys?aff=cc-switch", + settingsConfig: { + baseUrl: "https://api.moonshot.cn/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "kimi-k2.7-code", + name: "Kimi K2.7 Code", + contextWindow: 262144, + cost: { input: 0.95, output: 4, cacheRead: 0.19 }, + }, + { + id: "kimi-k3", + name: "Kimi K3", + contextWindow: 1048576, + cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 }, + }, + ], + }, + category: "cn_official", + icon: "kimi", + iconColor: "#6366F1", + templateValues: { + baseUrl: { + label: "Base URL", + placeholder: "https://api.moonshot.cn/v1", + defaultValue: "https://api.moonshot.cn/v1", + editorValue: "", + }, + apiKey: { + label: "API Key", + placeholder: "sk-...", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { primary: "kimi/kimi-k2.7-code" }, + modelCatalog: { "kimi/kimi-k2.7-code": { alias: "Kimi" } }, + }, + }, + { + name: "Kimi For Coding", + primePartner: true, + websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", + apiKeyUrl: "https://platform.kimi.com/console/api-keys?aff=cc-switch", + settingsConfig: { + baseUrl: "https://api.kimi.com/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "kimi-for-coding", + name: "Kimi For Coding", + contextWindow: 131072, + cost: { input: 0.95, output: 4, cacheRead: 0.19 }, + }, + ], + }, + category: "cn_official", + icon: "kimi", + iconColor: "#6366F1", + templateValues: { + baseUrl: { + label: "Base URL", + placeholder: "https://api.kimi.com/v1", + defaultValue: "https://api.kimi.com/v1", + editorValue: "", + }, + apiKey: { + label: "API Key", + placeholder: "sk-...", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { primary: "kimi-coding/kimi-for-coding" }, + modelCatalog: { "kimi-coding/kimi-for-coding": { alias: "Kimi" } }, + }, + }, + + { + name: "PackyCode", + websiteUrl: "https://www.packyapi.com", + apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch", + settingsConfig: { + baseUrl: "https://www.packyapi.com", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + cost: { input: 3, output: 15 }, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "packycode", + icon: "packycode", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "packycode/claude-opus-4-8", + fallbacks: ["packycode/claude-sonnet-5"], + }, + modelCatalog: { + "packycode/claude-opus-4-8": { alias: "Opus" }, + "packycode/claude-sonnet-5": { alias: "Sonnet" }, + }, + }, + }, + { + name: "ZetaAPI", + websiteUrl: "https://zetaapi.ai", + apiKeyUrl: "https://zetaapi.ai/go/u117", + settingsConfig: { + baseUrl: "https://api.zetaapi.ai/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + contextWindow: 400000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "zetaapi", + icon: "zetaapi", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "zetaapi/gpt-5.5", + }, + modelCatalog: { + "zetaapi/gpt-5.5": { alias: "GPT-5.5" }, + }, + }, + }, + { + name: "APINebula", + websiteUrl: "https://apinebula.com", + apiKeyUrl: "https://apinebula.com/VjM74M", + settingsConfig: { + baseUrl: "https://apinebula.com/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "apinebula", + icon: "apinebula", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "apinebula/gpt-5.5", + }, + }, + }, + { + name: "AICodeMirror", + websiteUrl: "https://www.aicodemirror.com", + apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", + settingsConfig: { + baseUrl: "https://api.aicodemirror.com/api/claudecode", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + cost: { input: 3, output: 15 }, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "aicodemirror", + icon: "aicodemirror", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "aicodemirror/claude-opus-4-8", + fallbacks: ["aicodemirror/claude-sonnet-5"], + }, + modelCatalog: { + "aicodemirror/claude-opus-4-8": { alias: "Opus" }, + "aicodemirror/claude-sonnet-5": { alias: "Sonnet" }, + }, + }, + }, + { + name: "FennoAI", + websiteUrl: "https://api.fenno.ai", + apiKeyUrl: + "https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=P9MR3D3PLCNL", + settingsConfig: { + baseUrl: "https://api.fenno.ai/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + contextWindow: 400000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "fenno", + icon: "fenno", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "fenno/gpt-5.5", + }, + modelCatalog: { + "fenno/gpt-5.5": { alias: "GPT-5.5" }, + }, + }, + }, + { + name: "RunAPI", + websiteUrl: "https://runapi.co", + apiKeyUrl: "https://runapi.co/register?aff=iOKB", + settingsConfig: { + baseUrl: "https://runapi.co", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + }, + { + id: "claude-haiku-4-5", + name: "Claude Haiku 4.5", + contextWindow: 200000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "runapi", + icon: "runapi", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "runapi/claude-sonnet-5", + }, + modelCatalog: { + "runapi/claude-opus-4-8": { alias: "Opus" }, + "runapi/claude-sonnet-5": { alias: "Sonnet" }, + "runapi/claude-haiku-4-5": { alias: "Haiku" }, + }, + }, + }, + { + name: "Unity2.ai", + websiteUrl: "https://unity2.ai", + apiKeyUrl: "https://unity2.ai/register?source=ccs", + settingsConfig: { + baseUrl: "https://api.unity2.ai/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + contextWindow: 400000, + cost: { input: 5, output: 15 }, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "unity2", + icon: "unity2", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "unity2/gpt-5.5", + }, + modelCatalog: { + "unity2/gpt-5.5": { alias: "GPT-5.5" }, + }, + }, + }, { name: "Shengsuanyun", nameKey: "providerForm.presets.shengsuanyun", @@ -145,6 +512,258 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, }, + { + name: "AIGoCode", + websiteUrl: "https://aigocode.com", + apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", + settingsConfig: { + baseUrl: "https://api.aigocode.com", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + cost: { input: 3, output: 15 }, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "aigocode", + icon: "aigocode", + iconColor: "#5B7FFF", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "aigocode/claude-opus-4-8", + fallbacks: ["aigocode/claude-sonnet-5"], + }, + modelCatalog: { + "aigocode/claude-opus-4-8": { alias: "Opus" }, + "aigocode/claude-sonnet-5": { alias: "Sonnet" }, + }, + }, + }, + { + name: "SubRouter", + websiteUrl: "https://subrouter.ai", + apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + settingsConfig: { + baseUrl: "https://subrouter.ai/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + contextWindow: 400000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "subrouter", + icon: "subrouter", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "subrouter/gpt-5.5", + }, + modelCatalog: { + "subrouter/gpt-5.5": { alias: "GPT-5.5" }, + }, + }, + }, + { + name: "APIKEY.FUN", + websiteUrl: "https://apikey.fun", + apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", + settingsConfig: { + baseUrl: "https://api.apikey.fun", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + }, + { + id: "claude-haiku-4-5", + name: "Claude Haiku 4.5", + contextWindow: 200000, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "apikeyfun", + icon: "apikeyfun", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "apikeyfun/claude-opus-4-8", + fallbacks: ["apikeyfun/claude-sonnet-5"], + }, + modelCatalog: { + "apikeyfun/claude-opus-4-8": { alias: "Opus" }, + "apikeyfun/claude-sonnet-5": { alias: "Sonnet" }, + "apikeyfun/claude-haiku-4-5": { alias: "Haiku" }, + }, + }, + }, + { + name: "Code0", + websiteUrl: "https://code0.ai", + apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", + settingsConfig: { + baseUrl: "https://code0.ai/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + contextWindow: 400000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "code0", + icon: "code0", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "code0/gpt-5.5", + }, + modelCatalog: { + "code0/gpt-5.5": { alias: "GPT-5.5" }, + }, + }, + }, + { + name: "TeamoRouter", + websiteUrl: "https://teamorouter.com", + apiKeyUrl: + "https://teamorouter.com/?utm_source=cc_switch&utm_medium=referral&utm_campaign=ai_directory", + settingsConfig: { + baseUrl: "https://api.teamorouter.com/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + contextWindow: 400000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "teamorouter", + icon: "teamorouter", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "teamorouter/gpt-5.5", + }, + modelCatalog: { + "teamorouter/gpt-5.5": { alias: "GPT-5.5" }, + }, + }, + }, + { + name: "ClaudeCN", + websiteUrl: "https://claudecn.top", + apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", + settingsConfig: { + baseUrl: "https://claudecn.top", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + }, + { + id: "claude-haiku-4-5", + name: "Claude Haiku 4.5", + contextWindow: 200000, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "claudecn", + icon: "claudecn", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "claudecn/claude-sonnet-5", + }, + modelCatalog: { + "claudecn/claude-opus-4-8": { alias: "Opus" }, + "claudecn/claude-sonnet-5": { alias: "Sonnet" }, + "claudecn/claude-haiku-4-5": { alias: "Haiku" }, + }, + }, + }, { name: "火山Agentplan", websiteUrl: @@ -257,6 +876,226 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, }, + { + name: "SiliconFlow", + websiteUrl: "https://siliconflow.cn", + apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", + settingsConfig: { + baseUrl: "https://api.siliconflow.cn/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "Pro/MiniMaxAI/MiniMax-M2.7", + name: "MiniMax M2.7", + contextWindow: 200000, + cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0.375 }, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "siliconflow", + icon: "siliconflow", + iconColor: "#6E29F6", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "sk-...", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { primary: "siliconflow/Pro/MiniMaxAI/MiniMax-M2.7" }, + modelCatalog: { + "siliconflow/Pro/MiniMaxAI/MiniMax-M2.7": { alias: "MiniMax" }, + }, + }, + }, + { + name: "SiliconFlow en", + websiteUrl: "https://siliconflow.com", + apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", + settingsConfig: { + baseUrl: "https://api.siliconflow.com/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "MiniMaxAI/MiniMax-M2.7", + name: "MiniMax M2.7", + contextWindow: 200000, + cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0.375 }, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "siliconflow", + icon: "siliconflow", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "sk-...", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { primary: "siliconflow-en/MiniMaxAI/MiniMax-M2.7" }, + modelCatalog: { + "siliconflow-en/MiniMaxAI/MiniMax-M2.7": { alias: "MiniMax" }, + }, + }, + }, + { + name: "NekoCode", + websiteUrl: "https://nekocode.ai", + apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", + settingsConfig: { + baseUrl: "https://nekocode.ai/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + contextWindow: 400000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "nekocode", + icon: "nekocode", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "nekocode/gpt-5.5", + }, + modelCatalog: { + "nekocode/gpt-5.5": { alias: "GPT-5.5" }, + }, + }, + }, + { + name: "AtlasCloud", + websiteUrl: "https://www.atlascloud.ai/console/coding-plan", + apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan", + settingsConfig: { + baseUrl: "https://api.atlascloud.ai/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "zai-org/glm-5.1", + name: "GLM 5.1", + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "atlascloud", + icon: "atlascloud", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "atlascloud/zai-org/glm-5.1", + }, + }, + }, + { + 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", + settingsConfig: { + baseUrl: "https://api.modelverse.cn/v1", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + ], + }, + category: "aggregator", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "ucloud", // 促销信息 i18n key + icon: "ucloud", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "compshare/claude-opus-4-8", + }, + modelCatalog: { + "compshare/claude-opus-4-8": { alias: "Opus" }, + }, + }, + }, + { + 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", + settingsConfig: { + baseUrl: "https://cp.compshare.cn/v1", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + ], + }, + category: "aggregator", + isPartner: true, // 合作伙伴 + partnerPromotionKey: "ucloud", // 促销信息 i18n key(复用) + icon: "ucloud", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "compshare-coding/claude-opus-4-8", + }, + modelCatalog: { + "compshare-coding/claude-opus-4-8": { alias: "Opus" }, + }, + }, + }, { name: "CCSub", websiteUrl: "https://www.ccsub.net", @@ -295,25 +1134,33 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, { - name: "SubRouter", - websiteUrl: "https://subrouter.ai", - apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + name: "SSSAiCode", + websiteUrl: "https://sssaicodeapi.com", + apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", settingsConfig: { - baseUrl: "https://subrouter.ai/v1", + baseUrl: "https://node-hk.sssaicodeapi.com/api", apiKey: "", - api: "openai-completions", + api: "anthropic-messages", models: [ { - id: "gpt-5.5", - name: "GPT-5.5", - contextWindow: 400000, + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + cost: { input: 3, output: 15 }, }, ], }, - category: "aggregator", + category: "third_party", isPartner: true, - partnerPromotionKey: "subrouter", - icon: "subrouter", + partnerPromotionKey: "sssaicode", + icon: "sssaicode", + iconColor: "#000000", templateValues: { apiKey: { label: "API Key", @@ -323,10 +1170,270 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, suggestedDefaults: { model: { - primary: "subrouter/gpt-5.5", + primary: "sssaicode/claude-opus-4-8", + fallbacks: ["sssaicode/claude-sonnet-5"], }, modelCatalog: { - "subrouter/gpt-5.5": { alias: "GPT-5.5" }, + "sssaicode/claude-opus-4-8": { alias: "Opus" }, + "sssaicode/claude-sonnet-5": { alias: "Sonnet" }, + }, + }, + }, + { + name: "Micu", + websiteUrl: "https://www.micuapi.ai", + apiKeyUrl: "https://www.micuapi.ai/register?aff=aOYQ", + settingsConfig: { + baseUrl: "https://www.micuapi.ai", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "micu", + icon: "micu", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "micu/claude-opus-4-8", + }, + modelCatalog: { + "micu/claude-opus-4-8": { alias: "Opus" }, + }, + }, + }, + { + name: "RightCode", + websiteUrl: "https://www.right.codes", + apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH", + settingsConfig: { + baseUrl: "https://www.right.codes/claude", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + cost: { input: 3, output: 15 }, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "rightcode", + icon: "rc", + iconColor: "#E96B2C", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "rightcode/claude-opus-4-8", + fallbacks: ["rightcode/claude-sonnet-5"], + }, + modelCatalog: { + "rightcode/claude-opus-4-8": { alias: "Opus" }, + "rightcode/claude-sonnet-5": { alias: "Sonnet" }, + }, + }, + }, + { + name: "ETok.ai", + websiteUrl: "https://etok.ai", + apiKeyUrl: "https://etok.ai", + settingsConfig: { + baseUrl: "https://api.etok.ai", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "etok", + icon: "etok", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "etok/claude-opus-4-8", + }, + modelCatalog: { + "etok/claude-opus-4-8": { alias: "Opus" }, + }, + }, + }, + { + name: "Cubence", + websiteUrl: "https://cubence.com", + apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", + settingsConfig: { + baseUrl: "https://api.cubence.com", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + cost: { input: 3, output: 15 }, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "cubence", + icon: "cubence", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "cubence/claude-opus-4-8", + fallbacks: ["cubence/claude-sonnet-5"], + }, + modelCatalog: { + "cubence/claude-opus-4-8": { alias: "Opus" }, + "cubence/claude-sonnet-5": { alias: "Sonnet" }, + }, + }, + }, + { + name: "CrazyRouter", + websiteUrl: "https://www.crazyrouter.com", + apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", + settingsConfig: { + baseUrl: "https://cn.crazyrouter.com/v1", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + cost: { input: 3, output: 15 }, + }, + ], + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "crazyrouter", + icon: "crazyrouter", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "crazyrouter/claude-opus-4-8", + fallbacks: ["crazyrouter/claude-sonnet-5"], + }, + modelCatalog: { + "crazyrouter/claude-opus-4-8": { alias: "Opus" }, + "crazyrouter/claude-sonnet-5": { alias: "Sonnet" }, + }, + }, + }, + { + name: "DMXAPI", + websiteUrl: "https://www.dmxapi.cn", + apiKeyUrl: "https://www.dmxapi.cn", + settingsConfig: { + baseUrl: "https://www.dmxapi.cn", + apiKey: "", + api: "anthropic-messages", + models: [ + { + id: "claude-opus-4-8", + name: "Claude Opus 4.8", + contextWindow: 1000000, + cost: { input: 5, output: 25 }, + }, + { + id: "claude-sonnet-5", + name: "Claude Sonnet 5", + contextWindow: 1000000, + cost: { input: 3, output: 15 }, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "dmxapi", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "dmxapi/claude-opus-4-8", + fallbacks: ["dmxapi/claude-sonnet-5"], + }, + modelCatalog: { + "dmxapi/claude-opus-4-8": { alias: "Opus" }, + "dmxapi/claude-sonnet-5": { alias: "Sonnet" }, }, }, }, @@ -368,26 +1475,25 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, { - name: "FennoAI", - websiteUrl: "https://api.fenno.ai", + name: "SudoCode.chat", + websiteUrl: "https://sudocode.chat", apiKeyUrl: - "https://api.fenno.ai/register?redirect=/purchase?tab=subscription%26group=16&aff=P9MR3D3PLCNL", + "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", settingsConfig: { - baseUrl: "https://api.fenno.ai/v1", + baseUrl: "https://api.sudocode.chat/v1", apiKey: "", - api: "openai-completions", + api: "openai-responses", models: [ { - id: "gpt-5.5", - name: "GPT-5.5", - contextWindow: 400000, + id: "gpt-5.6-sol", + name: "GPT-5.6 Sol", }, ], }, - category: "aggregator", + category: "third_party", isPartner: true, - partnerPromotionKey: "fenno", - icon: "fenno", + partnerPromotionKey: "sudocode", + icon: "sudocode", templateValues: { apiKey: { label: "API Key", @@ -397,33 +1503,28 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, suggestedDefaults: { model: { - primary: "fenno/gpt-5.5", - }, - modelCatalog: { - "fenno/gpt-5.5": { alias: "GPT-5.5" }, + primary: "sudocode/gpt-5.6-sol", }, }, }, { - name: "ZetaAPI", - websiteUrl: "https://zetaapi.ai", - apiKeyUrl: "https://zetaapi.ai/go/u117", + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", settingsConfig: { - baseUrl: "https://api.zetaapi.ai/v1", + baseUrl: "https://sudocode.us/v1", apiKey: "", - api: "openai-completions", + api: "openai-responses", models: [ { id: "gpt-5.5", name: "GPT-5.5", - contextWindow: 400000, }, ], }, - category: "aggregator", + category: "third_party", isPartner: true, - partnerPromotionKey: "zetaapi", - icon: "zetaapi", + icon: "sudocode-us", templateValues: { apiKey: { label: "API Key", @@ -433,50 +1534,11 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, suggestedDefaults: { model: { - primary: "zetaapi/gpt-5.5", - }, - modelCatalog: { - "zetaapi/gpt-5.5": { alias: "GPT-5.5" }, - }, - }, - }, - { - name: "TeamoRouter", - websiteUrl: "https://teamorouter.com", - apiKeyUrl: - "https://teamorouter.com/?utm_source=cc_switch&utm_medium=referral&utm_campaign=ai_directory", - settingsConfig: { - baseUrl: "https://api.teamorouter.com/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "gpt-5.5", - name: "GPT-5.5", - contextWindow: 400000, - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "teamorouter", - icon: "teamorouter", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "teamorouter/gpt-5.5", - }, - modelCatalog: { - "teamorouter/gpt-5.5": { alias: "GPT-5.5" }, + primary: "sudocode-us/gpt-5.5", }, }, }, + // ===== 非赞助商预设:应用内展示按显示名排序,此处文件顺序不影响展示 ===== { name: "Amux", websiteUrl: "https://amux.ai", @@ -511,116 +1573,6 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, }, - { - name: "Code0", - websiteUrl: "https://code0.ai", - apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", - settingsConfig: { - baseUrl: "https://code0.ai/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "gpt-5.5", - name: "GPT-5.5", - contextWindow: 400000, - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "code0", - icon: "code0", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "code0/gpt-5.5", - }, - modelCatalog: { - "code0/gpt-5.5": { alias: "GPT-5.5" }, - }, - }, - }, - { - name: "NekoCode", - websiteUrl: "https://nekocode.ai", - apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", - settingsConfig: { - baseUrl: "https://nekocode.ai/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "gpt-5.5", - name: "GPT-5.5", - contextWindow: 400000, - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "nekocode", - icon: "nekocode", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "nekocode/gpt-5.5", - }, - modelCatalog: { - "nekocode/gpt-5.5": { alias: "GPT-5.5" }, - }, - }, - }, - { - name: "Unity2.ai", - websiteUrl: "https://unity2.ai", - apiKeyUrl: "https://unity2.ai/register?source=ccs", - settingsConfig: { - baseUrl: "https://api.unity2.ai/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "gpt-5.5", - name: "GPT-5.5", - contextWindow: 400000, - cost: { input: 5, output: 15 }, - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "unity2", - icon: "unity2", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "unity2/gpt-5.5", - }, - modelCatalog: { - "unity2/gpt-5.5": { alias: "GPT-5.5" }, - }, - }, - }, - // ========== Chinese Officials ========== { name: "DeepSeek", websiteUrl: "https://platform.deepseek.com", @@ -779,90 +1731,6 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ modelCatalog: { "qwen/qwen3.5-plus": { alias: "Qwen" } }, }, }, - { - name: "Kimi", - primePartner: true, - websiteUrl: "https://platform.kimi.com?aff=cc-switch", - apiKeyUrl: "https://platform.kimi.com/console/api-keys?aff=cc-switch", - settingsConfig: { - baseUrl: "https://api.moonshot.cn/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "kimi-k2.7-code", - name: "Kimi K2.7 Code", - contextWindow: 262144, - cost: { input: 0.95, output: 4, cacheRead: 0.19 }, - }, - { - id: "kimi-k3", - name: "Kimi K3", - contextWindow: 1048576, - cost: { input: 3, output: 15, cacheRead: 0.3, cacheWrite: 0 }, - }, - ], - }, - category: "cn_official", - icon: "kimi", - iconColor: "#6366F1", - templateValues: { - baseUrl: { - label: "Base URL", - placeholder: "https://api.moonshot.cn/v1", - defaultValue: "https://api.moonshot.cn/v1", - editorValue: "", - }, - apiKey: { - label: "API Key", - placeholder: "sk-...", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { primary: "kimi/kimi-k2.7-code" }, - modelCatalog: { "kimi/kimi-k2.7-code": { alias: "Kimi" } }, - }, - }, - { - name: "Kimi For Coding", - primePartner: true, - websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", - apiKeyUrl: "https://platform.kimi.com/console/api-keys?aff=cc-switch", - settingsConfig: { - baseUrl: "https://api.kimi.com/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "kimi-for-coding", - name: "Kimi For Coding", - contextWindow: 131072, - cost: { input: 0.95, output: 4, cacheRead: 0.19 }, - }, - ], - }, - category: "cn_official", - icon: "kimi", - iconColor: "#6366F1", - templateValues: { - baseUrl: { - label: "Base URL", - placeholder: "https://api.kimi.com/v1", - defaultValue: "https://api.kimi.com/v1", - editorValue: "", - }, - apiKey: { - label: "API Key", - placeholder: "sk-...", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { primary: "kimi-coding/kimi-for-coding" }, - modelCatalog: { "kimi-coding/kimi-for-coding": { alias: "Kimi" } }, - }, - }, { name: "StepFun", websiteUrl: "https://platform.stepfun.com/step-plan", @@ -1229,7 +2097,6 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, - // ========== Aggregators ========== { name: "AiHubMix", websiteUrl: "https://aihubmix.com", @@ -1315,146 +2182,6 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, }, - { - name: "DMXAPI", - websiteUrl: "https://www.dmxapi.cn", - apiKeyUrl: "https://www.dmxapi.cn", - settingsConfig: { - baseUrl: "https://www.dmxapi.cn", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - cost: { input: 3, output: 15 }, - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "dmxapi", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "dmxapi/claude-opus-4-8", - fallbacks: ["dmxapi/claude-sonnet-5"], - }, - modelCatalog: { - "dmxapi/claude-opus-4-8": { alias: "Opus" }, - "dmxapi/claude-sonnet-5": { alias: "Sonnet" }, - }, - }, - }, - { - name: "ClaudeCN", - websiteUrl: "https://claudecn.top", - apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", - settingsConfig: { - baseUrl: "https://claudecn.top", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - }, - { - id: "claude-haiku-4-5", - name: "Claude Haiku 4.5", - contextWindow: 200000, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "claudecn", - icon: "claudecn", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "claudecn/claude-sonnet-5", - }, - modelCatalog: { - "claudecn/claude-opus-4-8": { alias: "Opus" }, - "claudecn/claude-sonnet-5": { alias: "Sonnet" }, - "claudecn/claude-haiku-4-5": { alias: "Haiku" }, - }, - }, - }, - { - name: "RunAPI", - websiteUrl: "https://runapi.co", - apiKeyUrl: "https://runapi.co/register?aff=iOKB", - settingsConfig: { - baseUrl: "https://runapi.co", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - }, - { - id: "claude-haiku-4-5", - name: "Claude Haiku 4.5", - contextWindow: 200000, - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "runapi", - icon: "runapi", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "runapi/claude-sonnet-5", - }, - modelCatalog: { - "runapi/claude-opus-4-8": { alias: "Opus" }, - "runapi/claude-sonnet-5": { alias: "Sonnet" }, - "runapi/claude-haiku-4-5": { alias: "Haiku" }, - }, - }, - }, { name: "OpenRouter", websiteUrl: "https://openrouter.ai", @@ -1603,78 +2330,6 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ modelCatalog: { "modelscope/ZhipuAI/GLM-5.1": { alias: "GLM" } }, }, }, - { - name: "SiliconFlow", - websiteUrl: "https://siliconflow.cn", - apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", - settingsConfig: { - baseUrl: "https://api.siliconflow.cn/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "Pro/MiniMaxAI/MiniMax-M2.7", - name: "MiniMax M2.7", - contextWindow: 200000, - cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0.375 }, - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "siliconflow", - icon: "siliconflow", - iconColor: "#6E29F6", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "sk-...", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { primary: "siliconflow/Pro/MiniMaxAI/MiniMax-M2.7" }, - modelCatalog: { - "siliconflow/Pro/MiniMaxAI/MiniMax-M2.7": { alias: "MiniMax" }, - }, - }, - }, - { - name: "SiliconFlow en", - websiteUrl: "https://siliconflow.com", - apiKeyUrl: "https://cloud.siliconflow.cn/i/YflgU2Ve", - settingsConfig: { - baseUrl: "https://api.siliconflow.com/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "MiniMaxAI/MiniMax-M2.7", - name: "MiniMax M2.7", - contextWindow: 200000, - cost: { input: 0.3, output: 1.2, cacheRead: 0.06, cacheWrite: 0.375 }, - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "siliconflow", - icon: "siliconflow", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "sk-...", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { primary: "siliconflow-en/MiniMaxAI/MiniMax-M2.7" }, - modelCatalog: { - "siliconflow-en/MiniMaxAI/MiniMax-M2.7": { alias: "MiniMax" }, - }, - }, - }, { name: "Novita AI", websiteUrl: "https://novita.ai", @@ -1791,662 +2446,6 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, }, - - // ========== Third Party Partners ========== - { - name: "PackyCode", - websiteUrl: "https://www.packyapi.com", - apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch", - settingsConfig: { - baseUrl: "https://www.packyapi.com", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - cost: { input: 3, output: 15 }, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "packycode", - icon: "packycode", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "packycode/claude-opus-4-8", - fallbacks: ["packycode/claude-sonnet-5"], - }, - modelCatalog: { - "packycode/claude-opus-4-8": { alias: "Opus" }, - "packycode/claude-sonnet-5": { alias: "Sonnet" }, - }, - }, - }, - { - name: "APIKEY.FUN", - websiteUrl: "https://apikey.fun", - apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", - settingsConfig: { - baseUrl: "https://api.apikey.fun", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - }, - { - id: "claude-haiku-4-5", - name: "Claude Haiku 4.5", - contextWindow: 200000, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "apikeyfun", - icon: "apikeyfun", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "apikeyfun/claude-opus-4-8", - fallbacks: ["apikeyfun/claude-sonnet-5"], - }, - modelCatalog: { - "apikeyfun/claude-opus-4-8": { alias: "Opus" }, - "apikeyfun/claude-sonnet-5": { alias: "Sonnet" }, - "apikeyfun/claude-haiku-4-5": { alias: "Haiku" }, - }, - }, - }, - { - name: "APINebula", - websiteUrl: "https://apinebula.com", - apiKeyUrl: "https://apinebula.com/VjM74M", - settingsConfig: { - baseUrl: "https://apinebula.com/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "gpt-5.5", - name: "GPT-5.5", - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "apinebula", - icon: "apinebula", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "apinebula/gpt-5.5", - }, - }, - }, - { - name: "AtlasCloud", - websiteUrl: "https://www.atlascloud.ai/console/coding-plan", - apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan", - settingsConfig: { - baseUrl: "https://api.atlascloud.ai/v1", - apiKey: "", - api: "openai-completions", - models: [ - { - id: "zai-org/glm-5.1", - name: "GLM 5.1", - }, - ], - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "atlascloud", - icon: "atlascloud", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "atlascloud/zai-org/glm-5.1", - }, - }, - }, - { - name: "SudoCode.chat", - websiteUrl: "https://sudocode.chat", - apiKeyUrl: - "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", - settingsConfig: { - baseUrl: "https://api.sudocode.chat/v1", - apiKey: "", - api: "openai-responses", - models: [ - { - id: "gpt-5.6-sol", - name: "GPT-5.6 Sol", - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "sudocode", - icon: "sudocode", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "sudocode/gpt-5.6-sol", - }, - }, - }, - { - name: "SudoCode.us", - websiteUrl: "https://sudocode.us", - apiKeyUrl: "https://sudocode.us", - settingsConfig: { - baseUrl: "https://sudocode.us/v1", - apiKey: "", - api: "openai-responses", - models: [ - { - id: "gpt-5.5", - name: "GPT-5.5", - }, - ], - }, - category: "third_party", - isPartner: true, - icon: "sudocode-us", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "sudocode-us/gpt-5.5", - }, - }, - }, - { - name: "Cubence", - websiteUrl: "https://cubence.com", - apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", - settingsConfig: { - baseUrl: "https://api.cubence.com", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - cost: { input: 3, output: 15 }, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "cubence", - icon: "cubence", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "cubence/claude-opus-4-8", - fallbacks: ["cubence/claude-sonnet-5"], - }, - modelCatalog: { - "cubence/claude-opus-4-8": { alias: "Opus" }, - "cubence/claude-sonnet-5": { alias: "Sonnet" }, - }, - }, - }, - { - name: "AIGoCode", - websiteUrl: "https://aigocode.com", - apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", - settingsConfig: { - baseUrl: "https://api.aigocode.com", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - cost: { input: 3, output: 15 }, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "aigocode", - icon: "aigocode", - iconColor: "#5B7FFF", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "aigocode/claude-opus-4-8", - fallbacks: ["aigocode/claude-sonnet-5"], - }, - modelCatalog: { - "aigocode/claude-opus-4-8": { alias: "Opus" }, - "aigocode/claude-sonnet-5": { alias: "Sonnet" }, - }, - }, - }, - { - name: "RightCode", - websiteUrl: "https://www.right.codes", - apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH", - settingsConfig: { - baseUrl: "https://www.right.codes/claude", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - cost: { input: 3, output: 15 }, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "rightcode", - icon: "rc", - iconColor: "#E96B2C", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "rightcode/claude-opus-4-8", - fallbacks: ["rightcode/claude-sonnet-5"], - }, - modelCatalog: { - "rightcode/claude-opus-4-8": { alias: "Opus" }, - "rightcode/claude-sonnet-5": { alias: "Sonnet" }, - }, - }, - }, - { - name: "AICodeMirror", - websiteUrl: "https://www.aicodemirror.com", - apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", - settingsConfig: { - baseUrl: "https://api.aicodemirror.com/api/claudecode", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - cost: { input: 3, output: 15 }, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "aicodemirror", - icon: "aicodemirror", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "aicodemirror/claude-opus-4-8", - fallbacks: ["aicodemirror/claude-sonnet-5"], - }, - modelCatalog: { - "aicodemirror/claude-opus-4-8": { alias: "Opus" }, - "aicodemirror/claude-sonnet-5": { alias: "Sonnet" }, - }, - }, - }, - { - name: "CrazyRouter", - websiteUrl: "https://www.crazyrouter.com", - apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", - settingsConfig: { - baseUrl: "https://cn.crazyrouter.com/v1", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - cost: { input: 3, output: 15 }, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "crazyrouter", - icon: "crazyrouter", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "crazyrouter/claude-opus-4-8", - fallbacks: ["crazyrouter/claude-sonnet-5"], - }, - modelCatalog: { - "crazyrouter/claude-opus-4-8": { alias: "Opus" }, - "crazyrouter/claude-sonnet-5": { alias: "Sonnet" }, - }, - }, - }, - { - name: "SSSAiCode", - websiteUrl: "https://sssaicodeapi.com", - apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", - settingsConfig: { - baseUrl: "https://node-hk.sssaicodeapi.com/api", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - { - id: "claude-sonnet-5", - name: "Claude Sonnet 5", - contextWindow: 1000000, - cost: { input: 3, output: 15 }, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "sssaicode", - icon: "sssaicode", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "sssaicode/claude-opus-4-8", - fallbacks: ["sssaicode/claude-sonnet-5"], - }, - modelCatalog: { - "sssaicode/claude-opus-4-8": { alias: "Opus" }, - "sssaicode/claude-sonnet-5": { alias: "Sonnet" }, - }, - }, - }, - { - 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", - settingsConfig: { - baseUrl: "https://api.modelverse.cn/v1", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - ], - }, - category: "aggregator", - isPartner: true, // 合作伙伴 - partnerPromotionKey: "ucloud", // 促销信息 i18n key - icon: "ucloud", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "compshare/claude-opus-4-8", - }, - modelCatalog: { - "compshare/claude-opus-4-8": { alias: "Opus" }, - }, - }, - }, - { - 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", - settingsConfig: { - baseUrl: "https://cp.compshare.cn/v1", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - ], - }, - category: "aggregator", - isPartner: true, // 合作伙伴 - partnerPromotionKey: "ucloud", // 促销信息 i18n key(复用) - icon: "ucloud", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "compshare-coding/claude-opus-4-8", - }, - modelCatalog: { - "compshare-coding/claude-opus-4-8": { alias: "Opus" }, - }, - }, - }, - { - name: "Micu", - websiteUrl: "https://www.micuapi.ai", - apiKeyUrl: "https://www.micuapi.ai/register?aff=aOYQ", - settingsConfig: { - baseUrl: "https://www.micuapi.ai", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "micu", - icon: "micu", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "micu/claude-opus-4-8", - }, - modelCatalog: { - "micu/claude-opus-4-8": { alias: "Opus" }, - }, - }, - }, - { - name: "ETok.ai", - websiteUrl: "https://etok.ai", - apiKeyUrl: "https://etok.ai", - settingsConfig: { - baseUrl: "https://api.etok.ai", - apiKey: "", - api: "anthropic-messages", - models: [ - { - id: "claude-opus-4-8", - name: "Claude Opus 4.8", - contextWindow: 1000000, - cost: { input: 5, output: 25 }, - }, - ], - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "etok", - icon: "etok", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - suggestedDefaults: { - model: { - primary: "etok/claude-opus-4-8", - }, - modelCatalog: { - "etok/claude-opus-4-8": { alias: "Opus" }, - }, - }, - }, { name: "E-FlowCode", websiteUrl: "https://e-flowcode.cc", @@ -2509,7 +2508,6 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, }, - // ========== Cloud Providers ========== { name: "AWS Bedrock", websiteUrl: "https://aws.amazon.com/bedrock/", diff --git a/src/config/opencodeProviderPresets.ts b/src/config/opencodeProviderPresets.ts index 8e6534a59..719735668 100644 --- a/src/config/opencodeProviderPresets.ts +++ b/src/config/opencodeProviderPresets.ts @@ -286,28 +286,98 @@ export function getPresetModelDefaults( } export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ + // ===== 赞助商预设:文件顺序 = 应用内展示顺序,与 README 赞助商表对齐 ===== { - name: "Shengsuanyun", - nameKey: "providerForm.presets.shengsuanyun", - websiteUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", - apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + name: "Kimi", + primePartner: true, + websiteUrl: "https://platform.kimi.com?aff=cc-switch", + apiKeyUrl: "https://platform.kimi.com/console/api-keys?aff=cc-switch", settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "Shengsuanyun", + npm: "@ai-sdk/openai-compatible", + name: "Kimi", options: { - baseURL: "https://router.shengsuanyun.com/api/v1", + baseURL: "https://api.moonshot.cn/v1", apiKey: "", setCacheKey: true, }, models: { - "anthropic/claude-opus-4.8": { name: "Claude Opus 4.8" }, - "anthropic/claude-sonnet-5": { name: "Claude Sonnet 5" }, + "kimi-k2.7-code": { name: "Kimi K2.7 Code" }, + "kimi-k3": { name: "Kimi K3" }, }, }, - category: "aggregator", + category: "cn_official", + icon: "kimi", + iconColor: "#6366F1", + templateValues: { + baseURL: { + label: "Base URL", + placeholder: "https://api.moonshot.cn/v1", + defaultValue: "https://api.moonshot.cn/v1", + editorValue: "", + }, + apiKey: { + label: "API Key", + placeholder: "sk-...", + editorValue: "", + }, + }, + }, + { + name: "Kimi For Coding", + primePartner: true, + websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", + apiKeyUrl: "https://platform.kimi.com/console/api-keys?aff=cc-switch", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "Kimi For Coding", + options: { + baseURL: "https://api.kimi.com/coding/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "kimi-for-coding": { name: "Kimi For Coding" }, + }, + }, + category: "cn_official", + icon: "kimi", + iconColor: "#6366F1", + templateValues: { + baseURL: { + label: "Base URL", + placeholder: "https://api.kimi.com/coding/v1", + defaultValue: "https://api.kimi.com/coding/v1", + editorValue: "", + }, + apiKey: { + label: "API Key", + placeholder: "sk-...", + editorValue: "", + }, + }, + }, + + { + name: "PackyCode", + websiteUrl: "https://www.packyapi.com", + apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "PackyCode", + options: { + baseURL: "https://www.packyapi.com/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + }, + }, + category: "third_party", isPartner: true, - partnerPromotionKey: "shengsuanyun", - icon: "shengsuanyun", + partnerPromotionKey: "packycode", + icon: "packycode", templateValues: { apiKey: { label: "API Key", @@ -317,15 +387,14 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, { - name: "Qiniu", - nameKey: "providerForm.presets.qiniu", - websiteUrl: "https://s.qiniu.com/nMvAvy", - apiKeyUrl: "https://s.qiniu.com/nMvAvy", + name: "ZetaAPI", + websiteUrl: "https://zetaapi.ai", + apiKeyUrl: "https://zetaapi.ai/go/u117", settingsConfig: { npm: "@ai-sdk/openai-compatible", - name: "Qiniu", + name: "ZetaAPI", options: { - baseURL: "https://api.qnaigc.com/v1", + baseURL: "https://api.zetaapi.ai/v1", apiKey: "", setCacheKey: true, }, @@ -335,8 +404,66 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, category: "aggregator", isPartner: true, - partnerPromotionKey: "qiniu", - icon: "qiniu", + partnerPromotionKey: "zetaapi", + icon: "zetaapi", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "APINebula", + websiteUrl: "https://apinebula.com", + apiKeyUrl: "https://apinebula.com/VjM74M", + settingsConfig: { + npm: "@ai-sdk/openai-compatible", + name: "APINebula", + options: { + baseURL: "https://apinebula.com/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.5": { name: "GPT-5.5" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "apinebula", + icon: "apinebula", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "AICodeMirror", + websiteUrl: "https://www.aicodemirror.com", + apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "AICodeMirror", + options: { + baseURL: "https://api.aicodemirror.com/api/claudecode", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-opus-4.8": { name: "Claude Opus 4.8" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "aicodemirror", + icon: "aicodemirror", + iconColor: "#000000", templateValues: { apiKey: { label: "API Key", @@ -375,14 +502,44 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, { - name: "ZetaAPI", - websiteUrl: "https://zetaapi.ai", - apiKeyUrl: "https://zetaapi.ai/go/u117", + name: "RunAPI", + websiteUrl: "https://runapi.co", + apiKeyUrl: "https://runapi.co/register?aff=iOKB", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "RunAPI", + options: { + baseURL: "https://runapi.co", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + "claude-haiku-4-5": { name: "Claude Haiku 4.5" }, + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "runapi", + icon: "runapi", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "Unity2.ai", + websiteUrl: "https://unity2.ai", + apiKeyUrl: "https://unity2.ai/register?source=ccs", settingsConfig: { npm: "@ai-sdk/openai-compatible", - name: "ZetaAPI", + name: "Unity2.ai", options: { - baseURL: "https://api.zetaapi.ai/v1", + baseURL: "https://api.unity2.ai/v1", apiKey: "", setCacheKey: true, }, @@ -392,8 +549,154 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, category: "aggregator", isPartner: true, - partnerPromotionKey: "zetaapi", - icon: "zetaapi", + partnerPromotionKey: "unity2", + icon: "unity2", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "Shengsuanyun", + nameKey: "providerForm.presets.shengsuanyun", + websiteUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + apiKeyUrl: "https://www.shengsuanyun.com/?from=CH_4HHXMRYF", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "Shengsuanyun", + options: { + baseURL: "https://router.shengsuanyun.com/api/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "anthropic/claude-opus-4.8": { name: "Claude Opus 4.8" }, + "anthropic/claude-sonnet-5": { name: "Claude Sonnet 5" }, + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "shengsuanyun", + icon: "shengsuanyun", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "AIGoCode", + websiteUrl: "https://aigocode.com", + apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "AIGoCode", + options: { + baseURL: "https://api.aigocode.com", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "aigocode", + icon: "aigocode", + iconColor: "#5B7FFF", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "SubRouter", + websiteUrl: "https://subrouter.ai", + apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + settingsConfig: { + npm: "@ai-sdk/openai-compatible", + name: "SubRouter", + options: { + baseURL: "https://subrouter.ai/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.5": { name: "GPT-5.5" }, + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "subrouter", + icon: "subrouter", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "APIKEY.FUN", + websiteUrl: "https://apikey.fun", + apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "APIKEY.FUN", + options: { + baseURL: "https://api.apikey.fun/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-haiku-4-5": { name: "Claude Haiku 4.5" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "apikeyfun", + icon: "apikeyfun", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "Code0", + websiteUrl: "https://code0.ai", + apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", + settingsConfig: { + npm: "@ai-sdk/openai-compatible", + name: "Code0", + options: { + baseURL: "https://code0.ai/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.5": { name: "GPT-5.5" }, + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "code0", + icon: "code0", templateValues: { apiKey: { label: "API Key", @@ -432,79 +735,27 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, { - name: "Amux", - websiteUrl: "https://amux.ai", - apiKeyUrl: "https://amux.ai", + name: "ClaudeCN", + websiteUrl: "https://claudecn.top", + apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", settingsConfig: { - npm: "@ai-sdk/openai-compatible", - name: "Amux", + npm: "@ai-sdk/anthropic", + name: "ClaudeCN", options: { - baseURL: "https://api.amux.ai/v1", + baseURL: "https://claudecn.top", apiKey: "", setCacheKey: true, }, models: { - "gpt-5.5": { name: "GPT-5.5" }, + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + "claude-haiku-4-5": { name: "Claude Haiku 4.5" }, }, }, - category: "aggregator", - icon: "amux", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "Code0", - websiteUrl: "https://code0.ai", - apiKeyUrl: "https://code0.ai/agent/register/B2XHxGjGmRvqgznY", - settingsConfig: { - npm: "@ai-sdk/openai-compatible", - name: "Code0", - options: { - baseURL: "https://code0.ai/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "gpt-5.5": { name: "GPT-5.5" }, - }, - }, - category: "aggregator", + category: "third_party", isPartner: true, - partnerPromotionKey: "code0", - icon: "code0", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "NekoCode", - websiteUrl: "https://nekocode.ai", - apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", - settingsConfig: { - npm: "@ai-sdk/openai-compatible", - name: "NekoCode", - options: { - baseURL: "https://nekocode.ai/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "gpt-5.5": { name: "GPT-5.5" }, - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "nekocode", - icon: "nekocode", + partnerPromotionKey: "claudecn", + icon: "claudecn", templateValues: { apiKey: { label: "API Key", @@ -612,6 +863,62 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, }, + { + name: "NekoCode", + websiteUrl: "https://nekocode.ai", + apiKeyUrl: "https://nekocode.ai?aff=CCSWITCH", + settingsConfig: { + npm: "@ai-sdk/openai-compatible", + name: "NekoCode", + options: { + baseURL: "https://nekocode.ai/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.5": { name: "GPT-5.5" }, + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "nekocode", + icon: "nekocode", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "AtlasCloud", + websiteUrl: "https://www.atlascloud.ai/console/coding-plan", + apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan", + settingsConfig: { + npm: "@ai-sdk/openai-compatible", + name: "AtlasCloud", + options: { + baseURL: "https://api.atlascloud.ai/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "zai-org/glm-5.1": { name: "GLM 5.1" }, + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "atlascloud", + icon: "atlascloud", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, { name: "CCSub", websiteUrl: "https://www.ccsub.net", @@ -641,25 +948,27 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, { - name: "SubRouter", - websiteUrl: "https://subrouter.ai", - apiKeyUrl: "https://subrouter.ai/register?aff=l3ri", + name: "SSSAiCode", + websiteUrl: "https://sssaicodeapi.com", + apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", settingsConfig: { - npm: "@ai-sdk/openai-compatible", - name: "SubRouter", + npm: "@ai-sdk/anthropic", + name: "SSSAiCode", options: { - baseURL: "https://subrouter.ai/v1", + baseURL: "https://node-hk.sssaicodeapi.com/api/v1", apiKey: "", setCacheKey: true, }, models: { - "gpt-5.5": { name: "GPT-5.5" }, + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-opus-4-8": { name: "Claude Opus 4.8" }, }, }, - category: "aggregator", + category: "third_party", isPartner: true, - partnerPromotionKey: "subrouter", - icon: "subrouter", + partnerPromotionKey: "sssaicode", + icon: "sssaicode", + iconColor: "#000000", templateValues: { apiKey: { label: "API Key", @@ -669,14 +978,192 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, { - name: "Unity2.ai", - websiteUrl: "https://unity2.ai", - apiKeyUrl: "https://unity2.ai/register?source=ccs", + name: "Micu", + websiteUrl: "https://www.micuapi.ai", + apiKeyUrl: "https://www.micuapi.ai/register?aff=aOYQ", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "Micu", + options: { + baseURL: "https://www.micuapi.ai/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "micu", + icon: "micu", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "RightCode", + websiteUrl: "https://www.right.codes", + apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH", + settingsConfig: { + npm: "@ai-sdk/openai", + name: "RightCode", + options: { + baseURL: "https://right.codes/codex/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.5": { name: "GPT-5.5" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "rightcode", + icon: "rc", + iconColor: "#E96B2C", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "ETok.ai", + websiteUrl: "https://etok.ai", + apiKeyUrl: "https://etok.ai", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "ETok", + options: { + baseURL: "https://api.etok.ai/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "etok", + icon: "etok", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "Cubence", + websiteUrl: "https://cubence.com", + apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "Cubence", + options: { + baseURL: "https://api.cubence.com/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "cubence", + icon: "cubence", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "CrazyRouter", + websiteUrl: "https://www.crazyrouter.com", + apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "CrazyRouter", + options: { + baseURL: "https://cn.crazyrouter.com", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "crazyrouter", + icon: "crazyrouter", + iconColor: "#000000", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "DMXAPI", + websiteUrl: "https://www.dmxapi.cn", + apiKeyUrl: "https://www.dmxapi.cn", + settingsConfig: { + npm: "@ai-sdk/anthropic", + name: "DMXAPI", + options: { + baseURL: "https://www.dmxapi.cn/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "claude-sonnet-5": { name: "Claude Sonnet 5" }, + "claude-opus-4-8": { name: "Claude Opus 4.8" }, + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "dmxapi", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "Qiniu", + nameKey: "providerForm.presets.qiniu", + websiteUrl: "https://s.qiniu.com/nMvAvy", + apiKeyUrl: "https://s.qiniu.com/nMvAvy", settingsConfig: { npm: "@ai-sdk/openai-compatible", - name: "Unity2.ai", + name: "Qiniu", options: { - baseURL: "https://api.unity2.ai/v1", + baseURL: "https://api.qnaigc.com/v1", apiKey: "", setCacheKey: true, }, @@ -686,8 +1173,91 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, category: "aggregator", isPartner: true, - partnerPromotionKey: "unity2", - icon: "unity2", + partnerPromotionKey: "qiniu", + icon: "qiniu", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "SudoCode.chat", + websiteUrl: "https://sudocode.chat", + apiKeyUrl: + "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", + settingsConfig: { + npm: "@ai-sdk/openai", + name: "SudoCode.chat", + options: { + baseURL: "https://api.sudocode.chat/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.6-sol": { name: "GPT-5.6 Sol" }, + }, + }, + category: "third_party", + isPartner: true, + partnerPromotionKey: "sudocode", + icon: "sudocode", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + { + name: "SudoCode.us", + websiteUrl: "https://sudocode.us", + apiKeyUrl: "https://sudocode.us", + settingsConfig: { + npm: "@ai-sdk/openai", + name: "SudoCode.us", + options: { + baseURL: "https://sudocode.us/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.5": { name: "GPT-5.5" }, + }, + }, + category: "third_party", + isPartner: true, + icon: "sudocode-us", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, + // ===== 非赞助商预设:应用内展示按显示名排序,此处文件顺序不影响展示 ===== + { + name: "Amux", + websiteUrl: "https://amux.ai", + apiKeyUrl: "https://amux.ai", + settingsConfig: { + npm: "@ai-sdk/openai-compatible", + name: "Amux", + options: { + baseURL: "https://api.amux.ai/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.5": { name: "GPT-5.5" }, + }, + }, + category: "aggregator", + icon: "amux", templateValues: { apiKey: { label: "API Key", @@ -820,75 +1390,6 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, }, - { - name: "Kimi", - primePartner: true, - websiteUrl: "https://platform.kimi.com?aff=cc-switch", - apiKeyUrl: "https://platform.kimi.com/console/api-keys?aff=cc-switch", - settingsConfig: { - npm: "@ai-sdk/openai-compatible", - name: "Kimi", - options: { - baseURL: "https://api.moonshot.cn/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "kimi-k2.7-code": { name: "Kimi K2.7 Code" }, - "kimi-k3": { name: "Kimi K3" }, - }, - }, - category: "cn_official", - icon: "kimi", - iconColor: "#6366F1", - templateValues: { - baseURL: { - label: "Base URL", - placeholder: "https://api.moonshot.cn/v1", - defaultValue: "https://api.moonshot.cn/v1", - editorValue: "", - }, - apiKey: { - label: "API Key", - placeholder: "sk-...", - editorValue: "", - }, - }, - }, - { - name: "Kimi For Coding", - primePartner: true, - websiteUrl: "https://www.kimi.com/code/?aff=cc-switch", - apiKeyUrl: "https://platform.kimi.com/console/api-keys?aff=cc-switch", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "Kimi For Coding", - options: { - baseURL: "https://api.kimi.com/coding/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "kimi-for-coding": { name: "Kimi For Coding" }, - }, - }, - category: "cn_official", - icon: "kimi", - iconColor: "#6366F1", - templateValues: { - baseURL: { - label: "Base URL", - placeholder: "https://api.kimi.com/coding/v1", - defaultValue: "https://api.kimi.com/coding/v1", - editorValue: "", - }, - apiKey: { - label: "API Key", - placeholder: "sk-...", - editorValue: "", - }, - }, - }, { name: "StepFun", websiteUrl: "https://platform.stepfun.com/step-plan", @@ -1341,34 +1842,6 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, }, - { - name: "DMXAPI", - websiteUrl: "https://www.dmxapi.cn", - apiKeyUrl: "https://www.dmxapi.cn", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "DMXAPI", - options: { - baseURL: "https://www.dmxapi.cn/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "dmxapi", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, { name: "OpenRouter", websiteUrl: "https://openrouter.ai", @@ -1510,477 +1983,6 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, }, - - { - name: "PackyCode", - websiteUrl: "https://www.packyapi.com", - apiKeyUrl: "https://www.packyapi.com/register?aff=cc-switch", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "PackyCode", - options: { - baseURL: "https://www.packyapi.com/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "packycode", - icon: "packycode", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "APIKEY.FUN", - websiteUrl: "https://apikey.fun", - apiKeyUrl: "https://apikey.fun/register?aff=CCSwitch", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "APIKEY.FUN", - options: { - baseURL: "https://api.apikey.fun/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-haiku-4-5": { name: "Claude Haiku 4.5" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "apikeyfun", - icon: "apikeyfun", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "APINebula", - websiteUrl: "https://apinebula.com", - apiKeyUrl: "https://apinebula.com/VjM74M", - settingsConfig: { - npm: "@ai-sdk/openai-compatible", - name: "APINebula", - options: { - baseURL: "https://apinebula.com/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "gpt-5.5": { name: "GPT-5.5" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "apinebula", - icon: "apinebula", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "AtlasCloud", - websiteUrl: "https://www.atlascloud.ai/console/coding-plan", - apiKeyUrl: "https://www.atlascloud.ai/console/coding-plan", - settingsConfig: { - npm: "@ai-sdk/openai-compatible", - name: "AtlasCloud", - options: { - baseURL: "https://api.atlascloud.ai/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "zai-org/glm-5.1": { name: "GLM 5.1" }, - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "atlascloud", - icon: "atlascloud", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "SudoCode.chat", - websiteUrl: "https://sudocode.chat", - apiKeyUrl: - "https://sudocode.chat/register?utm_source=ccswitch&utm_medium=partner", - settingsConfig: { - npm: "@ai-sdk/openai", - name: "SudoCode.chat", - options: { - baseURL: "https://api.sudocode.chat/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "gpt-5.6-sol": { name: "GPT-5.6 Sol" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "sudocode", - icon: "sudocode", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "SudoCode.us", - websiteUrl: "https://sudocode.us", - apiKeyUrl: "https://sudocode.us", - settingsConfig: { - npm: "@ai-sdk/openai", - name: "SudoCode.us", - options: { - baseURL: "https://sudocode.us/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "gpt-5.5": { name: "GPT-5.5" }, - }, - }, - category: "third_party", - isPartner: true, - icon: "sudocode-us", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "Cubence", - websiteUrl: "https://cubence.com", - apiKeyUrl: "https://cubence.com/signup?code=CCSWITCH&source=ccs", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "Cubence", - options: { - baseURL: "https://api.cubence.com/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "cubence", - icon: "cubence", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "AIGoCode", - websiteUrl: "https://aigocode.com", - apiKeyUrl: "https://aigocode.com/invite/CC-SWITCH", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "AIGoCode", - options: { - baseURL: "https://api.aigocode.com", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "aigocode", - icon: "aigocode", - iconColor: "#5B7FFF", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "RightCode", - websiteUrl: "https://www.right.codes", - apiKeyUrl: "https://www.right.codes/register?aff=CCSWITCH", - settingsConfig: { - npm: "@ai-sdk/openai", - name: "RightCode", - options: { - baseURL: "https://right.codes/codex/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "gpt-5.5": { name: "GPT-5.5" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "rightcode", - icon: "rc", - iconColor: "#E96B2C", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "AICodeMirror", - websiteUrl: "https://www.aicodemirror.com", - apiKeyUrl: "https://www.aicodemirror.com/register?invitecode=9915W3", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "AICodeMirror", - options: { - baseURL: "https://api.aicodemirror.com/api/claudecode", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-opus-4.8": { name: "Claude Opus 4.8" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "aicodemirror", - icon: "aicodemirror", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "ClaudeCN", - websiteUrl: "https://claudecn.top", - apiKeyUrl: "https://claudecn.ai/register?aff=HEL9", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "ClaudeCN", - options: { - baseURL: "https://claudecn.top", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - "claude-haiku-4-5": { name: "Claude Haiku 4.5" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "claudecn", - icon: "claudecn", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "RunAPI", - websiteUrl: "https://runapi.co", - apiKeyUrl: "https://runapi.co/register?aff=iOKB", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "RunAPI", - options: { - baseURL: "https://runapi.co", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - "claude-haiku-4-5": { name: "Claude Haiku 4.5" }, - }, - }, - category: "aggregator", - isPartner: true, - partnerPromotionKey: "runapi", - icon: "runapi", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "CrazyRouter", - websiteUrl: "https://www.crazyrouter.com", - apiKeyUrl: "https://www.crazyrouter.com/register?aff=OZcm&ref=cc-switch", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "CrazyRouter", - options: { - baseURL: "https://cn.crazyrouter.com", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "crazyrouter", - icon: "crazyrouter", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "SSSAiCode", - websiteUrl: "https://sssaicodeapi.com", - apiKeyUrl: "https://sssaicodeapi.com/register?ref=DCP0SM", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "SSSAiCode", - options: { - baseURL: "https://node-hk.sssaicodeapi.com/api/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "sssaicode", - icon: "sssaicode", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "Micu", - websiteUrl: "https://www.micuapi.ai", - apiKeyUrl: "https://www.micuapi.ai/register?aff=aOYQ", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "Micu", - options: { - baseURL: "https://www.micuapi.ai/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "micu", - icon: "micu", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, - { - name: "ETok.ai", - websiteUrl: "https://etok.ai", - apiKeyUrl: "https://etok.ai", - settingsConfig: { - npm: "@ai-sdk/anthropic", - name: "ETok", - options: { - baseURL: "https://api.etok.ai/v1", - apiKey: "", - setCacheKey: true, - }, - models: { - "claude-opus-4-8": { name: "Claude Opus 4.8" }, - "claude-sonnet-5": { name: "Claude Sonnet 5" }, - }, - }, - category: "third_party", - isPartner: true, - partnerPromotionKey: "etok", - icon: "etok", - iconColor: "#000000", - templateValues: { - apiKey: { - label: "API Key", - placeholder: "", - editorValue: "", - }, - }, - }, { name: "E-FlowCode", websiteUrl: "https://e-flowcode.cc", diff --git a/tests/components/ProviderPresetSelector.test.tsx b/tests/components/ProviderPresetSelector.test.tsx index 2107e139c..7b6575641 100644 --- a/tests/components/ProviderPresetSelector.test.tsx +++ b/tests/components/ProviderPresetSelector.test.tsx @@ -61,6 +61,7 @@ type TestPresetEntry = { settingsConfig: Record; category: ProviderCategory; primePartner?: boolean; + isPartner?: boolean; }; }; @@ -207,8 +208,9 @@ describe("ProviderPresetSelector pure helpers", () => { const original = sortPresetEntries(presetEntries, originalMode, t); expect(original).not.toBe(presetEntries); - // original 模式置顶官方分类(alpha),其余保持传入顺序。 - expect(getIds(original)).toEqual(["alpha", "gamma", "beta", "delta"]); + // original 模式置顶官方分类(alpha);其余均非赞助商,按显示名排序 + // (Beta Gateway < Delta Mirror < Gamma 本地名)。 + expect(getIds(original)).toEqual(["alpha", "beta", "delta", "gamma"]); expect(getIds(sortPresetEntries(presetEntries, nameAscMode, t))).toEqual([ "alpha", @@ -229,30 +231,44 @@ describe("ProviderPresetSelector pure helpers", () => { ).toEqual(["alpha", "beta", "delta", "gamma"]); }); - it("original 模式按「官方 → 尊享伙伴 → 其余」三段排序,各组内部保序且双重身份不重复", () => { + it("original 模式按「官方 → 尊享伙伴 → 赞助商 → 非赞助商」四段排序,前三组保序、末组按显示名,双重身份不重复", () => { // 故意打乱传入顺序,验证: // - official 组置顶(officialOnly、officialPrime 按出现顺序); - // - 非官方且 primePartner 的预设居中(primeOnly); - // - 其余保持传入顺序(restFirst、restLast); - // - 既是 official 又是 primePartner 的预设只归入官方组、不在 prime 组重复。 + // - 非官方且 primePartner 的预设次之(primeAndPartner); + // - 赞助商(isPartner)第三段,保持传入(预设文件)顺序: + // partnerZeta 在 partnerAlpha 前,不按字母重排; + // - 非赞助商按显示名排序:restAlpha 排到 restZulu 前; + // - 既是 official 又是 primePartner 的只归入官方组; + // 既是 primePartner 又是 isPartner 的只归入 prime 组、不在赞助商组重复。 const mixed: TestPresetEntry[] = [ { - id: "restFirst", + id: "restZulu", preset: { - name: "Rest First", - websiteUrl: "https://rest-first.example.com", + name: "Zulu Rest", + websiteUrl: "https://rest-zulu.example.com", settingsConfig: {}, category: "third_party", }, }, { - id: "primeOnly", + id: "partnerZeta", preset: { - name: "Prime Only", - websiteUrl: "https://prime-only.example.com", + name: "Zeta Partner", + websiteUrl: "https://partner-zeta.example.com", + settingsConfig: {}, + category: "aggregator", + isPartner: true, + }, + }, + { + id: "primeAndPartner", + preset: { + name: "Prime And Partner", + websiteUrl: "https://prime-and-partner.example.com", settingsConfig: {}, category: "cn_official", primePartner: true, + isPartner: true, }, }, { @@ -275,10 +291,20 @@ describe("ProviderPresetSelector pure helpers", () => { }, }, { - id: "restLast", + id: "partnerAlpha", preset: { - name: "Rest Last", - websiteUrl: "https://rest-last.example.com", + name: "Alpha Partner", + websiteUrl: "https://partner-alpha.example.com", + settingsConfig: {}, + category: "third_party", + isPartner: true, + }, + }, + { + id: "restAlpha", + preset: { + name: "Alpha Rest", + websiteUrl: "https://rest-alpha.example.com", settingsConfig: {}, category: "aggregator", }, @@ -288,23 +314,27 @@ describe("ProviderPresetSelector pure helpers", () => { expect(getIds(sortPresetEntries(mixed, "original", t))).toEqual([ "officialOnly", "officialPrime", - "primeOnly", - "restFirst", - "restLast", + "primeAndPartner", + "partnerZeta", + "partnerAlpha", + "restAlpha", + "restZulu", ]); }); }); describe("ProviderPresetSelector", () => { - it("默认(original 模式)将官方分类置顶,其余保持传入顺序", () => { + it("默认(original 模式)将官方分类置顶,非赞助商按显示名排序", () => { renderSelector(); + // 组件内 t() 未配置翻译资源,显示名回退为 key 字面量: + // Beta Gateway < Delta Mirror < preset.gamma。 expect(getPresetButtonTexts()).toEqual([ "providerPreset.custom", "preset.alpha", - "preset.gamma", "Beta Gateway", "Delta Mirror", + "preset.gamma", ]); }); @@ -327,9 +357,9 @@ describe("ProviderPresetSelector", () => { expect(getPresetButtonTexts()).toEqual([ "providerPreset.custom", "preset.alpha", - "preset.gamma", "Beta Gateway", "Delta Mirror", + "preset.gamma", ]); });