DeepSeek Harness 的核心設計理念是「一切皆插件」,插件之間通過 Cordis 運行時進行服務注入。隨着插件數量增加,排查某個服務由誰提供、或者哪些插件依賴了它,往往需要查閱代碼或配置文件,無法直觀反映運行時的真實狀態。
ewoowe/dsh-plugin-dependency-graph-plugin 是一個用於 DeepSeek Harness 的依賴關係圖插件。它不從靜態清單讀取數據,而是直接從當前正在運行的 Cordis 實例中抓取實時服務注入關係。該項目由 ewoowe 維護,採用 MIT 許可證。
核心功能¶
該插件主要提供以下能力:
- 實時讀取運行時:直接從 Cordis 運行時讀取插件服務注入關係,而非靜態清單。
- 雙視圖模式:提供設置欄內的內嵌視圖,以及新標籤頁打開的全寬獨立視圖。
- 搜索與篩選:支持按包名、Loader 條目 ID、服務名進行搜索。
- 狀態行控制:顯示圖例、統計數量,點擊可篩選特定狀態的節點。
- 畫布交互:支持刷新、縮放、平移、節點選擇。
- 自動摺疊:默認摺疊無依賴項的插件,保持界面整潔。
- 運行時隔離:瀏覽器和 Node 運行時是不同的,兩者不會合並。
安裝與啓用¶
根據提供的資料,安裝命令未明確列出。該插件在 package.json 中配置了 dsh.bundle.patch 機制(指向 cordis.patch.yml),通常通過 Harness 的包管理或補丁系統進行加載。
# cordis.patch.yml (引用自 package.json)
bundle:
patch: "./cordis.patch.yml"
典型用法¶
1. 查看依賴圖¶
在 Harness 的設置界面中找到該插件,或者在瀏覽器中直接打開該依賴圖頁面,即可看到當前的依賴關係可視化視圖。
2. 搜索服務¶
使用搜索框查找特定服務。搜索支持匹配包名、Loader 條目 ID 以及插件提供的服務名。例如,輸入 ctx.locale 可以直接找到提供該服務的節點。
搜索結果會列出匹配項,點擊結果行即可定位到圖中的節點。
3. 篩選狀態¶
依賴圖頂部設有狀態行,顯示每種狀態(如正常、錯誤等)的節點數量。點擊某個狀態的膠囊按鈕,可以篩選圖中只顯示該狀態的節點。
4. 操作畫布¶
- 選擇節點:點擊節點可查看詳情(包括提供的服務和監聽的事件)。
- 平移與縮放:拖拽畫布平移,滾動鼠標滾輪縮放。
- 刷新:點擊刷新按鈕重新讀取運行時數據。
適用場景與注意¶
- 版本要求:依賴 Node.js 22.19.0 或更高版本。
- 依賴庫:依賴
@deepseek-ai/cordis、React等庫。 - 運行時差異:瀏覽器和 Node 端收集到的樹是不同的,兩者是不同的運行時,無法合併顯示。
- 依賴類型:依賴關係分爲聲明(
inject、@Inject裝飾器)和運行時(ctx.inject)。插件加載時必須滿足聲明的依賴,而運行時依賴則通過回調滿足。 - 佈局算法:圖佈局基於數據而非物理引擎,使用黃金角度分佈,確保相同組合下產生的圖像位置固定,便於定位。
總結¶
該工具幫助開發者直觀地瞭解 DeepSeek Harness 的插件生態運行狀態,是排查服務注入問題和理解插件架構的有力輔助。