deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:xxccdl/deepseek-harness-desktop
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
简体中文 · English
把 deepseek-harness 的 Web 界面
(dsh web) 打包成原生 Electron 桌面应用,并在其基础上扩展了一整套桌面向能力:
电脑控制、浏览器自动化、长期记忆、定时任务、快捷对话、插件市场、桌宠等。
开源说明(版权):上游 deepseek-harness 由 DeepSeek 于 2026 年以 MIT 许可发布。 本仓库为桌面 fork,桌面壳层与新增桌面插件由 xxccdl 于 2026 年补充,沿用 MIT。 详见 LICENSE 与 LICENSE-THIRD-PARTY。
与网页版完全相同的 harness 在应用进程内部启动(无需浏览器、无需单独的 CLI 进程):
@deepseek-ai/dsh-app-boot 的稳定 API 挂载 web profile 的 cordis 组合
(与 dsh web 完全相同的 bundle 层 + 用户 patch 层)BrowserWindow 直接加载该端口上的 SPA;window.__DSH_BOOT__ 仍由服务端 index-tap
注入,前端代码零改动会话、设置、凭据与网页版完全共享,都在 %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 自动更新、会话日志导出 |
body 为 flex 列),SPA 自动缩进剩余高度,内容永不被遮挡Ctrl+Alt+B:立即隐藏整个应用,再按恢复(可在设置里关闭)Ctrl+D+S:由底层键盘钩子实现(globalShortcut 无法表达三键),
且保证单独按 Ctrl+S 不会误触发$DSH_HOME、打开 web profile 目录、关于);按 Alt 临时唤出菜单栏target=_blank 与站外导航自动交给系统浏览器dsh/notify 事件走 Windows 系统通知,并可按事件播放提示音Ctrl+Shift+V 历史面板提供数据Ctrl + / - / 0 放大、缩小、重置界面window.dshDesktop 调用 getAppInfo() / getServerUrl() /
openExternal() / showItemInFolder() / openPath() 等白名单 API(沙箱开启)Ctrl+D+S 在任何界面(即使主窗口未聚焦)呼出一个脱离主窗口的玻璃拟态 mini 对话面板,
主窗口完全不受打扰:
除了 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 正在干活时问一个附带问题,不打断当前任务(作为下一步上下文排队)让 AI 能像人一样操作这台 Windows 电脑(基于 Windows-MCP):
uv 在 $DSH_HOME/runtime 下建立隔离的 Python 环境
(windows-mcp-venv),不污染系统 Pythondsh-tool-computer-use经 Chrome DevTools Protocol 驱动本机 Edge / Chrome:
/api/browser 暴露AI 拥有跨会话的长期记忆:
remember(记住)/ recall(回想)/ list / forget$DSH_HOME/memory/memory.jsonl,并附带一个记忆技能引导模型何时使用dsh-tool-memory 的 /api/memoryremind 工具安排「N 分钟后提醒我」dsh-mobile-bridge 把通知转发到 Android 系统通知(后台也能收到)/user/balancedsh-client-ui-enhance 提供一组纯前端增强:
Ctrl+K 会话搜索:模糊搜索并快速跳转会话(键盘上下选、回车跳)F1 快捷键帮助:所有快捷键与代码块操作一览Ctrl+Shift+V 剪贴板历史:在输入框里呼出历史,选一条最近复制的内容插入Ctrl+E Markdown 导出:把当前会话导出为 Markdown 文件mermaid 代码块自动渲染成流程图/图表,可切回源码dsh-client-ui-snippets:
Ctrl+/ 呼出快捷片段选择器,把保存好的提示词/代码片段插入输入框snippet_* 工具共用同一个片段库(/api/snippets),人和模型都能读写dsh-client-ui-world-clock(在插件市场可安装,纯前端零依赖):
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(仅创造模式) |
两种类型:
package.json 与 JS 入口,安装后加载代码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 桌面端):
| 设置分区 | 内容 |
|---|---|
| 通用(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 读回实际端口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”)CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。