π Pi 轻松学
首页 / 第 1 篇

认识 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 个默认工具(readwriteeditbash)加上系统提示词,总共才一千个 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