dsh-plugin-graphify-watch:爲每個項目自動重建 Graphify 知識圖譜

前言

DeepSeek Harness(DSH)的生態理念是「一切皆插件」。在使用 Graphify 構建知識圖譜時,如果通過外部編輯器或命令行修改了代碼,DSH 的 workspace/changes 信號通常無法感知這些變化。graphify watch 原生支持監聽文件變化並自動重建圖譜,但需要一個長期運行的進程來維護它。dsh-plugin-graphify-watch 專爲解決這一問題設計,它接管了 graphify watch 的進程生命週期管理,確保代碼變更能自動觸發圖譜重建。

核心功能

該插件專注於進程管理,而非文件檢測。

  1. 進程託管:爲每個配置的項目根目錄啓動並維護一個 graphify watch 進程。
  2. 自動恢復:進程崩潰後,使用指數退避策略(最大延遲 60 秒)自動重啓。
  3. 狀態過濾:
    • 如果項目根目錄下不存在 graphify-out/graph.json,插件會跳過啓動並提示先運行 /graphify。
    • 如果已被當前進程監視,則跳過;如果已被其他進程監視,也會跳過以避免衝突。
  4. 變更處理:
    • 代碼變更:觸發 graph.json 和 GRAPH_REPORT.md 的重建。
    • 文檔/圖片變更:不直接重建圖譜,而是寫入 graphify-out/needs_update 標記,提示手動運行 /graphify --update。
  5. 資源清理:插件卸載時會終止整個進程樹,防止殘留進程佔用資源。

安裝與啓用

由於該插件依賴本地絕對路徑且包含依賴鏈接,需要通過 DSH 應用程序進行安裝,而非 dsh CLI。

  1. 打開 DSH 應用程序的側邊欄,進入 Plugins 頁面。
  2. 點擊 Add plugin,輸入插件的本地絕對路徑:C:\documents\dsh\dsh-plugin-graphify-watch。
  3. 在插件列表中找到 dsh-plugin-graphify-watch,啓用對應的 bundle。
  4. 重啓 DSH。添加本地文件依賴需要重啓進程以清除 Node 的路徑緩存。

典型用法

安裝後,你通常需要在配置文件中指定要監視的項目路徑。

# 在 ~/.dsh/profiles/desktop/cordis.patch.yml 中覆蓋配置
- id: graphify-watch
  name: dsh-plugin-graphify-watch
  config:
    enabled: true
    roots:
      - C:\Users\Administrator\Documents\my-project
    exePath: ""
    maxRestarts: 3
    restartBackoffMs: 2000
    logRebuilds: true

驗證進程是否正常運行:

# 在 PowerShell 中檢查 graphify.exe 進程
Get-CimInstance Win32_Process -Filter "Name='graphify.exe'" | Select-Object ProcessId,CommandLine

觸發重建:

# 修改源碼文件以觸發代碼重建
Add-Content <root>\src\thing.py "`ndef probe():`n    return 1`n"
# 此時 graph.json 的時間戳應更新
(Get-Item <root>\graphify-out\graph.json).LastWriteTime

適用場景與注意

  • 適用場景:當你需要將 Graphify 集成到非 DSH 環境的工作流中,或希望代碼修改能自動反映在知識圖譜上時使用。
  • 不負責檢測:該插件只管理進程的啓動、重啓和銷燬,不負責文件系統變化檢測。實際的檢測和去抖動邏輯(默認 3 秒)由 graphify watch 內部處理。
  • 文檔更新策略:插件故意不自動處理文檔層的更新(如 PDF、圖片),因爲這通常需要消耗 LLM Token。它僅標記 needs_update,由你決定何時運行 /graphify --update。
  • 無依賴:插件不依賴 @deepseek-ai/schemastery,因此不會因爲 DSH 的版本兼容性檢查而被攔截。
  • 進程終止:在 Windows 上,graphify.exe 是啓動器,實際 Python 進程是子進程。插件使用 taskkill /T /F 終止整個樹,確保徹底清理。

總結

dsh-plugin-graphify-watch 通過接管 graphify watch 的進程生命週期,解決了外部編輯器修改代碼後圖譜不同步的問題。它以零依賴、輕量級的方式,讓代碼變更能夠自動反映在知識圖譜中。你可以通過目錄鏈接獲取源碼:joslynSmall/dsh-plugin-graphify-watch。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜