Files
PolyGateway/research-wiki/designs/reasoning-effort.md
T
iomgaa e01420178f docs: register the design and plan in the wiki, with what got rejected
The entity pages carry the rejected alternatives and why, so the next
reader does not have to reconstruct the argument: minimal patch cannot
fill a tier that does not exist, cherry's wire DSL buys four endpoint
protocols we do not have, and default_effort lost its only consumer the
moment enable_thinking=True became Effort.AUTO.
2026-09-05 00:12:55 -04:00

3.2 KiB

type, node_id, title, date
type node_id title date
design design:reasoning-effort 推理档位一等化设计(issue #20 及其一般形式) 2026-09-05

推理档位一等化设计(issue #20 及其一般形式)

正文: 2026-09-04-reasoning-effort-design.md。状态: 2026-09-04 人类已批准

  • 选定方案: 方案 B「能力表档位化 + 源级/请求级双入口」。Effort 八档封闭枚举(含 auto)入 types.py;ThinkingCapabilitycan_disable: bool 改为 supported_efforts: tuple[Effort, ...](「能不能关」= none 在不在列表里);ProviderProfile 的两个固定片段改为 ThinkingWire(off / on_base / effort_key);生效档位 = 请求级 > 源级 > enable_thinking 语法糖。
  • 触发与真实缺口: issue #20 字面要一条 zhipu profile,但补它不能解决它自己描述的失败——GLM-5.3 官方强制推理(智谱文档、cherry、OpenRouter 三源一致),none 是我们发出去的未定义值;而 medium(现 minimax profile 硬编码的档)在 GLM/kimi/deepseek 上根本不存在。缺口是类型表达不了现实,不是表里少一行。
  • 人类三项拍板(2026-09-04): 作用域「源级默认 + 请求级覆盖」;档位打空时「默认报错 + 可显式开 nearest 映射」;不可关闭时「报错并给出该模型最低档作为可执行替代」。复核 Codex 异议后追加确认: effort_fallback 随本期实现,不因当前无消费者而推迟。
  • 被否决备选及理由: 方案 A 最小补丁(只补 zhipu profile、维持 bool)——thinking_on 填什么档都是错的,can_disable 只能在「让下游跑不起来」与「登记一个官方否认的能力」间二选一,治标;方案 C 照抄 cherry 完整 wire DSL(closed operations、effortMapbudgetWire、endpoint-keyed contract)——它需要那层是因为要支持四种端点协议,而本库只有一个 OpenAI 兼容 transport,跨协议转换由 new-api 服务端完成,该复杂度当前无消费者(P1 YAGNI);default_effort 字段——自审把 enable_thinking=True 的语法糖改成 Effort.AUTO 后失去唯一消费方,厂商默认档降为 evidence 文本;档位与 reasoning_tokens 的运行期对账——无可判定的函数关系(实测同档 rt 在 8~56 间跳),报警必成噪声;代下游裁剪采样参数(DeepSeek 思考模式不支持 temperature)——那是「默认值掩盖错误」,记入 evidence 而不写进逻辑。
  • 审查留痕: Claude 自审揪出两处实质缺陷(词汇缺 auto,导致 9 个纯开关型模型无档可填、等于把要修的 bug 重新实现一遍;五关顺序错置,使「关不掉」的特殊文案被通用分支吞掉)。Codex 独立审推翻两条错误断言: ① 源级 extra_body/enable_thinking 早已build_model_fingerprint 进缓存 key(ARCH §7.5 有明文),不存在先前稿本断言的「现存毒化缺口」;② 「三项目无调用点」是对不存在的目录做 grep 得到的空结果,reference/ 下当前并无三项目,迁移安全性只能是推断。另采纳其三条: 删 default_effort、补能力表落库规则、列出库内真实会断的调用点(tests/unit/test_thinking.py:128 的位置参数构造)。