diff --git a/src/models/Option.ts b/src/models/Option.ts index 2ffa7ac..463aa9d 100644 --- a/src/models/Option.ts +++ b/src/models/Option.ts @@ -5,6 +5,11 @@ export const AI_PROVIDER_BASE_URLS = { deepseek: "https://api.deepseek.com/v1", } as const satisfies Record<"openai" | "deepseek", AbsoluteUrl>; +export const AI_PROVIDER_DEFAULT_MODELS: Record<"openai" | "deepseek", string> = { + openai: "gpt-4o-mini", + deepseek: "deepseek-v4-flash", +}; + export const OPTION_STORAGE_KEY = "brainrest_option"; export type ThemePreference = "system" | "light" | "dark"; diff --git a/src/options/Onboarding.tsx b/src/options/Onboarding.tsx index 6f629ce..81e75fa 100644 --- a/src/options/Onboarding.tsx +++ b/src/options/Onboarding.tsx @@ -6,6 +6,7 @@ import { PRODUCT_BOUNDARY_COPY } from "../ui/bridge"; import { ensureAiOriginPermission } from "./ai-origin-permission"; import { getProviderDefaultBaseUrl, + getProviderDefaultModel, joinProvider, PROVIDER_LABELS, type ProviderChoice, @@ -105,6 +106,10 @@ export default function Onboarding({ onDone }: { onDone: () => void }) { if (defaultBaseUrl) { setBaseUrl(defaultBaseUrl); } + const defaultModel = getProviderDefaultModel(choice); + if (defaultModel) { + setModel(defaultModel); + } }; const isLast = step === STEP_TITLES.length - 1; diff --git a/src/options/SettingsPage.tsx b/src/options/SettingsPage.tsx index de1156d..ae835eb 100644 --- a/src/options/SettingsPage.tsx +++ b/src/options/SettingsPage.tsx @@ -24,6 +24,7 @@ import { createLogger } from "../utils/logger"; import { ensureAiOriginPermission } from "./ai-origin-permission"; import { getProviderDefaultBaseUrl, + getProviderDefaultModel, joinProvider, PROVIDER_LABELS, type ProviderChoice, @@ -162,6 +163,10 @@ export default function SettingsPage({ onOnboardingReset }: { onOnboardingReset: if (defaultBaseUrl) { setBaseUrl(defaultBaseUrl); } + const defaultModel = getProviderDefaultModel(choice); + if (defaultModel) { + setModel(defaultModel); + } }; const changeThemePreference = async (preference: ThemePreference): Promise => { diff --git a/src/options/provider.ts b/src/options/provider.ts index 7bd8987..99f1dda 100644 --- a/src/options/provider.ts +++ b/src/options/provider.ts @@ -1,4 +1,4 @@ -import { AI_PROVIDER_BASE_URLS, type Option } from "../models/Option"; +import { AI_PROVIDER_BASE_URLS, AI_PROVIDER_DEFAULT_MODELS, type Option } from "../models/Option"; import type { AbsoluteUrl } from "../models/types"; /** provider 下拉项:openai / deepseek / 自定义绝对 URL */ @@ -28,6 +28,10 @@ export function getProviderDefaultBaseUrl(choice: ProviderChoice): AbsoluteUrl | return choice === "custom" ? undefined : AI_PROVIDER_BASE_URLS[choice]; } +export function getProviderDefaultModel(choice: ProviderChoice): string | undefined { + return choice === "custom" ? undefined : AI_PROVIDER_DEFAULT_MODELS[choice]; +} + export interface AiProviderConfig { provider: Option["aiProvider"]; baseUrl: AbsoluteUrl;