dsh-desktop
开发工具 活跃维护

dsh-desktop

Plocr/dsh-desktop

Electron构建,内嵌harness运行时,无需安装Node环境即可离线运行,仅保留桌面原生交互能力,通过bridge插件与运行时通信,开箱即用体验流畅。

1
Stars 标星
0
Forks 分支
1
Watchers 关注
0
Open Issues
TypeScript
主要语言
MIT
开源协议
711 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:Plocr/dsh-desktop
git clone https://github.com/Plocr/dsh-desktop.git
git clone git@github.com:Plocr/dsh-desktop.git
README.md master

DSH Desktop

DeepSeek Harness 为基底的桌面工作台:Electron 原生壳 + 内嵌 harness 运行时,离线、免安装 Node、免全局 dsh 即可使用。

设计架构

壳只保留桌面原生能力(窗口、托盘、启动 harness、加载 Web UI、深链、全局快捷键、自动更新、系统通知/任务栏徽标),加载官方 Web UI(会话、工作区、插件、设置)。壳与 harness 之间仅通过一个桥接插件通信——不注入任何 UI、不持有任何面板代码。

Electron 壳 ──spawn──▶ dsh --profile desktop --patch <overlay> --port 0
    │  ▲                     │  ▲
    │  │ stdout 行解析        │  │ dsh-desktop-bridge 插件(通知/徽标/深链/工作区注册)
    │  └── dsh web: http://127.0.0.1:<port>
    └── bridge WS ───────────┘
  • 🪟 原生窗口加载官方 Web UI(--port 0,无端口冲突)
  • 🧩 专用 desktop profile($DSH_HOME/profiles/desktop),会话与 Web/CLI 共享
  • 🔌 dsh-desktop-bridge 桥接插件:后台任务/审批事件 → 系统通知与任务栏徽标
  • ⌨️ 全局快捷键唤出(默认 Ctrl+Shift+Space
  • 🔗 dsh:// 深链:dsh://(聚焦)、dsh://new(新建会话)、dsh://session/<id>(打开会话)
  • ⬆️ 自动更新、🗂️ 托盘常驻、🛡️ 崩溃自愈、📦 自包含打包

功能截图

加载页面 主界面
加载页面 主界面
托盘菜单
托盘菜单

安装

  1. Releases 下载最新安装包(Windows:DSH.Desktop-x.x.x-setup.exe
  2. 双击运行,按向导完成安装(可选择安装目录)
  3. 首次启动会自动解压内置运行时(约 40 秒,二次启动免解压),并创建桌面 profile

安装包自包含:内置便携 Node 与 dsh 运行时,无需预先安装 Node.js 或全局 dsh。

使用

  • 开始会话:启动后在窗口内选择工作区,即可开始对话
  • 全局唤出:任意界面按 Ctrl+Shift+Space 呼出/隐藏窗口
  • 深链:浏览器或其他应用点击 dsh:// 链接可唤起并打开对应会话
  • 托盘:关闭窗口默认最小化到托盘;右键托盘图标可切换工作区、重启 Harness、查看日志、检查更新、开机自启、开关通知
  • 会话共享:桌面版默认使用独立数据目录%LOCALAPPDATA%/DSH Desktop/dsh-home),并与 Web/CLI 并存互不冲突;首次启动会自动把旧的 ~/.dsh 迁移过去,原数据保留。
  • 局域网访问(托盘 → 设置 → 局域网访问):不改 harness 监听(本机 127.0.0.1 始终可用),由壳起一个局域网反向代理(绑 0.0.0.0:<随机端口>,转发到本机 harness)并显示「局域网地址」。手机/其它设备首次访问该地址时,电脑会弹授权框(按设备 IP 记一次,本次运行有效):允许才放行,拒绝返回 403。⚠️ 允许后该设备可在浏览器中操作本工作台(可读文件/执行命令),建议仅在可信网络使用,用毕关闭。

更新机制

两条独立链路,互不干扰。(术语:框架 = DSH Desktop 本体;官方 Harness = DeepSeek Harness @deepseek-ai/dsh)

  1. 框架(DSH Desktop 自身) —— src/main/updater.ts

    • 源:GitHub Releases(Plocr/dsh-desktop
    • 本地下载不跳浏览器:electron-updater autoDownload,下载进度走任务栏进度条,退出时自动安装
    • 通知内附两个下载地址:GitHub 官方地址 + 免费加速代理地址(默认 ghfast.top,可用环境变量 DSH_DESKTOP_GH_PROXY 覆盖)
  2. 官方 Harness(DeepSeek Harness 本体) —— src/main/harnessCheck.ts + harnessUpdate.ts

    • 源:npm registry(官方失败回退 npmmirror 镜像;包很小,仅几十 KB)
    • 检测不再依赖 latest dist-tag(官方可能忘打 tag:rc.8 已发而 latest 指 rc.7)——枚举全部已发布版本取最大 semver
    • 发现新版 → 右上角小卡片(进度条 + 下载地址,可关闭、不挡操作)→ 下载 tgz → 原子替换 %LOCALAPPDATA%/DSH Desktop/runtime 里的 dsh 包(含回滚)→ 写用户自更新标记 → 重启 harness 生效
    • 用户自更新后的运行时不会被安装包重复覆盖,除非安装包内嵌的 dsh 版本更新

入口只有两个(托盘 → 设置):

  • 自动更新(框架 v… · 官方 Harness v…)(开关,默认开):冷启动自动检查一次(框架 15s 下载 + 官方 Harness 30s 本地替换);关闭则仅手动
  • 检查并更新…(动作):同时查框架 + 官方 Harness,有新版自动本地下载/替换(不跳浏览器)

Why npm not GitHub tags:deepseek-harness 通过 npm 分发(GitHub 只有源码 tags,无构建产物),所以「官方 Harness 最新」为 npm 已发布版本的最大 semver。

平台支持

  • Windows(主平台,实测):NSIS 安装包、托盘、系统通知、任务栏徽标、开机自启、dsh:// 深链
  • macOS(配置就绪):dmg(arm64/x64)、dsh:// 深链、运行时路径走 ~/Library/Application Support
  • Linux:代码兼容,未提供安装包

License

MIT