认识 Pi —— 一个轻装上阵的编码 Agent
30 秒版本: Pi 是一个住在终端里的编码 Agent,核心小得有点不好意思,但它假设你可能想改造它。它只带了 4 个工具、一份极小的系统提示词,和一个大大的理念:缺什么,你自己造。
先说说,编码 Agent 到底是个啥
如果你没用过,一句话介绍:在项目目录里打开终端,用人话描述你想要什么,一个大语言模型就开始动手干活——读你的文件、改代码、跑命令、看结果、不行再试,直到搞定。
它不是聊天机器人,更像"一个读源码永远不嫌累的超快实习生"。
Pi 就是这样一个工具。官方给它的定义是 "minimal terminal coding harness"(极简终端编码外壳)——每个词都在干正事:
- minimal(极简)——它故意比竞品少带很多东西
- terminal(终端)——没有 GUI,没有 IDE 插件,你的 shell 在哪它就在哪
- harness(外壳)——它不只是一个应用,而是一个可以任你装配件的骨架
一个反直觉的赌注:少即是多
大多数编码 Agent 都在拼功能:计划模式!子 Agent!权限弹窗!内置待办!Pi 看了看这张清单,说了句"不用了谢谢"——甚至在官网专门开了一节,讲它选择不做什么。
为什么有人敢这么干?Pi 的答案有三层:
1. 上下文是最贵的资源。 所有内置的东西——工具描述、系统指令、功能机制——都在跟你的代码抢同一个上下文窗口。Pi 的 4 个默认工具(read、write、edit、bash)加上系统提示词,总共才一千个 token 左右。省下来的空间,全还给了你真正的工作。
2. 内置功能就是冻结的决策。 一个你关不掉的功能,就是别人替你做过的决定。Pi 更愿意给你原料:TypeScript 扩展、技能、提示词模板、主题、可分享的 pi 包。不喜欢某个行为?改。缺什么?自己写——或者装别人写好的。
3. 小的东西读得完。 Pi 的核心小到一个人真的能通读。这也是它能当 Agent 设计教材的原因——也是这个网站存在的原因。
打个比方:有的 Agent 卖给你一辆整车,Pi 卖给你发动机、底盘和一本很好的说明书——外加一间工作室。
五个包,一张图
项目内部是一个 monorepo。三个包摞成一个栈,每一层都能单独用:
pi-coding-agent 完整 CLI 产品——同时也是 SDK
▲
pi-agent-core Agent 运行时:循环、工具、状态、事件
▲
pi-ai 一套 API 调用 30+ 家大模型
pi-tui 终端 UI 库,和上面几位完全独立、相安无事
想统一调用各家模型?拿 pi-ai 走人。想用自己的工具跑自己的 Agent?再加上 pi-agent-core。想要完整的编程助手?那就是 pi-coding-agent。而 pi-tui——终端渲染引擎——谁都不依赖,它只是一个恰好跟项目同作者的独立库。
后面我们会逐个认识它们。现在先记住这个栈的形状就够了。
真的跑起来
哲学讲够了,上手:
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
(Linux/macOS 也可以用 curl -fsSL https://pi.dev/install.sh | sh。--ignore-scripts 是 Pi 自己都推荐的供应链卫生习惯——它不需要安装脚本。)
然后在任意项目目录里:
cd 你的项目
pi
认证一次——在 Pi 里输入 /login(支持 Claude Pro/Max、ChatGPT Plus/Pro、GitHub Copilot 订阅登录),或者设置 ANTHROPIC_API_KEY 这样的 API key 环境变量。
就这样。输入你的第一个请求:
Summarize this repository and tell me how to run its checks.
(总结这个仓库,告诉我怎么跑它的检查)
Pi 会开始读文件、思考、回答。恭喜——你正在观看一个 Agent Loop 运转。它到底怎么转的,下一章揭晓。
第一天就该知道的 5 个小技巧
这些来自官方快速上手文档,能立刻让 Pi 变得好用:
用 @ 引用文件。 输入框里打 @ 模糊搜索项目文件,或者命令行直接带上:
pi @src/app.ts @src/app.test.ts "Review these together"
用 ! 跑 shell 命令。 一个叹号:跑命令并把输出给模型看;两个叹号:悄悄跑,输出不进模型上下文:
!npm run lint ← 模型会看到结果
!!npm run build ← 噪音不给模型看
对话中途换模型。 /model(或 Ctrl+L)打开模糊搜索选择器;Shift+Tab 切换思考深度。在意账单的话,这是你最好的朋友。
会话自动保存。 关掉终端,明天回来,pi -c 无缝续上。pi -r 浏览历史会话。
一次性模式,给脚本用。 不需要交互会话:
pi -p "Summarize this codebase"
cat error.log | pi -p "What's going wrong here?"
把你项目的规矩教给它
一个不起眼但影响巨大的功能:Pi 启动时会读上下文文件。在项目根目录放一个 AGENTS.md:
# Project Instructions
- Run `npm run check` after code changes.
- Do not run production migrations locally.
- Keep responses concise.
Pi 会自动读取(还会沿目录树向上收集更多,外加全局的 ~/.pi/agent/AGENTS.md)。运行中改了?/reload 热加载。
这是 Pi 世界观的第一次露脸:不要把行为硬编码进工具,把它写下来,让工具自己去读。 技能、扩展、提示词模板,全是这个思路的延伸。
下一站
你现在知道了 Pi 是什么、怎么启动它。但"输入问题、得到回答"的背后藏着最有意思的部分:那个循环——让模型能持续思考、行动、观察,直到事情真正办完的机制。
下一章见。→
资料来源: pi.dev · 官方文档 · GitHub: earendil-works/pi