🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

桌面多应用壳 kaerf15/dsh-plus

DeepSeek Harnessv0.1.1
kaerf1552 天前有提交已提供中文文档扫描:含敏感能力

把网页服务收进原生窗口,会话完成即推送系统通知

30.1/100
综合分
1
GitHub 星标
31
npm 周下载
—/5
用户评分

数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-plus
npm 源 · dsh-plus 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · desktop
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 52 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-plus @ 0.1.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 14:41:19

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 31 处,展示前 22 条)
  • 读取本地文件
    lib/index.js:61
    try { return JSON.parse(readFileSync(MODLENS_CONFIG, 'utf8')); } catch { return {}; }
  • 写入本地文件
    lib/index.js:82
    mkdirSync(dirname(MODLENS_CONFIG), { recursive: true });
  • 写入本地文件
    lib/index.js:83
    writeFileSync(MODLENS_CONFIG, JSON.stringify(next, null, 2));
  • 读取本地文件
    lib/index.js:90
    const parsed = yaml.load(readFileSync(profilePatchPath(), 'utf8'));
  • 读取本地文件
    lib/index.js:107
    const parsed = yaml.load(readFileSync(path, 'utf8'));
  • 写入本地文件
    lib/index.js:113
    mkdirSync(dirname(path), { recursive: true });
  • 写入本地文件
    lib/index.js:114
    writeFileSync(path, yaml.dump(entries, { lineWidth: -1 }));
  • 发起网络请求
    lib/index.js:129
    const res = await fetch(url, {
  • 读取本地文件
    lib/index.js:156
    const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'));
  • 读取本地文件
    lib/index.js:161
    if (!existsSync(p)) continue;
  • 读取本地文件
    lib/index.js:163
    try { m = JSON.parse(readFileSync(p, 'utf8')); } catch { continue; }
  • 写入本地文件
    lib/index.js:169
    writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n');
  • 执行外部命令来自配置/变量
    lib/index.js:175
    const child = spawn(pnpm, ['add', spec], {
  • 发起网络请求
    lib/index.js:227
    const res = await fetch(s.baseURL + '/models', { signal: AbortSignal.timeout(3000) });
  • 写入本地文件
    lib/index.js:249
    writeFileSync(settingsPath(), yaml.dump(doc, { lineWidth: -1 }));
  • 执行外部命令固定命令
    lib/index.js:360
    const child = spawn('cmd.exe', args, { detached: true, stdio: 'ignore', windowsHide: true });
  • 发起网络请求
    lib/client.js:74
    fetch('/api/dsh-plus/modlens').then(function (r) { return r.json(); }).then(function (d) {
  • 发起网络请求
    lib/client.js:89
    fetch('/api/dsh-plus/modlens', {
  • 发起网络请求
    lib/client.js:135
    fetch('/api/dsh-plus/mneme').then(function (r) { return r.json(); }).then(function (d) {
  • 发起网络请求
    lib/client.js:143
    fetch('/api/dsh-plus/mneme', {
  • 发起网络请求
    lib/client.js:184
    fetch('/api/dsh-plus/plugins/installed').then(function (r) { return r.json(); }).then(function (d) { setInstalled(d.items || []); }).catch(function ()
  • 发起网络请求
    lib/client.js:190
    fetch('/api/dsh-plus/plugins?q=' + encodeURIComponent(query.trim()) + '&limit=15')
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 网页服务收进原生窗口
  • 会话完成推送系统通知
  • 多应用容器

DSH+:给 DeepSeek Harness web 套原生桌面窗口的多应用容器(electron,macOS/Windows)

v0.1.82026-09-06
DSH+ 0.1.8 — 给 DeepSeek Harness 套原生桌面窗口的多应用容器。 · macOS 只发一份:DSH+-0.1.8-arm64.dmg(Apple Development 签名,未公证) · Windows:DSH+ Setup 0.1.8.exe(未签名) · 不绑定 DSH 版本;本地/远程消息通知;兼容 pi-web macOS 首次打开 1. 拖进「应用程序」后若被 Gatekeeper 拦截:右键 DSH+ → 打开 2. 或系统设置 → 隐私与安全性 → 仍要打开 3. 若提示已损坏:xattr -dr com.apple.quarantine /Applications/DSH+.app 4. 系统设置 → 通知 → DSH+,再在鲸鱼菜单打开「通知设置」 Windows SmartScreen 可能拦截(更多信息 → 仍要运行)。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
DSH+ 给 DeepSeek Harness 套一个原生桌面窗口的多应用壳。它不止是“桌面版”,更把多智能体协作里最容易被忽略的消息通知补齐成刚需功能。 DSH+ 界面 license platform dsh 它特别在哪 1. 不绑定任何 DSH 版本——为所有版本的 Harness 套一个壳 壳与内容彻底解耦。 DSH 本体和插件在 ~/.dsh 里照常更新升级,壳内部不绑死版本号。所以 DSH 每发一次新版本,你不用跟着重新打包这个壳——它天然兼容任意版本,装完即用。 2. 消息通知——多智能体协作的刚需 ⚠️ 消息通知需要装插件(dsh-plus-surface / pi-dsh-plus-surface),壳本身不内置通知能力。未装插件时只降级为轮询角标,不会有系统通知。装法见下文「会话状态与显示面」。 装上插件后,无论 DSH / pi-web 装在本地还是远程电脑,都能拿到消息通知。远程场景(比如装在另一台机器/服务器上,经 DSH_URL 或端口映射连过来)也一样:远端装了插件 → 走事实出口拿全保真的精确状态;远端没装插件 → 自动退化为轮询(仍有基本角标/完成气泡,但无精确中断识别与命名)。 - 会话完成、等待你回应(待交互/未读)时,壳会推给你系统通知。 - 除了 DSH 会话,你也可以把其他消息源推到上面,统一收口。
展开完整文档(README 剩余 1 节)
DSH+

给 DeepSeek Harness 套一个原生桌面窗口的多应用壳。它不止是“桌面版”,更把多智能体协作里最容易被忽略的消息通知补齐成刚需功能。

DSH+ 界面

license platform dsh

它特别在哪

1. 不绑定任何 DSH 版本——为所有版本的 Harness 套一个壳

壳与内容彻底解耦。 DSH 本体和插件在 ~/.dsh 里照常更新升级,壳内部不绑死版本号。所以 DSH 每发一次新版本,你不用跟着重新打包这个壳——它天然兼容任意版本,装完即用。

2. 消息通知——多智能体协作的刚需

⚠️ 消息通知需要装插件(dsh-plus-surface / pi-dsh-plus-surface),壳本身不内置通知能力。未装插件时只降级为轮询角标,不会有系统通知。装法见下文「会话状态与显示面」。

装上插件后,无论 DSH / pi-web 装在本地还是远程电脑,都能拿到消息通知。远程场景(比如装在另一台机器/服务器上,经 DSH_URL 或端口映射连过来)也一样:远端装了插件 → 走事实出口拿全保真的精确状态;远端没装插件 → 自动退化为轮询(仍有基本角标/完成气泡,但无精确中断识别与命名)。

- 会话完成、等待你回应(待交互/未读)时,壳会推给你系统通知。
- 除了 DSH 会话,你也可以把其他消息源推到上面,统一收口。
- 通知图标采用苹果 Touch Bar 的设计灵感——功能区就是一条“外接状态条”,把进行中会话数、待交互/未读气泡、Dock 角标、系统通知渲染成直观的状态。

需要在系统里开启。 系统通知默认是关闭的,用之前请先开启:左侧工具栏第一个鲸鱼图标(DSH)上右键 → 「通知设置」,并在 macOS 系统设置 → 通知 → DSH+ 里允许通知。只在壳退到后台时才推送,前台不打扰。

鲸鱼右键菜单:通知设置入口

3. 兼容 pi-web,也能加任何网页

不只是 DSH。当你也在用 pi-web(本地或远程),装上对应插件后同样能收到“消息完成通知”。而且功能区的 + 可以添加任意 http(s) 本地服务或网页——把常用的工具都收进一个桌面窗口里。

核心能力

- 免打包免签名运行:npm install && npm start 直接跑,无需签名。
- 自动连接 dsh web:扫描本机端口命中 dsh 特征,也能 + 手动加任意应用(不写死端口)。
- 消息通知:完成 / 待交互系统通知,仅后台推送(需在系统里开启)。
- 显示面管道:功能区 Fact → Item → Hub 把会话状态渲染成角标与气泡(配 plugins/dsh-plus-surface)。
- 托盘守护:关窗口不退出,鲸鱼图标保留;完全退出时才停止当前端口上的 dsh。
- 原生右键兜底:补裁剪/复制/粘贴、链接、图片、刷新、开发者工具,并避开页面自有菜单。
- 本地应用启动器:在 recipes/recipe.json 加一条即可出现在条目带,一键启动任意应用。

运行

cd dsh-plus
npm install
npm start # = electron .

前置:本机已安装 DSH(npm i -g @deepseek-ai/dsh)。未安装时壳会弹出版本选择面板,一键安装并自动拉起。

连接 dsh web(不写死端口)

1. 显式 DSH_URL 环境变量(最高优先)
2. 扫描本机监听端口,命中 dsh 特征(见 lib/detect-dsh.js)
3. 都没找到且允许自动拉起:自选空闲端口(从 3080 起),dsh web --port N --no-open 并等待就绪

远程场景:dsh 或 pi-web 装在另一台电脑/服务器上时,用 DSH_URL 指向它的地址即可(如 http://192.168.1.20:3080,或经端口映射/隧道暴露的地址)。远端装了插件(dsh-plus-surface / pi-dsh-plus-surface)→ 走事实出口拿全保真的精确状态(含精确结束时刻、中断识别、命名);远端没装插件 → 自动退化为轮询(仍有基本角标/完成气泡)。两种情况下消息通知都能到你这台机器上,只是精确度有差。

| 变量 | 作用 |
| DSH_URL | 显式地址,如 http://127.0.0.1:8080(本地)或 http://192.168.1.20:3080(远程) |
| DSH_SHELL_NO_SPAWN=1 | 禁止自动拉起 dsh |
| DSH_SHELL_SIGNATURES | 覆盖检测特征(逗号分隔,官方改版救场) |
| DSH_SHELL_NATIVE_MENU=0 | 关闭应用区原生右键菜单兜底 |

dsh 0.1.2+ 浏览器鉴权:壳在能拿到 launch token 时静默换 cookie 再加载页面;换不到则走官方 401,不替换成引导页。

会话状态与显示面(推荐装插件)

消息角标/气泡的完整能力需要两个插件,分别接 DSH 侧和 pi 侧的事实:

- dsh-plus-surface(已发布 npm,v0.2.4)——dsh 侧事实桥。把 DSH 进程内的会话事实(进行中/结束/被查看)写成 ~/.dsh/dsh-plus/bridge.json,并为壳提供页面内会话跳转入口。
- pi-dsh-plus-surface(已发布 npm,v0.1.2)——pi 侧事实插件。把每个 pi 会话的进行中/结束/命名事实写成分片文件(~/.pi/dsh-plus/facts/.json),壳读目录合并出角标与气泡。TUI 与 pi-web 通用(全局装一次两边都生效)。

装 dsh 侧插件(npm 安装):

dsh plugin --profile web add dsh-plus-surface
部署到 ~/.dsh/profiles/web 后在该目录 pnpm install --force 重打包

装 pi 侧插件(pi packages,npm 源):

pi install npm:pi-dsh-plus-surface
或写入 ~/.pi/agent/settings.json 的 "packages": ["npm:pi-dsh-plus-surface@0.1.2"]

- 进行中:DSH 图标左上角绿色角标(进行中会话数)
- 待交互 / 已完成未看:鲸鱼右侧条目带气泡(红/黄语义色),悬停看标题 + 目录,点击跳对话
- Dock / 任务栏角标:待交互 + 已完成未看总数
- 系统通知(默认关):仅在壳后退时推送,前台不打扰

插件未装时自动降级为轮询 session.list。事实文件:~/.dsh/dsh-plus/bridge.json。

pi-web

添加 http://127.0.0.1: 为应用;busy 灯走 HTTP 轮询 /api/sessions。完整会话气泡需装 plugins/pi-dsh-plus-surface。pi-web 装在远程电脑上也可以——在功能区 + 添加远程地址(如 http://192.168.1.20:,或经端口映射/隧道暴露的地址),远端装了 pi-dsh-plus-surface 插件后,serve-facts.mjs 会提供 HTTP 只读事实出口(默认 DSH_PLUS_FACTS_PORT 3099),壳拉取后同样能出角标、完成气泡与消息通知。pi-web 的 GitHub 仓库见 agegr/pi-web。

下载安装包

从 Releases 直接下载即可,无需自己打包。

macOS(仅 arm64:DSH+-0.1.8-arm64.dmg)

官方只发这一份 DMG:已用 Apple Development 签名(Hardened Runtime),通知中心可用;未公证,网上下载后 Gatekeeper 会拦一次。

1. 双击 DSH+-0.1.8-arm64.dmg,把 DSH+ 拖进「应用程序」。
2. 首次打开若弹出 “无法验证开发者” 或 “Apple 无法确认是否含恶意软件”,右键 DSH+ → 打开,再点 “打开”。
3. 仍被拦截:系统设置 → 隐私与安全性 → “仍要打开”。
4. 若提示 App 已损坏:xattr -dr com.apple.quarantine /Applications/DSH+.app。

装好后:系统设置 → 通知 → DSH+,再在鲸鱼菜单 → 「通知设置」 打开开关。

Windows(.exe,未签名)

1. 双击 DSH+ Setup 0.1.8.exe 安装。
2. SmartScreen 若弹出 “Windows 已保护你的电脑”,点 “更多信息” → “仍要运行”。
3. 若被杀软拦截,放行一次即可。

macOS 通知中心

⚠️ 只有已签名的 .app 才能把消息推到「通知中心」。请用上面这份 Release DMG。npm start 未签名,只能显示功能区 / Dock 角标。

源码打包(可选)

你自己改源码后想重新打包:

npm run dist # electron-builder --dir → dist/mac-arm64/DSH+.app 或 dist/win-unpacked/
npm run dist:signed # macOS arm64:签名、打出这一份 DMG,并安装到 /Applications/DSH+.app

自用开发直接 npm start 即可,不必打包。

目录结构

dsh-plus/
├── main.js # 主进程:窗口、托盘、应用容器、显示面 Hub、通知 ├── lib/ │ ├── dsh-service.js # dsh web 生命周期(解析/拉起/停止/重启) │ ├── detect-dsh.js # 端口自动检测 │ ├── dsh-manage.js # DSH 安装/版本管理 │ ├── dsh-auth.js # 0.1.2+ launch token → cookie │ ├── bridge.js # dsh 事实源(读 bridge.json / HTTP 降级) │ ├── notifications.js # 系统通知中心 │ ├── surface/ # 显示面管道(model / hub / adapters / attention) │ ├── shell-ui.html # 功能区 UI │ └── shell-preload.js ├── plugins/ │ ├── dsh-plus-surface/ # dsh 侧:事实出口 + 动作入口 │ └── pi-dsh-plus-surface/# pi 侧:分片事实写 ~/.pi/dsh-plus/facts/ ├── recipes/recipe.json # 默认显示面投影规则 ├── scripts/ # mac 签名打包、Tailscale 等 └── test/ # node --test test/*.test.mjs

License

MIT © kaerf15
预览分享卡片长什么样 ↓kaerf15/dsh-plus
分享 · DeepSeek Harness Hub
kaerf15/dsh-plus

把网页服务收进原生窗口,会话完成即推送系统通知

这是你的仓库?认领条目

回到顶部