From 081758128c34cc0edff61b41aa7101194aad808a Mon Sep 17 00:00:00 2001 From: wanghanlin <1533525126@qq.com> Date: Wed, 26 Aug 2026 15:05:15 +0800 Subject: [PATCH] =?UTF-8?q?fix(app):=20=E4=BF=AE=E5=A4=8D=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E4=BC=9A=E8=AF=9D=E5=90=8E=E7=94=A8=E6=88=B7=E6=8F=90?= =?UTF-8?q?=E9=97=AE=E8=A2=AB=E6=9F=A5=E8=AF=A2=E9=87=8D=E5=86=99=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit RAG 查询重写(REWRITE 等策略)的润色产物被当作用户消息落库到 chat_message 会话记忆表,导致 ChatSDK 切换角色/对话后前端拉取 历史显示的是润色版而非原始提问。 ChatPipeline 在 RAG 分支将 finalMessage 由 rag.rewrittenQuery() 改为 ctx.message(),使查询重写仅服务于检索,用户消息(传给模型、 落库、前端展示)统一为原始提问。 --- src/main/java/com/wok/supportbot/app/ChatPipeline.java | 6 +++--- src/main/java/com/wok/supportbot/app/ChatRequest.java | 2 +- src/main/java/com/wok/supportbot/rag/RagContext.java | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/wok/supportbot/app/ChatPipeline.java b/src/main/java/com/wok/supportbot/app/ChatPipeline.java index cfdca77..9c7b792 100644 --- a/src/main/java/com/wok/supportbot/app/ChatPipeline.java +++ b/src/main/java/com/wok/supportbot/app/ChatPipeline.java @@ -66,7 +66,7 @@ public class ChatPipeline { *
  • 未启用 RAG(普通对话 / 严格隔离下 KB 拒绝)→ 用原始 message、基础 system
  • *
  • 寒暄/闲聊(IntentRouter 或寒暄词命中)→ 同上,跳过 KB 检索
  • *
  • FAQ 命中 → 直接返回标准答案,不调用 ChatClient
  • - *
  • RAG 生成 → 资料块注入 system,重写后查询作为 user 消息
  • + *
  • RAG 生成 → 资料块注入 system,原始 message 作为 user 消息(重写查询仅用于检索)
  • * * * @param ctx 对话上下文 @@ -128,9 +128,9 @@ public class ChatPipeline { globalPrompt, null, null, "FAQ", null, null, rag.faqMatchResult()); } - // RAG 生成:资料块注入 system,重写后查询作为 user 消息 + // RAG 生成:资料块注入 system,原始 message 作为 user 消息(重写查询仅用于检索) String finalSystem = baseSystem + ragPipeline.buildRagContextBlock(rag.contextText()); - return new ChatRequest(ctx, rag.rewrittenQuery(), finalSystem, Optional.empty(), + return new ChatRequest(ctx, ctx.message(), finalSystem, Optional.empty(), globalPrompt, rag.contextText(), rag.documents() != null ? rag.documents().size() : 0, "RAG", rag.searchMode(), rag.documents(), null); } diff --git a/src/main/java/com/wok/supportbot/app/ChatRequest.java b/src/main/java/com/wok/supportbot/app/ChatRequest.java index 14b3610..c83287e 100644 --- a/src/main/java/com/wok/supportbot/app/ChatRequest.java +++ b/src/main/java/com/wok/supportbot/app/ChatRequest.java @@ -15,7 +15,7 @@ import java.util.Optional; * 字段含义: *