DamonKoy/dsh-plugin-toggle
DSH 插件总控台:包含描述、模糊搜索和运行时启动/停止的设置选项卡。
项目介绍Project Overview
DSH 网页端的插件总开关面板。打开“设置 → 插件 → Plugin Switch”即可看到所有已加载插件卡片,显示描述、启用状态与 fiber 阶段(运行中/挂起/失败等),并提供按名称、模块、ID、描述的模糊搜索(子序列匹配)。可在运行时点击 Start/Stop 启停插件,调用 entry.update 仅改运行时、不重写 cordis.yml。核心与界面插件(webserver、connection、session、agent 等)被标记为 Core,无法从此处停止,避免页面自毁;非核心插件需二次确认。每次切换记录会追加到 ~/.dsh/dsh-plugin-toggle.jsonl,最多保留 1000 条。客户端 exports.inject 必须是 service 名 “slots”,写成包名会导致 client fiber 永久挂起。
A plugin switchboard for the DSH web GUI. It renders one card per loaded plugin in Settings → Plugins → Plugin Switch, showing the description, enabled flag, and fiber phase (running, pending, failed, etc.), with fuzzy substring/subsequence search across name, module, id, description, and category. Use it to start or stop plugins at runtime via entry.update without rewriting cordis.yml. Core and surface plugins (webserver, connection, session, agent, …) are guarded and cannot be stopped from the UI, so the page cannot disable itself; other plugins require a two-step confirm. Caveat: the client exports.inject must be the service name "slots", not a package name, otherwise the client fiber stays parked.
请帮我了解并安装插件:【dsh-plugin-toggle】【https://github.com/DamonKoy/dsh-plugin-toggle】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:DamonKoy/dsh-plugin-toggle
把 DamonKoy/dsh-plugin-toggle 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-plugin-toggle
English | 中文
A DeepSeek Harness (DSH) plugin switchboard for the web GUI.
Open Settings → Plugins → Plugin Switch. Every loaded plugin is a card with:
- a short description (from that package's
package.jsondescription) - enabled / disabled + fiber phase (running / pending / failed / …)
- Start / Stop (runtime only — does not rewrite
cordis.yml) - fuzzy search (name / module / id / description; subsequence match)
Core / surface plugins (webserver, connection, session, agent, …) are marked Core and cannot be stopped from this UI, so the page cannot take itself down.
Install
dsh plugin --profile web add github:DamonKoy/dsh-plugin-toggle
Restart dsh web, then open Settings → Plugins → Plugin Switch.
Or add the repo as a profile dependency and include the bundle:
{
"dependencies": {
"dsh-plugin-toggle": "github:DamonKoy/dsh-plugin-toggle"
},
"dsh": {
"profile": {
"bundles": ["dsh-plugin-toggle"]
}
}
}
Then pnpm install in the profile directory and restart dsh web.
What you get
| Feature | Notes |
|---|---|
| Plugin cards | Title, entry id, description, enabled tag, phase |
| Categories | Grouped sections (core / UI / theme / tools / fun / other), collapsible |
| Sorting | Within a group: togglable plugins first, then by status (running first), then name |
| Fuzzy search | Tokens match as substring or subsequence across fields incl. category |
| Start / Stop | entry.update({ disabled }) — runtime only, no tree.write() |
| Core guard | Surface/runtime entries cannot be stopped (id- and module-name-based); others need a two-step confirm |
| Usage history | Every toggle is persisted to ~/.dsh/dsh-plugin-toggle.jsonl (last 1000), shown in a collapsible “使用记录” section |
| Persistence | Installed as a composition plugin — survives dsh web restarts |
HTTP API (same origin)
| Method | Path | Role |
|---|---|---|
GET |
/plugin-toggle/list |
{ entries: [...] } |
GET |
/plugin-toggle/logs |
{ records: [...] } (recent usage history, newest first) |
POST |
/plugin-toggle/set |
{ entryId, enabled } → { ok, entry? | message? } |
POST is same-origin only.
Layout
dsh-plugin-toggle/
lib/index.js Host: list + set routes over the Cordis Loader
client/client.js Client: Settings tab (ModuleLoader factory)
cordis.patch.yml Bundle insert (`id: plugin-toggle`)
The client exports.inject is the service name slots (not a package name). Using package names here parks the client fiber forever.
License
MIT
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill