乐于分享
好东西不私藏

AI编程助手 Pi:不做MCP、不做子代理、不做弹窗,为什么反而更好用?

AI编程助手 Pi:不做MCP、不做子代理、不做弹窗,为什么反而更好用?

在AI编程工具日益庞杂的今天,一个名为Pi的工具却选择做减法。没有权限弹窗、没有子代理、没有计划模式——它的诞生,戳中了无数开发者的痛点。

AI编程助手已然成为开发者的“标配”。从Cursor到Claude Code,再到GitHub Copilot,这些工具功能愈发强大,同时也变得越来越“重”。内置功能越来越多,可扩展性却日益受限,开发者往往被迫适应工具的既定逻辑,而非根据自己的习惯组织工作。

就在这个功能堆砌的时代,一个名为Pi的终端编码工具正在悄然崛起,目前在GitHub上已获得5300+ Stars。Pi的核心理念只有一句话:让工具适应你的工作流,而不是让你适应工具。

一、Pi是什么?

Pi由游戏引擎libGDX的作者Mario Zechner开发,是一个极简的终端AI编程助手。项目采用Monorepo架构,包含多个独立但协同工作的模块:

模块
功能
pi-coding-agent
核心:交互式AI编程CLI
pi-ai
统一的多LLM提供商API
pi-agent-core
Agent运行时,支持工具调用和状态管理
pi-tui
终端UI库,支持差分渲染
pi-web-ui
Web组件库,用于AI聊天界面
pi-mom
Slack机器人,可将消息委托给Pi
pi-pods
vLLM部署管理CLI

简单来说,Pi不只是一个编程助手,而是一整套AI Agent开发工具包

二、为什么Pi值得关注?

  1. 极致的可扩展性

Pi的默认功能非常精简——只有read、write、edit、bash四个内置工具。但这不是缺陷,而是设计哲学的体现。Pi提供了四种扩展机制:

  • Extensions(扩展):用TypeScript编写,可添加自定义工具、命令、快捷键、UI组件
  • Skills(技能):遵循Agent Skills标准的能力包,按需加载
  • Prompt Templates(提示模板):可复用的Markdown提示词
  • Themes(主题):支持热重载的界面主题 这些扩展可以打包成Pi Packages,通过npm或git分享给他人。
  1. “故意缺失”的功能

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选择做减法,将决定权交还给开发者。

  1. 强大的会话管理

Pi的会话系统同样设计精巧:

  • 树状结构:每条消息都有id和parentId,支持原地分支
  • /tree命令:可视化浏览整个会话树,跳转到任意历史节点继续对话
  • /fork命令:从当前分支创建新会话
  • 自动压缩:长对话自动摘要,但完整历史保留在文件中
  1. 全面的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用量、成本、上下文用量和当前模型)。

  1. 编辑器功能
功能
操作方法
文件引用
输入@模糊搜索项目文件
路径补全
Tab键
多行输入
Shift+Enter(Windows Terminal中Ctrl+Enter)
粘贴图片
Ctrl+V,或拖入终端
执行Shell命令
!command(将输出发送给模型)
隐藏Shell命令
!!command(不发送输出)
打开外部编辑器
Ctrl+G
  1. 斜杠命令

输入/即可打开命令补全。常用命令包括:

命令
说明
/login, /logout
管理OAuth或API密钥凭据
/model
切换模型
/settings
调整思考级别、主题、消息交付方式
/resume
选择之前的会话
/tree
跳转到会话树的任意节点继续对话
/fork
从之前的用户消息创建新会话
/export [file]
将会话导出为HTML
/share
上传为私有GitHub gist,生成可分享的HTML链接
  1. 消息队列

你可以在Agent还在工作时继续提交消息。Enter会将控制消息加入队列,Alt+Enter加入后续消息,Esc中止并将消息恢复至编辑器。

  1. 多种运行模式

Pi支持四种运行模式:

  • 默认模式:交互式终端
  • -p, --print:打印响应后退出
  • --mode json:输出所有事件为JSON行
  • --mode rpc:通过stdin/stdout的RPC模式

在打印模式下,Pi还会读取管道传入的stdin并与初始提示合并:

cat README.md | pi -p "Summarize this text"
  1. 会话管理

会话自动保存至~/.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编程助手。

相关学习资料