From d7a02a10c269e43566e2cf6364029b3be90ca506 Mon Sep 17 00:00:00 2001 From: digua Date: Thu, 9 Apr 2026 20:31:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=AC=AC=E4=B8=89=E6=96=B9/=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E6=9C=8D=E5=8A=A1=E7=BC=96=E8=BE=91=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E4=B8=A2=E5=A4=B1=E5=A4=9A=E4=B8=AA=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- electron/main/ai/llm/model-types.ts | 1 + electron/main/ai/llm/types.ts | 1 + electron/main/ipc/ai.ts | 2 ++ electron/preload/apis/ai.ts | 3 +++ src/pages/settings/components/AI/useAIConfigForm.ts | 12 +++++++++++- 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/electron/main/ai/llm/model-types.ts b/electron/main/ai/llm/model-types.ts index a9dc5f3b..a3d37bc9 100644 --- a/electron/main/ai/llm/model-types.ts +++ b/electron/main/ai/llm/model-types.ts @@ -58,6 +58,7 @@ export interface LLMConnectionConfig { export interface LLMConnectionConfigCompat extends LLMConnectionConfig { disableThinking?: boolean isReasoningModel?: boolean + customModels?: Array<{ id: string; name: string }> } // ==================== 用途选择(预留) ==================== diff --git a/electron/main/ai/llm/types.ts b/electron/main/ai/llm/types.ts index 9d591640..f75e6529 100644 --- a/electron/main/ai/llm/types.ts +++ b/electron/main/ai/llm/types.ts @@ -42,6 +42,7 @@ export interface AIServiceConfig { maxTokens?: number disableThinking?: boolean isReasoningModel?: boolean + customModels?: Array<{ id: string; name: string }> createdAt: number updatedAt: number } diff --git a/electron/main/ipc/ai.ts b/electron/main/ipc/ai.ts index 74e05a29..bec51ee3 100644 --- a/electron/main/ipc/ai.ts +++ b/electron/main/ipc/ai.ts @@ -403,6 +403,7 @@ export function registerAIHandlers({ win }: IpcContext): void { model?: string baseUrl?: string maxTokens?: number + customModels?: Array<{ id: string; name: string }> } ) => { try { @@ -439,6 +440,7 @@ export function registerAIHandlers({ win }: IpcContext): void { model?: string baseUrl?: string maxTokens?: number + customModels?: Array<{ id: string; name: string }> } ) => { try { diff --git a/electron/preload/apis/ai.ts b/electron/preload/apis/ai.ts index 1c0d9f64..30e87d33 100644 --- a/electron/preload/apis/ai.ts +++ b/electron/preload/apis/ai.ts @@ -172,6 +172,7 @@ export interface AIServiceConfigDisplay { maxTokens?: number disableThinking?: boolean isReasoningModel?: boolean + customModels?: Array<{ id: string; name: string }> createdAt: number updatedAt: number } @@ -608,6 +609,7 @@ export const llmApi = { maxTokens?: number disableThinking?: boolean isReasoningModel?: boolean + customModels?: Array<{ id: string; name: string }> }): Promise<{ success: boolean; config?: AIServiceConfigDisplay; error?: string }> => { return ipcRenderer.invoke('llm:addConfig', config) }, @@ -626,6 +628,7 @@ export const llmApi = { maxTokens?: number disableThinking?: boolean isReasoningModel?: boolean + customModels?: Array<{ id: string; name: string }> } ): Promise<{ success: boolean; error?: string }> => { return ipcRenderer.invoke('llm:updateConfig', id, updates) diff --git a/src/pages/settings/components/AI/useAIConfigForm.ts b/src/pages/settings/components/AI/useAIConfigForm.ts index 49e89d3c..5041ae78 100644 --- a/src/pages/settings/components/AI/useAIConfigForm.ts +++ b/src/pages/settings/components/AI/useAIConfigForm.ts @@ -15,6 +15,7 @@ export interface AIServiceConfig { baseUrl?: string disableThinking?: boolean isReasoningModel?: boolean + customModels?: Array<{ id: string; name: string }> createdAt: number updatedAt: number } @@ -188,7 +189,11 @@ export function useAIConfigForm(props: { if (isCompat) { const looksLocal = !config.apiKeySet || (config.baseUrl?.includes('localhost') ?? false) connectionMode.value = looksLocal ? 'local' : 'openai-compat' - compatModels.value = config.model ? [{ id: config.model, name: config.model }] : [] + if (config.customModels && config.customModels.length > 0) { + compatModels.value = [...config.customModels] + } else { + compatModels.value = config.model ? [{ id: config.model, name: config.model }] : [] + } } else { connectionMode.value = 'preset' compatModels.value = [] @@ -387,6 +392,9 @@ export function useAIConfigForm(props: { const finalName = generateName() const isReasoning = formData.value.isReasoningModel + const persistCustomModels = isCompatMode.value && compatModels.value.length > 0 + ? compatModels.value.map((m) => ({ id: m.id, name: m.name })) + : undefined if (props.mode.value === 'add') { const result = await window.llmApi.addConfig({ name: finalName, @@ -396,6 +404,7 @@ export function useAIConfigForm(props: { baseUrl: formData.value.baseUrl.trim() || undefined, disableThinking: isReasoning ? formData.value.disableThinking : undefined, isReasoningModel: isReasoning || undefined, + customModels: persistCustomModels, }) if (result.success) { @@ -412,6 +421,7 @@ export function useAIConfigForm(props: { baseUrl: formData.value.baseUrl.trim() || undefined, disableThinking: isReasoning ? formData.value.disableThinking : undefined, isReasoningModel: isReasoning || undefined, + customModels: persistCustomModels, } if (formData.value.apiKey.trim()) {