环境
- PiSwitch:v0.0.0.17
- Pi:v0.84.4
- 操作系统:Windows 10 19044 x64
- Pi 配置文件:
~/.pi/agent/models.json
问题概述
Pi 支持在 Provider 和 Model 两个层级配置 compat,但 PiSwitch 目前只在模型编辑器中提供 Model 级 compat 设置。
Provider 级 compat 在 PiSwitch 重写 models.json 时目前能够被保留,但无法在 Provider 设置页面中查看或编辑。模型编辑器也不会展示从 Provider 继承后的有效值。
因此,PiSwitch UI 显示的配置与 Pi 实际生效的配置不完全一致,用户无法通过界面判断某个兼容性选项是否已经启用。
复现配置
在 models.json 中添加 Provider 级兼容性配置:
{
"providers": {
"custom-responses-provider": {
"api": "openai-responses",
"baseUrl": "https://example.com/v1",
"compat": {
"supportsStrictMode": true
},
"models": [
{
"id": "example-model",
"name": "example-model",
"reasoning": true,
"input": ["text"]
}
]
}
}
}
复现步骤
- 启动 PiSwitch。
- 打开
custom-responses-provider 的 Provider 设置。
- Provider 页面中没有
compat 或 supportsStrictMode 配置项。
- 打开
example-model 的模型编辑器。
supportsStrictMode 显示为“继承/未设置”,但没有显示继承后的有效值。
- 检查
models.json,可以确认 Provider 级配置仍然存在,并且 Pi 实际会使用该值。
当前行为
- 无法查看或编辑 Provider 级
compat。
- 模型编辑器只显示模型自身显式设置的值。
- 不显示模型从 Provider 继承后的有效值。
- 不显示配置值的来源,例如 Provider、Model 或 Pi 默认值。
- 用户可能误以为配置不存在或尚未生效。
- 隐藏字段在导入、删除并重建 Provider、版本迁移等操作中的保留行为不明确。
期望行为
- 在 Provider 编辑器中增加“高级兼容性 / compat”区域。
- Provider 层支持与模型编辑器相同的兼容性配置项。
- 模型级兼容性选项使用三态设置:
- 选择“继承”时,显示解析后的有效值及来源,例如:
supportsStrictMode:继承
有效值:已启用
来源:Provider
- UI 应正确反映 Pi 的配置优先级:
Model compat > Provider compat > Pi 默认值
- 所有配置读写操作都应无损保留 PiSwitch 当前版本不认识的 Provider 和 Model 字段。
- 建议提供 Provider 级原始 JSON 编辑入口,作为未来新增兼容性字段的兜底。
实际影响
部分兼容 OpenAI Responses API 的代理服务,在 function tool 没有显式携带 strict 字段时,会采用与 OpenAI/Pi 不同的默认行为。
此时需要配置:
"compat": {
"supportsStrictMode": true
}
该配置的含义是告诉 Pi:此端点支持 strict 参数。对于普通工具,Pi 随后会显式发送:
当同一个 Provider 下的所有模型都使用相同端点和兼容行为时,Provider 层是更合理的配置位置。若只能在 Model 层配置,就需要为每个模型重复设置,后续新增模型也容易遗漏。
目前 PiSwitch 虽然能够保留该 Provider 级字段,但由于 UI 完全不可见,用户很难确认配置是否存在、是否生效,以及是否会在后续操作中被保留。
建议验收测试
- 导入包含 Provider 级
compat 的 models.json。
- 在 Provider 编辑器中正确展示相应配置。
- 修改无关 Provider 字段后,仍保留全部
compat 和未知字段。
- 编辑或替换模型后,仍保留 Provider 级
compat。
- 模型编辑器能显示继承后的有效值及来源。
- Model 级显式值能够覆盖 Provider 级值。
- 新增模型后能正确继承 Provider 级配置。
- 读取并重新保存配置后,未知 Provider/Model 字段能够无损往返。
环境
~/.pi/agent/models.json问题概述
Pi 支持在 Provider 和 Model 两个层级配置
compat,但 PiSwitch 目前只在模型编辑器中提供 Model 级compat设置。Provider 级
compat在 PiSwitch 重写models.json时目前能够被保留,但无法在 Provider 设置页面中查看或编辑。模型编辑器也不会展示从 Provider 继承后的有效值。因此,PiSwitch UI 显示的配置与 Pi 实际生效的配置不完全一致,用户无法通过界面判断某个兼容性选项是否已经启用。
复现配置
在
models.json中添加 Provider 级兼容性配置:{ "providers": { "custom-responses-provider": { "api": "openai-responses", "baseUrl": "https://example.com/v1", "compat": { "supportsStrictMode": true }, "models": [ { "id": "example-model", "name": "example-model", "reasoning": true, "input": ["text"] } ] } } }复现步骤
custom-responses-provider的 Provider 设置。compat或supportsStrictMode配置项。example-model的模型编辑器。supportsStrictMode显示为“继承/未设置”,但没有显示继承后的有效值。models.json,可以确认 Provider 级配置仍然存在,并且 Pi 实际会使用该值。当前行为
compat。期望行为
实际影响
部分兼容 OpenAI Responses API 的代理服务,在 function tool 没有显式携带
strict字段时,会采用与 OpenAI/Pi 不同的默认行为。此时需要配置:
该配置的含义是告诉 Pi:此端点支持
strict参数。对于普通工具,Pi 随后会显式发送:当同一个 Provider 下的所有模型都使用相同端点和兼容行为时,Provider 层是更合理的配置位置。若只能在 Model 层配置,就需要为每个模型重复设置,后续新增模型也容易遗漏。
目前 PiSwitch 虽然能够保留该 Provider 级字段,但由于 UI 完全不可见,用户很难确认配置是否存在、是否生效,以及是否会在后续操作中被保留。
建议验收测试
compat的models.json。compat和未知字段。compat。