feat(AssistantService): introduce DEFAULT_ASSISTANT_SETTINGS for consistent assistant configuration and update migration logic for version 136

This commit is contained in:
kangfenmao 2025-08-21 10:28:34 +08:00
parent 6e9b77a97a
commit 84212d0b1d
4 changed files with 43 additions and 40 deletions

View File

@ -24,6 +24,19 @@ import { uuid } from '@renderer/utils'
const logger = loggerService.withContext('AssistantService') const logger = loggerService.withContext('AssistantService')
export const DEFAULT_ASSISTANT_SETTINGS: AssistantSettings = {
temperature: DEFAULT_TEMPERATURE,
enableTemperature: true,
contextCount: DEFAULT_CONTEXTCOUNT,
enableMaxTokens: false,
maxTokens: 0,
streamOutput: true,
topP: 1,
enableTopP: true,
toolUseMode: 'prompt',
customParameters: []
}
export function getDefaultAssistant(): Assistant { export function getDefaultAssistant(): Assistant {
return { return {
id: 'default', id: 'default',
@ -34,18 +47,7 @@ export function getDefaultAssistant(): Assistant {
messages: [], messages: [],
type: 'assistant', type: 'assistant',
regularPhrases: [], // Added regularPhrases regularPhrases: [], // Added regularPhrases
settings: { settings: DEFAULT_ASSISTANT_SETTINGS
temperature: DEFAULT_TEMPERATURE,
enableTemperature: true,
contextCount: DEFAULT_CONTEXTCOUNT,
enableMaxTokens: false,
maxTokens: 0,
streamOutput: true,
topP: 1,
enableTopP: true,
toolUseMode: 'prompt',
customParameters: []
}
} }
} }
@ -171,18 +173,7 @@ export async function createAssistantFromAgent(agent: Agent) {
model: agent.defaultModel, model: agent.defaultModel,
type: 'assistant', type: 'assistant',
regularPhrases: agent.regularPhrases || [], // Ensured regularPhrases regularPhrases: agent.regularPhrases || [], // Ensured regularPhrases
settings: agent.settings || { settings: agent.settings || DEFAULT_ASSISTANT_SETTINGS
temperature: DEFAULT_TEMPERATURE,
enableTemperature: true,
contextCount: DEFAULT_CONTEXTCOUNT,
enableMaxTokens: false,
maxTokens: 0,
streamOutput: true,
topP: 1,
enableTopP: true,
toolUseMode: 'prompt',
customParameters: []
}
} }
store.dispatch(addAssistant(assistant)) store.dispatch(addAssistant(assistant))

View File

@ -62,7 +62,7 @@ const persistedReducer = persistReducer(
{ {
key: 'cherry-studio', key: 'cherry-studio',
storage, storage,
version: 135, version: 136,
blacklist: ['runtime', 'messages', 'messageBlocks', 'tabs'], blacklist: ['runtime', 'messages', 'messageBlocks', 'tabs'],
migrate migrate
}, },

View File

@ -4,15 +4,16 @@ import { DEFAULT_CONTEXTCOUNT, DEFAULT_TEMPERATURE, isMac } from '@renderer/conf
import { DEFAULT_MIN_APPS } from '@renderer/config/minapps' import { DEFAULT_MIN_APPS } from '@renderer/config/minapps'
import { isFunctionCallingModel, isNotSupportedTextDelta, SYSTEM_MODELS } from '@renderer/config/models' import { isFunctionCallingModel, isNotSupportedTextDelta, SYSTEM_MODELS } from '@renderer/config/models'
import { TRANSLATE_PROMPT } from '@renderer/config/prompts' import { TRANSLATE_PROMPT } from '@renderer/config/prompts'
import { DEFAULT_SIDEBAR_ICONS } from '@renderer/config/sidebar'
import { import {
isSupportArrayContentProvider, isSupportArrayContentProvider,
isSupportDeveloperRoleProvider, isSupportDeveloperRoleProvider,
isSupportStreamOptionsProvider, isSupportStreamOptionsProvider,
SYSTEM_PROVIDERS SYSTEM_PROVIDERS
} from '@renderer/config/providers' } from '@renderer/config/providers'
import { DEFAULT_SIDEBAR_ICONS } from '@renderer/config/sidebar'
import db from '@renderer/databases' import db from '@renderer/databases'
import i18n from '@renderer/i18n' import i18n from '@renderer/i18n'
import { DEFAULT_ASSISTANT_SETTINGS } from '@renderer/services/AssistantService'
import { import {
Assistant, Assistant,
isSystemProvider, isSystemProvider,
@ -2150,24 +2151,27 @@ const migrateConfig = {
'135': (state: RootState) => { '135': (state: RootState) => {
try { try {
if (!state.assistants.defaultAssistant.settings) { if (!state.assistants.defaultAssistant.settings) {
state.assistants.defaultAssistant.settings = { state.assistants.defaultAssistant.settings = DEFAULT_ASSISTANT_SETTINGS
temperature: DEFAULT_TEMPERATURE,
enableTemperature: true,
contextCount: DEFAULT_CONTEXTCOUNT,
enableMaxTokens: false,
maxTokens: 0,
streamOutput: true,
topP: 1,
enableTopP: true,
toolUseMode: 'prompt',
customParameters: []
}
} else if (!state.assistants.defaultAssistant.settings.toolUseMode) { } else if (!state.assistants.defaultAssistant.settings.toolUseMode) {
state.assistants.defaultAssistant.settings.toolUseMode = 'prompt' state.assistants.defaultAssistant.settings.toolUseMode = 'prompt'
} }
return state return state
} catch (error) { } catch (error) {
logger.error('migrate 134 error', error as Error) logger.error('migrate 135 error', error as Error)
return state
}
},
'136': (state: RootState) => {
try {
state.settings.sidebarIcons.visible = [...new Set(state.settings.sidebarIcons.visible)].filter((icon) =>
DEFAULT_SIDEBAR_ICONS.includes(icon)
)
state.settings.sidebarIcons.disabled = [...new Set(state.settings.sidebarIcons.disabled)].filter((icon) =>
DEFAULT_SIDEBAR_ICONS.includes(icon)
)
return state
} catch (error) {
logger.error('migrate 136 error', error as Error)
return state return state
} }
} }

View File

@ -692,7 +692,15 @@ export const isAutoDetectionMethod = (method: string): method is AutoDetectionMe
return Object.hasOwn(AutoDetectionMethods, method) return Object.hasOwn(AutoDetectionMethods, method)
} }
export type SidebarIcon = 'assistants' | 'agents' | 'paintings' | 'translate' | 'minapp' | 'knowledge' | 'files' | 'code_tools' export type SidebarIcon =
| 'assistants'
| 'agents'
| 'paintings'
| 'translate'
| 'minapp'
| 'knowledge'
| 'files'
| 'code_tools'
export type ExternalToolResult = { export type ExternalToolResult = {
mcpTools?: MCPTool[] mcpTools?: MCPTool[]