oh-my-pi v15.10.4 发布 —— 二进制终于有了签名,Homebrew 也找上门了
v15.10.4 把这个问题彻底解决了——二进制签了名、走了公证,Homebrew 也正式上车了。

以前:每次安装都要过三道关
没签名的 macOS 二进制面对的是这样的流程:下载 → 系统提示「无法验证开发者」→ 去设置里点「仍要打开」→ 输入密码 → 终于能用。不是不能用,但这个流程在每台新电脑、每次重装、每次给同事推荐时都会出现一次。
如果你用过 curl -fsSL https://omp.sh/install | sh,你可能已经习惯了这一步。但对比一下系统自带的工具、VS Code、甚至是 brew 装的软件——它们从来不弹这个框。因为它们的开发者付了 99 美元的年费走了 Apple Developer Program,给二进制打了签名、走了公证流程。不是 omp 不愿意,是之前这套自动化的 CI 还没搭好。
现在:签名 + 公证 + Homebrew,CI 一条龙
v15.10.4 的改动藏在构建流程的最底层。macOS release 二进制现在用 Developer ID Application identity 签名,启用了 hardened runtime + secure timestamp + JIT/library-validation entitlements,并且在 CI 中自动走 Apple notarization 流程。整套 pipeline 封装在 CI 配置里:签名密钥(APPLE_* 环境变量)配好后自动触发,配不上就降级为 ad-hoc 签名,不影响开发。
有了签名和公证,Homebrew 的安装路径就顺理成章了。brew install can1357/tap/omp 现在可以直接用——CI 中新增的 release_brew job 在每次发布时自动更新 formula(版本号 + 每个 bin 文件的 SHA256)。签名后的二进制走 Homebrew 安装,全程不弹 Gatekeeper 对话框。
有意思的是,签名 + 公证 + Homebrew 这三件事是互相依赖的:没有签名就不能走公证,没有公证 Homebrew 的 CI 验证不会通过,三件缺一不可。之前不做,可能是因为觉得「反正 curl 安装也能用」。但想做正规 macOS 分发,这三关绕不过去。(#776)
Anthropic OAuth 伪装也升级了
这个版本对 Anthropic 接口的适配做了两件事。
第一,指纹同步到了 Claude Code 2.1.165。 claudeCodeVersion、claudeCodeSystemInstruction(改成了"built on Anthropic's Claude Agent SDK")、cc_entrypoint(从 cli 改为 local-agent)——这些 OAuth 会话里的身份标识全都更新了。翻译成人话:omp 冒充 Claude Code 的伪装更逼真了,被 Anthropic OAuth 拒绝的概率更低。
第二,max_tokens 的 clamp 逻辑。 OAuth 请求的 max_tokens 现在取 Math.min(CLAUDE_CODE_MAX_OUTPUT_TOKENS, options.maxTokens || model.maxTokens),上限 64k。之前发请求时会带上 model 的全量 ceiling(比如 Opus 4.8 的 128k),但 Claude Code 自己从来不这么发。现在对齐了,OAuth 的请求特征更接近官方客户端。
还有一个细节:非内置工具的名称前缀从 proxy_ 改为 _。比如 bash 之前发给 Anthropic 是 proxy_bash,现在变成 _bash。粗看只是换个字符,但 Anthropic 可能对 proxy_ 前缀有 server 端的行为判断——改完后匿名性更进一步。
🛠️ 其余修复
ConPTY 会话恢复截断。 Windows 上用 Terminal 的用户可能遇到过:恢复一个大会话后,终端底部有几行内容被截断看不到,按下 Alt+Tab 强制重绘后才正常。根本原因是 ConPTY 在大量并发写入时,viewport 跟不上游标的移动位置。修复方案挺彻底的:大图渲染后设置 150ms 的 ConPTY 静默窗口,在这期间合并所有触发的 requestRender 调用;同时把每次 WriteFile 的块上限从 8 KiB 翻倍到 16 KiB,并且改用 UTF-8 字节计数而非 JS 码位计数——CJK 密集的会话不会膨胀到之前的 ~48 KiB 触发 viewport bug。(#2095)
JS eval worker 优雅关闭。 在 Bun 1.3.14 上热加载 canvas 等原生模块时,worker 被强行终止会触发 N-API teardown 崩溃。现在先发 close 信号让 worker 自己清理,再强制终止。(#2079)
completion() 三个小修复。 当未传 system 参数时始终发一个非空默认 system prompt(某些 provider 拒绝空指令);结构化输出模式下,当模型跳过了 respond 工具的强制调用时,从纯文本输出中解析回 JSON;慢 tier 推理请求只对支持推理能力的模型启用 effort 设置,并且限制到支持的级别。
升级
# 新安装
curl -fsSL https://omp.sh/install | sh
# Homebrew
brew install can1357/tap/omp
brew upgrade can1357/tap/omp
# Bun
bun install -g @oh-my-pi/pi-coding-agent
bun update -g @oh-my-pi/pi-coding-agent
完整更新日志:GitHub Release
📢 关注我,获取最新开源更新日志和开发者工具动态。
#oh-my-pi #macOS #Homebrew #签名公证 #AI编程工具