Update default models and pricing across presets

Bump default model names project-wide: gpt-5.4 -> gpt-5.5,
gemini-3.x -> gemini-3.5-flash, glm-5 -> glm-5.1, and
grok-code-fast-1 -> grok-build-0.1 across all provider presets
(claude, codex, gemini, hermes, openclaw, opencode, universal),
Gemini config, and stream check defaults.

Pricing:
- Seed gemini-3.5-flash, gemini-3.1-flash-lite, step-3.5-flash-2603,
  doubao-seed-2.0-code, mimo-v2.5(/pro), qwen3-coder-480b, grok-build-0.1.
- Correct deepseek-v4-flash/pro, glm-5/5.1, grok pricing.
- Add repair_current_model_pricing: idempotent pass that fixes only
  rows still equal to the outdated built-in values, preserving any
  user-customized prices (seed uses INSERT OR IGNORE and cannot update
  existing rows).

Fixes from review:
- opencode: drop duplicate gemini-3.5-flash variant (unreachable via
  .find), keep the entry with the full minimal/low/medium/high set.
- Align stale display names/costs to gemini-3.5-flash (hermes, openclaw,
  opencode); openclaw cost -> {1.5, 9, 0.15} to match seed.
- i18n (zh/en/ja/zh-TW): refresh OMO category tooltips for new model
  names; fix writing tooltip to Kimi K2.5 to match its recommended.

Update tests accordingly and add a regression test asserting unique
model ids in the Google opencode preset variants.
This commit is contained in:
Jason
2026-05-29 15:54:03 +08:00
parent 2b6ede1431
commit 3a15420770
27 changed files with 477 additions and 256 deletions
@@ -135,7 +135,7 @@ export const GeminiCommonConfigModal: React.FC<
value={draftValue}
onChange={setDraftValue}
placeholder={`{
"GEMINI_MODEL": "gemini-3-pro-preview"
"GEMINI_MODEL": "gemini-3.5-flash"
}`}
darkMode={isDarkMode}
rows={16}
@@ -97,7 +97,7 @@ export const GeminiEnvSection: React.FC<GeminiEnvSectionProps> = ({
onChange={handleChange}
placeholder={`GOOGLE_GEMINI_BASE_URL=https://your-api-endpoint.com/
GEMINI_API_KEY=sk-your-api-key-here
GEMINI_MODEL=gemini-3-pro-preview`}
GEMINI_MODEL=gemini-3.5-flash`}
darkMode={isDarkMode}
rows={6}
showValidation={false}
@@ -185,7 +185,7 @@ export function GeminiFormFields({
id="gemini-model"
value={model}
onChange={onModelChange}
placeholder="gemini-3-pro-preview"
placeholder="gemini-3.5-flash"
fetchedModels={fetchedModels}
isLoading={isFetchingModels}
/>
@@ -24,7 +24,7 @@ export const GEMINI_DEFAULT_CONFIG = JSON.stringify(
env: {
GOOGLE_GEMINI_BASE_URL: "",
GEMINI_API_KEY: "",
GEMINI_MODEL: "gemini-3-pro-preview",
GEMINI_MODEL: "gemini-3.5-flash",
},
},
null,
@@ -146,7 +146,7 @@ export function UniversalProviderFormModal({
// 计算 Codex 配置 JSON 预览
const codexConfigJson = useMemo(() => {
if (!codexEnabled) return null;
const model = models.codex?.model || "gpt-5.4";
const model = models.codex?.model || "gpt-5.5";
const reasoningEffort = models.codex?.reasoningEffort || "high";
// 确保 base_url 以 /v1 结尾(Codex 使用 OpenAI 兼容 API
const codexBaseUrl = baseUrl.endsWith("/v1")
@@ -592,7 +592,7 @@ requires_openai_auth = true`;
onChange={(e) =>
updateModel("codex", "model", e.target.value)
}
placeholder="gpt-5.4"
placeholder="gpt-5.5"
/>
</div>
<div className="space-y-1">
@@ -24,8 +24,8 @@ export function ModelTestConfigPanel() {
maxRetries: "2",
degradedThresholdMs: "6000",
claudeModel: "claude-haiku-4-5-20251001",
codexModel: "gpt-5.4@low",
geminiModel: "gemini-3-flash-preview",
codexModel: "gpt-5.5@low",
geminiModel: "gemini-3.5-flash",
testPrompt: "Who are you?",
});