From c7d2588f1a174f21eaa6a846dd60c092bec126ec Mon Sep 17 00:00:00 2001 From: LeaderOnePro Date: Sun, 28 Sep 2025 20:54:42 +0800 Subject: [PATCH] feat: add LongCat provider support (#10365) * feat: add LongCat provider support - Add LongCat to SystemProviderIds enum - Add LongCat provider logo and configuration - Configure API endpoints and URLs based on official docs - Add two models: LongCat-Flash-Chat and LongCat-Flash-Thinking - Update provider mappings for proper integration The LongCat provider uses OpenAI-compatible API format and supports up to 8K tokens output with daily free quota of 500K tokens. Signed-off-by: LeaderOnePro * feat: add migration for LongCat provider - Add migration version 158 for LongCat provider - Ensure existing users get LongCat provider on app update - Follow standard migration pattern for simple provider additions Signed-off-by: LeaderOnePro --------- Signed-off-by: LeaderOnePro --- .../src/assets/images/providers/longcat.png | Bin 0 -> 1658 bytes src/renderer/src/config/models/default.ts | 14 ++++++++++ src/renderer/src/config/providers.ts | 25 +++++++++++++++++- src/renderer/src/store/migrate.ts | 1 + src/renderer/src/types/index.ts | 3 ++- 5 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/renderer/src/assets/images/providers/longcat.png diff --git a/src/renderer/src/assets/images/providers/longcat.png b/src/renderer/src/assets/images/providers/longcat.png new file mode 100644 index 0000000000000000000000000000000000000000..146cf3ea7a9a1ae05038cf180f5e6d278fb11619 GIT binary patch literal 1658 zcmV-=28H>FP)Px#1am@3R0s$N2z&@+hyVZvBuPX;RCt{2o560|Mi7SoSt@|llXB?U)J^uK4tfm` z`UyfO%DM6rBz}TePY~w`K49wotRdCiy+9tMZp_R0wx(d#anOgE7 zQ0y|6bqKeTI3!g|gw0M^kKb=9tivR3)K%>*41`;RHTEx?{h`g64j!l?i$-rq1)o~U zi;n%c`AEDjhsbu^nr%Z0g6CkiX&I8D-tOm@&(^W!S@t@+fFi;(+wtu^kU6q$3xJtA zuHNYAb$1XV+l9{RD=Xf z*4({;9&7;(pw=OU*Vu$`i=*msQ@W^$J&+J=!29lv5|UEAx~hF4RZC_$?8dVhQjf%8 zEEh0X@BH_mAo+e!ETCcfHs^#j_Q7PGtXsnvLh}KEPtDuNw`QU_a8}tkGc>;*ZTBDF zw!LZ}Gcx6*O`&l#YW7d&f9_nhzrb(`kZxy09>_|tV<((1{&}(8KPF9208S-i%HWhW z_7}yQUS7VJ5+ccnvJjT+y>f2)qWR&R^<*<4%@}^wlP9^}L*@cX(>j@eqWO=~ysMYZ zK{^UQ91zeIja`Js(J1Wir_I52-p33!_dsD+yl9ZPnahd;-G-WlI(BKnevktv(a+spY~^2k>*|r;Mz9 zT{>vm99$EzQALPAg{yI4CSqEB))V^G#4d*)0sNJ@R#xQA+HV8+EFO8H-a~Q6z_Npa zv~HybPSZCE%lqfl_FxWx$K@uQ>EojL;T&dR+{k;(I;S9nRb+A_L{3@9I-az-^l@rp zRFu}O6wow%;|V^R*sY*44+I4HaY0(Q+5-)rP%%he8M&ic57cyJWJlOrRi(}qaF)Ut z-k4L~Td4;M?!B>vTJCC`E1;zM?3njfD&UQvxUfo-{1D#A;h|hA4PnzF?u;n!;ynSw zByLEazB!)2uhavD_ntcs-V;!gz5&3Nn-^8;fj{6;D6!8=>+T6CKRi?u-9&~;Jy3(C z;z!vF_XHFk9s(3^3vXhPrLzlq?{V z*4+x|07*qoM6N<$ Ef?2mPg#Z8m literal 0 HcmV?d00001 diff --git a/src/renderer/src/config/models/default.ts b/src/renderer/src/config/models/default.ts index 9fdced6a6a..1858675ed8 100644 --- a/src/renderer/src/config/models/default.ts +++ b/src/renderer/src/config/models/default.ts @@ -1804,5 +1804,19 @@ export const SYSTEM_MODELS: Record = provider: 'aionly', group: 'gemini' } + ], + longcat: [ + { + id: 'LongCat-Flash-Chat', + name: 'LongCat Flash Chat', + provider: 'longcat', + group: 'LongCat' + }, + { + id: 'LongCat-Flash-Thinking', + name: 'LongCat Flash Thinking', + provider: 'longcat', + group: 'LongCat' + } ] } diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index 543422d212..64e78e847a 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -27,6 +27,7 @@ import InfiniProviderLogo from '@renderer/assets/images/providers/infini.png' import JinaProviderLogo from '@renderer/assets/images/providers/jina.png' import LanyunProviderLogo from '@renderer/assets/images/providers/lanyun.png' import LMStudioProviderLogo from '@renderer/assets/images/providers/lmstudio.png' +import LongCatProviderLogo from '@renderer/assets/images/providers/longcat.png' import MinimaxProviderLogo from '@renderer/assets/images/providers/minimax.png' import MistralProviderLogo from '@renderer/assets/images/providers/mistral.png' import ModelScopeProviderLogo from '@renderer/assets/images/providers/modelscope.png' @@ -622,6 +623,16 @@ export const SYSTEM_PROVIDERS_CONFIG: Record = models: SYSTEM_MODELS['poe'], isSystem: true, enabled: false + }, + longcat: { + id: 'longcat', + name: 'LongCat', + type: 'openai', + apiKey: '', + apiHost: 'https://api.longcat.chat/openai', + models: SYSTEM_MODELS.longcat, + isSystem: true, + enabled: false } } as const @@ -684,7 +695,8 @@ export const PROVIDER_LOGO_MAP: AtLeast = { 'new-api': NewAPIProviderLogo, 'aws-bedrock': AwsProviderLogo, poe: 'poe', // use svg icon component - aionly: AiOnlyProviderLogo + aionly: AiOnlyProviderLogo, + longcat: LongCatProviderLogo } as const export function getProviderLogo(providerId: string) { @@ -1290,6 +1302,17 @@ export const PROVIDER_URLS: Record = { docs: 'https://www.aiionly.com/document', models: 'https://www.aiionly.com' } + }, + longcat: { + api: { + url: 'https://api.longcat.chat/openai' + }, + websites: { + official: 'https://longcat.chat', + apiKey: 'https://longcat.chat/platform/api_keys', + docs: 'https://longcat.chat/platform/docs/zh/', + models: 'https://longcat.chat/platform/docs/zh/APIDocs.html' + } } } diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index f10fc623da..1c954ba27e 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -2543,6 +2543,7 @@ const migrateConfig = { '158': (state: RootState) => { try { state.llm.providers = state.llm.providers.filter((provider) => provider.id !== 'cherryin') + addProvider(state, 'longcat') return state } catch (error) { logger.error('migrate 158 error', error as Error) diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 33abec0853..2b9271d548 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -322,7 +322,8 @@ export const SystemProviderIds = { voyageai: 'voyageai', 'aws-bedrock': 'aws-bedrock', poe: 'poe', - aionly: 'aionly' + aionly: 'aionly', + longcat: 'longcat' } as const export type SystemProviderId = keyof typeof SystemProviderIds