DeepSeek Harness 插件

dsh_hud_plugin

Sci-fi HUD: turns the session stats line into game-style level bars, a speedometer and a rolling token counter.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
lauytgary/dsh_hud_plugin
最近更新
2026年8月19日
分类
趣味扩展
GitHub stars
1
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/lauytgary/dsh_hud_plugin
插件名:dsh_hud_plugin
作者:lauytgary

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README-CN.md来源说明 · 只读预览
README 语言

<div align="center">

English · 简体中文

</div>

dsh-stats-hud

DeepSeek Harness 打造的科幻风格 HUD:把会话的实时统计数据变成游戏风格的经验条,以固定在 Web 界面最右侧边缘的垂直竖栏形式呈现——完全不改动原有的统计行。

![截图](docs/screenshot.png)

仪表(全英文、LLM 术语)

仪表数据满量程超出满量程
CLOCK 徽章本地时间(24 小时制)+ DS API PEAK / DS API OFF PEAK 时段标识高峰时段 = 北京时间 09:00-12:00 / 14:00-18:00(自动按本地时间换算)PEAK 呈橙色、OFF PEAK 呈绿色
STEPS / TURN 滚动行步骤 / 回合数,以里程表滚筒样式滚动(类似 CONTEXT 行)挂载时滚筒旋转启动,数值变化时滚动
LLM / TOOLS 双栏两列(标签在上、数值在下),条形分段 = LLM:TOOLS 原始时间占比无上限——2:1 的时间比就显示 2:1 的条
THROUGHPUT 仪表盘tokens/s(吞吐量),标题居中,组合读数居中(146 tok/s红线自动缩放 200→300→400…(弧形刻度随之变化)
CONTEXT USAGE上下文窗口使用百分比,3 段:系统提示(灰)/ 工具(蓝)/ 消息(紫),按 token 占比0-100%≥80% 整条变实心红;悬停显示三个 token 数
CACHE HIT缓存命中百分比0-100%<50% 红、<80% 黄、≥80% 绿
CONTEXT 滚动计数器三行里程表:CACHE HIT(绿)/ CACHE MISSED(橙)/ OUTPUT(粉)挂载时滚筒从 0 开始旋转;数字增加时向上滚动(9→0 进位),减少时向下滚动

Agent 运行期间,整个面板会「呼吸」起伏,进度条随之脉动。

悬停在 CONTEXT USAGE 条上会弹出 token 明细提示:

![悬停提示](docs/mouse_over.png)

响应式布局

HUD 会根据聊天栏右侧的可用空间自适应(通过 ResizeObserver 实时测量,因此拖拽侧栏、打开详情抽屉、调整窗口大小都会生效):

档位条件显示内容
full窗口 ≥ 800px 且可用空间 ≥ 180px全部内容
mini窗口 ≥ 800px 且可用空间 < 180px时钟(短版 PEAK/OFF PEAK 徽章)+ 紧凑滚动行(Step/Turn/HIT/MISS/OUT)
hidden窗口 < 800px不显示(元素保持挂载,display:none

窗口宽度是硬性底线:低于 800px 时即使空间充足也会隐藏面板,只有测得的空间决定 full 还是 mini(完整面板需要 164px + 12px 边距)。窄窗口下 mini 可能与聊天栏轻微重叠——由于面板可点击穿透,这很安全。若无法测量聊天栏,面板会回退为 full

mini 档位在窄窗口下的效果:

![mini 档位](docs/mini.png)

环境要求

  • DeepSeek Harness dsh(已在 0.1.0-rc.6、macOS 上测试)
  • pnpm(用于插件管理)

安装

# 从本地仓库安装
dsh plugin --profile web add /path/to/dsh-stats-hud

# 或直接从 GitHub 安装
dsh plugin --profile web add https://github.com/lauytgary/dsh_hud_plugin

然后重启 dsh web(加载器条目在启动时扫描)并刷新页面。该插件以 link: 依赖方式安装——在本地修改 lib/client.js 后只需重启,无需重新安装。

安装后可在设置 → Plugins(插件列表)中看到它:

![插件列表中的 dsh-stats-hud](docs/plugin_chi.png)

卸载

dsh plugin --profile web remove dsh-stats-hud

工作原理

  • 注册到 conversation.composer.dock 插槽(id dsh-stats-hud,顺序 1)——只是为了拿到会话作用域的 hooksuseSession / useProjection);面板本身是 position: fixed,不占用布局空间,原有统计行保持不变。
  • 数据来自与原生界面相同的投影:useProjection("sessionStats")useProjection("tokenUsage")useProjection("contextPressure")useProjection("contextBreakdown")——宿主端零改动。
  • exports.inject = ["slots"] 是必需的:DSH 的 ctx 是严格代理,访问未声明的服务会抛错(cannot get property "locale" without inject)。
  • 面板是 pointer-events: none(点击穿透);只有 CONTEXT USAGE 条重新启用了指针事件,以便悬停提示生效。

文件结构

dsh-stats-hud/
├── package.json          # dsh.bundle(补丁层)+ dsh.client(浏览器入口)
├── cordis.patch.yml      # 将插件插入加载器条目
├── lib/
│   ├── index.js          # 宿主端无操作(纯浏览器插件)
│   └── client.js         # 浏览器打包:HUD 组件 + 插槽注册
└── test/
    └── format.test.js    # 纯函数单元测试(node:test,零依赖)

lib/client.js 是手写的加载器打包文件(window.__ModuleLoader__.load)——无需构建步骤。

开发与测试

npm test   # 纯函数单元测试(node:test,零依赖;需要 Node ≥ 18)

测试会用 Node VM 加载 lib/client.js(stub 掉 loader,无需 DOM),覆盖纯函数: formatTokens / formatDuration / formatTps / tierOf / billedInputTokens / cacheHitPercent。 test-only 的 __test 导出由 DSH_HUD_TEST 环境变量门控,浏览器端不会触发,bundle 不受影响。

参数调优

所有常量都在 lib/client.js 中:

  • 标签:L 对象(全英文 LLM 术语)
  • 高峰时段:LocalClockbjMin >= 540 && bjMin < 720(北京时间 9-12 点)和 >= 840 && < 1080(14-18 点),其中 bjMin = ((now.getTime() + 8*3600e3) / 60000) % 1440
  • MissionRolling:步骤 / 回合的滚动滚筒(无满量程)
  • ChannelBar:分段比例 = llmMs / (llmMs + toolMs)(无上限)
  • SpeedGaugeredline = 200(初始值;以 100 tok/s 为步进自动缩放)
  • ContextUsageBar:分段颜色和 ≥80% 实心红阈值;悬停提示从 contextBreakdown 投影读取 systemTokens / toolsTokens / messageTokens
  • 滚动计数器:DRUM(3× 0-9)、DRUM_H = 15(每位数像素)、RollingValue 的进位 / 借位公式以及挂载时的旋转启动
  • CSS:position:fixed; right:12px;档位在 tierOf(space, width) 中——width < 800hidden(窗口宽度兜底)、space >= 180full、其余 → mini(测量失败时回退为 full)以及 .gsh-root.gsh-* 规则;@media (prefers-reduced-motion: reduce) 会停用脉冲与过渡动画

发布到 npm(可选)

# 先移除 package.json 中的 "private": true,然后
npm publish
# 用户安装方式:
dsh plugin --profile web add dsh-stats-hud

联系

有问题、想法或建议?欢迎到 GitHub Discussions 讨论:

许可证

MIT