← 返回列表
需源码安装
把网页界面装进原生窗口,带托盘通知与文件管理器
暂不能直接安装(需源码编译或环境不满足):仓库缺少 package.json,无法用 dsh 插件安装命令安装。 · 最近上游提交 2026/9/5 · 已提供中文文档
DeepSeek Harness 的桌面配置:在 harness Web 界面上叠加原生 Tauri 窗口——系统托盘、单实例、操作系统通知、仅建议式更新器、原生对话框、拖放,以及应用内设置标签页。
综合分
34.7
GitHub 分
34.7
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add s3yf1337/dsh-desktop仓库缺少 package.json,无法用 dsh 插件安装命令安装,改用 GitHub 源安装
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查需源码安装
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-desktop(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
仓库缺少 package.json,无法用 dsh 插件安装命令安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/18 05:20:14
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-desktop
在原生桌面窗口中运行的 DeepSeek Harness —— 以 harness 自身的构建方式构建:
作为插件,而非分支。
build
release
license
platform
dsh
dsh-desktop 是一个 DeepSeek Harness
配置文件(profile),它将标准 bundle(dsh-base + dsh-web-app)与一个小型插件组合在一起
—— 即本仓库的 dsh-desktop-shell —— 该插件在原生 Tauri 窗口中打开 harness 的 Web
界面:自定义标题栏、托盘图标、原生通知、真正的文件管理器面板,以及一键更新。
核心理念:桌面即插件
DeepSeek Harness 建立在一切皆插件的原则之上:
模型、工具、沙箱、会话存储、UI —— 甚至 agent 循环
本身。桌面体验也应遵循同样的规则。
本项目添加了一个原生窗口,无需分支或重新打包
harness。该配置文件只是简单的组合:
dsh --profile desktop → dsh-base + dsh-web-app + dsh-desktop-shell
这一个决定带来了很多好处:
- 始终同步。 harness 持续更新;你也一样。没有需要
rebase 的分支,也没有需要刷新的捆绑副本 —— 上游发布以你一贯的方式
直接进入你的配置文件。
- 可组合。 shell 只是你配置文件 bundle 列表中的一行。保留
你的其他 bundle,替换 Web 应用,添加插件 —— 桌面层始终
是一个层,而不是替代品。
- 小巧。 原生客户端是一个 Tauri 二进制文件,而不是捆绑的浏览器加上
完整运行时。你的 dsh 依然是你的 dsh。
- 诚实的取舍。 插件方式假定你已经运行 dsh。如果你
想要一个零前置依赖的单一安装程序,那么捆绑自身运行时的独立应用
是更好的选择。如果你想让桌面成为
你的 harness 的一部分 —— 相同的配置、相同的工作区、相同的插件 —— 那么
这个项目就是合适的选择。
功能特性
- 原生窗口,在 dock/任务栏中显示应用图标,并带有自定义标题
栏(拖拽区域、最小化/最大化/关闭),由 Web 界面绘制,
在每个平台上都与应用主题相匹配。窗口标题跟随
当前 UI 中打开的聊天(DeepSeek Harness — ),而不是
最后启动的 agent。
- 资源管理器面板 —— 真正的文件管理器。 浏览任意文件夹(不仅仅是
工作区),支持面包屑导航、后退/前进、名称过滤和递归
搜索,按名称/大小/日期排序。右键或键盘操作(F2 重命名,Del 删除
垃圾、箭头)来创建、重命名、复制、剪切、粘贴、删除、在外部打开。自你上次查看以来发生更改或创建的文件会被实时标记(自动刷新)。一个 Preview 标签页使用应用自带的渲染器渲染 markdown(标题、表格、任务列表、带复制按钮的语法高亮代码、数学公式——以及从本地磁盘解析的相对图片),渲染 mermaid 图表(随应用捆绑,可离线工作)和带折线/柱状图的 CSV/TSV 表格,在沙箱化框架中打开本地 .html 页面,显示图片(点击缩放、显示尺寸),对源代码文件进行语法高亮(shiki,应用自带的高亮器),并对二进制文件回退为十六进制转储。预览中的 URL 栏可打开任意网页(外部链接会转到系统浏览器)。当磁盘上的文件发生变化时,预览会自动重新渲染(文本上限 1 MiB / 图片上限 8 MiB)。
- 接入 harness。 右键点击文件 → Send path to agent 会将其工作区相对路径插入到编辑器中;图片可以附加到消息中——或者只需将图片文件拖入窗口:它会作为真实附件落入编辑器(任何其他文件则插入其路径)。工作区选择器(主界面 + 侧边栏 + 设置)是处于“选择文件夹”模式的该面板,而不是操作系统对话框。
- 可用的链接。 聊天和 markdown 预览中的每个 http(s)/mailto 链接都会在你的系统浏览器中打开——不再有 webview 内失效的 target="_blank" 点击。
- 聊天搜索(Ctrl/Cmd+F)。 一个覆盖对话的快速搜索栏:实时不区分大小写高亮,Enter/↑/↓ 在匹配项之间跳转,Esc 退出。高亮绘制在文本之上而不触碰消息 DOM,因此流式重新渲染绝不会破坏聊天。
- 托盘 + 关闭到托盘。 关闭窗口会将其隐藏;正在运行的 agent 继续工作。托盘菜单带有一个实时 agent 监视器:每个正在运行的 agent 都有可刷新的日志尾部和一个 Stop agent 操作,当 agent 完成时托盘图标上会显示徽章(从菜单中清除)。
- 原生通知,在 agent 完成、出错和提问事件时触发。
- 一键更新。 下载、应用、重启。不会自动应用任何内容;后台检查为可选加入(默认关闭)。
- 工作区选择,通过操作系统文件夹对话框,或将文件夹拖放到窗口中。
- harness 设置内的一个 dsh-desktop 标签页,用于桌面偏好设置。
截图
dsh-desktop
原生窗口中的 DeepSeek Harness:带有自定义标题栏和资源管理器面板的 harness web 界面。
安装
需要 dsh CLI。Rust 仅在从源码进行首次构建时需要——预构建的客户端二进制文件可跳过它。
各平台的预构建安装程序——.deb(Linux)、.dmg(macOS)、NSIS .exe(Windows)——发布在 releases 页面上。一个安装程序即可放置客户端二进制文件并注册应用菜单项;该
首次启动会将桌面配置文件引导到 dsh 中并打开窗口。
从源码安装(Linux/macOS 开发路径):
git clone https://github.com/s3yf1337/dsh-desktop && cd dsh-desktop
./install.sh # 完整引导(如需要则构建客户端)
./install.sh --no-build # 使用现有的客户端二进制文件,绝不构建
./install.sh --rebuild # 强制重新构建客户端
dsh-desktop
客户端二进制文件本身也是一个插件安装器:
dsh-desktop-shell install # 引导配置文件 + 安装客户端/启动器
dsh-desktop-shell install --prefix /usr # 操作系统软件包布局(菜单位于 /usr/share 下)
dsh-desktop-shell # 安装,然后启动配置文件
dsh-desktop-shell --version
可在 Linux、macOS 和 Windows 上运行。
技术细节(供贡献者参考)
工作原理
dsh --profile desktop (或 dsh-desktop 菜单启动器)
└─ dsh-base + dsh-web-app 整个 Web 界面:服务器、/api、SPA
└─ dsh-desktop-shell 本仓库的插件包:在服务器
绑定后,启动 dsh-desktop-shell 并监视它
└─ dsh-desktop-shell (原生客户端,src-tauri/)
在 http://127.0.0.1: 上打开原生 WebView
窗口关闭 → 退出码 0 → 插件关闭 harness
dsh-desktop 是 DeepSeek Harness 的一个配置文件,由标准包
(dsh-base + dsh-web-app)加上本仓库的
dsh-desktop-shell 插件组合而成。该插件在所提供的回环 URL 上启动原生 Tauri 客户端;
WebView 加载的正是浏览器会加载的同一个 127.0.0.1 源,因此整个 SPA
无需改动即可同源运行。客户端向该源暴露 window.__TAURI__
(withGlobalTauri),插件通过 stdin 控制通道
({"event":"notify", ...} JSON 行)将代理生命周期通知传递给客户端。窗口标题跟随
UI 中当前打开的聊天:浏览器部分从 harness 的 sessions 服务读取活动会话,
并将其同步到原生窗口和自定义标题栏。
安装选项
每个平台一个安装程序(来自 releases
页面):Linux 上为 .deb,macOS 上为 .dmg,Windows 上为 .exe(NSIS)。该
安装程序放置客户端二进制文件并注册应用菜单项;首次
启动已安装的应用时,会将插件配置文件引导到 dsh 中并打开
窗口。客户端二进制文件也是一个插件安装器:
dsh-desktop-shell install # 引导配置文件 + 安装客户端/启动器
dsh-desktop-shell install --prefix /usr # 操作系统软件包布局(菜单位于 /usr/share 下)
dsh-desktop-shell # 与 install 相同,然后启动配置文件
dsh-desktop-shell --version
从源码安装(Linux/macOS 开发路径),install.sh 的用法与之前相同:
./install.sh # 完整引导(如需要则构建客户端)
./install.sh --no-build # 使用现有的客户端二进制文件,绝不构建
./install.sh --rebuild # 强制重新构建客户端
install.sh 会创建 $DSH_HOME/profiles/desktop(复制并链接 bundle,
无需 pnpm/registry),在缺失时构建客户端,将
dsh-desktop-shell + dsh-desktop 启动器安装到 ~/.local/bin,将图标安装到 hicolor 主题,并注册桌面菜单项。
幂等:重新运行会刷新 bundle 副本,且绝不会触碰你的
profile 的 cordis.patch.yml 用户层。该二进制文件自带的 install 模式
是跨平台的等价方式(它内嵌了 bundle,因此一个产物即可安装
所有内容)。
发布产物(由 CI 构建)
每个 v 标签都会按平台构建、打包并发布:
- 安装程序 — DeepSeek Harness__amd64.deb(Linux)、
.dmg + .app(macOS)、NSIS .exe(Windows)
- 更新 tarball — dsh-desktop--linux-x86_64.tar.gz、
-macos-aarch64.tar.gz、-windows-x86_64.tar.gz(客户端二进制文件 + bundle/)
应用内的一键更新会下载对应平台的 tarball,替换
客户端二进制文件,刷新插件 bundle,然后重启。绝不会
自动应用任何内容;后台检查为可选加入(默认关闭)。
配置
dsh-desktop 启动器按以下顺序解析 dsh CLI:$DSH_DESKTOP_DSH →
$DSH_BIN → PATH 上的 dsh。DSH_HOME 会被继承(默认为
$HOME/.dsh)。
原生客户端支持:
- DSH_DESKTOP_NO_SINGLE_INSTANCE=1 — 跳过单实例保护,以便
第二个 harness 可以并行运行(开发/调试)
- DSH_DESKTOP_BIN — 显式的客户端二进制文件路径
bundle 插件中的客户端二进制文件解析顺序:config.bin → DSH_DESKTOP_BIN
→ $DSH_HOME/bin/dsh-desktop-shell → PATH 上的 dsh-desktop-shell →
~/.local/bin/dsh-desktop-shell。若未找到二进制文件,harness 仍会
提供 Web UI(降级为浏览器使用)。
窗口为无边框;Web 界面绘制标题栏(拖拽区域、
最小化/最大化/关闭、调整大小边缘)以及右侧的资源管理器面板
(Files/Preview 标签页)。当用户完成操作后,shell 以退出码 0 退出;
在一键更新后以退出码 11 退出(插件会重新启动 profile)。
布局
bundle/ dsh-desktop-shell 插件包(bundle 契约)
cordis.patch.yml 插入 desktop-shell 行
lib/index.js spawn/watcher 插件(webServer、appExit、stdin 控制、
仅限回环的 /dshd-file 路由:为预览面板提供本地文件
—— markdown 图片、.html 页面、资源)
lib/client.js 浏览器端:标题栏、资源管理器面板(markdown /
web / 图片 / hexdump 预览)、设置标签页
dist/ 仓库根目录的 tauri frontendDist:dist/index.html 加载
页面,WebView 在启动时显示。仅用于构建时/CI
—— 不属于 install.sh 的 bundle,后者随附
bundle/ (lib/ + cordis.patch.yml),而不是 dist/。
dsh-desktop 启动器包装器:exec dsh --profile desktop
install.sh 一键引导(配置文件 + 客户端 + 图标 + 菜单项)
src-tauri/ 原生渲染客户端(实际应用)
src/main.rs
src/lib.rs 参数分发(url | install | 无参数)、无边框窗口、
托盘、关闭到托盘、单实例、stdin 控制
src/install.rs 插件安装器模式(内嵌 bundle,跨平台)
src/fs.rs 资源管理器命令(列出目录、读取文件、stat、hexdump、
home、parent)
src/commands.rs 设置标签页调用的 desktop_ 命令
src/settings.rs 持久化的桌面偏好设置(dsh-desktop.json)
src/tray.rs 托盘图标 + 菜单(显示/隐藏、更新、退出)
src/update.rs 更新编排(检查、发出、通知、应用、重启)
src/updater.rs GitHub releases API 客户端(资产、建议 + 一键)
src/log.rs 文件 + stderr 日志(dsh-desktop.log)
Cargo.toml
tauri.conf.json
capabilities/default.json
test/client-smoke.mjs 渲染 client.js(标题栏模块 + 资源管理器 + 设置)
并测试预览辅助函数(markdown 图片
重写、TOC、URL 规范化、路径解析)
已安装的配置文件位于 $DSH_HOME/profiles/desktop/:
profiles/desktop/
package.json dsh.profile.bundles: base + web-app + dsh-desktop-shell
cordis.patch.yml 你的补丁层
packages/dsh-desktop-shell/ bundle/ 的副本(由 install.sh 刷新)
许可证
MIT扫码进群