dsh-desktop
开发工具 活跃维护

dsh-desktop

EasyTZ/dsh-desktop

轻量级桌面端工具,封装大模型调用接口逻辑,开箱即用无需复杂配置,提供可视化操作界面,支持快速发起模型请求、查看返回结果,简化大模型调用流程,降低使用门槛。

4
Stars 标星
1
Forks 分支
4
Watchers 关注
0
Open Issues
JavaScript
主要语言
MIT
开源协议
1.5 MB
仓库大小
21 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:EasyTZ/dsh-desktop
git clone https://github.com/EasyTZ/dsh-desktop.git
git clone git@github.com:EasyTZ/dsh-desktop.git
README.md main

DeepSeek Harness Desktop

以 DeepSeek Harness(下称 dsh)为内核的 Windows 桌面版 AI 编程助手。双击即用,不需要装 Node.js、不需要懂命令行。

深色主题

浅色主题:
浅色主题

⬇️ 下载最新版


✨ 亮点

  • 零配置,开箱即用 —— 自带完整运行环境(node + dsh),装好就能聊,拷到别的电脑也照样跑。
  • 内核独立热更新 —— dsh 上游发了新版,在客户端里一键升级即可,不用等桌面版发版。更新前会真实启动自检,失败自动回滚,不会把能用的装成不能用的。
  • 应用本身有新版会提醒你 —— 系统通知 + 托盘菜单,点开直达发布页;安装还是不装,仍由你决定。
  • 常驻后台,随叫随到 —— 关窗口自动缩进托盘,Ctrl + Alt + Space 全局唤出。
  • 跑完主动提醒 —— 窗口在后台时,任务完成或需要你确认会弹系统通知并闪烁任务栏,不用守着屏幕。
  • 随手看余额和花费 —— 侧边栏一行字直接看 DeepSeek 账户余额,点开还能看本次打开应用的用量和预估花费,按当前用的模型分开算,不用切到网页查。
  • Git 面板 + 终端,都在侧边栏 —— 改了哪些文件、暂存、提交、推送、切分支,点几下就完事;终端能在当前工作区敲命令、看实时输出、Tab 补全路径与命令名。
  • 插件市场 —— 侧边栏直接搜、直接装,不用碰命令行。自带的几个插件也在这里管,可以随时停用或卸载,卸了还能一键装回来。
  • 完整 dsh 能力 —— 会话、文件、终端、搜索、子代理,一个不少。
  • 原生桌面观感 —— 无边框窗口 + 自定义标题栏,浅色 / 深色 / 跟随系统主题。

📥 下载与安装

到 Releases 页面下载任选一个:

文件 选它的理由
...-Setup-x.x.x.exe 安装包:一路「下一步」,装完有桌面图标,新手选这个
...-Portable-x.x.x.zip 绿色版:解压即用,免安装,适合放 U 盘

本程序没有做代码签名,Windows 可能提示「未知发布者」或被杀软拦一下,选择「仍要运行 / 允许」即可。


🚀 开始使用

第一次启动:双击图标后会先出现启动窗口(logo + 加载动画),几秒后自动进入主界面 —— 这是程序在后台拉起本地服务,属正常现象。

填 API Key(必做):点左下角齿轮 → 打开「模型」→ 填入 DeepSeek API Key(形如 sk-xxxx,在 platform.deepseek.com 申请)→ 保存。不填也能打开界面,但一发消息就会失败。

API Key 设置页面

日常使用:

关窗口不等于退出 点 ✕ 只是缩进右下角托盘,右键托盘图标才是「退出」
随时唤出 Ctrl + Alt + Space 显示 / 隐藏窗口
反馈问题 右键托盘图标 →「反馈问题」,直达 GitHub Issues

🔄 内核更新

「内核」就是真正干活的 dsh 本体,它和桌面版分开升级 —— 桌面版没发新版,内核也能保持最新。

  • 自动检查:每天后台检查一次,有新版会弹出更新窗口;也可右键托盘 →「检查内核更新」手动查。
  • 更新流程:点「立即更新」→ 等进度走完 → 点「立即重启」生效(选「稍后」也行,下次启动自动用新版)。
  • 下载源:默认国内镜像 registry.npmmirror.com,更新窗口底部可切换到官方源。
  • 不会更新坏:新内核先通过真实启动自检才会启用,异常时自动回退到自带内核,不影响使用。

❓ 常见问题

现象 原因 / 处理
窗口关了找不到了 在右下角托盘,点一下图标即可
余额显示「查询失败」 没填 API Key,去「设置 → 模型」补上
双击没反应 / 被拦截 没做代码签名,选「仍要运行」;杀软误报可加白名单
从旧版升级后首次启动偏慢 正在自动切换到新版内核,等几秒即可,只会发生一次
启动失败并弹出错误框 错误框里有原因摘要;多为内核损坏,可在更新窗口点更新重装内核
装了插件但没反应 插件要重启内核才生效,右键托盘 → 退出后重新打开
装了某个插件后启动就崩 崩溃提示框上点「安全模式启动」,进去把它停用或卸载,再正常重启

💬 反馈与交流

用着有问题、有想要的功能,欢迎随时提 —— 这个项目就是靠反馈改进的。

  • 报 bug / 提需求:提交 Issue,客户端托盘菜单里的「反馈问题」可直接跳转。
  • QQ 群:群号 263261649

    QQ 交流群二维码

📝 更新日志

见 CHANGELOG.md,或 Releases 页面。


🧑‍💻 开发

仅开发者需要,普通用户跳过。架构设计、插件契约与踩坑记录详见 CLAUDE.md。

前置条件:Node.js ≥ 22,并全局安装 dsh 与 pnpm:

npm install -g @deepseek-ai/dsh
npm install -g pnpm

国内网络下载 Electron 慢,可先设镜像:

$env:ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
$env:ELECTRON_BUILDER_BINARIES_MIRROR="https://npmmirror.com/mirrors/electron-builder-binaries/"

常用命令:

npm install              # 装依赖(首次会下 Electron)
npm start                # 开发态运行(外壳 spawn 本机全局 dsh)
npm test                 # 单元测试(node:test,零第三方依赖)
npm run typecheck        # tsc --checkJs 静态检查(无编译产物)
npm run dist             # 打包 → 产物收进 release/
npm run dist:dir         # 只出 win-unpacked,快速验证打包态
npm run link-plugins     # 联调插件:改同级插件仓库的代码即刻生效(可常开)
npm run plugins-status   # 看插件当前是「钉 tag」还是「联调」

npm run dist 会依次执行 校验插件 pin → prepare-kernel → 打插件 tgz → 内核自检 → 打包,产物落在 release/。

插件开发:五个插件(插件市场、Git 面板、终端面板、余额显示、在资源管理器中打开)都是独立仓库,以 @easytz/* 发布,本仓库按钉住的 tag 作为 git 依赖引用,只为打成 tgz 放进安装包。

它们装在用户的 dsh profile 里(~/.dsh/profiles/web/),和你从插件市场装的第三方插件是同一套机制、同一个目录 —— 换内核不影响它们,用户也能自己卸载(市场本身除外,它是管理入口)。

想改插件代码:把对应仓库克隆到本仓库的同级目录,跑 npm run link-plugins,之后改完直接生效(改界面代码内核会自动热重载,改服务端代码重启内核),不必每次 push + 打 tag。联调可以常开——npm run dist 会自动临时解除、打完恢复,并在你有未提交的插件改动时中止(否则打出的包用的是钉住的旧版本,不含你的改动)。

架构:Electron 外壳 + 自包含 dsh 内核。外壳不渲染任何业务 UI —— spawn 内核后轮询 HTTP 就绪,再让 BrowserWindow 加载本地回环地址;所有会话 / 文件 / 终端能力都来自 dsh 自身的 web 应用,外壳只负责窗口、标题栏、托盘、快捷键、通知与内核更新。

src/main/     Electron 主进程
src/preload/  预加载脚本(注入标题栏 / 暴露 updater 接口)
src/shared/   纯 Node 模块,主进程与构建脚本共用,也是单测落点
scripts/      构建期 CLI(ESM)
plugins/      profile-plugins.json(随包分发哪几个插件的清单,插件本身在独立仓库)

本项目没有编译步骤,src/ 直接打进 asar —— 这是打包设计的承重墙。


License

MIT