From a7d522b15fb0f37fc12fad5833095c3aa17be65a Mon Sep 17 00:00:00 2001 From: ymq Date: Mon, 31 Aug 2026 22:03:46 +0800 Subject: [PATCH] =?UTF-8?q?fix(session):=20=E8=B7=A8=E4=BA=A7=E7=BA=BF?= =?UTF-8?q?=E4=BC=9A=E8=AF=9D=E4=B8=B2=E6=89=B0=E6=A0=B9=E6=B2=BB=E2=80=94?= =?UTF-8?q?=E2=80=94=E5=8E=86=E5=8F=B2/=E9=A1=B9=E7=9B=AE=E4=B8=8A?= =?UTF-8?q?=E4=B8=8B=E6=96=87=E6=8C=89=E4=BA=A7=E7=BA=BF=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: 各产线页面默认tab共用session_id='default', 对话历史只按session_id过滤 (写入未存pipeline_id), 投标页加载了开发页历史导致LLM答错产线。 - _save_turn: 写入pipeline_id(generic存空串防污染开发产线) - _load_history: session级读取加pipeline_id过滤 - get_session_project_id: 加pipeline_id参数, 跨产线项目不生效(不删记录) --- pipeline_service/agent_loop_v2.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pipeline_service/agent_loop_v2.py b/pipeline_service/agent_loop_v2.py index 5f9dde7..de4886e 100644 --- a/pipeline_service/agent_loop_v2.py +++ b/pipeline_service/agent_loop_v2.py @@ -1352,6 +1352,10 @@ class AgentExecutor: db = DBPools() async with db.sqlorContext("pipeline") as sor: + # 产线隔离(2026-08-31):generic 会话不挂产线标签——generic 的 + # pipeline_id 会回退 DEFAULT_ABILITY_ID(sdlc_general),若落库会污染 + # 开发产线历史。存空串 = 通用对话,各产线读取时按产线过滤自然排除。 + store_pl = "" if self.generic else (self.pipeline_id or "") # 用户消息 await sor.C("pipeline_conversations", { "id": getID(), @@ -1360,7 +1364,7 @@ class AgentExecutor: "created_by": self.user_id or "", "iteration_id": self.project_id or "", "session_id": self.session_id or "", - "pipeline_id": self.pipeline_id or "", + "pipeline_id": store_pl, }) # 助手回复(不含 tool_call JSON!) reply_clean = reply @@ -1373,7 +1377,7 @@ class AgentExecutor: "created_by": self.user_id or "", "iteration_id": self.project_id or "", "session_id": self.session_id or "", - "pipeline_id": self.pipeline_id or "", + "pipeline_id": store_pl, }) except Exception as e: logger.warning(f"Session save failed: {e}")