mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-05-03 07:18:25 +00:00
* feat: flush memory before summarization * fix: keep agent-scoped memory on summarization flush * fix: harden summarization hook plumbing * fix: address summarization review feedback * style: format memory middleware
32 lines
1.4 KiB
Python
32 lines
1.4 KiB
Python
"""Hooks fired before summarization removes messages from state."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from deerflow.agents.memory.message_processing import detect_correction, detect_reinforcement, filter_messages_for_memory
|
|
from deerflow.agents.memory.queue import get_memory_queue
|
|
from deerflow.agents.middlewares.summarization_middleware import SummarizationEvent
|
|
from deerflow.config.memory_config import get_memory_config
|
|
|
|
|
|
def memory_flush_hook(event: SummarizationEvent) -> None:
|
|
"""Flush messages about to be summarized into the memory queue."""
|
|
if not get_memory_config().enabled or not event.thread_id:
|
|
return
|
|
|
|
filtered_messages = filter_messages_for_memory(list(event.messages_to_summarize))
|
|
user_messages = [message for message in filtered_messages if getattr(message, "type", None) == "human"]
|
|
assistant_messages = [message for message in filtered_messages if getattr(message, "type", None) == "ai"]
|
|
if not user_messages or not assistant_messages:
|
|
return
|
|
|
|
correction_detected = detect_correction(filtered_messages)
|
|
reinforcement_detected = not correction_detected and detect_reinforcement(filtered_messages)
|
|
queue = get_memory_queue()
|
|
queue.add_nowait(
|
|
thread_id=event.thread_id,
|
|
messages=filtered_messages,
|
|
agent_name=event.agent_name,
|
|
correction_detected=correction_detected,
|
|
reinforcement_detected=reinforcement_detected,
|
|
)
|