
kyorakuyk/dsh-hotreload-plugin-manager
30最近提交 2026年8月15日
dsh-hotreload-plugin-manager DSH 插件
该插件在 DSH Web 设置界面添加了“插件管理”标签页,用于管理其他插件。支持通过 spec(npm、git URL、GitHub 简写、本地路径)热安装、卸载和切换插件状态。完全树外工作,无需改动 DSH 核心代码。
如何安装 dsh-hotreload-plugin-manager DSH 插件
dsh plugin --profile web add "github:kyorakuyk/dsh-hotreload-plugin-manager复制不会执行命令。安装 dsh-hotreload-plugin-manager DSH 插件前请核对仓库和版本。
dsh-hotreload-plugin-manager DSH 插件数据来源
dsh-hotreload-plugin-manager DSH 插件快照日期:2026年8月16日
discovered
dsh-hotreload-plugin-manager DSH 插件能做什么
- 热安装:从 npm、git URL、GitHub 简写或本地路径安装插件 bundle,立即在运行中的 dsh web 实例上生效。
- 热卸载:移除 bundle 并清理其依赖、补丁条目和 fiber,从运行时中彻底卸载。
- 禁用/启用:通过 UI 一键切换已安装 bundle 的启用状态,状态持久化且立即生效。
- 热更新:替换补丁条目并重新应用配置(但模块代码变更仍需重启,因 Node 进程内缓存)。
- 零内核改动:纯树外 bundle,不触碰 dsh checkout。
- 双面包:同一个 npm 包同时作为宿主网关(Node)和浏览器设置标签页(React)。
- HTTP API:提供 REST 端点用于列表、安装、卸载、更新和设置启用状态。
dsh-hotreload-plugin-manager DSH 插件适合哪些场景
- 快速将社区插件安装到正在运行的 DSH web 实例中,无需重启服务器。
- 移除或禁用不再需要或导致冲突的插件,立即生效。
- 使用 file: 路径规格本地开发插件 bundle,并热更新配置以快速迭代。
- 通过图形化 Web UI 管理插件生命周期,替代 CLI 命令。
- 将插件更新到新版本,并立即应用配置变更。
dsh-hotreload-plugin-manager DSH 插件适合谁
- 希望无需重启即可方便管理插件的 DSH 用户。
- 需要快速迭代 bundle 补丁并在真实环境中测试的插件开发者。
- 管理多个 DSH 配置文件和插件依赖的系统管理员。
dsh-hotreload-plugin-manager DSH 插件的限制
- 远程信任问题:/plugin-manager 路由对任何能访问服务器的人开放,未做身份验证(默认仅回环绑定)。
- 与 CLI 混用:如果对同一 bundle 也使用 dsh plugin CLI,管理器可能无法正确协调;每个 bundle 应只使用一种机制。
- 模块代码更新需重启:Node 会缓存已解析的模块,因此 bundle 的代码变更需要重启进程才能生效。
- 条目 ID 冲突:如果 bundle 的补丁条目 ID 与现有用户层或其他 bundle 冲突,安装将被拒绝。
- 暂无插件市场:安装由 spec 驱动,浏览和精选发现功能尚未实现。
dsh-hotreload-plugin-manager DSH 插件的仓库 README 摘录
以下文字摘自 dsh-hotreload-plugin-manager DSH 插件的上游仓库 kyorakuyk/dsh-hotreload-plugin-manager 的 README,版权归原作者,仅作引用。
中文 | [English](README.en.md) 一个**树外(out-of-tree)**[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 插件:在**运行中的实例上直接完成插件的热安装、热卸载、禁用/启用——无需重启**, 并提供 Web 设置页标签页: - **🔥 热安装**:按 spec(npm 包名 / git URL / `github:owner/repo` / `file:` 路径) 安装插件 bundle,立即热生效于运行中的 `dsh web`,且重启后保留。 - **🔥 热卸载**:移除 bundle——行与 fiber 即刻卸载、依赖被清理、陈旧的 bundle 层条目一并移除。 - **🔥 禁用 / 启用**:在 UI 上一键切换已安装 bundle 的条目开关,状态持久化且立即生效。 - **热更新**:热替换 bundle 的补丁行并实时重放配置(模块代码变更按 Node 进程内 缓存特性仍需重启)。 - **零内核改动**:纯树外 bundle,dsh checkout 完全不被触碰。 - **双面包**:一个 npm 包同时是 host 网关与浏览器设置标签页。 ## 架构 ``` ┌────────────────────────────── 浏览器(React)──────────────────────────────┐ │ 设置 → 插件 → "插件管理"标签页(槽位 settings.plugins.tab) │ │ │ fetch('/plugin-manager/*') │ └────────┼──────────────────────────────────────────────────────────────────┘ ▼ ┌──────────────────────────── dsh web 进程 ──────────────────────────────────┐ │ webserver 路由(node:http)──▶ manager 核心 │ │ ① pnpm add/remove(profile 内的真实依赖) │ │ ② 行写入 profile 用户补丁层(cordis.patch.yml) │ │ ③ 根 Include entry.upda
阅读完整 README仓库许可: MIT
dsh-hotreload-plugin-manager DSH 插件常见问题
如何安装这个插件管理器?
运行 `dsh plugin --profile web add "github:kyorakuyk/dsh-hotreload-plugin-manager"` 或使用 npm 包 `@kyorakuyk/dsh-plugin-manager`。安装后重启 dsh web 实例并硬刷新浏览器(Ctrl+Shift+R),然后打开 Web UI → 设置 → 插件 → 插件管理即可开始管理其他插件。
任何 npm 包都能作为插件安装吗?
不能,只有 package.json 中声明了 `"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }` 的包才可以安装。管理器会拒绝没有该属性的包,并自动回滚(pnpm remove)。
插件管理器支持临时禁用插件吗?
是的,在插件管理标签页中,每个已安装 bundle 旁边都有禁用/启用按钮。状态持久化且立即生效,禁用的条目在 UI 中会显示“(已禁用)”。
从 git URL 安装时遇到 "could not resolve the installed package name" 错误怎么办?
这意味着管理器无法从 node_modules 中确定包名。请确保 git URL 指向一个有效的 npm 包,且包含正确的 package.json。如果问题持续,可以尝试将仓库克隆到本地后使用 `file:` 路径安装。
通过此管理器安装插件后需要重启 dsh 吗?
不需要,插件是热安装的,立即在运行实例上生效。但模块代码变更(如更新后)需要重启,因为 Node 会缓存已解析的模块。另外,管理器本身的首次安装需要重启以加载新 bundle。