refactor(memory): Memory V2 P3 - 舍弃后台抽取 + Gateway 端点收口
P3 在 P1/P2 基础上完成 Memory V2 收尾: 舍弃后台抽取: - 删除 updater/queue/storage/prompt/summarization_hook 五个模块 - 移除 background_extraction 配置段、扁平字段兼容、storage 字段 - 理由:Hindsight auto_retain 已自动留存每轮对话,后台抽取冗余 Hindsight 召回注入改用 wrap_model_call: - 由 before_model 改为 wrap_model_call —— 召回只注入单次模型请求、 不落持久 state,从根上消除 <memory-context> 泄漏给前端的风险 - builtin frozen snapshot 仍走系统提示词 Gateway 端点收口为 /api/memory/v2*: - 删除旧 facts/history 端点 (/api/memory、/memory/facts 等) - 新增 entries 增删改 (POST/PUT/DELETE /memory/v2/entries) - 新增 POST /memory/v2/search —— Hindsight recall/reflect 检索代理 - client.py memory 方法重写为 V2 等价方法 文档同步更新 CLAUDE.md 与 MEMORY_V2_DESIGN_ZH.md。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
f9d7610679
commit
21a76f5e7c
14 files changed
+954
-3085
No files matched your search
+8
-10
@@ -5,12 +5,11 @@ from langchain.agents.middleware import AgentMiddleware
|
||||
from langchain_core.runnables import RunnableConfig
|
||||
|
||||
from deerflow.agents.lead_agent.prompt import apply_prompt_template
|
||||
from deerflow.agents.memory.summarization_hook import memory_flush_hook
|
||||
from deerflow.agents.middlewares.clarification_middleware import ClarificationMiddleware
|
||||
from deerflow.agents.middlewares.loop_detection_middleware import LoopDetectionMiddleware
|
||||
from deerflow.agents.middlewares.memory_middleware import MemoryMiddleware
|
||||
from deerflow.agents.middlewares.setup_agent_approval_middleware import SetupAgentApprovalMiddleware
|
||||
from deerflow.agents.middlewares.subagent_limit_middleware import SubagentLimitMiddleware
|
||||
from deerflow.agents.middlewares.memory_middleware import MemoryMiddleware
|
||||
from deerflow.agents.middlewares.setup_agent_approval_middleware import SetupAgentApprovalMiddleware
|
||||
from deerflow.agents.middlewares.subagent_limit_middleware import SubagentLimitMiddleware
|
||||
from deerflow.agents.middlewares.summarization_middleware import BeforeSummarizationHook, DeerFlowSummarizationMiddleware
|
||||
from deerflow.agents.middlewares.title_middleware import TitleMiddleware
|
||||
from deerflow.agents.middlewares.todo_middleware import TodoMiddleware
|
||||
@@ -91,9 +90,8 @@ def _create_summarization_middleware(*, app_config: AppConfig | None = None) ->
|
||||
if config.summary_prompt is not None:
|
||||
kwargs["summary_prompt"] = config.summary_prompt
|
||||
|
||||
# Memory V2:不再有后台抽取队列,无需 summarization 前的 flush hook。
|
||||
hooks: list[BeforeSummarizationHook] = []
|
||||
if resolved_app_config.memory.enabled:
|
||||
hooks.append(memory_flush_hook)
|
||||
|
||||
# The logic below relies on two assumptions holding true: this factory is
|
||||
# the sole entry point for DeerFlowSummarizationMiddleware, and the runtime
|
||||
@@ -304,10 +302,10 @@ def _build_middlewares(
|
||||
if custom_middlewares:
|
||||
middlewares.extend(custom_middlewares)
|
||||
|
||||
middlewares.append(SetupAgentApprovalMiddleware())
|
||||
|
||||
# ClarificationMiddleware should always be last
|
||||
middlewares.append(ClarificationMiddleware())
|
||||
middlewares.append(SetupAgentApprovalMiddleware())
|
||||
|
||||
# ClarificationMiddleware should always be last
|
||||
middlewares.append(ClarificationMiddleware())
|
||||
return middlewares
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user