乐于分享
好东西不私藏

【AI工具】一款极简终端AI编程工具:pi

【AI工具】一款极简终端AI编程工具:pi

嗨,我是小华同学,专注解锁高效工作与前沿AI工具!每日精选开源技术、实战技巧,助你省时50%、领先他人一步。👉免费订阅,与10万+技术人共享升级秘籍!

不用Copilot,不用Cursor:程序员开始把AI搬进终端。你有没有过这样的经历——想用AI帮写代码,结果要在浏览器、IDE、终端之间来回切换,Copilot要收费,ChatGPT要翻墙,Cursor吃内存,好不容易配置好了,开发节奏也碎了。

我最近挖到一个开源项目,叫 pi(π),定位很有意思:极简终端编程Harness。它不需要图形界面,不需要IDE插件,直接在你的终端里跑AI编程,而且支持15家以上的模型提供商。

今天就把我的使用体验完整分享出来。


背景:为什么终端编程值得关注

先说一个判断:未来两年,AI编程的主战场会从GUI转向CLI。

原因很简单。GUI工具的响应速度受限于渲染层,而终端程序可以直接拿到stdout,在毫秒级别上反馈结果。更重要的是,程序员每天有大量时间泡在终端里,工具越靠近工作流,效率损耗越小——pi正是沿着这个方向做的减法。

目前市面上的AI编程工具分两类:一类是GitHub Copilot、Cursor这类GUI插件,功能强但侵入性高、资源消耗大;另一类是直接调用API的脚本,需要自己处理流式输出、上下文管理和多轮对话。pi做的事情,是在这两者之间找到一个极简的平衡点。

它本质上是一个Harness——你可以理解为"AI编程的脚手架",帮你把模型、工具、会话管理这些脏活累活封装掉,你只需要专注写prompt和看结果。


核心原理:模块化架构与树形会话

pi整个项目由5个核心包组成,分工非常清晰:

pi-agent-core 是运行时核心,负责Agent的工具调用和状态管理。你可以把它理解为AI编程机器人的"大脑",它知道什么时候该调用什么工具,怎么维护多轮对话的状态。

pi-ai 是统一接口层,同时支持15家模型提供商。这个设计很实用——你不需要因为换模型而去学习新的API,直接在配置里改一行就能切换。支持列表包括OpenAI、Anthropic、Google、MiniMax、小米MiMo等国内外主流平台。

pi-coding-agent 是对外的CLI入口,封装了4种运行模式:交互模式、JSON模式、RPC模式和SDK模式。这里重点说一下交互模式——它会在终端里跑一个实时UI,效果大概是这个样子:

交互模式

这个UI用的是pi-tui(pi自己的终端UI库),实现了差分渲染——简单说就是只更新变化的部分,所以不会有闪烁感,体验比传统终端程序流畅很多。

还有一个我认为是杀手级的特性:树形会话结构。传统的AI编程工具都是线性对话,你问完一个问题,下一个问题是在前一个答案基础上继续。但实际开发中,你会发现一个分支跑偏了想回到之前的节点,或者同时探索两种方案,线性结构就很不方便。pi的树形结构允许你随时开分支、切换分支,甚至把整个会话分享成HTML文件发给同事。

树形视图

功能能力:四大模式覆盖真实开发场景

说几个我实际用下来觉得有价值的场景。

场景一:日常代码补全和片段生成。 交互模式下,你直接在终端描述需求,AI返回代码片段,确认后粘贴进文件。这比在浏览器和IDE之间切换快很多,尤其适合单文件修改这种轻量场景。

场景二:JSON模式做自动化脚本。 如果你需要把AI编程接入自己的流水线,JSON模式可以直接返回结构化的结果,方便你做解析和后续处理。比如自动生成测试用例、自动写文档注释,这类需求用JSON模式非常顺手。

场景三:RPC模式做远程服务。 把pi当成一个本地AI服务启动,你的其他程序可以通过RPC调用它。这对于需要在团队内部署统一AI编程能力的场景很实用。

场景四:SDK模式嵌入自己的应用。 pi提供了完整的SDK,如果你想在自己的工具里集成AI编程能力,直接import就能用,不需要自己实现模型调用和状态管理。

另外值得提的是扩展性。pi支持TypeScript扩展(Extensions)、技能包(Skills)、提示模板(Prompt Templates)和主题(Themes)。这意味着你可以把它定制成自己团队的工作流——比如定义一套符合你们代码规范的提示模板,或者开发一个内部专用的扩展。

Doom扩展截图

上图是社区里的一个Doom扩展,把AI对话做成了游戏风格——虽然不是刚需,但说明这个扩展体系的灵活性是真实存在的。


应用场景:谁适合用pi

我的判断是,已经习惯在终端工作、有一定自主配置能力的开发者,是pi的核心用户。如果你符合以下特征,pi大概率会进你的日常工具箱:

每天大量时间在终端里工作,用Tmux/Screen分屏,讨厌频繁切换窗口;对某个特定模型有偏好(比如你只用MiniMax或者只用Claude),不想被绑定在某个IDE的生态里;团队需要一套统一的AI编程脚手架,但要保持各自的本地环境干净。

反过来说,如果你追求开箱即用、零配置,或者你需要的是深度IDE集成(如实时代码检查、引用跳转),现有的GUI工具链还是更成熟的选择。

还有一个值得关注的场景:上下文工程(Context Engineering)。pi原生支持AGENTS.md和SYSTEM.md这类上下文注入文件,并且内置了Compaction自动摘要功能——当对话上下文过长时,会自动压缩保留关键信息。这对于处理大型代码库、复杂多轮调试非常有帮助。


部署使用:5分钟上手

pi的安装非常简单,一行命令搞定:

curl -fsSL https://pi.dev/install.sh | sh

或者如果你用npm:

npm install -g @earendil-works/pi-coding-agent

安装完成后,首次运行会引导你配置API Key。pi支持环境变量配置,也支持交互式输入。建议把Key放到环境变量里,省去每次输入的麻烦。

基础使用:

# 交互模式启动pi# 指定模型pi --model anthropic/claude-3-5-sonnet# JSON模式pi --mode json --prompt "帮我写一个快速排序"

配置文件在 ~/.config/pi/config.json,你可以在这里预设默认模型、主题、扩展等。

文档这块目前还比较简略,高级功能的配置说明不够充分。不过项目源码注释覆盖率超过70%,关键函数都有使用示例和参数说明,TypeDoc文档也比较完整——看源码基本上能完整还原用法,这对于开源项目来说是加分项。


总结

用了一段时间,我的感受是:pi是一个定位清晰、克制做减法的项目。它没有试图做一个功能堆砌的"AI IDE",而是专注于把终端编程这件事做透。

工具越靠近工作流,效率损耗越小——这是pi最底层的逻辑,也是它最值得被关注的原因。

核心优势总结三点:

第一,多模型统一接口,换模型成本极低;第二,树形会话结构,真正解决了开发过程中的分支探索需求;第三,模块化设计,从CLI到SDK到RPC,覆盖了从个人到团队的不同场景。

项目地址

https://github.com/earendil-works/pi