Oh My Pi v16.1.0 发布 —— 缓存命中不再靠猜,软需求让 Agent 更聪明

💡 核心更新:缓存未命中标记、工具软需求机制、工具描述裁剪减少 token、macOS 电源设置统一为枚举、TUI 全面统一圆角风格、Snapcompact 焦点式归档布局。
以前:缓存命没命中,全靠猜
用大模型 provider 的时候,缓存命中率直接影响响应速度和费用。但之前你根本看不见:提示词缓存到底命没命中?冷启动多花了多少钱?
更头疼的是误报。v16.1.0 之前,缓存未标记会错误触发在所有 provider 上——包括 Google/Gemini、OpenAI、Fireworks 这些没有显式前缀缓存的平台。它们的 cacheRead: 0 是正常的传播噪声,下一轮就自愈了。但标记器不管,每次都发。
现在:⊘ cache miss 一目了然
v16.1.0 加了缓存未命中标记:一个淡灰色的 ⊘ cache miss · <n> tokens 分割线,出现在请求丢失了 provider 缓存的那一轮对话上方。标记只在你真正亏了的时候出现——只有 Anthropic/Bedrock 这类有显式 cache_control 前缀缓存的 provider 才触发。OpenAI/Gemini 这些隐式缓存的 cacheRead: 0 被正确忽略,不报假警。开关在 display.cacheMissMarker 设置(默认开)。
以前:工具说必须用就必须用
Oh My Pi 的 tool_choice 机制,之前只有「硬推」这个强度——要么强推,要么完全不推。如果模型本轮不调指定工具,那就下一轮再强推。代价是 provider 消息缓存每次都被破坏,反复冷启动。
现在:软需求,给模型一次机会
SoftToolRequirement 是 v16.1.0 加的新机制:host 可以要求一个工具,但分两步走——第一轮只注入一次提醒,tool_choice 保持 auto。如果模型没调,下一轮才强推一次,且跳过任何绕路的工具批次。这样既给了模型灵活性,又不至于次次刷新缓存。
以前:工具描述占 token,不想带也不行
每个工具都带一大段描述文本,对大部分场景是好的,但在 token 预算紧的时候(比如长上下文压缩场景),这些描述就是纯浪费。
现在:pruneToolDescriptions 一键裁剪
新增 pruneToolDescriptions 选项,从 provider 绑定的工具规约中剥离描述文本。同时改了 display.cacheMissMarker 默认关闭缓存未标记。和 inlineToolDescriptors 默认开启描述内联结合,控制权完全交给你。
以前:macOS 电源设置是一个布尔矩阵
四个 bool 设置——power.preventIdleSleep、power.preventSystemSleep、power.declareUserActive、power.preventDisplaySleep——每个单独开关,层级关系不清晰,组合起来容易遗忘。
现在:sleepPrevention 枚举,层级一目了然
这四个设置合并为一个 sleepPrevention 枚举:off → idle → display → system。每层包含所有下层标志。现有的配置自动迁移,无需手动处理。
TUI 视觉统一:不再混搭圆角和直角
之前 Oh My Pi 的 TUI 风格像是两个设计师干了一半合并的——工具结果框用圆角,覆盖层用圆角,但 bash 框和 debug 帧用直角。v16.1.0 统一了:
• 边框圆角化:工具结果框、覆盖层、代码围栏、debug 帧、交互式 bash 框全部使用 ╭╮╰╯ 圆角。之前 round 和 sharp 混着来,现在一致了。Markdown 表格保留锐角框,只影响表格。
• 技能调用卡片化:技能调用显示为圆角卡片,带图标标记头部、Home-缩写路径、动态行数统计。之前是 [skill] 标签 + 原始 JSON dump 结构,现在清爽多了。
• 自定义消息统一渲染:扩展消息和 hook-role 消息统一用图标头部 + 圆角卡片。📦 扩展消息、🪝 hook-role 消息,各自有图标区分。
• 分支摘要改为横幅:分支摘要原来是一个 [branch] 盒子,现在改用 /compact 同款分割线横幅——⑂ branch · ctrl+o,摘要展开可见。
Snapcompact:从「压缩」到「有重点的压缩」
Snapcompact 之前的工作方式是相对简单的全量压缩。v16.1.0 把它升级成了焦点式归档布局:
• HQ 边缘、LQ 中间:上下文窗口的边缘(最新和历史最久)保留高清晰度,中间区域密集低质量。用同样的 token 预算,更多关键信息能保留下来。
• 文本先导排序:纯文本在最旧边缘、图像在中间、纯文本在最新边缘——保持时间顺序,provider 提示不再乱序。
• 复述摘要改为结构化阅读指南:复述提示从「请压缩」改成「按轮次标题、网格/双栏布局、墨迹笔记」的结构化指南。文件操作以内联的 FILES 段呈现,不再用 <files> 标签拼贴。
• 最大帧数提升到 80:MAX_FRAMES_DEFAULT 从之前的值提升到 80。OpenRouter 使用标准 90 图像预算。
• 帧 token 估算上调到 5024:修复了之前上下文预算少算的问题。
修复小记
• 协调器选项隐藏修复:advisor 相关设置之前即使在 advisor.enabled 关闭时也保持可见,现在正确跟随开关隐藏了(#3027)
• LSP 动态能力注册 hang 修复:动态注册 capabilities 的 LSP 服务器(包括 Expert)在 client/registerCapability 被拒绝后,语义请求不再 hang 死(#3029)
• /dump 工具清单重复:启用 inlineToolDescriptors 后 /dump 输出会重复两遍工具清单,修了
• Pi-Natives Shell 分段:关联 v16.1.1 的 shell 分段修复落地到 pi-natives 后端
升级方式:
#macOS / Linux
curl -fsSL https://omp.sh/install | sh
#Homebrew
brew install can1357/tap/omp
#Bun (recommended)
bun install -g @oh-my-pi/pi-coding-agent
#Windows (PowerShell)
powershell -c "irm https://omp.sh/install.ps1 | iex"
完整更新日志:GitHub Release v16.1.0
📢 关注我,获取最新开源更新日志和开发者工具动态。
#OhMyPi #AI编程 #终端工具 #版本更新 #AI写代码的小任 #LLM更新报告