把网页界面装进原生窗口,带托盘通知与文件管理器
34.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:npm 同名包「dsh-desktop-shell」归属 ringolink/dsh-desktop-shell,装到的可能不是本插件;安装清单取自 bundle/package.json。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add s3yf1337/dsh-desktop该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 59 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/25) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意npm 同名包「dsh-desktop-shell」归属 ringolink/dsh-desktop-shell,装到的可能不是本插件;安装清单取自 bundle/package.json
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-desktop-shell @ 1.1.3
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 23:25:25
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)
查看扫描证据(共 12 处,展示前 10 条)
- 写入剪贴板bundle/lib/client.js:2654
writeClipboard(entry.path); - 写入剪贴板bundle/lib/client.js:3552
onClick: () => writeClipboard(preview.kind === "url" ? preview.url : preview.path), - 读取本地文件bundle/lib/index.js:238
meta = await stat(path); - 读取本地文件bundle/lib/index.js:251
body = await readFile(path); - 读取本地文件bundle/lib/index.js:343
meta = await stat(path); - 读取本地文件bundle/lib/index.js:356
body = await readFile(path); - 读取本地文件bundle/lib/index.js:389
if (existsSync(candidate)) return candidate; - 读取本地文件bundle/lib/index.js:409
if (!existsSync(value)) throw new Error(`configured client binary not found: ${value}`); - 执行外部命令来自配置/变量bundle/lib/index.js:612
child = spawn(bin, [url], { - 执行外部命令来自配置/变量bundle/lib/index.js:777
const profile = spawn(candidates[0], ["--profile", "desktop"], {
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
1 张 · 点击查看大图功能亮点
- 网页界面套原生窗口
- 托盘与系统通知
- 原生对话框与拖放
DeepSeek Harness 的桌面配置档:在 harness web 界面上套一个原生 Tauri 窗口——托盘、单实例、系统通知、仅提示的更新器、原生对话框、拖放,还有应用内设置标签页。
README
由 DeepSeek 最新模型翻译生成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 持续更新;你也一样。
展开完整文档(README 剩余 1 节)
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预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
s3yf1337/dsh-desktop
把网页界面装进原生窗口,带托盘通知与文件管理器
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目