diff --git a/README.md b/README.md index 4ccaa76..075c8e4 100644 --- a/README.md +++ b/README.md @@ -382,9 +382,11 @@ curl http://localhost:3010/tools/execute \ | 请求模型 | 映射到 Cursor | |---------|--------------| -| claude-* | anthropic/claude-sonnet-4.5 | -| gpt-* | openai/gpt-5-nano | -| gemini-* | google/gemini-2.5-flash | +| claude-* | claude-4.5-sonnet | +| claude-opus-4-* | claude-4.5-opus | +| gpt-* | gpt-5.2 | +| gemini-* | gemini-3-flash | +| gemini-*-pro | gemini-3-pro | ## MCP 服务器 diff --git a/internal/handler/anthropic.go b/internal/handler/anthropic.go index 9569792..c2e6f38 100644 --- a/internal/handler/anthropic.go +++ b/internal/handler/anthropic.go @@ -103,11 +103,58 @@ func getTextContent(content interface{}) string { // mapModelName 将模型名称映射到 Cursor 支持的格式 func mapModelName(model string) string { - // 直接透传模型名称,不做转换 if model == "" { - return "claude-opus-4-5-20251101" + return "claude-4.5-sonnet" } - return model + + // 模型映射表 + modelMap := map[string]string{ + // Claude 系列 -> claude-4.5-sonnet + "claude-3-opus": "claude-4.5-sonnet", + "claude-3-sonnet": "claude-4.5-sonnet", + "claude-3-haiku": "claude-4.5-sonnet", + "claude-3.5-sonnet": "claude-4.5-sonnet", + "claude-3.5-haiku": "claude-4.5-sonnet", + "claude-3.7-sonnet": "claude-4.5-sonnet", + "claude-sonnet-4-20250514": "claude-4.5-sonnet", + "claude-opus-4-20250514": "claude-4.5-opus", + + // GPT 系列 -> gpt-5.2 + "gpt-4": "gpt-5.2", + "gpt-4o": "gpt-5.2", + "gpt-4-turbo": "gpt-5.2", + "gpt-3.5": "gpt-5.2", + + // Gemini 系列 -> gemini-3-flash + "gemini-pro": "gemini-3-flash", + "gemini-1.5-pro": "gemini-3-pro", + "gemini-1.5-flash": "gemini-3-flash", + "gemini-2.0-flash": "gemini-3-flash", + "gemini-2.5-flash": "gemini-3-flash", + } + + // 精确匹配 + if mapped, ok := modelMap[model]; ok { + log.Debug("模型映射: %s -> %s", model, mapped) + return mapped + } + + // 前缀匹配 + switch { + case len(model) >= 6 && model[:6] == "claude": + log.Debug("模型映射 (前缀): %s -> claude-4.5-sonnet", model) + return "claude-4.5-sonnet" + case len(model) >= 3 && model[:3] == "gpt": + log.Debug("模型映射 (前缀): %s -> gpt-5.2", model) + return "gpt-5.2" + case len(model) >= 6 && model[:6] == "gemini": + log.Debug("模型映射 (前缀): %s -> gemini-3-flash", model) + return "gemini-3-flash" + } + + // 未知模型,使用默认 + log.Warn("未知模型 %s,使用默认 claude-4.5-sonnet", model) + return "claude-4.5-sonnet" } // ================== 处理器函数 ==================