Pi 极简 —— read、write、edit、bash ,我还安装了下面几个包
供应链攻击预防
Pi 的 extension 能注册工具、注入 prompt、执行代码。一个投毒的包能读你的代码、发你的 key,使用 Pi 的时候要先遵循以下策略
- 能本地化的全部本地化
- npm 只留审计过的
- wrapper 隔离 — fast-context-local 和 jshook-local 只 import 核心函数,不走 MCP 开销
- 锁版本 — package.json 写死版本
包总览
npm(4 个)
| 包 | 功能 |
|---|---|
| pi-observational-memory | 单 session 连续性,observation + reflection 机械拼接 |
| pi-hermes-memory | 压缩存储的长期记忆 |
| pi-mcp-adapter | MCP 工具代理,懒加载 |
| pi-subagents | 子 agent 编排 |
本地 extension(7 个)
| 包 | 功能 |
|---|---|
| fast-context-local | 语义搜索,详见下文 |
| smart-search | web 搜索 + Exa + Context7 |
| jshook-local | JS 逆向 hook |
| rpiv-local | i18n、ask-user-question、todo |
| pi-goal-local | 持久自主目标 |
| trellis | 项目结构管理 |
| dynamic-workflow | 动态 workflow 编排 |
fast-context 语义搜索
整个工具链最值钱的包
解决什么
rg 搜 authentication 只匹配字面量。但代码里可能叫 verifyToken、checkSession、validateJwt
fast-context 用 Windsurf 的 Devstral 模型做语义搜索。你给自然语言,它理解后生成 rg/readfile/tree 命令,本地执行,返回文件路径和行范围
query + tree → Devstral API → 生成命令 → 本地执行 → 结果回传 → 重复 N 轮 → 文件路径 + 行范围
vs ace-tool
ace-tool 走 MCP 协议,fast-context-local 是 Pi 原生 extension
| ace-tool (MCP) | fast-context-local (原生) | |
|---|---|---|
| 协议 | MCP over stdio | ExtensionAPI 直接注册 |
| 启动 | fork 子进程 + MCP 握手 | 无开销 |
| 参数 | query, project_path, tree_depth… | 同上 + exclude_paths |
| 诊断 | 基础错误 | 错误分级 + hint + doctor 命令 |
核心逻辑一样——都调 core.mjs。区别在包装层:MCP 要起 server 进程,原生版把函数直接挂到 Pi
机制
多轮 agent loop:
- tree 生成 repo map — 自适应深度,>250KB 自动降级
- query + tree 发给 Devstral — Connect-RPC/Protobuf
- Devstral 返回 tool_call — rg/readfile/tree/ls/glob,最多 8 个并行
- 本地执行,结果回传 — 重复 3 轮(可调 1-5)
- Devstral 输出 ANSWER — XML 格式的文件路径 + 行范围