Skip to content

Releases

v0.3.0 — host 半补全:responses/anthropic/自研通道的上游模型声明

Choose a tag to compare

@QuanhuZeYu QuanhuZeYu released this 22 Sep 16:46

每个助手 step 下方显示「上游实际返回的模型名」,并在适配器没有记录时用 host 半旁路补全。

安装

dsh plugin --profile web add github:QuanhuZeYu/dsh-upstream-model-audit

装好后重启一次 DSH(host 半要在 node 进程里装观察点),之后刷新页面即可。

这个版本做了什么

  • host 半补全:pi-ai 只在 chat completions 且"响应名 ≠ 请求名"时才写 responseModel,responses / azure / codex 分支从不写,Anthropic 只在换名时写,自研通道只留请求模型 —— 现在由 fetch 旁路观察 + llm/stream 中间件补写,实测 11000 次 responses 调用从 0 条可见变为可见;
  • 四类事实:上游声明的模型名、服务档位(service_tier / usage.speed)、请求体里实际发出的模型名、响应体形状;
  • 上游自相矛盾时照实留档:一次响应内出现过的不同声明都会记下(上游先后来过 A、B),不挑一个"正确"的;
  • 兜底:content-type 不可信时按内容嗅探形状;响应体没声明时读响应头;只采纳 2xx 响应的声明;跳过计数/目录/鉴权端点;
  • 展示仍是纯客户端:补进去的值由 DSH 自己持久化,浏览器半读 durable 事件,没有新事件类型、没有投影、没有 RPC、不进模型上下文;
  • 38 条规格测试 + 两条真实 pi-ai 通道(openai-responses / anthropic-messages)的端到端验证。

已知边界

  • 需要重启一次 DSH;
  • 没有 replayState 的调用(中断或未正常结束,实测 40 次)没有可写载体,插件不伪造;
  • 失败尝试(assistant/attempt)不含模型名,只记成功那次(与 sub2api 一致);
  • 上游确实没声明模型名时不显示(不猜);
  • 走 globalThis.fetch 的 provider 才能被观察。

完整说明见 README。