返回插件市场

dsh-plugin-toggle

界面与体验

DamonKoy/dsh-plugin-toggle

DSH Web 界面的插件管理面板:设置页显示插件卡片、描述、模糊搜索,并支持运行时启停而不修改配置文件。

  • dsh-plugin
GitHub Stars
4GitHub
浏览量
0DSH Plugin Hub
Forks
0GitHub
开放问题
0GitHub Issues
Manifest 版本
0.1.0dsh-plugin-toggle
最近推送
2026年8月15日GitHub
许可证
MITJavaScript
插件类型
Host + Client同时运行于 Host 与 Web Client

README

查看源文件

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.json description)
  • 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

FeatureNotes
Plugin cardsTitle, entry id, description, enabled tag, phase
CategoriesGrouped sections (core / UI / theme / tools / fun / other), collapsible
SortingWithin a group: togglable plugins first, then by status (running first), then name
Fuzzy searchTokens match as substring or subsequence across fields incl. category
Start / Stopentry.update({ disabled }) — runtime only, no tree.write()
Core guardSurface/runtime entries cannot be stopped (id- and module-name-based); others need a two-step confirm
Usage historyEvery toggle is persisted to ~/.dsh/dsh-plugin-toggle.jsonl (last 1000), shown in a collapsible “使用记录” section
PersistenceInstalled as a composition plugin — survives dsh web restarts

HTTP API (same origin)

MethodPathRole
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

评论

0
最新优先