Oh My Pi v16.0.11 发布 —— Shell 管道写错不乱报错了,一句最简单的痛
不是语法有错,是 Oh My Pi 自己的输出精简器把你的合法管道拆碎了。
这个版本把这种「工具说我写错了,但我写的明明是对的」的憋屈情况,从好几个方向修了一遍。

修得最狠的:Shell 管道报假错
根本原因:Oh My Pi 的输出精简器会把 &&/; 串联的命令拆成一段一段,分别执行来节约 token。
问题出在分段逻辑——它只检查了第一段的合法性。后面那段如果是 while/for/if/subshell 这种结构,会被重新序列化后丢失终止符,发送出残缺的 shell。
修复后,每一段都会重新解析,要求完全匹配原始管道的形状。如果有偏差,整条命令直接走未分段路径,不再硬拆。
关联修复也到了 pi-natives(原生 shell 层),同一个 bug 的双端覆盖。
协作者终于有自己可见的声音了
之前 Advisor 模型虽然在后台干活,但它的轨迹你看不到——没有自己的 transcript,omp stats 统计不到它的 token 消耗,Agent Hub 也看不见它的存在。
这个版本做了两件事:
- Advisor 的每轮对话持久化到
<session>/__advisor.jsonl,omp stats能统计到它 - Agent Hub 里可以只读查看 Advisor transcript
当然它仍然是「非对等参与者」——irc 列表、history://、peer 询盘都看不见它,也不能被复活或 kill。
/compact 的三个子命令
如果你之前觉得 omp 的 /compact 只有一个策略,太不灵活——现在给了你三个选择:
/compact soft:本地摘要,不调远程/compact remote:走远程 provider 的压缩/compact snapcompact:直接把历史归档成位图,不经过 LLM
这三个可以同时带 focus 指令(snapcompact 除外),也可以在 ACP 客户端中以参数形式传递。
Ctrl+T 终于不只是「上面」的
之前 Ctrl+T(切换 thinking 块显隐)只对当前可视区域生效。如果 thinking 块已经滚进 native scrollback,翻上去看还是旧状态。
现在两个触发路径——Ctrl+T 和 /settings 里的开关——都会触发完整重置和重绘,保证每个 thinking 块都正确折叠或展开。
ACP 手机语音不再卡在设置上
移动端 ACP 之前调 speech.models.list 会触发 setup 流程。现在本地 STT/TTS 模型和语音目录直接暴露,不触发 download。
Tab 宽度配置被移除了
这是一个 breaking change:display.tabWidth 设置和 getIndentation/setDefaultTabWidth 等配套工具全部移除,tab 现在使用固定显示宽度。如果你有自定义缩进需求的配置,需要更新。
Snapcompact:不支持的中文符号不乱码了
normalize() 现在会做 NFKD 分解回退。全角字符、上下标、连字、圆圈数字、罗马数字、分数等不可绘制的 Unicode 符号,会折叠为接近的 ASCII 等效字符。
不再是直接输出 ?。
其他修复
- 内联参数预览截断:工具返回的较长值(如 note=)不再硬截断在 24 列,而是根据卡片实际宽度自适应
- MCP 子进程孤儿:之前的修复在 v16.0.10 只覆盖了一部分,进一步加固
- 视图缓存清除:transcript viewer 在底层 session 文件被删除后能正确清除缓存内容
- 全屏 Agent Hub 渲染对齐:transcript 正文不再比标题多一列左边距
升级方式:
curl -fsSL https://omp.sh/install | sh
brew install can1357/tap/omp
bun install -g @oh-my-pi/pi-coding-agent
完整更新日志:GitHub Release
📢 关注我,获取最新开源更新日志和开发者工具动态。
#OhMyPi #AI编程 #终端工具 #版本更新 #AI写代码的小任 #LLM更新报告