Pi:极简主义,缺什么自己加

6,256 字 · 预计阅读 18 分钟

Pi 默认只给模型 4 个工具:read、bash、edit、write。没有权限审批,没有计划模式,没有子代理。缺什么,就用扩展、Skill、提示词模板自己补。安全靠 Git 和容器,不靠弹窗。

前面三个工具(Claude Code、Codex、OpenCode)把功能给全:计划模式、子代理、权限审批、待办清单,开箱就有。

Pi 走另一条路,核心压到最少,其余交给你。它的系统提示词很短,工具很少,模型做的每一步都摆在屏幕上,没有藏在后台的子代理。

缺什么就用 TypeScript 写一个扩展,或者装一个别人写好的包。想把一个 Agent 怎么跑起来的搞清楚,Pi 适合当样本:系统提示词短,工具只有四个,读起来没有多少要跳过的部分。

Pi 目前也是我用的最多的一个 Agent。


一、Pi 是什么

Pi 是 Mario Zechner(游戏框架 libGDX 的作者)开发的开源编程 Agent(MIT 协议),现在由 Earendil 团队维护,只有终端界面。

和 Claude Code 摆在一起看:

Claude Code Pi
内置工具 读写、搜索、子代理、计划、待办、联网…… read、bash、edit、write 四个(grep、find、ls 可选)
权限 改文件、跑命令都问你 一律不问,直接执行
计划模式、子代理 内置 没有,用扩展加
项目说明 CLAUDE.md AGENTS.md 和 CLAUDE.md 都认
定制方式 Hooks(shell 脚本)、插件 扩展(TypeScript),几乎什么都能改
模型 Claude 为主 不绑定,DeepSeek 是内置服务商

Pi 把工具压到四个,理由是:

  • 上下文留给你的代码。工具越多,工具说明占掉的上下文越多。四个工具的说明很短,省下来的空间都是项目代码的
  • 看得见才管得住。没有后台子代理,没有自动跑的计划,模型读了什么、改了什么、跑了什么命令,全在屏幕上
  • 每个人要的不一样。内置一个大家凑合用的计划模式,不如给一个扩展接口,需要什么样的自己写

代价是开箱能做的事很少,尤其是没有权限审批这一点。


二、安装与接模型

1. 安装

bash
# macOS / Linux,官方安装脚本
curl -fsSL https://pi.dev/install.sh | sh

# 或者用 npm(需要 Node.js 22.19 以上)
npm install -g --ignore-scripts @earendil-works/pi-coding-agent

2. 接入 DeepSeek

DeepSeek 是 Pi 的内置服务商,不用写配置。两种方式任选。

方式一,环境变量(推荐):

bash
# 写进 ~/.zshrc 或 ~/.bashrc
export DEEPSEEK_API_KEY="sk-你的key"

方式二,在界面里输入:启动 Pi 后输入 /login,选 DeepSeek,粘贴 Key。Key 会存进 ~/.pi/agent/auth.json,这个文件不要提交、不要外传。

配好后,不用进界面就能确认 Pi 认到了哪些 DeepSeek 模型:

bash
pi --list-models deepseek

pi --version 输出 1.3.0;pi --list-models deepseek 列出 deepseek-flash 和 deepseek-v4-pro,上下文都是 1M


3. 第一次启动:信任这个项目吗

bash
cd your-project
pi

如果项目里有 .pi/ 下的配置、扩展、Skill,或者 .agents/skills/,Pi 会先问信不信任这个项目:

Pi 询问 Trust project folder? 选项有 Trust、Trust parent folder、Trust (this session only)、Do not trust 等

它会先问一遍,因为扩展就是能执行的代码,Pi 启动时就会运行它。别人仓库里的 .pi/extensions/ 可能藏着任何东西,第一次进一个项目,得你点头才加载。

  • Trust:信任,记到 ~/.pi/agent/trust.json,以后不再问
  • Trust parent folder:把上一级目录整个信任了,适合放自己项目的那个文件夹
  • this session only:只这一次
  • Do not trust:不加载项目里的扩展、Skill、设置

两个要点:

  • AGENTS.md、CLAUDE.md 不受信任与否影响,总会加载。所以陌生项目即使选了不信任,它的说明文件也可能指挥模型
  • 信任只管启动时加载什么,管不住模型后面做什么。它不构成安全边界,后面细讲

以后想改主意,输入 /trust。


4. 认识界面

下面是配完本节入门部分之后的启动画面:

Pi 启动画面:顶部列出已加载的 Context(AGENTS.md)、Skills、Prompts、Extensions,底部状态栏显示目录、分支、上下文用量和模型

  • 顶部的清单:Pi 这次加载了什么。[Context] 项目说明,[Skills] Skill,[Prompts] 提示词模板,[Extensions] 扩展。哪个没出现在这里就是没加载上,排查问题先看这里
  • 左下 ~/order-admin (main):当前目录和 Git 分支
  • 左下 0.0%/1.0M (auto):上下文用了多少,auto 表示满了会自动压缩
  • 右下 deepseek-flash • high:当前模型和思考深度
  • 中间那句 Pi can explain its own features and look up its docs:Pi 自带完整文档,不会用就直接问它,比如怎么给你写一个扩展

输入 /model,搜 deepseek 选模型。选中后按 Ctrl+S,会存成默认模型:

/model 搜索 deepseek,deepseek-flash 标着 default,底部提示 Ctrl+S to set as default

默认值存在 ~/.pi/agent/settings.json,也可以直接改:

json
{
  "defaultProvider": "deepseek",
  "defaultModel": "deepseek-flash",
  "defaultThinkingLevel": "high"
}

⚠️ Shift+Tab 在 Pi 里不切权限模式,它循环切换思考深度(off、low、medium、high……),右下角跟着变。Pi 没有权限模式这个概念。


三、概念对照表

概念 Claude Code(第一本) Pi 主要差别
项目说明 CLAUDE.md AGENTS.md 或 CLAUDE.md 同一目录两个都有时,只读 AGENTS.md
生成项目说明 /init 没有 直接让 Pi 写一份
Skills .claude/skills/ .pi/skills/、.agents/skills/ 默认不读 .claude/skills/
手动调用 Skill /skill名 /skill:skill名
斜杠指令 Skill + disable-model-invocation 提示词模板 .pi/prompts/*.md 纯文本替换,不能执行命令
MCP claude mcp add pi mcp add 或 mcp.json 配置格式和 Claude Code 一样
权限 allow / ask / deny 没有 一律放行,要管就写扩展
计划模式 一种权限模式 没有,官方示例扩展 plan-mode
子代理 .claude/agents/*.md 没有,官方示例扩展 subagent
Hooks settings.json 里的 shell 脚本 扩展(TypeScript) 能拦截,也能改参数
Shift+Tab 切权限模式 切思考深度
压缩上下文 /compact /compact [说明] 都会自动压缩
回退 /rewind,能把文件改回去 /tree,只回退对话 文件要靠 Git
新会话 / 恢复 /clear、/resume /new、/resume、pi -c
跑一条命令 !命令 !命令、!!命令 !! 的输出不发给模型

输入 / 能搜索所有指令。扩展、提示词模板、Skill 加的指令也都在这里:

输入 / 弹出的指令列表:settings、model、tree、thinking、scoped-models


四、入门:15 分钟跑通一个工作流

还是用 order-admin 项目。跟着前两节配过 Codex、OpenCode 的话,AGENTS.md 和 .agents/skills/ 都能直接复用。


1. AGENTS.md

项目里有 AGENTS.md 或 CLAUDE.md,Pi 直接读,什么都不用做。启动画面顶部 [Context] 下面能看到它。

Pi 没有 /init。项目里什么都没有的话,直接让它写:

读一下这个项目,写一份 AGENTS.md:只写技术栈、常用命令、代码规范、禁止事项,不超过 30 行。

2. 先给 Pi 装上两道闸

Pi 不会问你任何事:改文件、删文件、跑任何命令,都直接执行。官方文档写得很直白,看着屏幕、点信任、事后看 diff,都不算安全措施。

所以动手前,先做两件事。

第一道闸:Git。每次让 Pi 干活前,先 git commit 一次。Pi 改坏了,git restore . 就回来了。

第二道闸:危险命令弹窗。Pi 自带一批示例扩展,其中 permission-gate.ts 会在模型要执行 rm -rf、sudo、chmod 777 这类命令时弹窗问你。把它装到用户目录,所有项目都生效:

bash
# npm 安装的,示例在全局 node_modules 里
EX="$(npm root -g)/@earendil-works/pi-coding-agent/examples/extensions"
mkdir -p ~/.pi/agent/extensions
cp "$EX/permission-gate.ts" ~/.pi/agent/extensions/

用安装脚本装的,到 GitHub 仓库 earendil-works/pi 的 packages/coding-agent/examples/extensions/ 下载同名文件,放到同一个位置。

装好后重启 Pi(或者输入 /reload),启动画面的 [Extensions] 里会出现 permission-gate.ts。

本文是会员内容

全文 6,256 字,已试读约 30%。开通专业版可阅读全文,并解锁全部官方课程与后续更新。

开通专业版

支持 7 天无理由退款 · 早鸟价 99 元/年(售完恢复365/年)

课程中涉及的第三方项目,其著作权与商标归各自权利人所有;引用处的署名与许可见《开源与来源说明》。