refactor(memory): remove legacy extraction pipeline and add dialog_at temporal grounding
- Delete ExtractionOrchestrator (~2500 lines) and write_tools legacy path; MemoryService/WritePipeline is now the sole write path - Remove NEW_PIPELINE_ENABLED feature flag from memory_agent_service - Simplify pilot_run_service to always use PilotWritePipeline - Add dialog_at field to statement and triplet extraction prompts as the primary reference time for resolving relative temporal expressions - Rewrite relative time phrases (e.g. 昨天, 下周) into concrete dates directly in statement_text when stably resolvable from dialog_at - Rename extracat_Pruning.jinja2 to extracat_pruning.jinja2; expand few-shot examples and update memory type enum (drop NULL, add agreement/repetition/other)
This commit is contained in:
@@ -34,7 +34,6 @@ from app.core.memory.agent.utils.messages_tools import (
|
||||
reorder_output_results,
|
||||
)
|
||||
from app.core.memory.agent.utils.type_classifier import status_typle
|
||||
from app.core.memory.agent.utils.write_tools import write as write_neo4j
|
||||
from app.core.memory.analytics.hot_memory_tags import get_interest_distribution
|
||||
from app.core.memory.memory_service import MemoryService
|
||||
from app.core.memory.utils.llm.llm_utils import MemoryClientFactory
|
||||
@@ -447,32 +446,20 @@ class MemoryAgentService:
|
||||
memory_config,
|
||||
language: Language | str,
|
||||
) -> None:
|
||||
"""根据 NEW_PIPELINE_ENABLED 选择新旧流水线写入 Neo4j。"""
|
||||
# 统一转换为 dict,下游流水线期望 list[dict]
|
||||
"""使用新流水线(MemoryService → WritePipeline)写入 Neo4j。"""
|
||||
messages_dict = [
|
||||
msg if isinstance(msg, dict) else msg.model_dump(exclude_none=True)
|
||||
for msg in messages
|
||||
]
|
||||
use_new_pipeline = os.getenv("NEW_PIPELINE_ENABLED", "false").lower() == "true"
|
||||
|
||||
if use_new_pipeline:
|
||||
service = MemoryService(memory_config=memory_config, end_user_id=end_user_id)
|
||||
result = await service.write(
|
||||
messages=messages_dict, language=language, ref_id='',
|
||||
)
|
||||
logger.info(
|
||||
f"[NewPipeline] 完成: status={result.status}, "
|
||||
f"elapsed={result.elapsed_seconds:.2f}s, "
|
||||
f"extraction={result.extraction}"
|
||||
)
|
||||
else:
|
||||
await write_neo4j(
|
||||
end_user_id=end_user_id,
|
||||
messages=messages_dict,
|
||||
memory_config=memory_config,
|
||||
ref_id='',
|
||||
language=language,
|
||||
)
|
||||
service = MemoryService(memory_config=memory_config, end_user_id=end_user_id)
|
||||
result = await service.write(
|
||||
messages=messages_dict, language=language, ref_id='',
|
||||
)
|
||||
logger.info(
|
||||
f"[WritePipeline] 完成: status={result.status}, "
|
||||
f"elapsed={result.elapsed_seconds:.2f}s, "
|
||||
f"extraction={result.extraction}"
|
||||
)
|
||||
|
||||
async def _invalidate_interest_cache(self, end_user_id: str) -> None:
|
||||
"""写入完成后失效兴趣分布缓存。"""
|
||||
|
||||
Reference in New Issue
Block a user