Skip to content

Repository files navigation

pi-context

Pi agent 主动把已经消化完的过程移出当前上下文,需要时再完整找回——长任务不再越聊越钝。

为什么需要它

你让 agent 做一个长任务——比如修一个难缠的 bug,或者做一次跨十几个文件的重构。做着做着你会发现它变钝了:回答变慢、开始忘事、偶尔重复已经做过的操作。

原因很简单:对话历史越堆越长。里面大部分是"过程"——读过的日志、走过的弯路、早就修完的报错。这些东西任务早就消化完了,但每次回复模型都要重新看一遍全部历史。历史越长,注意力越稀,费用越高。

Pi 自带 compaction 兜底:接近窗口上限时,把旧历史在模型的当前上下文里换成一段摘要。原始记录仍在会话文件里,你可以手动用 /tree 回看。但整理的时机和边界由 host 决定,而且 agent 自己没有工具去搜索旧历史、取回被压掉的细节——摘要漏了什么,它就真的忘了。

pi-context 把这套能力直接交给 agent:它像人整理办公桌一样,自己判断哪段过程已经消化完,把它收进抽屉,桌面上只留一张简短的交接单;之后随时可以搜索抽屉里的东西,需要哪个细节就回去取。

一句话:Pi 原生 compaction 是 host 驱动的单向摘要;pi-context 是 agent 自主、可回溯的收纳。

安装

pi install git:github.com/KorenKrita/pi-context

或者在仓库目录里本地安装:

pi install .

也可以不安装、临时加载试用:

pi -e /path/to/pi-context/src/index.ts

兼容性: 当前版本针对 Pi(@earendil-works/pi-coding-agent0.84.0 开发并完成集成验证,要求 Node.js >=22.19.0。其它 Pi 版本未经验证;升级 Pi 后如遇报错,请先核对版本。

本 fork 只发布在 GitHub。npm 上未带 scope 的 pi-context 是上游项目,不要用 npm install 装这个 fork。

装完之后会发生什么

不需要你做任何事。agent 拿到三个新工具,会在合适的时机自己用:

工具 干什么
acm_checkpoint 存档。给当前对话位置起个名字,之后随时能回来。
acm_timeline 地图。查看对话主干和所有存档点,搜索整棵历史树——包括已经收起来的部分。
acm_travel 移动。回到树里的另一个位置:既用于折叠(回到早处、把之后的过程换成交接单),也用于取回(回到收起来的原文分支)。原文永不删除。

一次真实的使用过程

比如你让 agent 排查一次性能回退:

  1. 开始翻日志前,它先给当前位置存个档,叫 perf-baseline
  2. 排查完,它已经能明确说出"数据库已排除、重试循环是嫌疑、下一步读哪个文件"——于是折叠回 perf-baseline,把几十条搜索和日志输出换成这份结论,轻装继续。
  3. 之后如果需要某个被折掉的配置值,它先搜时间线;要完整前情时,凭自动留下的"回程票"travel 回原文分支。

全程你的文件和 Git 状态一动不动,变的只是之后发给模型的对话上下文。

你还能观察到:普通工具结果末尾多了一行小字,形如 [ctx 43% window · 86K/200K · …]——这是上下文压力仪表,只报数字,不催促。设 ACM_GAUGE_DISABLED=1 可以关掉。你也可以直接下指令:"存个档"、"看看时间线"、"回到刚才那个点"。

折叠是怎么保证不丢东西的

每次折叠,agent 都要写一份交接单(handoff),写给"折叠之后的自己":目标是什么、现在到哪了、下一步干什么——必要时还有证据在哪、改过哪些文件、放弃过哪些方向。合格标准只有一条:一个完全不知道前情的新 agent,只看这张单子就能无缝接着干。 写不出这样的单子,说明这段过程还没消化完,就不该折。

同时,每次折叠都自动留一张"回程票":折叠前的位置被记名存档,写进交接单里。想找回任何被折掉的细节,一次 travel 就回去了。

安全边界

  • 折叠和回溯只改对话上下文,不会回滚文件、进程、Git 提交或任何外部系统。存档点是对话位置的书签,不是文件备份。
  • 折叠永远可逆:原始历史完整留在会话树里。
  • 不取消、不替换 Pi 原生 compaction——真正超长的任务照样有原生机制兜底。
  • 每次操作都返回可核对的事实回执;不确定的结果如实标注,不伪装成功。
  • 扩展默认会往本地 ~/.pi/agent/state/acm-boundary-ledger.jsonl 追加匿名运行计数(时间、压力百分比、消息与存档点数量),用于观察折叠是否发生。不含任何对话正文,文件上限 8 MiB,不上传。设 ACM_LEDGER_DISABLED=1 可完全关闭。

开发

npm ci --ignore-scripts
bun run verify:acm   # 生成物一致性 + 全部测试 + 类型检查 + 真实 Pi host fixture

架构、host 兼容性契约、文案规则见 AGENTS.md

致谢

MIT License

About

Agentic Context Management for Pi — checkpoint, timeline, and time-travel tools

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages