Theme / v0.10.8

Codebase Memory

程式碼記憶與知識圖譜 MCP

指令詳解

detect_changes 工具詳解

如何使用 detect_changes 進行增量程式碼分析,在檔案變更後即時同步更新本地知識圖譜

指令用途

在開發過程中,開發者與 AI 助手會頻繁地修改原始碼。如果每次修改完代碼,都需要對整個專案重新進行完整的 AST 語法樹編譯與關係圖生成,這會耗費大量的 CPU 資源,在大專案中甚至會造成數分鐘的卡頓。

detect_changes 是專為高效增量同步而設計的圖譜更新工具。它會自動比對本地檔案的最後修改時間(mtime)與 Git Status 狀態,只找出被修改的「髒檔案(Dirty Files)」,並針對性地重新解析這些檔案內部的節點關係,以增量方式更新圖譜資料庫,確保圖譜數據 100% 即時準確且零負擔。


運作流程

  1. 狀態偵測:工具調用 Git status API 或檔案監控 FsWatcher,檢索自上次索引以來被新增、修改或刪除的原始碼路徑。
  2. 增量解析
    • 刪除舊檔案在圖譜中的所有關聯邊與節點。
    • 利用 Tree-sitter 對修改後的檔案進行增量重新解析。
    • 重新將生成的 AST 結構寫入圖譜。
  3. 完成回報:回傳增量同步的檔案數量與耗時,整個過程通常不超過 50 毫秒。

實戰對話範例

範例:修改程式碼後更新圖譜

  • You:
    /opsx:explore "我剛剛修改了 PlcConnection.cs,請幫我偵測變更並更新圖譜。"
  • AI:

    好的,我將呼叫 codebase-memory 的 detect_changes 工具,自動對本地變更的原始碼進行增量解析以同步圖譜。

    CM 呼叫: detect_changes()
    CM 回傳:

    {
      "status": "success",
      "elapsedMs": 35,
      "modifiedFilesCount": 1,
      "syncedFiles": [
        "/src/Core/Communication/PlcConnection.cs"
      ],
      "nodesCreated": 2,
      "nodesDeleted": 2,
      "edgesUpdated": 8
      }

    分析
    圖譜已在 35 毫秒內增量更新完畢!它成功識別出 /src/Core/Communication/PlcConnection.cs 被修改,並重新建立了 2 個節點與 8 條關係邊。

    現在,圖譜資料已是最新的。您可以繼續使用 trace_pathsearch_graph 來搜尋您剛剛新寫的方法了。