在智能体（Agent）的长期运行中，上下文窗口（Context Window）的限制是开发者面临的最大挑战。随着对话轮次的增加，Token 消耗不仅会带来高昂的成本，更会导致模型因为信息过载而变得迟钝甚至失忆。

Solon AI 通过 `SummarizationInterceptor` 拦截器与多维摘要策略，为智能体提供了类似人类的“长短期记忆”管理机制。

### 1. 核心组件：SummarizationInterceptor

SummarizationInterceptor 负责监控智能体执行过程中的 Trace（轨迹）。当历史消息数量达到预设的阈值时，它会自动触发“裁减与压缩”动作。

工作原理

* 监控阈值：设定一个 maxMessages（如 12 条）。
* 触发裁减：当消息超过阈值时，取最老的一段消息（Expired Messages）。
* 执行策略：调用配置的 SummarizationStrategy 对这段消息进行加工。
* 注入摘要：将加工后的摘要消息重新注入上下文头部，并物理移除原始明细。


### 2. 内置摘要策略全家桶

Solon AI 提供了四种开箱即用的策略，满足从“简单压缩”到“无限续航”的不同业务场景。

#### A. 基础语义压缩 (LLMSummarizationStrategy)

* 职能：调用轻量级模型对过期的对话段落进行一次性概括。
* 场景：通用场景，对历史细节要求不高。
* 特点：精简、准确，带有明显的视觉标记。

#### B. 关键信息看板 (KeyInfoExtractionStrategy)

* 职能：作为“信息审计专家”，只提取事实、参数、结论和已验证的失败尝试。
* 场景：垂直领域任务（如 SQL 生成、自动化运维），需要防止核心参数丢失。
* 特点：过滤掉冗长的思考过程，只保留“硬干货”。

#### C. 层级滚动摘要 (HierarchicalSummarizationStrategy)

* 职能：将“旧摘要”与“新消息”递归合并。(Summary_N-1 + History_New) -> Summary_N。
* 场景：超长任务流。
* 特点：支持无限续航。记忆链条永不断裂，历史背景通过摘要不断向后传递。

#### D. 冷记忆归档 (VectorStoreSummarizationStrategy)

* 职能：将原始明细异步存入向量数据库，仅在上下文中留下一个“检索锚点”。
* 场景：合规审计、需要回溯原始细节的复杂推理。
* 特点：物理存盘。配合 RAG 工具使用，让 Agent 具备“翻阅档案”的能力。


### 3. 级联编排：CompositeSummarizationStrategy

在生产环境下，单一策略往往不够。你可以通过 CompositeSummarizationStrategy 将多个策略串联起来，构建多层级记忆体系。

最佳实践建议顺序：

* 先通过 VectorStore 存盘（保证原始数据不丢）。
* 再通过 KeyInfo 提纯（保证硬核数据在看板上）。
* 最后通过 Hierarchical 压缩（保证全局进度不丢失）。



### 4. 快速上手

以下示例展示了如何为 ReAct 智能体配置一个“永不失忆”的记忆模型：


```java
// 1. 选择并组合策略
VectorStoreSummarizationStrategy vectorStoreSummarization = new VectorStoreSummarizationStrategy(vectorRepo);

SummarizationStrategy myStrategy = new CompositeSummarizationStrategy()
    .addStrategy(vectorStoreSummarization) // 冷归档
    .addStrategy(new KeyInfoExtractionStrategy(chatModel))        // 事实看板
    .addStrategy(new HierarchicalSummarizationStrategy(chatModel)); // 滚动摘要

// 2. 注入拦截器 (设置超过 15 条消息时触发)
SummarizationInterceptor memoryGuard = new SummarizationInterceptor(15, myStrategy);

// 3. 构建 Agent
Agent agent = ReActAgent.of(chatModel)
                .defaultInterceptorAdd(memoryGuard) // 挂载记忆守卫
                .defaultSkillAdd(vectorStoreSummarization) //提供摘要主动查询的能力
                .build();
```