查看: 5|回复: 0

Pi 的上下文 其实不是一条聊天记录,而是从 Session Tree 里面临时构建出来的一条路径。

[复制链接]

12

主题

0

回帖

36

积分

新手上路

积分
36
发表于 3 小时前 | 显示全部楼层 |阅读模式
Pi 的上下文 其实不是一条聊天记录,而是从 Session Tree 里面临时构建出来的一条路径。

最近在研究Pi的源码,发现Pi保存的上下文在Session,只是模型的其中一个视角。

我现在才发现以前对 Agent Context 的理解还是太简单了。

1、Pi 保存的 Session 本身就是一棵树

Pi 的每条 Session Entry 都会记录自己的 id 和 parentId,所以一次任务并不是只能一直往后聊。

比如你已经尝试了一套方案,做到一半发现方向不对,可以直接回到前面的某个节点重新开始。之前那条路线不会被删除,而是继续保留在 Session 里面,新的方案则形成另外一个分支。

这里最有意思的一点是,Pi 保存的不是最终答案,而是 Agent 完整的工作过程。

2、但是模型每次并不会看到整棵树

这也是我觉得设计比较巧的地方。

Pi 会根据当前所在的节点,一路往前寻找父节点,最后得到当前这条分支真正有效的历史,再用这些内容去构建本轮 Context。

所以 Session 和 Context 其实不是同一个东西。

Session 更像完整的历史资产,而 Context 是从这些历史里面临时选择出来,给模型使用的一份工作记忆。

3、Compaction 本质上也没有修改这些经历

当 Context 越来越长以后,Pi 会把比较早的一部分内容总结成 Compaction Summary,然后继续保留最近的原始消息。

但是原来那些 Tool Call、对话、文件探索并没有因此从 Session 消失,被压缩掉的其实不是“记忆”,而只是模型当前查看这些记忆的方式。

这也是我现在越来越喜欢把 Session 和 Context 分开理解的原因。

4、甚至一条失败的分支,也不一定毫无价值

Pi 在切换 Session Tree 分支的时候,还可以对即将离开的路线生成 Branch Summary。

也就是说前面虽然走错了,但是找到的 Bug、试过的方法、修改过哪些文件、哪些方案已经证明不可行,这些经验依然可以被带到新的路线里面。

看到这里我才慢慢意识到,Session Tree 这个设计真正有价值的地方,可能不是让你可以随时 /tree 回去。

研究下来,我发现我研究的还是太浅薄了,有一些地方一定要深入到源码,或者是配合ai的解析,才能读懂里面的内容。

如果只是简单的知道概念,但是具体的实现不去了解,很难有较深的感悟。推荐大家,如果想深度学习,一定要去拆解源码。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:2776601884@qq.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|青ICP备2025004122号-1

在本版发帖
关注公众号
返回顶部