Skip to content

Pi 本体:极简 Agent Harness

Pi 不是一个模型

第一次看到 Pi,很容易把它和 Claude Code、Codex 归到同一类,以为又是一个「开箱即用的 AI 编程产品」。更准确的说法是:Pi 是一个开源的 Agent Harness。它负责把大模型、工具调用、会话状态和终端交互连起来,本身并不绑定任何具体模型。

┌─────────────────────────────────────────────────┐
│                   pi-coding-agent                │
│        (终端交互、会话、Slash 命令、TUI)           │
├─────────────────────────────────────────────────┤
│                    pi-agent-core                 │
│       (Agent Loop、工具注册、状态管理、会话树)      │
├─────────────────────────────────────────────────┤
│                      pi-ai                      │
│   (OpenAI / Anthropic / Google / 自定义 Provider) │
└─────────────────────────────────────────────────┘

这三层拆分把两条路都留了出来:一条是直接用现成的 CLI(pi-coding-agent),另一条是把底层运行时嵌进自己的程序,做面向写作、研究、自动化或者垂直业务的 Agent。

轻量,不只是安装包小

Pi 常被叫做「极简 Agent」。如果这个「极简」只是界面简单,就没有多少分析价值。真正影响使用成本的,是每一次模型调用前需要携带多少固定上下文

一个 Coding Agent 每走一步,通常都要重新携带系统提示词、工具定义、会话历史和工具返回结果。固定内容越长,多轮任务里的重复成本越高。

Pi 默认只提供 4 个核心工具:

工具作用
read读取文件
bash执行 Shell 命令
edit修改已有文件
write创建或覆盖文件

从当前源码看,只有实际传给模型的工具才会出现在系统提示词的工具列表里。默认提示词也没有塞一套庞大的项目管理流程,怎么组织工作、用什么节奏,都由用户自己决定。

Skill 的处理也遵循同一思路:启动时只把 Skill 的名称和简介放进上下文;当任务确实需要某项能力时,再读取完整的 SKILL.md

Session Start


[ 名称 + 简介 ] ← 只放元数据,几十 Token 一条

    │  任务触发

[ 读完整 SKILL.md ] ← 真正用到时才加载

这对我很重要。以后无论是代码分析、资料研究还是图片生成,我都可能积累越来越多 Skill。如果几十份完整说明每轮一起发送,能力越多,成本反而越重。Pi 允许我保留一个小内核,按任务装入需要的能力。

它究竟能省多少 Token?没有一个万能数字

围绕 Pi 的 Token 效率,社区里已经出现过「少 40%」「少一半」「省 90%」「便宜 30 倍」等说法。这些数字不一定是假的,但它们测量的通常不是同一件事——有的统计单轮固定前缀,有的统计完整任务,有的把缓存 Token 算进去,有的只看最终账单,还有的没有把失败和重试计入。

我更看重下面两组相对可靠的外部材料。

1. Databricks:每轮上下文约少 3 倍

Databricks 用自家百万行、多语言代码库里的真实 PR 构建内部 Benchmark。任务来自近期人工代码修改,并使用隐藏测试判断 Agent 有没有完成。为了避免 Agent 从 Git 历史里找到原答案,他们还在运行期间切断了工作副本与原仓库历史的连接。

在相同模型、相同思考强度下切换不同 Harness,Databricks 观察到:

  • 部分组合的单任务成本相差超过 2 倍,同时质量相当;
  • Pi 每一轮发送给模型的上下文约少 3 倍
  • Pi 保持了更紧凑的工作上下文,并用更少的运行次数完成任务。

这组结果对我有参考价值,因为任务来自真实代码库,也使用确定性测试验收。不过公开文章没有给出完整样本量和全部逐任务原始记录,所以我不会把「约少 3 倍上下文」改写成「Pi 普遍节省 67% Token」。它只证明,在 Databricks 的任务和配置里,Harness 本身足以显著改变成本。

2. 预注册研究:固定前缀相差约 12–15 倍

2026 年 8 月,PointFive 的两位作者发布了一项预注册研究。核心实验包含 24 个确定性代码任务、6 个开放权重推理模型以及 Claude Sonnet 5,共记录 4,644 次有效运行。

研究在其特定配置中测得:

指标Pi对照 Harness
固定前缀1,147 – 1,642 Token15,983 – 20,330 Token
固定前缀差距1 倍约 12 – 15 倍
匹配任务中的轮次基准约 2 – 7 倍

固定前缀包括系统提示词和工具 Schema。研究最终报告,在匹配的模型、任务和提示词组合里,两套 Harness 的「每次成功成本」差距达到 5 – 30 倍。

「5–30 倍」很有传播性,也最容易被误用。这项研究里的任务最多涉及 4 个文件,整体成功率较高,部分开放模型还经过协议转换网关。它是 2026 年 8 月发布的预印本,复现材料公开,但还不能代表所有长周期生产项目。

我愿意引用它,是因为它把固定前缀、轮次、缓存、成功率和最终成本分开测量;我不会把实验里的最大数字直接写成 Pi 的产品承诺。

固定开销小,不等于整个任务一定更快

如果只放支持 Pi 的数据,这篇文章会变成一篇软文。

Composio 使用同一个 DeepSeek V4 Pro、同一组 30 个工具任务、相同工具和验收规则测试多种 Harness,结果很有意思:

Harness通过率平均 Token / 任务平均轮次中位时间
Pi21 / 30(70%)924,99016.3362.9 s
OpenCode19 / 30(63.3%)710,14013.1280.6 s
Claude Code19 / 30(63.3%)649,90012.1181.8 s

Pi 的通过率最高,总花费低于 OpenCode;但它使用了最多的原始 Token,平均轮次更多,中位完成时间也是最慢的。

这组反例帮助我把 Pi 的优势说得更准确:它降低了每轮调用的固定成本,最后总账仍然取决于模型走多少轮、读取多少文件、调用多少工具,以及失败后是否返工

轻量 Harness 也会被用重。装入大量常驻工具和扩展、把多个无关目标塞进一个长会话,或者反复要求模型「深度思考、比较所有方案、确认绝对正确」,都可能把节省下来的固定 Token 再花出去。

速度也要拆开看

Pi 作者 Mario Zechner 在 X 上公布过一项传输优化:通过 OpenAI WebSocket 使用增量更新后,只发送最新增加的上下文,在对应链路上获得了 66% 的吞吐提升

这是特定 WebSocket 链路的吞吐提升,不是总 Token 减少 66%

吞吐提升、Token 减少和完整任务提速是三个指标。增量传输可以减少重复数据的传送和处理,却不意味着模型少看了 66% 的逻辑上下文,也不能推导出其他 Provider 同样提速。

以后评估 Pi,我会同时记录:

  • 新输入 Token
  • 缓存读取
  • 输出 Token
  • 推理耗时
  • 轮次
  • 工具调用
  • 任务成功率
  • 墙钟时间

只拿其中一个数字,很容易得到一个好看但不完整的结论。

Pi 适合我的地方:可理解、可调整、可积累

我选择 Pi 时,也接受了它没有把所有功能做好的现状。Pi 没有内置完整的权限系统,也没有为文件、进程、网络和凭据提供默认沙箱。官方文档明确说明:它默认继承启动用户和进程的权限;需要更强边界时,应使用容器、微型虚拟机或策略沙箱。

Pi 默认边界
────────────────────────────────────────────────
  进程权限   →  启动用户权限(root 就是 root)
  文件访问   →  无默认限制
  网络访问   →  无默认限制
  凭据使用   →  模型可读环境变量 / auth.json

  ↓ 需要更强边界时
  Docker / Firecracker / Landlock / Gondolin

这意味着 Pi 不适合毫无准备地交给普通用户,更不能未经隔离就用于多租户或敏感环境。扩展直接运行在同一个进程里,也要求认真审查来源和权限。

对我的目标来说,这些边界可以管理。我想逐步形成自己的 Agent 工作环境:

  • 底层模型可以更换,不把工作流绑定在单一厂商;
  • Skill 和工具继续保持文件化、可迁移;
  • 编程和自媒体创作使用不同的项目能力;
  • 从一条稳定链路开始,再逐渐加入研究、写作、图片和自动化;
  • 每加一项能力,都知道它增加了什么上下文、权限和维护成本。

Pi 的默认状态不完整,却足够透明。对希望开箱即用的人,这会增加学习和维护工作;对愿意理解 Agent 如何运行、希望自己控制能力边界的人,这种克制反而留下了空间。

接下来,我会怎么折腾 Pi

这一篇先解决「Pi 是什么、为什么值得选」的问题。后面的实践不会一开始就堆扩展,我准备按下面的顺序推进:

  1. 确认本机安装、命令来源、模型登录和默认工具;
  2. 用只读模式分析一个真实项目,观察它实际读取了什么;
  3. 在隔离的小项目里完成一次修改、测试和差异检查;
  4. 阅读 Pi 的源码结构,理解 Agent Loop、会话和工具注册;
  5. 分别为开发与自媒体创作建立项目级 Skill;
  6. 用同一模型、同一任务和同一验收条件,测量 Token、轮次、时间和成功率;
  7. 在需要无人值守或处理敏感资料前,再补外部沙箱、审计和凭据隔离。

我不会因为几张 Benchmark 图表就认定 Pi 一定比其他 Harness 更好。现在能确认的是,Pi 把系统提示词、工具集合、Skill 加载和上下文管理都做得足够轻,大部分决定权也留给了我。

这套取舍适合我。

博客内容遵循 CC BY-NC-SA 4.0 协议。