From 7ca06931ec6cf4ab040e43e913a05b72240073a5 Mon Sep 17 00:00:00 2001 From: Stream Date: Wed, 15 Oct 2025 14:39:05 +0800 Subject: [PATCH] fix: unify memory variable in VariablePool --- api/core/workflow/entities/variable_pool.py | 17 +++++++++++++---- api/services/chatflow_memory_service.py | 3 ++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/api/core/workflow/entities/variable_pool.py b/api/core/workflow/entities/variable_pool.py index 8aab22d29d..6f91a9d5ed 100644 --- a/api/core/workflow/entities/variable_pool.py +++ b/api/core/workflow/entities/variable_pool.py @@ -8,13 +8,13 @@ from pydantic import BaseModel, Field from core.file import File, FileAttribute, file_manager from core.variables import Segment, SegmentGroup, Variable from core.variables.consts import SELECTORS_LENGTH -from core.variables.segments import FileSegment, ObjectSegment -from core.variables.variables import RAGPipelineVariableInput, VariableUnion +from core.variables.segments import FileSegment, ObjectSegment, VersionedMemoryValue +from core.variables.variables import RAGPipelineVariableInput, VariableUnion, VersionedMemoryVariable from core.workflow.constants import ( CONVERSATION_VARIABLE_NODE_ID, ENVIRONMENT_VARIABLE_NODE_ID, RAG_PIPELINE_VARIABLE_NODE_ID, - SYSTEM_VARIABLE_NODE_ID, + SYSTEM_VARIABLE_NODE_ID, MEMORY_BLOCK_VARIABLE_NODE_ID, ) from core.workflow.system_variable import SystemVariable from factories import variable_factory @@ -81,7 +81,16 @@ class VariablePool(BaseModel): self.add((RAG_PIPELINE_VARIABLE_NODE_ID, key), value) # Add memory blocks to the variable pool for memory_id, memory_value in self.memory_blocks.items(): - self.add([CONVERSATION_VARIABLE_NODE_ID, memory_id], memory_value) + self.add( + [MEMORY_BLOCK_VARIABLE_NODE_ID, memory_id], + VersionedMemoryVariable( + value=VersionedMemoryValue( + current_value=memory_value, + versions={"1": memory_value}, + ), + name=memory_id, + ) + ) def add(self, selector: Sequence[str], value: Any, /): """ diff --git a/api/services/chatflow_memory_service.py b/api/services/chatflow_memory_service.py index 13b2662640..560a934aa8 100644 --- a/api/services/chatflow_memory_service.py +++ b/api/services/chatflow_memory_service.py @@ -139,9 +139,10 @@ class ChatflowMemoryService: if is_draft: with Session(bind=db.engine) as session: draft_var_service = WorkflowDraftVariableService(session) + memory_selector = memory.spec.id if not memory.node_id else f"{memory.node_id}.{memory.spec.id}" existing_vars = draft_var_service.get_draft_variables_by_selectors( app_id=memory.app_id, - selectors=[['memory_block', memory.spec.id]] + selectors=[[MEMORY_BLOCK_VARIABLE_NODE_ID, memory_selector]] ) if existing_vars: draft_var = existing_vars[0]