为插件提供安装、启停、回滚与审计服务
26.1/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/11 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add AnothetLoice/dsh-hotplug-engine该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 72 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/11) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 47 处,展示前 38 条)
- 发起网络请求src/client/api.ts:65
const res = await fetch(`${API_BASE}${path}`, body === undefined - 写入本地文件src/host/audit.ts:23
mkdirSync(this.dir, { recursive: true }) - 写入本地文件src/host/audit.ts:25
appendFileSync(join(this.dir, `${day}.jsonl`), JSON.stringify(record) + '\n', 'utf8') - 读取本地文件src/host/audit.ts:37
if (!existsSync(this.dir)) return records - 读取本地文件src/host/audit.ts:40
for (const line of readFileSync(file, 'utf8').split('\n')) { - 读取本地文件src/host/audit.ts:61
return readdirSync(dir) - 读取本地文件src/host/backup.ts:33
return hash12(readFileSync(path, 'utf8')) - 写入本地文件src/host/backup.ts:86
mkdirSync(dir, { recursive: true }) - 读取本地文件src/host/backup.ts:89
const patchContent = existsSync(patchPath) ? readFileSync(patchPath, 'utf8') : '' - 读取本地文件src/host/backup.ts:89
const patchContent = existsSync(patchPath) ? readFileSync(patchPath, 'utf8') : '' - 读取本地文件src/host/backup.ts:90
const manifestContent = existsSync(manifestPath) ? readFileSync(manifestPath, 'utf8') : '' - 读取本地文件src/host/backup.ts:90
const manifestContent = existsSync(manifestPath) ? readFileSync(manifestPath, 'utf8') : '' - 写入本地文件src/host/backup.ts:103
writeFileSync(handle.patchBackup, patchContent, 'utf8') - 写入本地文件src/host/backup.ts:104
writeFileSync(handle.manifestBackup, manifestContent, 'utf8') - 删除本地文件src/host/backup.ts:127
unlinkSync(sidecarPath(backupDir(dshHomePath), operationId)) - 读取本地文件src/host/backup.ts:141
if (!existsSync(path)) return undefined - 写入本地文件src/host/backup.ts:150
writeFileSync(sidecarPath(dir, handle.operationId), JSON.stringify(handle, null, 2) + '\n', 'utf8') - 读取本地文件src/host/installer.ts:96
if (existsSync(candidate)) push(candidate) - 执行外部命令来自配置/变量src/host/installer.ts:139
const child = spawn(isWinCmd ? 'cmd.exe' : commandPath, spawnArgs, spawnOptions) - 读取本地文件src/host/installer.ts:198
const manifest = JSON.parse(readFileSync(join(pkgDir, 'package.json'), 'utf8')) as { - 读取本地文件src/host/manifest.ts:96
if (!existsSync(path)) return {} - 读取本地文件src/host/manifest.ts:98
return JSON.parse(readFileSync(path, 'utf8')) as ProfileManifest - 读取本地文件src/host/manifest.ts:114
if (!existsSync(path)) return '' - 读取本地文件src/host/manifest.ts:116
return readFileSync(path, 'utf8') - 写入本地文件src/host/manifest.ts:143
writeFileSync(tmp, content, 'utf8') - 写入本地文件src/host/manifest.ts:145
renameSync(tmp, path) - 删除本地文件src/host/manifest.ts:147
rmSync(tmp, { force: true }) - 写入本地文件src/host/patch.ts:661
writeFileSync(tmp, content, 'utf8') - 写入本地文件src/host/patch.ts:665
renameSync(tmp, patchPath) - 删除本地文件src/host/patch.ts:676
rmSync(tmp, { force: true }) - 读取本地文件src/host/patch.ts:679
const readBack = readFileSync(patchPath, 'utf8') - 读取本地文件src/host/service.ts:953
if (!existsSync(dir)) { - 读取本地文件src/host/service.ts:1004
if (existsSync(backupRoot)) { - 读取本地文件src/host/service.ts:1010
for (const file of readdirSync(backupRoot).filter(f => f.endsWith('.json'))) { - 读取本地文件src/host/service.ts:1012
const sidecar = JSON.parse(readFileSync(join(backupRoot, file), 'utf8')) as BackupHandle - 读取本地文件src/host/service.ts:1054
const pkg = JSON.parse(readFileSync(join(dir, 'node_modules', name, 'package.json'), 'utf8')) as { version?: unknown } - 读取本地文件src/host/service.ts:1065
return statSync(join(dir, 'node_modules', name, 'package.json')).mtime.toISOString() - 读取密钥环境变量src/index.ts:50
const restToken = process.env.DSH_HOTPLUG_REST_TOKEN
扫描于 2026/11/3(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-tools@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-locale给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 插件安装
- 插件回滚
- 插件审计
为 DSH 提供插件安装、回滚和审计服务。
README
由 DeepSeek 最新模型翻译生成dsh-hotplug-engine
给 DSH 做插件管理的服务插件。市场、agent、其他插件都能调用:安装、卸载、启停、回滚、审计,一条链路。
做什么
DSH 用 cordis.patch.yml 和 loader 管理插件。这个插件把这套操作包成服务:改 patch、调 pnpm、装后健康确认、失败自动回滚、全程审计。只动文件和命令,不碰内核。
不做什么
- 不是市场:没有目录、搜索、榜单、推荐。spec(装什么、从哪装)由调用方给,引擎不猜。
- 不改官方机制:HMR、loader、patch 语义都是官方的,只消费,不重写。
- 不另存状态:以官方组合树为唯一真源,引擎只投影和差分。
- 不带安装界面:UI 只有最小管理面板(查看、启停、回滚、审计),没有 spec 输入。
展开完整文档(README 剩余 1 节)
dsh-hotplug-engine 给 DSH 做插件管理的服务插件。市场、agent、其他插件都能调用:安装、卸载、启停、回滚、审计,一条链路。 做什么 DSH 用 cordis.patch.yml 和 loader 管理插件。这个插件把这套操作包成服务:改 patch、调 pnpm、装后健康确认、失败自动回滚、全程审计。只动文件和命令,不碰内核。 不做什么 - 不是市场:没有目录、搜索、榜单、推荐。spec(装什么、从哪装)由调用方给,引擎不猜。 - 不改官方机制:HMR、loader、patch 语义都是官方的,只消费,不重写。 - 不另存状态:以官方组合树为唯一真源,引擎只投影和差分。 - 不带安装界面:UI 只有最小管理面板(查看、启停、回滚、审计),没有 spec 输入。 接入方式 | 场景 | 入口 | | 市场 / 插件管理界面 | 注入 hotplugEngine 服务,或调 REST | | agent 会话 | hotplug_* 工具 | | 宿主插件 | 注入 hotplugEngine | 安装 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。 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
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
AnothetLoice/dsh-hotplug-engine
为插件提供安装、启停、回滚与审计服务
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,025未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,358已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13938 个插件含 PR 收录与…
★ 350已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目