Memory 与压缩策略:每步首的自动压缩管线

Memory 与压缩策略:每步首的自动压缩管线 由 Archify 生成的架构图。 AgentRuntime 步循环 · autoCompactIfNecessary · 架构组件 AgentRuntime 步循环 autoCompactIfNecessary AgentMemory · items + summary · snapshot/restore · 架构组件 · state AgentMemory items + summary · snapshot/restore state buildPrompt · 压缩后 items+summary → prompt · 架构组件 · model buildPrompt 压缩后 items+summary → prompt model CompactPolicy 策略 · Llm · StructuredSummary · Windowed · 可插拔压缩实现(CompactPolicy SPI) · compact CompactPolicy 策略 Llm · StructuredSummary · Windowed compact 摘要模型 · LlmCompactPolicy 专用调用 · 架构组件 摘要模型 LlmCompactPolicy 专用调用 ContextProjector · ContextBudget 预算投影 · 可插拔压缩实现(CompactPolicy SPI) · compact ContextProjector ContextBudget 预算投影 compact 事件/生命周期 · BEFORE/ON_COMPACT · MEMORY_COMPRESS · 架构组件 事件/生命周期 BEFORE/ON_COMPACT · MEMORY_COMPRESS ① 每步首 shouldCompact→compact ② CompactResult→restore() 摘要 JSON 按预算投影 ③ addInput/output ④ items+summary ⑤ 下一步 prompt 压缩事件扇出 可插拔压缩实现(CompactPolicy SPI) 图例 后端 数据库 消息总线 外部系统

触发与容错

  • • 每个 step 开头 autoCompactIfNecessary:snapshot→shouldCompact→compact→memory.restore,再 buildPrompt(BaseAgentRuntime.java:200-202, 344-370)
  • • 压缩抛异常只记日志、用未压缩 memory 继续——绝不让压缩失败中断 run(:364-369)

三种实现

  • • LlmCompactPolicy:保留最近 N 条,旧对话交给模型产出 {goal,completed,pending,decisions,errors,testResults,openQuestions} 结构化摘要
  • • StructuredSummaryCompactPolicy:ContextProjector 按 ContextBudget 投影+机械拼接摘要;WindowedMemoryCompressor:只留尾部 maxItems 条

与 Coding 侧的关系

  • • CodingSessionCompactor 是会话级压缩(CodingAgent 外层),与本图的 step 内 CompactPolicy 是两层不同机制
  • • CompactPolicyMemoryCompressor 把策略包装成 MemoryCompressor,手动/外部触发也走同一 CompactResult