2026年10月4日 · 阅读 —

omp 常用"外挂"盘点:一个把 Pi 武装到牙齿的分支

Agent 与 Skills测试与评测

omp 常用”外挂”盘点:一个把 Pi 武装到牙齿的分支

如果你用习惯了 Claude Code,第一次打开 Pi 多半会觉得寒酸:内置工具就 read、write、edit、bash 这几个,没有 plan mode,不接 MCP,连权限弹窗都省了。这套”内核极简”的设计只预留扩展位,能力全靠往里加。

这时候另一条路出现了:与其自己慢慢加,不如直接用别人把料加满的分支。omp(oh-my-pi)就是干这个的——它是从 Pi fork 出来的独立项目,把 Pi 没做的一大堆能力直接内置。这篇把 omp 自带的常用功能和平常好用的扩展按场景理一遍。

先说清关系,免得两个名字绕晕。

先认清 omp 和 Pi 不是一回事

Pi 是 Mario Zechner 在 2025 年 8 月创建的编码代理,纯 TypeScript。omp 是 Can Bölük 从 Pi fork 出来的独立项目,两者各自发展,omp 会定期从 Pi 合并上游变更。规模差距已经拉得很开:Pi 约 20 万行 TypeScript、4 个包、四千多个 commit;omp 约 112 万行 TypeScript 加 17 万行 Rust,16 个包加 8 个 Rust crate,一万四千多个 commit。

两者 fork 时留下的四个同名包,各自演进后也差得多(数字来自项目现状):

包Pi 当前omp 当前
ai(LLM 接口)58K188K
agent(运行时)14K26K
coding-agent(CLI)104K631K
tui(终端 UI)26K61K

差距最大的 coding-agent,Pi 那边是核心流程(会话管理、工具调度、RPC 模式),omp 在这个基础上加进了下面要说的功能。所以一条实用的选型结论是:喜欢开箱即用就选 omp,喜欢极简自己折腾就用 Pi。

下面分两类聊:omp 自带的这批”外挂”,以及 Pi/omp 生态里整体口碑靠前的扩展。

omp 自带:把 Pi 不肯内置的能力全做进去了

Pi 把 MCP、plan mode、子代理这些明摆着留给生态,omp 反过来直接收编。这 14 项是它家谱里最常被提起的,一张表对齐:

外挂干什么和 Pi 的差别
Hashline用块哈希定位改代码,不用 AI 抄旧代码Pi 没有
AST 编辑按语法结构批量改,支持预览和原子写入Pi 没有
LSP 集成理解函数定义/引用,改名连引用一起改Pi 没有
DAP 调试器挂在真实调试器上跑程序找 bugPi 没有
子代理并行拆活,带 worktree 隔离和结构化输出Pi 有基础版,omp 更深
Advisor双模型,一个写一个实时审Pi 没有
持久化执行常驻 Python + Bun 进程,跨步保留状态Pi 是离散执行
TTSR规则平时静默,触发时注入Pi 没有
Hindsight跨会话记忆 retain/recall/reflectPi 没有
协作共享/collab 生成链接,实时看会话Pi 没有
原生引擎ripgrep/glob/brush 编译进程序Pi 调系统外部命令
内部 URLread/write 统一 pr/agent/conflict 路径Pi 没有
Agentic Commit自动把改动拆成有意义的多个 commitPi 只有 auto-commit
浏览器/Web 搜索web_search + read 开 PDF/网页 + PuppeteerPi 没有

绝大多数是 Pi 没有的;子代理和自动 commit 两项 Pi 有基础版本,omp 做得更深。下面挑几个反直觉、最值得说道的展开。

Hashline:AI 改代码不用再”抄一遍”了

绕过传统编辑器的核心痛点:AI 要改旧代码,得先把旧文本原样抄出来再附上新内容,让工具做替换。问题就在”抄一遍”——空格、Tab、换行差一点,工具就找不到一模一样的位置,报错重试,有时十几轮才改对一次。

omp 的 Hashline 换了思路:工具读文件时用 tree-sitter 把代码解析成语法块(函数、类、if 块),给每块算出一个哈希当标识。AI 只消说”把标识 a3f2 的块换成……”,工具按哈希精确命中。哈希是工具自己算的,不是 AI 抄的,天然抄不错。还有一层保护:如果改的过程中文件被别处动了,原块的哈希对不上,工具会拒绝写入,提示先重新读,绝不蒙头覆盖搞坏文件。

效果数字摘自 omp 的 README(未经过独立实测):Grok 4 Fast 用 Hashline 比传统文本匹配少输出 61% 的 token,因为省掉了抄旧代码和反复重试。

AST 编辑:批量改同一写法,预览完一次写入

搜 console.log( 的字符拼写会误伤 myConsole.log(,也漏掉中间多空格的 console .log(。AST 编辑找的是”语法上是 console.log 的函数调用”,空格换行怎么排都不影响。

流程分四步:AI 说”找出所有匹配 console.log($X) 的调用”($X 是占位符参数)→ 工具用 ast-grep(基于 tree-sitter,覆盖五十多种语言)定位全部命中 → 找到后不急着写,先挂起预览”准备替换 3 处,在 1 个文件里” → AI 调 resolve 确认,一次性全部写入。写入是原子操作:要么三处全改,要么一处不动,不会改到一半卡住。

和 Hashline 的分工:Hashline 靠块级指纹精改某个函数,AST 靠语法结构批量改同一写法,比如把所有 console.log 换成 logger.info。

DAP:AI 真的跑程序找 bug,而不是看源码猜

比 LSP 更进一步的动作是接到调试器上。大部分编码 AI 只能读源码猜 bug,omp 能 attach 到真实调试器:

  • C/C++ 崩溃,attach lldb,打断点、单步到出错那行、读当时各变量值;
  • Go 服务卡住,attach dlv,暂停后遍历所有 goroutine 找出谁在死等;
  • Python 进程挂了,attach debugpy,暂停、查变量、执行任意表达式。

说到底就是让 AI 从”读代码猜”升级成”跑起来看运行时状态”。

Advisor:第二个模型在旁边盯着主力

这是 omp 的双模型功能:同一个会话配两个模型,一个负责写(主力),一个负责审(Advisor)。Advisor 每轮都读主力模型的操作,发现问题就注入一条备注——可能是提醒(“这样会把别的错误也吞掉”),可能是担忧,也可能是硬性阻止。它跑在自己的独立上下文和模型上,不抢主力的 token。主力看到备注可以修正,也可以说明为什么不采纳。等于给 AI 干活配了个不会累的 code review。

Hindsight:聊完不忘事

大多数 AI 会话结束就清空,下次要重新介绍项目背景。Hindsight 做跨会话记忆,三件套:retain 让 AI 随手记一条事实(“这个项目用 Postgres 14,端口 5432”);recall 下次会话搜记忆库拉回相关事实;reflect 让 Hindsight 基于记忆推理合成答案。每次会话结束自动压缩要点加载进项目记忆库,下次新会话第一轮就带着”上次聊过,主路由是 /v2/orders”。记忆按项目隔离,聊 A 学的东西不会串到 B。

生态扩展:Pi/omp 通用,按场景挑

omp 基于 Pi,所以 Pi 的扩展生态照样能用。市面上口碑靠前的扩展按场景分几组,比一股脑装一打要清楚。

流程控制

  • plan-mode(@narumitw/pi-plan-mode):/plan 之后所有写工具禁用,bash 只放行只读命令,管道重定向全拒,让 AI 先交一份 Markdown 计划给你审,再动手。针对的是”满嘴答应开干、写到一半方向才不对、返回工还把锅背了”的老毛病。pi install npm:@narumitw/pi-plan-mode(包在 narumiruna/pi-extensions 仓库,需要 Pi 0.80.6 以上)
  • pi-code(pi.dev/packages/pi-code):把 Claude Code 那套体验整套搬进 Pi——todo 清单、checkpoint、记忆、web、子代理、目标管理都补齐,还有对应命令。若你从 Claude Code 迁过来、想少学一套操作,这包最省事。pi install npm:pi-code
  • pi-subagents(nicobailon/pi-subagents):派只读子代理去审自己的 diff。自查自纠容易客气,换一双眼睛挑刺实在得多。pi install npm:pi-subagents

后台任务

跑长命令(压测、大文件编译、每日抓取)时不想干等它清屏:

  • pi-background-tasks(pi.dev/packages/pi-background-tasks):把 shell 任务变成持久的后台任务跑,同时派只读子代理去盯结果,适合长链路。pi install npm:pi-background-tasks
  • @narumitw/pi-goal(pi.dev/packages/@narumitw/pi-goal):给 Pi 一个单目标让它自主推进到完成,不用一步一步手把手喂。pi install npm:@narumitw/pi-goal
  • pi-agent-plugins(pi.dev/packages/pi-agent-plugins):能从 plugin.json 包自动发现、校验、加载便携插件(skill + MCP server),装一套跑多个项目都认。pi install npm:pi-agent-plugins

浏览器

  • pi-agent-browser(pi.dev/packages/pi-agent-browser):让 Pi 能真正操作浏览器——交互式浏览、截图带内联视觉理解、会话后清理。适合需要它填表单、抓动态页面、看渲染结果的场景。pi install npm:pi-agent-browser

记忆

  • pi-memory(jayzeng/pi-memory):把记忆全部存成 ~/.pi/agent/memory/ 下的 markdown 文件,分三层——长时记忆放事实和决策,每日日志按天追加,scratchpad 放待办。每回合开始按优先级注入(scratchpad、今日日志、MEMORY.md、昨日日志),总预算 16K 字符,超了截断不硬塞。可读可改可恢复,没有黑盒。可选装 qmd 对记忆做语义检索。
  • 同赛道对比:pi-hermes-memory 用 SQLite 做全文索引,@remnic/plugin-pi 要先跑独立守护进程,都更重。文件即真相是这套生态的主流取向。

接入

  • pi-mcp-adapter(nicobailon/pi-mcp-adapter):Pi 官方不内置 MCP,但这个适配器把几十上百个工具压成一个代理工具,约 200 token,需要哪个能力再 search → describe → call 三步。MCP server 懒启动,闲置十分钟自动断开,输出超限截断到临时文件。官方反对的从来不是 MCP 本身,是为没用的工具预付 token——这个思路在其他工具里少见,值得单独看。

效率小件

  • caveman(v2nic/pi-caveman):/caveman 让回答简短,/caveman ultra 极简到一句话上下。回答太冗长时按下就干净。
  • save-last(NonlinearFruit/dotfiles):/save-last 把最后一次回答存成文件,好解释转文档、发给同事都方便。
  • answer(同仓库):Pi 回答末尾常挂 3~6 个问句,/answer 把问题逐条拎出来问你,你一个个答完再汇总发回,不用一口气输入一长串。
  • pi-statusline(@narumitw/pi-statusline):底部状态栏显示模型、分支、上下文水位(如 ctx 38%/200k),水位过半就主动压缩或开新会话,是全列表里最便宜的可观测性教育。
  • pi-file-context(@narumitw/pi-file-context):大文件几千行,圈出精确行范围或 Git 改动块喂给 agent,贴之前还能预览 token 估算。喂得准,答得就准。
  • pi-btw(@narumitw/pi-btw):干到一半想问”这个 API 干嘛的”,/btw 丢进旁路线程,看完就扔,主线不打断、上下文不脏。
  • tmustier 小件:街机小游戏、session-recap、code actions,装几个摸鱼用的快乐件。

可观测性:Token 账单变厚时用的五双眼睛

用得越深越关心”Token 烧在哪、为什么慢”。这五款是近期绕不开的:

插件干的事什么时候用得上
pi-inspect把所有已加载内容摊开,看 System Prompt、Tools、Skills、Commands 构成怀疑任务变慢是某几个全局插件在偷偷占 Context
pi-costProject→Session→Message 粒度拆 Token 与费用想知道钱到底花在哪个 Skill、哪条长会话
pi-stats-dashboard对历史 Session 做模型/provider/工具调用/Cache 命中/错误率统计把几百上千个 Session 当行为语料挖”活情报”
pi-usage-widget实时盯 Context、Cache、Token、Cost,异常状态提醒上下文接近上限或费用飙升时要即时介入
pi-health扫描配置、依赖、扩展状态做健康检查装了大量插件后排查冲突和配置错误

一个提醒:监控本身别变成新负担。装完若答不出”谁撑大了 Context、哪条 Session 最贵”,这些数据就是新的噪音。明确验证目标,监控最好能带来具体的优化决策或省钱动作,不然简化配置。

好外挂的共性:都贴着”内核克制”的脾气

把口碑好的扩展摆一起看,能拧出三条共性,也是装扩展前的筛选标准。

一是走公共扩展点,不碰内核。Pi 的扩展 API 覆盖工具、命令、UI、provider,正规扩展点能做的事不需要动内核,装得再乱升级也不碎。能走公共扩展点就别动内核,能用 skill 就不写扩展。

二是把 token 当钱花。Pi 每次请求的结构固定:system prompt、工具列表、对话历史。工具列表每胖一点,每次缓存命中都要按缓存价重读这一大块;工具列表中途一变,整个会话历史的缓存直接作废。所以生态里口碑好的扩展几乎都在省 token:plan mode 不发明新工具只约束现有工具,pi-memory 做分层预算,mcp-adapter 压 schema。这条对踩过 99% 缓存命中率、把成本压到 1/50 的人来说尤其有体感。

三是内核没做的才补,做好的不重复。七个内置工具已经覆盖 bash、文件、编辑这些通用能力,扩展专补策略层:plan mode 管流程、pi-memory 管记忆、mcp-adapter 管接入。装之前问一句:这是内核天生该做的,还是你的使用习惯需要?前者不用装,后者才值得装。

边界:不是装上就赢

把这套东西当作通用方案之前,先认清几条限制。

第一,极简底座对轻任务契合,长链条、多分支、深度依赖上下文的任务,可能丢掉必要的中间层,反而降成功率。Composio 那组公开对比里,Pi Agent 30 项任务过 20 项拿下第一,omp 过 17 项排第二,都赢在干净。但那是相对短程、可控的高难度任务,不是拿它当所有场景的银弹。

第二,open 的底座要求使用者有一定调优能力。Pi 不是”装上就赢”,是”装上后要调”的工具集——不熟悉它的扩展机制和上下文压缩策略,默认配置可能反而不适合你的任务。扩展也同理,装太多小件,每个注册一个命令,终端交互会变复杂,新用户容易分不清 /plan、/caveman、/answer 各自什么时候用。从最痛的场景开始,哪个问题最烦先装哪个。

第三,不管 omp 还是 Pi 生态,好用的前提是理解”内核克制 + 扩展按需”这套组合本身。单拎任何一个外挂都撑不起效率提升,要什么加什么,每件职责清楚、行为可预期,才是这套东西真正值钱的地方。

选型落点起落一句话:想开箱即用、功能堆满,就 omp;想极简、亲手在 hook 上长出自己要的东西,就 Pi。装扩展前先用 -e 跑一个会话试试,过了热乎劲还觉得”没它不行”的才正式装——工具多不厉害,少而准才是。

安装与链接速查:本文提到的每一款都在这

Pi/omp 生态的官方包目录在 pi.dev/packages,多数扩展直接 pi install npm:<包名>。个别是纯文件式扩展(把 .ts 放进 ~/.pi/agent/extensions/,然后 /reload)。下面把前文提到的全列出来,地址和命令照抄即可。

插件一句话用途安装命令 / 来源
plan-mode锁写权限,先出计划再过你pi install npm:@narumitw/pi-plan-mode · github.com/narumiruna/pi-extensions
pi-codeClaude Code 体验整体搬进 Pipi install npm:pi-code · pi.dev/packages/pi-code
pi-subagents派子代理审 diff、干杂活pi install npm:pi-subagents · github.com/nicobailon/pi-subagents
pi-background-tasks长命令转后台 + 只读子代理盯pi install npm:pi-background-tasks · pi.dev/packages/pi-background-tasks
@narumitw/pi-goal单目标自主推进到完成pi install npm:@narumitw/pi-goal · pi.dev/packages/@narumitw/pi-goal
pi-agent-plugins自动发现/加载便携 skill+MCPpi install npm:pi-agent-plugins · pi.dev/packages/pi-agent-plugins
pi-agent-browser浏览器自动化,截图带视觉理解pi install npm:pi-agent-browser · pi.dev/packages/pi-agent-browser
pi-memory记忆存 markdown,跨会话不忘pi install npm:pi-memory · github.com/jayzeng/pi-memory
pi-mcp-adapter一个代理工具接整个 MCP 生态pi install npm:pi-mcp-adapter · github.com/nicobailon/pi-mcp-adapter
pi-btw旁路提问,不打断主线pi install npm:@narumitw/pi-btw · github.com/narumiruna/pi-extensions
pi-file-context圈精确行喂上下文,不整文件pi install npm:@narumitw/pi-file-context · github.com/narumiruna/pi-extensions
pi-statusline底部状态栏看上下文水位pi install npm:@narumitw/pi-statusline · github.com/narumiruna/pi-extensions
caveman回答要说人话,/caveman ultra 极简pi install git:github.com/v2nic/pi-caveman
whimsicalthinking 文本换随机趣句pi install git:github.com/mitsuhiko/agent-stuff
tmustier 小件街机游戏 + session-recap + code actionspi install git:github.com/tmustier/pi-extensions
save-last把最后一次回答存成文件文件式,放 ~/.pi/agent/extensions/ · github.com/NonlinearFruit/dotfiles
answer把末尾问题逐条拎出来答文件式,同上仓库
pi-inspect摊开所有已加载内容pi install npm:pi-inspect · pi.dev/packages/pi-inspect
pi-costProject→Message 粒度看费用pi install npm:pi-cost · pi.dev/packages/pi-cost
pi-stats-dashboard历史 Session 多维统计pi install npm:pi-stats-dashboard · pi.dev/packages/pi-stats-dashboard
pi-usage-widget实时盯 Context/Cache/Costpi install npm:pi-usage-widget · pi.dev/packages/pi-usage-widget
pi-health配置/依赖/扩展健康检查pi install npm:pi-health · pi.dev/packages/pi-health

几点提醒:

  • 装 repo 型扩展用 -e 先试跑一个会话再决定(如 pi -e npm:pi-memory),过了热乎劲还觉得”没它不行”再正式装。
  • 文件式扩展(save-last、answer)放进 ~/.pi/agent/extensions/ 后要 /reload 才生效。
  • 装前删掉已知用不上的:工具列表每胖一点,每次请求缓存命中都要按缓存价重读一遍;装得多不如装得准。

仓库地址:https://github.com/oh-my-pi/omp(Pi 原版 https://github.com/badlogic/pi-mono)

#AI编程 #Agent #pi #omp #开源工具 #测试开发