From b96af0fdefb6bc2976d0ad36ada9cac9ee4e5b19 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 19 Aug 2025 11:55:22 +0800 Subject: [PATCH] fix(useAssistant): ensure safe access to assistant settings and update reasoning effort handling logic --- src/renderer/src/hooks/useAssistant.ts | 34 ++++++++++++++------------ 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/src/renderer/src/hooks/useAssistant.ts b/src/renderer/src/hooks/useAssistant.ts index 370635f97d..5ca700b4bd 100644 --- a/src/renderer/src/hooks/useAssistant.ts +++ b/src/renderer/src/hooks/useAssistant.ts @@ -88,31 +88,33 @@ export function useAssistant(id: string) { (settings: Partial) => { assistant?.id && dispatch(_updateAssistantSettings({ assistantId: assistant.id, settings })) }, - [assistant.id, dispatch] + [assistant?.id, dispatch] ) // 当model变化时,同步reasoning effort为模型支持的合法值 useEffect(() => { - if (isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)) { - const currentReasoningEffort = assistant.settings?.reasoning_effort - const supportedOptions = MODEL_SUPPORTED_OPTIONS[getThinkModelType(model)] - if (currentReasoningEffort && !supportedOptions.includes(currentReasoningEffort)) { - // 选项不支持时,回退到第一个支持的值 - // 注意:这里假设可用的options不会为空 - const fallbackOption = supportedOptions[0] + if (assistant?.settings) { + if (isSupportedThinkingTokenModel(model) || isSupportedReasoningEffortModel(model)) { + const currentReasoningEffort = assistant?.settings?.reasoning_effort + const supportedOptions = MODEL_SUPPORTED_OPTIONS[getThinkModelType(model)] + if (currentReasoningEffort && !supportedOptions.includes(currentReasoningEffort)) { + // 选项不支持时,回退到第一个支持的值 + // 注意:这里假设可用的options不会为空 + const fallbackOption = supportedOptions[0] + updateAssistantSettings({ + reasoning_effort: fallbackOption === 'off' ? undefined : fallbackOption, + qwenThinkMode: fallbackOption === 'off' + }) + } + } else { updateAssistantSettings({ - reasoning_effort: fallbackOption === 'off' ? undefined : fallbackOption, - qwenThinkMode: fallbackOption === 'off' + reasoning_effort: undefined, + qwenThinkMode: undefined }) } - } else { - updateAssistantSettings({ - reasoning_effort: undefined, - qwenThinkMode: undefined - }) } - }, [assistant.settings?.reasoning_effort, model, updateAssistantSettings]) + }, [assistant?.settings, model, updateAssistantSettings]) return { assistant: assistantWithModel,