From 3e11d8638eea0ca410f4631bfaabe163fc110d1b Mon Sep 17 00:00:00 2001 From: paisley <8197966+su8su@users.noreply.github.com> Date: Sun, 8 Mar 2026 11:51:04 +0800 Subject: [PATCH] fix openrouter --- electron/services/providers/provider-runtime-sync.ts | 9 ++++++++- electron/shared/providers/registry.ts | 1 - electron/utils/openclaw-auth.ts | 10 ++++++++-- src/lib/providers.ts | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/electron/services/providers/provider-runtime-sync.ts b/electron/services/providers/provider-runtime-sync.ts index 9c68879..d25b1c7 100644 --- a/electron/services/providers/provider-runtime-sync.ts +++ b/electron/services/providers/provider-runtime-sync.ts @@ -56,7 +56,14 @@ export function getProviderModelRef(config: ProviderConfig): string | undefined : `${providerKey}/${config.model}`; } - return getProviderDefaultModel(config.type); + const defaultModel = getProviderDefaultModel(config.type); + if (!defaultModel) { + return undefined; + } + + return defaultModel.startsWith(`${providerKey}/`) + ? defaultModel + : `${providerKey}/${defaultModel}`; } export async function getProviderFallbackModelRefs(config: ProviderConfig): Promise { diff --git a/electron/shared/providers/registry.ts b/electron/shared/providers/registry.ts index 78f81ba..d02b00c 100644 --- a/electron/shared/providers/registry.ts +++ b/electron/shared/providers/registry.ts @@ -63,7 +63,6 @@ export const PROVIDER_DEFINITIONS: ProviderDefinition[] = [ model: 'Multi-Model', requiresApiKey: true, showModelId: true, - showModelIdInDevModeOnly: true, modelIdPlaceholder: 'anthropic/claude-opus-4.6', defaultModelId: 'anthropic/claude-opus-4.6', category: 'compatible', diff --git a/electron/utils/openclaw-auth.ts b/electron/utils/openclaw-auth.ts index 30ed720..d91ba42 100644 --- a/electron/utils/openclaw-auth.ts +++ b/electron/utils/openclaw-auth.ts @@ -376,7 +376,10 @@ export async function setOpenClawDefaultModel( ): Promise { const config = await readOpenClawJson(); - const model = modelOverride || getProviderDefaultModel(provider); + const rawModel = modelOverride || getProviderDefaultModel(provider); + const model = rawModel + ? (rawModel.startsWith(`${provider}/`) ? rawModel : `${provider}/${rawModel}`) + : undefined; if (!model) { console.warn(`No default model mapping for provider "${provider}"`); return; @@ -534,7 +537,10 @@ export async function setOpenClawDefaultModelWithOverride( ): Promise { const config = await readOpenClawJson(); - const model = modelOverride || getProviderDefaultModel(provider); + const rawModel = modelOverride || getProviderDefaultModel(provider); + const model = rawModel + ? (rawModel.startsWith(`${provider}/`) ? rawModel : `${provider}/${rawModel}`) + : undefined; if (!model) { console.warn(`No default model mapping for provider "${provider}"`); return; diff --git a/src/lib/providers.ts b/src/lib/providers.ts index 7d4bf5d..36314d1 100644 --- a/src/lib/providers.ts +++ b/src/lib/providers.ts @@ -134,7 +134,7 @@ export const PROVIDER_TYPE_INFO: ProviderTypeInfo[] = [ defaultModelId: 'gemini-3.1-pro-preview', apiKeyUrl: 'https://aistudio.google.com/app/apikey', }, - { id: 'openrouter', name: 'OpenRouter', icon: '🌐', placeholder: 'sk-or-v1-...', model: 'Multi-Model', requiresApiKey: true, showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'anthropic/claude-opus-4.6', defaultModelId: 'anthropic/claude-opus-4.6' }, + { id: 'openrouter', name: 'OpenRouter', icon: '🌐', placeholder: 'sk-or-v1-...', model: 'Multi-Model', requiresApiKey: true, showModelId: true, modelIdPlaceholder: 'anthropic/claude-opus-4.6', defaultModelId: 'anthropic/claude-opus-4.6' }, { id: 'ark', name: 'ByteDance Ark', icon: 'A', placeholder: 'your-ark-api-key', model: 'Doubao', requiresApiKey: true, defaultBaseUrl: 'https://ark.cn-beijing.volces.com/api/v3', showBaseUrl: true, showModelId: true, modelIdPlaceholder: 'ep-20260228000000-xxxxx' }, { id: 'moonshot', name: 'Moonshot (CN)', icon: '🌙', placeholder: 'sk-...', model: 'Kimi', requiresApiKey: true, defaultBaseUrl: 'https://api.moonshot.cn/v1', defaultModelId: 'kimi-k2.5' }, { id: 'siliconflow', name: 'SiliconFlow (CN)', icon: '🌊', placeholder: 'sk-...', model: 'Multi-Model', requiresApiKey: true, defaultBaseUrl: 'https://api.siliconflow.cn/v1', showModelId: true, showModelIdInDevModeOnly: true, modelIdPlaceholder: 'deepseek-ai/DeepSeek-V3', defaultModelId: 'deepseek-ai/DeepSeek-V3' },