From f893f2b21b2e4fe28dcf76f85c690ba40487357e Mon Sep 17 00:00:00 2001 From: Haze <709547807@qq.com> Date: Fri, 24 Apr 2026 11:41:47 +0800 Subject: [PATCH] feat(provider): add DeepSeek provider with configuration and icon support (#907) --- electron/shared/providers/registry.ts | 24 ++++++++++++++++++++++++ electron/shared/providers/types.ts | 2 ++ src/assets/providers/deepseek.svg | 1 + src/assets/providers/index.ts | 2 ++ src/lib/providers.ts | 3 +++ 5 files changed, 32 insertions(+) create mode 100644 src/assets/providers/deepseek.svg diff --git a/electron/shared/providers/registry.ts b/electron/shared/providers/registry.ts index dafa124..ab5d2ee 100644 --- a/electron/shared/providers/registry.ts +++ b/electron/shared/providers/registry.ts @@ -198,6 +198,30 @@ export const PROVIDER_DEFINITIONS: ProviderDefinition[] = [ apiKeyEnv: 'SILICONFLOW_API_KEY', }, }, + { + id: 'deepseek', + name: 'DeepSeek', + icon: '🐋', + placeholder: 'sk-...', + model: 'DeepSeek', + requiresApiKey: true, + defaultBaseUrl: 'https://api.deepseek.com/v1', + showModelId: true, + showModelIdInDevModeOnly: true, + modelIdPlaceholder: 'deepseek-v4-pro', + defaultModelId: 'deepseek-v4-pro', + apiKeyUrl: 'https://platform.deepseek.com/api_keys', + category: 'official', + envVar: 'DEEPSEEK_API_KEY', + supportedAuthModes: ['api_key'], + defaultAuthMode: 'api_key', + supportsMultipleAccounts: true, + providerConfig: { + baseUrl: 'https://api.deepseek.com/v1', + api: 'openai-completions', + apiKeyEnv: 'DEEPSEEK_API_KEY', + }, + }, { id: 'minimax-portal', name: 'MiniMax (Global)', diff --git a/electron/shared/providers/types.ts b/electron/shared/providers/types.ts index 122c524..afa4c5e 100644 --- a/electron/shared/providers/types.ts +++ b/electron/shared/providers/types.ts @@ -6,6 +6,7 @@ export const PROVIDER_TYPES = [ 'ark', 'moonshot', 'siliconflow', + 'deepseek', 'minimax-portal', 'minimax-portal-cn', 'modelstudio', @@ -21,6 +22,7 @@ export const BUILTIN_PROVIDER_TYPES = [ 'ark', 'moonshot', 'siliconflow', + 'deepseek', 'minimax-portal', 'minimax-portal-cn', 'modelstudio', diff --git a/src/assets/providers/deepseek.svg b/src/assets/providers/deepseek.svg new file mode 100644 index 0000000..1c0e989 --- /dev/null +++ b/src/assets/providers/deepseek.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/providers/index.ts b/src/assets/providers/index.ts index 3c9572d..ec2593f 100644 --- a/src/assets/providers/index.ts +++ b/src/assets/providers/index.ts @@ -9,6 +9,7 @@ import minimaxPortal from './minimax.svg'; import qwenPortal from './qwen.svg'; import ollama from './ollama.svg'; import custom from './custom.svg'; +import deepseek from './deepseek.svg'; export const providerIcons: Record = { anthropic, @@ -24,4 +25,5 @@ export const providerIcons: Record = { 'modelstudio': qwenPortal, ollama, custom, + deepseek, }; diff --git a/src/lib/providers.ts b/src/lib/providers.ts index 856084d..a2ab5b0 100644 --- a/src/lib/providers.ts +++ b/src/lib/providers.ts @@ -15,6 +15,7 @@ export const PROVIDER_TYPES = [ 'moonshot', 'moonshot-global', 'siliconflow', + 'deepseek', 'minimax-portal', 'minimax-portal-cn', 'modelstudio', @@ -32,6 +33,7 @@ export const BUILTIN_PROVIDER_TYPES = [ 'moonshot', 'moonshot-global', 'siliconflow', + 'deepseek', 'minimax-portal', 'minimax-portal-cn', 'modelstudio', @@ -176,6 +178,7 @@ export const PROVIDER_TYPE_INFO: ProviderTypeInfo[] = [ { id: 'moonshot', name: 'Moonshot (CN)', icon: '🌙', placeholder: 'sk-...', model: 'Kimi', requiresApiKey: true, defaultBaseUrl: 'https://api.moonshot.cn/v1', defaultModelId: 'kimi-k2.6', docsUrl: 'https://platform.moonshot.cn/' }, { id: 'moonshot-global', name: 'Moonshot (Global)', icon: '🌙', placeholder: 'sk-...', model: 'Kimi', requiresApiKey: true, defaultBaseUrl: 'https://api.moonshot.ai/v1', defaultModelId: 'kimi-k2.6', docsUrl: 'https://platform.moonshot.ai/' }, { id: 'siliconflow', name: 'SiliconFlow (CN)', icon: '🌊', placeholder: 'sk-...', model: 'Multi-Model', requiresApiKey: true, defaultBaseUrl: 'https://api.siliconflow.cn/v1', showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'deepseek-ai/DeepSeek-V3', defaultModelId: 'deepseek-ai/DeepSeek-V3', docsUrl: 'https://docs.siliconflow.cn/cn/userguide/introduction' }, + { id: 'deepseek', name: 'DeepSeek', icon: '🐋', placeholder: 'sk-...', model: 'DeepSeek', requiresApiKey: true, defaultBaseUrl: 'https://api.deepseek.com/v1', showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'deepseek-v4-pro', defaultModelId: 'deepseek-v4-pro', apiKeyUrl: 'https://platform.deepseek.com/api_keys', docsUrl: 'https://api-docs.deepseek.com/', docsUrlZh: 'https://api-docs.deepseek.com/zh-cn/' }, { id: 'minimax-portal', name: 'MiniMax (Global)', icon: '☁️', placeholder: 'sk-...', model: 'MiniMax', requiresApiKey: false, isOAuth: true, supportsApiKey: true, defaultModelId: 'MiniMax-M2.7', showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'MiniMax-M2.7', apiKeyUrl: 'https://platform.minimax.io' }, { id: 'modelstudio', name: 'Model Studio', icon: '☁️', placeholder: 'sk-...', model: 'Qwen', requiresApiKey: true, defaultBaseUrl: 'https://coding.dashscope.aliyuncs.com/v1', showBaseUrl: true, defaultModelId: 'qwen3.5-plus', showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'qwen3.5-plus', apiKeyUrl: 'https://bailian.console.aliyun.com/', hidden: true }, { id: 'ark', name: 'ByteDance Ark', icon: 'A', placeholder: 'your-ark-api-key', model: 'Doubao', requiresApiKey: true, defaultBaseUrl: 'https://ark.cn-beijing.volces.com/api/v3', showBaseUrl: true, showModelId: true, modelIdPlaceholder: 'ep-20260228000000-xxxxx', docsUrl: 'https://www.volcengine.com/', codePlanPresetBaseUrl: 'https://ark.cn-beijing.volces.com/api/coding/v3', codePlanPresetModelId: 'ark-code-latest', codePlanDocsUrl: 'https://www.volcengine.com/docs/82379/1928261?lang=zh' },