diff --git a/src/config/claudeDesktopProviderPresets.ts b/src/config/claudeDesktopProviderPresets.ts index 9b64d25b1..feab0ba2f 100644 --- a/src/config/claudeDesktopProviderPresets.ts +++ b/src/config/claudeDesktopProviderPresets.ts @@ -184,6 +184,21 @@ export const claudeDesktopProviderPresets: ClaudeDesktopProviderPreset[] = [ partnerPromotionKey: "patewayai", icon: "pateway", }, + { + 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: "火山Agentplan", websiteUrl: "https://www.volcengine.com/product/ark", diff --git a/src/config/claudeProviderPresets.ts b/src/config/claudeProviderPresets.ts index 6eff0b0f3..62d084d59 100644 --- a/src/config/claudeProviderPresets.ts +++ b/src/config/claudeProviderPresets.ts @@ -236,6 +236,23 @@ export const providerPresets: ProviderPreset[] = [ partnerPromotionKey: "unity2", icon: "unity2", }, + { + name: "Qiniu", + nameKey: "providerForm.presets.qiniu", + websiteUrl: "https://s.qiniu.com/nMvAvy", + apiKeyUrl: "https://s.qiniu.com/nMvAvy", + settingsConfig: { + env: { + ANTHROPIC_BASE_URL: "https://api.qnaigc.com", + ANTHROPIC_AUTH_TOKEN: "", + }, + }, + endpointCandidates: ["https://api.qnaigc.com", "https://api.modelink.ai"], + category: "aggregator", + isPartner: true, + partnerPromotionKey: "qiniu", + icon: "qiniu", + }, { name: "Gemini Native", websiteUrl: "https://ai.google.dev/gemini-api", diff --git a/src/config/codexProviderPresets.ts b/src/config/codexProviderPresets.ts index 0115812c5..8b075e279 100644 --- a/src/config/codexProviderPresets.ts +++ b/src/config/codexProviderPresets.ts @@ -280,6 +280,26 @@ export const codexProviderPresets: CodexProviderPreset[] = [ partnerPromotionKey: "unity2", icon: "unity2", }, + { + name: "Qiniu", + nameKey: "providerForm.presets.qiniu", + websiteUrl: "https://s.qiniu.com/nMvAvy", + apiKeyUrl: "https://s.qiniu.com/nMvAvy", + category: "aggregator", + auth: generateThirdPartyAuth(""), + config: generateThirdPartyConfig( + "qiniu", + "https://api.qnaigc.com/bypass/openai/v1", + "gpt-5.5", + ), + endpointCandidates: [ + "https://api.qnaigc.com/bypass/openai/v1", + "https://api.modelink.ai/bypass/openai/v1", + ], + isPartner: true, + partnerPromotionKey: "qiniu", + icon: "qiniu", + }, { name: "Azure OpenAI", websiteUrl: diff --git a/src/config/geminiProviderPresets.ts b/src/config/geminiProviderPresets.ts index 7aba39f48..7b95b4679 100644 --- a/src/config/geminiProviderPresets.ts +++ b/src/config/geminiProviderPresets.ts @@ -107,6 +107,29 @@ export const geminiProviderPresets: GeminiProviderPreset[] = [ 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: "PackyCode", websiteUrl: "https://www.packyapi.com", diff --git a/src/config/hermesProviderPresets.ts b/src/config/hermesProviderPresets.ts index 4f9028556..c122c9494 100644 --- a/src/config/hermesProviderPresets.ts +++ b/src/config/hermesProviderPresets.ts @@ -149,6 +149,26 @@ export const hermesProviderPresets: HermesProviderPreset[] = [ model: { default: "openai/gpt-5.5", provider: "shengsuanyun" }, }, }, + { + 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: "火山Agentplan", websiteUrl: "https://www.volcengine.com/product/ark", diff --git a/src/config/openclawProviderPresets.ts b/src/config/openclawProviderPresets.ts index c9ba5e53d..8a83a7201 100644 --- a/src/config/openclawProviderPresets.ts +++ b/src/config/openclawProviderPresets.ts @@ -327,6 +327,43 @@ export const openclawProviderPresets: OpenClawProviderPreset[] = [ }, }, }, + { + name: "Qiniu", + nameKey: "providerForm.presets.qiniu", + websiteUrl: "https://s.qiniu.com/nMvAvy", + apiKeyUrl: "https://s.qiniu.com/nMvAvy", + settingsConfig: { + baseUrl: "https://api.qnaigc.com/v1", + apiKey: "", + api: "openai-completions", + models: [ + { + id: "gpt-5.5", + name: "GPT-5.5", + contextWindow: 400000, + }, + ], + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "qiniu", + icon: "qiniu", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + suggestedDefaults: { + model: { + primary: "qiniu/gpt-5.5", + }, + modelCatalog: { + "qiniu/gpt-5.5": { alias: "GPT-5.5" }, + }, + }, + }, { name: "Unity2.ai", websiteUrl: "https://unity2.ai", diff --git a/src/config/opencodeProviderPresets.ts b/src/config/opencodeProviderPresets.ts index bfc889e94..fd6da90e6 100644 --- a/src/config/opencodeProviderPresets.ts +++ b/src/config/opencodeProviderPresets.ts @@ -309,6 +309,35 @@ export const opencodeProviderPresets: OpenCodeProviderPreset[] = [ }, }, }, + { + 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: "Qiniu", + options: { + baseURL: "https://api.qnaigc.com/v1", + apiKey: "", + setCacheKey: true, + }, + models: { + "gpt-5.5": { name: "GPT-5.5" }, + }, + }, + category: "aggregator", + isPartner: true, + partnerPromotionKey: "qiniu", + icon: "qiniu", + templateValues: { + apiKey: { + label: "API Key", + placeholder: "", + editorValue: "", + }, + }, + }, { name: "火山Agentplan", websiteUrl: "https://www.volcengine.com/product/ark", diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index 4f9a7e0c1..ebc62eaea 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -1024,12 +1024,14 @@ "byteplus": "Register via this link to get 500,000 tokens of free inference quota per model.", "ccsub": "CCSub is a stable, affordable AI API relay — a drop-in replacement for Claude.ai & OpenAI subscriptions, with one key for all models at ~30% of direct API cost.", "subrouter": "SubRouter is an AI relay aggregator that lets one key access multiple models and providers.", + "qiniu": "Qiniu Cloud is a multi-protocol AI relay: one key for native Claude, GPT, and Gemini models, with the Anthropic, OpenAI, and Gemini APIs all supported.", "unity2": "Unity2.ai offers exclusive benefits for CC Switch users: register via this link to get $2 in credits, plus another $10 for joining the official group — up to $12 in free credits!" }, "presets": { "ucloud": "Compshare", "ucloudCoding": "Compshare Coding Plan", "shengsuanyun": "Shengsuanyun", + "qiniu": "Qiniu", "openrouter": "OpenRouter", "deepseek": "DeepSeek", "together": "Together AI" diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 72a94dfc7..2226bc45f 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -1024,12 +1024,14 @@ "byteplus": "このリンクから登録すると、各モデルごとに50万トークンの無料推論クォータがもらえます。", "ccsub": "CCSub は安定・低価格の AI API リレーサービスです。Claude Code の公式サブスクリプションの代替として、1つのキーで全モデルを公式比約1/3のコストで利用できます。", "subrouter": "SubRouter は、1つのキーで複数のモデルとプロバイダーにアクセスできる AI 中継アグリゲーターです。", + "qiniu": "Qiniu Cloud(七牛云)はマルチプロトコル対応の AI 中継プラットフォームです。1つのキーでネイティブの Claude・GPT・Gemini モデルを利用でき、Anthropic/OpenAI/Gemini の各 API に対応します。", "unity2": "Unity2.ai は CC Switch ユーザーに専属特典を提供しています:このリンクから登録すると $2 分のクレジット、公式グループ参加でさらに $10、最大 $12 の無料クレジットがもらえます!" }, "presets": { "ucloud": "Compshare", "ucloudCoding": "Compshare Coding Plan", "shengsuanyun": "Shengsuanyun", + "qiniu": "Qiniu", "openrouter": "OpenRouter", "deepseek": "DeepSeek", "together": "Together AI" diff --git a/src/i18n/locales/zh-TW.json b/src/i18n/locales/zh-TW.json index b671549b8..a7e5efc39 100644 --- a/src/i18n/locales/zh-TW.json +++ b/src/i18n/locales/zh-TW.json @@ -996,12 +996,14 @@ "byteplus": "透過此連結註冊即可取得每個模型 50 萬 tokens 的免費推理額度。", "ccsub": "CCSub 是穩定、實惠的 AI API 中轉平台,Claude Code 官方訂閱的超強平替,一個 Key 覆蓋全部模型,價格約為官方 1/3。", "subrouter": "SubRouter 是中轉站聚合平台,一個 Key 可接入多個模型與供應商。", + "qiniu": "七牛雲是多協定 AI 中轉平台,一個 Key 即可呼叫原生 Claude、GPT、Gemini 模型,相容 Anthropic、OpenAI、Gemini 多種介面。", "unity2": "Unity2.ai 為 CC Switch 使用者提供專屬福利:透過此連結註冊可領取 $2 餘額,加入官方群再送 $10,最高可領 $12 免費額度!" }, "presets": { "ucloud": "優雲智算", "ucloudCoding": "優雲智算 Coding Plan", "shengsuanyun": "勝算雲", + "qiniu": "七牛雲", "openrouter": "OpenRouter", "deepseek": "DeepSeek", "together": "Together AI" diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index 46f168991..6cf612122 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -1024,12 +1024,14 @@ "byteplus": "通过此链接注册即可获取每个模型50万tokens的免费推理额度。", "ccsub": "CCSub 是稳定、实惠的 AI API 中转平台,Claude Code 官方订阅的超强平替,一个 Key 覆盖全部模型,价格约为官方 1/3。", "subrouter": "SubRouter 是中转站聚合平台,一个 Key 可接入多个模型与供应商。", + "qiniu": "七牛云是多协议 AI 中转平台,一个 Key 即可调用原生 Claude、GPT、Gemini 模型,兼容 Anthropic、OpenAI、Gemini 多种接口。", "unity2": "Unity2.ai 为 CC Switch 用户提供专属福利:通过此链接注册可领取 $2 余额,加入官方群再送 $10,最高可领 $12 免费额度!" }, "presets": { "ucloud": "优云智算", "ucloudCoding": "优云智算Coding Plan", "shengsuanyun": "胜算云", + "qiniu": "七牛云", "openrouter": "OpenRouter", "deepseek": "DeepSeek", "together": "Together AI" diff --git a/src/icons/extracted/index.ts b/src/icons/extracted/index.ts index 352855b55..1cffb4abc 100644 --- a/src/icons/extracted/index.ts +++ b/src/icons/extracted/index.ts @@ -15,6 +15,7 @@ import _hermes from "./hermes.png"; import _huoshan from "./huoshan.png"; import _pateway from "./pateway.jpg"; import _pipellm from "./pipellm.png"; +import _qiniu from "./qiniu.png"; import _relaxcode from "./relaxcode.png"; import _runapi from "./runapi.jpg"; import _shengsuanyun from "./shengsuanyun.svg?url"; @@ -109,6 +110,7 @@ export const iconUrls: Record = { huoshan: _huoshan, pateway: _pateway, pipellm: _pipellm, + qiniu: _qiniu, relaxcode: _relaxcode, runapi: _runapi, shengsuanyun: _shengsuanyun, diff --git a/src/icons/extracted/metadata.ts b/src/icons/extracted/metadata.ts index 75e004dab..411dc0723 100644 --- a/src/icons/extracted/metadata.ts +++ b/src/icons/extracted/metadata.ts @@ -511,6 +511,24 @@ export const iconMetadata: Record = { keywords: ["pipellm", "pipe"], defaultColor: "currentColor", }, + qiniu: { + name: "qiniu", + displayName: "七牛云", + category: "ai-provider", + keywords: [ + "qiniu", + "qnaigc", + "modelink", + "aggregator", + "relay", + "claude", + "codex", + "gpt", + "gemini", + "gateway", + ], + defaultColor: "#00AAE7", + }, runapi: { name: "runapi", displayName: "RunAPI", diff --git a/src/icons/extracted/qiniu.png b/src/icons/extracted/qiniu.png new file mode 100644 index 000000000..e5efd604b Binary files /dev/null and b/src/icons/extracted/qiniu.png differ