dshbase

插件目录 / Desktop / DSH-Launcher

DSH-Launcher

已验证 · 实测可装 tttnny

✓ 持续维护

查看 GitHub ↗ ← 返回插件目录

1Stars
0Forks
0未关闭 issue
Swift语言
2026-08-16最近推送
跨平台平台

功能简介

DSH启动器:macOS菜单栏应用,通过launchd管理服务

✅
我们的评价
可用 — 实测通过,早期项目

DSH启动器:macOS菜单栏应用,通过launchd管理服务 实测能干净安装、正常启动。早期项目,但功能可用。

「已验证」表示我们的自动化 CI 在干净 profile 里实际执行了 dsh plugin add 并启动成功——仅此而已。功能描述与版本兼容性均为作者声明。这不是安全审计,也不代表对第三方代码的背书。

README

DSH Launcher — DeepSeek Harness 菜单栏 App

English | 中文

macOS 菜单栏小应用:把 dsh web 服务交给 launchd 托管,不再需要开着终端。
App 在 → 服务就在:启动 App 自动拉起服务,退出 App 自动停止服务。
点击菜单栏鲸鱼图标(🐋 绿=运行中 / 橙=端口被外部占用 / 红=启动失败 / 灰=未运行,图标为官方 dsh 鲸鱼 logo 按状态着色)弹出控制菜单,可打开 Web UI、重启服务、设置登录自启、打开数据目录或退出。

绿色 = launchd 托管进程在运行 且 HTTP 3080 实际可访问,双条件缺一不亮绿。
服务进程继承你终端的 zsh 环境(PATH 等),agent 的 shell 工具直接可用 node/npm/pnpm/bun 等工具链。

DSH Launcher 菜单栏效果

需要先手动执行 npx @deepseek-ai/dsh web 吗?

不需要。 前提只是"机器上装有 Node.js":

  • 本 App 负责启动并托管 dsh web --port 3080(App 启动自动拉起,也可点"重启服务"手动拉起);已有 dsh(全局安装或 npx 缓存)直接复用。
  • 首次使用(本地无 dsh)时,App 不会自动下载,菜单栏显示"服务:dsh 未安装"并出现「安装 dsh」按钮。点击后弹出安装面板(实时显示下载日志),安装完成自动拉起服务,全程无需重启 App。
  • 如果你之前在终端手动跑过 dsh web,那个进程占着 3080 端口,App 会显示橙色"外部实例"——先在终端按 Ctrl+C 停掉,再让 App 接管(步骤见下文)。

安装(DMG 发行版)

从 Releases 下载 DSH-Launcher-*.dmg:

  1. 打开 DMG,把 DSH Launcher.app 拖进 Applications
  2. 首次打开(未签名/未公证,Gatekeeper 会拦截):Finder 里右键 DSH Launcher.app → 打开;或执行
    xattr -dr com.apple.quarantine /Applications/DSH\ Launcher.app
    

要求:Apple Silicon Mac(M1/M2/M3/M4)· macOS 13 或更高 · 装有 Node.js(fnm / nvm / Homebrew 均可)。

构建

./build.sh        # 产出 dist/DSH Launcher.app(ad-hoc 签名,无需开发者账号)

产物为可直接运行的 dist/DSH Launcher.app,拷贝到任意位置(如 ~/Applications/)即可使用。

菜单功能

菜单项 作用
状态行 服务是否运行(launchd 托管 / 外部实例占用 3080)
打开 Web UI (⌘O) 浏览器打开 http://127.0.0.1:3080
安装 dsh(仅未安装时显示) 首次使用点击安装,弹窗实时显示下载进度,装完自动启动服务
重启服务 永远可用:运行中=重启;启动失败/未运行=直接启动;端口被外部实例占用=弹窗说明占用者
更新 dsh / 检查更新 自动检测 npm 新版本(启动 10 秒后及每 6 小时各查一次,静默不弹窗):发现新版本时菜单变为「更新 dsh → vX」,点击一键升级(npm install -g @deepseek-ai/dsh@latest),完成后自动重启服务;无更新时点此手动检查
dsh 版本:vX 只读信息行,显示当前已安装的 dsh 版本(未安装时显示「未安装」)
登录时自动启动本 App 登录后自动出现菜单栏图标并拉起服务
打开数据目录 ~/.dsh
退出 退出 App 并停止服务(launchctl bootout,数据已落盘,下次打开 App 即恢复)

从终端实例切换(第一次使用)

现在端口 3080 可能还被终端里的 dsh web 占着(App 会显示橙色"外部实例")。
切换步骤:

  1. 在终端按 Ctrl+C 停掉旧的 dsh web(本次会话会离线,但历史记录都在 ~/.dsh/sessions/)
  2. 退出再打开 DSH Launcher(或点 重启服务),服务自动拉起
  3. 状态变绿后点 打开 Web UI,历史会话完整可续

技术要点

  • 环境继承:launchd 本身没有你的 shell 配置,所以每次启动服务前,App 会用
    zsh -lic 抓取你的完整环境写入 plist 的 EnvironmentVariables(PATH 剔除易失的
    fnm multishell 临时目录、node 目录置顶)。服务进程与 agent 的 shell 工具因此
    直接可用终端同款工具链(node/npm/pnpm/bun 等),改 .zshrc 后重启服务即生效。
  • 升级 dsh 无需改配置:每次启动服务都会重新解析 node 与最新 dsh 包路径并
    重写 ~/Library/LaunchAgents/com.dsh.web.plist。
  • 自动更新检测:App 启动 10 秒后及每 6 小时查询一次 npm registry
    (@deepseek-ai/dsh 的 latest 版本),与本地已装版本对比;发现新版本时菜单栏出现
    「更新 dsh → vX」并弹窗提示,一键执行 npm install -g @deepseek-ai/dsh@latest,
    完成后自动重启服务加载新版。更新日志:~/Library/Logs/DSHLauncher/dsh-update.log。
  • 日志:~/Library/Logs/DSHLauncher/dsh-web.log。

卸载

launchctl bootout gui/$(id -u)/com.dsh.web 2>/dev/null
launchctl bootout gui/$(id -u)/com.dsh.menubar 2>/dev/null
rm -f ~/Library/LaunchAgents/com.dsh.web.plist ~/Library/LaunchAgents/com.dsh.menubar.plist
rm -rf ~/Applications/DSH\ Launcher.app

安装

🧩 让 Agent 自动装(推荐)

装一次目录插件,之后本站所有插件都能让 DeepSeek Harness 自动找、自动装:

dsh plugin add dshbase-catalog

然后对 agent 说「帮我装 DSH-Launcher」,它会在目录里找到并自动安装。文档:dshbase-catalog · 已验证场景包。

该插件是 GitHub 源码(未发 npm)——直接从仓库装:

Web profile:

dsh plugin --profile web add github:tttnny/DSH-Launcher

Headless(CLI)profile:

dsh plugin --profile headless add github:tttnny/DSH-Launcher

实测报告

验证通过:从 GitHub 源码完成 L1 安装 + L2 加载 + L3 运行(dsh 0.1.0-rc.6)。

使用场景

把 dsh 跑成原生桌面应用——独立窗口、托盘图标、快捷键——而不是浏览器标签。

适合谁

想要已安装应用的感觉和系统集成(托盘、全局热键、开机自启)的人。

二次开发建议

原生壳是缝——加全局快捷键、通知、单实例锁或按 OS 定制的行为。

安全:尚未扫描——我们的每日静态扫描将很快覆盖它。

分享徽章

Desktop 里更多

浏览全部 7797 个插件 →