Fix-System-Agent:会话上下文窗口分层压缩与重要信息持久化召回

举报
yd_282816122 发表于 2026/10/30 11:06:10 2026/10/30
【摘要】 背景痛点随着排障会话持续推进,日志、工具返回结果、证据链、基线对比数据不断涌入上下文,会遇到几个经典问题:上下文长度快速触达模型窗口上限,早期关键信息被截断丢失,Agent 遗忘前面排查结论、已经执行过的操作;简单粗暴的截断策略会随机丢弃信息,有可能丢掉报错堆栈、关键指标、用户原始问题等高价值内容;全部走摘要压缩又有副作用:摘要会丢失原始细节,当后续需要核对原始证据、复现问题时,信息失真;短...

背景痛点
随着排障会话持续推进,日志、工具返回结果、证据链、基线对比数据不断涌入上下文,会遇到几个经典问题:
  1. 上下文长度快速触达模型窗口上限,早期关键信息被截断丢失,Agent 遗忘前面排查结论、已经执行过的操作;
  2. 简单粗暴的截断策略会随机丢弃信息,有可能丢掉报错堆栈、关键指标、用户原始问题等高价值内容;
  3. 全部走摘要压缩又有副作用:摘要会丢失原始细节,当后续需要核对原始证据、复现问题时,信息失真;
  4. 短上下文模型成本低、速度快,但长会话下稳定性差;长上下文模型成本高,不适合全部会话默认使用;
  5. 现有快照机制只做全量会话保存,没有做 “检索召回”,Agent 不能按需读取历史片段,只能一次性把全部内容塞进 Prompt。
我们的目标不是单纯无限拉长窗口,而是构建一套分层策略:区分信息优先级,实时压缩冗余内容,同时把原始明细存入外部检索库,需要时按需召回。

核心设计思路

将会话信息拆成三层存储,每层对应不同的读取策略,形成 “内存窗口 + 摘要缓存 + 向量检索库” 的分层结构。
  • 热层(当前窗口):模型实时可见的上下文,保留最近交互和高优先级信息;
  • 温层(结构化摘要):阶段性摘要、已确认结论,持续精简,常驻上下文;
  • 冷层(持久化检索库):原始工具返回、完整日志、原始证据,不默认塞进 Prompt,支持关键词 / 向量召回。

1. 信息优先级打分规则

每一条消息块(工具返回、用户提问、Agent 思考、结论)进入系统时,自动计算优先级分数,作为压缩、保留、丢弃的依据:
信息类型
优先级
处理策略
用户原始诉求、排障目标、约束条件
P0(最高)
全程保留,永不压缩,固定放在 Prompt 头部
已确认根因、执行结论、高危操作记录
P1
保留结构化摘要,原始数据入检索库
报错堆栈、异常指标、基线差异点
P2
摘要 + 索引入库,窗口内保留精简片段
普通查询返回、正常无告警日志、重复数据
P3
不常驻窗口,仅写入检索库,默认不送入模型
去重拦截、重复重试日志、调试埋点
P4
只写入证据链审计,不进模型上下文
打分同时附带标签:时间戳、关联工具 ID、会话快照 ID、是否为变更操作。

2. 分层压缩流水线

压缩不是一次性动作,而是随着 token 水位触发的渐进式流程:
  1. 实时监控当前上下文 token 占用水位,设置两个阈值:预警线、上限线;
  2. 到达预警线:对 P3、P4 低优先级内容做裁剪,移出热窗口,写入检索库;
  3. 到达上限线:触发阶段性摘要任务,把一批历史交互合并成结构化 Markdown 摘要,只保留结论,原始明细下沉冷层;
  4. 摘要模板固定化,避免自由文本摘要发散:
【阶段摘要|时间区间:xxx-xxx】 - 当前排查方向:xxx - 已执行工具:[tool1, tool2] - 已确认事实:xxx - 待验证猜想:xxx - 已排除可能性:xxx
结构化摘要相比自由大段文本,占用 token 更少,模型读取一致性更强,也方便后续程序解析。

3. 持久化召回机制

冷层使用向量库 + 结构化索引双索引:
  • 向量索引:对日志、报错、返回文本做 Embedding,支持语义召回;
  • 结构化索引:按 tool_id、风险等级、时间、指标名称、错误码建立倒排索引,支持精确过滤。
Agent 新增一个内置检索工具 session.retrieve,只有当模型判断信息不足时才主动调用:
{ "tool": "session.retrieve", "query": "之前查看的nginx 502错误日志", "filter": {"tool_name": "log.fetch", "time_range": "10min"} }
召回结果不会全部灌入上下文,而是设置召回条数上限,只把相关性最高的片段放回热窗口。

4. 和现有模块联动

  1. 会话快照模块:快照同步保存三层数据,恢复会话时同时恢复热窗口、摘要、检索索引;
  2. 证据链管理:所有压缩、摘要、召回动作都记录在证据链,标注:哪些信息被摘要、哪些下沉冷层、哪些被召回;
  3. 基线对比模块:基线差异结果默认打上 P2 优先级,差异显著的自动提升优先级;
  4. 幂等去重层:重复请求日志标记 P4,优先裁剪;
  5. 插件元模型:工具返回的内容类型(日志 / 指标 / 变更结果)由元信息提供,辅助优先级打分。

工程权衡

  1. 摘要失真风险:摘要只做 “浓缩结论”,原始原始数据永久保存在检索库,模型怀疑摘要时可以主动召回原文核对;
  2. 召回幻觉:增加召回引用标记,所有召回片段附带来源 ID,输出结论时要求模型标注引用来源;
  3. Embedding 成本:只对 P0-P3 内容向量化,P4 调试日志不入库,控制向量库开销;
  4. 并发会话膨胀:会话结束后设置 TTL,过期归档到对象存储,删除向量索引,释放资源;
  5. 压缩策略可配置:不同风险等级的会话可以使用不同压缩策略,高危排障会话放宽窗口限制,降低压缩力度。

后续演进方向

  • 基于强化学习动态调整优先级:统计哪些信息后续被召回,自动优化打分模型;
  • 支持多轮猜想分支隔离:不同排查猜想分支独立上下文,分支之间互不污染;
  • 摘要校验:轻量模型校验摘要和原文一致性,防止摘要丢失关键事实。

小结

分层压缩 + 召回,解决的是长排障会话的上下文遗忘问题。它跳出了 “要么全放进去、要么删掉” 的二元选择:把高频需要的结论留在模型眼前,海量原始明细外置存储,按需调取。和前面的证据隔离、基线对比、工具网关、幂等防护组合在一起,让 Agent 可以支撑几十轮、上百轮的复杂故障排查,而不会随着会话变长快速失稳。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。