deepseek-harness-desktop
Discovered★ 3DeepSeek Harness 桌面版 — Electron 壳层封装 dsh web,集成记忆查看、电脑控制、桌面设置、定时任务、快捷对话、预算血条等桌面插件。DeepSeek Harness Desktop — Electron shell wrapping dsh web with desktop-only plugins: memory viewer, computer use, des
DeepSeek Harness — Desktop
简体中文 · English
把 deepseek-harness 的 Web 界面
(dsh web) 打包成原生 Electron 桌面应用,并在其基础上扩展了一整套桌面向能力:
电脑控制、浏览器自动化、长期记忆、定时任务、快捷对话、插件市场、桌宠等。
开源说明(版权):上游 deepseek-harness 由 DeepSeek 于 2026 年以 MIT 许可发布。 本仓库为桌面 fork,桌面壳层与新增桌面插件由 xxccdl 于 2026 年补充,沿用 MIT。 详见 LICENSE 与 LICENSE-THIRD-PARTY。
目录
- 它是怎么运行的
- 功能总览
- 桌面壳层
- 快捷对话(Ctrl+D+S)
- AI 对话与工具
- 电脑控制
- 浏览器自动化
- 长期记忆
- 通知与定时任务
- 用量与花费
- 界面增强
- 快捷片段(Ctrl+/)
- 世界时钟
- 桌宠
- 插件市场
- 更新器
- 设置页一览
- 快捷键一览
- 数据存放位置
- 复现 / 构建
- 仓库结构
- 工作原理
它是怎么运行的
与网页版完全相同的 harness 在应用进程内部启动(无需浏览器、无需单独的 CLI 进程):
- 主进程通过
@deepseek-ai/dsh-app-boot的稳定 API 挂载webprofile 的 cordis 组合 (与dsh web完全相同的 bundle 层 + 用户 patch 层) - harness 服务器绑定在操作系统分配的随机 loopback 端口(仅本机可访问)
BrowserWindow直接加载该端口上的 SPA;window.__DSH_BOOT__仍由服务端 index-tap 注入,前端代码零改动- 退出时自动 dispose harness 树,干净落盘会话状态
会话、设置、凭据与网页版完全共享,都在 %USERPROFILE%\.dsh(即 $DSH_HOME)。
功能总览
| 领域 | 能力 |
|---|---|
| 桌面壳 | 无边框窗口、自定义标题栏、托盘、开机自启、老板键、全局呼出、单实例、窗口状态恢复 |
| 快捷对话 | Ctrl+D+S 全局呼出玻璃拟态 mini 对话,4 种智能体模式 + 任务列表 |
| AI 工具 | 电脑控制、浏览器、记忆、通知/定时、剪贴板、文件搜索、网页抓取、视觉、片段、产物交付等 |
| 电脑控制 | 经 Windows-MCP 让 AI 看屏幕、点按、输入;自带 uv 与隔离 Python 运行时 |
| 浏览器自动化 | 经 CDP 驱动 Edge/Chrome:导航、点击、输入、截图、执行 JS |
| 长期记忆 | remember/recall 等工具 + 设置里的文字/KV/思维导图查看器 |
| 通知与定时 | 任务开始/完成系统通知、可重复定时任务、remind 延时提醒、/btw 插话 |
| 用量花费 | token 花费估算 + DeepSeek 实时余额血条、token 构成统计条 |
| 界面增强 | Ctrl+K 会话搜索、F1 快捷键帮助、剪贴板历史、Markdown 导出、代码块工具栏、Mermaid |
| 插件市场 | 应用内浏览/安装/卸载插件与技能,创造模式一键发布 |
| 其它 | 世界时钟、桌宠、底部控制面板 + 共享 PowerShell、GitHub 自动更新、会话日志导出 |
桌面壳层
- 无边框窗口 + 自定义标题栏:无原生边框;标题栏由 preload 注入(左侧标题/拖拽区,
右侧自定义最小化、最大化/还原、关闭按钮)。双击标题栏切换最大化,按钮图标随状态切换;
标题栏参与文档流(
body为 flex 列),SPA 自动缩进剩余高度,内容永不被遮挡 - 系统托盘:可最小化到托盘而不退出;托盘菜单含「显示主窗口 / 退出」
- 开机自启:设置里一键开关(写入系统登录项)
- 老板键
Ctrl+Alt+B:立即隐藏整个应用,再按恢复(可在设置里关闭) - 全局呼出热键:可自定义的全局快捷键,任何界面下都能把主窗口唤到前台
- 快捷对话三键和弦
Ctrl+D+S:由底层键盘钩子实现(globalShortcut无法表达三键), 且保证单独按Ctrl+S不会误触发 - 单实例锁:二次启动自动聚焦已有窗口
- 窗口状态恢复:位置、尺寸、最大化状态在重启后还原
- 菜单:Edit(撤销/剪贴板,Web 输入框可用)、View(重载/DevTools/缩放/全屏)、
Help(打开
$DSH_HOME、打开 web profile 目录、关于);按Alt临时唤出菜单栏 - 外部链接:
target=_blank与站外导航自动交给系统浏览器 - 原生通知:harness 的
dsh/notify事件走 Windows 系统通知,并可按事件播放提示音 - 剪贴板监听:后台监听剪贴板,为
Ctrl+Shift+V历史面板提供数据 - 缩放:
Ctrl + / - / 0放大、缩小、重置界面 - preload bridge:SPA 通过
window.dshDesktop调用getAppInfo()/getServerUrl()/openExternal()/showItemInFolder()/openPath()等白名单 API(沙箱开启)
快捷对话(Ctrl+D+S)
Ctrl+D+S 在任何界面(即使主窗口未聚焦)呼出一个脱离主窗口的玻璃拟态 mini 对话面板,
主窗口完全不受打扰:
- 4 种智能体模式:标准(Standard)/ PTC / 极简(Minimal)/ 创造(Creator)
- 消息发送到当前会话,可随时收起
- 任务列表页:查看后台任务,每个会话都有独立的迷你对话
AI 对话与工具
除了 harness 自带的读写文件、跑命令、子智能体等能力,本 fork 额外注册了一批模型可调用的工具:
| 工具(包) | 作用 |
|---|---|
电脑控制(dsh-tool-computer-use) | 经 Windows-MCP 操控整台 Windows PC |
浏览器(dsh-tool-browser) | 经 CDP 自动化 Edge/Chrome |
记忆(dsh-tool-memory) | remember / recall / list / forget 长期记忆 |
通知/定时(dsh-tool-notify) | 任务开始/完成通知、可重复定时任务 |
提醒(dsh-tool-remind) | remind:N 分钟后弹一条桌面通知 |
剪贴板(dsh-tool-clipboard) | clipboard_read / clipboard_write 读写系统剪贴板 |
文件搜索(dsh-tool-filesearch) | file_name_search:目录内递归文件名快速搜索(忽略 node_modules/.git) |
网页抓取(dsh-tool-webfetch) | web_fetch:取 URL 正文纯文本(去脚本样式、折叠空白、限长) |
视觉(dsh-tool-vision) | 用 DeepSeek 视觉模型分析图片或屏幕截图 |
持久 PowerShell(dsh-tool-pwsh-persistent) | 按会话归属的常驻 PowerShell,与底部面板共用同一个 PTY |
片段(dsh-tool-snippets) | snippet_save/list/get/delete,与 UI 选择器共用一个库 |
产物交付(dsh-tool-deliver) | send_file 把文件放进交付目录并通知,界面出现「产物」标签可一键保存 |
市场发布(dsh-tool-plugin-market) | plugin_publish / ask-publish-plugin(仅创造模式) |
手机控制(dsh-tool-phone) | 移动端:读屏、点击/滑动/输入/按键/滚动/打开 App |
其它对话能力:
/btw插话:在 AI 正在干活时问一个附带问题,不打断当前任务(作为下一步上下文排队)- 多模态图片:截图/图片可直接作为图片发给视觉模型;模型「图像输入」能力可在 设置 → 模型里手动开关或修正
- 会话日志导出:会话工具栏溢出菜单里可把整段会话导出下载
- 底部控制面板:抽屉式面板展示智能体实时动作(后台任务、子智能体)与共享 PowerShell 终端;会话头部右侧工具条;含 DeepSeek 高峰/低谷电价提示
电脑控制
让 AI 能像人一样操作这台 Windows 电脑(基于 Windows-MCP):
- AI 可以看屏幕、读取界面元素、点击、输入、滚动、按键等
- 自带运行时,开箱即用:用打包的
uv在$DSH_HOME/runtime下建立隔离的 Python 环境 (windows-mcp-venv),不污染系统 Python - 设置页「电脑控制」:开关功能、选择 Python 版本/包、配置提示词提醒、查看实时状态、 一键重建运行时
- 对应 AI 工具在
dsh-tool-computer-use
浏览器自动化
经 Chrome DevTools Protocol 驱动本机 Edge / Chrome:
- AI 可执行导航、点击、填写、截图、执行 JS 等网页操作
- 设置页「浏览器控制」:选择浏览器与端口、是否无头(headless)、启动/停止/测试被控浏览器
- 状态通过
/api/browser暴露
长期记忆
AI 拥有跨会话的长期记忆:
- 模型工具:
remember(记住)/recall(回想)/list/forget - 持久化在
$DSH_HOME/memory/memory.jsonl,并附带一个记忆技能引导模型何时使用 - 设置页「记忆」:以文字、键值(KV)、思维导图三种视图浏览记忆,数据来自
dsh-tool-memory的/api/memory
通知与定时任务
- 任务通知:AI 开始 / 完成长任务时弹 Windows 系统通知(可带提示音),不必盯着窗口
- 定时任务:设置页「定时任务」管理 AI 开始/完成通知与用户自定义的可重复计划任务 (可附带要执行的命令)
- 延时提醒:AI 用
remind工具安排「N 分钟后提醒我」 - 移动端另有
dsh-mobile-bridge把通知转发到 Android 系统通知(后台也能收到)
用量与花费
- 侧栏预算血条:左下角(设置上方)一条紧凑的「已用 / 余额」条
- 已用:回放会话事件,按 DeepSeek(deepseek-chat 等)价格估算人民币花费
- 余额:实时查询 DeepSeek
/user/balance - 余额查询失败会在 tooltip 说明原因;提供方无余额接口时只显示花费,不会把未上报的余额显示成 ¥0.00
- token 构成统计条:输入框上方的统计条按 token 构成着色——缓存命中(绿)/ 新增输入(蓝)/ 缓存写入(琥珀)/ 输出(中性),宽度比例即真实用量;悬停面板给出完整统计
- 设置页「统计」:花费与余额、会话数(总计/进行中/今日)、当前会话的消息数与工具调用数
界面增强
dsh-client-ui-enhance 提供一组纯前端增强:
Ctrl+K会话搜索:模糊搜索并快速跳转会话(键盘上下选、回车跳)F1快捷键帮助:所有快捷键与代码块操作一览Ctrl+Shift+V剪贴板历史:在输入框里呼出历史,选一条最近复制的内容插入Ctrl+EMarkdown 导出:把当前会话导出为 Markdown 文件- 代码块工具栏:悬停代码块显示「复制 / 保存为文件 / 折叠长代码」
- Mermaid 渲染:
mermaid代码块自动渲染成流程图/图表,可切回源码 - 所有弹层配色跟随系统的深/浅主题
快捷片段(Ctrl+/)
dsh-client-ui-snippets:
Ctrl+/呼出快捷片段选择器,把保存好的提示词/代码片段插入输入框- 可把当前草稿存成片段,也可删除旧片段
- 与 AI 的
snippet_*工具共用同一个片段库(/api/snippets),人和模型都能读写
世界时钟
dsh-client-ui-world-clock(在插件市场可安装,纯前端零依赖):
- 侧栏底部(设置旁)常驻秒级本机时间,窄栏显示简版
- 点击展开世界时钟面板:多城市实时对照、真实 IANA 时区与 UTC 偏移、跨日自动标注 昨天/明天,外加 5 / 15 / 25 分钟倒计时
桌宠
dsh-client-ui-desktop-pet:界面右下角一只可拖拽的蓝色小鲸鱼,会漂浮眨眼、跟你说话、
按心情切换表情;设置页「桌宠」可配置。
插件市场
一个自托管的插件/技能商店:在应用内浏览、安装、卸载,或让 AI 把刚写好的插件/技能一键发布。
| 部分 | 路径 | 职责 |
|---|---|---|
| 服务端 | plugin-market/ | 目录 API + 商店页面(默认 9009 端口),独立部署 |
| 商店界面 | dsh-client-ui-market | 应用内市场窗口(iframe 承载商店页面) |
| 宿主桥 | dsh-host-plugin-market | 校验/落盘/热挂载,/api/market/* 四条路由 |
| AI 工具 | dsh-tool-plugin-market | plugin_publish 与 ask-publish-plugin(仅创造模式) |
两种类型:
- 插件(plugin):含
package.json与 JS 入口,安装后加载代码 - 技能(skill):只含
SKILL.md(YAML frontmatter 描述 name/description),不加载代码; 安装即把目录放进$DSH_HOME/skills,出现在技能列表(/可查看)
安装:下载 → 服务端逐项校验(包名、入口、每个 .js 过 node --check、禁止 npm 依赖)→
写入 profile 的 patch 层($DSH_HOME/profiles/<profile>/cordis.patch.yml)并经 loader 热挂载,
界面部分刷新即可见。任一步失败都整体回滚,不影响正在运行的应用。
卸载:详情抽屉与「管理」弹窗都提供卸载,两段式确认(首点变为「确认卸载?」, 2.6 秒内再点才执行);宿主桥摘掉 patch 行、卸载运行时条目并删除目录。
发布:创造模式里 AI 写完插件/技能后调用 ask-publish-plugin 询问,输入框上方出现发布条,
可选**版本号、类型(插件/技能/自动判断)**并填更新说明;用户确认后 AI 才调用
plugin_publish 真正发布。也可以直接调接口或用脚本:
curl -X POST http://<market>/api/plugins \
-H "X-Market-Meta: $(echo -n '{"title":"我的插件","category":"开发工具"}' | base64 -w0)" \
--data-binary @my-plugin.tgz
# 或
node plugin-market/tools/publish.mjs <插件目录> --market http://<market> [--token <t>]
部署服务端:
node plugin-market/server.js # env: MARKET_PORT(9009) / MARKET_DATA(./data) / MARKET_ADMIN_TOKEN
挂载说明:
dsh-client-ui-world-clock目前经市场分发(未写进默认组合,装完即用); 想让它开箱常驻,可把它加进dsh-web-app的 patch 层。
更新器
dsh-client-ui-updater(仅 Electron 桌面端):
- 设置页「更新」检查 GitHub Releases、阅读更新日志
- 50 线程并行加速下载安装器并安装(不自动后台更新,需手动确认)
设置页一览
| 设置分区 | 内容 |
|---|---|
| 通用(general) | 外壳、版本公告、通用偏好 |
| 模型(models) | 凭据与模型管理、模型「图像输入」开关 |
| 统计(stats) | 花费/余额、会话数、当前会话消息与工具统计 |
| 记忆(memory) | 文字 / KV / 思维导图三种记忆视图 |
| 电脑控制(computer-use) | Windows-MCP 开关、Python 运行时、重建 |
| 浏览器控制(browser) | 被控浏览器选择、端口、无头、启停/测试 |
| 桌面(desktop) | 托盘、开机自启、全局显示/隐藏热键 |
| 定时任务(scheduler) | 任务通知与可重复计划任务 |
| 桌宠(desktop-pet) | 桌宠开关与配置 |
| 更新(updater) | 检查更新、更新日志、下载安装 |
| 插件(上游) | 已装插件清单与管理 |
首次启动还有欢迎向导(API Key 实时校验、功能导览、快捷键速查),完成状态持久化; 设置里的「使用教程」可随时重跑向导。
快捷键一览
| 快捷键 | 作用 | 范围 |
|---|---|---|
Ctrl D S | 呼出/隐藏快捷对话 mini 面板 | 全局(底层键盘钩子) |
Ctrl Alt B | 老板键:立即隐藏/恢复应用 | 全局(可关闭) |
Ctrl K | 快速搜索并跳转会话 | 应用内 |
F1 | 快捷键帮助 | 应用内 |
Ctrl Shift V | 剪贴板历史(输入框内插入) | 应用内 |
Ctrl E | 导出当前会话为 Markdown | 应用内 |
Ctrl / | 快捷片段选择器 | 应用内 |
Ctrl + / - / 0 | 界面缩放 放大/缩小/重置 | 应用内 |
| 双击标题栏 | 最大化/还原 | 窗口 |
Alt | 临时唤出菜单栏 | 窗口 |
| 悬停代码块 | 复制 / 保存为文件 / 折叠 | 对话 |
数据存放位置
所有用户数据都在 $DSH_HOME(Windows 下即 %USERPROFILE%\.dsh):
| 路径 | 内容 |
|---|---|
$DSH_HOME/memory/memory.jsonl | 长期记忆 |
$DSH_HOME/skills/<id>/ | 从市场安装的技能(SKILL.md) |
$DSH_HOME/profiles/<profile>/cordis.patch.yml | 用户 patch 层(市场安装的插件在此登记) |
$DSH_HOME/plugin-market.json | 插件市场状态(已装列表、令牌、市场地址) |
$DSH_HOME/runtime/ | 电脑控制的 uv 与隔离 Python 运行时 |
$DSH_HOME/plugin-market-backup/ | 安装/更新时的备份 |
| 附件存储 | 内容寻址的本地附件目录(dsh-attachment-local) |
| 产物交付 | <files>/deliver/(send_file 落位,界面可一键保存) |
复现 / 构建
npm install
# 把 plugins/@deepseek-ai/* 覆盖到 node_modules/@deepseek-ai/(替换/新增对应包),
# 并在 $DSH_HOME/profiles/node_modules 下建立 junction
node scripts/install-plugins.mjs
npm start
computer-use 运行时:电脑控制需要
uv(仅打包时读取)。从 https://github.com/astral-sh/uv/releases 下载uv-x86_64-pc-windows-msvc.zip, 解压后把uv.exe放到resources/runtime/uv/uv.exe(该目录不入库)。
打包 Windows 安装包:
npm run dist # NSIS 安装器 + portable 单文件 exe(输出到 dist/)
npm run dist:portable # 仅 portable exe
国内网络先设置镜像:
$env:ELECTRON_MIRROR = "https://npmmirror.com/mirrors/electron/" $env:ELECTRON_BUILDER_BINARIES_MIRROR = "https://npmmirror.com/mirrors/electron-builder-binaries/"若不想让 electron-builder 尝试发布到 GitHub,构建时加
--publish never。
仓库结构
本仓库不包含 node_modules(约 671MB,npm install 后生成)。
src/main.js Electron 主进程:进程内 boot harness + 窗口/菜单/托盘/热键/生命周期
src/preload.cjs contextBridge 桥(沙箱开启,仅白名单 API)
src/quickchat-hotkey.cjs Ctrl+D+S 三键和弦的底层键盘钩子
src/quickchat.html 快捷对话 mini 面板页面
src/splash.html 启动开屏页
src/update-downloader.mjs 多线程并行加速的安装器下载器
resources/icon.svg 应用图标源(DeepSeek 鲸鱼)
scripts/ 图标生成、插件同步安装、发布与各类验证脚本
plugins/@deepseek-ai/ 本 fork 新增/修改的 dsh 插件(复制进 node_modules 使用)
plugin-market/ 插件市场服务端(独立部署,不参与打包)
plugins/@deepseek-ai/ 里既有本 fork 新增的插件,也有修改过的上游包完整副本
(如 dsh-client-ui-sidebar、dsh-client-ui-settings-general、dsh-web-app、dsh-base 等)。
工作原理(为什么不需要改前端)
dsh web 的本质是:挂载 @deepseek-ai/dsh-base + @deepseek-ai/dsh-web-app 两个
bundle 的 patch 层,由 dsh-host-webserver 监听 127.0.0.1,由
dsh-host-frontend-static 托管 @deepseek-ai/dsh-web-frontend/dist 并在每个 index
响应里注入 window.__DSH_BOOT__(client 插件清单)。桌面版复用同一套 composition,只是:
- 用
boot()+provideCmdline()在 Electron 主进程内挂载,传--port 0让系统分配端口, 再从ctx.webServer.port读回实际端口 - 原生模块(sharp/koffi/node-pty 等)全部是 N-API,在 Electron 的 Node 上无需重编译
node:sqlite(会话搜索)在 Electron 43+ 内置的 Node 24 中已可用- 打包时
node_modules全部asarUnpack:harness 的模块回退机制会把$DSH_HOME/profiles/node_modules的 junction 指向真实目录——指向 asar 虚拟文件系统的 junction 无法被原生模块解析(会导致__DSH_BOOT__空清单,UI 报 “Failed to load plugins”)
Comments
Loading…
Similar plugins
by shaobeichen
把 DeepSeek Harness 装进你的口袋:电脑上跑 dsh web,手机扫码即同步访问(局域网 + 公网,实时同屏)Put DeepSeek Harness in your pocket: run dsh web on your computer and access it synchronously by scanning a QR code on your phone (LAN +
★ 1.2k
↓ 5.7k/wk
GPL-2.0
JavaScript
Sep 16, 2026
dsh plugin --profile web add dsh-pocketby anywhere-labs
为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 27.7k
↓ 198/wk
MIT
TypeScript
Sep 19, 2026
dsh plugin --profile web add dsh-plugin-desktopby GHJIVHIDD
DeepSeek Harness 的用量(Usage)部署级插件:会话视图环新增「用量」页签,实时跟踪输入/输出/缓存命中 tokens 与费用(DeepSeek 官方峰谷价 + OpenCode Go 套餐价),动态渐变蓝状态条、自定义价格表、CSV/JSON 导出。原生UI界面
★ 3
Apache-2.0
JavaScript
Aug 20, 2026
dsh plugin --profile web add @deepseek-ai/dsh-plugin-usageby ChisaAlter
DSH桌面端,支持主题和背景图等多种个性化配置。Electron desktop shell for DeepSeek Harness web UI
★ 170
↓ 312.4k/wk
MIT
JavaScript
Sep 19, 2026
dsh plugin --profile web add @deepseek-ai/dsh-baseby sky-unicorn
DeepSeek Harness(DSH)一站式增强套件,基于公开插件扩展点构建,无需修改 DSH Core。提供 Windows Launcher、桌面通知与动态桌宠、Plugin Community、MCP Server Manager、模型输入类型配置、最后一条消息编辑与重新生成,以及 Claude Code / Codex Subagents 实时控制。所有功能均可独立安装,支持全量部署、
★ 4
MIT
TypeScript
Sep 19, 2026
dsh plugin --profile web add dsh-enhanced-pluginsby feiyang-dev
DeepSeek Harness 用量与消耗插件(dsh-usage-plugin)—— 每次调用的 token 用量/缓存命中统计、峰谷计费、余额查询、CSV/JSON/PNG 导出,可经桌面端一键安装或命令行 dsh plugin add 安装。
★ 34
MIT
JavaScript
Aug 29, 2026
dsh plugin --profile web add @feiyang666/dsh-usage-plugin