diff --git a/README.md b/README.md index 8c78dee..996119d 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Get 10% OFF the GLM CODING PLAN with [this link](https://z.ai/subscribe?ic=8JVLJ ShanDianShuo -Thanks to ShanDianShuo for sponsoring this project! ShanDianShuo is a local-first AI voice input: Millisecond latency, data stays on device, 4x faster than typing, AI-powered correction, Privacy-first, completely free. Doubles your coding efficiency with Claude Code! Free download for Mac/Win +Thanks to ShanDianShuo for sponsoring this project! ShanDianShuo is a local-first AI voice input: Millisecond latency, data stays on device, 4x faster than typing, AI-powered correction, Privacy-first, completely free. Doubles your coding efficiency with Claude Code! Free download for Mac/Win diff --git a/README_ZH.md b/README_ZH.md index 5612901..73ea100 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -38,7 +38,7 @@ CC Switch 已经预设了智谱GLM,只需要填写 key 即可一键导入编 ShanDianShuo -感谢闪电说赞助了本项目!闪电说是本地优先的 AI 语音输入法:毫秒级响应,数据不离设备;打字速度提升 4 倍,AI 智能纠错;绝对隐私安全,完全免费,配合 Claude Code 写代码效率翻倍!支持 Mac/Win 双平台,免费下载 +感谢闪电说赞助了本项目!闪电说是本地优先的 AI 语音输入法:毫秒级响应,数据不离设备;打字速度提升 4 倍,AI 智能纠错;绝对隐私安全,完全免费,配合 Claude Code 写代码效率翻倍!支持 Mac/Win 双平台,免费下载 diff --git a/src-tauri/src/mcp.rs b/src-tauri/src/mcp.rs index 8940ebc..30289d4 100644 --- a/src-tauri/src/mcp.rs +++ b/src-tauri/src/mcp.rs @@ -449,7 +449,7 @@ pub fn import_from_codex(config: &mut MultiAppConfig) -> Result // 核心字段(需要手动处理的字段) let core_fields = match typ { "stdio" => vec!["type", "command", "args", "env", "cwd"], - "http" | "sse" => vec!["type", "url", "headers"], + "http" | "sse" => vec!["type", "url", "http_headers"], _ => vec!["type"], }; @@ -490,7 +490,13 @@ pub fn import_from_codex(config: &mut MultiAppConfig) -> Result if let Some(url) = entry_tbl.get("url").and_then(|v| v.as_str()) { spec.insert("url".into(), json!(url)); } - if let Some(headers_tbl) = entry_tbl.get("headers").and_then(|v| v.as_table()) { + // Read from http_headers (correct Codex format) or headers (legacy) with priority to http_headers + let headers_tbl = entry_tbl + .get("http_headers") + .and_then(|v| v.as_table()) + .or_else(|| entry_tbl.get("headers").and_then(|v| v.as_table())); + + if let Some(headers_tbl) = headers_tbl { let mut headers_json = serde_json::Map::new(); for (k, v) in headers_tbl.iter() { if let Some(sv) = v.as_str() { @@ -910,7 +916,7 @@ fn json_server_to_toml_table(spec: &Value) -> Result // 定义核心字段(已在下方处理,跳过通用转换) let core_fields = match typ { "stdio" => vec!["type", "command", "args", "env", "cwd"], - "http" | "sse" => vec!["type", "url", "headers"], + "http" | "sse" => vec!["type", "url", "http_headers"], _ => vec!["type"], }; @@ -988,7 +994,7 @@ fn json_server_to_toml_table(spec: &Value) -> Result } } if !h_tbl.is_empty() { - t["headers"] = Item::Table(h_tbl); + t["http_headers"] = Item::Table(h_tbl); } } }