DeepSeek Harness Hub
← 返回列表

程序坞启动器YunlongL-byte/dsh-launcher

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

点击程序坞图标,自动启动服务并打开浏览器

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/22 · 已提供中文文档

macOS 程序坞一键启动 DeepSeek Harness (DSH) 的快捷启动器 / One-click DSH launcher for macOS Dock

综合分
28.2
GitHub 分
28.2
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add YunlongL-byte/dsh-launcher
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

DSH Launcher

在 macOS 程序坞 (Dock) 中一键启动 DeepSeek Harness (DSH) 的快捷启动器。

点击程序坞图标即可: 检测 DSH 服务 → 未运行则后台启动 dsh web → 等就绪后自动打开浏览器。已在运行时则直接打开浏览器, 不会重复启动服务。

特性

- 🖱️ 程序坞一键启动: 原生 .app 包, 拖入 Dock 常驻, 点击即用
- 🌐 全局启动: 安装即注册 macOS LaunchAgent —— 登录自启、崩溃自动重启, DSH 后台常驻随时可用
- ⚡ 幂等: 服务已在运行就直接开浏览器, 不重复拉起
- 🔍 Finder 环境兼容: 显式定位 dsh / node(npx 缓存、Homebrew、nvm 等路径自动探测)
- 🛑 安全停止: 通过 PID 文件只停自己拉起的实例, 不误伤手动启动的进程
- 📋 日志可查: ~/Library/Logs/DSH/dsh.log(服务日志: dsh-service.log)
- 📦 一键安装/卸载: 支持 git clone 或 curl | bash
- 🤖 CI 自动打包: 打 tag 即自动构建 .app 并发布到 GitHub Release

快速开始

方式一: 远程一键安装

curl -fsSL https://raw.githubusercontent.com/YunlongL-byte/dsh-launcher/main/install.sh | bash

方式二: 克隆后安装

git clone https://github.com/YunlongL-byte/dsh-launcher.git
cd dsh-launcher
./install.sh

方式三: 下载 Release

到 Releases 下载 DSH-Launcher-macos.zip, 解压后运行其中的 install.sh(或直接把 DSH Launcher.app 拖进 ~/Applications)。

使用

1. 打开 Finder → ~/Applications, 把 DSH Launcher 拖到程序坞
2. 点击程序坞图标即可启动 DSH 并打开浏览器
3. 停止服务: 双击 DSH Stop.command, 或终端执行:

"$HOME/Applications/DSH Launcher.app/Contents/MacOS/DSH" --stop

其他入口:

| 入口 | 作用 |
|---|---|
| DSH.command | 双击在终端里启动 |
| DSH Stop.command | 双击停止 |
| DSH Launcher.app ... --status | 打印运行状态(含全局服务状态) |
| DSH Launcher.app ... --install-service | 安装全局服务(登录自启 + 崩溃自动重启) |
| DSH Launcher.app ... --uninstall-service | 卸载全局服务 |
| DSH Launcher.app ... --start-service | 重新启用已安装的服务 |

全局启动 (登录自启)

install.sh 默认会把 DSH 注册为 macOS LaunchAgent(~/Library/LaunchAgents/local.dsh.launcher.plist), 实现全局启动:

- 🖥️ 登录自启: 开机登录后自动在后台运行 dsh web, 无需手动点击
- 🔄 崩溃自动重启: 服务异常退出后 launchd 自动拉起(端口被其他实例占用时平稳退出, 不会重启循环)
- 🌍 随时可用: 浏览器直接访问 http://127.0.0.1:3080, 或点程序坞图标打开

服务管理(终端执行):

L="$HOME/Applications/DSH Launcher.app/Contents/MacOS/DSH"
"$L" --install-service     # 安装并启用全局服务(安装时默认执行)
"$L" --start-service       # 重新启用(例如 --stop 之后)
"$L" --stop                # 停止: 停用服务 + 停止一次性实例
"$L" --uninstall-service   # 彻底移除服务(下次登录不再自启)
"$L" --status              # 查看服务与实例状态

说明: --stop 在服务模式下会停用服务(本次生效), 但保留 plist, 下次登录仍会自启; 要彻底关闭自启用 --uninstall-service。

跳过全局服务安装: DSH_SKIP_SERVICE=1 ./install.sh。

工作原理

点击启动
├─ 探测 http://127.0.0.1:3080 是否已运行
│    ├─ 是 → open 打开浏览器, 结束
│    └─ 否 → 已装全局服务? → launchctl kickstart 拉起服务
│           └─ 未装服务    → nohup 后台一次性启动: node  web
│           → 轮询等待服务就绪 (最多 90s)
│           → open 打开浏览器

开机登录 → launchd 加载 LaunchAgent → dsh-launch.sh --serve
├─ 端口已被占用 → 平稳退出 (不冲突, 不重启循环)
└─ 端口空闲     → 前台运行 node  web (崩溃时 launchd 自动重启)

- PID 管理: 一次性启动时把进程 PID 写入 ~/Library/Logs/DSH/dsh.pid; 全局服务模式由 launchd 管理
- 可执行文件定位:PATH → ~/.npm/_npx/*/node_modules/.bin/dsh → Homebrew → nvm
- 端口/命令可调:通过环境变量 DSH_URL、DSH_OPEN、DSH_LOG_DIR 覆盖默认值
- 全局服务:LaunchAgent local.dsh.launcher 指向 dsh-launch.sh --serve,RunAtLoad + KeepAlive(SuccessfulExit=false) 实现自启与崩溃重启

目录结构

dsh-launcher/
├── install.sh               # 一键安装 (支持 curl | bash, 默认注册全局服务)
├── uninstall.sh             # 卸载 (含移除全局服务)
├── src/
│   └── dsh-launch.sh        # 核心脚本: 启动/停止/状态/全局服务 (App 的实质内容)
├── scripts/
│   ├── build-app.sh         # 构建 .app + .command 到 dist/ (本地与 CI 共用)
│   └── make-icon.py         # 生成应用图标 (python3 + pillow)
├── assets/
│   └── dsh-icon.png         # 图标源图
└── .github/workflows/
└── release.yml          # 打 tag 自动构建并发布 Release

开发

构建到 dist/ (需要 python3 + pillow; 图标已提交, 无需重绘)
bash scripts/build-app.sh

重新生成图标
python3 scripts/make-icon.py assets/dsh-icon.png

发布新版本

git tag v1.0.0
git push origin v1.0.0

GitHub Actions 会在 macOS runner 上自动构建并发布 DSH-Launcher-macos.zip 到 Release。

常见问题 (FAQ)

Q: 启动报 "找不到 dsh 命令"?
先手动执行一次 npx -y @deepseek-ai/dsh 确认 DSH 可用, 再点击启动器。

Q: 想用别的端口或浏览器?
DSH_URL=http://127.0.0.1:9999 DSH_OPEN='open -a "Google Chrome"' "$HOME/Applications/DSH Launcher.app/Contents/MacOS/DSH"

Q: 服务启动失败?
查看日志: cat ~/Library/Logs/DSH/dsh.log, 全局服务模式看 dsh-service.log 与 dsh-service.error.log。

Q: 如何临时停用全局自启(之后还能恢复)?
"$HOME/Applications/DSH Launcher.app/Contents/MacOS/DSH" --stop
恢复:
"$HOME/Applications/DSH Launcher.app/Contents/MacOS/DSH" --start-service

Q: 如何彻底关闭登录自启?
"$HOME/Applications/DSH Launcher.app/Contents/MacOS/DSH" --uninstall-service

Q: 如何完全卸载?
./uninstall.sh
如需连日志一起删除:
rm -rf ~/Library/Logs/DSH

许可

MIT © YunlongL-byte

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群