refactor(models): migrate to granular model configuration architecture
Upgrade Claude model configuration from dual-key to quad-key system for better model tier differentiation. **Breaking Changes:** - Replace `ANTHROPIC_SMALL_FAST_MODEL` with three granular keys: - `ANTHROPIC_DEFAULT_HAIKU_MODEL` - `ANTHROPIC_DEFAULT_SONNET_MODEL` - `ANTHROPIC_DEFAULT_OPUS_MODEL` **Backend (Rust):** - Add `normalize_claude_models_in_value()` for automatic migration - Implement fallback chain: `DEFAULT_* || SMALL_FAST || MODEL` - Auto-cleanup: remove legacy `SMALL_FAST` key after normalization - Apply normalization across 6 critical paths: - Add/update provider - Read from live config - Write to live config - Refresh config snapshot **Frontend (React):** - Expand UI from 2 to 4 model input fields - Implement smart fallback in `useModelState` hook - Update `useKimiModelSelector` for Kimi model picker - Add i18n keys for Haiku/Sonnet/Opus labels (zh/en) **Configuration:** - Update all 7 provider presets to new format - DeepSeek/Qwen/Moonshot: use same model for all tiers - Zhipu: preserve tier differentiation (glm-4.5-air for Haiku) **Backward Compatibility:** - Old configs auto-upgrade on first read/write - Fallback chain ensures graceful degradation - No manual migration required Closes #[issue-number]
This commit is contained in:
@@ -140,12 +140,17 @@ export function ProviderForm({
|
||||
},
|
||||
});
|
||||
|
||||
// 使用 Model hook
|
||||
const { claudeModel, claudeSmallFastModel, handleModelChange } =
|
||||
useModelState({
|
||||
settingsConfig: form.watch("settingsConfig"),
|
||||
onConfigChange: (config) => form.setValue("settingsConfig", config),
|
||||
});
|
||||
// 使用 Model hook(新:主模型 + Haiku/Sonnet/Opus 默认模型)
|
||||
const {
|
||||
claudeModel,
|
||||
defaultHaikuModel,
|
||||
defaultSonnetModel,
|
||||
defaultOpusModel,
|
||||
handleModelChange,
|
||||
} = useModelState({
|
||||
settingsConfig: form.watch("settingsConfig"),
|
||||
onConfigChange: (config) => form.setValue("settingsConfig", config),
|
||||
});
|
||||
|
||||
// 使用 Codex 配置 hook (仅 Codex 模式)
|
||||
const {
|
||||
@@ -218,7 +223,9 @@ export function ProviderForm({
|
||||
const {
|
||||
shouldShow: shouldShowKimiSelector,
|
||||
kimiAnthropicModel,
|
||||
kimiAnthropicSmallFastModel,
|
||||
kimiDefaultHaikuModel,
|
||||
kimiDefaultSonnetModel,
|
||||
kimiDefaultOpusModel,
|
||||
handleKimiModelChange,
|
||||
} = useKimiModelSelector({
|
||||
initialData,
|
||||
@@ -500,10 +507,14 @@ export function ProviderForm({
|
||||
category !== "official" && !shouldShowKimiSelector
|
||||
}
|
||||
claudeModel={claudeModel}
|
||||
claudeSmallFastModel={claudeSmallFastModel}
|
||||
defaultHaikuModel={defaultHaikuModel}
|
||||
defaultSonnetModel={defaultSonnetModel}
|
||||
defaultOpusModel={defaultOpusModel}
|
||||
onModelChange={handleModelChange}
|
||||
kimiAnthropicModel={kimiAnthropicModel}
|
||||
kimiAnthropicSmallFastModel={kimiAnthropicSmallFastModel}
|
||||
kimiDefaultHaikuModel={kimiDefaultHaikuModel}
|
||||
kimiDefaultSonnetModel={kimiDefaultSonnetModel}
|
||||
kimiDefaultOpusModel={kimiDefaultOpusModel}
|
||||
onKimiModelChange={handleKimiModelChange}
|
||||
speedTestEndpoints={speedTestEndpoints}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user