TwKit

推文

@fttt007 · 2026-10-15 17:06

《Pi 源码精读》第七集:对话太长了怎么办? 和 Agent 聊了一整天,记录本越来越厚,可模型一次能读的东西是有限的,读不下的部分它根本看不到。总有一天会装不下,这时候怎么办?这一集用 Pi 的 durable 包的源码回答这个问题。 🧪 先看一个例子 我们用一个假模型,故意让它一次只能读很少的东西,然后连问五个旅行问题,每问完一次就数一数: · 前两问:上下文 3 条 / 记录本 3 条,上下文 5 条 / 记录本 5 条,两边一样多 · 第三问以后:上下文 4、7、5 条,记录本 8、11、15 条 上下文的条数降了下来,记录本却一直在变多。再看上下文,最前面多了一条摘要,后面只剩最近的几条原话。 🗜️ 新词一:压缩 快要装不下时,Agent 会开一个压缩任务:最近的一段原话原样留着,更早的那一大段交给模型写成摘要。写摘要时,模型会收到一句专门的提示:你是总结助手,不要接着聊,只写摘要。提示里还要求写清目标、进度、做过的决定和下一步;要是前面已经有一份摘要,就把它一起并进新摘要。 📄 新词二:摘要 压缩做完,记录本末尾会添一条摘要,它记着两件事:前面的对话被总结成了什么,原话从哪一条开始保留。下次拼上下文时,先放这条摘要,再接上保留的那段原话,更早的条目不再放进去。但它们没有被删掉,第一问的原话还好好地留在记录本里。 📏 什么时候压缩:两条线 每次发请求前,Agent 都会估一估这次要发的东西有多大: · 越过第一条线:在后台开始压缩,聊天照常进行 · 越过第二条线:马上就装不下了,先停下来,压完再发 也可以手动叫它压缩,还能附一句话,告诉它最想留下什么。 📥 摘要怎么放进去 后台的压缩做好时,对话可能正忙着回答。摘要不会硬塞进去,而是像第三集的插话一样,先进收件箱排队,等下一个合适的时机再放进记录本。另外,压缩以后,下一次发请求前会重新写一整条系统提示词,旧的那几条不再放进上下文。 ❓ 为什么不直接删掉旧的 不删,记录本就始终是完整的历史,原话随时能翻回去看。模型看的那一份可以缩,记录本里的原话却一条都不删。而且压缩能提前在后台做,聊天不用停下来等它。 这一集记住一句话:对话太长时,把前面压缩成一条摘要。模型看的是摘要和最近的原话,记录本里什么都不删。 #Pi源码精读 #AIAgent #源码阅读 #上下文压缩

曝光 140 · 评论 1 · 点赞 1 · 书签 0 · 曝光/时 66.75974360679115

TwKit
正在载入