dsh-shell
其他 活跃维护

dsh-shell

TaoSmile/dsh-shell

轻量级桌面交互工具,基于Electron框架开发,支持本地快捷调用大模型能力,可加载插件扩展功能,原生适配Windows系统,部署简便操作流畅,无需复杂配置即可直接使用。

2
Stars 标星
0
Forks 分支
2
Watchers 关注
0
Open Issues
PowerShell
主要语言
MIT
开源协议
437 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:TaoSmile/dsh-shell
git clone https://github.com/TaoSmile/dsh-shell.git
git clone git@github.com:TaoSmile/dsh-shell.git
README.md main
dsh-shell logo # dsh-shell **一个动作,把已经装好的 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 装进桌面窗口** *零新环境 · 零核心改动 · 会话与设置原样继承* [![License: MIT](https://cdnimage-cache.doubi.ren/?url=https://img.shields.io/badge/License-MIT-blue.svg)](https://raw.githubusercontent.com/TaoSmile/dsh-shell/main/LICENSE) [![Platform: Windows](https://cdnimage-cache.doubi.ren/?url=https://img.shields.io/badge/Platform-Windows-4f46e5)](https://raw.githubusercontent.com/TaoSmile/dsh-shell/main/) [![Node: >=22.19](https://cdnimage-cache.doubi.ren/?url=https://img.shields.io/badge/Node-%3E%3D22.19%20or%20%3E%3D24-green)](https://raw.githubusercontent.com/TaoSmile/dsh-shell/main/) [![Upstream: deepseek-harness](https://cdnimage-cache.doubi.ren/?url=https://img.shields.io/badge/Upstream-deepseek--harness-red)](https://github.com/deepseek-ai/deepseek-harness) [![PRs Welcome](https://cdnimage-cache.doubi.ren/?url=https://img.shields.io/badge/PRs-welcome-brightgreen)](https://raw.githubusercontent.com/TaoSmile/dsh-shell/main/CONTRIBUTING.md) [English](https://github.com/TaoSmile/dsh-shell/blob/main/README.en.md) · [为什么需要它](#为什么需要它) · [快速开始](#快速开始) · [工作原理](#工作原理) · [常见问题](#常见问题)

为什么需要它

官方姿势是在终端里跑 dsh web 再开浏览器。对已经装好 harness 的你来说,只是想少两步:

痛点 dsh-shell 的答案
每次开终端、敲命令、复制 URL 双击一次,窗口自己弹出来
忘记 harness 有没有在跑 自动探测:在跑就包住它,没跑就替你拉起来
标签页里找不到、被淹没 独立桌面窗口 + 托盘常驻(Electron 版)
端口冲突 / "HTTP 200"假就绪白屏 --port 0 自动分配端口;就绪以官方 URL 行为准

它不是什么:不是仿制 UI、不是发行版、不打包运行时。窗口里 100% 是官方 Web GUI——壳的全部工作都在窗口之外。

快速开始

零安装版(推荐先试):双击 启动Harness桌面.vbs(无黑窗,失败弹提示),完。

启动Harness桌面.vbs ──▶ 自动探测/拉起 harness ──▶ 独立桌面窗口(Edge app-mode)
  • 习惯看控制台输出的可以双击 启动Harness桌面.cmd(行为相同,保留可见窗口)。
  • 桌面快捷方式(带白鲸图标):powershell -File launcher\start-shell-edge.ps1 -CreateDesktopShortcut,执行一次即可。
  • 开机自启(可选,默认关闭):双击 开机自启开关.vbs 一键切换——弹窗显示当前状态,确认后生效。命令行等价:-ToggleAutostart。
  • Edge 版体验特性:原生启动动画(双击后立即弹出小窗:白鲸图标 + 流动进度条,harness 就绪后自动打开 GUI 窗口)、单实例复用(不会重复拉起)、首次启动屏幕居中显示(小屏自动收缩)+ 之后记住窗口位置、关闭窗口自动停掉由它拉起的 harness(附着模式绝不干预已有实例)。

完整版(托盘 / 状态窗 / 日志 / 重试):

cd dsh-shell
npm install   # 已内置 npmmirror 镜像,解决 Electron 二进制下载失败
npm start     # 或双击 start-electron.cmd

工作原理

flowchart LR
    A[双击 启动Harness桌面.cmd] --> B{探测 http://127.0.0.1:3080<br/>响应含 __DSH_BOOT__ 才算就绪}
    B -->|已在运行| C[开窗附着<br/>不拥有生命周期,退出不影响]
    B -->|未运行| D[复用现有环境拉起<br/>node lib/bin.js web --port 0]
    D --> E[解析官方就绪行<br/>dsh web: http://127.0.0.1:port]
    E --> C
    C --> F[官方 Web GUI 原样呈现<br/>会话/设置共享 ~/.dsh]

两条铁律:

  1. 就绪判定只认 harness 官方就绪行 dsh web: http://…,绝不把"HTTP 200"当就绪(防止白屏)。
  2. 零注入:主窗口加载官方页面原样,壳的 preload 只注入自己的状态小窗。

两种模式对比

🚀 Edge 零安装版 🖥️ Electron 完整版
安装 无 npm install(一次性)
窗口 Edge app-mode 独立窗口(专用 profile,记住位置) 原生窗口 + 尺寸记忆
托盘 - 显示/隐藏、重启、打开日志
状态小窗 - 启动进度 / 错误 / 日志 / 重试
单实例 / 关窗即停 ✅ 复用探测 + 关窗自动停拉起的实例 ✅ 单实例锁 + 退出即停
适合 快速体验、零门槛 日常主力

和其他桌面端有什么不同

社区已有一体化打包(如 anywhere-labs、xiincs 等):它们内置 Node/依赖,给没装过 harness 的新用户开箱即用。dsh-shell 走另一条路:

dsh-shell 一体化打包
面向 已经装好 harness 的用户 全新用户
新增环境 零 自带 Node + 依赖
harness 改动 零 常附带集成插件
数据 与命令行共享 ~/.dsh 通常独立数据目录
体积/维护面 最小 完整产品

预览

主窗口(官方 Web GUI 原样呈现)
主窗口

配置

首次运行自动生成 %APPDATA%\dsh-shell\dsh-shell.json(Electron 版;默认值见 src/config.js):

键 默认 说明
harnessCheckout D:\workspace\deepseek-harness A1 拉起使用的 checkout 路径
attachUrl http://127.0.0.1:3080 A0 附着探测地址
spawnMode auto tsx(源码)/ built(构建产物)/ auto(失败自动回退)
dshHome '' 空 = 继承环境(默认 ~/.dsh);可显式指定
spawnArgs [] 追加给 dsh web 的参数(默认已有 --port 0)

Roadmap

  • [x] A0 附着 / A1 拉起 / Edge 零安装版 / Electron 壳 + 托盘
  • [x] T1 体验:白鲸图标、原生启动动画、桌面快捷方式、无黑窗、单实例复用、窗口居中与记忆、关窗即停、开机自启可选开关
  • [ ] electron-builder 打包:NSIS 安装包 + 便携版 + 图标
  • [ ] 托盘显示运行中的 job / goal 状态
  • [ ] dsh:// 深链
  • [ ] 桌面通知(走 harness 官方插件体系,不进核心)
  • [ ] macOS / Linux 适配

常见问题

  • 会和我终端里跑的 dsh web 冲突吗? 不会。壳先探测,命中就附着同一个实例,不会起第二份、不会抢写同一份配置。
  • 数据在哪? 沿用 ~/.dsh(或你设置的 DSH_HOME),与命令行共享同一份会话。
  • 怎么停止壳拉起的实例? Edge 版关闭窗口即自动停止(仅限它自己拉起的);也可手动 .\launcher\start-shell-edge.ps1 -Stop。Electron 版退出即停。附着模式(A0)两者都不干预。
  • 壳会联网下载东西吗? 不会。唯一例外是首次 npm install electron(已内置 npmmirror 镜像)。

目录结构

dsh-shell/
├─ 启动Harness桌面.vbs          零安装双击启动(无黑窗,推荐)
├─ 启动Harness桌面.cmd         零安装双击启动(可见控制台输出)
├─ 开机自启开关.vbs             开机自启开关(可选,默认关闭)
├─ start-electron.cmd          Electron 版双击启动
├─ src/                        Electron 主进程
│  ├─ main.js                  窗口 / 托盘 / 菜单 / 生命周期
│  ├─ host-manager.js          壳↔harness 唯一桥:attach / spawn / 就绪解析 / 日志
│  ├─ config.js                配置读写
│  └─ preload.js               仅注入壳自己的状态小窗
├─ ui/
│  └─ status.html              Electron 版启动状态 / 错误 / 日志
├─ launcher/start-shell-edge.ps1   Edge 版核心逻辑(含原生启动动画)
├─ scripts/make-icon.ps1       图标生成器(白鲸图形,可改样式重新生成)
└─ assets/                     icon.png / icon.ico / tray.png

参与贡献

任何形式的 issue / PR 都欢迎,见 CONTRIBUTING.md。边界只有一条:不改 harness 核心(对上游的改动请直接提给 deepseek-ai/deepseek-harness)。

Star 历史

Star History Chart

许可

MIT,与上游 deepseek-ai/deepseek-harness(MIT)保持一致。


如果它帮你省了几步,点个 ⭐ 再走~