Skip to content

第五章:上下文有限,应该留下什么 ​

简报任务已经读了十几份材料,用户又补充:“只讨论已经发布的变化。”如果这条约束淹没在旧网页和重复检索里,Agent 即使查到了最新资料,也可能写错范围。

问题从“能不能拿到信息”,变成了“下一次模型请求实际能读到什么”。这就是上下文管理要解决的问题。

5.1 硬盘上的资料不是模型的全部上下文 ​

上下文(Context)指当前一次模型请求中实际提供的信息,可能包括系统说明、任务、历史、工具描述和工具结果。模型处理输入的容量有限,常用 token 计量;token 与汉字或单词并不一一对应。

文件保存成功,不意味着下次请求自动把文件读入;历史留在数据库,也不意味着模型每次都读到完整历史。程序要选择、组织和带入材料。第六章讨论跨会话保存,本章先处理当前请求。

图 5-1 信息是否存在,与本轮模型是否看得到,需要分别确认。 点击图解可放大
左右滑动查看图解细节
保存的历史、文件和记忆经过选择,才进入当前模型请求

图 5-1 信息是否存在,与本轮模型是否看得到,需要分别确认。

5.2 用“对下一步是否有用”筛选材料 ​

下面是一份教学示意的简报中间记录:

材料下一轮的用途处理方式
用户要求只看稳定发布决定收录范围清楚保留
已确认的版本、提交和链接支持结论并定位原文保留事实与定位信息
同一个错误重复二十次对新判断帮助有限合并错误原因与处理结果
尚未核实的机制变化决定后续行动保留为待办与不确定项

如果只保留“最终结论”,可能丢掉为何相信它;如果只留原始日志,信息又过多。有效上下文需要同时保留目标、证据、状态和缺口。

5.3 压缩会减少体积,也可能减少细节 ​

上下文压缩(Compaction)可以精简或总结较早材料,为后续行动留出空间。Hermes 的上下文管理与压缩机制还会处理消息结构、工具调用与结果的配对等约束,不能随意把历史按字符截断。

压缩得到的“已经核对过源码”仍然不如一个具体提交、路径和结论可靠。摘要可能省略版本、否定条件或失败原因。因此,重要依据需要保留可找回的线索;遇到争议时能够重新读取原文。

图 5-2 教学示意:压缩不是无损复制。保留什么,取决于后续任务需要什么。 点击图解可放大
左右滑动查看图解细节
压缩历史时保留约束、事实来源和未解决问题

图 5-2 教学示意:压缩不是无损复制。保留什么,取决于后续任务需要什么。

5.4 缓存与压缩解决不同问题 ​

提示词缓存(Prompt Cache)让提供方在符合条件时复用输入前缀的计算,具体规则依赖服务。它不负责替你挑选正确材料,也不会自动把窗口变大。

压缩改变带入的信息;缓存关注重复计算的复用。前者可能损失细节,后者受前缀稳定性和提供方行为影响。Hermes 在组织系统提示、上下文与压缩时需要兼顾这些条件,但不能因此宣称任意任务都有固定倍数的成本下降。

对简报来说,先确保版本约束和来源在场,再优化重复输入。错误材料即使被便宜地重复处理,也仍然是错误材料。

不写代码的小练习 ​

找一段包含目标、重复材料、一个已确认事实和一个疑问的任务记录,将它压成五行摘要。再让自己只凭摘要复述范围和来源:找不回的信息,就是压缩时需要重新考虑的内容。

本章要点 ​

  • 上下文是本次实际输入,保存过的信息需要经过选择才能进入判断。
  • 任务约束、已确认事实、来源定位和未解决问题都值得保留。
  • 压缩有信息损失,工具调用与结果的结构也要保持有效。
  • 缓存复用计算,压缩控制信息体积;两者都不能代替事实核查。

理解题 ​

1. 摘要写着“版本已确认”,但没有版本号和链接,够吗?

对后续需要引用版本的任务不够。应该保留具体版本、提交或原始记录的定位方式,必要时重新检查。把过程压成一句确认,会丢掉可验证性。

2. 模型窗口更大,是否就不需要选择材料?

仍然需要。更大窗口提供容量,不保证模型能稳定识别所有关键约束;无关与矛盾材料也会增加成本和解释难度。选择材料是任务组织问题,不只是容量问题。

对照官方实现 ​

当前请求的信息整理好了,下一次全新对话又怎样找回需要的东西?

社区学习手册 · 正文与原创图解 CC BY-SA 4.0 · 代码 MIT