DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

konnga /

konnga/dsh-hud

Verified

Heads-up display for DeepSeek Harness (dsh): Git panel and diffs, image before/after compare, per-session change attribution, review progress, tool and skill activity, session timer.

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@4786e1db

dsh-hud

release node license

English | 中文

DeepSeek HUD 状态面板:分支、ahead/behind、改动清单与差异,外加「这个会话改过哪些文件、审到哪了、跑了什么工具」。

输入框上方的三枚胶囊:左边是 Git 状态,中间是工具与技能,最右边是本次会话运行时长

安装

桌面端「设置 → 插件 → 添加插件」里填 @konnga/dsh-hud。

本地开发时把 profile 的依赖指向仓库(改动即时可见;客户端代码要重启应用才重读):

"@konnga/dsh-hud": "link:/path/to/dsh-hud"

功能总览

功能 一句话 在哪儿
Git 胶囊 工作区名、分支、ahead/behind、改动计数、本会话改过几个文件 输入框上方那一行,最左(点它开面板)
工具胶囊 正在跑什么(实时秒数)、各工具调用次数、用过的技能 同一行,中间
会话计时胶囊 本次会话已运行多久;悬停给模型 / 工具墙钟与轮次 同一行,最右
面板 改动概览、改动清单、最近提交、标签;点任意一行看差异 点 Git 胶囊
差异与提交明细 未暂存 / 已暂存、自动换行、复制差异;图片并排对比 + 缩放 面板右侧,可拖动
轮尾「本轮图片改动」 这一轮动过的图:点开看单张,⇄ 看前后对比 内置「已编辑 N 个文件」卡片旁
侧栏会话行 悬停或点 ⋯ 展开:git 摘要 + 本会话归因 侧栏每个会话行
键盘 面板内 ↑↓ Enter [ ] n p Space v r Esc 面板激活后
输入框 ↑ 召回 空输入框按 ↑ 带回上一条 prompt 输入框里

你会看到什么

胶囊(输入框上方那一行)

dsh-hud · git:(main*) ↑1 ↓2 M4 A1 ?1 │ ●3   │   ✓ bash ×16 │ …   │   ⏱ 2h 14m

三枚胶囊的悬停提示是插件自己画的气泡(不用浏览器原生 tooltip —— 它在真机上不出现,延迟与样式也控制不了)。

Git(最左)

  • dsh-hud —— 工作区名(太长从中间省略,完整路径看悬停)。不在 git 仓库里也会显示。
  • git:(main*) —— 分支。* 表示工作区不干净;detached 时是 git:(detached abc1234)。
  • ↑1 ↓2 —— 与上游的领先 / 落后(为 0 不显示)。
  • M4 A1 ?1 —— 改动计数,只列非零项:M 改 · A 增 · D 删 · R 重命名 · C 复制 · T 类型 · ? 未跟踪 · ! 冲突。
  • ●3 —— 本会话改过 3 个文件(没有就不显示)。

工具(中间,运行过的工具才出现)

◐ bash: pnpm test 1.2s                                     ← 正在跑,秒数实时跳
✓ bash ×16 │ ✓ apply_patch ×6 │ skills: office-xlsx ×2 +2   ← 空闲
  • 每个工具一个计数,前面的 ✓ / ✗ 是它自己最近一次调用的结果。
  • skills: 后面是技能名(看得出是哪一个,不是"技能调了几次")。
  • 最多铺 3 个工具 + 2 个技能,其余收成 +k;悬停里有完整清单与最近几条结果。

会话计时(最右)

⏱ 2h 14m
  • 本次会话已运行多久。口径与 codex-hud 的会话时长一致:现在 − 会话创建时刻(含等待与空闲)。格式 <1m / 45m / 2h 14m / 3d 2h。

  • 悬停补上这段时间真正在干什么:

    本次会话运行时长 · 创建于 2026-10-14 17:58 · 其中模型 1h 29m、工具 23m · 27 轮 / 380 步
    

    后两项来自内置 sessionStats 投影;那个投影没有时只显示挂钟时长,不编造。

  • 刚重启的头几秒可能还没有它:会话是异步恢复进宿主存储的(实测约 30 秒)。所以取数失败按 3 秒重问,拿到后改成 60 秒一次。会话已归档或宿主没有 sessions 服务时,整枚不画。

实机效果图:

悬停会话计时胶囊:上方弹出气泡写着「本次会话运行时长 · 创建于 2026-10-14 17:58 · 其中模型 2h 49m、工具 36m · 47 轮 / 607 步」,下方是胶囊本身「⏱ 4d 16h 31m」

同一套气泡也用在 Git 与工具胶囊上(Git 那颗是多行的:完整路径 / 上游 / 各类型计数)。

面板(点 Git 胶囊打开)

面板:左边是改动概览与本会话改了哪些、改动清单、最近提交、标签;中间是这次提交的明细;右边是差异

上图是「看某次提交」时的样子。标题栏可拖动,⟳ 刷新 · ⌖ 复位位置 · ✕ 收起。

  1. 仓库路径 · 上游 · 短 oid
  2. 改动概览 —— 按类型分组的彩色计数;干净时写「工作区干净」。
  3. 本会话改了哪些 —— 一行计数加开关:只看本会话改的、只看最近一轮;有审阅标记时还有 已审 3/8 与 清空已审。
  4. 改动清单 —— 每行 标记 状态字母 路径,重命名读作 旧 → 新。
    • 行首 ● 确定改过 · ◐ 可能相关(从命令里看出来,悬停给出那条命令)· ○ 与本会话无关。
    • 行尾 ○ / ✓ 是审阅标记,点一下或按 v 切换;✓ 变黄说明改动又变了,需要重看。
    • 点任意一行看这个文件的差异。
  5. 最近提交 —— 短sha 标题 [HEAD] 2026-10-16 14:18;点一行看这次提交,再点一次收起。
  6. 标签 —— 新的在前;点一行看它指向的提交。没有标签时写一行「这个仓库还没有标签」。

时间一律是完整年月日 + 时分(本地时区)。

差异、提交明细与图片

  • 看差异:两栏,工具栏是 未暂存 / 已暂存 / 自动换行 / 复制差异;点 hunk 头可折叠那一段。
  • 看提交:三栏 —— 面板 │ 这次提交 │ 差异,并自动打开这次提交的第一个文件。
  • 两条抓握都能拖:右边缘那条调差异栏宽度(默认 470px),提交明细栏右边那条调它(默认 240px)。两条宽度都会记住。
  • 看图片改动:认得出是图片的文件(PNG / JPEG / GIF / WebP / BMP,按文件头认,不看扩展名)会画成两张并排,并给出尺寸与字节变化(1024×768 → 1024×512、2.0 KB → 1.0 KB)。画不出来时说明原因:超过单侧 4 MB、不是可预览的图片、或缺这一侧(新增 / 删除)。
  • 图片缩放:常显的 − / 档位 / +,默认「适应宽度」,档位 25% / 50% / 100% / 150% / 200%(按图片固有像素算宽度),点档位本身回到「适应宽度」。档位会记住。

差异栏里的图片改动:工具栏是未暂存/已暂存/自动换行/复制差异,下面是「并排」与 − 100% + 缩放按钮,橙色高亮写着「尺寸 190×140 → 230×160」和「8.8 KB → 11.4 KB」,两张图左右并排,左标「索引」右标「工作区」

轮尾的「本轮图片改动」

轮尾的「本轮图片改动」:三张缩略图,命令行听来的两张带 ◐ 标记,每张后面跟着一个 ⇄,末尾写「还有 3 个」

内置那张「已编辑 N 个文件」的卡片里看不到图片,所以本插件在同一处轮尾放了自己的门:

  • 点缩略图 → 在右侧内置文档预览里打开这张图;
  • 点 ⇄ → 打开本插件的面板,看这张图的前后对比(内置预览只有当前这一版);
  • 只列这一轮改过的图片,最近改的在前,最多 4 张 + 还有 N 个;这一轮没动过图片就整条不渲染;
  • 归因两档都收:工具改的算确定,从 shell 命令里认出来的标 ◐(悬停给出那条命令)—— 图基本是脚本产出的,只收确定档等于收不到。

侧栏会话行

侧栏那一行本身没有标记,信息在悬停或点行尾 ⋯ 展开处:

main* ↑0 ↓0 · 已修改 7 未跟踪 2
本会话改过 3 个文件 · 命令旁听到 4 个可能改动的路径(1 个现在有差异)

干净时写「工作区干净」「本会话没有改动记录」。

键盘

先在面板里点一下(或 Tab 进去)才接管按键,点到面板外就交还。Cmd/Ctrl/Alt 组合键与输入框里的按键一律不碰。

键 作用
↑ ↓ 上下移动选中行(只移动,不打开)
Enter 打开选中的那条
[ ] 上一个 / 下一个文件,并直接打开
n p 下一个 / 上一个 hunk(折叠着的会展开)
Space 折叠 / 展开当前 hunk
v 把当前行标成「这一版我审过了」(再按取消)
r 重新读取
Esc 退一层:先收右栏(差异 / 提交明细),再按才收面板

看提交明细时,↑ ↓ Enter [ ] 作用于明细那一栏的清单。

输入框里按 ↑ 召回上一条 prompt

输入框为空时按 ↑,带上一条 prompt;继续按往更早翻,↓ 往回翻,翻过最新一条就回到你原来的草稿。

  • 只处理纯文本:/命令、@文件 本来就是文本,照原样带回来仍然有效;附件、图片不会跟着回来。
  • 数据来自会话日志(内置 turnOutline 投影),不是插件自己记一份 —— 重启、分页、压实都不影响,在别的客户端发过的话也能召回。宿主的投影没有时,整个功能静默不启用。
  • 输入框非空时完全不接管,多行草稿里的 ↑ 永远只是移动光标,也不会跟 / 命令、@ 提及的弹窗打架。带修饰键、输入法组合中、有选区时同样让路。
  • 你一打字就退出历史模式,草稿不会被错还原。

实现说明:DSH 的输入框是 Lexical 的 contenteditable,插件碰不到它的内部模型,只能模拟一次粘贴(失败退到 execCommand、再退到直接改文本),每层都等落地后回读确认。这是全插件唯一贴着 DOM 走的地方,DSH 改结构时它可能失效 —— 失效即静默不启用。

开发

  • lib/index.js:宿主半(跑 git、提供 /dsh-hud-rpc)。
  • lib/client.js:浏览器半(无构建步骤,手写 JS,只依赖种子模块 react)。
  • npm test:全部用例(node --test test/*.test.mjs)。零依赖、不用装东西。
  • docs/dock-slot-host.md:把输入框上方那一行做成「可注册行内宿主」的提案,给上游看的。
  • 发版:npm run tag && npm publish。prepublishOnly 先跑测试,再校验「版本号 ↔ git tag」(工作区要干净、v<版本> 要存在且指向 HEAD),对不上就发不出去。

许可

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 4786e1dbbc08

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout