背景:Pi 1.0发布后的生态焦点
大家好,我是小木头。2023年10月1日,Pi 1.0正式发布,这一版本在 Hacker News 上获得了超过 1600分 的高关注度。在众多评论中,回复量最高的一条提问直指核心:大家到底是怎么用 Pi 的?
“评论区里回复最多的一条问的是,大家到底是怎么用 Pi 的”
这条讨论引发了大量回复,其中出现频率最高的词汇是 扩展(Extension)。目前官网的 Packages 页面已经收录了超过 5300个 Package。一个标准的 Package 内部结构灵活,可以包含扩展、Skill(技能)、提示词模板以及主题。本期视频将深入本地终端,演示如何试用开源 Package、将其安装进项目,并最终将自己编写的提示词模板和 Skill 打包成一个完整的 Package。
环境升级与试用开源包
在开始具体操作前,首先需要确保 Pi 本身是最新版本。执行 pi update(无需参数)即可将 Pi 从旧版本升级至最新版,博主演示中从 0.99.2 升级到了最新版本 1.0.2。
为了展示 Package 的效果,博主从 Packages 页面挑选了一个下载量很高的开源包 rpiv-todo。该扩展的作用是为模型提供一份待办清单,并在界面上实时显示。为了先观察效果而不急于安装,可以使用 -e 参数配合来源指定进行试用:
“想先看看效果,不急着安装,可以用 pi -e 后面跟上 Package 的来源”
对于来自 npm 的包,格式为 npm:包名。运行后,模型首先列出了 5步计划 使用 todo,界面下方随即多出了一个 Todos面板。此时退出运行,执行 pi list 命令查看已安装包列表,结果显示为空。这是因为 -e 参数仅在当次运行中加载扩展,不会写入任何配置文件。如果用户觉得该工具好用,可以通过 pi install 进行正式安装。
安装策略与信任机制
使用 pi install 默认将包安装在 全局作用域,使得每个项目都能使用该扩展。若希望限制使用范围,可以添加 -l 参数,指定只安装到 当前项目。此时,配置信息会写入项目的 settings.json 文件,而包本身则下载到项目根目录下的 .pi 文件夹中。
然而,安装完成后再次运行 pi list,列表依然显示为空。这是因为 Pi 出于安全考虑,项目必须信任 Package 才能执行代码。在读取 settings.json 之前,Pi 会弹出对话框要求确认信任。用户需选择 Trust,该决定会被记录,下次不再询问;若只想临时信任一次,可在命令后加 -a 参数。
“Pi在读取项目的settings.json之前,要先确认你信任这个目录”
博主强调,由于 Package 具备执行代码的能力,在安装第三方包前,最好先查看其源码。信任机制建立后,启动页即可列出该扩展。
自定义 Package:结构与提示词模板
别人的包可以安装,自己的代码同样可以打包。一个标准的 Pi Package 就是一个普通目录,需按约定放置子目录: - prompts:存放提示词模板 - skills:存放 Skill 文件 - extensions:存放扩展代码 - themes:存放主题样式
在 package.json 中添加 pi-package 关键词,发布到 npm 后即可出现在 Packages 页面。以提示词模板为例,文件名即为命令名(如 review.md),对应 /review 命令。文件中包含:
1. description:显示在命令补全中。
2. 正文参数:使用 ${1:-...} 格式定义第一个参数,若不传则使用冒号后的默认值。
“正文里的 ${1:-...} 这么一个字符串是第一个参数,不传就用冒号后面的默认值”
博主演示输入 /review 并发安全,审查重点随即切换为 并发安全。
Skill的开发与调用逻辑
Skill 是一个包含 SKILL.md 的目录。Pi 在启动时,仅将 Skill 的名字和描述放入提示词;只有当任务匹配时,模型才会读取完整内容。因此,描述中必须明确说明 Skill 的功能和使用场景。
安装本地目录同样使用 pi install,但需注意配置中的路径是相对路径。例如 ../../my-pi-kit,该路径是从 配置文件所在位置 开始计算的。
重新打开 Pi,启动页会新增一个 Skill 和一个提示词模板。输入 /rev 时,补全列表中能清晰看到用户编写的参数提示和描述。
实战案例:代码审查与小费计算器
博主展示了一个实际应用场景:对暂存的改动进行审查,该改动为一个 小费计算器 增加了按人数平摊的功能选项。模型在审查后指出:第7行没有校验人数。博主验证发现,若不传人数结果为 NaN(非数字),若人数为0则结果为 Infinity(无穷大)。这证明了 Skill 能有效捕捉逻辑漏洞。
Skill 的调用方式灵活:
1. 自动加载:等待模型自行判断是否匹配。
2. 手动调用:使用 /skill:名字 直接指定。
在本次会话中,模型读完改动并生成了一条提交信息。博主指出,这段复杂的交互过程仅花费了 不到6美分 的费用。
Package管理命令汇总
随着安装的包增多,可以通过 pi config 按资源进行启用或停用。一个 Package 内的 Skill、模板和扩展均可单独开关。
- pi config -l:仅修改当前项目中的 Package 和资源配置。
- pi remove:卸载不再需要的包,同时清除配置和下载的文件。
- pi update --extensions:仅更新 Package 扩展。
- pi update --all:连 Pi 本身一起更新。
“配置和下载的文件都会一起清掉”
结论
本视频完整演示了 Pi 1.0 环境下 Package 的全生命周期管理。核心结论如下:
1. 试用与安装分离:使用 -e 参数可无风险试用 npm 包,确认无误后通过 pi install -l 安装至项目级目录。
2. 安全信任机制:执行代码前必须通过 Trust 对话框或 -a 参数显式授权,建议安装前审查源码。
3. 自定义开发规范:通过标准目录结构(prompts/skills/extensions)和 package.json 配置,可将提示词模板和技能打包为可复用 Package。
4. 高效低成本:Skill 机制通过描述匹配优化上下文加载,结合精确的命令调用(如 /skill:),能在极低费用下实现复杂的代码审查与辅助功能。
示例项目和 my-pi-kit 源码已置于视频描述中,欢迎读者下载体验并分享使用经验。