Repository navigation
[社区方案] 为 DSH 评测保留思考 token 细分:最小源码改动与复现 #11775
zhangdw156
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
独立英文版
DSH 已经把思考 token 计入输出 token,这符合官方的用量定义。但做评测、比较推理等级或分析失败案例时,我们还想知道:输出里究竟有多少用于思考?
我们在接入评测时有这个需求:思考内容已经保存,但
llm-pi-ai返回的用量没有保留 pi-ai 提供的细分计数。这份方案沿用官方的总量口径,额外把已有的usage.reasoning保留为 DSH 的reasoningTokens,供需要它的用户自行采用。完整改动与测试 · 补丁下载
社区已有相关需求和讨论:#3825、#7110、#10840、#11352。这里补充可直接使用的实现与验证方式。
改动有多小?
在
packages/llm/llm-pi-ai/src/stream.ts的mapUsage()返回对象中,增加一行:保留正数,也保留明确的
0;pi-ai 未提供时省略字段。成功完成与错误终止事件都会经过这个映射。下面是本地模拟响应经过真实 Loader、适配器、pi-ai 解析器、DSH LLM 流和 BlockAssembler 后的结果:
inputTokensoutputTokensreasoningTokenstotalTokens思考计数是输出计数的子集,汇总时不能重复相加。 这个改动提供细分信息,不改变消耗或总量。
在自己的 DSH 源码上使用
在已经安装依赖、能够正常构建的 DSH 源码仓库根目录执行:
这里通过
--include只应用stream.ts的改动,其中运行逻辑增加一行,旁边的说明同步更新;提交中的测试和包文档不会被带入。仍然使用自己的官方源码仓库更新和构建。随后从这份源码用
pnpm dsh加原有参数重新启动,例如pnpm dsh web。直接加载 DSH 的评测程序也应指向这份源码或构建产物。全局 npm 安装和桌面安装不会因此自动更新。升级与兼容性
补丁由 Git 按代码上下文定位,不绑定固定行号。它比维护整份分支的差异更小,但不能保证任意未来版本都无需适配:源码路径、用量字段或适配器接口改变时,仍需重新验证。检查不通过时不要强行应用。
截至 2026-11-01,已确认补丁可应用且只修改目标源码文件:
master:ce7073d51254c26cd63b22a60835b8f948deb447。dsh-v0.2.2-alpha.2、dsh-v0.2.1-rc.5、dsh-v0.2.1-rc.2、dsh-v0.2.1-alpha.3、dsh-v0.2.0-rc.2。这些标签锁定的 pi-ai
1.3.0、1.1.0、0.87.1均声明了可选的Usage.reasoning。发布标签这里只做了源码补丁与字段检查,不代表完成各版本的构建和运行测试。 下述完整适配器验证对应当前master基线。目前检查到的公开
llm/stream扩展点位于适配器转换之后,无法恢复已经省略的数值;llm-pi-ai/request-headers也不暴露响应。若未来提供转换前的原始用量扩展点,就有机会改为独立插件,进一步减少对内部源码的依赖。欢迎讨论这样的可选扩展方式。如何复现验证
包含回归测试的完整示例分支固定在
f23717593d228e7143c7fb7e9ec68fbe6133cfdc。它用于复现测试;上面的最小应用方式不复制这些测试文件。在独立目录运行,无需 API key
需要 Node.js ≥ 24.9、pnpm 11.28.5,详见官方开发环境要求。
预期 8 passed。这组用例在默认实现上有 6 个失败;正数、零值、缺失值和两类终止事件均有覆盖。Loader 测试只以本地 HTTP 服务替代供应商,DSH 和 pi-ai 执行真实代码。
完整适配器包本地测试为 452 passed;产物构建、最终 Host/Client 类型检查及文档检查通过,lint 退出码为 0。环境为 macOS arm64、Node 26.13.0、pnpm 11.28.5、pi-ai 1.3.0。没有进行真实模型推理或 Linux/Windows 验证。
还需要注意什么?
reasoning: 0,所以0不能一概解释为模型没有思考。如果你也有这类统计需求,欢迎反馈所用的 DSH commit、API 协议,以及计数出现或消失的层级。提供脱敏后的 usage 片段即可,不需要密钥或完整对话。
All reactions