Skip to content
dsh.fish
Bundle

dsh-hotplug-engine

DSH hot-plug execution engine: a reliable install/enable/disable/rollback/audit service for plugin marketplaces, agents, and host plugins (execution layer, not a marketplace).

Source
AnothetLoice
stars
2 stars
License
MIT
Updated
Updated 12 days ago

Readme

# dsh-hotplug-engine

[English](./README.en.md)

给 DSH 做插件管理的服务插件。市场、agent、其他插件都能调用:安装、卸载、启停、回滚、审计,一条链路。

## 做什么

DSH 用 `cordis.patch.yml` 和 loader 管理插件。这个插件把这套操作包成服务:改 patch、调 pnpm、装后健康确认、失败自动回滚、全程审计。只动文件和命令,不碰内核。

## 不做什么

- **不是市场**:没有目录、搜索、榜单、推荐。`spec`(装什么、从哪装)由调用方给,引擎不猜。
- **不改官方机制**:HMR、loader、patch 语义都是官方的,只消费,不重写。
- **不另存状态**:以官方组合树为唯一真源,引擎只投影和差分。
- **不带安装界面**:UI 只有最小管理面板(查看、启停、回滚、审计),没有 spec 输入。

## 接入方式

| 场景 | 入口 |
|---|---|
| 市场 / 插件管理界面 | 注入 `hotplugEngine` 服务,或调 REST |
| agent 会话 | `hotplug_*` 工具 |
| 宿主插件 | 注入 `hotplugEngine` |

## 安装

```bash
pnpm --dir <profile-dir> add dsh-hotplug-engine
# 或 dsh plugin add dsh-hotplug-engine
```

bundle 包:装/卸后重启 profile;新客户端面板刷新页面加载。

## 启停

- 引擎改 profile 的 `cordis.patch.yml`,loader 反射后即时生效(`mode:'hot'`);未反射则提示重启。
- patch 行(用户写的或引擎写的)都能启停,流式/块式 YAML 都能改。
- DSH 默认禁用的行(在 bundle 层,没有引擎可改的 patch 行)改不了:UI 显示 🔒「默认禁用」,点击只浮提示,API 返回 `HOTPLUG.PATCH.DEFAULT_DISABLED`。

## DSH 版本

- 目标 `0.1.1-rc.2`(current),带版本支持矩阵(`supportReport()`)。
- `dshPath` 显式配置才走官方 `dsh plugin` CLI,否则 pnpm 直装。
- `0.1.0-rc.6` 为 legacy,不再作为验收目标。

## 上手

- **宿主注入**:`inject: ['hotplugEngine']`,调 `ctx.hotplugEngine` 的 `install` / `rollback` / `enable` 等方法,Promise resolve 即操作完成。
- **REST**:前缀 `/api/dsh-hotplug`,同源。写:`install` / `uninstall` / `enable` / `disable` / `rollback`;读:`snapshot` / `status` / `audit` / `operations` / `events`(SSE)。
- **工具**:`hotplug_status` / `hotplug_install` / `hotplug_uninstall` / `hotplug_toggle` / `hotplug_rollback` / `hotplug_audit`,写工具走审批。

完整契约见 [docs/01-contract.md](docs/01-contract.md)。

## Changelog

**0.2.0**
- 补 DSH `0.1.1-rc.2` 支持。
- `DshProfileAdapter`:显式 `dshPath` 才走官方 `dsh plugin`,否则 pnpm 回退。
- patch 写层结构化,流式/块式行都能启停;webServer 就绪后自动挂 REST。
- 新增 DSH 默认禁用门禁:UI 🔒 徽标 + 内联提示,API 返回 `HOTPLUG.PATCH.DEFAULT_DISABLED`。
- 客户端面板卡片化(紧凑 + 折叠),深浅色自适应。

## License

MIT

Install

dsh plugin --profile web add github:AnothetLoice/dsh-hotplug-engine

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source