在AI编程工具日益庞杂的今天,一个名为Pi的工具却选择做减法。没有权限弹窗、没有子代理、没有计划模式——它的诞生,戳中了无数开发者的痛点。
AI编程助手已然成为开发者的“标配”。从Cursor到Claude Code,再到GitHub Copilot,这些工具功能愈发强大,同时也变得越来越“重”。内置功能越来越多,可扩展性却日益受限,开发者往往被迫适应工具的既定逻辑,而非根据自己的习惯组织工作。
就在这个功能堆砌的时代,一个名为Pi的终端编码工具正在悄然崛起,目前在GitHub上已获得5300+ Stars。Pi的核心理念只有一句话:让工具适应你的工作流,而不是让你适应工具。
一、Pi是什么?
Pi由游戏引擎libGDX的作者Mario Zechner开发,是一个极简的终端AI编程助手。项目采用Monorepo架构,包含多个独立但协同工作的模块:
简单来说,Pi不只是一个编程助手,而是一整套AI Agent开发工具包
二、为什么Pi值得关注?
极致的可扩展性
Pi的默认功能非常精简——只有read、write、edit、bash四个内置工具。但这不是缺陷,而是设计哲学的体现。Pi提供了四种扩展机制:
Extensions(扩展):用TypeScript编写,可添加自定义工具、命令、快捷键、UI组件 Skills(技能):遵循Agent Skills标准的能力包,按需加载 Prompt Templates(提示模板):可复用的Markdown提示词 Themes(主题):支持热重载的界面主题 这些扩展可以打包成Pi Packages,通过npm或git分享给他人。
“故意缺失”的功能
Pi的文档中有一段引人深思的“哲学声明”:
No MCP. 用CLI工具+README就够了,或者自己写扩展支持MCP。 No sub-agents. 用tmux启动多个Pi实例,或者自己写扩展。 No permission popups. 在容器里运行,或者自己写确认流程。 No plan mode. 把计划写到文件里,或者自己写扩展。 No built-in to-dos. 它们会让模型困惑,用TODO.md文件就好。
这种“故意不做”的态度,在功能堆砌成风的AI工具圈里显得格外清醒。Pi选择做减法,将决定权交还给开发者。
强大的会话管理
Pi的会话系统同样设计精巧:
树状结构:每条消息都有id和parentId,支持原地分支 /tree命令:可视化浏览整个会话树,跳转到任意历史节点继续对话 /fork命令:从当前分支创建新会话 自动压缩:长对话自动摘要,但完整历史保留在文件中
全面的LLM支持
Pi支持几乎所有主流LLM提供商:Anthropic Claude、OpenAI ChatGPT、GitHub Copilot、Google Gemini,以及通过API密钥接入的Anthropic、OpenAI、Azure OpenAI、Google Gemini/Vertex、Amazon Bedrock、Mistral、Groq、Cerebras、xAI、OpenRouter、Hugging Face等17+个提供商。
三、快速上手
安装只需一行命令:
npm install -g @mariozechner/pi-coding-agent设置API密钥后即可启动:
export ANTHROPIC_API_KEY=sk-ant-...pi四、日常使用
启动后,你便进入交互模式。界面分为四个区域:启动头(显示快捷键、上下文文件、提示模板、技能和扩展)、消息区(用户消息、助手回复、工具调用等)、编辑器(输入区域,边框颜色指示当前思考级别)和页脚(显示工作目录、会话名称、token/cache用量、成本、上下文用量和当前模型)。
编辑器功能
斜杠命令
输入/即可打开命令补全。常用命令包括:
消息队列
你可以在Agent还在工作时继续提交消息。Enter会将控制消息加入队列,Alt+Enter加入后续消息,Esc中止并将消息恢复至编辑器。
多种运行模式
Pi支持四种运行模式:
默认模式:交互式终端 -p, --print:打印响应后退出 --mode json:输出所有事件为JSON行 --mode rpc:通过stdin/stdout的RPC模式
在打印模式下,Pi还会读取管道传入的stdin并与初始提示合并:
cat README.md | pi -p "Summarize this text"会话管理
会话自动保存至~/.pi/agent/sessions/,按工作目录组织。常用CLI选项:
pi -c # 继续最近的会话pi -r # 浏览并选择会话pi --no-session # 临时模式,不保存pi --name "my task"# 启动时设置会话名称pi --session <uuid> # 使用特定会话文件pi --fork <session> # 分支现有会话[reference:11]五、定制与扩展
Pi的扩展能力是其最强大的特性之一。你可以通过以下方式加载扩展:
pi --no-extensions -e ./my-extension.ts # 禁用自动发现,只加载指定扩展在扩展中,你可以注册自定义工具、命令、事件监听等。例如:
export default function (pi: ExtensionAPI) { pi.registerTool({ name: "deploy", ... }); pi.registerCommand("stats", { ... }); pi.on("tool_call", async (event, ctx) => { ... });}如果你想禁用所有内置工具,只保留扩展工具:
pi --no-builtin-tools -e ./my-extension.ts或者精确控制哪些工具可用:
pi --tools read,write,bash # 只允许这三个工具pi --exclude-tools edit,write # 禁用edit和write,保留其他六、什么场景下适合用Pi?
追求极简透明的开发者:不想被黑箱工具束缚,希望完全掌控AI与代码的交互方式 需要多模型切换:日常工作需要在Claude、GPT、Gemini之间频繁切换,Pi的模型切换体验极其流畅 构建自定义AI工作流:通过扩展和技能包,你可以打造专属于自己的AI助手 树状会话管理重度用户:会话分支、节点跳转、历史回溯,Pi的会话管理可能是同类工具中最强的 对成本敏感:终端底部实时展示token/cache用量和费用,让你始终心中有数
七、写在最后
Pi的设计哲学与当前主流的AI编程工具形成了鲜明对比。在Cursor、Claude Code等工具不断堆砌内置功能的潮流中,Pi选择做减法——只提供最核心的四个工具,其余全部交给扩展系统。
这种选择并非功能不足,而是一种清醒的认知:开发者是工具的主人,而非工具附庸。
如果你也厌倦了被工具支配的感觉,不妨试试这个“叛逆”的终端AI编程助手。
夜雨聆风