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-powerbox

Powerbox

DSH Web UI 的电源操作:在标题栏中添加一个按钮,可重启或退出 DSH,且每项操作都需要经过独立的确认对话框。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:AsterLuo/dsh-powerbox#bc5840818e06ea141154f28412a94138ab44ee1b
README兼容性版本
Header power buttonRestart or quit, each behind a confirmation

兼容性与来源证明

Powerbox 以 dsh-powerbox 发布,当前版本为 1.0.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

1.0.0stable
2026/10/20

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

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 Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Client Ui Git Graph@linxin666/dsh-client-ui-git-graph外部 dsh Web GUI 插件:空会话 Git 分支选择器和 Git 图,包含实际的主机端 Git 操作与防护,作为 dsh 配置文件包

README

dsh-powerbox

A power button for the DeepSeek Harness Web UI: one click in the conversation header opens a small dialog offering Restart DSH or Quit DSH — and each of those asks for confirmation again before anything happens.

中文说明 →

Header power button

The two-step flow — pick an action, then confirm it:

Restart or quit, each behind a confirmation


Why

Restarting or quitting DSH normally means reaching for the tray icon / title bar and hunting through menus. That is awkward when the window is in the foreground and you are mid-session. This plugin puts both actions where you already are looking: the top-right of the conversation header.

Because both actions are destructive — restarting kills in-flight tool calls, quitting closes the app — the flow is deliberately two-step:

[⏻]  →  Choose an action  →  Restart DSH / Quit DSH
                            ↓
                         Confirm  →  act

Cancel, Esc and clicking the backdrop all exit without touching anything.

Requirements

  • DSH with the Web UI (dsh --profile <name>), version 0.2 or newer.
  • A desktop shell that exposes window.dshDesktop for the power actions. In a plain browser the button renders disabled with an explanatory tooltip instead of half-working.
    • Restart calls dshDesktop.boot.restart().
    • Quit calls dshDesktop._call('win.close-force', {}).

Install

dsh plugin --profile <your-profile> add github:AsterLuo/dsh-powerbox

The package declares dsh.bundle.patch, so the official CLI appends dsh-powerbox to dsh.profile.bundles on its own. You do not need to edit cordis.patch.yml or package.json by hand. Restart DSH (or reload the Web UI) and the button appears in the conversation header.

Using an older CLI that does not reconcile bundles? Then add the row manually to your profile's cordis.patch.yml:

- insert:
    - id: powerbox
      name: 'dsh-powerbox'

Uninstall

dsh plugin --profile <your-profile> remove dsh-powerbox

If you added the patch row by hand, delete it as well. Restart DSH afterwards.

How it works

PieceRole
cordis.patch.ymlInserts the plugin row into the composed profile (this is what makes it load).
lib/index.jsHost half. Intentionally a no-op — it only exists so the package is a valid bundle (the loader requires name + apply).
lib/client.jsEverything else: the header button, the mode dialog, both confirmation dialogs, and the bridge calls.

The client half registers one entry in the conversation.session.header.utilities slot (a list slot, session scope — the same one the official Open in app action uses), which is what places the button at the right end of the conversation header.

  • No build step. It is a hand-written window.__ModuleLoader__.load({ id, factory }) bundle, exactly like the built-in plugins.
  • No runtime dependencies. react is provided by the host through the module loader.
  • Styling uses only --dsw-alias-* theme tokens, so it follows light and dark themes.

Safety details

  • The confirm button disables itself while the request is in flight, and a synchronous re-entry guard makes a second call impossible even if the click is dispatched programmatically.
  • Esc closes the dialog — except while an action is running, so you cannot hide a restart you already triggered.
  • Focus returns to the power button when the dialog closes.
  • Failures are reported in the dialog with a retry path, never swallowed.

Development

npm install
npm test        # node --test, jsdom-backed
npm run check   # syntax check both halves

The tests drive the real plugin bundle in a jsdom window with a recording window.dshDesktop stub. react is replaced by a small hook-compatible stub (see test/harness.mjs), because the real one is supplied by the host at runtime and is not a dependency of this package. Covered: slot registration contract, the full click-through of both flows, "no bridge call before the second confirmation", exactly-one-call, in-flight disabling, Esc, backdrop, focus restore, missing-bridge degradation, error surfacing, and the package/patch metadata that the installer relies on.

License

MIT © AsterLuo