前言¶
在 DeepSeek Harness(DSH)里跑长对话时,模型响应前的 prefill 阶段占了不少体感时间,但内置界面未必把「每秒处理多少未命中缓存的 prompt token」摆在显眼位置。若你关心前缀缓存命中后的真实计算量、或想对比不同提示策略下的输入吞吐,通常只能翻日志或自己算。
下面介绍的 dsh-prefill-speed-stats 是社区维护的客户端插件(维护者 stefanohe),在状态栏内置「会话统计」条左侧增加一格,显示会话平均 prefill 速度(tok/s),点击可展开会话平均与最近 N 步两个读数。插件面向 deepseek-harness-v0.2.0-rc.2,npm 包版本 0.2.0-rc.2,许可证 MIT。
这是什么¶
dsh-prefill-speed-stats 的定位很单一:把 prefill 速度直接显示在状态栏(Show prefill speed directly in the status bar)。
它运行在 DSH 浏览器端,通过公开的 sessionSpeed Host 投影和 conversation.composer.dock 插槽接入,属于非官方插件;目录站点 SkillHub 插件页 与 GitHub 仓库 stefanohe/dsh-prefill-speed-stats 为独立社区资源,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
插件在内置会话统计条左侧增加一个 dock 格子,默认展示会话平均 prefill 速度,单位 tok/s。点击后弹出两行说明:
| 显示项 | 含义 |
|---|---|
| 状态栏格子 | 会话平均输入速度(tok/s) |
| Prefill speed (session average) / 输入速度(会话平均) | 整个会话:Σ 未命中缓存 token ÷ Σ 预填充窗口 |
| Prefill speed (last N steps) / 输入速度(最近 N 步) | 同一算法,仅统计最近最多 10 个已测量步;标题会标明实际平均了几步 |
术语与 Harness 日志对齐:
- 未命中缓存 token 对应
usage.inputTokens:提供方需要重新计算的那部分提示;前缀缓存命中部分不计入。 - 预填充窗口 从
step/start到首个可见 token。某步若始终没有可见 token,则没有窗口,两个读数都不计入该步;相关 token 记在session.unmeasuredInputTokens。
读数随会话增长更新,无需配置项。若同时安装 sibling 插件 dsh-show-balance,其格子会出现在本插件更左侧。
理解读数时需注意 README 中的说明:数值偏低往往表示这一步几乎没什么新内容要算(例如缓存很热),并不等价于「模型变慢」。固定请求开销(排队、往返、读 KV 缓存)仍在,而 uncached token 很少时,单步比率会被压向零;会话平均会摊薄这部分,最近 N 步窗口则不会。窗口内一切耗时都进入分母,因此该指标是真实 prefill 吞吐的下界。
宿主侧通过 index.js 注册投影,lib/projection.js 负责折叠与 schema,lib/stream.js 处理首个可见 token 计时;浏览器侧 client.js 负责格子与对话框。未知事件或畸形日志记录会被忽略而非中断会话,未来 Harness 事件格式变化可能只影响精度。
安装与启用¶
DSH 采用 profile 管理插件 bundle;本插件面向 desktop profile,目录为 <DSH 主目录>/profiles/desktop(默认位置下 Linux/macOS 为 ~/.dsh/profiles/desktop,Windows 为 %USERPROFILE%\.dsh\profiles\desktop)。
建议使用 pnpm 11.7.0。 若尚未安装:
npm install -g pnpm@11.7.0
方式 A:从 npm 安装¶
在对应 profile 目录执行(或在「设置 → 插件」、agent 的 plugin_manager 工具中安装,效果等价):
pnpm add dsh-prefill-speed-stats
DeepSeek Harness 使用默认主目录时,可直接:
cd "$env:USERPROFILE\.dsh\profiles\desktop" ; pnpm add dsh-prefill-speed-stats # Windows
cd ~/.dsh/profiles/desktop ; pnpm add dsh-prefill-speed-stats # macOS / Linux
安装后确认该 profile 的 package.json 里 dsh.profile.bundles 已包含包名 dsh-prefill-speed-stats(经插件管理器安装时会自动写入)。
方式 B:从仓库脚本安装¶
适用于源码、离线或 npm 未提供的版本。在仓库根目录执行(脚本会完成依赖写入并备份 manifest,并提示后续步骤):
pwsh -File .\install.ps1 # Windows
sh ./install.sh # macOS / Linux
pwsh -File .\install.ps1 -From npm # 改为安装 npm 已发布包
启用(两种方式共通)¶
- 完全重启 DSH 应用。浏览器 bundle 在启动组合时快照,仅刷新页面不够。
- 打开左侧插件面板,将 dsh-prefill-speed-stats 开关打开。
典型用法¶
安装并启用后,正常在 DSH 里对话即可;状态栏左侧会出现 prefill 速度格。
- 观察 dock 上的会话平均
tok/s,作为整段会话输入侧吞吐的粗指标。 - 点击该格,查看「会话平均」与「最近 N 步」两行,对比热缓存步与长 prompt 步的差异。
- 若某步读数极低,结合是否大量命中前缀缓存、以及
session.unmeasuredInputTokens中未计入的步,再判断是「几乎无新算力需求」还是窗口未形成。
插件不提供额外 CLI 或配置文件;投影测试可在开发仓库中运行 node --test test/projection.test.cjs(面向维护者,非终端用户必需步骤)。
适用场景与注意¶
适合:在 DSH desktop 上日常调试 agent、对比提示长度与缓存策略、需要状态栏常驻 prefill 指标而不想手算日志的开发者。
注意:
- 插件以当前 DSH 进程权限运行,安装前应阅读 源码 与 MIT 许可证,自行评估信任边界。
- 仅适用于 README 标明的 Harness 版本线(v0.2.0-rc.2);升级 Harness 后需确认插件仍兼容。
- 读数是工程下界,不宜单独作为 SLA 或模型性能的唯一依据。
结尾¶
dsh-prefill-speed-stats 把 prefill 速度从日志里搬到状态栏:一格会话平均,一点击看会话与最近几步的分解。安装路径是 desktop profile 下的 pnpm add dsh-prefill-speed-stats,记得完全重启并在插件面板打开开关。