DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-plugin-desktop-updates

Plugin Desktop Updates

DeepSeek Harness Windows 桌面应用的更新和插件管理:在“设置”旁边添加侧边栏入口和设置部分,由应用的原生桥接驱动。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:desanv01/dsh-plugin-desktop-updates#edb1deccc6b5bc60704a9ead5b6a5799c4efe27c
README兼容性版本

兼容性与来源证明

Plugin Desktop Updates 以 dsh-plugin-desktop-updates 发布,当前版本为 1.3.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/20

版本

1.3.0stable
2026/10/20

相关插件

正在加载相关插件…

最新版
1.3.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/20
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Client Ui Skill Explorer@linxin666/dsh-client-ui-skill-explorerDSH 技能中心:按来源(bundled / project / user / custom / runtime)浏览已加载的技能,在 Web GUI 面板中启用或禁用、创建和删除技能。Better Sidebardsh-better-sidebarBetter Sidebar for DSH — 在一列中提供文件树、编辑器、变更、任务和侧边聊天,并为每个对话单独显示。同时提供服务,供其他插件注册侧边栏标签页和文件查看器。Client Ui Git Graph@linxin666/dsh-client-ui-git-graph外部 dsh Web GUI 插件:空会话 Git 分支选择器和 Git 图,包含实际的主机端 Git 操作与防护,作为 dsh 配置文件包

README

dsh-plugin-desktop-updates

A DeepSeek Harness plugin that renders the Updates UI of the Windows desktop app: a row beside Settings, an Updates panel, and an Updates section, driven by the app's native page bridge.

It shows the desktop app's version, the installed and published harness versions, and the plugins this home runs — with the actions to check, download, install, restart, repair the harness, and enable, disable, install or remove plugins.

Project status: 1.3.0, published on npm. Verified against the DeepSeek Harness 0.1.5-rc.x runtime that the Windows desktop app bundles. The desktop app it serves is archived, and this plugin depends on that app's own page bridge (window.__dshDesktop), which the official DeepSeek Harness desktop app does not provide. In the official app the plugin loads and renders, but reports that the bridge is unavailable — because it is. See §Why this exists.

Screenshots

The UI appears in the desktop app that bundles it. Screenshots of the app window, including the Updates panel, are in the app repository.

Why this exists

The app needed a settings surface — the app's version, whether the harness was current, what plugins this home runs, and buttons to act on all of it — without rebuilding a native window for every change. The app already rendered the harness web UI in WebView2, so the surface became a plugin: sidebar row, panel and Settings section, all in the page the user is already looking at.

That decision had one consequence worth stating. The facts and the actions live in the app, not the page, so the page needs a channel back to it. The app injects a versioned bridge, window.__dshDesktop, into every page it loads, and this plugin is the only consumer of it.

That bridge is the reason this plugin is tied to one app. The official DeepSeek Harness desktop app ships its own plugin manager and its own updates view; it does not expose __dshDesktop. Installed there, this plugin registers its slots and then reports that it cannot reach the app — which is accurate, and better than a panel that looks live and does nothing.

What it does

  • A row beside Settings in the sidebar — a labelled entry (an icon in the 56 px rail) that opens the Updates panel, with a dot when a newer app build exists.
  • A panel, full view, in the app's own window: the facts plus check, download, install, restart and repair, and the plugin list with enable, disable, install and remove.
  • A Settings section with the same facts and actions in a narrower form.
  • Reports what the shell refused. The shell drops a slot registration it dislikes without telling anyone, so a plugin whose UI never appears looks exactly like one that never loaded. This plugin publishes what it registered — and every refusal — to window.__dshDesktopUpdates and to the app's log.
  • Degrades honestly. With no bridge, it says the app is unavailable instead of pretending the panel works.

How it works

The four slots it contributes

SlotEntryWhat it renders
sidebar.footer.actionid desktop-updatesA labelled row beside Settings (an icon in the 56 px rail) that opens the Updates panel; a dot when a newer app build exists
sidebar.panellistid desktop-updatesThe sidebar row for the Updates panel, addressed by the same id as the body below
mainkey desktop-updatesThe Updates panel itself: the full view, in the app's own window
settings.sectionid desktop-updatesThe concise view inside Settings, with the same facts and actions

The three list slots require an id and the keyed main slot requires a key; the shell rejects a registration that omits either.

Opening the panel is a layout action, not a bridge call

The plugin selects its own panel through ctx.layout.selectPanel, so the view appears in the window the user is already looking at, and opening it cannot fail because the bridge is unavailable. When the shell has no panel slot to select, it falls back to the app's native updates window — the same window the tray menu opens.

The registration marker

client.js writes window.__dshDesktopUpdates as it applies: the slots it registered and every contribution the shell refused. The app reads that marker after each page load and logs it. The Updates section repeats any refusal, because that is the only place a user would see it.

Version skew

The app leaves an installed version alone when it is newer than the copy inside its executable, so a newer npm release is not undone by the next launch. DeepSeekHarness.exe --install-plugin restores the bundled copy deliberately.

Requirements

  • A DeepSeek Harness 0.1.x composition with the layout service — the runtime the Windows desktop app bundles.
  • @deepseek-ai/dsh-client-ui-layout, declared in dsh.client.inject, which the host must provide.
  • For anything to be actionable: the desktop app's window.__dshDesktop bridge.

Quick start

Install from npm

dsh plugin --profile web add dsh-plugin-desktop-updates

Install into the desktop app

The app installs its bundled copy by itself, into the harness home it owns. From inside the app, use Settings → Updates → the plugin manager, which accepts a package name, a git spec or a local folder. Installing from npm replaces the bundled copy with the published one.

Build from source

Nothing to build — the client half is a hand-written module-face bundle:

git clone https://github.com/desanv01/dsh-plugin-desktop-updates.git
cd dsh-plugin-desktop-updates
dsh plugin --profile web add .

Smoke test

The client half can be rendered headlessly against a fake shell; that is how the desktop app's own CI checks it, with tools/client-plugin-smoke.mjs in the app repository. It loads the real client.js, enforces the real slot rules (a list entry needs an id, the panel slot needs a key) and fails if a registration is dropped.

Configuration

None. The plugin reads no Config values; it renders what the bridge reports.

Slots used

See the four-slot table in §How it works. main is keyed; the other three are addressed by id.

Where things live

PiecePath
Host halfindex.js — an empty apply, so the row exists in the profile's bundle stack and the loader keeps it
Browser halfclient.js — a module-face bundle (window.__ModuleLoader__.load({ id, factory }))
Loader rowcordis.patch.yml — inserts the row desktop-updates
Registration markerwindow.__dshDesktopUpdates, plus the app's log
Bridge it consumeswindow.__dshDesktop, injected by the app

Troubleshooting

SymptomCauseFix
No sidebar row at allThe bundle row is missing from the profile, or the client half was not servedCheck cordis.patch.yml is installed, then read window.__dshDesktopUpdates in the page
Row appears, panel says the app is unavailableNo window.__dshDesktop — this is the expected result outside the Windows desktop appUse the app that provides the bridge
Row appears, panel is emptyThe bridge exists but reported no stateCheck the app's log for the marker it logs after each page load
Settings section missing but the panel worksThe shell refused the settings.section registrationThe section repeats refusals; the marker lists them
A newer npm version did not take effectThe app keeps an installed version newer than its bundled copySee §Version skew

Current status

Working, for the app it was built for.

Verified: the four slot registrations against a fake shell that enforces the real rules; the layout-action path and the native-window fallback; the marker and its logging; and honest degradation when the bridge is absent. Published on npm from 1.0.0 through 1.3.0.

Not verified: the official DeepSeek Harness desktop app. That app provides no __dshDesktop bridge, so this plugin's value there is zero even if every slot registers. The plugin is maintained as part of the archived Windows desktop app, not as a plugin for the official one.

Roadmap

  • Sidebar row, panel and Settings section
  • Check, download, install, restart and repair the app and the harness
  • Plugin list with enable, disable, install and remove
  • Registration marker, so a refused slot is visible instead of silent
  • Honest degradation without the bridge
  • Decide whether to re-target the official app's own plugin settings surface, or retire

Security

This plugin is a UI that asks the app to act. It performs no update, install or removal itself: every button posts a message over the app's bridge, and the app does the work with its own verification — checksum verification of downloads, and the harness's own plugin manager for installs.

It makes no network calls, reads no credentials, and writes no files. It does read app and harness version state through the bridge, which is not sensitive.

Installing any plugin runs host code outside the workspace sandbox; that is a property of the harness, not of this plugin. Install from the npm package or from source you have read.

Report a vulnerability through the process in SECURITY.md.

Contributing

See CONTRIBUTING.md. The review bar: does a refused registration stay visible, and does the plugin behave honestly when the bridge is absent?

License and attribution

MIT — see LICENSE.

Extracted from desanv01/deepseek-harness-desktop-app, where it shipped inside the executable and on npm.