From e652c1d783cd4d5ecb86bb298e08df5b2eb72754 Mon Sep 17 00:00:00 2001 From: Phantom <59059173+EurFelux@users.noreply.github.com> Date: Sun, 17 Aug 2025 19:48:41 +0800 Subject: [PATCH] fix: set developer role and service tier to default not supported (#9245) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor(api): 将 isNotSupportDeveloperRole 替换为 isSupportDeveloperRole 重构开发者角色支持逻辑,使用正向命名的 isSupportDeveloperRole 替代反向命名的 isNotSupportDeveloperRole 更新相关迁移逻辑和配置检查逻辑 * refactor(api): 替换 isNotSupportServiceTier 为 isSupportServiceTier 将服务层级支持的否定式参数改为肯定式参数,修改默认行为为不支持 --- src/renderer/src/config/providers.ts | 17 ++++++++++++----- .../ApiOptionsSettings/ApiOptionsSettings.tsx | 8 ++++---- src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/migrate.ts | 17 +++++++++++++++++ src/renderer/src/types/index.ts | 12 ++++++++++-- 5 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index f4e31e891f..6ee1f675b8 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -52,7 +52,14 @@ import VoyageAIProviderLogo from '@renderer/assets/images/providers/voyageai.png import XirangProviderLogo from '@renderer/assets/images/providers/xirang.png' import ZeroOneProviderLogo from '@renderer/assets/images/providers/zero-one.png' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' -import { AtLeast, OpenAIServiceTiers, Provider, SystemProvider, SystemProviderId } from '@renderer/types' +import { + AtLeast, + isSystemProvider, + OpenAIServiceTiers, + Provider, + SystemProvider, + SystemProviderId +} from '@renderer/types' import { TOKENFLUX_HOST } from './constant' import { SYSTEM_MODELS } from './models' @@ -1253,8 +1260,8 @@ const NOT_SUPPORT_DEVELOPER_ROLE_PROVIDERS = ['poe', 'qiniu'] as const satisfies */ export const isSupportDeveloperRoleProvider = (provider: Provider) => { return ( - provider.apiOptions?.isNotSupportDeveloperRole !== true && - !NOT_SUPPORT_DEVELOPER_ROLE_PROVIDERS.some((pid) => pid === provider.id) + provider.apiOptions?.isSupportDeveloperRole === true || + (isSystemProvider(provider) && !NOT_SUPPORT_DEVELOPER_ROLE_PROVIDERS.some((pid) => pid === provider.id)) ) } @@ -1289,7 +1296,7 @@ const NOT_SUPPORT_SERVICE_TIER_PROVIDERS = ['github', 'copilot'] as const satisf */ export const isSupportServiceTierProvider = (provider: Provider) => { return ( - provider.apiOptions?.isNotSupportServiceTier !== true && - !NOT_SUPPORT_SERVICE_TIER_PROVIDERS.some((pid) => pid === provider.id) + provider.apiOptions?.isSupportServiceTier === true || + (isSystemProvider(provider) && !NOT_SUPPORT_SERVICE_TIER_PROVIDERS.some((pid) => pid === provider.id)) ) } diff --git a/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx b/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx index d719c861a8..0df268980e 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ApiOptionsSettings/ApiOptionsSettings.tsx @@ -39,10 +39,10 @@ const ApiOptionsSettings = ({ providerId }: Props) => { tip: t('settings.provider.api.options.developer_role.help'), onChange: (checked: boolean) => { updateProviderTransition({ - apiOptions: { ...provider.apiOptions, isNotSupportDeveloperRole: !checked } + apiOptions: { ...provider.apiOptions, isSupportDeveloperRole: checked } }) }, - checked: !provider.apiOptions?.isNotSupportDeveloperRole + checked: !!provider.apiOptions?.isSupportDeveloperRole }, { key: 'openai_stream_options', @@ -61,10 +61,10 @@ const ApiOptionsSettings = ({ providerId }: Props) => { tip: t('settings.provider.api.options.service_tier.help'), onChange: (checked: boolean) => { updateProviderTransition({ - apiOptions: { ...provider.apiOptions, isNotSupportServiceTier: !checked } + apiOptions: { ...provider.apiOptions, isSupportServiceTier: checked } }) }, - checked: !provider.apiOptions?.isNotSupportServiceTier + checked: !!provider.apiOptions?.isSupportServiceTier }, { key: 'openai_enable_thinking', diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index 7cf350dafa..0f8e88cd3f 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -62,7 +62,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 131, + version: 132, blacklist: ['runtime', 'messages', 'messageBlocks', 'tabs'], migrate }, diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 9c9133168a..6e351a3e4d 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -2103,6 +2103,23 @@ const migrateConfig = { logger.error('migrate 131 error', error as Error) return state } + }, + '132': (state: RootState) => { + try { + state.llm.providers.forEach((p) => { + // 如果原本是undefined则不做改动,静默从默认支持改为默认不支持 + if (p.apiOptions?.isNotSupportDeveloperRole) { + p.apiOptions.isSupportDeveloperRole = !p.apiOptions.isNotSupportDeveloperRole + } + if (p.apiOptions?.isNotSupportServiceTier) { + p.apiOptions.isSupportServiceTier = !p.apiOptions.isNotSupportServiceTier + } + }) + return state + } catch (error) { + logger.error('migrate 132 error', error as Error) + return state + } } } diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index f14dbd1d25..464701929e 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -192,10 +192,18 @@ export type ProviderApiOptions = { isNotSupportArrayContent?: boolean /** 是否不支持 stream_options 参数 */ isNotSupportStreamOptions?: boolean - /** 是否不支持 message 的 role 为 developer */ + /** + * @deprecated + * 是否不支持 message 的 role 为 developer */ isNotSupportDeveloperRole?: boolean - /** 是否不支持 service_tier 参数. Only for OpenAI Models. */ + /* 是否支持 message 的 role 为 developer */ + isSupportDeveloperRole?: boolean + /** + * @deprecated + * 是否不支持 service_tier 参数. Only for OpenAI Models. */ isNotSupportServiceTier?: boolean + /* 是否支持 service_tier 参数. Only for OpenAI Models. */ + isSupportServiceTier?: boolean /** 是否不支持 enable_thinking 参数 */ isNotSupportEnableThinking?: boolean }