2026 年 10 月 1 日,Earendil 发布了终端编码智能体 Pi 的 1.0 稳定版(MIT 许可)。它是一个极简、可扩展的 Agent harness:模型之外只给你 read、write、edit、bash 四个工具,子智能体、计划模式这些"标配"全部不在核心里,想要就装扩展或让 Pi 自己造。本篇按官方 README 与 1.0 发布说明,从安装走到扩展包改造,再到 Codemode 沙箱里编排 MCP 工具,末尾用实验性的 Pi Durable 起一个能崩溃恢复的长跑智能体。
Step 1:认识 Pi:一个只有四个工具的 harness
Pi 的核心哲学写在仓库首页:模型是引擎,harness 是整车其余的部分——提示词、控制流、工具与记忆管理。Pi 默认只给模型 read、write、edit、bash 四个工具,其余一切(子智能体、计划模式、权限弹窗)都通过扩展体系外挂。这个设计换来的是可审计:模型收到的上下文清清楚楚,出了问题容易定位,也方便跨模型复现。
它支持交互式使用、以 print 或 JSON 模式做自动化、通过 RPC 远程控制,也可以用 TypeScript SDK 嵌进你自己的应用——官方举的真实集成案例就是 OpenClaw。扩展、技能、提示词模板与主题可以打包成 Pi 包,通过 npm 或 git 分享。
Pi 是 harness 不是模型:启动后需要通过 /login 绑定模型订阅或填 API Key 才能干活。另外它与商业编码智能体行为差异较大——没有内置计划模式与子智能体,习惯"开箱全功能"的用户先有心理预期。
Step 2:安装与登录:三条路线按需选
官方安装脚本会锁定全部依赖版本,并支持用 pi update 升级,是推荐路线。Windows 用 PowerShell 版脚本,npm 全局安装作为备选(官方明确提示:npm 路线不锁定传递依赖):
# macOS / Linux
curl -fsSL https://pi.dev/install.sh | sh
# Windows (PowerShell)
powershell -c "irm https://pi.dev/install.ps1 | iex"
# 备选:npm 全局安装(不锁定传递依赖)
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
Pi 要求 Node.js 22.19 或更新版本——macOS、Linux 与 Windows 安装器在缺失时会自动安装,npm 路线则需要你自己保证。装完在项目目录启动,刚装好时在界面内输入 /login 绑定模型:
cd /path/to/project
pi
# 界面内执行:
# /login
升级一律用 pi update,不要混用 npm 与安装器两条路线,避免两套安装互相覆盖。
供应链敏感的团队注意:官方 npm 路线不带 --ignore-scripts 以外的额外加固,而安装器路线会锁定依赖并做 lockfile 校验。生产环境优先安装器,版本升级前先看 release notes。
Step 3:跑通任务与自动化:交互之外还有 print/JSON 模式
交互模式下直接用自然语言派活即可,四个内置工具足以覆盖"读代码—改文件—跑命令"的闭环。Pi 更有价值的用法在自动化:官方 README 列出了 print 模式与 JSON 模式(机器可读输出)、RPC 模式(远程控制)与 TypeScript SDK(嵌入应用)四种非交互形态。具体参数以你安装版本的 --help 输出为准:
cd /path/to/project
pi --help # 查看 print / JSON / RPC 等非交互模式参数
pi update # 后续升级
把 Pi 塞进 CI 或脚本时,JSON 模式输出的结构化结果便于下游程序解析;RPC 模式适合常驻进程里复用同一个会话。建议先在低风险仓库试跑完整任务链,再接入自动化流程。
1.0 起全屏 TUI 成为默认。如果你依赖终端回滚查看历史输出,把 tuiMode 设为 "regular" 即可找回 scrollback。
Step 4:用扩展与 Pi 包把它改造成你的形状
Pi 的可定制面有四层:extensions(行为扩展)、skills(技能)、prompt templates(提示词模板)与 themes(主题),它们都能打包成 Pi 包,通过 npm 或 git 分发。官方在 @earendil-works scope 下发布了七个包,包括 pi-ai(统一模型 API)、pi-agent-core(Agent 循环)、pi-coding-agent(CLI 本体)、pi-tui(终端界面)与 pi-telemetry(遥测),可作为写扩展时的参考实现:
# 查看官方包元数据,确认版本与依赖
npm view @earendil-works/pi-coding-agent
npm view @earendil-works/pi-ai
没有现成扩展时,官方的建议很直接:让 Pi 自己给你写一个——这正是极简 harness 的用法,你描述工作流,它生成扩展代码,你审阅后装回。这种"把定制本身交给智能体"的循环,是大而全商业智能体难以提供的。
安装第三方 Pi 包前先读源码:扩展能改写 harness 行为,权限等同于把控制权交给作者。官方对自身依赖有精确锁版与定期安全审计的实践声明,但社区包没有同等承诺。
Step 5:Codemode 与 MCP:让模型写脚本编排工具
1.0 最重要的新特性是 Codemode:Pi 不再把每个工具的完整 schema 塞进上下文逐个调用,而是把工具暴露给一个运行在 harness 侧的 JavaScript 沙箱,模型写一段短脚本一次完成"调用多个工具、循环、过滤、返回结果"。官方 v1.0.0 发布说明给出的数据是:默认工具加 Codemode 生效后,一次 GPT-5.6 请求的 prompt tokens 从约 5300 降到约 3300。1.0 同时把原生 MCP 支持收进核心——曾经公开表示不需要 MCP 的项目,在 MCP 成熟并带来工具元数据延迟加载、调用编排等能力后完成了转身。
伴随 Codemode 还有一批上下文工程改进:deferred tool loading 让大型工具目录按需加载而非每次全量注入;Anthropic 模型支持 cache warming;系统消息可以在会话中途插入,提示词与工具变更会落在它们实际发生的位置。这些都直接改善长会话的成本与一致性。
Codemode 的报错是引导式的:比如请求 tools.Bash 会提示正确的 tools.bash。让模型看懂报错自己改,比人肉排查快得多。
官方公告没有完整说明 Codemode 沙箱具体拦截什么。如果你的智能体要接触生产数据或付费 API,先在隔离环境评估沙箱边界,再决定给 Pi 什么权限——沙箱是风险缓解层,不是免检通行证。
Step 6:Pi Durable 起步:能崩溃恢复的长跑智能体(实验性)
与 1.0 同期发布的 Pi Durable 是一个独立的实验性包,把 Pi 的极简哲学延伸到"跑很久"的应用:对话管理与存储走 SQLite 加 JSONL 文件,每个任务步骤都落检查点,进程崩溃后可从断点恢复,还支持多人共同驾驶同一段会话。官方用"Pi 之于 Flask,而非 Django"来定位它——给你地基,不给你全家桶:
npm install @earendil-works/pi-durable @earendil-works/pi-ai @earendil-works/chord
上手路径:用 pi-ai 定义模型调用,用 pi-durable 包装会话与检查点逻辑,跑一个定时清理仓库、生成周报之类的长任务,中途手动 kill 进程再重启,验证它从 JSONL 检查点恢复。如果恢复点符合预期,再考虑更严肃的场景。
Pi Durable 被官方明确标注为 experimental,存储格式可能变更——不要把关键业务数据只存在它的 SQLite/JSONL 里,重要状态做外部备份。
长跑智能体的检查点频率与成本成正比。先按默认配置跑通,再根据任务时长调整落盘策略,避免每步全量快照拖慢任务。