Posthorse
Posthorse:Pi 编码 Agent 分叉的原生免摘要上下文窗口扩展——rollover 换窗续跑长任务,JSONL 转录只追加不丢失,durable notes 与窗口感知 history 支持恢复。MIT 开源。
这是什么?适合谁?
Posthorse(作者 fitchmultz,MIT 开源)是 fitchmultz/pi 分叉(Pi 编码 Agent 的分支)的上下文窗口扩展。名字取自驿站的”换马”:信使和消息不变,马换新的。对应到模型上就是:全新上下文、同一任务、完整可恢复的转录。
它解决的问题:编码 Agent 跑长任务时上下文窗口耗尽,传统做法是”摘要压缩”(summarize compaction)——会丢细节、丢中间结论。Posthorse 提供原生(no-summary)方案:一次 rollover 把旧窗口从模型活跃上下文中移除,但 JSONL 转录保持只追加(append-only)且完整,配合 rollover 工具、durable notes 和窗口感知 history,任务可在新窗口里继续。
适合谁:用 fitchmultz/pi 分叉跑超长编码任务(大型重构、多阶段迁移)的重度用户;研究 Agent 上下文管理与 compaction 替代方案的开发者。
不适合谁:用官方未修改版 Pi 的用户(明确不支持,装上会报扩展错误——Pi 本身不受影响);需要开箱即用商业 IDE 的用户。
使用前提:Node ≥22.19.0;必须运行 fitchmultz/pi 分叉(CI 基线 commit f9b0617,对应 Pi 0.85.0);理解”上下文窗口耗尽”是怎么回事。
准备工作
- 环境:Node ≥22.19.0,
fitchmultz/pi分叉源码 - 安装:
git clone https://github.com/fitchmultz/pi.git && cd pi && git checkout f9b0617 && npm install --ignore-scripts && npm run build - 成本:MIT 免费开源;模型 token 费用照常(rollover 反而常省 token——不重复摘要)
- 时间:构建分叉 + 安装扩展约 15 分钟;理解窗口策略约 30 分钟
- 前置知识:Pi Agent 用法、上下文窗口概念、npm/git 基本操作
快速上手(3 步)
第一步:构建 Pi 分叉
git clone https://github.com/fitchmultz/pi.git
cd pi
git checkout f9b06177e565f70cd243a785d088d1c491830dbd
npm install --ignore-scripts
npm run build
用 node packages/coding-agent/dist/bundle/cli.js 直接跑,或在 packages/coding-agent 里 npm link 变成 pi 命令。
预期产出:可运行的分叉版 Pi。注意 pi --version 读的是 checkout 的包元数据,不能证明源码已构建——更新分叉后必须重跑 install+build。
第二步:安装 Posthorse
pi install npm:pi-posthorse # 从 npm 安装
# 或
pi install git:github.com/fitchmultz/pi-posthorse # 从 Git,加 @<tag> 可锁版本
# 或试运行不安装:
pi -e git:github.com/fitchmultz/pi-posthorse
预期产出:扩展加载成功。若误装到官方 Pi 上,session 启动时会得到清晰的扩展错误(Pi 本身照常运行)。
第三步:长任务中触发 rollover
在长编码任务中按 Posthorse 的稳定窗口指引操作:new_context 开新窗口(旧窗口移出活跃上下文、转录仍完整),get_context_remaining 查余量,durable notes 沉淀跨窗口结论,窗口感知 history 恢复过程。
预期产出:任务跨多个窗口持续推进,无摘要丢失,完整 JSONL 转录可审计/恢复。
常见踩坑(症状 → 原因 → 解决)
- 装在官方 Pi 上报错。原因:官方 Pi 缺少分叉的原生
context_window条目、session_before_auto_compacthook 和ctx.getCompactionSettings()。解决:换用fitchmultz/pi分叉——README 明确”官方未修改 Pi 不支持”。 - 更新分叉后扩展行为异常/失效。原因:
pi --version显示新版本但源码没重新构建。解决:每次更新分叉后重跑npm install && npm run build再重启 Pi。 - rollover 后”感觉模型失忆”。原因:新窗口天然没有旧上下文细节。解决:rollover 前把关键结论写进 durable notes——notes 设计目的就是跨窗口携带信息。
- 误用 Codex 原型给 Codex 用户。原因:仓库里
adapters/codex-posthorse看起来通用。解决:README 明确它是隔离的原型实验,“not ready for everyday use”,不在 Pi 包内。 - 找不到更新命令。解决:
pi update npm:pi-posthorse或pi update --extensions;锁了 Git 版本的按 README 指引移动 pin。
初级用法
- 余量监控:长任务开始前先用
get_context_remaining心里有数,别等爆窗。 - notes 沉淀:每个阶段性结论(“模块 X 已迁移完毕,跳过 Y”)随手写 notes,rollover 后零损失。
- 试运行评估:
pi -e git:...单次运行试用,不影响现有安装。
高级玩法
- 多窗口长重构:超大重构拆成多窗口接力,每窗 rollover 一次,全程转录完整可审计。
- history 恢复:中断后用窗口感知 history 从 JSONL 恢复现场,继续同一 journey。
- 策略研究:Posthorse 拥有策略层(稳定窗口指引、一次性 checkpoint 提醒),可对照摘要压缩方案做 A/B 评估。
小技巧
- 把
f9b0617基线 commit 记下来,分叉更新后对照 CI 基线再决定是否升级。 - npm 版和 Git 版二选一即可;要锁版本用 Git + @tag。
- durable notes 内容写得”可独立理解”(不带上下文代词),跨窗口后才有用。
- JSONL 转录是 append-only 的——直接翻文件审计,不依赖任何 UI。
- Node 版本严格 ≥22.19.0,别用 20.x 硬跑。
常见问题 FAQ
Q1: 能用在官方 Pi 或其他编码 Agent 上吗?
A: 不能用于官方 Pi(明确不支持,会报清晰扩展错误);对 Codex 有一个隔离原型 adapters/codex-posthorse,但 README 声明”not ready for everyday use”且不在 Pi 包内。
Q2: rollover 和摘要压缩(compaction)到底差在哪?
A: 摘要压缩把旧上下文提炼成摘要塞回窗口——有损;rollover 把旧窗口整个移出活跃上下文,转录完整保留在 JSONL,新窗口从 durable notes 恢复关键信息——无损且可审计。
Q3: 一定要自己构建分叉吗?
A: 是,Posthorse 依赖分叉的原生 context_window 机制和 hook,README 要求 clone + checkout 指定 commit + build。
Q4: 更新扩展会丢历史吗?
A: 不会——JSONL 转录 append-only,扩展更新不触碰转录文件。
Q5: 和 Claude Code 的 auto-compact 比呢?
A: Claude Code 的 auto-compact 是摘要式;Posthorse 代表 no-summary 路线。两者哲学不同,适合对”中间结论零丢失”要求高的场景。
免责声明
本文基于公开资料整理,AI 辅助生成,未实际构建分叉运行验证。功能行为以官方仓库 README 为准。
参考链接
📊 评分与标签
评分说明
总分 7.2/10 · S_入选
📊 可观测社区指标(采集日期:2026-09-11)
- GitHub: fitchmultz/pi-posthorse ★240, 🔱6(GitHub 实时核验)
- License: MIT;默认分支 main;仓库创建 2026-08-31(约 11 天);主要贡献者 2 人(fitchmultz 26 / mitch-fultz 25)
- 依赖面:仅支持
fitchmultz/pi分叉(CI 基线 commit f9b0617,Pi 0.85.0),官方 Pi 明确不支持
评分依据可追溯至公开来源,每项分数均有明确理由和数据支撑。
🤖 Agent 能力 1.5/2.0
- 提供原生 no-summary 上下文机制:rollover(旧窗口移出活跃上下文)、
new_context、get_context_remaining、durable notes、窗口感知 history、一次性 best-effort checkpoint 提醒 - 分工清晰:Pi 持久化边界,Posthorse 只管策略层
- 竞品对比 1(Pi 官方 auto-compaction):摘要式压缩有损;Posthorse 无损换窗
- 竞品对比 2(Claude Code auto-compact):同样是摘要路线;Posthorse 代表 no-summary 路线,转录全程 append-only
- 限制:能力绑定特定分叉,不具通用 Agent 兼容性
🖐️ 易用性 1.0/1.5
- 安装命令简单(
pi install npm:pi-posthorse,支持-e单次试运行),但前置要求重:需自行 clone+checkout+build 分叉,Node ≥22.19.0 - 竞品对比 1(npm 即装的普通扩展):无前置构建;本扩展必须先建分叉
- 竞品对比 2(官方 Pi 插件):装上即用;本扩展装错宿主会报错(但报错信息清晰、Pi 不受影响)
- 缓解:README 有完整构建命令与坑位说明(
pi --version不证明已构建)
🔌 生态集成 1.2/2.0
- Pi 包体系内一等公民(npm + Git 双渠道、可锁版本、
pi update升级);附 Codex 原型适配器(明确实验性质) - 竞品对比 1(多平台上下文工具):跨宿主通用;Posthorse 单宿主
- 竞品对比 2(自写 compaction 脚本):无分发渠道;Posthorse 走正规包管理
👥 社区支持 1.0/1.5
- ⚠️ 建仓约 11 天,★240 关注度上升快;贡献者 2 人(作者 + mitch-fultz),issues 0 open;个人项目无组织背书
- 来源:GitHub 仓库(采集日期 2026-09-11)
- 竞品对比 1(上游 Pi 生态):社区更大;Posthorse 是分叉上的单一扩展
- 竞品对比 2(成熟 Agent 框架扩展):贡献者数十;本项目早期
- 缓解:两贡献者贡献量均衡(26/25),非纯单人项目
💡 创新程度 1.5/1.5
- “换马不换信使”的 no-summary 滚动窗口是清晰的差异化主张:完整可恢复转录 vs 摘要压缩,直击长任务中间结论丢失痛点
- 竞品对比 1(各 Agent 自带 compaction):均摘要路线;Posthorse 公开走另一条路
- 竞品对比 2(上下文工程研究项目):多为论文原型;Posthorse 是可安装运行的包
🔒 稳定性 1.0/1.5
- CI 基线锁定具体 commit(f9b0617),升级路径明确(重跑 build +
pi update);误装官方 Pi 有清晰报错且不影响宿主运行——边界防御做得好 - 竞品对比 1(无版本锁的扩展):更新即崩;Posthorse 有基线概念
- 竞品对比 2(静默失败的扩展):错误难查;Posthorse 报错显式
- 限制:项目年轻(11 天),跨版本长期稳定性无数据;本站未实测 rollover 过程
🏷️ 标签说明
- AI编程: 面向 Pi 编码 Agent 的上下文扩展。来源:GitHub README
- 上下文管理: 核心即 rollover/no-summary 窗口管理。来源:GitHub README
- 开源免费: MIT License。来源:GitHub
- Pi扩展: Pi 扩展体系内分发(npm/Git 渠道)。来源:GitHub README
- 长任务: 设计目标即长编码任务跨窗口续跑。来源:GitHub README
📋 来源核实
- ✅ 已核验: GitHub 仓库 fitchmultz/pi-posthorse — 2026-09-11 实时核验:★240、🔱6、MIT、创建 2026-08-31、默认分支 main、贡献者 fitchmultz(26)/mitch-fultz(25)、topics(coding-agent/context-window/llm/pi/pi-extension/pi-package)
- ✅ 已核验: README 全文 — 2026-09-11 抓取:换马比喻、Pi/Posthorse 职责分工、Node ≥22.19.0 要求、CI 基线 f9b0617、官方 Pi 不支持声明、安装/更新命令、Codex 原型隔离声明
- ✅ 已核验: 依赖分叉 fitchmultz/pi 与上游 earendil-works/pi — 2026-09-11 README 链接核验存在
- ⚠️ 未实测:本站未实际构建分叉并运行 rollover,窗口行为以官方 README 为准
同分类推荐
开源框架 分类下的其他 Agent