oh-my-pi v16.0.1 发布 —— Hook 还是 Tool?开发者不用再选了
v16.0.1 虽然叫「patch」,但 changelog 比很多 minor release 还厚:有 Breaking Changes,有大量新功能,有几十项修复。从插件命名方案到 IRC 协作,从快捷键配置到图片粘贴,每个改动都在回答同一个问题:日常用 AI 编程代理的时候,到底哪些细节让你每次都顿一下?

核心痛点:以前多痛苦
用过 oh-my-pi(简称 omp / Pi)的人都知道它的插件体系有个尴尬的设计问题。
你想要给 AI 加一个工具能力——比如让它能查数据库。你写了个模块,然后开始困惑:这是放 hooks/ 还是 tools/?注册用 --hook 还是 --tool?配置文件写 hooks: [] 还是 customTools: []?
区别在哪里?从概念上说,hook 是「事件发生时触发副作用」,tool 是「暴露给 AI 调用的能力」。但在实际使用中,边界极其模糊:一个查数据库的模块,既可以是 AI 主动调用的 tool,也可以是某个事件后的 hook。用户不该思考这个架构分类。
然后还有 commands/ 目录——slash command 的 prompt 脚本(自定义斜杠命令的提示词文件)放这里。三个目录、两套 CLI flag、两套配置数组。每次写一个新模块,你都得回忆一遍这套命名规则。这个摩擦虽然小,但每天都在发生。
新功能怎么解决
v16.0.1 的做法干脆利落:全合并到 extensions 底下。
hooks和customTools两个配置数组合并成一个extensions数组--hook和--tool两个 CLI flag 合并成--extension/-ehooks/和tools/目录合并到extensions/,commands/改成prompts/- 对应的文档也从
hooks.md+custom-tools.md合并成一本extensions.md
从开发者角度看,这不仅仅是改名。extensions 这个命名传递了一个清晰的信号:你不用操心一个模块是「钩子」还是「工具」还是「命令」,它就是一个扩展,你写好功能,注册进去,omp 自己知道什么时候该用、怎么用。
Breaking change 的同时也带了顺手清理:TUI(终端用户界面)里的键盘检测函数,之前有 isEnter()、isEscape()、isCtrlC() 等一系列独立方法,现在全部合并成一个 matchesKey(data, keyId)。调用方从「记得哪个函数名对应哪个键」变成「统一传一个 keyId 字符串」。这是同类问题、同类解法。
从一个角度看,v16.0.0 是给 omp 装上了审计大脑(Passive Advisor),v16.0.1 则给之前所有「不太对」的命名和接口做了外科手术——不改动核心能力,但让日常操作少了很多「顿一下」。
连带改善
插件命名的统一是这次最大的一刀,但围绕「减少操作摩擦」还有一堆补强:
可配置按键绑定。~/.pi/agent/keybindings.json 现在用户可以自定义所有快捷键。以前你觉得 Ctrl+Enter 太远想换成别的,得去翻源码改——现在直接写配置。
Alt+Enter 排队后续提问。模型还在流式输出的时候,你就可以按 Alt+Enter 输入下一个问题,排进队列,等当前回复结束自动发送。这个功能看似小,但用过流式输出的都知道——模型在打字的时候你只能干等,想到的问题还得记在脑子里。现在你想到什么就打什么,它自己排队。
剪贴板图片粘贴(Ctrl+V)。以前粘贴图片会塞一个占位符,然后你得手动处理。现在粘贴直接生成文件路径,自动缩放图片尺寸。配合 Kitty 终端的 JPEG/GIF/WebP 显示修复,贴图体验终于没那层「夹生感」了。
slash command 和 hook command 现在在流式输出期间也能工作。之前 / 打头的命令会在流式输出时被吞掉,你得等模型说完再用。现在一边输出一边响应指令。
/quit 和 /exit 两个 slash command 也补上了——之前退出会话只能关终端或者按 Ctrl+C。
这些改动单独看都不大,但拼在一起就是一个信号:团队在补齐日常体验的最后一公里。v16.0.0 加的是大的架构能力,v16.0.1 让这些能力用起来不硌手。
其他更新精选
GitHub Copilot 用户全局指令发现 — omp 现在能自动读取 Copilot 的 ~/.github/copilot-instructions.md,把全局指令纳入上下文。如果你同时用 Copilot 和 omp,不再需要手动同步两份规则。
Web 搜索 provider 排除 — web_search.excludedProviders 允许你指定哪些搜索供应商不用。支持多个 provider 的配置终于有了排除能力,不用为了规避某个引擎把整个搜索关掉。
IRC 工作感知协作 — 这是这次最有趣的新功能之一。omp 在 IRC 频道里不但能收发消息,还能维护一个「工作感知成员列表」——知道谁(其他 agent 或人类)在做什么任务,会主动建议协调。多 agent 协作场景下,这是从「各自为战」到「知道队友在干什么」的质变。
/review 支持显式 GitHub PR URL — 之前 /review 只接受本地尚未推送的分支,或者和当前分支关联的 PR。现在直接贴一个 https://github.com/xxx/yyy/pull/123 也能审。
plan.defaultOnStartup — 启动时自动进入 plan 模式(计划驱动模式)。适合那些「从来不想即兴起手」的用户:每次启动先规划,再干活。
Umans AI Coding Plan provider + Vertex AI(google-vertex) — 增加两个 provider。Umans AI 是新的规划模型 provider,Vertex AI 补上了 Google Cloud 这一端的企业用户场景。
子智能体 role 字段 — 创建 task subagent(任务子智能体)时现在可以指定 role,让子智能体的行为更贴合分工,不再是从主 agent 复制人格。
$ARGUMENTS 语法 — 自定义 slash command 里可以用 $ARGUMENTS 引用用户输入的全部剩余参数。之前只能通过命令行参数拼接来做,现在模板直接展开。
双 Escape 自定义 — 之前双击 Escape 键的行为是写死的,现在可以自定义。有用户的肌肉记忆是双击 Ctrl 或者双击其他键,现在能改了。
models.json 内置 provider override — 可以在 models.json 里面直接覆写 provider 的相关配置,不用去动全局 provider 定义。
修复方面值得提的:
- Advisor 自动恢复不再忽略用户的中断——之前你手动中断后它还会自动拉回来,现在尊重你的意志
/advisor on|off变成 session 局部生效——不干扰其他会话web_search在/move之后不再使用旧的 provider 排除配置- 隔离子智能体的文件操作不再解析到父仓库路径——之前子 agent 以为自己在母仓库里
- 大容量 write call 在 provider 超时后自动重试
issue://和pr://读取不再返回过期内容- 重复版本边界警告消除
- 版本检查 URL 拼写错误修正
升级
# macOS/Linux
curl -fsSL https://omp.sh/install | sh
# Homebrew
brew install can1357/tap/omp
# Bun(推荐)
bun install -g @oh-my-pi/pi-coding-agent
# Windows
irm https://omp.sh/install.ps1 | iex
# Pinned via mise
mise use -g github:can1357/oh-my-pi
完整更新日志:GitHub Release
📢 关注我,获取最新开源更新日志和开发者工具动态。
#oh-my-pi #AI编程 #开源 #AI代理 #开发工具