Pi 加冕之路 · 已发布
Pi的诗意Harness:Session 与 Context 的记忆与遗忘 Pi Extention的第一枪:Sandbox Extension(2) Pi Extention的第一枪:Sandbox Extension(1) Pi的扩展系统:什么都不内置怎么长出一切 Pi的加冕之路:循环之外的调度机制 Pi加冕之路:EventStream实时事件通信机制 读懂Pi,你就是AI应用之王 亲手写个 mini-pi,再对照 pi 的 743 行源码
极小的内核,与征服宇宙的五件远古兵器

上下文窗口是一个封闭系统。它有边界,有容量,一旦填满,就再没有余地。
在这个封闭系统里,token 是唯一的燃料,也是唯一会枯竭的东西。多数工具没想过这件事。它们在出发前就把舱室塞满补给,塞到连转身都难,然后又奇怪飞船为什么飞不远。
Pi 想过。所以它造得很小。它只带四样东西:读文件,写文件,改文件,跑一条命令。没有别的。这是一种冷静的算计。系统的资源有限,携带得越少,能飞得越远。
外部世界是巨大的。代码库、数据库、一千个应用、整个互联网、以及所有还没被写出来的漏洞,构成一片几乎无边的信息旷野。要征服它,内核那四样朴素的东西远远不够。你需要兵器。
Pi 的军械库里躺着五千多件扩展。它们像某个更古老的文明遗留下来的兵器——每一件都为征服这片旷野的某一个方向而造,冷却了很久,等着被重新握起。但每取一件,都要从那点有限的燃料里扣掉一份。所以问题从来不是"能带什么",而是"先取哪几件"。
下面是五件。它们各自指向那片旷野的一个方向。
一 · Composio:一个接口,接上一千个应用

内核那四样工具只碰得到本地的文件和进程,可你要处理的事大多不在本地。Slack 里躺着一段对话,GitHub 上挂着一个 issue,账单散在 Notion、Linear 和 Gmail 里。每接入一个,都要对付它自己的一套 API、鉴权方式和 token 刷新逻辑。接上三五个已经够烦,更别说几十上百个。
Composio 把这些收敛成一个接口。它背后接了一千多个应用,agent 面对的始终是同一组统一的工具,不必为每个应用重学一套协议。更麻烦的鉴权——OAuth 授权、token 的存储与刷新、多账户切换——由它托管,你这边基本不用碰。
composio search "create a GitHub issue"composio link github接入它本身,只要一条命令加一次登录:
curl -fsSL https://composio.dev/install | bashcomposio login它能不能接入企业的生产系统——这是个会被反复问到的问题。答案是能,但得分情况。
它有两种接法。一种是托管,用 Composio 自己的共享凭证,几乎不配置,agent 运行到需要某个应用的权限时,当场完成授权——这对个人应用和大多数 SaaS 的快速试用很方便。另一种是自带,在控制台里选 OAuth2,打开"使用自己的开发者凭证",填入你自己的 Client ID 和 Secret,把回调指向 Composio 的统一入口。换来的是独立的额度——不再和全世界的用户挤同一条限流管道——以及精细的权限范围和白标。生产环境走这条。
但要说清楚一件事:遇上受租户管控的企业系统——比如企业版 Microsoft Teams、Salesforce——接入的真正门槛不在 Composio 这一侧。Teams 走的是 Microsoft Graph + Entra ID,读频道消息、代用户发言这类权限都是特权范围,在企业租户里几乎都要管理员同意(admin consent),普通员工自己点一下登录是授不了权的(大多数租户默认就关闭了用户自助授权)。所以这种情况下托管模式基本行不通,只能走自带凭证:你们 IT 得先在 Entra ID 里注册应用、对所需的 Graph 权限做管理员同意,再把凭证交给 Composio。
换句话说,Composio 真正替你扛下的是令牌的存储、刷新和多账户这些脏活,IT 不必自建一套令牌系统,也不必面对 OAuth 的刷新循环;但它替不了那一步租户级的管理员授权——那是微软与企业侧的硬约束,任何中间层都绕不过去。
一个接口,一千个应用。这是清单上的第一件扩展,它解决的是最基础的一件事:让 agent 够得着本地之外的世界。
二 · pi-mcp-adapter:把上千个 MCP 工具压进两百 token
MCP 已经成了 agent 接外部能力的通用协议,数据库、浏览器、各类 API 都往它上面靠。但它有一个实打实的代价:每接入一个服务器,它的全部工具定义都会被写进上下文。一个服务器动辄一万 token,不管你这次用不用,它都占着。接上三四个,窗口还没开始干活,就已经被工具定义塞掉一大半。
pi-mcp-adapter 换了个思路:不把工具定义常驻在上下文里,而是只留一个约两百 token 的代理入口。上千件工具的定义都压在这个入口背后,要用哪个,现查现取:
mcp({ search: "screenshot" })mcp({ tool: "chrome_devtools_take_screenshot", args: { format: "png" } })取出的工具描述只作为这一次调用的返回存在,用完即走,不长期占用上下文。那些 MCP 服务器默认也不启动——不调用它的工具,它的进程就不拉起;元数据被缓存下来,连搜索都不必唤醒服务器。
装上之后,它会自动接管你已有的 .mcp.json 和 ~/.config/mcp/mcp.json;Cursor、Claude、Codex 各自的私有配置它不擅自导入,而是等你用 /mcp setup 挑选,写入前先让你 review 一遍改动。
pi install npm:pi-mcp-adapter同样一批 MCP 能力,上下文占用从上万 token 降到两百。省下的窗口,留给真正要做的事。
三 · Piolium:往代码深处做安全审计
大多数 AI 代码审查停在表层:扫一遍 diff,提几条建议。可真正的漏洞往往不在 diff 表面,而藏在调用链深处、几个文件交汇的地方、没人会同时想到的两个条件里——这些地方,扫一遍 diff 是看不到的。
Piolium 专门往深处查。它把一次安全审计拆成最多十七个阶段,每个阶段派一个专门的子 agent,各自带着独立、可中断续跑的上下文,一层层查下去。它不满足于"这里可能有问题",而是生成概念验证(PoC),把一个能复现、能据以动手的证据摆在你面前。指出问题是廉价的,证据不是。
pi install npm:@vigolium/pioliumpi -p "/piolium-balanced --fresh"当你要的是一场动真格的安全审计,而不是对着表面走一遍流程,用它。
四 · pi-web-access:让 agent 看得到当下的网络
模型的训练知识有一个截止时间,那之后发生的事它一概不知。于是它可能笃定地用上一个早已废弃的 API,还毫无察觉。
pi-web-access 把当下的网络接进来。它跨二十多个搜索源检索,能把网页和 PDF 的正文完整取回(而不只是摘要),能把 GitHub 仓库直接克隆到本地读真实文件,甚至能看懂一段视频里讲了什么。
好在它开箱即用,不配任何密钥就能搜:Exa 零配置(走的是 Exa 的 MCP 服务器,免密钥——注意这是省了配置,不是说 Exa 直连 API 免费,后者是按量付费的),用 Codex 登录还能复用 OpenAI 的搜索,最底层兜着完全不要密钥的 DuckDuckGo。Tavily 只是可选来源之一,想用再配,一行即可:
{ "tavilyApiKey": "tvly-..."}写进 ~/.pi/web-search.json 就行,之后默认模式会在回退链里自动用到它。如果想指定用某个来源,你只管用大白话告诉 agent("用 Tavily 搜一下……"),agent 在底层发出的工具调用就长这样,无需你手敲:
web_search({ query: "TypeScript best practices 2025", provider: "tavily" })安装同样是一条命令,不配任何密钥就能看见:
pi install npm:pi-web-access它把 agent 从训练截止的那一刻里放出来,接上正在发生的世界。
五 · pi-subagents:把一个会话拆成一支团队
一个会话同时读代码、查资料、跑测试,注意力会被摊薄,上下文也会被迅速填满。这是单个会话的天然上限。
pi-subagents 的办法是拆分:主会话派生出一批子会话,每个子会话有自己独立的上下文,只盯一件事,互不干扰,也不占用主会话的窗口。主会话下达任务,子会话执行,结果回传——这一层结构和 Claude Code 的子 agent 委派是一样的。
它还能走得更远:子会话可以并行(同时派三个审查者,一个盯正确性、一个盯测试、一个盯复杂度),可以串成序列(先实现再审查),可以退到后台持续跑,也可以固化成一条能反复调用的工作流。主会话有一块实时视图,能看到每个子会话在干什么,随时叫停或纠偏。单个任务能派生的子会话有上限,默认六十四,防止无限蔓延。
它自带一批现成角色,各管一摊:
scout | |
researcher | |
worker | |
reviewer | |
oracle | |
delegate |
指挥它不需要配置,用普通的话就行:"用 reviewer 审这个 diff。"
pi install npm:pi-subagents说到底,它的骨架就是 Claude Code 那套 subagents(子 agent 委派):主会话指挥,子会话执行,结果回传,子会话之间并不对话。一旦你把它脚本化、编排起来,用起来就像一支能协同作业的团队。
(顺带澄清一点:它不是 Claude Code 那个实验性的 Agent Teams。Agent Teams 是多个实例组队,队友之间能点对点互发消息、共享带依赖的任务列表;pi-subagents 的子会话则只听命于主会话、彼此不直接通信,它的"团队感"来自你对子会话的编排,而不是队友间的对话。)
一个会话忙不过来时,把它拆成一支各司其职的团队。
尾声:不要一次握起所有的兵器
五千多件兵器列在军械库里。诱惑是真实的。但每取一件,都要从那点有限的燃料里扣掉一份,都要往封闭系统里再加一分复杂。
克制不是美德,是生存条件。缺哪个方向的火力,才取哪件兵器,而不是把自己堆成一座满载却飞不动的空间站。
还有一件必须记住的事。这些兵器都以完整的系统权限运转,它们锋利,也因此无所顾忌。握起它之前,先想清楚它会劈到什么,它的来路你是否信得过。信息宇宙空旷又并不友善,这点警惕算是常识。
极小的内核,加上五件可以随时放下的远古兵器。它说的其实只有一句:
工具应该长成你要抵达的方向,而不是反过来,把你困在原地。
夜雨聆风