diff --git a/core/intent_analyzer.py b/core/intent_analyzer.py index 78edb0a..b2ab6dd 100644 --- a/core/intent_analyzer.py +++ b/core/intent_analyzer.py @@ -529,7 +529,16 @@ class IntentAnalyzer: """解析 JSON 响应""" # 尝试直接解析 try: - return json.loads(content) + parsed = json.loads(content) + # mimo 等模型可能返回 JSON 数组而非对象,取第一个元素 + if isinstance(parsed, list) and len(parsed) > 0: + first = parsed[0] + if isinstance(first, dict): + return first + return None + if isinstance(parsed, dict): + return parsed + return None except json.JSONDecodeError: pass diff --git a/core/llm_utils.py b/core/llm_utils.py index 43b25e2..92a25d9 100644 --- a/core/llm_utils.py +++ b/core/llm_utils.py @@ -245,7 +245,13 @@ def parse_json_from_response(content: str) -> Optional[dict]: json_str = json_match.group(1) if json_match else content try: - return json.loads(json_str.strip()) + parsed = json.loads(json_str.strip()) + # mimo 等模型可能返回 JSON 数组而非对象,取第一个元素 + if isinstance(parsed, list) and len(parsed) > 0 and isinstance(parsed[0], dict): + return parsed[0] + if isinstance(parsed, dict): + return parsed + return None except (json.JSONDecodeError, TypeError, ValueError): return None