前言¶
在 DSH 裏,客戶端插件之間會有注入依賴,也會有插槽聲明和註冊。這些信息分散在啓動清單、插槽註冊表和插件配置裏,排查某個插件依賴誰、誰依賴它、誰聲明瞭某個插槽時,往往要來回查多個位置。
dsh-plugin-graph 是一個面向 DSH Web 設置頁的插件,把這些關係畫成一張力導向圖,用來快速查看客戶端插件之間的 inject、declares 和 registers 關係。
這是什麼¶
dsh-plugin-graph 由 erduotong 維護,許可證爲 MIT。它不是替代 DSH 運行時的工具,而是在 DSH Web 設置頁增加一個「插件關係圖譜」入口,用只讀視圖展示當前 DSH Web 進程裏的客戶端插件與插槽關係。
核心功能¶
下面介紹幾個可直接使用的能力。
力導向圖畫布¶
- 節點會自動進行物理佈局。
- 節點大小按度數縮放。
- 藍色圓點表示插件節點,來自啓動清單
window.__DSH_BOOT__與插槽註冊表。 - 琥珀色菱形表示插槽節點,來自即時插槽註冊表
ctx.slots.snapshot()。
關係邊¶
- 藍色
inject:插件對其它包的依賴。 - 綠色
declares:插槽聲明者。 - 琥珀色
registers:註冊到插槽的插件。
畫布交互¶
- 拖拽節點:釘住該節點,並重新加熱佈局。
- 拖拽空白處:平移畫布。
- 滾輪:縮放畫布。
- 懸停節點:高亮相鄰節點,並彈出信息框,顯示依賴/被依賴、聲明者/註冊者。
- 點擊手動刷新:重新讀取啓動清單與插槽註冊表。
- 點擊右上角展開按鈕:打開全屏模態框,可用
Esc、遮罩或×關閉。
只讀快照¶
這個插件不訂閱任何事件,掛載與手動刷新時重建圖;具體而言,它不訂閱 slots/changed,所以 HMR 註冊關係發生變化時,需要手動刷新畫布。
內嵌圖和模態框圖是兩個獨立模擬實例,各自演算佈局,互不共享拖拽位置。
安裝與啓用¶
前置條件¶
先確認已經安裝 DeepSeek Harness,並且至少啓動過一次 Web 界面。啓動後會生成 Web profile 目錄:
~/.dsh/profiles/web
安裝¶
一般用戶可以從 npm registry 安裝:
dsh plugin --profile web add dsh-plugin-graph
本地源碼安裝,例如開發中或未發佈時:
dsh plugin --profile web add /path/to/dsh-plugin-graph
安裝命令會把包裝進 profile 的 package.json 依賴,並鏈接到:
~/.dsh/profiles/web/node_modules
不要用裸 npm i dsh-plugin-graph 安裝。那樣只會裝進當前目錄的 node_modules,DSH profile 不會知道它。
自動加載說明¶
本包自帶 dsh.bundle 聲明。dsh plugin add 後,會追加到 profile 的 dsh.profile.bundles 層疊,無需手動編輯 cordis.patch.yml。
如果你曾在舊版本、沒有 dsh.bundle 的情況下手動往 cordis.patch.yml 添加過 insert 條目,升級前需要先刪除該條目,再重新安裝,避免重複掛載。
重啓並打開¶
1、重啓 dsh Web 進程。配置變更和 loader 條目都需要重啓才生效。
2、打開設置頁,也就是側邊欄底部的「設置」。
3、找到「插件關係圖譜」入口,點擊進入即可看到力導向圖。
典型用法¶
下面是常見的排查路徑。
1、安裝插件後重啓 dsh Web 進程。
2、打開 Web 設置頁,進入「插件關係圖譜」。
3、懸停一個插件節點,查看它的依賴/被依賴、聲明者/註冊者。
4、如果圖中節點較多,點擊手動刷新,重新讀取啓動清單和插槽註冊表。
5、需要細看關係時,打開全屏模態框,用滾輪縮放和拖拽空白處平移。
如果你要在本地源碼目錄裏構建和測試,可以執行:
pnpm install
pnpm build
pnpm test
卸載時使用:
dsh plugin --profile web remove dsh-plugin-graph
適用場景與注意¶
適合在以下場景使用:
- 排查某個 DSH Web 客戶端插件依賴了哪些包。
- 查看某個插槽由誰聲明、由哪些插件註冊。
- 在本地源碼安裝後,快速確認插件與插槽關係是否符合預期。
注意:
- 它只覆蓋客戶端插件。宿主平面行,例如
webserver、storage,不在window.__DSH_BOOT__中;只有當它們被插槽聲明或註冊時纔會出現。 - 它是隻讀快照視圖,不改變 DSH 運行行爲。
- 它會以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。許可證爲 MIT。
- 安裝時如果 pnpm 報 peer 依賴缺失,例如
missing peer @deepseek-ai/cordis / react ...,這是預期提示,運行時由宿主提供。 - 如果你通過社區目錄使用它,注意社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係;不要把它理解成官方應用商店。
結尾¶
dsh-plugin-graph 的價值在於把 DSH Web 設置頁裏分散的客戶端插件關係收斂成一張可讀圖。它適合做依賴排查、插槽關係確認和本地開發驗證。
GitHub:
https://github.com/erduotong/dsh-plugin-graph
目錄頁線索:
https://www.skillhub.cn/plugins/erduotong/dsh-plugin-graph