From e4082f60856dba8df3a18f5a03d4f8ff4dec3c84 Mon Sep 17 00:00:00 2001 From: liuwei Date: Tue, 7 Apr 2026 10:02:22 +0800 Subject: [PATCH] fix(message_summary): stop rendering failed workflow output --- plugins/message_summary/main.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugins/message_summary/main.py b/plugins/message_summary/main.py index 7e705d4..f909a83 100644 --- a/plugins/message_summary/main.py +++ b/plugins/message_summary/main.py @@ -298,6 +298,9 @@ class MessageSummaryPlugin(MessagePluginInterface): def _append_usage_info(self, answer: str, metadata: Dict[str, Any]) -> str: """把 token 统计追加到总结文本末尾""" + if not answer or not answer.strip(): + return answer + usage = metadata.get("usage", {}) if metadata else {} if not usage: return answer @@ -331,6 +334,11 @@ class MessageSummaryPlugin(MessagePluginInterface): def _parse_workflow_response(self, response_data: Dict[str, Any]) -> Tuple[str, Dict[str, Any]]: """解析 Dify workflow 响应""" payload = (response_data or {}).get("data", {}) or {} + status = str(payload.get("status", "")).strip().lower() + if status and status not in {"succeeded", "success", "partial-succeeded"}: + error_message = payload.get("error") or response_data.get("message") or f"workflow status={status}" + raise RuntimeError(str(error_message)) + outputs = payload.get("outputs", {}) or {} answer = "" @@ -478,6 +486,9 @@ class MessageSummaryPlugin(MessagePluginInterface): answer = response_data.get("answer", "") metadata = response_data.get("metadata", {}) + if not answer or not answer.strip(): + raise RuntimeError("Dify 未返回有效总结内容") + answer = self._clean_summary_output(answer) spath = "" answer = self._append_usage_info(answer, metadata)