Back to home@YUEEEEY

dsh-desktop-tools

dsh 环境管理插件(TypeScript):安装即配备桌面窗口(Rust/Tauri 宿主自动获取)、运行时一键更新、平台兼容自动适配、DeepSeek 官方计费与工作区代码编辑器。

Stars
0
Language
TypeScript
Created
Aug 18, 2026
Updated
Aug 20, 2026

Introduction

dsh-desktop-tools

dsh 环境管理插件(TypeScript):桌面窗口、运行时管理、平台兼容、计费面板、代码编辑器。

npm version npm downloads GitHub stars License: MIT

按 dsh"一切皆插件"理念实现的环境管理插件:安装即配备桌面窗口(Rust/Tauri 宿主按系统自动获取)、 运行时一键更新平台兼容自动适配DeepSeek 官方计费,以及内置代码编辑器。 桌面窗口由独立仓库 dsh-desktop-host 提供—— 宿主轻量原生(约 5MB,非 Electron),所有环境能力仍由 dsh 插件承担,换宿主不改变环境

特性

  • 🪟 桌面窗口(自动携带):安装插件时自动下载/构建对应系统的宿主二进制,dsh web 启动即自动打开桌面窗口;无需手动编译、无需设置环境变量。
  • 🔄 运行时一键更新:面板检测 @deepseek-ai/dsh 新版本,后台 npm install 升级并查看日志。
  • 🛡️ 平台兼容自愈:Windows 下自动适配终端/进程能力与命令工具(幂等、静默、无需干预)。
  • 💰 官方计费面板:DeepSeek 账户余额 + 全部会话 token 用量 + 估算花费(可自定义单价)。
  • 📝 代码编辑器:主窗口内浏览/编辑工作区文件,保存即落盘——配合 dsh agent 人工复核文件改动。
  • 🖥️ 环境面板弹窗:宿主托盘/快捷键打开独立面板窗口,不打断主界面。
  • 🪶 轻量原生:纯 dsh 插件(无壳依赖)+ Tauri 2 宿主(约 5MB 二进制,Windows / macOS / Linux)。

安装

# 从 npm 安装(推荐)
dsh plugin --profile web add dsh-desktop-tools

# 或从 GitHub 仓库安装(源码/开发版)
dsh plugin --profile web add git+https://github.com/YUEEEEY/dsh-desktop-tools.git

# 或本地开发(file: 引用)
dsh plugin --profile web add file:<本插件目录>

安装后启动 dsh web:插件会自动获取桌面宿主并打开桌面窗口;dsh web --no-desktop 可关闭自动开窗。

宿主获取方式:优先从 dsh-desktop-host Releases 下载当前系统对应二进制到 $DSH_HOME/desktop-host/<platform>-<arch>/;找不到对应资产时回退 clone 源码 cargo build --release。网络不可用时插件照常工作(仅暂不打开桌面窗口), 之后可在面板点击"重新获取宿主"。

桌面端

桌面窗口由 Rust/Tauri 宿主提供,主要能力:

  • 系统托盘:显示/隐藏窗口、打开环境面板(弹窗)、打开代码编辑器、在浏览器打开、重启服务、检查更新、开机自启、退出。
  • 面板弹窗Ctrl+Shift+P 或托盘/菜单打开独立面板窗口(宿主状态 / 运行时 / 平台兼容 / 计费摘要)。
  • 代码编辑器Ctrl+Shift+E 或托盘/菜单在主窗口内打开(浏览与编辑工作区文件)。
  • 单实例 / 开机自启 / 窗口状态记忆:重复启动聚焦已有窗口;托盘一键自启;记住窗口位置与尺寸。
  • 自动更新提示:每 6 小时检查 dsh 运行时更新,发现新版本时托盘提示。

宿主定位顺序:desktopBin 配置 → DSH_DESKTOP_BIN 环境变量 → 自动获取缓存目录 → 仓库构建产物 → PATH。

代码编辑器

主窗口内打开(Ctrl+Shift+E / 托盘 / 菜单),用于直接阅读与修改工作区文件:

  • 左侧文件树(默认跳过 .git / node_modules 等)、右侧编辑器,按扩展名识别语言;
  • Ctrl+S 保存到磁盘,Ctrl+Shift+B 或页面内"← 返回主界面"回到主界面;
  • 编辑器内核为 Monaco(按需加载,离线时自动降级为内置编辑器);
  • 文件 API(/api/fs/tree|read|write)严格限定在工作区根目录内,仅本地访问;
  • 默认根目录为 dsh 工作区,可用配置 editorRoot 覆盖。

路由

路由说明
/panel环境面板:宿主状态 / 运行时版本与更新 / 平台兼容 / 计费摘要(宿主内为弹窗)
/billing计费页:DeepSeek 官方余额 + 全部会话 token 用量 + 估算花费
/editor代码编辑器:工作区文件浏览 / 编辑
/api/runtimeGET 运行时状态(已装/最新/可更新);POST 后台执行 dsh 更新
/api/runtime/log更新日志尾部 + 是否仍在运行
/api/patchesGET 平台兼容状态;POST 重新应用
/api/desktopGET 宿主状态(含获取进度);POST 打开桌面窗口
/api/host/ensurePOST 触发宿主自动获取
/api/fs/tree /api/fs/read /api/fs/write代码编辑器文件 API(工作区根内)
/api/billing计费 JSON(余额 / 用量 / 估算花费)

配置

配置项默认说明
hostAutoInstalltrue是否自动获取宿主二进制(安装时 / 加载时)
autoOpenDesktoptruedsh web 启动后自动打开桌面窗口
desktopBin""宿主二进制路径(留空自动定位)
editorRoot工作区代码编辑器根目录
autoApplyPatchestrue加载时自动应用平台兼容适配(幂等,仅 win32)
checkUpdatesOnLaunchtrue加载时异步检查新版本并提示
updateModeautoauto:有 DSH_RUNTIME_DIR--prefix,否则 npm i -gglobal/prefix 强制指定
pricesDeepSeek-V4-Flash 空闲时段价估算单价(¥/百万 tokens)

平台兼容(Windows)

插件加载时自动适配(幂等,非 Windows 自动跳过,无需用户干预):

  1. 终端与进程能力:为 dsh 的进程检查在 Windows 上提供实现(基于 PowerShell), 修复终端检查能力缺失导致的报错。
  2. 命令工具适配:Windows 下将 bash 持久终端替换为 pwsh 工具。

适配状态可在面板"平台兼容"卡片查看,详情在"诊断"折叠区。

运行时定位顺序(更新 / 适配目标)

  1. 环境变量 DSH_RUNTIME_DIR(显式指定运行时);
  2. 当前正在运行的 dsh 实例(process.argv[1]<安装>/lib/bin.js);
  3. npm 全局安装的 @deepseek-ai/dsh
  4. 插件自身所在运行时的目录上溯。

无法定位时,更新与适配功能返回"未定位到 dsh 安装",计费、编辑器与页面功能不受影响。

开发

plugins/dsh-desktop-tools/
├─ src/index.ts         # 插件源码(TypeScript)
├─ src/bin.ts           # 桌面端入口命令(dsh-desktop)
├─ scripts/ensure-host.mjs  # 宿主自动获取(Release 下载 / 源码构建)
├─ tsconfig.json        # tsc 构建配置
├─ lib/                 # 构建产物(npm run build 生成)
├─ package.json         # dsh.bundle.patch 声明挂载;postinstall 触发宿主获取
└─ cordis.patch.yml     # 插件挂载层(insert desktop-tools)

改动后:npm run build 重新编译,仓库内重跑 pnpm install 并重启 dsh 服务生效; 发布新版本用 npm publish

宿主源码与构建:见 dsh-desktop-host

License

MIT