Back to home@xiyue718

dsh-ui-plugin-manager

DSH 第三方插件管理插件:从设置页启用、禁用、卸载插件。 / Manage third-party DSH plugins from the Plugins settings page.

Stars
0
Language
TypeScript
Created
Aug 17, 2026
Updated
Aug 18, 2026
GitHub repo

Introduction

中文 | English

@dsh-external/ui-plugin-manager

介绍

ui-plugin-manager 是 DSH Web 客户端的“插件管理”插件。它在“设置 → 插件”页面中新增“插件管理”导航标签,用于查看和管理所有已安装的、非系统自带的第三方插件,支持启用/禁用和卸载。

安装

方式一:超级模组注入器

dev_build_plugin  {"dir": "C:/Users/<user>/.dsh/plugins/ui-plugin-manager"}
dev_inject_plugin {"dir": "C:/Users/<user>/.dsh/plugins/ui-plugin-manager"}

打开或刷新 DSH Web,进入“设置 → 插件 → 插件管理”。

方式二:dsh 命令安装(项目官方方式)

如果你已安装 dsh CLI,可以按项目官方教程使用 dsh plugin 命令安装:

# 从本地插件目录安装
dsh plugin --profile web add C:/Users/<user>/.dsh/plugins/ui-plugin-manager

# 或从 GitHub 仓库安装
dsh plugin --profile web add github:xiyue718/dsh-ui-plugin-manager

安装后启动:

dsh --profile web

查看组合配置:

dsh --profile web --dump-config

详细命令说明见项目文档:docs/user/develop/basic/publish.md

构建产物:host 为 lib/index.js,client 为 lib/client.js,打包文件为 dsh-external-ui-plugin-manager-0.1.0.tgz

使用

  1. 打开 DSH Web 设置。
  2. 进入“插件”页面。
  3. 切换到“插件管理”标签。
  4. 查看第三方插件列表。
  5. 使用搜索框按名称、Entry ID、作者筛选。
  6. 点击“启用/禁用”切换插件状态,或点击“卸载”移除插件。
  7. 列表会自动刷新并显示操作结果。

功能

  • 查看第三方插件列表:
    • 插件模块名
    • Loader Entry ID
    • 版本
    • 作者
    • 启用/禁用状态
    • 当前 Fiber 状态
  • 启用 / 禁用插件:通过 Loader 动态更新,立即生效,无需重启。
  • 卸载插件:从当前 Loader 运行时移除。
  • 搜索:按插件名称、Entry ID、作者筛选。
  • 操作反馈:操作完成后自动刷新列表,并显示成功或失败提示。
  • 与系统插件的关系:只列出并管理第三方插件;@deepseek-ai/*cordis:*deepseek-harness/packages/*deepseek-harness/vendor/* 等系统内置条目会被过滤,不会出现在列表中,也不会被误操作。
  • 安全说明:卸载操作会弹出确认框;如果插件是通过超级模组注入器注入的,重启后可能由超级模组自动恢复,如需永久卸载请使用 dev_uninject_plugin
  • 本插件没有提供配置表单入口;需要配置的插件仍可继续使用原“配置”标签页。

Host API

GET /@dsh-external/ui-plugin-manager/api/plugins
POST /@dsh-external/ui-plugin-manager/api/toggle
Content-Type: application/json

{ "entryId": "xxx", "enabled": false }
POST /@dsh-external/ui-plugin-manager/api/uninstall
Content-Type: application/json

{ "entryId": "xxx" }

原理

插件由 host 和 client 两部分组成。

Host 侧通过 loader.entries() 获取当前 Loader 的全部插件条目,再根据模块名过滤系统内置插件,只保留第三方插件。为了显示版本和作者,插件会从 profile node_modulesDSH_HOME/plugins 或 Loader base URL 解析对应包的 package.json。启用/禁用调用 loader.update(entry.id, { disabled: !enabled }),卸载调用 loader.remove(entry.id),两者都立即作用于当前运行实例。

Client 侧在“设置 → 插件”中注册“插件管理”标签,通过 Host API 获取列表并渲染,操作时调用对应接口并展示项目内置反馈。