Ycet/dsh-awesome-hud 预览 preview

Ycet/dsh-awesome-hud

dsh侧边HUD面板,包含多个信息展示模块(可自定义是否展示),集成压缩上下文、查看git graph等功能。DSH side HUD panel, containing multiple information display modules (customizable whether to display), integrating features such as compressed context, viewing git graph, etc.

Project Overview项目介绍

dsh-awesome-hud is a floating HUD panel plugin for the DeepSeek Harness Web chat, installed via the dsh.bundle.patch channel. It adds a toggle button in the top-right corner, aggregating session status, context window with one-click compaction, DeepSeek and OpenCode Go usage, git stage/commit/revert with a graph popup, subagent tasks, todos, plan lists, and MCP toggles. It is most useful during long sessions or parallel subagent workflows. Caveat: verified only on DeepSeek Harness 0.1.1-rc.2; mutual exclusion with dsh-better-sidebar requires version 0.16.1, and Windows/Linux remain untested.

dsh-awesome-hud 是面向 DeepSeek Harness Web 聊天页的悬浮 HUD 面板插件,通过 dsh.bundle.patch 通道安装,于页面右上角新增开关按钮,集成会话状态、上下文窗口(带一键压缩)、DeepSeek/OpenCode Go 用量、git 暂存/提交/撤销与 graph 弹窗、子代理任务、待办、计划清单及 MCP 启停等模块。在长会话或并行子代理场景下尤为实用。注意:仅在 0.1.1-rc.2 上验证,互斥协作需 dsh-better-sidebar 0.16.1,Windows/Linux 未实测。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add github:Ycet/dsh-awesome-hud

Ycet/dsh-awesome-hud 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-awesome-hud

简体中文 English

License: MIT

为 DeepSeek Harness Web 聊天页打造的悬浮 HUD 面板:会话状态、上下文占用与一键压缩、git 变更、子代理、任务与 MCP 启停,一目了然。

HUD在dsh中的效果(浅色主题)

alt text

HUD在dsh中的效果(深色主题)

alt text


[!NOTE] 一个 DSH Web 插件(dsh.bundle.patch 通道安装)。浏览页面右上角新增「HUD面板」按钮,点击开合悬浮面板;面板与 dsh-better-sidebar 右侧栏互斥协作,互不遮挡。

📑 目录


✨ 功能列表

模块 说明
会话 当前工作区名称、会话名称、会话状态(任务中/待审批/空闲中/待回答/等待子任务)、模型提供商/模型名/推理等级;会话名称右侧铅笔按钮可重命名(点击进入编辑态,输入框+取消/确认,确认后保存并自动更新会话列表标题);右上角「HUD 设置」勾选展示模块
上下文窗口 上下文占用进度条(0–40% 绿 / 40–90% 黄 / >90% 红)、底部展示「已用 n · 上限 n · 缓存命中 n%」(缓存命中率保留一位小数;数据不可用时显示 )、一键「压缩」当前会话上下文
用量 DeepSeek 余额、OpenCode Go 三个窗口用量百分比(oc-go 5h/1w/1m)与 Codex 5 小时/周剩余额度百分比(dsh-codex-subscription 返回 gpt-reserve 额度时,追加展示同等样式的 codex gpt-reserve额度 行);行首带对应图标并缩进,点击具体数值直达对应设置页;DeepSeek、OpenCode Go 与 Codex 按各自安装/登录状态独立展示
git 当前分支(标题栏右侧分支按钮:下拉列表可切换已有分支、创建新分支并自动切换)、变更文件数量;变更文件按暂存区(staged)与未暂存区(changes)分组展示(组名带灰色计数,无文件的分组自动隐藏);文件行点击可暂存/移除暂存/撤销;「commit」提交暂存区(手动输入或 AI 生成提交信息——按内置本地 git 提交规范 [YYMMDD] 项目名 vX.Y.Z:内容),「revert」撤销全部未暂存变更(已跟踪文件还原内容、未跟踪新建文件一并删除;破坏性操作均有二次确认与受影响文件清单);「git graph」弹窗(全部引用提交分页展示:每页最多 80 条,滑到底部出现「加载更多」按钮逐页追加,直至全部历史;当前分支标签为蓝底白字,其他分支为灰底黑字;提交行右键菜单可复制短哈希/全哈希/提交标题、从此处创建分支、合并至当前分支,或执行 soft / mixed / hard reset;创建分支为原位输入 + 图标按钮,合并与 reset 为行内二次确认);仅在有 git 仓库时展示
子代理任务 当前会话全部后代子代理(按层级缩进)、执行中(黄)/已完成(绿)状态,点击跳转子代理会话页;仅在有子代理时展示
任务 当前会话待办任务列表、已完成/待完成状态与计数(如1/3),随任务列表实时刷新;进行中任务显示旋转动画图标,底部展示「已完成/进行中/待处理」三态计数(含 0 恒显);仅在有任务时展示
计划清单 当前会话通过 plan 模式(exit_plan_mode)产出的全部计划:待审批(黄)/已执行(绿)/已废弃(灰、划线淡色)三态标签,标题栏展示计划总数,点击行弹出计划全文弹窗,模块底部展示「已执行/待审批/已废弃」三态计数(含 0 恒显);仅在有计划记录时展示
MCP 接入的全部 MCP 服务及 dsh 全局启用状态;开关直接启停 dsh 全局的 MCP 服务(写入 profilecordis.patch.yml),切换后页面刷新
便笺 工作区共享的便笺(同一工作区目录下所有会话共用一份内容,本地持久化);输入框底部拖拽手柄可调整高度(实时持久化),5000 字上限与字符计数,右侧圆点指示内容存在;可一键添加便笺全文至对话输入框;输入框为空时「清空」按钮置灰,有内容时需二次确认后清空;折叠/展开状态持久化
待办 工作区共享的待办清单(同一工作区目录下所有会话共用一份清单与顺序,本地持久化);勾选完成/恢复、添加/删除、整行拖拽排序(拖动手柄位于行最左侧)、一键清空已完成(二次确认,空列表置灰);底部展示完成计数;可一键添加全部待办至对话输入框;折叠/展开状态持久化

互斥协作:打开 better-sidebar 右侧边栏会自动关闭 HUD;手动关闭右侧边栏后 HUD 自动恢复。点击「HUD面板」按钮时若右侧边栏已打开,则先自动关闭侧边栏再打开 HUD(若版本兼容性导致自动关闭失败,HUD 会延迟到右侧边栏关闭后自动打开)。

🚀 快速开始

方式一:从 GitHub 远程安装(推荐)

# 1. 安装(要求本机 git 可访问 GitHub)
dsh plugin --profile web add github:Ycet/dsh-awesome-hud

# 2. 重启 DSH Web 服务并刷新页面

方式二:从本地源码安装(开发)

# 1. 安装(将 <absolute-path-to-plugin> 替换为本地源码目录绝对路径)
dsh plugin --profile web add dsh-awesome-hud@link:<absolute-path-to-plugin>

# 2. 重启 DSH Web 服务并刷新页面

安装完成后,聊天页右上角(「打开工作区」按钮左侧)出现「HUD面板」按钮,点击即可开合。

[!NOTE] HUD 面板默认展开;每个会话各自记住自己的开合状态(按会话 id 存于 localStorage),在 A 会话收起不会影响 B 会话。新建会话页(尚未开始的空白会话)例外:该页每次进入都从收起状态开始(只改内存态、不写 localStorage,因此不影响任何会话的记忆),并在右上角提供独立的悬浮「HUD面板」按钮用于在该页展开。模块可见性保存于 DSH profile 设置中,跨浏览器/设备随 profile 同步。

🧭 使用说明

  • HUD 面板:悬浮于聊天页右上角,宽度 300px,高度上限为输入框底部(留 8px 底距),内容超出时面板内部滚动(滚动条仅在滚动时显示,停止 2s 后渐隐);聊天内容与输入框随面板展开自动向左让位,不会重叠。
  • 设置菜单:「会话」模块右上角齿轮打开菜单,可勾选展示「上下文窗口 / 用量 / git / 子代理任务 / 任务 / 计划清单 / MCP」模块(用量仅在其可用时列出),底部「取消 / 确认」按钮丢弃或保存勾选;「会话」模块恒展示。用量可用时,菜单内额外提供「用量模块内容」分组,可分别开关 DeepSeek 余额、OpenCode Go 用量和 Codex 额度。
  • 会话模块:会话名称右侧铅笔按钮可重命名会话——点击进入编辑态(输入框 + 取消/确认图标按钮),Enter 提交、Esc 取消,输入为空时确认按钮置灰;确认后保存新名称,会话列表标题自动更新。
  • 上下文窗口:进度条颜色随占用率自动切换;底部按「已用 n · 上限 n · 缓存命中 n%」展示,缓存命中率固定保留一位小数(无可用统计时显示 );「压缩」在会话空闲时可用,运行中按钮禁用并提示原因。
  • 用量模块:位于「上下文窗口」模块下方。DeepSeek/OpenCode Go 复用 dsh-account-usage 插件路由,Codex 复用 dsh-codex-subscription 的浏览器 RPC;面板打开时立即加载、之后每 60 秒轮询;数据均缩进展示并带对应图标;模块支持折叠,默认展开(折叠状态经 localStorage 持久化)。
    • DeepSeek 余额:展示余额合计(充值 + 赠送),「跳转」按钮弹出选择菜单,可跳转 deepseek 开放平台或 opencode go 用量页;点击具体余额数值可直接打开设置面板「账户」分区的 deepseek 标签页;仅当已配置 DEEPSEEK_PLATFORM_TOKEN 时展示该行。
    • OpenCode Go 用量:三行分别展示 oc-go 5h / 1w / 1m 窗口用量百分比点击具体百分比数值可直接打开设置面板「账户」分区的 opencode go 标签页;仅当已配置 OpenCode Go Key 且订阅有效(/api/account-usage/opencode 返回 ok + keySource)时展示。
    • Codex 额度:展示 codex 5h额度codex 周额度 两条剩余额度整数百分比,使用 ChatGPT 图标;点击百分比数值打开「设置:Codex 订阅」页面。仅当安装并登录 dsh-codex-subscription 时展示;已登录但额度请求暂时失败时保留行并显示 ,无法确认安装/登录状态时隐藏。
    • gpt-reserve 额度dsh-codex-subscription 返回 gpt-reserve 额度(/wham/usageadditional_rate_limitsrateLimitsidbase_model_inferencelimit_name/namegpt-reserve;插件按 id 或 name 归一化匹配,忽略大小写、下划线、连字符与空格)时,在周额度下方追加 codex gpt-reserve额度 行,样式、图标与交互与 5h/周额度完全一致(取其主窗口剩余百分比;额度带名称时显示为「codex gpt-reserve额度(名称)」)。该额度不存在时不展示该行;存在但窗口数据异常时保留行并显示
    • 模块可见性与可配置内容:DeepSeek、OpenCode Go 与 Codex 各自独立;仅已安装/配置/登录的数据源显示对应行,全部不可用时模块与设置项整体隐藏;展示内容可在「用量模块内容」分组中单独开关(host settings 持久化,随 profile 同步)。
  • git 模块:每 5 秒随面板打开自动刷新(写操作后立即刷新);标题栏右侧分支按钮点击弹出下拉列表——可切换已有分支(当前分支高亮带勾标记),或在输入框中输入新分支名点击「添加」创建并自动切换;「git graph」弹窗按每页最多 80 条分页展示当前仓库(全部引用)提交图(滑到列表底部出现「加载更多」按钮点击追加下一页,全部加载完后底部显示「已显示全部提交」提示);分支标签中,当前分支为蓝底白字,其他分支为灰底黑字;HEAD 指向版本以放大的白色填充圆点 + 蓝色描边标记。提交行右键菜单可复制短哈希(前 7 位)/全哈希(40 位)/提交标题,并提供以下受保护操作:
    • 从此处创建分支:点击后原菜单项位置展开为输入框 + 「取消」/「确认」图标按钮(输入框为空时确认按钮置灰)。输入合法分支名并点击确认后,以该提交为起点执行 git checkout -b <名称> <提交> 并切换到新分支:成功提示后菜单关闭、git 快照与提交图刷新,新分支标签随即显示为蓝底当前分支。分支名重复、或本地修改会阻止切换时给出提示(后者列出受影响文件)并保留输入内容,便于改名重试;不自动 stash、不强制切换。输入框内按 Enter 不触发创建,按 Escape 取消输入并恢复为原菜单项(再按一次关闭菜单);Git 操作(merge / rebase / cherry-pick / revert)进行中时该项置灰。
    • 合并至当前分支:先在原菜单项位置显示行内「确认?/取消」,确认后执行 git merge --no-edit;已包含提示「无需合并」、本地修改阻塞提示受影响文件、合并冲突自动 git merge --abort 回滚并列出冲突文件清单。
    • reset(soft)-保留暂存:仅可选择当前本地分支历史中、早于 HEAD 的提交;二次确认后以 git reset --soft 回退,所选提交之后的提交内容保留在暂存区。
    • reset(mix)-取消暂存:同样仅可回退至当前本地分支历史中的较早提交;二次确认后以 git reset --mixed 回退,所选提交之后的提交内容保留在工作区且不在暂存区。
    • reset(hard)-撤回更改:二次确认后以 git reset --hard 回退并丢弃所选提交之后的提交内容,以及已跟踪文件的未提交修改;未跟踪文件不会被删除。
    • reset 在未检出本地分支、Git 操作进行中、所选提交不在当前分支历史中或所选提交即为 HEAD 时不可用。变更文件按分组展示(状态字母按类型着色——修改 M 黄色、新增 A 蓝色、删除 D 红色、未跟踪 ? 灰色,重命名 R / 复制 C 蓝色):
    • 分组:staged(暂存区)与 changes(未暂存区,含未跟踪)两组,组名右侧灰色数字为组内文件数,并提供一键按钮:changes 组「+」暂存全部未暂存文件、staged 组「-」取消暂存全部暂存文件;某组无文件时该组不展示
    • 文件行操作:点击任一文件行弹出选项菜单——staged 组文件提供「remove from stage」(移出暂存区);changes 组文件提供「add to stage」(暂存该文件)与「revert」(撤销该文件变更;未跟踪新建文件撤销 = 删除该文件,均带二次确认与受影响文件清单)
    • commit:按钮在暂存区无文件时置灰;点击弹出提交弹窗(展示待提交暂存文件数量 + 多行输入框 + AI generate + commit),输入为空时 commit 置灰;Enter 仅换行,需点击 commit 才会提交;提交范围仅为暂存区
    • AI generate:使用当前会话所选模型,结合暂存区全部 diff(超 16KB 截断)与当前会话最近对话上下文(用户直接消息与助手消息,供理解改动意图;若对话中用户明确指定了提交备注则直接采用),按内置本地 git 提交规范生成提交信息并填入输入框——格式 [YYMMDD] 开发项目名称 vX.Y.Z:修改内容(日期取系统当前时间;版本号依规范自动判断:破坏性变更→主版本、向后兼容新功能→次版本、修复/文档→修订号;项目名与当前版本取自工作区向上最近的 package.json);生成后自动校验版本号是否已按规范递增,不达标时自动重试一次(附上一次输出与原因反馈),仍不达标则照常填入并提示核对
    • revert:按钮在无任何未暂存变更(含未跟踪)时置灰;点击后二次确认弹窗列出全部受影响文件(未跟踪文件带 ? 前缀标识),确认后还原已跟踪文件的未暂存变更并删除未跟踪新建文件(暂存区不受影响)
  • 子代理任务模块:按层级缩进展示全部后代子代理;执行中状态徽章为黄色,已完成为绿色;点击条目跳转对应子代理会话页。
  • 任务模块:列表展示当前会话待办任务;进行中(in progress)任务行首为旋转动画图标(DeepSeek 官方同款,1s/圈,品牌蓝),已完成/待处理保持勾选与待办图标;模块底部展示「x 已完成 · x 进行中 · x 待处理」三态计数(含 0 恒显),标题栏保留「已完成/总数」计数。
  • 计划清单模块:位于「任务」模块下方,展示当前会话通过 plan 模式产出的全部计划清单(新→旧),仅在存在计划记录时展示;每 5 秒随面板打开自动刷新,状态由会话日志自动推导:
    • 待审批(黄色标签):计划刚产出、用户尚未审批;
    • 已执行(绿色标签):用户在计划审查中审批通过(exit_plan_mode 成功返回);
    • 已废弃(灰色标签、文字划线变淡):用户拒审/要求修改/打断审查,或计划无审批结论但 plan 模式随后退出(如 /plan off);
    • 行主文字取计划首个 Markdown 标题,无标题时截取正文;点击任一行弹出计划全文弹窗(标题、状态、产出时间与正文,正文按轻量 Markdown 渲染,支持标题/列表/代码块/链接/引用与 GFM 表格);模块底部展示「x 已执行 · x 待审批 · x 已废弃」三态计数(含 0 恒显);模块可折叠,默认展开。
  • MCP 模块:开关控制 dsh 全局的 MCP 服务启停;切换后页面自动刷新生效;模块默认展开,无任何 MCP 服务时仍展示空状态。
  • 便笺模块:按工作区共享的便笺——以会话所在工作区目录为键保存(同一工作区目录下的所有会话共用一份内容,含输入框高度),本地持久化;删除或归档其中任一/全部会话都不影响该工作区其它会话的内容,下次在同一工作区新建会话时内容依旧存在;输入框底部拖拽手柄可拖拽调整高度(实时持久化),5000 字上限与字符计数显示;右侧圆点指示便笺内容存在;可一键添加便笺全文至对话输入框(新建会话页会发送到该工作区最近的会话);输入框为空时「清空」按钮置灰,有内容时首次点击进入红色确认态,二次点击后清空(点击其他区域、Escape 或 2 秒超时会取消);模块可折叠/展开(状态持久化)。未归属工作区(无 cwd)的会话降级为会话级隔离,不与其它会话共享。
  • 待办模块:按工作区共享的待办清单——以会话所在工作区目录为键保存(同一工作区目录下的所有会话共用同一份清单与顺序,本地持久化);勾选完成/恢复、添加/删除项、整行拖拽排序(拖动手柄位于行最左侧勾选框之前)、一键清空已完成(二次确认弹窗,无已完成项时按钮置灰);底部展示完成计数;可一键添加全部待办至对话输入框;模块可折叠/展开(状态持久化)。同一工作区多会话/多标签页同时编辑时按条目 id 归并,不会互相清空。
  • 折叠状态:各模块折叠/展开状态刷新页面后保持(localStorage);「会话」模块图标使用 DSH favicon。
  • 新建会话页:新建/空白会话(无会话记录)页面在视口右上角显示悬浮「HUD面板」按钮(该页没有标题栏,故由本按钮提供入口;位置与真实会话标题栏按钮一致);该页每次进入都从收起状态开始,点击按钮后展开,面板位置与真实会话完全一致(固定贴页面右侧、宽 300px),输入框与页面内容整体左移约 300px 让位;展开时按钮会同步向左让位到面板左侧(不遮挡、不重叠),收起后回到右上角;该页只展示有数据源的模块(会话 / 用量 / 便笺 / 待办 / MCP,以及目标工作区确为 git 仓库时的 git)。进入真实会话后加载该会话自己的开合记忆,标题栏原按钮接管入口。

🖼️ 界面截图

各模块预览

「会话」模块

alt text

「上下文窗口」模块

alt text

「用量」模块

alt text

「git变更」模块

alt text

「子代理任务」模块

alt text

「任务」模块

alt text

「计划清单」模块

alt text

「MCP」模块

alt text

「便笺」模块

alt text

「待办」模块

alt text

其他界面

HUD 设置菜单

alt text

「git graph」界面

alt text

「git commit」界面

alt text

「计划清单」界面

alt text

⚙️ 兼容性

项目 版本/说明
DeepSeek Harness 0.1.1-rc.2(其余 rc 线未逐个验证;插件以可选服务 + 特征检测方式降级)
dsh-plan-mode 计划清单数据源:会话日志exit_plan_mode 工具调用(tool/call/tool/result/plan/mode 事件);上游审批语义变更时需复查状态推导
dsh-better-sidebar 0.16.1(通过公开服务 ctx.betterSidebar 监听面板状态;自动关闭依赖其折叠按钮 DOM 特征,失败时按「延迟打开」降级,不影响 HUD 独立使用)
平台 macOS 已验证;Windows/Linux 仅理论兼容(git 命令行为一致)
主题 跟随深浅主题(使用--dsw-alias-* 主题 token)
语言 简体中文 / English,跟随 DSH locale
数据作用域 「便笺」「待办」按工作区目录共享(localStorage);无 cwd 的会话降级为会话级隔离
面板开合状态 按会话 id 独立持久化(dsh-awesome-hud:open,值为 `{ "会话 id": "1"
面板开合状态 按会话 id 独立持久化(dsh-awesome-hud:open,值为 `{ "会话 id": "1"

🔧 技术栈

类别 内容
Host 侧 Node.js ESM、ctx.webServer 前缀路由、ctx.settingsctx.tools.guardctx.subagentsctx.compactionctx.subprocessctx.llm(AI 生成提交信息)
Client 侧 原生 JavaScript ModuleLoader bundle、React(react.createElement)、Cordis Slots(conversation.session.header.utilities / shell.overlay)、CSS 主题变量;不新增 slot,新建会话页入口复用 shell.overlay
数据来源 客户端会话投影(ctx.sessions.list / workspaces / modelDirectories)+ 自有 host API(git / MCP / 子代理 / 计划清单 / 压缩)+ dsh-account-usage 余额/用量路由(复用)
测试 node --test(git 解析、MCP 解析、状态推导、计划清单推导、设置收敛、信任围栏;位于 test/

⬆️ 升级说明(v0.11.x → v0.14.1)

v0.14.1:修复 git graph 右键菜单无法打开:菜单初始状态缺少「从此处创建分支」输入行字段时会被误判为「已展开」并读取输入内容,抛出 Cannot read properties of undefined (reading 'text') 使整个右键菜单渲染失败。现已显式初始化该字段,并对读取统一做 null / undefined 归一化保护。

v0.14.0:git graph 支持「从此处创建分支」:提交行右键菜单在「合并至当前分支」下方新增该项。点击后原位展开输入框与「取消」/「确认」图标按钮,确认即基于该提交执行 git checkout -b 并跳转到新分支;输入为空时确认按钮置灰,重复分支名与本地修改阻塞均给出提示且保留输入内容,Enter 不触发创建、Escape 取消输入,Git 操作进行中时该项置灰。

v0.13.4:便笺新增安全清空:便笺操作区在「添加至对话」左侧增加「清空」按钮。输入框为空时按钮置灰;有内容时首次点击进入红色二次确认态,确认按钮以红色描边和文字显示,二次点击后清空并同步到同工作区会话。点击确认按钮外区域、按 Escape 或等待 2 秒会取消确认,不改变内容;localStorage 写入失败时保留原内容并提示。

面板开合状态改为按会话独立:旧版本把单一开关状态存在 dsh-awesome-hud:open,升级后该值会迁移为「首个进入的会话」的状态,其余会话各自默认展开并各自记忆。

新建会话页新增悬浮入口:面板位置与真实会话一致(固定贴页面右侧);该页每次进入均为收起状态。

「便笺」「待办」由会话级改为工作区级。升级后首次在某工作区打开面板时,插件会做一次性的自动归并迁移:

  • 便笺:取该工作区内候选会话中 updatedAt 最新的一份;
  • 待办:按条目 id 去重合并(同 id 以先出现的为准),顺序保持稳定;
  • 迁移结果写入工作区键,并记录迁移标记(dsh-awesome-hud:workspace-migrated),同一工作区只迁移一次;
  • 旧的会话级键保留不删除,回滚到旧版本后仍可读到迁移前数据。

如介意旧键占用的空间,可在确认迁移完成后于浏览器控制台执行 localStorage.removeItem("dsh-awesome-hud:workspace-migrated"),再删除 dsh-awesome-hud:notes / dsh-awesome-hud:todos 中「非工作区路径」的旧键(删除后无法再回滚迁移)。

📄 许可证

MIT

上一个 Prev dshos-dock 下一个 Next dsh-allrouter