前言¶
在 DSH 里做插件开发,常见路径是改 cordis.patch.yml、走 profile bundle 或 repository 装配,然后重启 web 进程才能看到效果。官方装配机制相当于「启动器装模组」:配置即持久状态,方向清晰,但迭代代码时重启成本高。若要在不碰 patch、不改 package.json bundles 列表的前提下,把已构建好的标准插件包(package.json + lib/)塞进正在运行的 DSH,并让 host 工具与 client UI 一并生效,还需要一层运行时管理能力。
下面介绍社区插件 dsh-super-injector(维护者 r-ayin,分类:工作流)。它在 README 中自定位为 DSH 生态的「BepInEx 式模组注入入口」:运行时注入本地包、热重载、一键卸载,并附带脚手架、自检与管理相关 dev 工具;与 agent 现场写单文件的 dsh-evolve 互补——注入器面向完整插件包的装换与开发闭环。
这是什么¶
dsh-super-injector(包名 dsh-super-injector,当前资料中 package.json 版本为 0.3.3,MIT 许可)是 DeepSeek Harness 的运行时插件注入层。简介原文:Runtime plugin injector: inject, hot-reload and uninstall local plugin packages in a running dsh without restarts, with plugin scaffolding, self-test and a management panel.
设计要点(来自 README):
- 注入的是标准插件包格式,不另发明协议。
- 双路径:运行时注入(免重启,开发态)与
dev_install_package写入 profile bundles(重启后由官方接管,生产态);注入清单持久化在~/.dsh/super-injector/registry.json,用于重启后自动恢复,而非第二套安装数据库。 - v0.3.0 起按
docs/SPEC.md(基于 DSH 0.1.0-rc.6 源码语义)重构为官方 REPLACE 结构;peerDependencies使用范围声明,README 写明已在一行不改情况下兼容 DSH 0.1.0-rc.6。
目录页:skillhub.cn/plugins/r-ayin/dsh-super-injector
源码与文档:github.com/r-ayin/dsh-super-injector
社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
以下能力均来自 README 与 package.json 描述,按使用面归纳。
注入、重载与卸载(免重启)¶
| 工具 | 说明 |
|---|---|
dev_inject_plugin |
运行时注入本地插件包(junction + loader.create,hasActiveEntry 防重) |
dev_uninject_plugin |
卸载注入模组(fiber 全清理;bundle 插件可写 disabled 阻断自装配) |
dev_reload_package |
整包热重载(清缓存 → 重新 import → 重建 fiber,失败回滚保留旧代;含注入器自重载) |
dev_injected_list |
列出注入清单 |
dev_install_package |
热装配本地 bundle 插件到 profile,重启后由 bundles 正常装配 |
dev_plugin_status |
已装配插件、fiber 状态与操作成功率统计 |
注入后 host 与 client UI 应完整生效;README 提到对 loader entry 做 normalize、client 模块补扫与卸载清理。注入目录会被 自动 watch,构建完成后约 1.5 秒自动重载(也可手动 dev_reload_package)。
开发与侧挂(staging)¶
| 工具 | 说明 |
|---|---|
dev_stage_add / dev_stage_call / dev_stage_list |
后侧挂测试工具(不进 tools schema) |
dev_stage_promote / dev_stage_demote |
转正或撤回侧挂工具;staging 可落盘,自重载或重启后转正工具可恢复 |
运维与自愈¶
dev_clear_routes:按 path 前缀清理 webserver 热重载残留的孤儿路由。- 操作自检:注入/重载等返回
host ✓ / client ✓双验证;失败可重试,残留 entry/缓存有清理逻辑。
插件生产线(脚手架与构建)¶
README 提供「一分钟起步」三件套,通过 dev 工具驱动(对 AI 调用工具,而非单独 CLI):
dev_scaffold_plugin:生成骨架(toolkit / daemon-loop / ui-panel / hybrid 等形态)。dev_build_plugin:探测DSH_CHECKOUT,构建 host/client 并npm pack产出 tgz。dev_release_plugin:配合gh release create发布 tgz。
另有 dev_self_test 用于改代码后跑注入/重载/卸载等全链路自检(README 开发规范中提及)。
安装与启用¶
package.json 要求 Node >=20。安装方式 README 给出三种,任选其一;命令以 README 原文为准。
方式 A:Release 包(推荐,免构建)¶
从 README 所列 Releases 下载 dsh-external-dsh-super-injector-0.0.1.tgz,解压得到含 lib/ 与 cordis.patch.yml 的目录后:
# 官方装配(重启后由 bundles 接管,生产态)
dsh plugin --profile web add <解压目录>
若环境中已有常驻注入器,也可在开发态对 AI 说明使用运行时注入,例如:dev_inject_plugin <解压目录>(README 表述为「对 AI 说」)。
方式 B:git 装配¶
dsh plugin --profile web add github:yjh051108/dsh-super-injector
README 说明:git 依赖拉取源码,安装时 prepare 会用 tsdown 构建 lib/;首次需网络,失败时可改用方式 A 的预构建 tgz。当前 package.json 中 repository 指向 github.com/r-ayin/dsh-super-injector,与 README 安装命令中的 yjh051108 组织不一致时,以你实际采用的 README 安装命令与 Release 来源为准,并自行核对 fork/镜像是否一致。
方式 C:引导装配(仅未走 bundles 时装一次)¶
在 ~/.dsh/profiles/web/cordis.patch.yml 增加:
- insert:
- id: dsh-super-injector
name: '@yjh051108/dsh-super-injector'
config: {}
README 警告:若已通过方式 A/B 装配,不要再加本条,否则会与 bundle 自注册的 loader entry id 冲突(duplicate loader entry id)。引导器常驻后,可再通过运行时工具注入其他包。
典型用法¶
开发闭环:脚手架 → 构建 → 注入¶
# 1. 生成骨架
# 对 AI:dev_scaffold_plugin {"dir": "D:/dev/my-plugin", "name": "my-plugin", "form": "daemon-loop", "description": "..."}
# 2. 构建打包
# 对 AI:dev_build_plugin {"dir": "D:/dev/my-plugin"}
# 3. 可选发布
# 对 AI:dev_release_plugin {"dir": "D:/dev/my-plugin", "version": "0.1.0"}
# 注入:dev_inject_plugin {"dir": "D:/dev/my-plugin"}
# 改代码 → build → watch 约 1.5s 自动重载,或 dev_reload_package
路径请换成本机实际目录;示例中的盘符来自 README,在 Linux 上改为对应绝对路径即可。
与 dsh-evolve 的分工¶
| dsh-evolve | dsh-super-injector | |
|---|---|---|
| 形态 | agent 现场写单文件插件(如 ~/.dsh/evolve/<name>.mjs)热挂载 |
注入预构建的完整插件包 |
| 适用 | 对话中长出小工具 | 装换成品模组、本地 build → 注入 → 热重载 |
| 联动 | 源码可升级为完整包后再走注入器 | 注入后可用 dev_reload_package 热重载 |
适用场景与注意¶
适合谁
- 正在开发标准 DSH 插件包(含 UI),需要免重启注入、热重载、侧挂转正与干净卸载的开发者。
- 希望 agent 通过
dev_*工具自行管理运行时、与官方 bundle 装配并存的团队(README 将其对齐为「agent 自己管理运行时」方向的实践层)。
使用前请知悉
- 插件以当前 DSH 进程权限运行;安装前请阅读源码与 MIT 许可证,并从你信任的 GitHub 组织/Release 获取产物。
- 方式 C 与 A/B 互斥条件见上文;生产环境更宜走
dsh plugin --profile web add与 bundles,运行时注入清单仅为恢复缓存。 - README 开发规范强调:资源须挂
ctx.effect以便热重载/卸载清理;peerDependencies宜用范围声明;含 client 时需单独构建lib/client.js。 - 资料中 Git 安装命令指向
github:yjh051108/dsh-super-injector,而线索目录与package.json仓库为r-ayin/dsh-super-injector;拉取与装配前请确认二者是否为同一维护链路的镜像,避免装错包。
结尾¶
dsh-super-injector 把「装完之后怎么改」收拢到一层:注入完整本地包、热重载与回滚、侧挂转正、路由与 fiber 清理,并尽量让 host 与 client 与官方包语义一致。若你的痛点是反复重启 web 才能验证插件,可以先按 README 方式 A 或 B 装入注入器本身,再用 dev_inject_plugin 与 dev_reload_package 跑通本地包闭环。
- 目录页:https://www.skillhub.cn/plugins/r-ayin/dsh-super-injector
- GitHub:https://github.com/r-ayin/dsh-super-injector