前言¶
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