From 927edfb6106f3bed2449d5c6fbf51e2e080ac5fc Mon Sep 17 00:00:00 2001 From: MT-Fire <798521692@qq.com> Date: Wed, 29 Apr 2026 00:05:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(clarification):=20=E4=BF=AE=E5=A4=8D=20opti?= =?UTF-8?q?ons=20=E5=AD=97=E7=AC=A6=E4=B8=B2=E8=A2=AB=E9=80=90=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E6=B8=B2=E6=9F=93=E4=B8=BA=E6=9C=89=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为 ask_clarification 增加 options 归一化处理 - 支持 JSON 数组字符串解析为选项列表 - 非 JSON 字符串降级为单个选项,避免逐字编号 --- .../middlewares/clarification_middleware.py | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/backend/packages/harness/deerflow/agents/middlewares/clarification_middleware.py b/backend/packages/harness/deerflow/agents/middlewares/clarification_middleware.py index 5074d8d2..dfcc41b2 100644 --- a/backend/packages/harness/deerflow/agents/middlewares/clarification_middleware.py +++ b/backend/packages/harness/deerflow/agents/middlewares/clarification_middleware.py @@ -1,5 +1,6 @@ """Middleware for intercepting clarification requests and presenting them to the user.""" +import json import logging from collections.abc import Callable from typing import override @@ -35,6 +36,28 @@ class ClarificationMiddleware(AgentMiddleware[ClarificationMiddlewareState]): state_schema = ClarificationMiddlewareState + def _normalize_options(self, options: object) -> list[str]: + """Normalize clarification options into a list of display strings.""" + if options is None: + return [] + + if isinstance(options, list): + return [str(option) for option in options] + + if isinstance(options, str): + stripped = options.strip() + if not stripped: + return [] + try: + parsed = json.loads(stripped) + except json.JSONDecodeError: + return [stripped] + if isinstance(parsed, list): + return [str(option) for option in parsed] + return [str(parsed)] + + return [str(options)] + def _is_chinese(self, text: str) -> bool: """Check if text contains Chinese characters. @@ -58,7 +81,7 @@ class ClarificationMiddleware(AgentMiddleware[ClarificationMiddlewareState]): question = args.get("question", "") clarification_type = args.get("clarification_type", "missing_info") context = args.get("context") - options = args.get("options", []) + options = self._normalize_options(args.get("options")) # Type-specific icons type_icons = { @@ -84,7 +107,7 @@ class ClarificationMiddleware(AgentMiddleware[ClarificationMiddlewareState]): message_parts.append(f"{icon} {question}") # Add options in a cleaner format - if options and len(options) > 0: + if options: message_parts.append("") # blank line for spacing for i, option in enumerate(options, 1): message_parts.append(f" {i}. {option}")