Skip to content

Repository files navigation

DeepSeek Harness Desktop

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

深色主题

浅色主题:
浅色主题

⬇️ 下载最新版


✨ 亮点

  • 零配置,开箱即用 —— 自带完整运行环境(node + dsh),装好就能聊,拷到别的电脑也照样跑。
  • 内核独立热更新 —— dsh 上游发了新版,在客户端里一键升级即可,不用等桌面版发版。更新前会真实启动自检,失败自动回滚,不会把能用的装成不能用的。
  • 常驻后台,随叫随到 —— 关窗口自动缩进托盘,Ctrl + Alt + Space 全局唤出。
  • 跑完主动提醒 —— 窗口在后台时,任务完成或需要你确认会弹系统通知并闪烁任务栏,不用守着屏幕。
  • 随手看余额 —— 每次 AI 回复下方直接显示 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 交流群二维码

📝 更新日志

最新版 v1.5.0 —— 插件体系的一次重做,用户能直接看到的是插件市场

  • 插件市场:侧边栏底部新增入口(在 Git 之下)。可以搜 npm 上的 dsh 插件、看详情与截图、一键安装,不用碰命令行;已安装的插件在这里统一停用 / 启用 / 卸载。原来「设置 → 插件 → 桌面插件」那个页面已经并进市场,设置里不再单列。
  • 自带的插件也能卸载了:Git 面板、终端、余额显示、在资源管理器中打开这四个,现在和你从市场装的插件是完全一样的管理方式 —— 可以卸掉,卸掉之后市场里还能一键装回来(用安装包里自带的副本,不需要联网)。只有插件市场自己卸不掉,因为它是管理入口,删了就再也装不回来。
  • 升级内核不再重装插件:插件搬到了你自己的 dsh 配置目录里,和内核彻底分开。内核热更新之后插件原样还在,也不会再出现「更新完某个插件没跟上」这类问题。
  • 插件全部改名到 @easytz/ 命名空间并发布到 npm,其他 dsh 用户可以直接 dsh plugin add @easytz/dsh-git 装到自己的环境里,不必用桌面版。

v1.4.1 —— 一次以稳固性为主的维护更新,日常使用看不出变化,但少了几类会在特定情况下咬人的问题:

  • 插件的本地接口加了跨源防护:Git 面板、终端、余额、「在资源管理器中打开」这几个功能是通过本机回环端口通信的,现在会拒绝来自外部网页的请求。此前浏览器里打开的恶意页面理论上可以隔空触发提交、推送或撤销改动。
  • 内核更新更保守:更新时如果有任何一个插件没装成功,整次更新直接失败并继续用当前内核,而不是装一半就启用。以前那种情况下,出问题的插件如果恰好是被你关掉的,故障会推迟到你哪天重新打开它才爆发。
  • 修掉内核更新在部分机器上(装了 Hyper-V / WSL2 / Docker)可能一直失败的问题,与 v1.3.1 修的是同一类端口占用。
  • 其余是开发侧的加固:打包会核对内核版本、发布前校验插件版本钉得是否正确、插件仓库补上单元测试与 CI。

v1.4.0 —— 这一版主要围绕插件

  • 插件管理:设置 → 插件 → 桌面插件,自带的几个插件可以逐个开关(重启后生效)。
  • 安全模式:万一某个插件把内核搞崩,崩溃提示框上多了「安全模式启动」——只加载插件管理面板,进去把出问题的插件关掉就能恢复正常启动。以前遇到这种情况只能重装。
  • Git 提交详情:点击提交历史里的任意一条,可以看到完整的提交信息(以前只显示第一行)、这次改了哪些文件、每个文件各增删多少行;重命名会显示「旧路径 → 新路径」。按 Esc、点右上角 × 或点空白处关闭。
  • 配色修正:Git 面板与终端面板的背板之前是浮在界面上的一块中灰色,现在改成和左侧菜单一个底色;输入框、下拉菜单、终端标签页也换成配套的颜色,深浅两个主题下都是干净的对比。
  • 顺手修掉一类潜在的启动失败(自带插件的内部标识可能与内核内置条目重名)。

另外,Git 面板、终端面板、余额显示、在资源管理器中打开这四个插件已拆成独立开源仓库(GitHub 上打了 dsh-plugin 标签),其他 dsh 用户也能装到自己的环境里。

v1.3.3 —— Git 面板与终端的一轮打磨:修掉深浅主题下按钮、标签「和背景糊在一起」的问题;提交历史用绿/黄圆点区分已推送与未推送,更早的提交折叠起来(带展开动画);打开工作区时终端自动开一个对应标签,当前路径高亮显示。

v1.3.2 —— 绿色版解压从三分多钟降到 5 秒(内核在包里改成单个文件,首次启动时自动展开,约 8 秒);Git 面板按反馈改版:提交与推送拆成两个独立按钮、提交框移到分支下方、每条提交标出已推送 / 未推送、分支下拉放大、变更列表可折叠。

v1.3.1 —— 修复部分机器上「dsh 内核启动失败」(端口被系统保留区间占用,Hyper-V / WSL2 / Docker 会动态预留大段端口);安装包与绿色版体积各减约 30 MB,绿色版少了 1.4 万个文件,解压明显更快。

v1.3.0 —— 侧边栏新增 Git 面板(改动文件、暂存、提交、推送、切分支、撤销最新提交)与 终端面板(当前工作区执行命令、实时输出、多标签、Tab 补全、Ctrl+C 终止);会话标题栏新增「在资源管理器中打开」;标题栏收窄并修掉与侧边栏交界处的色差。


🧑‍💻 开发

仅开发者需要,普通用户跳过。架构设计、插件契约与踩坑记录详见 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

Releases

Packages

Used by

Contributors

Languages