Back to home@386842536

dsh-launcher

DSH 启动器 — 双击一键启动 DeepSeek Harness / Double-click macOS launcher

Stars
0
Language
Shell
Created
Aug 19, 2026
Updated
Aug 19, 2026
GitHub repo

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
🧭 自适应 PATHFinder 双击环境极简,自动补齐 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-desktopdsh-desktop
形态纯 shell 脚本 + 极简 .app 壳Tauri 原生桌面应用 (Rust + Web)桌面应用(自带 Node 运行时)
运行时使用你已装的 dsh CLI(npm 全局),不打包任何运行时自带并管理本地 Harness 实例自带运行时,无需自装 Node.js
安装体积约 200 KB(zip),无二进制依赖原生应用体积应用体积
跨平台macOS onlyWindows / macOS / Linux桌面
插件市场无(保持极简,用官方 dsh plugin 或 dsh-market)内置插件市场内置插件市场
定位给"已在命令行用 npm 装了 dsh"的用户一个双击入口给不想自己装 Node.js 的用户一个完整客户端给不想自己装 Node.js 的用户一个完整客户端

一句话:DSH 启动器 只做一件事——把你已经装好的 dsh 变成"双击就能用"。 它刻意不打包运行时、不写 GUI、不内置插件市场,因而几乎零学习成本、零风险、代码可完全审查。如果你想要一个自带全部运行时、跨平台的完整桌面客户端,请使用上面的桌面项目。


安装 / Install

接收者需要:macOS + Node.js 20+

  1. 从 GitHub Releases 下载 DSH启动器-分发.zip,解压;
  2. (可选但推荐)双击「安装 DSH.command」自动安装 @deepseek-ai/dsh(或手动 npm install -g @deepseek-ai/dsh);
  3. 双击「DSH 启动器.app」→ 选择"现有版本运行"→ 浏览器自动打开 Web UI;
  4. 首次使用请在页面里登录 / 配置你自己的 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_PORT3080dsh 监听端口
DSH_LAUNCHER_LOG~/.dsh/launcher.log运行日志路径(含 dsh 版本号)
DSH_LAUNCHER_WORKSPACE$HOMEdsh 的启动工作区根目录
DSH_LAUNCHER_BIN$(command -v dsh)指定 dsh 可执行文件
DSH_INSTALL_VERSIONlatest固定 dsh 安装/升级版本
DSH_LAUNCHER_AUTORUN01 时跳过选择面板直接运行

例: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 是唯一的逻辑核心:

  1. 补全 PATH → 定位 node / dsh(Apple 芯片上强制 arch -arm64);
  2. 检测端口 3080:已在监听 → 只开浏览器;
  3. 未监听 → nohup dsh web --host 127.0.0.1 --port 3080 后台启动;
  4. 轮询就绪(90 秒上限)→ 打开浏览器 / 通知失败并指向日志。

安全 / Security

  • 启动器只是包装脚本:不做任何联网、不上传数据,只负责启动本机已安装的 dsh 并打开本机浏览器;
  • 你的 API 凭据仅保存在自己电脑的 ~/.dsh,脚本从不读取或转发;
  • 全部代码可审查,总行数 < 400。

License

MIT