From 782f8496e0c2568da69a18b4dade35fd9cbfaf09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=A2=E5=A5=8B=E7=8C=AB?= Date: Wed, 17 Dec 2025 15:37:11 +0800 Subject: [PATCH] feat: add tool use mode setting to default assistant settings (#11943) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add tool use mode setting to default assistant settings - Add toolUseMode selector (prompt/function) to DefaultAssistantSettings - Add dividers between model parameter sections for better UI - Reduce slider margins for compact layout - Add migration (v185) to reset toolUseMode to 'function' for existing users 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 * fix: reset toolUseMode for all assistants during migration - Update migration logic to reset toolUseMode to 'function' for all assistants with a 'prompt' setting. - Ensure compatibility with function calling models by checking model type before resetting. --------- Co-authored-by: Claude Opus 4.5 --- .../DefaultAssistantSettings.tsx | 44 +++++++++++++++---- src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/migrate.ts | 21 +++++++++ 3 files changed, 57 insertions(+), 10 deletions(-) diff --git a/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx b/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx index 2b1bed5ebe..65be642adc 100644 --- a/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx +++ b/src/renderer/src/pages/settings/ModelSettings/DefaultAssistantSettings.tsx @@ -2,13 +2,14 @@ import { CloseCircleFilled, QuestionCircleOutlined } from '@ant-design/icons' import EmojiPicker from '@renderer/components/EmojiPicker' import { ResetIcon } from '@renderer/components/Icons' import { HStack } from '@renderer/components/Layout' +import Selector from '@renderer/components/Selector' import { TopView } from '@renderer/components/TopView' import { DEFAULT_CONTEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE } from '@renderer/config/constant' import { useTheme } from '@renderer/context/ThemeProvider' import { useDefaultAssistant } from '@renderer/hooks/useAssistant' import type { AssistantSettings as AssistantSettingsType } from '@renderer/types' import { getLeadingEmoji, modalConfirm } from '@renderer/utils' -import { Button, Col, Flex, Input, InputNumber, Modal, Popover, Row, Slider, Switch, Tooltip } from 'antd' +import { Button, Col, Divider, Flex, Input, InputNumber, Modal, Popover, Row, Slider, Switch, Tooltip } from 'antd' import TextArea from 'antd/es/input/TextArea' import type { Dispatch, FC, SetStateAction } from 'react' import { useState } from 'react' @@ -26,6 +27,9 @@ const AssistantSettings: FC = () => { const [maxTokens, setMaxTokens] = useState(defaultAssistant?.settings?.maxTokens ?? 0) const [topP, setTopP] = useState(defaultAssistant.settings?.topP ?? 1) const [enableTopP, setEnableTopP] = useState(defaultAssistant.settings?.enableTopP ?? false) + const [toolUseMode, setToolUseMode] = useState( + defaultAssistant.settings?.toolUseMode ?? 'function' + ) const [emoji, setEmoji] = useState(defaultAssistant.emoji || getLeadingEmoji(defaultAssistant.name) || '') const [name, setName] = useState( defaultAssistant.name.replace(getLeadingEmoji(defaultAssistant.name) || '', '').trim() @@ -46,7 +50,8 @@ const AssistantSettings: FC = () => { maxTokens: settings.maxTokens ?? maxTokens, streamOutput: settings.streamOutput ?? true, topP: settings.topP ?? topP, - enableTopP: settings.enableTopP ?? enableTopP + enableTopP: settings.enableTopP ?? enableTopP, + toolUseMode: settings.toolUseMode ?? toolUseMode } }) } @@ -73,6 +78,7 @@ const AssistantSettings: FC = () => { setMaxTokens(0) setTopP(1) setEnableTopP(false) + setToolUseMode('function') updateDefaultAssistant({ ...defaultAssistant, settings: { @@ -84,7 +90,8 @@ const AssistantSettings: FC = () => { maxTokens: DEFAULT_MAX_TOKENS, streamOutput: true, topP: 1, - enableTopP: false + enableTopP: false, + toolUseMode: 'function' } }) } @@ -107,10 +114,9 @@ const AssistantSettings: FC = () => { return ( - {t('common.name')} - + } arrow trigger="click"> @@ -161,6 +167,7 @@ const AssistantSettings: FC = () => {