dsh-status-box:DSH 菜单栏状态与全局快速发任务

前言

在 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)。

典型用法

  1. 只看汇总:DSH 在前台时看顶部胶囊;最小化或切到其它 App 时看菜单栏/托盘小鲸鱼。
  2. 看明细:点菜单栏图标,按工作区查看 名称 · N 待 · N 运行 及最近会话(点会话条目会把 DSH 主窗口带到前台,README 说明目前无法 deep link 到具体会话)。
  3. 快速发任务:任意 App 前台按 ⌥⌘⇧D(或 Windows 对应热键)→ 输入需求 → Enter;需要旁观新会话时在设置里打开「发送后打开对话页」。
  4. 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
羽毛球分组比赛记分
小程序二维码

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

小夜