Skip to content
dsh.fish
Bundle

dsh-install-guard

DeepSeek Harness 插件安装前兼容性预检守卫:检查 Node/engines、@deepseek-ai 核心包 peer 版本与 dsh 清单,支持隔离试启动与确认后修复安装,防止版本不兼容导致崩溃。

Source
618527
License
MIT
Updated
Updated 5 days ago

Readme

# dsh-install-guard · Plugin Install Guard

Pre-install compatibility guard for DeepSeek Harness plugins. Before you download/install a marketplace plugin, it checks whether the plugin is compatible with your running DeepSeek Harness — and prevents the "version mismatch → service crash / won't boot" failure.

Once installed, it registers a model tool `plugin_install_guard` so the Agent can run the check before installing.

## Checks

| Check | Description |
|---|---|
| `engines.node` | plugin's Node requirement vs current Node |
| `@deepseek-ai/*` peers | peer/dependency ranges vs resolved versions |
| `dsh` manifest | whether `dsh.bundle.patch` / `dsh.client` is declared |
| isolated trial boot (opt-in `trial=true`) | install into a throwaway profile + `--dump-config`, actually runs `apply` to catch runtime/load-time crashes |

## Install

```sh
dsh plugin --profile web add dsh-install-guard
```

Restart `dsh web`.

## Usage (two-phase, via chat)

```
1) check:
   plugin_install_guard { spec: "plugin-name", action: "check" }   # add trial: true to run apply
2) install after confirming:
   plugin_install_guard { spec: "plugin-name", action: "install", resolution: { spec: "plugin-name@compatible" } }
```

## Relation to other plugins

- `dsh-doctor` = environment health; this plugin = version compatibility.
- `dsh-poison-guard` / `DSH-Plugin-Market` = security/audit; this plugin = compatibility.

Use them together: security audit + compatibility preflight = the full pre-install gate.

## Limitations

- Actively-triggered tool, not an automatic hook on the marketplace install button.
- Static checks + trial boot reduce but cannot eliminate all third-party-code risk.

## License

MIT

Install

dsh plugin --profile web add github:618527/dsh-install-guard

Profile: web

  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source