整个过程你没离开终端,没切窗口,没打开任何 IDE。
这不是科幻,这是 Pi Coding Agent 的日常。
Pi 是一个运行在终端里的 AI 编码助手,类似于 Claude Code、OpenAI Codex CLI。但它的画风完全不一样——别人拼命往身上堆功能,它却主动往外"卸货"。
"There are many agent harnesses but this one is yours."Agent 工具很多,但这个是你自己的。
这句话是 Pi 的官方 slogan,翻译一下就是:别家都在说"我什么都能干",Pi 却说"你想要什么,我帮你搭"。

它到底是个啥?
说白了,Pi 就是一个"最小号"的 AI 编码助手。它只给你 4 个最基础的工具:
• 读文件(read):看看你项目里有啥 • 写文件(write):新建或覆盖文件 • 改文件(edit):精准修改某几行 • 跑命令(bash):执行任何 shell 命令
四个工具,撑起整个编码工作流。
听起来寒酸对吧?但 Pi 的哲学就在这里:不替你做决定,让你自己做主。
故意"偷懒"的秘密
你可能要问了:别的工具都有一大堆花里胡哨的功能——子 Agent、MCP 协议、计划模式、待办事项……Pi 咋啥都没有?
答案是:它故意不做。
Pi 把这叫做"原语而非功能"(Primitives, Not Features)。翻译成人话就是:与其塞给你一堆可能用不上的功能,不如给你一个干净的底座,你想要什么自己加。
打个比方,别的编码 Agent 像精装修的房子——拎包入住,但墙不能拆、格局不能改。Pi 则像毛坯房——空空荡荡,但你想怎么装修都行。
看这张对比表就明白了:
说白了,Pi 认为:不同团队的工作流天差地别,与其硬塞一个"标准答案",不如让你自己定义答案。
甚至你可以直接对 Pi 说:"帮我写个计划模式扩展",它写完,你敲一句 /reload,新功能立刻上线。
记住这句话:让 Pi 适应你的工作流,而不是你适应 Pi。
四层"积木"的秘密
虽然 Pi 用起来像个简单的命令行工具,但它的内部架构像一套精心设计的四层积木:

pi-coding-agent | pi 用的就是它 | ||
pi-agent-core | |||
pi-ai | |||
pi-tui |
你可以只拿第一层直接用,也可以抽出下面某一层自己搭东西。就像乐高积木——可以整套玩,也可以单拆某个组件。
Agent 是怎么干活的?
现在你大概知道 Pi 是什么了,那它到底怎么工作的?
每次你对 Pi 说一句话,它就开启一个"死循环":

1. 你的话发给大模型 2. 大模型说:"我需要读那个文件"→ Pi 去读 → 结果塞回上下文 3. 大模型说:"我再跑个命令看看"→ Pi 去跑 → 结果塞回上下文 4. 大模型说:"好了,做完了"→ Pi 把最终回复给你
这个循环会一直转,直到模型认为任务完成。整个过程全自动,你只需要看着就行。
5 分钟上手
说了这么多,上手其实超简单。
装一行:
# macOS / Linux 一键安装curl -fsSL https://pi.dev/install.sh | sh# 或者用 npmnpm install -g --ignore-scripts @earendil-works/pi-coding-agent# Windows PowerShellpowershell -c "irm https://pi.dev/install.ps1 | iex"配一下模型(二选一):
方式一:如果你有 Claude Pro/Max、ChatGPT Plus 或 GitHub Copilot 订阅,直接 /login 登录就行,零配置。
方式二:用 API Key,比如 Anthropic:
export ANTHROPIC_API_KEY=sk-ant-...piPi 支持 15 家以上的模型供应商——OpenAI、Google、DeepSeek、Mistral、xAI、OpenRouter……你能叫得出名字的基本都支持。想换模型?敲 /model 或者按 Ctrl+L,秒切。
跑起来:
cd 你的项目目录pi然后直接打字提需求就行,比如:"帮我看看这个项目怎么跑测试",Pi 会自动读文件、分析结构、给出答案。
不只是聊天框
Pi 不只能在终端里一问一答。它还有四种"姿势":
pi,开聊 | ||
pi -p "总结这个代码库" | ||
pi --mode json -p "..." | ||
换句话说,Pi 不光能陪你写代码,还能当"引擎"嵌到你自己的工具里。
让 Pi 更听话:AGENTS.md
每个项目都有自己的规矩——代码风格、测试命令、禁止事项。怎么让 Pi 知道这些?
在项目根目录建一个 AGENTS.md 文件就行:
# 项目规矩- 改完代码必须跑 `npm run check`- 不要在生产环境跑数据库迁移- 回答简洁,不要啰嗦Pi 启动时会自动加载这个文件,就像给学生发"班规"一样。你还可以建全局的(~/.pi/agent/AGENTS.md),对所有项目生效。
会话像棵树,不是直线
Pi 的会话管理很有意思——它不是一条直线,而是一棵树。
你可以随时在任何一个历史节点"分叉",从新方向探索,而不会丢失原来的分支。所有分支都存在同一个会话文件里。
这个功能搭配 /fork(从某条历史消息分叉)和 /clone(复制当前分支)使用,特别适合尝试多种解决方案的场景。
聊得太长了敲 /compact,Pi 会自动压缩历史消息,释放上下文空间。
扩展:给 Pi 装"技能"
Pi 最强大的地方是它的扩展系统。一个扩展就是一个 TypeScript 模块,你可以:
• 注册自定义工具(让模型调用你的业务 API) • 注册斜杠命令(添加 /mycommand)• 拦截危险操作(比如 rm -rf弹确认)• 注入自定义上下文(比如接 RAG 搜索)
写个扩展也就几十行代码:
export default function (pi) { // 拦截危险命令 pi.on("tool_call", async (event, ctx) => { if (event.input.command?.includes("rm -rf")) { const ok = await ctx.ui.confirm("危险!", "确定要执行 rm -rf 吗?"); if (!ok) return { block: true, reason: "用户阻止" }; } }); // 注册自定义工具 pi.registerTool({ name: "deploy", description: "部署到生产环境", parameters: Type.Object({ env: Type.String() }), async execute(toolCallId, params) { // 你的部署逻辑 }, });}Pi 仓库里有 50 多个示例扩展,覆盖子 Agent、计划模式、SSH 远程执行、沙箱隔离等各种场景。
安全吗?
直说吧:Pi 默认没有沙箱。它以你的用户权限运行,能读你的文件、跑你的命令、访问网络。
这不是 bug,是设计选择——Pi 认为沙箱应该由你决定怎么做。官方推荐三个方案:
• Gondolin 扩展:工具和命令在本地微虚拟机里跑,凭证留在主机 • Docker 容器:整个 Pi 进程放进容器 • OpenShell:策略控制的沙箱
建议:用 Pi 跑不受信任的代码之前,先隔离一下。配合 git 使用,随时能回滚。
一句话总结
Pi 不是功能最多的编码 Agent,但可能是最自由的那一个。
别人给你一辆配置拉满的轿车,连方向盘角度都给你定死了。Pi 给你一个发动机、四个轮子,和一张白纸——想造跑车造跑车,想造卡车造卡车。
如果你的需求很简单——一个透明可控、完全自己说了算的终端编码助手——试试 Pi:
npm install -g --ignore-scripts @earendil-works/pi-coding-agent官网:https://pi.devGitHub:https://github.com/earendil-works/pi(86K+ ⭐)
夜雨聆风