dsh-super-injector 安装实战指南:三种装配方式、duplicate loader entry id 故障自愈与验证清单

发布时间:2026/10/9 1:42:19
dsh-super-injector 安装实战指南:三种装配方式、duplicate loader entry id 故障自愈与验证清单
dsh-plugin人工智能大模型AI 技能/插件提示工程AI Agent【免费下载链接】dsh-routing-suitedsh-routing-suite — injector router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).项目地址https://gitcode.com/gh_mirrors/ds/dsh-routing-suite点击查看免费下载本指南面向第一次接触 dsh-super-injector 的用户与 Agent完整讲解三种装配路径Release 包 / git 装配 / 手动 patch的逐步操作、安装后的双命令验证、duplicate loader entry id启动崩溃的根因与修复以及卸载回滚与常见问题排查。读完你可以独立完成装上注入器 → 验证健康 → 排障 → 卸载的全流程并理解每一步背后的源码依据仓库根目录 injector/ 下的实现与脚本可交叉验证。1. 30 秒理解dsh-super-injector 是什么dsh-super-injector 是 DSH 生态的插件注入器仓库内位于 injector/装好它之后任意本地插件包都能免重启注入运行中的 DSH 进程——只需对 agent 说一句dev_inject_plugin即可生效并自带热重载、自重载、卸载即净、一键自检等能力。它的关键设计是它本身也是一个标准 DSH 插件包名dsh-external/dsh-super-injector见 injector/package.json。因此安装注入器本质上就是走一遍 DSH 官方装配路径装配成功后后续所有插件都走运行时注入通道不再需要触碰官方配置。从源码结构看注入器的能力清单写在 injector/src/index.tsdev_inject_plugin运行时注入、dev_install_package双路径热装配、dev_reload_package确定性整包热重载、dev_plugin_status装配清单、dev_injected_list注入清单、自动轮询 watch 与静态能力提示注入。READMEinjector/README.md将其定位为 DSH 生态的 BepInEx 式模组注入入口官方装配机制profile bundle / repository-plugin是唯一的官方入口就像游戏只有启动器能装模组本插件打破这一点——引导器走官方入口装一次之后万物皆可运行时注入。三种方式任选其一推荐方式 ARelease 包免构建。装完用第 7 节验证装不上看第 8 节排查想卸载看第 9 节。⚠️Windows 用户注意下文命令为 bash 语法~/、mkdir -p、tar、ln -s。请使用Git BashGit for Windows 自带或 WSL 执行PowerShell 需要等价改写~→$HOME、mkdir -p→New-Item -ItemType Directory -Force、tar直接可用。2. 安装前的版本与产物常识在动手前先明确几个与当前仓库一致的版本事实依据 injector/package.json当前仓库源码版本为0.3.3version: 0.3.3已发布并打了 git tag见 injector/CHANGELOG.md。发布产物的命名规则为dsh-external-dsh-super-injector-版本.tgz——dsh-external-前缀 包名 版本号与仓库内其他发布产物如 preset 目录的dsh-router-standard-0.3.0.tgz命名风格一致。包内files字段声明了发布时包含的内容lib、cordis.patch.yml、scripts/build.sh、scripts/fix-patch.mjs、scripts/prepare.mjsinjector/package.json。这决定了解压后目录里应有 lib/、cordis.patch.yml、package.json、README.md、INSTALL.md。peerDependencies全部为范围声明deepseek-ai/dsh-tools: 0.0.1-rc 2、deepseek-ai/cordis: 4.0.0-rc 5、deepseek-ai/schemastery: ^3.18.2injector/package.json。这意味着 DSH 升级时无需改动注入器——不硬编码 DSH 版本是该项目刻意保持的兼容策略README 明确说明 DSH 0.1.0-rc.6 一行不改直接运行。3. 方式 ARelease 包安装推荐免构建第 1 步下载从 Releases 页面下载最新版 tgz 包dsh-external-dsh-super-injector-版本.tgz例如当前仓库版本 0.3.3文件名为dsh-external-dsh-super-injector-0.3.3.tgz。下面命令里的版本一律替换成你实际下载的版本号。第 2 步解压# 解压到任意目录示例版本 换成实际版本号 mkdir -p ~/dsh-super-injector tar -xzf dsh-external-dsh-super-injector-版本.tgz -C ~/dsh-super-injector --strip-components1解压后目录里应有lib/、cordis.patch.yml、package.json、README.md、INSTALL.md。这里有一个版本演进细节值得说明早期发布包v0.2.4 之前的files只含lib不带构建脚本导致解压副本缺依赖链接、dsh plugin add后报ERR_MODULE_NOT_FOUND装不上v0.2.4 起把scripts/build.sh纳入发布包见 injector/CHANGELOG.mdv0.3.3 又通过 tsdown host bundle 把运行时依赖打进lib/index.js根治了Cannot find package deepseek-ai/dsh-tools问题injector/CHANGELOG.md。所以请尽量使用新版本 Release 包。第 3 步装配dsh plugin --profile web add ~/dsh-super-injector这条命令把解压目录作为 bundle 写入 web profile。注意--profile web必须与你实际启动的 DSH profile 一致——这是后续装了但 dev_* 工具不存在最常见的根因详见第 8 节排查表。第 4 步重启生效重启 DSH web 进程bundle 装配在启动时完成。重启后向 agent 说一句dev_plugin_status——看到dsh-super-injector且状态 active 即成功。不想重启如果你已有另一台机器/环境装过注入器可以用它的dev_inject_plugin直接注入本目录免重启。这是运行时注入路径的典型场景注入器作为引导器常驻一处其他插件包随取随用。4. 方式 Bgit 装配dsh plugin --profile web add github:yjh051108/dsh-super-injector重启 web 后同上验证。git 安装只取源码构建由已提交的prepare脚本自动完成——npm/pnpm抓取后即运行产出自包含的lib/无需 DSH checkout。这里的 prepare 脚本自动构建 在仓库里有完整实现injector/scripts/prepare.mjs。其策略要点npm/pnpm安装 git 依赖时会在包内自动运行preparepackage.json的prepare: node scripts/prepare.mjs见 injector/package.json若lib/index.js与lib/client.js已存在则直接跳过构建幂等优先使用本地 devDependency 的 tsdownnode_modules/.bin/tsdown否则回退npx --yes tsdown^0.22.14首次需要网络构建失败会响亮地失败报错并提示两条替代路径——(a) 改用 Release tgz预构建产物(b) 设置DSH_CHECKOUT后运行bash scripts/build.sh再重装。自己从源码构建例如改过src/之后# 1. 安装依赖。peerDependencies 由 DSH 宿主提供npm 却会自动装 peer 并撞上 # 未发布的 deepseek-ai/dsh-type-metaE404——用 --legacy-peer-deps 跳过。 npm install --legacy-peer-deps --no-audit --no-fund # 2. 类型检查 声明产出。cordis/schemastery 必须解析到 deepseek-ai 的分叉版 # 4.0.1 / 3.18.1公共 registry 的 cordis d.ts 在 NodeNext 下是坏的 # 而打包后的 app bundle 又把分叉版 d.ts 剥掉了。把分叉包复制进 # node_modules/deepseek-ai/ 并链接之后任何 npm install 都会再次剪掉需重链。 ./node_modules/.bin/tsc -p tsconfig.json # 3. 打包 host clientlib/ 已存在时 prepare.mjs 会跳过——先 rm -rf lib 强制重建 ./node_modules/.bin/tsdown --config tsdown.config.ts说明第 3 步的rm -rf lib是原文档为强制重建给出的命令语义若出于环境限制不方便删除也可以先手动清理lib/目录再执行 tsdown。步骤 2 的tsc -p tsconfig.json对应仓库内的 injector/tsconfig.json步骤 3 对应 injector/tsdown.config.ts。5. 方式 C手动 patch最底层什么都依赖没有时编辑~/.dsh/profiles/web/cordis.patch.yml把内容替换为# Your patch layer for this dsh profile, applied after every bundle layer: # a top-level YAML array of loader patch entries (id-targeted config # overrides, disables, and insert lists; !!js expressions allowed). - id: dsh-super-injector name: yjh051108/dsh-super-injector config: {}并且保证包能被 loader 解析把插件目录链接到 profile 的 node_modules。先确保父目录存在全新 profile 上dsh-external可能不存在否则链接会报系统找不到指定的路径mkdir -p ~/.dsh/profiles/web/node_modules/dsh-external再建立链接# Windowsjunction无需管理员用 Git Bash 执行 ln -s /你的路径/dsh-super-injector ~/.dsh/profiles/web/node_modules/yjh051108/dsh-super-injector # 或 cmdWindows 原生 mklink /J %USERPROFILE%\.dsh\profiles\web\node_modules\dsh-external\dsh-super-injector D:\你的路径\dsh-super-injector # Linux/macOS软链 ln -s /你的路径/dsh-super-injector ~/.dsh/profiles/web/node_modules/yjh051108/dsh-super-injector注意cordis.patch.yml必须是单一顶层值要么[]要么- id:列表不能两者混存——否则 YAML 解析报错。注意同 id 条目只允许一条dsh loader 装配遇同 id 直接报duplicate loader entry id启动即崩。方式 C 是给什么都不依赖的场景兜底的重复执行 / 重复粘贴会制造重复 id。如果之前已经装过注入器方式 A/B不要再手动 patch 一次——先跑dev_fix_patch检查去重。与 bundle 层 patch 格式的对照注意注入器自带的 bundle 层 patchinjector/cordis.patch.yml使用的是- insert:包裹格式- insert:下一级才是- id:/name:/config:而方式 C 手动写的是顶层- id:列表。两种都属于顶层 patch 条目数组的合法形态区别在于bundle 层的- insert:由 DSH 装配机制自动应用走方式 A/B 后无需手动加任何 patch方式 C 则完全手写。README 中的引导装配示例用的也是- insert:形态injector/README.md并特别警告走方式 A/B 装配后请勿再加这一条否则与 bundle 层自注册的dsh-super-injector撞同一个 loader entry id报duplicate loader entry id。这与原文档方式 C 是给什么都不依赖的场景兜底的定位完全一致。从源码看注入器自己的writePatch写入逻辑injector/src/index.ts专门处理了这两个坑写入前扫描现有条目 id 做幂等id 已存在则不追加重写文件时按 id 去重保留最后一条并移除顶层[]再追加条目以保证单一顶层值。这也是第 6 节预防部分注入器 ≥0.3.3 的 writePatch 按 id 幂等去重的源码出处。6. 故障修复启动崩溃duplicate loader entry id症状dsh 启动即退出报错含Error: dsh: plugin tree failed to load: failed to apply loader entry include (cordis:include): duplicate loader entry id: id原因~/.dsh/profiles/profile/cordis.patch.yml里同 id 条目出现两次手动 patch 重复执行、重复粘贴、或注入器旧版本盲追加写入。dsh loader 要求 id 唯一。修复dsh 起不来时发布包自带独立修复脚本零依赖node 直接跑不需要 dsh 启动# 解压目录里含 scripts/fix-patch.mjs node scripts/fix-patch.mjs # 修复全部 profile自动备份原文件 node scripts/fix-patch.mjs --check # 只检查不写退出码 0健康 1有重复 node scripts/fix-patch.mjs --profile web # 只修 web profile修复后重新启动 dsh 即可。这段脚本的实现在 injector/scripts/fix-patch.mjs其内部逻辑值得展开方便你理解它在做什么、边界是什么扫描范围默认遍历~/.dsh/profiles下所有 profile 的cordis.patch.yml跳过以.开头的目录--profile只处理指定 profile。去重规则按 entry id 去重同 id 保留最后一条后写的覆盖先写的注释块保留顶层[]会被清理。备份修复前先把原文件改名为cordis.patch.yml.bak-时间戳再重写新文件保证可回滚。--check模式只读不写退出码0 健康、1 存在重复可用于脚本化巡检找不到 profiles 目录时退出码2。零依赖只用了 node 内置的fs/path/os注释明确写着此时注入器自身无法启动只有本脚本能救——它不依赖 dsh也不依赖任何 npm 包injector/scripts/fix-patch.mjs。修复dsh 能启动时直接让注入器修等价操作含备份dev_fix_patch # 修复全部 profile dev_fix_patch --check # 只检查预防注入器 ≥0.3.3 的writePatch按 id 幂等去重——它自己写 patch卸载 disabled、self-test 等不会再制造重复已有重复也会在写入时顺带清理对应源码 injector/src/index.ts 的注释手动 patch / 重复安装 / 多路径写入都可能让同 id entry 出现两次……写入前扫描现有条目 id若已存在则不追加。手动 patch 前先确认没有装过注入器装过就用dev_fix_patch --check验证。重启 web 后验证。7. 验证是否装好装好后对 agent 说或自己跑dev_plugin_status → 看到 dsh-super-injector active且操作统计面板正常 dev_self_test → 一键回归 8 项期望全部 PASS含注入/热重载/自重载节流/预检拦截/卸载dev_self_test全部 PASS 注入器及其环境完全健康。从源码与 CHANGELOG 可以确认这 8 项回归的具体内容injector/CHANGELOG.md 记录了 v0.3.3 自检 8/8 PASS 的项目测试插件构建 / 注入 host ✓ / 热重载 uid 变化 / 自重载节流 / 预检拦截 / lib 恢复 / 卸载即净 / patch 写入合法性。自检中的两个预期拒绝场景自重载节流、预检拦截会显示为[EXPECTED]前缀计入 PASS 而不是故障——这是为了让新手不被预期行为误导见 injector/CHANGELOG.md。dev_plugin_status除了能看到dsh-super-injectoractive 之外还会对运行时注入的插件标注[injected]标记与 bundle 装配区分并展示操作成功率统计与最近失败lastFailures最近 5 条失败的类型/时间戳/原因方便追溯历史问题injector/CHANGELOG.md。8. 常见问题排查症状原因与解法dsh命令不存在dsh CLI 不在 PATH。Windows 上它随 DSH 安装提供如C:\Users\你\.workbuddy\binaries\node\versions\22.22.2\dsh.cmd确认 PATH 或使用完整路径装了但dev_*工具不存在注入器未装配成功。检查bundle 是否在~/.dsh/profiles/web/package.json的dsh.profile.bundles里web 是否重启过确认装的是正在运行的 profile--profile web与你的启动 profile 一致装配报entry not foundpatch 格式错误顶层- id:而不是- insert:包裹。参考方式 C 的示例YAML 解析报错两个顶层值cordis.patch.yml里同时存在[]和- id:条目。清理为单一形式dev_build_plugin报 bash/node 找不到需要 bashGit for Windows/PortableGit与 node 在 PATH或设置DSH_CHECKOUT环境变量指向 dsh 源码 checkoutGitHub 下载/克隆失败网络问题换代理/镜像或改用方式 C 手动装配注入插件报client ✗若插件无 client 声明这是预期输出会显示跳过若显示注册失败检查插件 client bundle 是否构建npm run build:client自检的节流/预检显示[EXPECTED]这是预期行为防循环自杀的节流、预检拦截坏代码计入 PASS不是故障插件升级后 DSH 报版本不兼容本插件 peerDependencies 全是范围声明0.0.1-rc 2DSH 升级无需改插件结合源码与 CHANGELOG上面两条与 Windows 构建相关的排查项还有更深的背景可作为排障时的参考dev_build_plugin报 bash 找不到v0.3.3 修复过一个真实 bug——Windows 装了 WSL 时System32\bash.exe会抢先命中 PATH导致构建直接失败报适用于 Linux 的 Windows 子系统没有已安装的分发版修复策略是 Git/PortableGit 路径优先、PATH 探测结果含 wsl 标记即拒绝injector/CHANGELOG.md。所以排障时优先确认 PATH 里的是 Git Bash 的 bash 而非 WSL 的 bash。路径错位类问题部署的 web 进程homedir()可能与DSH_HOME环境变量指向不同服务账户/跨用户部署场景导致 registry / profileNodeModules / 日志路径全部错位、junction 建到错误 profile。源码统一采用process.env.DSH_HOME || join(homedir(), .dsh)作为权威路径injector/src/index.ts。若你发现注入器写文件的位置不对先检查DSH_HOME是否被显式设置。9. 卸载 / 回滚# 1. 从 profile bundles 移除官方路径 dsh plugin --profile web remove yjh051108/dsh-super-injector # 2. 清理 profile patch 里的 disabled/配置条目若存在 # 编辑 ~/.dsh/profiles/web/cordis.patch.yml删除含 dsh-super-injector 的条目 # 保持文件为单一顶层值[] 或列表 # 3. 删除 node_modules 链接若存在 rm -rf ~/.dsh/profiles/web/node_modules/yjh051108/dsh-super-injector # 4. 清理运行时注入清单若走的是运行时注入 # 重启后由 agent 执行 dev_uninject_plugin或直接删除 ~/.dsh/super-injector/registry.json重启 web 后dev_*工具消失即卸载完成。若只是临时禁用在 patch 里给dsh-super-injector加disabled: true即可保留数据随时恢复。关于第 3 步的链接删除有一个实现细节注入器在注入/安装插件时通过 junctionWindows或软链Linux/macOS把插件包链接到~/.dsh/profiles/web/node_modules对悬空 junction源目录已被删除/改名会先用lstatSync判断链接存在再删除重建injector/CHANGELOG.md。手动清理时同理直接删除链接本身即可不需要理会链接指向的目标是否还存在。另外~/.dsh/super-injector/registry.json是运行时注入清单源码中readRegistry/writeRegistry使用先写 tmp 再 rename的原子写策略避免中途崩溃留下半截 JSON 毒化下次自动恢复见 injector/src/index.ts。直接删除该文件即可放弃全部运行时注入的恢复记录。10. 给 agent 的一句话环境说明模板本环境装有 dsh-super-injectordev_* 工具任意本地插件包可运行时注入——工具包/守护循环timerLLM 自主 agent loop/UI 面板/混合形态同一通道注入即完整生效hostUI、可热重载与自重载、卸载即净。插件自身的提示词/工具/循环皆可自我优化建新插件优先克隆/借鉴/重构生态已有资源不重复造轮子。若注入器无法支撑此闭环优先修复注入器。从零体验路径dev_plugin_status → dev_self_test → dev_scaffold_plugin → dev_build_plugin → dev_inject_plugin → dev_uninject_plugin。这段从零体验路径对应的正是注入器提供的 dev_* 工具全家桶。除了上面出现的命令完整工具清单见 injector/README.md 与源码注册处 injector/src/index.ts还包括工具说明dev_inject_plugin运行时注入本地插件包junction 链接 loader.createhasActiveEntry防重dev_uninject_plugin一键卸载注入模组fiber dispose 全清理bundle 插件自动写 disabled 阻断自装配dev_injected_list列出注入清单dev_install_package热装配本地 bundle 插件profile package.json junction loader.create重启后由 bundles 列表正常装配dev_reload_package整包热重载清缓存 → 重新 import → 重建 fiber失败回滚保留旧代含自重载dev_plugin_status已装配插件清单、fiber 状态与操作成功率统计dev_clear_routeswebserver 路由残留自愈按 path 前缀删除孤儿路由dev_stage_add开发侧挂测试工具挂后侧不进 tools schema缓存零污染dev_stage_call调用侧挂工具测试dev_stage_list列出侧挂工具含转正状态dev_stage_promote一键转正侧挂工具挂前侧正式注册唯一一次缓存刷新dev_stage_demote撤回/注销侧挂或已转正工具这些工具的底层机制injector/README.md可以作为你理解安装后行为的心智模型① junction 链接插件包到~/.dsh/profiles/web/node_modulesloader 标准解析路径②ctx.loader.create({ name, config })运行时装配完整 ctx③ 清单持久化~/.dsh/super-injector/registry.json重启后自动恢复注入④ client 联动——注入/重载后清除 entry disabled 标记并补扫 client 模块表。11. 安装之后你能得到什么装好注入器方式 A/B/C 任选其一并验证通过之后DSH 就拥有了万物可注入、注入可回滚、改完即生效的 Mod 级体验。一个典型的开发闭环是injector/README.md装模组拿到插件包package.json lib/ 产物→ 对 agent 说dev_inject_plugin参数 插件包绝对路径→ 当场生效下一 step 工具可见。开发迭代改代码 → build → 自动 watch 约 1.5 秒自动重载或dev_reload_package→ 验证 → 稳定后dev_stage_promote一键转正。卸载dev_uninject_plugin参数 包名子串→ 工具/监听/路由/client 表全清免重启。如果你要在此基础上继续开发自己的插件injector/docs/SPEC.md 是注入器的设计契约文档基于 DSH 0.1.0-rc.6 源码语义推导injector/README.md 的插件开发指南一节给出了四种插件形态toolkit / daemon-loop / ui-panel / hybrid的一分钟起步路径与十条规范铁律——这些内容与安装手册互补适合装好之后继续深入。赞分享dsh-plugin人工智能大模型AI 技能/插件提示工程AI Agent【免费下载链接】dsh-routing-suitedsh-routing-suite — injector router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).项目地址https://gitcode.com/gh_mirrors/ds/dsh-routing-suite点击查看免费下载相关推荐9Router 安装完全指南系统要求、三种安装方式与故障排除实战9Router 安装完全指南系统要求、三种安装方式与故障排除实战 本文是 9Router 的官方安装指南覆盖从环境准备、全局/本地/源码三种安装方式、首次启人工智能LLM 网关AI 应用google-images-download 安装指南环境要求、三种安装方式与安装验证google images download 安装指南环境要求、三种安装方式与安装验证 导读 本文以 google images download 仓库的网页爬虫CLIhuggingface_hub 安装完全指南pip、conda、源码三种方式与安装验证huggingface_hub 安装完全指南pip、conda、源码三种方式与安装验证 本文基于 huggingface_hub 官方文档docs/sour开发工具CLI机器学习上一篇SpaceX-API日志聚合架构集中式与分布式对比下一篇大一军事理论论文写作终极指南nwpu-cram资料库与范例解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考