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')
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 {
return {
id: 'default',
@ -34,18 +47,7 @@ export function getDefaultAssistant(): Assistant {
messages: [],
type: 'assistant',
regularPhrases: [], // Added regularPhrases
settings: {
temperature: DEFAULT_TEMPERATURE,
enableTemperature: true,
contextCount: DEFAULT_CONTEXTCOUNT,
enableMaxTokens: false,
maxTokens: 0,
streamOutput: true,
topP: 1,
enableTopP: true,
toolUseMode: 'prompt',
customParameters: []
}
settings: DEFAULT_ASSISTANT_SETTINGS
}
}
@ -171,18 +173,7 @@ export async function createAssistantFromAgent(agent: Agent) {
model: agent.defaultModel,
type: 'assistant',
regularPhrases: agent.regularPhrases || [], // Ensured regularPhrases
settings: agent.settings || {
temperature: DEFAULT_TEMPERATURE,
enableTemperature: true,
contextCount: DEFAULT_CONTEXTCOUNT,
enableMaxTokens: false,
maxTokens: 0,
streamOutput: true,
topP: 1,
enableTopP: true,
toolUseMode: 'prompt',
customParameters: []
}
settings: agent.settings || DEFAULT_ASSISTANT_SETTINGS
}
store.dispatch(addAssistant(assistant))

View File

@ -62,7 +62,7 @@ const persistedReducer = persistReducer(
{
key: 'cherry-studio',
storage,
version: 135,
version: 136,
blacklist: ['runtime', 'messages', 'messageBlocks', 'tabs'],
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 { isFunctionCallingModel, isNotSupportedTextDelta, SYSTEM_MODELS } from '@renderer/config/models'
import { TRANSLATE_PROMPT } from '@renderer/config/prompts'
import { DEFAULT_SIDEBAR_ICONS } from '@renderer/config/sidebar'
import {
isSupportArrayContentProvider,
isSupportDeveloperRoleProvider,
isSupportStreamOptionsProvider,
SYSTEM_PROVIDERS
} from '@renderer/config/providers'
import { DEFAULT_SIDEBAR_ICONS } from '@renderer/config/sidebar'
import db from '@renderer/databases'
import i18n from '@renderer/i18n'
import { DEFAULT_ASSISTANT_SETTINGS } from '@renderer/services/AssistantService'
import {
Assistant,
isSystemProvider,
@ -2150,24 +2151,27 @@ const migrateConfig = {
'135': (state: RootState) => {
try {
if (!state.assistants.defaultAssistant.settings) {
state.assistants.defaultAssistant.settings = {
temperature: DEFAULT_TEMPERATURE,
enableTemperature: true,
contextCount: DEFAULT_CONTEXTCOUNT,
enableMaxTokens: false,
maxTokens: 0,
streamOutput: true,
topP: 1,
enableTopP: true,
toolUseMode: 'prompt',
customParameters: []
}
state.assistants.defaultAssistant.settings = DEFAULT_ASSISTANT_SETTINGS
} else if (!state.assistants.defaultAssistant.settings.toolUseMode) {
state.assistants.defaultAssistant.settings.toolUseMode = 'prompt'
}
return state
} 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
}
}

View File

@ -692,7 +692,15 @@ export const isAutoDetectionMethod = (method: string): method is AutoDetectionMe
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 = {
mcpTools?: MCPTool[]