docs/pi-thinking-level-map-requirements-zh.md
状态:已实现并完成验收
原则:预设完整可靠,自定义配置不猜测;运行时不依赖外部模型目录。
模型能力分为两条互不混用的路径:
当前版本不建设面向自定义供应商的运行时模型数据库,也不从 Pi、models.dev、oh-my-pi 或其他服务下载数据。外部资料只用于开发时人工核对预设。
这项功能不修改数据库 Schema,不参与显式供应商同步,也不管理 Pi 的默认供应商、默认模型、auth.json、路由、故障转移或插件。
src/config/piModelCatalog.ts 只用于复用 Pi 供应商预设中的模型知识,不作为自定义模型的全局识别器。
每个预设模型必须离线包含完整的 Pi 原生字段:
{
id: string;
name: string;
reasoning: boolean;
input: Array<"text" | "image">;
contextWindow: number;
maxTokens: number;
}
规则如下:
272000。thinkingLevelMapPi 原生档位为:
type PiThinkingLevel =
| "off"
| "minimal"
| "low"
| "medium"
| "high"
| "xhigh"
| "max";
type PiThinkingLevelMap = Partial<Record<PiThinkingLevel, string | null>>;
必须保留以下语义:
null 表示该档位明确不可用。{} 表示整组明确使用 Pi 默认行为。reasoning: true 不代表所有档位都可用。所有支持思考的预设模型都必须显式带有 thinkingLevelMap:
{},明确交给 Pi 原生行为。compat,不能只让界面显示档位。映射只服务预设构建。自定义供应商即使输入相同模型 ID,也不会自动套用预设映射。
用户手动添加模型或从上游模型列表选择模型时:
reasoning、input、contextWindow、maxTokens 和 thinkingLevelMap 不从本地目录或网络自动填写。thinkingLevelMap 时由 Pi 使用原生默认档位;用户仍可在表单或配置 JSON 中写入字符串、null、稀疏映射或 {}。界面不显示“自动值”“已覆盖自动值”或“恢复自动值”,因为自定义模型不存在后台推断值。
thinkingLevelMap 原样回显。null 和 {} 不得改变语义。自动化测试至少覆盖:
thinkingLevelMap。272000 上下文。真实 Pi 验收使用隔离配置目录,并确认:
null、缺少键和 {} 的档位处理符合原生语义。auth.json、默认供应商或默认模型。面向自定义供应商的模型数据库留待后续独立设计,不在本版本中提前保留运行时索引、网络回退或来源状态。