智能体记忆原则
第一部分核算了单次模型调用的成本,并探讨了何时购买更多候选方案能够增强决策的证据基础。一条轨迹会进行数十次乃至数百次这样的调用,而模型在调用之间不保留任何内容,因此,下一次调用所掌握的全部任务信息,都是由运行时携带并重新交给模型的状态。第二部分完整讨论 H·S·A 中的状态(State)维度。所携带的状态有三种失效方式:其规模超出单次调用能够利用的范围;当它所描述的底层来源发生变化时,它会过时;当两个副本不一致时,它会自相矛盾。本部分讨论状态的两个层面。在会话内(\(S_1\)),状态是每次调用读取的上下文,以及服务系统据此计算出的注意力状态。在会话之外(\(S_3\)),状态是持久保存的来源、日志、索引和笔记,只有经过检索才能发挥作用。位于两者之间的沙箱工作区(\(S_2\))将在第三部分引入,届时智能体将获得向其中写入的权限。这些位置并非同一个缓存的不同层级。每处都保存着不同类型的对象,由不同的主体管理;以下原则规定了各处可以保存什么,以及其中的内容何时不再符合事实。
Principle 4: 上下文是经过选择的工作集
推论:运行时必须依据在自身工作负载上测得的有效大小,选择、排列并限制每次调用所见的内容。压缩历史时,必须原样保留后续操作所依赖的标识符、路径和失败的断言。
运行时选出的内容,必须由服务系统转换为注意力状态,并保存在加速器内存中。
Principle 5: 注意力状态由词元前缀派生
推论:智能体运行框架应按易变性从低到高的顺序准备词元,并在两次压缩之间保持历史仅追加,使每一轮都能复用上一轮的计算结果。服务系统应将注意力状态保存在固定大小的块中,使分支轨迹能够共享前缀块,并通过比较暂停轨迹的等待时间与重新加载和重新计算的成本,决定保留、卸载还是丢弃其状态。
必须在会话结束后继续存在的内容,完全存放在模型之外,且只能通过检索重新进入模型。
Principle 6: 检索是一种契约,而非回忆
推论:每次从持久存储读取内容,无论是运行时预先将其置入上下文,还是模型通过搜索工具请求,都必须经过一份带有明确类型的契约,限定范围、新鲜度、候选数量和延迟。运行时根据所需信息选择精确搜索、词法检索、稠密检索或图检索,并在将候选内容置入上下文前,依据其来源核验每个候选项的版本与出处。
状态所在的这三处位置,都遵循同一条关于哪个副本具有权威性的规则。
上下文工程 决定每次调用能看到哪些词元,并在任务跨度增长时,使这些词元始终保持规模受限、顺序合理且内容为最新。KV 缓存管理 沿着这些词元进入服务系统,核算在一条轨迹的各轮调用、分叉和工具等待期间保留其注意力状态的成本。长期记忆 决定哪些内容在会话结束后继续存在、它们如何返回上下文,以及智能体可以写回什么。即使一条轨迹记住了所需的一切,它仍然无法改变模型之外的任何事物;如何安全地赋予它这种能力,是第三部分的任务。