DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

dsh-plugin-hot-toggle

Plugin Hot Toggle

在 DeepSeek Harness 的 Web 设置中热切换任意已安装的插件——立即生效,无需重启,状态持久化。

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-plugin-hot-toggle@0.1.4
README兼容性版本
Plugin Toggle tab (English UI)

兼容性与来源证明

Plugin Hot Toggle 以 dsh-plugin-hot-toggle 发布,当前版本为 0.1.4。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.4stable
2026/8/16
0.1.3stable
2026/8/16
0.1.2stable
2026/8/16
查看其余 1 个版本收起版本
0.1.0stable
2026/8/16

相关插件

正在加载相关插件…

最新版
0.1.4
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
539.1 kB
文件数
10
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
119
安全扫描
✓ v0.1.4 扫描通过
最近提交
2026/8/16
查看源码 ↗项目主页 ↗
README Badge

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Pet@linxin666/dsh-pet适用于 dsh Web GUI 的多宠物伴侣插件:由注册表驱动的浮动宠物,可响应模型活动,支持为每只宠物命名、抚摸/喂食互动以及亲密度评分

README

dsh-plugin-hot-toggle

Hot-toggle any installed plugin from the DeepSeek Harness Web settings page (Plugins → 启停管理): stop or start a Cordis Loader entry in-process with instant effect and no DSH restart — the state persists across restarts.

中文文档 | English

Features

The 启停管理 (Plugin Toggle) tab in the Web settings:

Plugin Toggle tab (English UI)

  • Hot toggle: calls the official Cordis Loader Entry.update({ disabled }) — disabling disposes the plugin fiber, enabling re-imports and starts it, all in-process with instant effect. No DSH restart needed.
  • Persistent: the toggle state is written to the profile patch layer ($DSH_HOME/profiles/<profile>/cordis.patch.yml) and hot-applied by the official HMR watcher on save — survives restarts.
  • Safety guard: system-core entries (include, cordis:*, loader/hmr/timer, the dynamic-plugin host) cannot be toggled and are marked 「系统核心」.
  • Multi-dimensional filters (combinable):
    • State: all / enabled / disabled
    • Source: all / official / core / community (community = a matching directory under $DSH_HOME/plugins)
    • Type: builtin framework / client UI / LLM / tools / session & storage / sandbox & exec / agent & planning / services & integration / other
    • Search + live count (filtered / total)
  • Sorting: recent-first (community plugins ahead) or by name.
  • i18n: the UI follows the DSH language preference (中文/English) via the official locale service (namespace pluginHotToggle, 39 balanced keys).

Installation

From a local checkout (development)

dsh plugin --profile web add ./dsh-plugin-hot-toggle

From npm (after publish)

dsh plugin --profile web add dsh-plugin-hot-toggle

From git (after publish)

dsh plugin --profile web add github:5102a/dsh-plugin-hot-toggle

After installation, start DSH (or let HMR apply it) and open Settings → Plugins → 启停管理.

Platform support

The plugin runs on Windows, macOS, and Linux — the three platforms DeepSeek Harness itself supports.

ConcernGuarantee
Host halfAll filesystem paths go through node:path (join/dirname) and fileURLToPath; no hardcoded separators
PersistencePatch-layer writes use readFileSync/writeFileSync(…, 'utf8') with paths derived from the Loader include
HTTP API/plugin-hot-toggle/api/* is a URL route — platform-independent
Client halfPure browser fetch + React; no process.platform/navigator.platform branches
Buildscripts/build.mjs resolves paths from import.meta.url via fileURLToPath + join
Dev toolingChrome/Edge discovery honors CHROME_PATH/CHROME_BIN or a cross-platform candidate list; DSH_URL overrides the target origin
CIGitHub Actions matrix: ubuntu + windows + macos × Node 18/20/22

How it works

┌─────────────────────────────┐         ┌──────────────────────────────┐
│  Web (client half)          │  fetch  │  Node (host half)             │
│  settings.plugins.tab       │ ──────► │  /plugin-hot-toggle/api/*     │
│  「启停管理」tab             │  JSON   │  ┌──────────────────────────┐ │
│  - list + filters + sort    │ ◄────── │  │ ctx.loader.entries()     │ │
│  - toggle buttons           │         │  │ entry.update({disabled}) │ │
└─────────────────────────────┘         │  │ → fiber dispose / start  │ │
                                        │  └──────────────────────────┘ │
                                        │  ┌──────────────────────────┐ │
                                        │  │ persistence: write       │ │
                                        │  │ cordis.patch.yml → HMR   │ │
                                        │  └──────────────────────────┘ │
                                        └──────────────────────────────┘
  • Node half uses only public seams (loader, webServer, dshHomePath) — zero DSH core changes. webServer is injected dynamically, so TUI/headless surfaces never pend.
  • Web half talks to the Node half over a same-origin HTTP API; mutating requests carry a same-origin check (missing Origin / cross-origin → 403).
  • Client bundle is generated from src/client.js by a zero-dependency build script (node scripts/build.mjs) and committed to the repo, so git/npm installs need no build step.

Project layout

dsh-plugin-hot-toggle/
├── package.json         # dsh.bundle declaration + peerDependencies + exports
├── index.d.ts           # Host half type declarations
├── index.js             # Node half: loader list/toggle + webServer HTTP API
├── cordis.patch.yml     # bundle layer: inserts the plugin row
├── src/client.js        # Web half source (React)
├── lib/client.js        # Web half build artifact (generated, do not edit)
├── scripts/build.mjs    # zero-dep client bundle build
├── scripts/screenshot.mjs   # headless-Chrome UI screenshot (CDP, zero deps)
├── scripts/verify-render.mjs # verify the 启停管理 tab rendered
├── scripts/debug-dom.mjs    # DOM/slot debugging helper
├── tests/patch.test.js  # unit tests (node:test)
├── .dsh/skills/dsh-plugin-hot-toggle/SKILL.md  # project skill: dev/build/publish SOP
└── .github/workflows/ci.yml  # CI: build + artifact freshness + tests

API

MethodPathBodyReturns
GET/plugin-hot-toggle/api/list—{ entries: PluginEntry[] }
POST/plugin-hot-toggle/api/setEnabled{ entryId, enabled }SetEnabledResponse

See index.d.ts for PluginEntry / SetEnabledResponse.

Development

npm run build   # generate lib/client.js from src/client.js
npm test        # node:test unit tests
npm run check   # build + test in one step

Publishing

npm run check && npm run build
npm publish

The name dsh-plugin-hot-toggle was verified available with npm view before release.

Note on peer-dependency warnings: the package declares @deepseek-ai/cordis and react as peer dependencies (the same pattern as the official @deepseek-ai/* plugins). DSH resolves them from its own installation via the profile's flat fallback, so an "unmet peer" warning during dsh plugin add is expected and harmless.

License

MIT — see LICENSE.