dsh-taskbar-status: See at a glance on the Windows taskbar whether an Agent is running or waiting

前言

在 DeepSeek Harness Desktop 里跑 Agent 时,turn 可能跑很久,也可能停在工具核准或 ask_user_question 上等你点选。窗口被其他应用盖住时,很难判断是还在执行、在等你,还是上一轮已经失败。常见做法是频繁把 DSH 拉到前台看界面,或盯着会话列表猜状态。

下面介绍社区插件 dsh-taskbar-status(维护者 Joker2377,分类:客户端)。它在 Windows 10/11 上把 DSH 桌面应用的工作列按钮变成进度条指示:执行中为灰色不定进度条,等待人工为琥珀色满条并闪烁,失败后为全红并保持,直到你按规则清除。插件是纯 host 端外挂,不修改 main.js,也不改 app.asar。

这是什么

dsh-taskbar-status 订阅 @deepseek-ai/dsh-session 在事件总线上发布的 session/event,把 turn、核准、提问与结束原因换算成四种工作列状态,再通过 koffi 调用 Win32 的 ITaskbarList3(SetProgressState / SetProgressValue,必要时 FlashWindowEx)画到 DSH 窗口对应的工作列按钮上。

非 Windows 平台会直接停用,不会加载原生 FFI。DeepSeek Harness Desktop 版本需满足 >=0.1.1-rc.2 <0.3.0(与 package.json 中 engines.dsh 一致)。当前插件版本为 0.6.0,许可证 MIT。

核心功能

四种状态

状态 工作列效果 进入条件 离开条件
执行中 灰色不定进度条(TBPF_INDETERMINATE) turn/start 该 session 的 turn 全部结束
等待人工 琥珀色满条(TBPF_PAUSED)+工作列闪烁 approval/asked,或 ask_user_question 的 tool/call 核准有结果、提问有回答,或 turn 结束
出错 全红(TBPF_ERROR) turn/end 且 reason.kind === 'error' 下一轮开始、或窗口离开前景后再回来
闲置 清除(TBPF_NOPROGRESS) 没有 turn、没有等待、没有未读错误 —

工具核准与 ask_user_question 提问都算「等你」,都会亮琥珀色;每出现一个新的阻塞,工作列按钮各闪一次。

多 session 与失败语义

同时跑多个 session 时,所有 session 共用同一个工作列按钮,显示优先级为:等待人工 > 执行中 > 出错 > 闲置。计数以 session id + turn 以及各自的 approval / question id 为 key,重复事件不会重复计数。

红灯是「闩锁」式的未读通知,不会自己消失;只有 reason.kind === 'error' 会变红,aborted、interrupted、blocked 按正常结束处理。所有 Win32 调用为 best-effort,失败只写 warn 日志,不影响 Agent 本身。

安装与启用

安装方式在 README 中写为:在 DSH 侧边栏打开 Plugins,粘贴仓库首页 URL 后按 Install。DSH 会用该链接执行 pnpm add,把 repo 拉进 profile,无需 git clone,也无需手改 profile。

  1. 复制仓库地址(须为 git 仓库首页,不要带 /tree/main 这类路径):
https://github.com/Joker2377/dsh-taskbar-status
  1. 在 Plugins 安装栏粘贴并按 Install。
  2. 若安装时列出待核准的构建脚本 koffi,核准后重试一次;原生文件也可随 @koromix/koffi-win32-x64 附带,不跑脚本也可能能加载。
  3. 重新加载 App(重开窗口或重启),工作列开始反映状态。

若要锁定某一版,可在 URL 后接 commit:https://github.com/Joker2377/dsh-taskbar-status#<commit>。

解除安装:在 Plugins 页移除该 bundle 后重新加载;停用瞬间插件会清掉进度条并释放 COM 对象。

装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。插件在 DSH host 进程权限下运行,会加载 koffi 与 Win32 FFI。

典型用法与行为说明

如何消掉红灯

  1. 开始下一轮 — 最直接的确认。
  2. 离开 DSH 窗口再回来 — 插件每秒比对前景窗口的拥有者 pid;出错时若你一直盯着 DSH 窗口,不会立刻清掉。
  3. 重载插件。

若你平时用浏览器看 Web GUI,DSH 桌面窗口可能永远拿不到前景,则只有第 1、3 条有效。可用 node scripts/probe.mjs --focus 查看当前前景窗属于哪个进程(需 Node.js >=22.19,仅跑脚本时需要)。

安装前试效果

取得源码后可在不走 DSH 插件系统的情况下验证 FFI:

node scripts/probe.mjs

脚本会找到窗口并依序演示灰 → 黄+闪烁 → 红 → 清除。另有 --detect、--compare、--focus 等参数,见 README「开发」一节。

执行中为什么是灰色

Windows 11 上 TBPF_INDETERMINATE 即为灰色跑动条,颜色不可由插件指定;带固定语义颜色的主要是 TBPF_PAUSED(黄)与 TBPF_ERROR(红)。这是系统设计,不是配置项遗漏。

适用场景与注意

适合:在 Windows 上长期使用 DSH Desktop,多任务时希望从工作列判断 Agent 是否在跑、是否在等你、是否上一轮失败,而不必一直把窗口置顶。

注意:

  • 只处理一个 DSH 窗口;多开桌面实例时,作用在优先找到的那一个。
  • 仅追踪直接的 ask_user_question 的 tool/call;经 tool/ptc-dispatch 间接调用不会亮琥珀色(该路径本身不阻塞)。
  • explorer.exe 重启或远程桌面重连后,工作列可能被重建;下一次状态变更时会比对 Shell_TrayWnd handle 并重画,中间没有心跳,灯不会主动恢复。
  • 窗口缩到系统匣且工作列按钮不可见时,需还原窗口后下一次更新才会重新套用。

疑难排解表(找不到窗口、一闪就消失、红灯不消等)见仓库 README。

结尾

dsh-taskbar-status 把 DSH session 事件映射到 Windows 工作列进度条,用灰、琥珀、红三种可见信号覆盖「执行中 / 等你 / 失败未读」三种常见痛点,适合把 DSH 放在后台的 Windows 用户。

SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;安装与使用以仓库 README 为准。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye