dsh-simple-tps:在 DSH 网页聊天动作行显示每轮 TTFT 与 TPS

前言

在 DSH 里跑模型对话时,你往往更关心「这一轮等了多久才出字」和「解码有多快」,而不是只看总 token 用量。自带界面会展示用量胶囊,但不会在每轮回答的动作行里直接给出首 token 延迟(TTFT)与输出速度(tok/s)的读数。

下面介绍的 dsh-simple-tps 是社区维护者 flyxiu 发布的客户端类 DSH 插件:在网页版每轮助手回答下方的动作行中,于分支按钮之后、自带用量胶囊之前,显示该轮的首字延迟与输出速度;点击可展开明细弹窗。插件当前版本为 0.1.3,许可为 MIT。

这是什么

dsh-simple-tps 的定位是:DSH web GUI 插件,在每轮聊天的 action row 提供 per-turn TTFT / TPS 读数。

实现上分为宿主与前端两部分:宿主持有会话投影,在完整事件日志上折叠出每轮指标;前端负责读取与呈现。读数通过 conversation.chat.assistant-actions 列表插槽注册,视觉位置用 CSS order 调整到分支按钮与用量胶囊之间。

  • 目录页:https://www.skillhub.cn/plugins/flyxiu/dsh-simple-tps
  • 源码:https://github.com/flyxiu/dsh-simple-tps

核心功能

每轮读数与明细

每轮回答下方显示该轮指标,默认形态与自带用量胶囊类似:默认侧重展示速度,点击展开明细。

指标口径(README 原文定义):

  1. 首字:第一步的 TTFT,即首 token 时刻减该步开始时刻,对应「按下回车之后等了多久模型才开口」。
  2. 均:所有记录了首 token 的步骤的算术平均;只有一步时与「首字」相等,只显示一个。
  3. tok/s:按 token 加权,输出 token 总数除以解码总时长(各步消息完成时刻减首 token 时刻)。任一项取不到则省略该项,全部取不到则整条不渲染。

一轮对话可能包含多个助手步骤,工具调用会把一轮拆成若干次模型请求,上述折叠规则据此汇总。

宿主侧投影与前端兜底

浏览器侧会话快照只覆盖当前已加载窗口,且 assistant/live-chunk 仅存在于实时流、不写入持久日志。插件因此在宿主侧用与 DSH sessionStats 一致的事件语义,从持久日志里 assistant/message 的 data.stream(time0 + dt[])重放首 token 时刻,使分页、压缩与刷新后历史轮次仍能保持精确 TTFT,而非估算。

投影不可用时,前端退回节点 timing 字段,速度按整步时长计算,显示为带 ≈ 的下界(例如 ≈45.0 tok/s)。

实时速度(流式进行中)

会话运行期间,当前流式输出在「深度求索中」之后以 字/s 显示实时速度,独立于每轮读数,回合结束后消失。客户端流式阶段拿不到 token 计数,故实时项用字符计速;每轮读数仍为 token 口径。采样窗口为最近 1.2 秒,停顿或条件不足时保留上一次读数以减少跳变。

安装与启用

前置条件:DSH 版本不低于 0.2.1-rc.2;宿主依赖 sessionProjections 服务,投影未注册时插件不激活。

插件未发布到 npm,需按 GitHub 仓库安装。

图形界面:在「设置 → 内置插件 → 添加插件」中填入:

https://github.com/flyxiu/dsh-simple-tps

命令行(add 之后参数原样转给 pnpm):

dsh plugin --profile web add https://github.com/flyxiu/dsh-simple-tps

github:flyxiu/dsh-simple-tps 与上述 URL 为 pnpm 同义写法。本地开发调试可用:

dsh plugin --profile web add link:/path/to/dsh-simple-tps

link: 方式改代码不必推送即可生效,但插件市场不会对其做在线更新检查。

更新:插件市场比对仓库 HEAD 与 lockfile 中的 commit;在市场中点击更新即可,无需重装(link: 安装除外)。

卸载:

dsh plugin --profile web remove dsh-simple-tps
dsh-restart

典型用法

安装并满足 DSH 版本与 sessionProjections 后,无需额外配置项:打开网页聊天,每轮助手回答的动作行中即可看到读数;悬停历史轮次时与用量胶囊一样淡入显示。点击读数打开明细弹窗。

开发侧若修改宿主 lib/index.js,需执行 dsh-restart;修改前端 lib/client.js 需浏览器硬刷新(Ctrl+F5)。无热更新。

离线自测(不依赖运行中的 DSH):

node tests/run.mjs    # 前端:注册、折叠、投影优先、窄屏降级、数字格式化
node tests/host.mjs   # 宿主:流还原、多步折叠、真实日志比对

包内 npm test 等价于依次运行上述两条命令。

适用场景与注意

适合:在 DSH 网页端做对话调试、对比不同模型或提示下每轮 TTFT/TPS 的开发者;需要完整历史日志上精确指标、而非仅当前窗口估算时。

注意:

  1. 插件以当前 DSH 进程权限运行,安装前请自行审阅源码与 MIT 许可证。
  2. 仅面向 web 平台(package.json 中 dsh.client.platform 为 web)。
  3. 社区目录 SkillHub 为独立生态站点,与 DeepSeek / 幻方无官方从属关系;本插件在 GitHub 上星标数为 1(以目录线索为准)。
  4. Node 开发环境要求 >=22(见 package.json engines)。

结尾

dsh-simple-tps 把每轮 TTFT 与 tok/s 放到你已经在看的聊天动作行里,并用宿主投影对齐持久日志语义,避免刷新后历史轮次退化。需要安装或 issue 时,可访问 SkillHub 目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye