dsh-launcher
DSH 启动器 — 双击一键启动 DeepSeek Harness / Double-click macOS launcher
- Stars
- 0
- Language
- Shell
- Created
- Aug 19, 2026
- Updated
- Aug 19, 2026
Introduction
DSH 启动器 · DSH Launcher
双击即可启动 DeepSeek Harness Web UI(默认 http://127.0.0.1:3080)并自动打开浏览器。 One double-click boots the DeepSeek Harness Web UI (default http://127.0.0.1:3080) and opens your browser.
A minimal, transparent, script-only macOS launcher for DeepSeek Harness — no bundled runtime, no Electron/Tauri, nothing to compile. It wraps the dsh CLI that you install from npm (npm install -g @deepseek-ai/dsh), finds it for you, starts it in the background, waits for readiness, and opens the browser.
功能特点 / Features
| 🖱️ 双击启动 | 无终端窗口,后台运行,就绪后自动打开浏览器 / No terminal window; runs in background and auto-opens the browser |
| 🔀 双形态 | .app 面板模式(原生对话框)与 .command 终端菜单模式 / Panel mode (.app, native dialog) + terminal menu mode (.command) |
| 🆕 自检更新 | 联网对比 npm 最新版,确认后升级再启动;从不自动升级你已装的 dsh / Checks npm for new versions; upgrades only on your confirmation |
| 🧭 自适应 PATH | Finder 双击环境极简,自动补齐 node/dsh 路径(~/.npm-global、/usr/local、/opt/homebrew、~/.nvm)/ Repairs PATH for Finder-launched shells and auto-locates node/dsh |
| 🍎 Apple 芯片修复 | 规避 LaunchServices 用 Rosetta 运行脚本型 .app 导致的 incompatible architecture 崩溃,强制原生 arm64 / Forces native arm64 to avoid the Rosetta incompatible architecture crash on Apple Silicon |
| 📡 端口感知 | 端口已监听 → 视为已运行,只打开浏览器,绝不重复启动 / Detects an already-running instance and only opens the browser |
| 🧩 可配置 | DSH_LAUNCHER_PORT / _LOG / _WORKSPACE / _BIN / _INSTALL_VERSION 环境变量全覆盖 / Fully configurable via env vars |
| 🔒 透明 | 纯 shell 脚本,不联网、不上传任何数据;你的凭据只留在本机 ~/.dsh / Pure shell, no telemetry; credentials stay in ~/.dsh |
| 🆓 零依赖 | 只要求 macOS + Node.js 20+(dsh 由「安装 DSH.command」代装)/ Only needs macOS + Node.js 20+ |
与其他项目的关系 / Relationship to other projects
DSH 启动器 不与其他 DeepSeek Harness 客户端竞争,它是一个"轻到不能再轻"的启动包装器:
| DSH 启动器 (this repo) | deepseek-harness-desktop | dsh-desktop | |
|---|---|---|---|
| 形态 | 纯 shell 脚本 + 极简 .app 壳 | Tauri 原生桌面应用 (Rust + Web) | 桌面应用(自带 Node 运行时) |
| 运行时 | 使用你已装的 dsh CLI(npm 全局),不打包任何运行时 | 自带并管理本地 Harness 实例 | 自带运行时,无需自装 Node.js |
| 安装体积 | 约 200 KB(zip),无二进制依赖 | 原生应用体积 | 应用体积 |
| 跨平台 | macOS only | Windows / macOS / Linux | 桌面 |
| 插件市场 | 无(保持极简,用官方 dsh plugin 或 dsh-market) | 内置插件市场 | 内置插件市场 |
| 定位 | 给"已在命令行用 npm 装了 dsh"的用户一个双击入口 | 给不想自己装 Node.js 的用户一个完整客户端 | 给不想自己装 Node.js 的用户一个完整客户端 |
一句话:DSH 启动器 只做一件事——把你已经装好的 dsh 变成"双击就能用"。 它刻意不打包运行时、不写 GUI、不内置插件市场,因而几乎零学习成本、零风险、代码可完全审查。如果你想要一个自带全部运行时、跨平台的完整桌面客户端,请使用上面的桌面项目。
安装 / Install
接收者需要:macOS + Node.js 20+。
- 从 GitHub Releases 下载
DSH启动器-分发.zip,解压; - (可选但推荐)双击「安装 DSH.command」自动安装
@deepseek-ai/dsh(或手动npm install -g @deepseek-ai/dsh); - 双击「DSH 启动器.app」→ 选择"现有版本运行"→ 浏览器自动打开 Web UI;
- 首次使用请在页面里登录 / 配置你自己的 DeepSeek 账号凭据(只存在本机
~/.dsh)。
首次打开提示"无法验证开发者":右键 → 打开;或终端执行
xattr -dr com.apple.quarantine ~/Desktop/"DSH 启动器.app"。
使用说明 / Usage
| 文件 | 作用 |
|---|---|
DSH 启动器.app | 主启动器:双击启动,无终端窗口,后台运行,就绪后自动打开浏览器 |
DSH 启动器.command | 备用启动器:双击后在终端前台运行,日志直接可见,关窗口即停止 |
DSH 停止.command | 停止正在运行的 DSH Web UI(端口 3080) |
安装 DSH.command | 给新电脑用的:检查 Node.js 并安装 @deepseek-ai/dsh |
使用说明.txt | 给接收者看的图文说明(含 Gatekeeper 首次打开的处理) |
环境变量 / Env vars
| 变量 | 默认 | 说明 |
|---|---|---|
DSH_LAUNCHER_PORT | 3080 | dsh 监听端口 |
DSH_LAUNCHER_LOG | ~/.dsh/launcher.log | 运行日志路径(含 dsh 版本号) |
DSH_LAUNCHER_WORKSPACE | $HOME | dsh 的启动工作区根目录 |
DSH_LAUNCHER_BIN | $(command -v dsh) | 指定 dsh 可执行文件 |
DSH_INSTALL_VERSION | latest | 固定 dsh 安装/升级版本 |
DSH_LAUNCHER_AUTORUN | 0 | 1 时跳过选择面板直接运行 |
例:DSH_LAUNCHER_PORT=8080 open ~/Desktop/"DSH 启动器.app"
从源码构建 / Build from source
git clone https://github.com/<you>/dsh-launcher
cd dsh-launcher
# 1. 重新生成图标(纯 Python 标准库 → scripts/icon-1024.png)
python3 scripts/make-icon.py
# 2. 打包分发版 → dist/DSH启动器-分发.zip(含 .app、三个 .command、使用说明.txt)
bash scripts/package.sh
核心逻辑有桩测试(test/ 目录,stub 版 dsh/open/osascript)。
工作原理 / How it works
dsh-launcher.sh 是唯一的逻辑核心:
- 补全 PATH → 定位
node/dsh(Apple 芯片上强制arch -arm64); - 检测端口
3080:已在监听 → 只开浏览器; - 未监听 →
nohup dsh web --host 127.0.0.1 --port 3080后台启动; - 轮询就绪(90 秒上限)→ 打开浏览器 / 通知失败并指向日志。
安全 / Security
- 启动器只是包装脚本:不做任何联网、不上传数据,只负责启动本机已安装的 dsh 并打开本机浏览器;
- 你的 API 凭据仅保存在自己电脑的
~/.dsh,脚本从不读取或转发; - 全部代码可审查,总行数 < 400。
License
MIT