前言¶
在 DeepSeek Harness(DSH)里,想看清「哪些会话在跑、哪个在等我」,往往要打开面板、逐个工作区点进去;要发新任务,又要走一遍「找会话 → 输入」。窗口一直留在 DSH 里时还算顺手,一旦切到别的应用,这两件事都会被打断。
dsh-status-box(仓库内亦称「状态盒」)把「看全局状态」和「从任意前台 App 丢任务进工作区」拆到系统菜单栏/任务栏和全局热键上,由 DSH 插件客户端与原生小助手通过本机回环协作。下面介绍它是什么、能做什么、如何安装与日常使用。
这是什么¶
dsh-status-box 是面向 DSH 桌面端的客户端类插件,维护者为 GitHub 用户 Nuke0519(仓库 Nuke0519/dsh-status-box)。一句话定位:macOS 菜单栏 / Windows 任务栏常驻小鲸鱼显示各工作区运行与等待数量,全局热键弹出 Spotlight 风格输入框,在选定工作区新建会话并发送任务,无需切回 DSH 主窗口。
插件在 DSH 窗口顶部保留「状态胶囊」;macOS 与 Windows 另需安装对应的原生小助手(菜单栏或托盘 + 本地 HTTP 服务)。协议两端共用,插件侧不改平台分支。Linux 上目前仅有窗口顶部胶囊,无菜单栏小助手。
社区目录页:skillhub.cn 上的 dsh-status-box。DSH 生态以「一切皆插件」为方向;SkillHub 等为独立社区索引,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
看状态¶
- DSH 窗口内:工作栏最左侧胶囊显示汇总,例如
● 运行中、◉ 待处理,点击可召唤与热键相同的原生输入窗。 - macOS 菜单栏:DeepSeek 小鲸鱼 + 数字,颜色随状态变化;点开展开按工作区分组的明细与最近会话列表。
- Windows:任务栏托盘同样展示小鲸鱼与计数(资料称 WinForms/.NET 8 实现;托盘与热键 UI 在 Windows 实机验证尚待社区反馈,协议层冒烟测试已通过)。
状态含义(与 README 一致):
◉橙色:有会话在等你(审批 / 提问 / 计划确认)●绿色:有会话正在运行✓蓝色:有会话刚完成(未读)○灰色:空闲,或 DSH 已退出约 90 秒无心跳
发任务¶
全局热键打开单输入框,输入后 Enter 即在目标工作区发起真实会话:
| 平台 | 热键 | 备用 |
|---|---|---|
| macOS | ⌥⌘⇧D |
⌥⌘⇧K(部分 Mac 上 D 被其它 App 全局钩子占用时) |
| Windows 10/11 | Ctrl+Alt+Shift+D |
— |
行为要点:
- 再按一次热键可收起(toggle);窗口出现在鼠标所在屏幕居中偏上。
- Tab 切换目标工作区,会记住上次选择。
- DSH 未启动时任务写入本地队列,启动后约 2 秒内自动发出。
- 发送失败时输入窗会重新弹出,保留原文并红字说明原因,可回车重试。
- macOS 使用 Carbon 全局热键,README 写明不需要辅助功能授权。
设置¶
DSH → 设置 → 状态盒:开关「发送后打开对话页」。
- 开:发完后将 DSH 拉到前台并打开新会话。
- 关(默认):任务照常开跑,不抢当前窗口。
配置经小助手写入 ~/Library/Application Support/DSHStatusBox/config.json(字段含 openOnSend)。配置页需能连上本机 127.0.0.1:59421 上的小助手服务。
架构(便于排错)¶
插件 client.js 聚合工作区与会话状态,POST 到 http://127.0.0.1:59421/status;小助手轮询 GET /command 取队列任务,客户端用 DSH 槽位在目标工作区 session.prompt 发送后 POST /command/ack。仅本机回环,不上传、不读 DSH 数据库。带 Origin 的请求限制为 dsh-app:// 或本机 localhost,其它来源 403。
安装与启用¶
前置:macOS 11+、Xcode 命令行工具(xcode-select --install)、已安装 DSH 桌面端;Windows 侧见仓库 windows/README.md。
插件以 bundle 形式装进当前 DSH profile(插件市场 / 插件管理器选择本仓库目录,或使用 dsh 的 install_bundle 指向仓库根目录)。不要凭仓库名自行拼接未在文档出现的 dsh plugin add 命令。
macOS:菜单栏小助手¶
在仓库 menubar 目录执行安装脚本(编译、注册登录项一步完成):
cd menubar
./install.sh
装完菜单栏出现小鲸鱼,⌥⌘⇧D 即可用;登录后自动启动。卸载:
cd menubar
./uninstall.sh
常见路径:
- 应用:
~/Library/Application Support/DSHStatusBox/DSHStatusBox.app - 登录项:
~/Library/LaunchAgents/com.dsh.statusbox.menubar.plist - 队列与状态:
~/Library/Application Support/DSHStatusBox/{queue.json,status.json,config.json}
Windows¶
# 使用 Releases 中的 DSHStatusBox-win-x64.zip 解压后
pwsh -File install.ps1
# 或本地构建(需 .NET 8 SDK)
pwsh -File windows\build.ps1
pwsh -File windows\dist\win-x64\install.ps1
装完后任务栏右下角出现小鲸鱼,Ctrl+Alt+Shift+D 打开输入窗。
权限说明:插件在 DSH 进程内运行,小助手以本机用户权限监听热键与本地端口。安装前请自行查看仓库源码与许可证(package.json 标明 MIT)。
典型用法¶
- 只看汇总:DSH 在前台时看顶部胶囊;最小化或切到其它 App 时看菜单栏/托盘小鲸鱼。
- 看明细:点菜单栏图标,按工作区查看
名称 · N 待 · N 运行及最近会话(点会话条目会把 DSH 主窗口带到前台,README 说明目前无法 deep link 到具体会话)。 - 快速发任务:任意 App 前台按
⌥⌘⇧D(或 Windows 对应热键)→ 输入需求 → Enter;需要旁观新会话时在设置里打开「发送后打开对话页」。 - DSH 内等价操作:DSH 内
⌘⇧K或点顶部胶囊,与召唤原生输入窗相同。
DSH 完全关闭时,悬浮窗会提示 DSH 未运行;任务仍可按上述方式入队。
适用场景与注意¶
适合:经常在多个 App 与 DSH 之间切换、需要一眼看到全工作区等待/运行数、希望用全局热键把想法立刻丢进某个工作区新会话的桌面用户。
注意:
- DSH 仍开着时,菜单栏会保持最后已知状态,不会自动变灰;仅 DSH 退出约 90 秒后显示灰色空闲。
- macOS 全屏空间下,其它 App 窗口无法盖在全屏 App 之上,热键召唤的悬浮窗可能不出现;可先退出全屏或切到普通桌面空间。
- 设置页显示未连上小助手时,多为浏览器对本机
127.0.0.1:59421的访问策略问题;升级小助手后重开设置页,或点「重试」。热键无响应时确认com.dsh.statusbox.menubar登录项在运行且已通过menubar/install.sh打包进.app。 - 修改
menubar/main.m后需重跑menubar/install.sh;仅改client.js时客户端可热更新。开发期偶发「召唤被旧实例吃掉」,重启 DSH 即可。
仓库提供 ./scripts/verify.sh(macOS/Linux)与 node --test tests/*.cjs 等自测入口,无 npm 依赖。
结尾¶
dsh-status-box 把 DSH 的全局会话状态搬到菜单栏/托盘,并用一条全局热键完成跨工作区的快速发任务,本地队列保证 DSH 晚开也能投递。若你要在桌面工作流里少切一次 DSH 窗口,可从社区目录或 GitHub 仓库按文档安装 bundle 与原生小助手。
- 目录页:https://www.skillhub.cn/plugins/Nuke0519/dsh-status-box
- GitHub:https://github.com/Nuke0519/dsh-status-box