pi-openai-responses-patcher
v0.1.0
Published
CLI patcher that rewrites pi's built-in openai-responses transport to use instructions and a stable prompt_cache_key.
Maintainers
Readme
pi-openai-responses-patcher
一个普通 npm CLI 包,用来自动定位本机已安装的 pi,并直接 patch 内建文件:
- 目标文件
@earendil-works/pi-ai/dist/api/openai-responses.js - 将 system/developer prompt 改成走
instructions - 从
input里移除重复的 system/developer prompt - 让
prompt_cache_key策略可配置,默认保持 session 语义 - 提供备份查看和最近备份回退能力
这个包的目标是把本机手工 patch 产品化,而不是新增一个 provider。
用法
npx pi-openai-responses-patcher
npx pi-openai-responses-patcher --list-backups
npx pi-openai-responses-patcher --restore它会做什么
执行时会按下面顺序检查:
- 自动探测本机全局安装的 pi /
@earendil-works/pi-ai - 校验
@earendil-works/pi-ai版本必须>= 0.80.3 - 校验目标文件内容锚点必须匹配当前支持版本
- 通过后先备份目标文件,再写入 patch
- 如果已经 patch 过,则直接退出,不重复改写
如果版本或锚点不匹配,会拒绝 patch,并提示你“发布新支持版本”。
当前支持策略
- 最低支持版本:
0.80.3 - 高于该版本时不会盲目 patch
- 必须同时满足:
- 版本门禁通过
- 文件锚点门禁通过
这意味着后续 pi 升级导致目标实现变化时,需要为新版本发布新的 patcher 支持版本。
patch 行为
这个 patch 只修改 buildParams() 这一段行为,并插入少量辅助函数:
- 读取
input中的 system/developer prompt,写入顶层instructions - 删除
input中与instructions重复的 system/developer prompt - 默认保留 pi 当前更接近内建行为的
session级prompt_cache_key - 可切换到
stable模式,基于provider + model + baseUrl + instructions + tools指纹生成稳定prompt_cache_key - 当
cacheRetention === "none"时,不设置prompt_cache_key
prompt_cache_key 模式
通过环境变量控制:
PI_OPENAI_RESPONSES_PATCHER_CACHE_KEY_MODE=session支持值:
session默认值;保留当前 pi 内建更接近的语义,继续使用sessionIdstable改成稳定指纹,适合你明确想做跨 session 的前缀缓存复用
回退与备份
列出当前可恢复的备份:
pi-openai-responses-patcher --list-backups恢复最近一次备份:
pi-openai-responses-patcher --restore行为说明:
- 每次 patch 前都会生成一个备份文件,格式类似:
.../openai-responses.js.bak.1751440000000--restore会恢复最新的备份文件- 恢复前会先把当前文件再备份一次,避免误回退后无法撤销
本地开发
npm run check:syntax
npm test发布建议
发布后即可直接使用:
npx pi-openai-responses-patcher如果后续 pi 升级导致目标文件锚点变化:
- 更新本包版本
- 调整锚点与 patch 内容
- 重新发布对应支持版本
