DSH 生态以插件化为核心,直接安装插件存在风险:加载器重复可能导致崩溃,工具名冲突会导致功能失效,版本不匹配可能破坏运行环境,且安装后需手动重启。dsh-safe-install 将“装插件”这一操作封装为标准流程:先做四重安全检查,确认无冲突后打快照,执行安装,最后自动重启 DSH。
插件简介¶
dsh-safe-install 是由 goodaiaiai 维护的自动化工具。它集成在 DSH 进程中,通过自动化流程规避安装风险。其核心价值在于将手动排查和操作转化为可复用的指令,确保插件环境的稳定。
核心功能¶
该插件主要包含以下能力:
- 四重安全检查:在安装前并行执行,涵盖版本兼容性、patch 冲突、工具名冲突及供应链安全。
- 阻断机制:根据检查结果返回
block或warn。block会直接拒绝安装并说明原因;warn仅提示风险但不阻断。 - 快照与回退:安装前自动调用
dsh-undo-savepoint创建快照,若安装失败或配置错误,可随时回退。 - 自动重启:安装完成后自动重启 DSH 进程,确保新插件立即生效。
- 状态追踪:记录最近的检查、安装和重启状态,重启后仍可查询。
安装¶
通过官方命令行安装:
dsh plugin --profile web add github:goodaiaiai/dsh-safe-install#master
安装后需重启 DSH 生效。
典型用法¶
插件注册了三个工具,可在对话中直接调用。
- 安全检查
仅执行四重安全检查,不进行实际安装。
safe_install_check { pkg: "dsh-startup-guard" }
- 安全安装
执行检查、安装并自动重启(默认restart: true)。
safe_install { pkg: "dsh-better-sidebar", source: "github:omdsh-dev/DSH-better-sidebar" }
- 状态查询
查询上次的检查、安装和重启状态。
safe_install_status
四重安全检查机制¶
检查分为四个维度,判定标准如下:
- 版本兼容:检查插件
peerDependencies中@deepseek-ai/*的版本要求(minor, patch, rc)是否 ≤ 当前 DSH 版本。 - Patch 冲突:检查
cordis.patch.yml中的insert id是否与核心保留 ID(如storage)或已装插件重复。 - 工具名冲突:检查插件注册的工具名是否与已装插件或内置工具重复。
- 供应链:检查 npm 包是否已发布、维护是否活跃(<30天)以及许可证是否清晰。
注意:未提供
source参数时,无法完整执行 ②③ 检查,仅返回warn。建议总是提供 GitHub 源。
注意事项与限制¶
- 网络与权限:插件运行在 DSH 进程中。
dsh plugin add在workspace-write沙箱下可能因权限问题报EPERM,需danger-full-access。网络请求内置NODE_TLS_REJECT_UNAUTHORIZED=0(用于解决本地 CA 链不完整问题)并包含重试逻辑(2次)。 - 检查依赖:②③ 检查依赖 GitHub 源,npm 包在未下载时无法读取其 patch 和源码内容。
- 清单刷新:工具名清单为内置快照 + 启动时扫描,新装插件后需重启以刷新清单。
- 运行时依赖:本插件仅检查安装时的版本和冲突,不覆盖
dsh-client-ui-slots等核心模块的运行时依赖完整性(建议配合dsh-startup-guard)。
插件通过自动化流程降低了 DSH 插件管理的复杂度与风险。如需回滚误操作的安装,可使用 dsh-undo-savepoint。