Pi Agent 零基础喂饭教程:打开终端到完成第一个真实任务

我在AI编程上面,用过很多,比如闭源的codex和claude,这些虽然很强的agent,但是由于花费很大,在加上Claude官方封号,就寻找开源的agent,很长一段时间就在用opencode。

虽然opencode是开源的,但是我觉得他只不是把闭源的claude变成了开源,但是不是属于我个人定制化的agent。直到我遇到pi这款开源的agent后,我认为这是我需的。

虽然pi达不到opencode这样的开箱即用,但是你花时间去设置他,pi就会变成专属于你的好用的cil编程agent。下面就我使用和结合大佬的教程,带来pi喂饭教程。Pi Agent 零基础。

一、Pi 能帮普通人做什么

Pi 是一个运行在终端里的 Agent。你在某个文件夹里启动它,它可以围绕当前任务读取文件、写入文件、修改内容,也可以执行本机命令。它回复你的方式仍然像聊天,可它能继续动手,把结果落到电脑里。

这句话里有两个地方需要先讲清。

第一个是“本地”。Pi 这个程序运行在你的电脑上,能接触什么文件、能执行什么命令,和你从哪里启动它、当前用户拥有什么权限有关。负责理解和生成内容的模型仍可能来自云端服务。本地 Agent 和本地模型是两件不同的事。

第二个是“能动手”。普通聊天工具也能根据一段会议记录写出行动清单,你还要复制结果、新建文件、选择位置、粘贴保存。Pi 可以直接读取 input/项目会议记录.md,再把整理结果写进 output/行动清单.md。任务复杂一些时,它还能继续检查目录、调用脚本,或者根据前一步的结果调整下一步。

这种工作方式很适合目标清楚、材料已经放在电脑里的任务。整理会议纪要、批量修改文件名、检查一组配置、从几份资料里提取固定字段,都能从同一条思路开始。

普通人判断一件事适不适合交给 Pi,可以先看它能不能拆成文件和动作。你手里有一份材料,希望它读完后生成另一个文件,这类任务最容易起步。你有一批名称混乱的图片,希望它先列出改名方案,确认后再执行,也适合。只说“帮我把工作做好”,Pi 既不知道要用哪份材料,也不知道什么结果算完成,第一步就会飘。

Pi 更适合愿意学一点终端基础的人。你不需要先会编程,但至少要愿意看路径,知道当前目录在哪里,遇到命令时肯停下来确认它会影响哪些文件。完全不想接触这些内容,带有完整图形界面和确认按钮的 Agent 会更轻松。这里没有高低之分,只是使用习惯不同。

它也会带来真实后果。Pi 能替你写文件,也就可能写错文件。它能执行命令,错误命令同样会在电脑上发生。第一次使用时,我没有在自己的文章目录或代码项目里试,而是单独建了一个练习目录,只放虚构材料。

你暂时不用把终端学成一门课。先认识当前目录、文件路径和几个基础命令,已经够完成本文的练习。等你亲手看到一个输入文件怎样变成可以打开、可以核对的输出文件,再去理解模型和扩展,顺序会轻松很多。

二、安装、确认版本与登录

1. 先给第一次练习单独建个文件夹

终端 Agent 最容易被忽略的一步,发生在启动以前。

你要先决定让它从哪个文件夹开始工作。第一次别直接进入桌面、下载目录或正式项目。那些地方通常混着很多无关文件,一旦任务范围写得含糊,排查起来很麻烦。

我这次建立了一个名为 Pi-Agent-零基础实操-demo 的目录,里面再分成 input 和 output。前者只放原始材料,后者只收结果。

mkdir -p ~/Downloads/Pi-Agent-零基础实操-demo/input
mkdir -p ~/Downloads/Pi-Agent-零基础实操-demo/output
cd ~/Downloads/Pi-Agent-零基础实操-demo

执行完以后,可以输入 pwd 查看当前目录,再用 ls 看里面是否已经出现 input 和 output。看到这两个目录,这一步才算结束。
pwd 会打印当前所在位置。ls 会列出当前位置里的文件和文件夹。以后 Pi 读错材料,先查这两个地方,经常比修改提示词更快。当前目录如果仍停在用户主目录,可以重新运行 cd ~/Downloads/Pi-Agent-零基础实操-demo。终端提示符里显示的路径也能提供线索,不过不同主题的显示方式不一样,命令输出更可靠。

我把原始材料和结果分开,还有一个很现实的原因。任务开始前,output 通常是空的。做完以后,多出来的文件一眼就能看见。需要重新执行时,可以先看旧结果,再决定保存成 v2 或移走,不会顺手覆盖输入。

这里使用的是 macOS 写法。Windows 用户需要按自己使用的 PowerShell、Windows Terminal 或 WSL 环境建立目录,路径也不能照抄。本文后面的真实截图全部来自 macOS。

2. 安装命令从官网复制

截至 2026 年 8 月 26 日,Pi 官方 Quickstart 给出的 npm 安装命令如下。

npm install -g --ignore-scripts @earendil-works/pi-coding-agent

-g 表示全局安装。完成以后,你可以在不同目录直接运行 pi。当前官网命令还带有 --ignore-scripts,复制时要把整行一起带上,不要根据旧教程自行删改。

如果终端提示 npm: command not found,说明电脑还没有可用的 Node.js 和 npm 环境,或者终端没有找到它们。先去 Node.js 官网完成安装,重新打开终端,再分别检查下面两个命令。

node --version
npm --version

如果安装时遇到权限错误,也先停下来确认 Node.js 是怎样安装的、npm 的全局目录放在哪里。网上随手找到的 sudo 命令可能暂时越过报错,也可能把后面的文件权限弄得更乱。新手阶段不用急着用管理员权限硬冲。

3. 再用版本号确认一次

安装过程没有报错,只能说明安装程序走完了。接着要确认终端现在能不能直接找到 Pi。

pi --version

我在本机重新执行,返回的是 0.80.10。这也是本文所有界面和命令的测试版本。你的数字更新一些很正常,只要它直接返回版本号,没有出现 command not found,Pi 就已经能从终端启动。

版本差异会影响命令、界面和默认行为。以后看别人的教程,先找作者使用的版本,再和自己的版本对一下。很多看起来像操作错误的问题,只是两边版本不同。

4. 登录有两条路

进入刚才的练习目录后,运行下面这行。

pi

第一次使用需要完成认证。官方文档给了两类入口。

一种是在 Pi 里输入 /login,选择它支持的订阅服务。截至本次核对,官方页面列出了 Claude Pro/Max、ChatGPT Plus/Pro 的 Codex 登录和 GitHub Copilot 等入口。名单以后可能变化,以你当时看到的登录页面为准。

另一种是使用模型提供方的 API Key,按对应文档写入环境变量或认证文件。教程里只会出现占位符,不应该把真实 Key 放进截图、文章或聊天记录。

已经有受支持订阅,可以先走 /login。平时习惯按 API 用量付费,就配置对应提供方的 Key。选一条能明确核对账号和计费来源的路径即可。两套认证一起堆上去,后面发现模型或账单不符合预期,又要回头猜它到底用了哪一套。

当浏览器打开登录页以后,账号选择、验证码和授权确认都由你本人完成。Pi 不需要知道你的密码,教程作者也没有理由让你把凭据复制出来。

登录没有成功时,先看 Pi 显示的是取消、超时、账号无权限,还是缺少 API Key。几种原因要分开处理。订阅登录卡在浏览器,就重新检查授权页面和回跳状态。API 模式报错,则核对提供方、变量名和 Key 是否属于同一服务。不要为了消除一条报错,把密钥同时复制到多处文件里。

认证能用以后,也不代表每个模型都已经可用。账号订阅、API 余额、区域和提供方策略都可能影响模型列表。先选一个当前能调用的模型完成小任务,模型选择器里暂时看不到的选项,等确认账号支持范围后再处理。

完成认证,再回到终端。接下来先别急着发任务,我们花几分钟认清界面。

三、第一次打开 Pi,先看懂四个区域

终端界面刚出现时,很多人会下意识盯着满屏英文看。其实第一次只要认四块。

1. 顶部启动区

最上面会显示版本和一些常用提示。Pi 还会列出已经加载的 Context、主题、Skill 或 Extension。截图里能看到 AGENTS.md 出现在 [Context] 下面,这说明项目规则已经进入当前会话。

这个提示只证明文件被加载了。它没有给项目增加系统级隔离,后面讲安全时还会回来处理这件事。

启动时如果看到某个 Package 有更新,也不用立刻处理。更新提示只是告诉你本机已有包出现新版本。正在做教程或正式任务时,先保持环境稳定,等工作结束再决定是否更新,问题会更容易定位。

2. 中间消息区

你发送的要求、Pi 的回复、工具调用、执行结果和错误都会出现在中间。

以后判断它有没有真正读文件,可以找 read 事件。判断它有没有尝试写文件,可以找 write 事件。命令报错、文件不存在、权限不足,也会在这里留下信息。

最后那句自然语言总结很好读,却只代表 Pi 对过程的归纳。它写着“任务完成”,不等于结果一定正确。工具事件和最终文件都要继续看。

工具事件还有一个用途,可以帮助你发现任务正在变大。你只让它整理一个 Markdown,它却开始搜索目录外的文件,或者连续运行与你的目标无关的命令,这时就该停下来。模型的文字解释可能很顺,工具列表更能告诉你电脑上正在发生什么。

报错也不用怕。红色错误信息先看最后几行,通常会出现文件不存在、权限不足、命令找不到或网络失败。把报错对象找出来,再决定改路径、补环境还是重试。整段错误全部丢回模型,有时能得到解释,自己先认出是哪一类问题,以后会更快。

3. 下方输入区

光标所在的位置就是输入区。普通文字、@文件 和斜杠命令都从这里输入。写完以后按 Enter 才会提交。

Pi 还在工作时,你可以再次提交消息。普通 Enter 会把它作为当前工作的补充信息,也就是 steering message。Alt+Enter 会把消息留到当前工作全部结束后再发,属于 follow-up。第一次使用不必刻意练这两个队列,知道“追加一句话”和“等它做完再说”存在差别就够了。

想停止当前输出,可以按 Escape。遇到路径选错、任务范围突然变大或 Pi 准备执行不合适的动作时,先中断,比直接关掉整个终端更清楚。

4. 底部状态栏

状态栏通常会显示当前目录、会话、token 或成本信息、上下文占用、当前模型和思考级别。数字不少,第一次只看三项。

先看目录。它应该落在我们建立的练习目录里。

再看模型。你要知道本次任务交给了谁。

最后看上下文。它快满时,Pi 对早期内容的处理会受影响,需要压缩或开新会话。

截图里当前模型是 deepseek-v4-flash,思考级别是 low。这是本机测试时的选择,不是通用排行榜。

文件整理、格式转换和要求清楚的小任务,可以先用较低思考级别。材料多、规则有冲突、修改风险较高时,再提高。模型更强或思考时间更长,都不能替代最后的验收。

你可以输入 /model 打开模型选择,也可以用 Ctrl+L。Shift+Tab 用来循环思考级别。不同终端可能占用快捷键,按键没有反应时,输入 / 查看当前版本的补全菜单,再用 /hotkeys 或官方 Keybindings 核对。

模型和思考级别最好一次只改一个。任务结果不理想,同时换模型、提高思考级别、重写提示词,下一次变好了,你也不知道是哪一项起作用。先保留模型,补清材料和验收。要求已经明确,任务仍涉及复杂取舍,再提高思考级别。这样试两三次,很快就能找到适合自己任务的设置。

这里还有一个我实测时碰到的小坑。在 0.80.10 中,/help 不是内置斜杠命令,它会被当成一条普通问题交给模型。想看内置命令,直接在输入区键入 /。想看命令行帮助,退出 Pi 后运行 pi --help。这个差别能省下一次没必要的模型调用。

四、完成第一个可以验收的真实任务

界面认识到这里,开始动手。

这次任务很小。输入是一份会议记录,输出是一张行动清单。它同时有三个人、三个日期和三条风险提醒,足够检查 Pi 有没有漏字段。

1. 准备输入文件

在 input 目录新建 项目会议记录.md,写入下面这些内容。

# 项目启动会记录

日期:2026-08-26

- 官网说明页由小林整理,截止日期为 2026-08-28。需要先核对安装命令是否仍然有效。
- 教程截图由小周制作,截止日期为 2026-08-30。需要隐藏账号、私人路径和凭据。
- 发布前检查由小陈负责,截止日期为 2026-09-01。需要确认文中命令和截图能够逐项对应。

补充说明:本次只制作练习文件,不修改其他目录,不发送或上传任何内容。

材料短有一个好处。你不需要相信任何自动评分,肉眼就能看出结果有没有漏掉小林、小周、小陈,日期和提醒也能逐条对回去。

我还故意让三条事项的句式保持相近。整理工具最常见的一类错误,是把主题抓住了,却把约束字段当成次要内容压缩掉。它可能保留三项工作,只写负责人,不写日期;也可能把三条风险合成一句“发布前注意核对”。输出看起来很整齐,真正拿去执行时,人仍然不知道谁在什么时候完成什么。

练习材料里的日期和人名都是虚构的。它没有客户资料、账号、商业数据,也不会因为截图公开而泄露真实项目。第一次学习文件工具,材料越容易核对、后果越低,越适合观察它怎样工作。

在运行任务以前,我还给输入文件算了一次 SHA-256 校验值。可以把它理解成文件当前内容的一枚指纹。哪怕只改一个字符,新的值通常也会不同。

shasum -a 256 input/项目会议记录.md

本次执行前保存的结果如下。

e1d5fce2a192e31aa5bbc676c93621f58f12f52f4b76c4ba7580c6f4fe594eca  input/项目会议记录.md

先把这个值留好,任务结束后再算一次。

2. 用 @ 把文件交给 Pi

回到 Pi,在输入区键入下面的路径。

@input/项目会议记录.md

Pi 会根据当前目录搜索文件,并显示候选项。

这里要看完整相对路径。文件夹里如果有两个同名文件,只盯着最后的文件名,很容易选到 output 中的旧结果。确认候选项来自 input,再继续写任务。

@ 解决的是材料指向。它告诉 Pi 这次要用哪一个文件,没有替你写清输出要求,也没有限制 Pi 的系统权限。

3. 把任务写成能检查的要求

我这次提交的提示词如下:

读取 input/项目会议记录.md,整理成 output/行动清单.md。必须保留每个事项、负责人、截止日期和风险提醒;不要修改 input 中的原文件,不要访问当前练习目录以外的内容。完成后列出新增和修改的文件,并说明我应该怎样验收。

这段话可以拆成四部分。

部分
本次任务写了什么
以后可以怎样换
材料
input/项目会议记录.md
换成自己的原始文件
动作
整理并写入行动清单
写清处理动作和输出路径
限制
不改输入,不出练习目录
写清禁止修改、发送或访问的范围
验收
保留事项、人员、日期和提醒
改成能够逐项检查的条件

很多失败任务缺的是一个能落地的要求。

“帮我整理一下”没有说明材料身份,Pi 不知道哪些是原始资料,哪些是旧结果。“做得专业一点”没有明确动作,专业可以是改格式、补内容,也可能是大幅改写。“千万别出错”也没法验收,换成负责人和日期一项不能漏,任务结束后就有了检查标准。

输出路径也要写。让结果统一进入 output,你能很快看出新增了什么,不用到处找文件。

这四部分的顺序不必固定,内容不能省得只剩一句口号。材料告诉 Pi 依据在哪里,动作决定它要做什么,限制划出这次工作的范围,验收把完成条件变成可以核对的事实。

限制也要写得贴近风险。“不要做危险操作”很难执行,每个人对危险的理解都不同。“不要修改 input,不要访问目录外内容,不要发送或上传”就清楚多了。涉及真实项目时,还可以禁止删除和安装依赖。Git 提交与对外发送也要按任务单独授权。

验收条件要和材料一一对应。原文有三位负责人和三个日期,输出就检查这六项。表格有 200 行,先核原始行数和汇总金额。网页改版要看指定页面和不同窗口宽度。验收条件写得越具体,任务完成后越少靠感觉。

提示词里的“不要访问练习目录以外的内容”仍然只是一条工作约束。它很有必要,却没有在操作系统层面锁住 Pi。真正的权限边界会在第八章讲清。

4. 盯住工具事件

提交以后,Pi 先调用 read 读取输入文件,再调用 write 创建输出文件。我的真实运行结果里出现了这行信息。

Successfully wrote 281 bytes to output/行动清单.md

这时已经有了两层信息。

第一层是 Pi 的文字回复。它会说明自己做了什么。

第二层是工具事件。这里能看见它尝试读取哪个文件、写到哪里、工具有没有返回错误。

还差第三层,也就是文件系统里的真实结果。write 成功说明文件写出去了,路径仍可能选错,内容也可能漏项。我们下一步脱离 Pi 的总结,自己查。

如果这里出现读取失败,不要马上扩大目录权限。先看文件名有没有打错、Pi 的当前目录对不对、@ 选中的候选项是不是输入文件。

如果它准备覆盖 input 中的文件,按 Escape 停止。回到提示词里明确输出路径,再重新执行。第一次练习的意义就在于让这些错误发生在一份虚构材料上。

还有一种情况值得停下来。Pi 读取完文件后,先给出一段计划,计划里出现了安装第三方工具、访问网络或扫描其他目录,而原任务只需要整理 Markdown。这些动作可能有合理理由,也可能已经超出需求。你可以追问它为什么需要这一步,要求先用现有工具完成,或者把任务缩回单文件处理。

观察工具不要求你读懂底层代码。新手先认动作和对象。read 后面是哪一个文件,write 要写到哪里,Shell 命令的目标路径是什么。三件事能对上,已经能挡住不少误操作。

5. 回到命令行独立验收

任务结束后,我检查了五件事。

第一件是重新计算输入文件的 SHA-256。

shasum -a 256 input/项目会议记录.md

执行后的值仍然是这一串。

e1d5fce2a192e31aa5bbc676c93621f58f12f52f4b76c4ba7580c6f4fe594eca  input/项目会议记录.md

两次一致,说明这次任务没有改动原始材料。

第二件是确认输出文件真实存在。

test -f output/行动清单.md && echo PASS

第三件是打开文件,检查三位负责人。第四件是核对三个截止日期。最后再看三条风险提醒有没有被压缩掉。

Pi 最后生成的文件如下。

# 行动清单

来源:`input/项目会议记录.md`(会议日期:2026-08-26)

| 事项 | 负责人 | 截止日期 | 风险提醒 |
| --- | --- | --- | --- |
| 官网说明页整理 | 小林 | 2026-08-28 | 需先核对安装命令是否仍然有效 |
| 教程截图制作 | 小周 | 2026-08-30 | 需隐藏账号、私人路径和凭据 |
| 发布前检查 | 小陈 | 2026-09-01 | 需确认文中命令和截图能够逐项对应 |

## 注意事项

- 本次只制作练习文件,不修改其他目录,不发送或上传任何内容。

本次验收全部通过。

检查项
结果
输入文件执行前后校验值一致
PASS
output/行动清单.md
存在
PASS
三位负责人完整
PASS
三个截止日期完整
PASS
三条风险提醒完整
PASS

这一步是全文最想留下的习惯。

Pi 的回复、工具事件和最终文件各自证明一件事。回复说明它怎样理解过程,工具事件记录它尝试做过什么,文件检查告诉你结果现在是什么样。三层合起来,任务才有一条能复核的证据链。

以后处理表格,可以核对原始行数、汇总金额和异常项。修改代码,可以查看差异、运行测试、打开实际页面。整理文章,可以检查原文有没有被覆盖、配图能否显示、链接能否打开。任务会变,验收这个动作不用变。

如果校验值变了,也先别急着认定文件坏了。打开差异,确认是不是换行、编码或自己在执行期间做过编辑。校验值只回答内容是否完全一致,没有告诉你哪里变了。需要定位变化,还要继续比较文件内容。

输出文件存在也只是最低要求。空文件、写错格式、字段缺失都会通过“存在”检查。本次同时核对人名、日期和风险提醒,就是为了避免一个绿色 PASS 把后面的内容问题遮住。

真正工作中可以把验收分成两轮。第一轮由 Pi 按提示词自查,发现明显漏项就先修。第二轮由人使用独立命令、原始材料或实际页面复核。两轮使用的依据不同,结果更可信。

五、让 Pi 理解文件和项目规则

一次任务跑通以后,下一步是减少重复说明。Pi 提供了几种不同入口,分别处理材料、命令和长期规则。它们名字接近,作用并不相同。

1. @文件 用来明确材料

第四章已经用过 @input/项目会议记录.md。当项目变大,同名文件会越来越多,候选列表里要继续看完整路径。

如果输入和旧结果同时存在,可以把文件身份直接写进要求:

读取 @input/项目会议记录.md。它是本次唯一原始材料。不要把 output 中的旧文件当成事实来源。先列出准备使用的输入文件,再开始整理。

一次引用多个文件时,也要讲清各自用途。一个负责提供事实,一个只是格式参考,这两种材料不能混在一起。只把文件全选上,再让模型自己猜,最后很难知道错误从哪里来的。

2. ! 和 !! 都会执行本机命令

Pi 的输入区可以直接运行 Shell 命令。

!pwd

单个感叹号会执行命令,并把输出发送给模型。你可以先运行 !pwd,再让 Pi 根据结果判断当前目录是否正确。

!!pwd

两个感叹号也会执行命令,输出只给你看,不进入模型上下文。适合查看一段无需交给模型继续分析的信息。

两个感叹号没有增加安全保护。删除文件、安装程序、上传内容或覆盖数据的命令,照样会真实执行。区别只在于命令输出是否进入模型上下文。

新手可以先用没有破坏性的命令练习,例如 pwd、ls 和查看版本。来源不明、自己看不懂的命令先别执行。Agent 给出的命令也要看一遍目标路径,尤其是包含删除、递归和管理员权限的操作。

3. 用 AGENTS.md 保存长期规则

每次都写“输入只读、结果放到 output、不要修改其他目录”,很快会烦。可以把这类长期规则放进练习目录的 AGENTS.md。

# Pi 零基础教程练习规则

- 只处理当前练习目录中的文件。
- `input/` 只读,不得修改或覆盖。
- 新结果统一保存到 `output/`。
- 输出使用简体中文 Markdown。
- 完成后列出新增和修改的文件,并说明如何验收。

Pi 会从全局位置、父目录和当前目录加载 Context 文件。当前目录里还可以使用 AGENTS.override.md 替代同目录的普通规则文件。刚入门不用搭复杂的继承关系,只要在启动区确认 [Context] 下加载的是你预期的文件。

这一套加载方式允许大项目把通用规则放在上层目录,具体子目录再补局部要求。例如上层要求输出简体中文,练习目录再规定 input 只读。Pi 会把它们一起放进上下文。出现 AGENTS.override.md 时,该文件会替代同目录的普通 AGENTS.md,适合临时覆盖这一层规则。

规则发生冲突时,不要期待模型永远替你猜对。把距离当前任务最近、最具体的要求写清楚,必要时删除过期规则。启动区显示加载了多个 Context,也值得逐个看名字,避免父目录里一份旧规则悄悄影响现在的任务。

项目规则适合保存长期稳定的约束。每次任务的材料、目标和输出文件名仍然要在当前提示词里写。把所有东西都塞进 AGENTS.md,时间一长又会变成一份没人敢改的大说明书。

4. 规则改完以后输入 /reload

已经打开 Pi,再修改 AGENTS.md,可以在输入区执行 /reload。

Pi 会重新加载快捷键、Extension、Skill、提示模板、主题和 Context 文件。看到 Reloaded 以及对应的 context files 提示,说明新资源已经进入当前环境。

重新加载不会撤销已经发生的文件修改,也不会自动重跑上一项任务。规则影响后面的行为,之前写错的文件仍要单独恢复或修正。
/reload 也会重新加载 Skill 和 Extension。正在编辑这些资源时,这很方便。与此同时,Extension 属于会运行的代码,重新加载之前要确认改动内容。一个拼写错误可能只是加载失败,一段高权限逻辑则可能改变后面的工具行为。

如果你刚加的是高风险规则,比如允许批量改名或运行部署命令,我更建议开一条新会话,先用几个虚构文件测试。规则被成功加载,只证明 Pi 看到了它,还没有证明每一种输入下都会按你的预期行动。

到这里,四个入口可以分开记。

@ 负责指出材料。
! 和 !! 负责执行本地命令,区别在输出是否交给模型。
AGENTS.md 保存项目长期规则。
/reload 重新加载资源。

分清这四件事以后,Pi 才开始从一次性聊天工具变成一个可以长期配合的工作环境。

六、会话、模型和上下文怎样管理

第一次关闭终端时,很多人会担心刚才的对话是不是没了。Pi 默认会保存会话,之后可以继续,也可以从中间分出另一条路线。

1. 继续刚才的会话

官方默认把会话按工作目录保存在 ~/.pi/agent/sessions/。为了让本次教程的材料集中在练习目录,我启动时使用了 --session-dir sessions,真实会话因此保存在练习目录的 sessions 下面。

退出 Pi 后,可以使用下面几个入口。

pi -c
pi -r
pi --no-session

pi -c 继续当前目录最近一次会话。pi -r 打开历史会话选择。pi --no-session 开一条不保存的临时会话。

会话文件保存的是消息和运行过程,它可能包含文件路径、提示词、工具输出,以及任务中出现的业务内容。练习目录可以保留,真实项目要按资料敏感程度管理。不要因为它长得像普通 JSONL,就随手上传到公开仓库。

临时会话适合一次性测试。需要下次继续、需要追查工具过程或准备从中间分支时,应保留会话。选择是否保存,本质上是在便利和留存范围之间做决定。

已经在 Pi 里面,可以使用 /resume。选择前要看会话对应的工作目录和名称。最近的一条未必属于你现在要做的项目。

2. 回退和分支有不同用途

/tree 会打开当前会话的树结构。前半段方向正确,后面走偏时,可以跳回早期节点,从那里继续。

/fork 会从较早的一条用户消息建立新的分支会话。原来的路线留着,你可以在新分支试另一种方案。

/clone 会把当前活动分支复制成新的会话文件。它更像保存当前路线的一份副本,本文只把它当补充入口。

可以把 /resume 理解成重新打开一本笔记,/tree 是翻回同一本笔记的旧节点,/fork 是从某一页复印一本新的继续写。知道差别以后,你不必为了试第二种方案先毁掉第一种。

3. 上下文快满时使用 /compact

模型一次能处理的上下文有上限。任务越长,前面累积的消息和工具结果越多,状态栏中的占用会逐渐上升。

/compact 会把较早内容总结成更短的记录,为后续对话腾出空间。原会话文件里的树结构和条目仍然保留,它没有直接删除整个聊天历史。

压缩也会丢失细节。真正重要的要求,例如输入只读、结果放到哪个目录、哪些字段绝对不能漏,最好写进当前提示词或 AGENTS.md。只在几十轮以前随口说过一次,压缩以后还能不能被准确保留,很难靠猜。

4. 结果不好时先找问题落在哪

很多人看到结果不满意,第一反应是换更贵的模型。先把现象分开,通常更省时间。

你看到的现象
优先处理方式
格式基本正确,明确字段漏了
补全提示词和验收条件
对话很长,早期要求开始丢失
/compact
或新开会话
规则之间有冲突,需要多步取舍
提高思考级别
当前模型缺少所需能力,质量持续不足
再考虑换模型
目录或会话选错
立即停止,回到正确位置

模型选择很重要,但路径错了,模型越能干,改错的文件可能越多。验收要求没写清,换模型以后也可能只是得到一份更流畅的漏项结果。

七、Skill、Extension 和 Pi Package

打开 Pi 的 Package Catalog,会看到大量包。新手很容易把 Skill、Extension 和 Package 混成一件事,然后连续安装。先把它们拆开。

1. Skill 是一套专项工作说明

Skill 通常围绕某一类任务组织工作流程、设置说明、辅助脚本和参考资料。Pi 启动时先发现它的名称与描述,任务匹配时再读取完整的 SKILL.md。这样不用把所有 Skill 全部塞进每一次对话。

我这次制作教程截图,就把真实界面占比、红框怎样聚焦、什么时候无需标注、成品怎样验收写进了项目 Skill。下一次处理同类截图,可以继续沿用这套规则。

Skill 虽然常以 Markdown 开头,也不能因此当成天然安全。里面可以指导模型运行命令,还可能带着脚本和依赖。安装前至少要打开看一遍,弄清它会要求 Pi 做什么。

2. Extension 会直接改变 Pi 的行为

Extension 是运行在 Pi 进程里的 TypeScript 或 JavaScript 模块。它可以注册工具、命令、快捷键和界面组件,也能监听运行事件。

如果你想增加一个专用工具、把命令送进容器执行、改造状态栏,Extension 更合适。它的权限也更深。代码与 Pi 进程使用同一份本机权限,来源和行为都需要审查。

零基础阶段先不用急着写或安装 Extension。内置的读取、写入、编辑和 Shell 工具已经足够完成不少真实任务。等你能看懂每次工具调用,知道怎样恢复错误,再去扩展行为会稳很多。

3. Pi Package 是分发这些资源的容器

Pi Package 可以把 Extension、Skill、提示模板和主题组合起来,通过 npm、git 或本地路径分发。

我先运行 pi list 盘点本机,没有新增,也没有更新,实际看到三个用户包。

npm:pi-web-access
npm:pi-powerline-footer
npm:pi-lens

这份清单只说明本机已经装了什么,不代表我在本文里推荐这三个包。官网目录的条目数也一直在变化,截图记录的是拍摄当时的页面,不能拿来当长期不变的结论。

准备安装第三方包以前,我会先问五个问题:

1、发布者是谁,源代码能不能查看。

2、包里包含 Skill、Extension、提示模板还是主题。

3、Extension 注册了什么工具和命令。

4、它需要哪些凭据、网络和目录权限。

5、这件事能不能先用内置能力完成。

官方安装形式可以写成 pi install npm:<package>。看到命令先别急着复制。Pi Package 可能获得完整的系统访问能力,安装来源和代码内容比目录里的介绍文案更值得看。

三者放在一起,可以这样理解。

名称
里面主要是什么
适合解决什么
最先检查什么
Skill
工作说明、脚本和参考资料
固化一类任务的做法
指令与脚本是否安全
Extension
运行中的代码和新能力
改变工具、命令或界面
代码会以什么权限运行
Pi Package
多种资源的分发组合
安装和分享一整套能力
包含内容、来源与权限

八、Pi 的安全边界和入门升级路线

Pi 已经能读文件、写文件、执行 Shell,还能加载 Extension。走到这里,安全不能只剩一句“重要文件记得备份”。

1. Project Trust 没有提供沙箱

Pi 的 Project Trust 控制是否加载项目本地的设置、资源、Package 和 Extension。它可以拦住一个陌生项目在你确认以前自动加载本地扩展,这很有用。

它没有限制模型启动后能要求内置工具做什么,也没有把当前目录变成一个系统级围栏。

Pi 会沿用启动它的当前用户权限。这个账号能够读取、覆盖或删除的文件,Pi 的内置工具通常也能在相同权限下操作。Extension 运行在同一个进程里,边界同样要按本机权限来理解。

假设你从练习目录启动 Pi,当前账号仍然能读取下载目录、文档目录和其他项目。Pi 不会因为提示符停在练习目录,就自动失去访问那些位置的能力。当前目录主要提供工作起点和相对路径,操作系统权限才决定最后能不能打开或修改文件。

Project Trust 处理的是另一类风险。陌生项目里可能自带设置、Context、Package 或 Extension。你还没审查这些资源以前,Trust 可以阻止 Pi 直接加载。通过信任检查以后,Pi 仍然按当前用户权限运行。它解决“要不要加载这个项目自带的东西”,没有替你建立一台隔离电脑。

所以第四章那句“不要访问当前练习目录以外的内容”依然值得写。它让模型知道任务范围,也方便我们在工具事件里发现偏离。它没有把目录外的文件变成不可访问。

2. 不可信和无人值守任务需要外部隔离

官方安全文档明确写了 Pi 没有内置沙箱。准备处理不可信仓库、生成后直接执行的代码、长时间无人观察的任务,可以把整个 Pi 进程放进容器、虚拟机、micro-VM、远程沙箱或受策略控制的环境。

隔离环境也要控制挂载和凭据。只挂任务需要的目录,只提供最低限度的账号权限。可写挂载仍然能改宿主文件,重要材料可以只读挂载,或者复制进隔离环境,任务结束后只取出需要的结果。

容器也不能只看名字。把整个主目录以可写方式挂进去,再把所有 API Key 一起传入,Pi 能接触的范围仍然很大。有效隔离需要同时缩小文件、网络和凭据范围。任务只要处理一份代码副本,就挂这份副本;只要调用一个测试账号,就不要带生产账号。

无人值守任务的风险还多了一层。人不在屏幕前,无法在工具路径跑偏时按 Escape,也看不到模型为了修一个问题连续尝试了多少动作。先把任务在低风险环境手动跑通,记录输入、输出和验收,再考虑交给定时或后台流程。

日常低风险任务也有几条很朴素的做法:

给练习和正式任务划分独立目录。
原始材料保留副本,输出进入单独文件夹。
删除、覆盖、安装、上传和发布以前停下来确认目标。
第三方 Skill、Extension 和 Package 先看来源与内容。
任务结束后检查真实文件,不把完成提示当验收报告。

这些办法不能代替沙箱,却能减少很多由路径、范围和误操作造成的问题。

3. 新手可以按五级往上走

第一天不用把 Package、Extension 和自动化全装上。能力越多,排错位置也越多。

第一级先稳定完成单文件任务。会进入正确目录,会引用材料,会指定输出,再独立检查结果。

第二级建立项目规则。把输入只读、输出位置和验收方式写进 AGENTS.md,先在练习目录验证。

第三级学会管理长会话。知道怎样 /resume、/tree、/fork 和 /compact,一个项目不必永远挤在一条对话里。

第四级开始复用 Skill。把反复出现的流程整理成专项说明,也审查里面的脚本和依赖。

第五级再做隔离和自动化。不可信、批量或无人值守的任务进入容器或虚拟机,之后再考虑怎样组合 Extension 和 Package。
你今天做到第一级就够了。

4. Pi、Codex 和 Claude Code 怎样选

这篇不做三款工具的跑分。它们更新很快,账号环境和使用习惯也会直接改变体验。

喜欢终端、本地文件和高度自定义,希望自己组合 Skill、Extension 与 Package,可以先体验 Pi。

已经深度使用 OpenAI 和 Codex 的账号与工作流,希望继续沿用现有任务环境,可以先从 Codex 入手。

平时主要使用 Anthropic 和 Claude 生态,希望沿用相应模型与终端协作方式,可以比较 Claude Code。

选择以后,真正要学的仍然是同几件事。工具从哪个目录启动,它有什么权限,上下文怎样管理,结果怎样验收。宣传页上的能力列表很长,最终落到你电脑里的文件,还是要自己打开。

上一篇 朋友圈访客查看系统源码 对接易支付(含会员体系)