瀏覽代碼

fix: agent67 backend priority — Claude Code CLI first (strongest)

Changed detection order: Claude Code CLI > API > Ollama
Ollama 7B models are too weak for complex multi-tool tasks.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
kenny67nju 5 月之前
父節點
當前提交
dee912415d
共有 1 個文件被更改,包括 25 次插入25 次删除
  1. 25 25
      agentexample/agent67/core/config.py

+ 25 - 25
agentexample/agent67/core/config.py

@@ -34,39 +34,20 @@ def detect_backend() -> tuple[str, bool, str]:
     检测可用的 LLM 后端。
 
     返回: (model_name, use_api, backend_type)
-      - backend_type="ollama"      → 本地 Ollama (Qwen2.5, GLM-4, Llama3 等)
-      - backend_type="claude_code" → Claude Code CLI (Max Plan, 无需 API Key)
+      - backend_type="claude_code" → Claude Code CLI (Max Plan, 无需 API Key, 最强)
       - backend_type="api"         → 云端 API (Anthropic/DashScope/OpenAI)
+      - backend_type="ollama"      → 本地 Ollama (Qwen2.5, GLM-4 等, 能力较弱)
 
-    优先级: Ollama (本地) > Claude Code CLI > Anthropic API > DashScope > OpenAI
+    优先级: Claude Code CLI > API > Ollama
+    (Claude Code 能力最强且免费,优先使用)
     """
-    # 1. 检测 Ollama 本地模型
-    try:
-        from .ollama_lam import ollama_available
-        models = ollama_available()
-        if models:
-            # 优先选中文模型
-            preferred = ["qwen2.5:7b", "qwen2.5:14b", "glm4:9b", "llama3.1:8b"]
-            selected = None
-            for p in preferred:
-                if p in models:
-                    selected = p
-                    break
-            if not selected:
-                selected = models[0]
-            print("✅ 使用 Ollama 本地模型 ({})".format(selected))
-            print("   可用模型: {}".format(", ".join(models[:5])))
-            return selected, False, BACKEND_OLLAMA
-    except Exception:
-        pass
-
-    # 2. 检测 Claude Code CLI
+    # 1. 检测 Claude Code CLI (最强,优先)
     if shutil.which("claude"):
         print("✅ 使用 Claude Code Max Plan (无需 API Key)")
         print("   模型: claude sonnet (通过 claude CLI)")
         return "sonnet", False, BACKEND_CLAUDE_CODE
 
-    # 3. 回退到 API 模式
+    # 2. 云端 API
     if os.environ.get("ANTHROPIC_API_KEY"):
         model = "claude-sonnet-4-20250514"
         print("✅ 使用 Anthropic API ({})".format(model))
@@ -80,4 +61,23 @@ def detect_backend() -> tuple[str, bool, str]:
         print("✅ 使用 OpenAI API ({})".format(model))
         return model, True, BACKEND_API
 
+    # 3. Ollama 本地模型 (fallback, 能力较弱)
+    try:
+        from .ollama_lam import ollama_available
+        models = ollama_available()
+        if models:
+            preferred = ["qwen2.5:32b", "qwen2.5:14b", "glm4:9b", "qwen2.5:7b", "llama3.1:8b"]
+            selected = None
+            for p in preferred:
+                if p in models:
+                    selected = p
+                    break
+            if not selected:
+                selected = models[0]
+            print("⚠️  使用 Ollama 本地模型 ({}) — 能力有限,推荐安装 Claude Code".format(selected))
+            print("   可用模型: {}".format(", ".join(models[:5])))
+            return selected, False, BACKEND_OLLAMA
+    except Exception:
+        pass
+
     return "", False, ""