pi.dev 上现在有 2400 多个扩展包,月下载量前 20 的加起来超过 50 万次。我来逐个介绍这些扩展。

pi-subagents — 70.6K/月

让 AI 把任务委派给专注的子代理。内置 7 个专业代理:

  • scout:快速本地代码库侦察,找到相关文件、入口点、数据流、风险,以及另一个代理应该从哪里开始

  • researcher:网络和文档研究,包括官方文档、规范、基准测试、最近变更,生成简洁的研究简报

  • planner:从现有上下文制定具体实现计划,只读和计划,不编辑代码

  • worker:实现工作,包括已批准的 oracle 交接,编辑文件、验证,遇到未批准的决策时升级而不是猜测

  • reviewer:代码审查和小修复,检查实现是否符合任务/计划、测试、边缘情况和简洁性

  • context-builder:规划前的更强设置阶段,收集代码上下文并编写交接材料如 context.mdmeta-prompt.md

  • oracle:行动前的第二意见,挑战假设、捕捉偏离、推荐最安全的下一步,不编辑文件

可以用自然语言触发:”Use reviewer to review this diff” 或 “Ask oracle for a second opinion on my current plan”。也可以链式执行(scout → planner → worker)或并行执行(多个 reviewer 同时工作,一个关注正确性,一个关注测试,一个关注不必要复杂度)。

支持后台运行和 fork 上下文。子代理可以 TUI 澄清 UI 预览和编辑工作流。内置推荐编排模式:clarify → planner → worker → fresh reviewers → worker。

pi-mcp-adapter — 59.8K/月

MCP(Model Context Protocol)是 Anthropic 推出的模型上下文协议。问题是 MCP 服务器会暴露上百个工具,每个工具的定义要占 100-300 token,连接几个服务器就烧掉半个上下文窗口——而且不管你用不用这些工具都要付这个成本。

这个适配器用一个 mcp 代理工具(约 200 token)代替所有 MCP 工具。服务器懒加载——只有实际调用工具时才连接,不会在启动时连接。工具元数据缓存到磁盘(~/.pi/agent/mcp-cache.json),搜索、列出和描述功能不需要实时连接。

可以通过 directTools 配置把常用工具提升为 Pi 的一级工具,让 LLM 直接看到,而不是通过代理搜索。比如:

1
2
3
4
5
6
7
8
9
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"directTools": ["search_repositories", "get_file_contents"]
}
}
}

生命周期模式:lazy(默认,连接后空闲 10 分钟断开)、eager(启动连接但不自动重连)、keep-alive(启动连接,自动重连)。

支持 MCP UI 标准。当 agent 调用有 UI 资源的工具时,适配器通过 Glimpse(macOS)或浏览器打开它,UI 可以调用 MCP 工具并发消息回给 agent,双向通信。

配置文件:.mcp.json(项目)、~/.config/mcp/mcp.json(用户全局)、~/.pi/agent/mcp.json(Pi 全局覆盖)、.pi/mcp.json(Pi 项目覆盖)。

context-mode — 57.8K/月

“上下文问题的另一半”。从 4 个方面解决:

上下文节省:沙箱工具把原始数据挡在上下文外。Playwright 快照 56KB、20 个 GitHub issue 59KB、一个访问日志 45KB,通过沙箱后变成 5.4KB,98% 减少。

会话连续性:每个文件编辑、git 操作、任务、错误和用户决定都记录到 SQLite。对话压缩后不把这些数据倒回上下文——而是索引到 FTS5,通过 BM25 搜索只注入相关内容。模型从上次停的地方继续。如果你不用 --continue,上次会话数据立即删除——新会话是干净的开始。

Think in Code:LLM 应该编程来做分析,而不是计算。不是读 50 个文件到上下文来数函数,而是写个脚本做计数,console.log() 结果。一个脚本代替 10 次工具调用,节省 100 倍上下文。这是所有 15 个平台的强制性范式:停止把 LLM 当数据处理器,把它当代码生成器。

1
2
3
4
5
// Before: 47 × Read() = 700 KB. After: 1 × ctx_execute() = 3.6 KB.
ctx_execute("javascript", `
const files = fs.readdirSync('src').filter(f => f.endsWith('.ts'));
files.forEach(f => console.log(f + ': ' + fs.readFileSync('src/'+f,'utf8').split('\n').length + ' lines'));
`);

不强制文风:context-mode 管数据往哪去,不管模型怎么写回答。简洁性、完整性、格式——你的模型决定(或通过你自己的 CLAUDE.md/AGENTS.md)。

11 个 MCP 工具:ctx_batch_executectx_executectx_execute_filectx_indexctx_searchctx_fetch_and_index(6 个沙箱工具)+ ctx_statsctx_doctorctx_upgradectx_purgectx_insight(5 个元工具)。

支持 Claude Code(plugin 自动路由)、Gemini CLI(hook 自动路由)、VS Code Copilot(hook)、JetBrains Copilot(hook)、Cursor(hook/plugin)、OpenCode(plugin)等平台。

pi-web-access — 34.3K/月

网页搜索、内容提取和视频理解。零配置 Exa 搜索(不需要 API key),也可以添加 Exa、Perplexity 或 Gemini API key 获取更多控制,或者用浏览器 cookie 访问 Gemini Web。

工具:

  • web_search:通过 Exa、Perplexity AI 或 Gemini 搜索网络,返回带来源引用的综合答案。支持批量查询、按天/周/月/年过滤、限制域名、包含内容抓取

  • code_search:通过 Exa MCP 搜索代码示例、文档和 API 引用,不需要 API key

  • fetch_content:获取 URL 并提取可读内容为 markdown。自动检测和处理 GitHub 仓库、YouTube 视频、PDF、本地视频文件和常规网页

  • get_search_content:从之前的搜索或抓取中检索存储的内容

GitHub URL 被克隆到本地,不是抓取渲染的 HTML。模型拿到真实文件内容和本地路径,可以用 readbash 探索。超过 350MB 的仓库通过 API 获取轻量级视图(可以 forceClone: true 覆盖)。克隆在会话中缓存,会话更改后清除。私有仓库需要 gh CLI。

YouTube 视频通过 Gemini 处理:完整转录、带时间戳的视觉描述、章节标记。可以传一个 prompt 问视频里的具体问题。结果包含视频缩略图。fallback:Gemini Web(启用浏览器 cookie 时)→ Gemini API → Perplexity(只有文本摘要)。处理所有 URL 格式:/watch?v=youtu.be//shorts//live//embed//v/

本地视频文件:传文件路径(/./../file:// 前缀)通过 Gemini 分析视频内容。支持 MP4、MOV、WebM、AVI 等常见格式,最大 50MB。可以传 prompt 问具体内容。安装 ffmpeg 会包含缩略图帧。

PDF URL 提取为文本并保存到 ~/Downloads/ 作为 markdown。agent 可以 read 特定部分而不加载完整文档到上下文。只有文本提取,没有 OCR(扫描文档)。

被阻止的页面:当 Readability 失败或只返回 cookie 通知时,扩展通过 Jina Reader(服务器端 JS 渲染,不需要 API key)重试,然后 Gemini URL Context API,再是 Gemini Web 提取(启用浏览器 cookie 时)。处理 SPA、JS 重型页面和反机器人保护。也解析 Next.js RSC flight 数据。

每个能力都有 fallback 链:搜索先试 Exa,再试 Perplexity,再试 Gemini API,最后试 Gemini Web(启用浏览器 cookie 时)。

配置:~/.pi/web-search.jsonprovider 设置默认搜索提供商(exaperplexitygemini)。workflow 设置默认 curator 模式(summary-review 打开 curator 并自动生成摘要草稿,none 原始结果)。

斜杠命令:/websearch(打开搜索 curator)、/curator(切换或配置 curator)、/search(浏览存储的搜索结果)、/google-account(显示当前认证的 Google 账户)。

活动监视器:Ctrl+Shift+W 切换显示实时请求/响应活动。

@ollama/pi-web-search — 26.1K/月

基于本地 Ollama 实例的网页搜索和抓取工具。适合本地部署场景,不依赖外部 API。

两个工具:

  • ollama_web_search:搜索网络获取实时信息

  • ollama_web_fetch:从网页获取并提取内容

要求:pi coding agent 已安装、Ollama 正在运行(ollama serve)。

如果连接错误:确保 Ollama 正在运行、验证 web search/fetch 在 Ollama 配置中启用、检查 OLLAMA_HOST 环境变量匹配设置。

@plannotator/pi-extension — 21.9K/月

交互式计划审查。可以给 agent 消息添加注释,还能审查代码和 PR。提供计划审查界面,agent 可以交互式审查计划,标注问题,收集反馈,改进方案。

pi-lens — 13.7K/月

实时代码反馈。每次 writeedit 时运行一个快速、语言感知的管道:

  • Secrets 扫描:阻止写入,检测到凭证(密码/token/secret)

  • Auto-fix:6 个工具的安全自动修复(Biome check --write、Ruff check --fix、ESLint --fix、stylelint --fix、sqlfluff fix、RuboCop -a)在分析前应用

  • LSP 同步:在活跃语言服务器中打开/更新文件

  • 并行 lint:LSP 诊断、tree-sitter 结构规则、ast-grep 安全/正确性规则、fact 规则、语言特定 linter、实验性 Semgrep 安全扫描、相似性检测

  • 级联诊断:显示哪些其他文件受影响以及诊断如何传播(通过文件 → 符号 → 依赖的 review graph)

agent 结束时(所有 agent 工具调用完成后):

  • 延迟格式化:本轮排队的文件格式化一次,同步到 LSP,跟踪 read-guard 覆盖

  • 摘要通知:简洁状态:多少文件被格式化、哪些改变、是否有格式化器失败

会话开始时:重置运行时状态和诊断遥测,检测项目根、语言配置文件和活跃工具,应用语言感知的启动默认值来预装工具,预热缓存和可选索引(有重叠/会话护栏),为检测到的语言发出缺失工具安装提示,在用户提示前添加会话指导,打开 warmFiles(在 .pi-lens/lsp.json 中配置)来为懒索引语言服务器如 clangd 做种。

LSP 支持默认开启(--lsp 或无 flag),内置 37 种语言服务器定义,自动从 PATH、项目 node_modules 和托管安装中发现。服务器未安装时提供交互式安装提示。LSP 服务器 240 秒不活动后关闭(没有文件被修改),编辑恢复时重置定时器。懒索引服务器如 clangd 可以配置 warmFiles 在会话开始时打开入口点文件。

格式化器:自动检测并运行 26 种格式化器(biome、prettier、ruff、black、sqlfluff、gofmt、rustfmt、zig fmt、dart format、shfmt、nixfmt、mix format、ocamlformat、clang-format、ktlint、rubocop、standardrb、gleam format、terraform fmt、php-cs-fixer、csharpier、fantomas、swiftformat、stylua、ormolu、taplo)。检测规则:配置门控(只在项目配置指示使用时运行)、最近胜(多个格式化配置在不同目录级别存在时,离编辑文件最近的胜)、Biome 默认(JS/TS 文件没有 Prettier 或 Biome 配置时用 Biome)、Ruff 默认(Python 文件没有 Black 配置时用 Ruff format)。

Read-before-edit 保护:所有文件写入和编辑前验证 agent 是否读了足够上下文。零读取阻止(任何编辑没在当前会话读过的文件)、文件修改阻止(文件在上次读取后磁盘上改变)、超出范围阻止(编辑目标行超出之前读取的范围)。跨越多个读取的覆盖:读取 1-100 行和 101-200 行一起满足完整文件写入。符号扩展读取(小读取通过 tree-sitter 透明扩展到封闭符号)在符号级别计入覆盖。Markdown、文本和日志文件豁免。单次编辑覆盖:/lens-allow-edit <path>。配置 --no-read-guard 禁用或模式设为 warn

机会性读取扩展:当 agent 读取一个小切片(≤ 60 行)时,pi-lens 通过 tree-sitter AST 透明扩展到完整封闭符号(函数、方法或类)。agent 收到完整符号作为上下文,read guard 记录符号级别覆盖,所以符号内任何地方的编辑通过而不需要 agent 读每一行。扩展在 200ms 预算内运行,不支持的文件类型或解析失败时静默回退。支持 TypeScript、TSX、JavaScript、JSX、Python、Go、Rust、Ruby。

Fact 规则管道:覆盖 JavaScript/TypeScript、Python、Go、Rust、Ruby、Shell、CMake。基于 TypeScript AST 的 fact-rule 引擎提取函数级别指标并评估质量和安全规则。阻止规则在写入时立即浮现,建议规则通过 /lens-booboo 访问。

阻止(写入时浮现):cors-wildcard(Access-Control-Allow-Origin: * 在服务端代码)、error-swallowing(空 catch 块)、no-commented-credentials(注释代码中的密码/token/secret)、high-entropy-string(Shannon 熵可疑高的字符串字面量,可能硬编码 secret)。

pi-markdown-preview — 12.1K/月

Markdown 和 LaTeX 预览。可以输出到终端、浏览器或 PDF。实时渲染,支持数学公式、代码高亮、表格、列表等 Markdown 特性,以及 LaTeX 数学公式。

@juicesharp/rpiv-ask-user-question — 12K/月

结构化问卷工具。当 AI 需要猜测时,可以用选项向用户提问,而不是自由输入。这样可以避免模糊的猜测,确保得到明确的方向。支持带选项的问卷,用户可以从预定义的选项中选择,或者输入自定义内容(如果允许)。

Powerline 风格的状态栏,显示模型、thinking、token、git、worktree 和 skill 指标。提供两行固定状态页脚,包含丰富的信息和视觉反馈。

@juicesharp/rpiv-todo — 11.5K/月

待办事项列表,以覆盖层显示,/reload 和会话压缩后还在。支持依赖追踪(blockedBy)和循环检测,模型可以顺序安排工作。4 种状态:pending → in_progress → completed,加上删除的墓碑记录(用于审计)。

覆盖层在编辑器上方实时渲染,完成的项目保持可见直到下个 agent 响应开始,然后消失。12 行折叠阈值;完成的项目先掉落,待办项目最后截断。列表为空时自动隐藏。

工具 todo:创建/更新/列表/获取/删除/清除任务。blockedBy 依赖追踪带循环检测。任务通过分支回放持久化——存活会话压缩和 /reload

斜杠命令 /todos:按状态分组打印当前待办列表。

本地化:安装 @juicesharp/rpiv-i18n 可以把覆盖层标题、/todos 章节标题和状态词切换到活动区域。支持 deenesfrptpt-BRruuk。语言从 --locale <code>~/.config/rpiv-i18n/locale.jsonLANG/LC_ALL → 英语解析。

pi-simplify — 10.2K/月

审查最近修改的代码,检查清晰度、一致性和可维护性。基于 git diff 检测变更文件,让 agent 审查这些原则:

  • 保留功能:从不改变代码做什么

  • 应用项目标准:遵循 CLAUDE.md/AGENTS.md 的约定

  • 增强清晰度:减少复杂度、消除冗余、改进命名

  • 保持平衡:避免过度简化

agent 读每个文件,一次应用一个改进,运行测试验证不破坏任何东西,总结变更。

斜杠命令:/simplify(审查所有未提交变更)、/simplify --staged(只审查暂存变更)、/simplify src/foo.ts src/bar.ts(审查特定文件)、/simplify --ref=main(对比特定分支 diff)。

@juicesharp/rpiv-advisor — 9,294/月

让 AI 在行动前向更强的模型请求第二意见。当决策本身有风险时很有用——oracle 会挑战假设、捕捉偏离、推荐最安全的下一步而不编辑文件。避免在没验证的情况下做出高风险决策。

pi-btw — 9,095/月

平行对话功能。/btw 命令开启一个真正的 Pi 子会话,有 read/bash/edit/write 工具访问,在主 agent 忙碌时也能运行。

  • 连续 BTW 线程:默认保持,后续 /btw 调用继续当前线程

  • /btw:tangent:上下文无关的侧边线程,不从当前主会话继承对话

  • 打开专注 BTW 模态窗口:有自己的 composer 和 transcript

  • 在你用 Alt+/ 把焦点切回主编辑器时保持 BTW 覆盖打开

  • BTW 线程条目不出现在主 agent 的未来上下文中

  • 支持 BTW-only 模型和 thinking 覆盖而不改变主线程设置

  • 注入完整线程或摘要回主 agent

  • 可选 --save 把单个 BTW 交换保存为可见的会话笔记

斜杠命令:

  • /btw [--save] <question>:立即运行,保持当前 BTW 线程,打开或刷新 BTW 模态窗口,流到 BTW 模态 transcript/状态表面,持久化 BTW 交换为隐藏线程状态

  • /btw:new [question]:清除当前 BTW 线程,从当前主会话上下文启动新线程

  • /btw:tangent [--save] <question>:启动或继续上下文无关的 tangent 线程,不从当前主会话继承对话

  • /btw:clear:关闭 BTW 模态/组件,清除当前 BTW 线程

  • /btw:inject [instructions]:发送完整 BTW 线程回主 agent 作为用户消息,pi 忙碌时排队为后续,发送后清除 BTW 线程

  • /btw:summarize [instructions]:用当前有效 BTW 模型总结 BTW 线程,注入到主 agent,pi 忙碌时排队,清除 BTW 线程

  • /btw:model [<provider> <model> <api> | clear]:显示或设置 BTW-only 模型覆盖

  • /btw:thinking [<level> | clear]:显示或设置 BTW-only thinking 覆盖

覆盖控件:Alt+/ 在 BTW 和主编辑器之间切换焦点不关闭覆盖层,Ctrl+Alt+W 是不传递 Alt+/ 的终端的回退焦点切换,Esc 覆盖层聚焦时立即关闭 BTW。

BTW 作为实际 Pi 子会话实现,有自己的内存会话状态、transcript 事件和工具表面。上下文 /btw 线程从当前主会话分支种子化并过滤掉父上下文中的 BTW 可见笔记;/btw:tangent 在无上下文模式下启动相同 BTW UI。BTW 可以继承主线程模型/thinking 设置或使用 BTW-only 覆盖。覆盖层 transcript/状态行从子会话事件驱动。

@juicesharp/rpiv-web-tools — 9,054/月

基于 Brave Search API 的网页搜索工具。提供网络搜索和内容抓取功能,使用 Brave Search API 获取结果,适合需要高质量搜索结果的场景。

@juicesharp/rpiv-btw — 8,998/月

/btw 斜杠命令,一次性侧边提问。简化版平行对话,用于快速侧边问题而不保持连续线程。

@runfusion/fusion — 8,990/月

Fusion AI 编码代理的 CLI 工具。提供 HTTP API 服务器、守护进程、dashboard 启动器和任务工具。

@juicesharp/rpiv-pi — 8,855/月

基于技能的开发工作流。包含五个技能(研究、设计、计划、实现、验证)和组成其 ship-loop 的共享子代理。提供技能驱动的开发流程,从研究到验证的完整链路。

glimpseui — 8,683/月

原生微 UI 框架,提供跨平台的 WebView 窗口和双向 JSON 通信。用于脚本和代理——跨平台 WebView 窗口带双向 JSON 通信。

MCP UI 标准支持:当 agent 调用有 UI 资源(_meta.ui.resourceUri)的工具时,适配器获取 UI HTML 并在 iframe 中打开(通过 Glimpse 的原生 macOS WKWebView 窗口,如果可用,否则回退到浏览器)。UI 可以调用 MCP 工具并发消息回给 agent。

会话复用:当 agent 再次调用同一工具而其 UI 已打开时,适配器推送新结果到现有窗口而不是替换。这启用实时更新——agent 可以细化图表、添加数据或响应用户输入而不丢失当前视图。不同工具仍替换会话如之前。

来自 UI 的消息类型:prompt(触发 agent 响应用户消息)、intent(带名称 + 参数的结构化动作)、notify(即发即忘通知)、message(通用消息负载)。

检索 UI 消息:mcp({ action: "ui-messages" })

浏览器控件:Cmd/Ctrl+Enter 完成并关闭,Escape 取消并关闭,Done/Cancel 按钮 同键盘快捷键。

技术:工具许可门控 UI 是否可以调用 MCP 工具,支持 stdio 和 HTTP MCP 服务器,使用本地 408KB AppBridge 包(MCP SDK + Zod)进行浏览器↔服务器通信。

@samfp/pi-memory — 8,013/月

持久化记忆。从会话中学习纠正、偏好和模式,在未来对话中注入。

自动学习:会话结束时通过 LLM 整合提取偏好、项目模式和纠正。只有置信度 ≥ 0.8 的事实被存储。课程通过精确匹配和 Jaccard 相似度(≥ 0.7 阈值)去重。

上下文注入:新会话开始时从存储事实和课程构建 <memory> 上下文块,追加到系统提示。块限制在 8KB。

纠正粘住:你纠正一次的错误变成永久课程(如 “use sed for daily notes, not echo >>”)。

记忆类型:偏好(pref.*,如 pref.commit_style → “conventional commits”)、项目模式(project.*,如 project.rosie.di → “Dagger dependency injection”)、工具偏好(tool.*,如 tool.sed → “use for daily note insertion”)、用户身份(user.*,如 user.timezone → “US/Pacific”)、课程(表格)。

工具:memory_search(语义搜索)、memory_remember(手动存储事实或课程)、memory_forget(删除事实或课程)、memory_lessons(列学习的纠正)、memory_stats(显示记忆统计)。

斜杠命令:/memory-consolidate(手动触发从当前会话的内存提取)。

工作原理:

  • session_start:打开 SQLite 存储,在状态栏短暂显示记忆统计

  • before_agent_start:从存储事实和课程构建 <memory> 上下文块,追加到系统提示

  • agent_end:收集会话消息用于后续整合

  • session_shutdown:运行 LLM 整合(通过 pi -p --print)提取结构化知识,然后关闭存储

存储:SQLite 数据库在 ~/.pi/memory/memory.db(WAL 模式)。三张表:semantic(带置信度分数的键值事实)、lessons(学习的纠正带去重)、events(所有记忆操作的审计日志)。

项目本地存储:保持项目记忆与用户全局记忆隔离,在 {project}/.pi/settings.json 添加:

1
2
3
4
5
{
"pi-memory": {
"localPath": ".pi/memory" // 解析为 {project}/.pi/memory/memory.db
}
}

或者如果通过 pi-total-recall 安装(包含 pi-memory、pi-session-search 和 pi-knowledge-search 的完整上下文堆):

1
2
3
4
5
{
"pi-total-recall": {
"localPath": ".pi/total-recall"
}
}

解析顺序(最高优先在前):pi-memory.localPath{cwd}/.pi/settings.jsonpi-total-recall.localPath cascade → {localPath}/memory/memory.db → 全局默认:~/.pi/memory/memory.db

选择性课程注入:默认所有课程注入每个会话。当有很多跨不同领域的课程时可能浪费上下文。启用选择性模式根据相关性过滤课程:

1
2
3
4
5
{
"memory": {
"lessonInjection": "selective"
}
}

添加到 ~/.pi/agent/settings.json。在选择性模式,课程通过提示相关性(FTS 搜索用户的第一个消息)、项目上下文(匹配当前工作目录项目的课程)、类别推断(提示中的关键词触发相关类别,如 “pentest” 拉取 bug-bounty 课程,”blog post” 拉取 writing 课程)过滤。结果限制在 15 个最相关课程而不是全部。

社区

这 20 个扩展每月下载超过 50 万次。juicesharp 和 nicopreme 贡献最多,各有多个扩展上榜。juicesharp 专注于工作流工具(rpiv-todo、rpiv-advisor、pi-btw、rpiv-ask-user-question、rpiv-pi),nicopreme 贡献了核心扩展(pi-subagents、pi-mcp-adapter、pi-web-access)。

安装

安装扩展用 pi install npm:<package名>。比如:

1
pi install npm:pi-subagents

最后的话

Pi 的扩展生态在快速成长。从任务调度、网络访问到代码审查、文档预览,从子代理协作到持久化记忆,开发者们构建了完整的工具链。这个排行榜只是个快照,未来应该还会有更多好东西。