Skip to content

feat(catalog): 站内模型能力表,修复 Pi 思考等级静默失效与上下文窗口缺省 - #8

Merged
BubblePtr merged 1 commit into
mainfrom
feat/model-capability-catalog
Aug 3, 2026
Merged

feat(catalog): 站内模型能力表,修复 Pi 思考等级静默失效与上下文窗口缺省#8
BubblePtr merged 1 commit into
mainfrom
feat/model-capability-catalog

Conversation

@BubblePtr

Copy link
Copy Markdown
Collaborator

背景

Fixes #7 —— init 写给 Pi 的 models.json 只有裸 {id},Pi 将全部模型视为非推理模型,--model xxx:high/会话内切档静默无效;同时各 Harness 拿不到上下文窗口,普遍回落到 ~128K 默认值。

方案

新增 src/model-catalog.ts:覆盖网关当前在售全部 35 个模型(以生产 /v1/models 实际清单为准),每条含 reasoning / contextWindow / maxTokens,推理模型另带 Pi 语义的 compatthinkingFormat / supportsReasoningEffort 等)与 thinkingLevelMap

数据基准与网关修正:

  • 数值与格式以 Pi 官方目录(pi.dev per-provider catalog)各家一方条目为基准;
  • Claude 通道:new-api 只把 reasoning_effort low/medium/high 映射为 thinking budget(1280/2048/4096),其余档位直接忽略 → 表内 xhigh/max 收敛映射到 high,minimal 置 null;
  • Gemini 通道reasoning_effort minimal/low/medium/high → thinkingBudget 百分比钳制 → 同理收敛;
  • OpenAI/DeepSeek/Kimi/GLM/Qwen:请求体透传,照抄上游原生格式(deepseek/openai/zai/qwen);qwen3.8-max 条目与 issue Pi: generated models.json lacks reasoning metadata, thinking level silently broken for all models #7 中本地验证过的修复完全一致。

适配器接入:

  • Pi:输出完整元数据;
  • OpenCode:补 limit.context/output + reasoning(models.dev schema);
  • OpenClaw:补 contextWindow/maxTokens/reasoning(types.models.ts 已支持的字段,不写 Pi 专有字段);
  • 网关未来新增而表内没有的 id 回退最小条目,不阻塞选择(catalog 覆盖测试会在补录时提醒)。

待议(不阻塞本 PR)

  • GLM 条目未带 Pi 一方数据里的 zaiToolStream: true(该开关影响 Pi 对 z.ai 流式 tool call 的解析;经网关转发后行为未实测,如 GLM 工具调用异常再补);
  • Hermes 机器脚本导出仍是纯 id 列表,schema 不支持元数据,未动。

验证

  • bun test:134 pass / 0 fail(新增 catalog 覆盖与不变量测试 + 三个适配器的元数据测试,TDD 先红后绿);
  • 冒烟:用生产 35 模型 id 列表生成 Pi provider 片段逐条核对,无裸条目;
  • bun run build 通过;tsc --noEmit 的 bun-types 报错在 main 上同样存在,与本 PR 无关。

Pi 生成的 models.json 此前只有裸 id,Pi 将所有模型视为非推理模型,
思考等级静默失效(issue #7);各 Harness 的上下文窗口也回落到 ~128K 默认值。

- 新增 src/model-catalog.ts:按网关模型 id 收录 reasoning/contextWindow/
  maxTokens 与 Pi 语义的 compat/thinkingLevelMap,数据以 Pi 官方目录为基准,
  按网关实际转发行为修正(Claude/Gemini 通道仅认 reasoning_effort
  low/medium/high,高档位收敛映射到 high)
- Pi 适配器输出完整元数据;OpenCode 补 limit.context/output 与 reasoning;
  OpenClaw 补 contextWindow/maxTokens/reasoning
- 未知模型 id 保持最小条目回退,不阻塞选择

Fixes #7
@BubblePtr
BubblePtr merged commit 5a8ff14 into main Aug 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pi: generated models.json lacks reasoning metadata, thinking level silently broken for all models

1 participant