dsh-session-status-hub:在 DSH 里一眼看清所有 Session 的状态

前言

在 DeepSeek Harness(DSH)里同时开多个 Session 时,常见情况是:某个对话在后台跑完、失败或等你点批准,主界面仍停在你正在看的那条线程上,标题栏和任务栏不会替你汇总「还有哪些会话需要处理」。社区插件 dsh-session-status-hub(维护者 railgun20001)针对的就是这层「全局 Session 态势」:在顶端标题栏列出需要关注的会话,在 Windows 上发系统通知,并在任务栏 DSH 图标上叠加红 / 黄 / 绿状态点。分类属于客户端插件;当前 npm 版本为 0.2.1(MIT)。

这是什么

dsh-session-status-hub 是面向 DSH 的 Session 状态中心:用一条顶端 rail 展示运行中、待回答、待查看、报错的 Session;状态变化时可选 Windows toast;桌面端还可通过 ITaskbarList3.SetOverlayIcon 在任务栏按钮上显示优先级为红 > 黄 > 绿 的覆盖图标。Web UI 同样支持 rail 与通知相关能力;窗口置顶与任务栏圆点依赖 Windows 10/11。

插件依赖 DSH 提供的 sessionProjections、sessions、uiSession 等服务;宿主侧需 Node.js ≥ 20(由 DSH 自带),插件本身零 npm 依赖。

核心功能

顶端状态栏(rail)

rail 上的 chip 按「最需要你」排序展示:红(失败)> 黄(等待回答)> 绿(待查看)> 蓝(运行中);默认可视范围内优先显示最 urgent 的三条。单击 chip 可跳转到对应 Session。

各状态判定方式(与 README 一致):

状态 判定依据 rail 任务栏
failed hubTurnOutcome.outcome 为 error / interrupted 且未确认 报错 红(最高)
waiting pendingInteraction.kind 为 approval / plan-review / question 等待回答 黄
unread completionUnread === true,或插件记录的「后台完成未看」 待查看 绿
running sessionStatus.running 或 Session 行 running 运行中(蓝色脉冲) 无圆点

分类入桶顺序与展示顺序不同:waiting > failed > running > unread。运行中 deliberately 不点亮任务栏,避免常态把红 / 黄信号盖住。空白「新会话」行和 origin: subagent 的 Session 默认忽略。

内置 UI 只在「非主视图」的 Session 结束时设置 completionUnread;若你正在看的对话切到别的应用后在本窗口后台完成,原厂 UI 可能无任何标记。插件在窗口非前台时自行写入 localStorage(键前缀 dsh-session-status-hub/local-unread-v1),使绿点、任务栏标记与「待查看」chip 一致;回到该 Session 或点击通知 / chip 后清除。

Windows 通知

类别 触发 默认
需要你的回应 出现或变更 pendingInteraction 开
回合失败 新 outcome 为 error / interrupted 开
回合完成 outcome 为 completed 开
输出上限 outcome 为 max-tokens 开
手动停止 aborted 关

不对「思考中 / 工具流式输出」发通知。通知标题可带与 rail 一致色系的 emoji(colorMarkers);点击 toast 可重新打开 Session,并在桌面端可选将 DSH 窗口带到前台(raiseWindow)。

任务栏状态点

仅在 failed / waiting / unread 时显示红、黄、绿覆盖图标;窗口最小化或被其他应用挡住时仍可见,便于发现后台完成的回合。

安装与启用

方式一 — npm

npm install dsh-session-status-hub

方式二 — 本地目录

将仓库下载或克隆到任意目录后,在 DSH → Plugins → 添加本地插件 中选择该目录;若 Session 暴露 plugin_manager 工具,也可对目录执行 install_bundle。

安装后:宿主半部 index.js 随 profile 热加载,无需重启 DSH;客户端半部 lib/client.js 需要页面刷新(如 Ctrl+R)。卸载会自动移除任务栏圆点。

插件内部 id、路由前缀与 localStorage 键均为 dsh-session-status-hub;从旧版 0.1.x 升级时会迁移存储键。

配置与调试

配置保存在浏览器 localStorage 的 dsh-session-status-hub/config-v1,默认偏「少打扰」。常用项包括:

  • enabled:总开关(默认 true)
  • onComplete / onFailure / onAnswer / onMaxTokens / onStopped:各类通知开关(停止默认关)
  • silenceCurrentWhenFocused / silenceAllWhenFocused / requireVisibleForFocus:焦点与可见性下的静音策略
  • includeSubagents:是否包含 subagent Session(默认 false)
  • raiseWindow、sound、colorMarkers 等

注意:enabled 与 onComplete 等只静音通知;未读态与任务栏标记表示「已完成但未看」,不受这些开关当作「可回放历史通知」处理。

在 DSH DevTools 控制台可调用:

__DSH_SESSION_HUB__.getConfig()
__DSH_SESSION_HUB__.setConfig({ silenceAllWhenFocused: true })
__DSH_SESSION_HUB__.inspect()
__DSH_SESSION_HUB__.getRows()
__DSH_SESSION_HUB__.getTaskbarState()

仓库内 npm run check 用于校验构建产物与测试(README 称 138 个用例)。

适用场景与注意

适合:多 Session 并行、长时间后台跑 agent、需要在 Windows 任务栏或 toast 里捕获「失败 / 等你批准 / 后台跑完」的 DSH 桌面或 Web 用户。

使用前请自行阅读 GitHub 仓库 源码与 MIT 许可证;插件在当前 DSH 进程权限下运行,安装 npm 包或本地包前确认来源可信。任务栏圆点与点击通知置顶窗口仅 Windows;rail 与通知逻辑在 Web 也可用。

更细的状态机、通知边界与 Windows toast tag 限制等,见仓库 README.zh-CN.md。

结尾

dsh-session-status-hub 补的是 DSH 原厂 UI 未提供的「所有 Session 此刻怎样」视图:rail 汇总、可选 Windows 通知、任务栏红黄绿点,并单独处理「当前正在看的 Session 在后台完成」的未读态。

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

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

Xiaoye