From 89a4033fbf6185edcad911b4d1f0e9b0a2c2012c Mon Sep 17 00:00:00 2001 From: zhayujie Date: Tue, 17 Mar 2026 10:47:41 +0800 Subject: [PATCH] fix: web console bot_type --- channel/web/static/js/console.js | 11 ++++------- channel/web/web_channel.py | 4 ++++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/channel/web/static/js/console.js b/channel/web/static/js/console.js index 2b61e90..a8db519 100644 --- a/channel/web/static/js/console.js +++ b/channel/web/static/js/console.js @@ -849,6 +849,7 @@ let configProviders = {}; let configApiBases = {}; let configApiKeys = {}; let configCurrentModel = ''; +let configHasBotType = false; let cfgProviderValue = ''; let cfgModelValue = ''; @@ -908,6 +909,7 @@ function initConfigView(data) { configApiBases = data.api_bases || {}; configApiKeys = data.api_keys || {}; configCurrentModel = data.model || ''; + configHasBotType = !!data.has_bot_type; const providerEl = document.getElementById('cfg-provider'); const providerOpts = Object.entries(configProviders).map(([pid, p]) => ({ value: pid, label: p.label })); @@ -1069,13 +1071,8 @@ function saveModelConfig() { const updates = { model: model }; const p = configProviders[cfgProviderValue]; updates.use_linkai = (cfgProviderValue === 'linkai'); - // Save bot_type for bot_factory routing. - // Most providers use their key directly as bot_type. - // linkai uses use_linkai flag instead of bot_type. - if (cfgProviderValue === 'linkai') { - updates.bot_type = ''; - } else { - updates.bot_type = cfgProviderValue; + if (configHasBotType) { + updates.bot_type = (cfgProviderValue === 'linkai') ? '' : cfgProviderValue; } if (p && p.api_base_key) { const base = document.getElementById('cfg-api-base').value.trim(); diff --git a/channel/web/web_channel.py b/channel/web/web_channel.py index b5ae372..d980df9 100644 --- a/channel/web/web_channel.py +++ b/channel/web/web_channel.py @@ -523,6 +523,7 @@ class ConfigHandler: "title": title, "model": local_config.get("model", ""), "bot_type": local_config.get("bot_type", ""), + "has_bot_type": "bot_type" in local_config, "use_linkai": bool(local_config.get("use_linkai", False)), "channel_type": local_config.get("channel_type", ""), "agent_max_context_tokens": local_config.get("agent_max_context_tokens", 50000), @@ -567,6 +568,9 @@ class ConfigHandler: file_cfg = json.load(f) else: file_cfg = {} + if "bot_type" in applied and "bot_type" not in file_cfg: + del applied["bot_type"] + local_config.pop("bot_type", None) file_cfg.update(applied) with open(config_path, "w", encoding="utf-8") as f: json.dump(file_cfg, f, indent=4, ensure_ascii=False)