前言¶
在 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 在后台完成」的未读态。