前言¶
在 DeepSeek Harness(DSH)里做智能体或长对话调试时,官方「用量」面板给出的是会话级的 token 与缓存信息,回答不了更细的问题:这一轮吐字快不快、时间花在模型推理还是工具执行、首字延迟大致多少。若只能靠体感或外部抓包,迭代 prompt 或排查慢请求会很费事。
dsh-session-speed-pill(会话速度胶囊)是社区维护者 wzsx150 发布的 DSH 插件,分类为「模型推理」。它在每轮助手回复下方、与「复制 · 点赞 · 分享 · 用量 · 时间」同一行的操作区里,在用量右侧、时间左侧插入一枚读数,例如 ⚡ 264 tok/s · 12.3秒;点开弹层可查看本轮更完整的时间构成与 token 汇总。数据全部从会话日志里已提交的事件推导,重放或刷新后数字一致,不依赖客户端自行计时。
这是什么¶
插件仓库:wzsx150/dsh-session-speed-pill(当前 package 版本 0.13.3,MIT 许可证)。目录页:SkillHub · dsh-session-speed-pill(独立社区目录,与 DeepSeek / 幻方无官方从属关系)。
一句话定位:给每一轮一问一答补上单轮速度与耗时读数,并在弹层末尾汇总本轮输入/输出用量;它不推断缓存命中率、上下文占用或费用,避免与官方用量数字冲突。
胶囊上显示什么¶
胶囊左侧是本轮解码速度:有效输出 token 之和除以解码耗时之和(按 token 加权)。右侧是总耗时:从 turn/start 到 turn/end 的墙钟时间,含首字延迟与工具执行。
时长格式:不足 1 分钟显示「12.3秒」,不足 1 小时显示「7分49秒」,超过 1 小时只显示「1小时05分」且不再带秒。速度低于 100 tok/s 保留一位小数,否则取整;分母不成立时显示 —,不会出现 0 tok/s、NaN 或 Infinity。
点开弹层:本轮指标¶
弹层样式对齐官方统计弹层(同一套 --dsw-* 主题 token 与布局)。标题行左侧为「本轮对话」,右侧可显示「共 N 步」。主要行包括:
- 回答耗时:模型、工具、总耗时(工具为总耗时减模型耗时的残差,含调度、审批、重试等)
- 首字延迟:各步最大、最小、算术平均
- 解码输出:平均 tok/s(与胶囊左侧同一口径)、合计解码窗口时间
- 预填充输入(估算)、本轮解码速度(估算)、本轮预填充速度(估算):带「估算」的项受网络延迟影响大,仅供参考
- 总用量:本轮未缓存输入 token 与输出 token(约以
≈8.4K/≈1.1M量级展示)
实现上校验两条恒等关系:平均解码速度 × 解码合计时间应对齐输出 token;模型耗时 + 工具耗时应对齐总耗时。更完整的推导与算例见仓库内 docs/metrics.md。
设置:始终显示消息操作行¶
官方默认只有最新一轮的消息操作行常驻,更早轮次在新消息出现后需悬停才可见。插件在 设置 → 通用 增加开关:
始终显示消息操作行(Always show message actions)
开启后常驻显示每条消息的操作行;默认关闭。
开关状态保存在浏览器 localStorage(键名 dsh-session-speed-pill:always-show-actions),按浏览器独立,换设备或清理站点数据会恢复默认关闭。
语言与界面位置¶
文案跟随 DSH 设置 → 语言:插件读取 <html lang>,zh / zh-CN / zh-Hant 等用中文单位(秒 / 分 / 小时),en 等用 English,其他语言回落 English。
胶囊通过会话 UI 的 conversation.chat.assistant-actions 槽位注入,并用 CSS order 把官方 endInfo 中的用量、胶囊、时间排成「用量 → 胶囊 → 时间」,视觉上与官方控件同一套度量。
数据从哪来¶
Host 侧注册会话投影 sessionSpeed:在每次会话事件上纯函数折叠状态,从 turn/start、turn/end、step/start、assistant/message 的 usage 与 stream(含 time0、逐块 dt)推导指标;客户端通过 useProjection('sessionSpeed') 按轮次 messageId 查表渲染。插件不订阅 session/event 做二次扫描,也不在客户端 fold 事件。
安装与启用¶
插件以当前 DSH 进程的权限运行;安装前请自行阅读仓库源码与 MIT 许可证。开发与验证环境为 DeepSeek Harness 0.2.1-rc.5;0.2.x 预期可用,0.3.x 及以后契约不变则应可用但未验证,0.1.x 未验证不保证。Host 侧要求 Node >=22。
下面是从 GitHub 安装 bundle 的方式(README 原文):
plugin_manager({ action: 'install_bundle', target: 'github:wzsx150/dsh-session-speed-pill' })
卸载:
plugin_manager({ action: 'remove_bundle', target: 'dsh-session-speed-pill' })
改动生效范围:index.js / lib/* 属 Host 半身,需重启 Harness;client.js 属浏览器半身,刷新页面即可。若本机访问 GitHub 较慢,插件管理器的连通性探测可能超时,README 建议在 profile 目录使用 pnpm update dsh-session-speed-pill 更新。
SkillHub 目录页也提供「发送给 DeepSeek Harness 安装」的提示语,可在 Harness 内让助手按 wzsx150/dsh-session-speed-pill 协助安装;具体步骤以你使用的 DSH 版本与助手能力为准。
典型用法¶
1、安装并重启/刷新后,正常与助手对话。每轮回复结束后,在操作行用量与时间之间会出现速度胶囊。
2、需要看分解指标时,点击胶囊,在弹层中查看回答耗时、首字延迟、解码与预填充估算、总用量等。
3、若要对比历史各轮的操作行(复制、用量、时间、胶囊),打开 设置 → 通用 → 始终显示消息操作行。
4、调试样式或位置时,可在 DevTools 中查找 data-plugin="dsh-session-speed-pill" 的注入样式表。
适用场景与注意¶
适合:需要单轮 tok/s 与耗时构成、排查慢回复或工具占用、在不动官方用量面板的前提下做推理侧观测的 DSH 用户与智能体开发者。
注意:
- 只统计日志里已有的事件;若 provider 未回写
dt时间线,仍有耗时但速度类指标可能为—。 - 数值在本轮提交后才落定,胶囊不会随流式 token 实时跳动,与官方投影行为一致。
- 预填充相关指标为估算下界,不宜与官方会话级用量直接对比做计费推断。
- 位置与「始终显示」依赖官方 DOM 属性(如
data-actions-reveal、data-clock);宿主升级后若属性变更,效果可能静默退回默认,不报错。 - 投影
apply若抛错可能中断对话;本插件对 fold 与apply做了防抛设计,任一 UI 条目也有错误边界隔离。
与其他插件:不注册 Host 服务、工具或 Web 路由;槽位与投影键均为追加式 id;主要冲突面是另有插件注册同名投影键 sessionSpeed 或改写同一操作行 DOM 时可能互相影响,需自行验证共存。
结尾¶
dsh-session-speed-pill 把「这一轮快不快、时间花在哪」从会话级用量里拆出来,放在每轮回复旁,并用与官方一致的 UI token 呈现;需要更细口径时可读弹层与仓库 docs/metrics.md。
- 目录页:https://www.skillhub.cn/plugins/wzsx150/dsh-session-speed-pill
- GitHub:https://github.com/wzsx150/dsh-session-speed-pill