READMESource: main@f8cdd2a2
DSH Desktop
DeepSeek Harness(DSH)的桌面版启动器:自动拉起/复用 dsh web,以原生窗口打开,
并内嵌一个跟随当前工作区的 Files 文件边栏。
特性
- 独立启动:无需手动先开 dsh;端口上已有 DSH 实例则直接复用
- 原生窗口:iframe 嵌入 DSH 应用 + 右侧 Files 工作区文件边栏(懒加载目录树、 单击选中、双击用系统程序打开、深色主题跟随)
- 工作区跟随:跟随 DSH 界面中"正在查看的会话"所在的工作区,自动切换边栏
目录(约 2 秒内),并记住最后工作区,重启后自动恢复;工作区→路径映射走官方
API(
workspace.list),DOM 信号不可用时回退到 API 首位工作区 / 存储文件探测 - 工作区切换/固定:侧边栏标题旁可打开工作区菜单,列出 DSH 全部工作区并一键 固定;固定后暂停自动跟随,可随时恢复"跟随 DSH 自动切换"
- Files 边栏操作:任意目录新建文件/文件夹、重命名、删除(带确认)、 右键菜单、拖放移动/复制(Ctrl+拖放复制)、Ctrl 多选批量删除、全工作区名称搜索、 文本/图片/Markdown 内联预览、自动刷新、记忆上次展开的目录(按工作区)
- 系统托盘:显示/隐藏、Files 切换、重新加载、开发者工具、打开日志/设置文件、退出(默认关窗隐藏到托盘)
- 设置界面:侧边栏齿轮按钮(或关闭桌面 Files 后窗口右下角的悬浮齿轮)可直接编辑主机/端口/dsh 路径/固定工作区/受信任 Hosts/托盘行为,并可开关桌面 Files 边栏(关闭后可使用 DSH 插件侧边栏)
- 自动更新:打包版启动后通过
electron-updater检查 GitHub Releases,可下载并重启安装;无发布配置时回退到 GitHub 下载页提示 - 单实例锁、外部链接走系统浏览器、崩溃可重载、自动清理自己拉起的 dsh 进程
环境要求
- Node.js >= 18(建议 20+)
- 已安装 DeepSeek Harness:
npm install -g @deepseek-ai/dsh
快速开始
npm install
npm start
首次启动 dsh web 需 10~30 秒(profile 初始化、服务启动),期间显示加载页。
开发与测试
npm install
npm test # Node 内置 test runner,无需额外依赖
当前测试覆盖:
workspace-fs.js:路径越界防护、文件名校验、目录列举、新建/重命名/删除、移动/复制、递归搜索、预览读取dsh-api.js:RPC 信封解析/错误处理、工作区匹配逻辑
CI(.github/workflows/ci.yml)会在每次 push / PR 时运行语法检查和单元测试。
配置(可选)
也可以点击侧边栏顶部的齿轮按钮,在图形界面中编辑并保存设置;保存后按提示重启应用。
复制 settings.example.json 为 settings.json:
{
"host": "127.0.0.1", // 监听主机(勿设 0.0.0.0)
"port": 3080, // 端口;设 0 让系统分配
"executable": "", // dsh 完整路径,留空自动查找
"workspace": "", // 显式固定工作区;留空则自动跟随
"trustedHosts": [], // 额外信任的 Host
"closeToTray": true, // 关窗隐藏到托盘而非退出
"showSidebar": true // 显示桌面 Files 边栏;false 则隐藏,适合使用 DSH 插件侧边栏
}
环境变量覆盖:DSH_HOST、DSH_PORT、DSH_EXECUTABLE、DSH_WORKSPACE、DSH_NODE、DSH_SHOW_SIDEBAR(0/false 关闭边栏)。
dsh 查找顺序:显式 executable > PATH(Windows 选 .cmd)> node <dsh包>/lib/bin.js
(~/node_modules → npm root -g → 本地)。
打包
npm run pack # release/win-unpacked(免安装版)
npm run dist:lite # NSIS 安装包(推荐)
npm run dist # 完整打包(需可创建符号链接:管理员或开启开发者模式)
国内网络构建前请设置镜像:
$env:ELECTRON_MIRROR = "https://npmmirror.com/mirrors/electron/"
$env:ELECTRON_BUILDER_BINARIES_MIRROR = "https://npmmirror.com/mirrors/electron-builder-binaries/"
产物:release/win-unpacked/DSH Desktop.exe、release/DSH Desktop Setup <版本>.exe。
构建时 scripts/set-icons.js(afterPack 钩子)会用 rcedit 把鲸鱼图标写入 exe。
目录结构
dsh-desktop/
├── main.js # 主进程:服务管理、窗口、托盘、工作区跟随、IPC
├── dsh-api.js # DSH 本地 HTTP API 客户端(RPC / workspace.list / events.host WS)
├── workspace-fs.js # Files 边栏文件系统助手(越界防护、名称校验、预览读取)
├── shell.html # 容器页:iframe 嵌入 DSH + 右侧 Files 边栏
├── preload.js # contextBridge(工作区/主题/事件桥)
├── loading.html # 启动加载页
├── settings.example.json # 配置模板
├── scripts/
│ ├── generate-icon.ps1 # 生成图标(透明底黑鲸鱼,BMP ico)
│ ├── set-icons.js # 打包后写入 exe 图标(rcedit)
│ └── test.js # 本地测试运行器(Node 内置 test runner)
├── test/ # 单元测试(workspace-fs / dsh-api)
├── .github/workflows/ci.yml # CI:语法检查 + 单测
└── build/ # icon.png / icon.ico / icon.svg
声明
- 本项目的鲸鱼图标取自 DeepSeek Harness 官方前端资源(
@deepseek-ai/dsh-web-frontend), 仅作启动器品牌展示使用;DeepSeek 及鲸鱼标识归 DeepSeek 所有。 本项目与 DeepSeek 官方无关联,亦非官方产品。 - 启动器调用 DSH CLI(
@deepseek-ai/dsh)运行其 Web 界面,DSH 本体及其插件生态 归 DeepSeek 所有,遵循其自身的 MIT 协议。
许可
MIT
No comments yet. Be the first to write one.