跳到主要内容

Oh My Pi v16.1.12 发布 —— 一个配置的 secrets 让 Codex 图片全挂,现在彻底修了

· 阅读需 3 分钟

Oh My Pi v16.1.12 封面

Secrets obfuscation 不再屠杀图片和签名

改动本身只有几行配置项的变化。之前的 obfuscator 是「拿到出站请求 JSON,深递归遍历所有字符串值,遇到包含配置 secret 子串的就替换为 #HASH#」。听起来挺通用——但图片 base64 里偶然包含配置 secret 的片段怎么办?Opaque provider 回放签名、加密推理字段里匹配了「response」怎么办?

Codex 在 oh-my-pi 上读取图片时,obfuscator 在 image_url 的 base64 里找到了 secret 子串,插入了 #HASH# 占位符,base64 解码失败,下一轮请求收到 Invalid 报错。

修复后的 obfuscation 是 opt-in 且 fully typed 的:

只走 user messages、tool-result messages、@file 提及的 developer messages——系统 prompt 和工具 schema 不碰

图片字节和签名/加密推理字段永不改写——不再误伤 base64 和 provider 专用字段

工具调用参数是唯一走 JSON 遍历的字段——其他字段类型不走 deep walk

纯文本 secret 和不足 8 字符的正则匹配被忽略——防止在「response」「key」等短单词上误触发

算下来「不做什么」比「做什么」多了好几倍规则。obfuscation 失败的损失比漏掩一个 secret 的风险更重。

RPC/ACP 启动不再怼掉显式配置

第二个波及面不小的修复:applyDefaultSettingOverrides 在设置加载完成后,会重新把 schema 默认值作为运行时 override 写回去——导致 embedder、project、--config 覆盖层、全局配置中显式设置的参数全部被清零。

受影响的配置项列表相当大:

task.isolation.{mode,merge,commits}

task.eagertask.batchtask.maxConcurrencytask.maxRecursionDepth

task.disabledAgentstask.agentModelOverrides

memory.backendmemories.enabled

advisor.{enabled,subagents,syncBacklog,immuneTurns}

• RPC-only async.{enabled,maxJobs}bash.autoBackground.{enabled,thresholdMs}

修复就是把 isConfigured() 守卫加回去——host 默认只在配置项未被显式设置时才生效。配过的不碰。

Julia 语法高亮

highlightCodesupportsLanguage 现在支持 jl / julia 别名。syntect 默认不内置 Julia 语法定义——oh-my-pi 自己 vendored 了一份 Julia.sublime-syntax 进去。写 Julia 的 agent 用户不用再看到纯黑白代码了。


Bun 用户 bun update -g @oh-my-pi/pi-coding-agent 升级。Homebrew 用户 brew upgrade can1357/tap/omp。curl 安装的重新跑 curl -fsSL https://omp.sh/install | sh。安装了记得 omp --version 确认版本号,npm 包与 GitHub Release 有短暂延迟。

📢 关注我,获取最新开源更新日志和开发者工具动态。

#Oh My Pi #版本更新 #secrets #修复 #AI写代码的小任 #LLM更新报告