# Pi GPT-5.6 Switcher [English](README.md) | [简体中文](README.zh-CN.md) [![CI](https://github.com/yoyooyooo/gpt56-switcher/actions/workflows/ci.yml/badge.svg)](https://github.com/yoyooyooo/gpt56-switcher/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) 一个键盘优先的 [Pi](https://github.com/earendil-works/pi) 扩展,用于在不离开当前 Provider 的前提下切换 GPT-5.6 能力模型和 Thinking level。 ![GPT-5.6 Switcher 预览](docs/assets/preview.png) > 截图展示的是一个 Provider 配置示例。实际显示的能力行和 Thinking level 由当前 Pi 模型注册表动态决定。 ## 为什么需要它 一个 Provider 可能通过 Luna、Terra、Sol 多个能力模型提供 GPT-5.6,而且每个模型支持的 Thinking level 可能不同。Pi 可以分别切换模型和 Thinking,但反复打开两个选择器不利于快速检查和切换组合。 GPT-5.6 Switcher 将有效组合组织为一个内联三行选择器: - 只发现当前 Provider 中的模型; - 缺失的能力模型不会显示; - 每一行只显示该模型真正支持的 Thinking level; - 移动只更新预览,按 Enter 才同时应用模型和 Thinking; - 底部对比当前与目标 Profile,目标中发生变化的字段会显示为黄色;如果当前模型不属于 GPT-5.6 能力模型,则显示为 `Other`,不会伪装成某个能力档位。 ## 环境要求 - `@earendil-works/pi-coding-agent` 0.80.10 或更高版本 - 当前 Provider 至少注册以下一个模型: - `gpt-5.6-luna` - `gpt-5.6-terra` - `gpt-5.6-sol` 本扩展不会注册模型或 Provider,只使用 Pi 模型注册表中已经存在的模型。 ## 安装 从 npm 安装: ```bash pi install npm:pi-gpt56-switcher ``` 也可以直接从 GitHub 安装: ```bash pi install git:github.com/yoyooyooo/gpt56-switcher ``` 重启 Pi,或在已有 TUI 会话中执行 `/reload`。 本地开发: ```bash git clone https://github.com/yoyooyooo/gpt56-switcher.git cd gpt56-switcher bun install pi -e . ``` ## 使用 打开选择器: ```text /g56 ``` 也可以不打开选择器,直接应用指定 Profile: ```text /g56 terra high /g56 sol max ``` 如果当前 Provider 不具备指定模型或 Thinking level,命令不会修改状态,并会提示该 Profile 不可用。 ### 按键 | 按键 | 行为 | |---|---| | 左 / 右 | 在当前能力行支持的 Thinking level 之间移动 | | 上 / 下 | 在已有能力行之间移动,并尽量保持 Thinking;必要时安全收敛到可用档位 | | Home / End | 跳到当前行的第一个或最后一个 Thinking level | | `1` / `2` / `3` | 在存在时直达 Luna / Terra / Sol | | Enter | 先应用目标模型,再应用对应 Thinking level | | Escape | 取消且不做任何修改 | ## 动态发现规则 能力顺序固定为 Luna → Terra → Sol。Thinking 顺序遵循 Pi: ```text off → minimal → low → medium → high → xhigh → max ``` 对于每个匹配模型,扩展遵循 Pi 的模型元数据语义: - `reasoning: false` 时只提供 `off`; - `thinkingLevelMap` 中的 `null` 表示明确不支持该档位; - 只有显式映射时才显示 `xhigh` 和 `max`; - 普通档位缺少映射时沿用 Pi 默认行为。 扩展不会自动切换到其他 Provider。 ## 交互设计 Pi 自定义组件公开的是键盘输入协议,没有公开的鼠标坐标、命中检测或拖拽事件。因此本扩展采用三行键盘交互,不接管终端 mouse tracking,也不启动第二套 renderer。 从用户视角看,选择过程具有事务边界: 1. 移动只更新预览; 2. Escape 退出且不修改状态; 3. Enter 先调用 Pi 的模型切换; 4. 模型切换成功后再应用 Thinking level; 5. 最终提示 Pi 的实际 Thinking level,包括异常收敛结果。 ## 隐私与安全 扩展只读取 Pi 在进程内公开的模型元数据,不读取 Provider 凭据文件、不发送遥测,也不会自行发起模型请求。认证、路由和凭据存储仍由 Pi 与当前 Provider 负责。 安全问题报告方式见 [SECURITY.md](SECURITY.md)。 ## 开发 ```bash bun install bun test bun run typecheck ``` 欢迎贡献,具体见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 [MIT](LICENSE)