dsh-glance:DSH 桌面端的置顶状态条

前言

在用 DeepSeek Harness(DSH)桌面端做智能体开发时,主会话窗口经常被 IDE、终端或浏览器盖住。这时要判断模型是在思考、在跑工具还是在等你点批准,多半只能听通知音或切回 DSH 看界面,打断成本高。

dsh-glance 是 maintainer zhengbo2 发布的 客户端 类 DSH 插件:在 Windows 上提供一个始终置顶、不抢焦点的小浮层。空闲时是一颗 42px 的呼吸白球;有任务时收成一条「药丸」条,显示当前状态与计时;需要时再展开详情。下面介绍它的定位、能力、安装方式和注意事项。

这是什么

  • 名称:dsh-glance(npm 包名,目录页:skillhub.cn/plugins/zhengbo2/dsh-glance)
  • 源码:github.com/zhengbo2/dsh-glance
  • 版本(package.json):0.1.0,许可证 MIT
  • 一句话:A tiny always-on-top strip for DeepSeek Harness desktop — idle as one ball, working as a live pill.
  • 引擎要求:engines.dsh 为 >=0.2.1-rc.2 <0.3.0-0;README 写明主要测过 DSH 0.2.2-rc.1

插件不改造 DSH 主界面,而是在系统层叠一个透明 WPF 小窗,通过监听当前「正在干活」的会话事件,把状态写入本地文件,由浮层定时刷新显示。

核心功能

外观与交互

README 中的行为可以概括为:

空闲        42px 白球,中间一个灰点,轻轻呼吸
干活        长成一小条:  ● 在跑 pwsh · 0:42
点 ▸        展开详情:最后一句话 + 工具 + 状态(内容多可上下滚动)
拖          拖到哪记到哪,下次打开还在那
右键        透明度 / 始终置顶 / 隐藏

状态含义

状态 意思是
空闲 没在干活
思考中 模型在算,还没出字
在回话 字已经开始出来了
在跑 <工具> 正在跑某个工具(会直接写工具名)
等你批准 有一件事要你点一下
压缩上下文中 上下文正在被压缩
完成 这一轮结束(3.5 秒后回到空闲)
出错 工具报错或模型重试

计时按「这一趟」累计:只有回到空闲才归零;中间状态切换不重置。只跟踪当前正在干活的那一个会话,其它会话的活动不会驱动这条浮层。

为什么用 WPF

当前 DSH 桌面端 window.dshDesktop 暴露的能力里没有 openWindow、置顶窗或透明窗相关 API(仅有 browser / files / fileDrag / deviceInfo / closeWindow / shortcuts / updates / onboarding / boot / locale 等)。要在不附带 Electron 运行时(百兆级)的前提下做透明、圆角、缓动置顶条,本插件选择 WPF(系统自带)。

架构与数据目录

  1. Node 侧(lib/index.js):监听 session/event,折叠成状态,节流 120ms 写入 state.json;启动时用 powershell.exe 拉起 WPF;DSH 退出时结束子进程。
  2. WPF 侧(runtime/glance.ps1,需 PowerShell -STA):每 120ms 读 state.json,切换球 / 条 / 详情;透明、无边框、Topmost,并用 WS_EX_NOACTIVATE 避免抢焦点。

实际拉起命令(README 原文):

powershell.exe -STA -NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File runtime/glance.ps1

运行数据落在用户目录 ~/.dsh/glance/:

state.json    当前状态(插件写,窗口读)
ui.json       窗口位置 / 透明度 / 置顶(右键菜单写)
ui.log        启动与异常的记录

单实例靠命名互斥量 Local\dsh-glance-ui;重复启动会自行退出。

安装与启用

插件以当前 DSH 进程权限运行,安装前建议浏览源码与 MIT 许可证,确认行为符合你的环境策略。

推荐:插件命令

dsh plugin --profile desktop add dsh-glance

或本地目录安装(README 原文):

pnpm add "file:<你的路径>/dsh-glance" --dir %USERPROFILE%\.dsh\profiles\desktop
# 然后把 "dsh-glance" 写进该目录 package.json 的 dsh.profile.bundles

装完后重启 DSH 使 bundle 生效。

卸载:

dsh plugin --profile desktop remove dsh-glance

卸载并退出 DSH 时,浮层会一并结束,README 说明不会留下孤儿窗口。

典型用法

安装并重启后,保持 DSH 桌面 profile 中有该 bundle 即可,无需额外配置项。日常使用流程是:

  1. 让 DSH 在后台跑会话,浮层始终在最前但不抢焦点。
  2. 看「球 / 条」判断是否在思考、回话、跑工具或等你批准;条上的时间为本轮累计。
  3. 点 ▸ 查看最后一句话、工具和细状态;拖曳调整位置(写入 ui.json);右键调透明度、置顶或隐藏。

若你改插件源码做二次开发,README 给出了同步到 node_modules 与单独重开窗口的方式(launch_glance.vbs 用于避免闪控制台);修改 glance.ps1 须保存为 UTF-8 带 BOM + CRLF,否则 Windows PowerShell 5.1 可能报编码相关错误。

适用场景与注意

适合谁

  • 主要在 Windows 上使用 DSH 桌面端,希望主窗口被盖住时仍能一眼看到智能体状态。
  • 需要区分「思考 / 回话 / 跑某工具 / 等你批准」等细粒度状态,而不是只看任务栏图标。

务必知道的限制(README「已知限制」)

  • 仅 Windows:界面依赖 WPF。
  • 分层透明窗用系统 CopyFromScreen 截不到(只能抓到壁纸);OBS、Xbox Game Bar 等走 DWM 的录制方式可以录到。
  • 窗口位置曾带小数会糊;读写位置时已取整并做像素对齐。
  • README「还没做」列出了后续可能的动效(呼吸环、完成闪绿等),当前版本未包含。

DSH 生态主张「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。本介绍事实均来自上述仓库 README 与 package.json。

结语

dsh-glance 用一根置顶小条补上桌面端「看不见会话时在干什么」的空档:空闲一颗球,忙碌一条 pill,必要时再展开详情。若你符合 Windows + DSH 桌面版的版本范围,可用官方插件命令安装后重启验证。

  • 目录页:https://www.skillhub.cn/plugins/zhengbo2/dsh-glance
  • GitHub:https://github.com/zhengbo2/dsh-glance
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye