前言¶
DeepSeek Harness(dsh)的设计口号是「一切皆插件」:模型、工具、会话、沙箱和界面都可以换成插件,由 Cordis 负责挂载和依赖。官方装配走的是配置:profile 的 cordis.patch.yml、bundle 列表、repository 插件。改一次本地插件包,通常要重启 web 进程,bundle 才会重新接管。
对插件开发者来说,这条路径偏「生产态」。调试一个带 host 工具和 client UI 的完整包时,反复重启成本很高;热重载失败后如果残留路由、幽灵 entry 或半截缓存,排查也不轻松。社区插件 dsh-super-injector 做的就是这块运行时管理面:先按官方路径把注入器装进去,之后把本地插件包注入正在运行的 web,不改 patch / package.json / bundles 列表,也不杀进程。
本文按社区目录页、GitHub README / INSTALL.md / docs/SPEC.md、package.json 与 v0.3.3 Release 交叉核对后整理。该目录是独立站点,与 DeepSeek / 幻方没有官方从属关系,不要把它当成官方应用商店。
这是什么¶
dsh-super-injector 是一款面向 DeepSeek Harness 的运行时模组注入器,由 GitHub 用户 yjh051108 维护,社区目录归在「工具与能力」。仓库地址是 https://github.com/yjh051108/dsh-super-injector。截至 2026-08-17,GitHub API 显示该仓库 87 星标;目录页当时快照为 34 星,以仓库页面为准。
package.json 中的包名是 @dsh-external/dsh-super-injector,当前版本 0.3.3,主要语言 TypeScript,dsh.client.platform 声明为 web。许可证在 package.json 里写的是 BSD-3-Clause;仓库根目录没有独立的 LICENSE 文件,安装前应自行核对源码与声明是否一致。
它解决的问题可以收成一句:把「已经构建好的标准插件包」(package.json + lib/)在运行中的 web profile 里注入、热重载、侧挂测试、卸载,并在失败时回滚。仓库 README 把它比作游戏圈的 BepInEx 式入口——官方装配机制只装一次引导器,之后其他模组走运行时注入。
v0.3.0(2026-08-14)起,作者按仓库 docs/SPEC.md 重构了自重载。该规范写明依据是 DSH 0.1.0-rc.6 里 loader / include / cordis 的源码语义:工具只负责排程,reboot 走官方 REPLACE 结构(entry._dispose,loader 的 _disposing 豁免),失败自动 rollback。CHANGELOG 记载 v0.2.6 起在 0.1.0-rc.6 上「一行未改直接运行」;这是维护者的兼容性声明,不是 DeepSeek 官方认证。
核心功能¶
运行时注入,而不是第二套安装库¶
注入器自己必须先走官方装配。装上之后,对本地插件目录调用 dev_inject_plugin:把插件包 junction 到 ~/.dsh/profiles/web/node_modules,再 ctx.loader.create({ name, config })。README 强调注入清单只是运行时恢复缓存,落在 ~/.dsh/super-injector/registry.json,web 重启后自动归位;生产态则用 dev_install_package 写入 profile bundles,重启后仍由官方列表接管。
注入后 host 工具和 client UI 都要可用。实现上会清掉 loader 幽灵 entry 隔离(normalizeEntry),并补扫 / 联动 / 卸载 client 模块表。每次注入、重载、安装会返回 host ✓ / client ✓ 双验证。
热重载、自重载与自动 watch¶
dev_reload_package 做整包重载:清缓存 → 重新 import → 重建 fiber。失败则回滚,保留旧代。注入器自身也支持自重载。v0.3.0 之后这条路径对齐官方 entry.update 的 REPLACE 分支,而不是手写「自杀再重建」。
插件目录被注入后会自动 watch:改代码并 build 完成后,README 写的是大约 1.5 秒自动重载。watch 前会做 import 预检,损坏的 lib 会拒绝重载,避免半成品把进程打挂。SPEC 把原则写成:恢复用 touch patch(include.refresh,只对无 fiber 的 entry 生效),更新用自重载,永不杀进程。
开发侧挂区¶
测试中的工具可以先挂「后侧」,不进入 tools schema,避免开发期工具集合波动打穿前缀缓存。对应工具是 dev_stage_add / dev_stage_call / dev_stage_list / dev_stage_promote / dev_stage_demote。转正只刷新一次缓存;staging 会落盘,自重载或重启后已转正的工具可以恢复。
卸载、路由自愈与状态查询¶
dev_uninject_plugin 走 fiber dispose,清理工具、监听、路由和 client 表,再清注入清单、删 junction,不需要重启。bundle 插件卸载时还会写 disabled,避免 include.refresh 把插件加回来。
热重载若留下孤儿路由,可用 dev_clear_routes 按 path 前缀清 webserver 内部路由表。dev_injected_list 列出注入清单;dev_plugin_status 给出已装配插件、fiber 状态和操作成功率。
插件生产线¶
README 还提供骨架 / 构建 / 发布三个工具:dev_scaffold_plugin(toolkit / daemon-loop / ui-panel / hybrid)、dev_build_plugin、dev_release_plugin。这是给「自己写完整插件包」用的,和 dsh-evolve 那种在对话里长出单文件 .mjs 的创造模式不同。维护者把两者写成互补:evolve 的源码可以升级成完整包,再交给注入器热挂。
安装与启用¶
社区目录页给出的安装命令是:
dsh plugin add github:yjh051108/dsh-super-injector
该插件声明平台为 web。仓库 README 和 INSTALL.md 都写成显式指定 profile:
dsh plugin --profile web add github:yjh051108/dsh-super-injector
目录页提醒:如需可复现安装,应固定 commit 哈希。当前最新 Release 是 v0.3.3(2026-08-15),对应 commit 51dcda74a784cf113e850899b43a1a22e3799e91:
dsh plugin add github:yjh051108/dsh-super-injector#51dcda74a784cf113e850899b43a1a22e3799e91
INSTALL.md 更推荐方式 A:从 Releases 下载 dsh-external-dsh-super-injector-<版本>.tgz(v0.3.3 的资产名是 dsh-external-dsh-super-injector-0.3.3.tgz),解压后:
mkdir -p ~/dsh-super-injector && tar -xzf dsh-external-dsh-super-injector-0.3.3.tgz -C ~/dsh-super-injector --strip-components=1
dsh plugin --profile web add ~/dsh-super-injector
官方 bundle 装配在启动时完成,需要重启 web 进程。重启后对 agent 说 dev_plugin_status,看到 dsh-super-injector 且状态为 active,再跑 dev_self_test。INSTALL.md 写自检共 8 项,期望全部 PASS。
v0.3.3 Release 说明把运行时依赖打进 lib/index.js,用来避免官方装配时出现 Cannot find package '@deepseek-ai/dsh-tools'。git 源码安装仍需要本机构建环境(bash、node、npm,以及 DSH checkout 或 DSH_CHECKOUT)。Windows 上 INSTALL.md 要求用 Git Bash 或 WSL 跑 bash 语法;v0.3.3 还会拒绝 PATH 里抢先命中的 System32\bash.exe,优先 Git Bash。
插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。
典型用法示例¶
以下命令与对话指令均来自仓库 README / INSTALL.md,参数里的路径换成本机绝对路径。
1. 确认注入器已挂上
dev_plugin_status
dev_self_test
2. 注入一个已经构建好的本地插件包
拿到含 package.json 和 lib/ 的目录后,对 AI 说:
dev_inject_plugin {"dir": "D:/dev/my-plugin"}
README 写注入当场生效,下一 step 就能看到 host 工具;若插件声明了 client,UI 也会补扫。
3. 开发迭代
改代码 → build。watch 约 1.5 秒自动重载;也可以手动:
dev_reload_package
稳定后用 dev_stage_promote 把侧挂工具转到正式 schema。
4. 从骨架走到注入
dev_scaffold_plugin {"dir": "D:/dev/my-plugin", "name": "my-plugin", "form": "daemon-loop", "description": "..."}
dev_build_plugin {"dir": "D:/dev/my-plugin"}
dev_inject_plugin {"dir": "D:/dev/my-plugin"}
form 还可取 toolkit、ui-panel、hybrid。
5. 卸载
dev_uninject_plugin
参数是包名子串。卸载后工具 / 监听 / 路由 / client 表应被清掉,无需重启。
适用场景与注意事项¶
适合这几类人:在本地开发完整 DSH 插件包、需要免重启验证 host+UI、要把成品模组热挂进正在跑的 web profile。不适合只想改官方配置、或只需要对话里长出单文件小工具的场景——后者应对 dsh-evolve。
使用前注意下面几条,均能在 README、INSTALL.md 或 SPEC 里对上:
- 权限与来源。插件与当前 dsh 进程同权,能读写 profile、写 patch、动
node_modulesjunction。社区目录不是官方商店,安装前自己看源码和许可证。 - profile 必须对上。工具挂在 web profile。
--profile web与正在运行的 profile 不一致时,dev_*工具不会出现。 - 包名文档有滞后。
package.json与仓库内cordis.patch.yml使用@dsh-external/dsh-super-injector;INSTALL.md 部分示例仍写@yjh051108/dsh-super-injector。装配、卸载、junction 路径以package.json的name为准。 - 资源必须挂
ctx.effect。热重载或卸载时靠 fiber dispose 清理。裸注册会留下僵尸工具 / 路由,重载时可能报duplicate / already registered。 - 插件包要自带依赖解析。
lib/里import '@deepseek-ai/dsh-tools'从包自身node_modules走;client UI 需要单独npm run build:client,产物是lib/client.js。client 操作必须用完整包名,短名会静默失败。 cordis.patch.yml只能有一个顶层值。要么[],要么- id:/- insert:列表,两者混存会 YAML 解析失败,装配全灭。同 id 重复条目会触发duplicate loader entry id,dsh 起不来。v0.3.3 起writePatch按 id 幂等去重;已崩溃时可用解压目录里的node scripts/fix-patch.mjs(不依赖 dsh 已启动)。- peerDependencies 是范围声明:
@deepseek-ai/dsh-tools: >=0.0.1-rc <2、cordis: >=4.0.0-rc <5。维护者声称适配了服务改名webServer(原httpServer)、compaction(原compact)。DSH 仍处于 developer preview,核心 API 还会变,升级后应再跑dev_self_test。 - README 里的评测分数、压力测试「零崩溃」和自检 8/8,都是维护者在仓库中的自述,不是第三方复现报告。
小结¶
dsh-super-injector 补的是官方 bundle 装配之下的运行时层:注入、热重载、侧挂转正、卸载、路由自愈。v0.3.0 把自重载收束到 DSH 0.1.0-rc.6 的 REPLACE 契约,v0.3.3 补了 Windows/macOS 装配和宿主自包含打包。先按官方路径装引导器,再对本地插件包说 dev_inject_plugin,是它的主路径。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-super-injector/
GitHub:https://github.com/yjh051108/dsh-super-injector
Release:https://github.com/yjh051108/dsh-super-injector/releases