From 403227c9014b15a491e72b6eaaf7d1236af12a97 Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 17 Jan 2026 21:15:16 +0800 Subject: [PATCH] feat(opencode): import providers and MCP on first launch Add startup import logic for OpenCode providers and MCP servers. Unlike other apps that use replacement mode, OpenCode uses additive mode where multiple providers can coexist in the config file. --- src-tauri/src/lib.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 69d2a22c6..48abd4f50 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -483,6 +483,17 @@ pub fn run() { } } + // 2.1 OpenCode 供应商导入(累加式模式,需特殊处理) + // OpenCode 与其他应用不同:配置文件中可同时存在多个供应商 + // 需要遍历 provider 字段下的每个供应商并导入 + match crate::services::provider::import_opencode_providers_from_live(&app_state) { + Ok(count) if count > 0 => { + log::info!("✓ Imported {count} OpenCode provider(s) from live config"); + } + Ok(_) => log::debug!("○ No OpenCode providers found to import"), + Err(e) => log::debug!("○ Failed to import OpenCode providers: {e}"), + } + // 3. 导入 MCP 服务器配置(表空时触发) if app_state.db.is_mcp_table_empty().unwrap_or(false) { log::info!("MCP table empty, importing from live configurations..."); @@ -510,6 +521,14 @@ pub fn run() { Ok(_) => log::debug!("○ No Gemini MCP servers found to import"), Err(e) => log::warn!("✗ Failed to import Gemini MCP: {e}"), } + + match crate::services::mcp::McpService::import_from_opencode(&app_state) { + Ok(count) if count > 0 => { + log::info!("✓ Imported {count} MCP server(s) from OpenCode"); + } + Ok(_) => log::debug!("○ No OpenCode MCP servers found to import"), + Err(e) => log::warn!("✗ Failed to import OpenCode MCP: {e}"), + } } // 4. 导入提示词文件(表空时触发)