DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Plugin Desktop Restart — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-plugin-desktop-restart

Plugin Desktop Restart

在 Windows 标题栏「应用 / 编辑」旁加一个重启按钮:第一次点击确认、再点一次重启 DeepSeek Harness 桌面应用(依赖 app.asar 补丁)。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:geitaHer0/dsh-plugin-desktop-restart#e29682532fde97c7f386157d56598e69064bc1f6
README兼容性版本

兼容性与来源证明

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

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

版本

0.1.0stable
2026/10/19

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Dafeiyudsh-dafeiyu由 DeepSeek Harness 会话事件驱动的原生桌面端 BigFish companion。Dream Skindsh-dream-skinDeepSeek Harness 换肤插件(Dream Skin for DSH):8 套 iOS / Linear 式清透冷调的高质感主题 + 弥散光壁纸 + 每款皮肤智能背景 + 强调色 + 主题包分享,把换肤做成材质与配色克制的高级感工艺,而非贴图。适用于原生 DSH Web 和第三方桌面客户端(DSH Desktop):8 套原创高质感主题、玻璃材质、壁纸 2.0Claude Styledsh-claude-styleDeepSeek Harness (dsh) Web GUI 的 Claude Code Desktop 主题——视觉与交互全面改造Codex Ui@michengai/dsh-codex-uiDSH Codex UI — 为 DeepSeek Harness Web 提供 Codex 风格侧栏、工作区会话树、全局搜索和轮次导航

README

dsh-plugin-desktop-restart

中文简介

在 DeepSeek Harness 桌面窗口的标题栏(「应用 / 编辑」同一行)右侧加一个重启按钮:第一次点击变为「确认重启」,再点一次才真正重启应用,避免误触中断正在运行的任务。

  • 重启由 Electron 外壳执行,插件通过打过补丁的 window.dshDesktop.restart() 调用;
  • 应用更新会替换 app.asar,补丁与按钮随之消失;用 tools/patch-shell-restart.mjs 重新打补丁即可恢复;
  • 按钮只在桌面应用窗口渲染(普通浏览器页面没有该桥接,不会显示);
  • 补丁原理与字节长度保持细节见下方英文小节。

A Restart button in the sidebar footer of the DeepSeek Harness Web GUI, next to the account credit chip.

Why the app has to be patched for this

The restart is the Electron shell's job — only it can relaunch the process — and the shell exposes exactly one channel to the page: the preload bridge (window.dshDesktop). That bridge ships with no restart method, and the shell's own "Restart App and Host" item is built behind a development flag, so a plugin cannot reach it. This plugin therefore needs two size-preserving edits inside the application's resources/app.asar, applied by tools/patch-shell-restart.mjs:

FileChange
/lib/main.jsA dsh-desktop:restart IPC handler that validates the sender and calls app.relaunch(); quitWithoutConfirmation() — the shell's own relaunch idiom.
/lib/preload-app.cjsrestart() on the dshDesktop bridge, so the page can invoke that handler.

Both edits keep their file's byte length identical (each inserts code and rewrites one comment block to absorb exactly the same number of bytes), so no offset in the ASAR moves and every other file stays untouched.

An app update replaces app.asar and removes the patch; the button then disappears by itself, because it only renders when the bridge actually provides restart (see below). Re-apply with the same tool to get it back.

What the button does

It sits in the Windows caption menubar, the row at the top of the application window that already holds 应用 / 编辑 (Application / Edit).

That row is built by the desktop preload, not by the Web client: it is a div[data-windows-menu] with an open shadow root containing a <style> and div[role=menubar], plus one button per menu. Open mode is what makes this placement possible without patching the shell again — the plugin reaches the menubar through host.shadowRoot and appends its own <button>, which the shadow tree's element styles then dress exactly like the shipped buttons. The plugin therefore ships no CSS at all.

  • It renders only when window.dshDesktop.restart is a function and the caption row exists. Opened as a plain page over the loopback URL there is no bridge and no caption row, so nothing is added rather than a button that cannot work. The preload mounts that row once the shell overlay appears, so the plugin watches for it (a MutationObserver plus a slow poll, both torn down with the plugin).
  • The confirmation lives in the button's own label: the first click turns 重启 into 确认重启 (tinted with the warning colour), and only the second click asks the shell to relaunch. The shell's relaunch path does not ask about in-flight work, so without that step a stray click would discard a running task. Clicking anywhere else withdraws the confirmation.
  • While the request is in flight the label reads 正在重启…; a refused request is reported in the label and logged to the console.
  • The label follows the interface language through the client locale service, and the button stays out of the menubar's roving tab order (tabIndex = -1).

Layout

PathRole
lib/client.jsThe whole feature: the caption-row mount, the button, its confirmation, and the zh/en dictionaries.
lib/index.jsHost half — an empty apply; the row just has to exist for the browser half to be served.
cordis.patch.ymlBundle patch inserting the desktop-restart row by bare package name (a subpath would leave the browser half unresolved).

Install and verify

Register the package as a profile bundle (cordis.patch.yml), then restart DSH so the client row is composed. The shell patch is applied with the tool bundled in this repository:

# rehearse on a workspace copy (the real archive is not touched)
node tools/patch-shell-restart.mjs "D:/DeepseekHarness/resources/app.asar"

# back up, install, re-verify; restores the backup automatically on any doubt
node tools/patch-shell-restart.mjs "D:/DeepseekHarness/resources/app.asar" --apply