前言¶
在用 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 写明主要测过 DSH0.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(系统自带)。
架构与数据目录¶
- Node 侧(
lib/index.js):监听session/event,折叠成状态,节流 120ms 写入state.json;启动时用powershell.exe拉起 WPF;DSH 退出时结束子进程。 - 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 即可,无需额外配置项。日常使用流程是:
- 让 DSH 在后台跑会话,浮层始终在最前但不抢焦点。
- 看「球 / 条」判断是否在思考、回话、跑工具或等你批准;条上的时间为本轮累计。
- 点
▸查看最后一句话、工具和细状态;拖曳调整位置(写入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