指令用途
在開發過程中,開發者與 AI 助手會頻繁地修改原始碼。如果每次修改完代碼,都需要對整個專案重新進行完整的 AST 語法樹編譯與關係圖生成,這會耗費大量的 CPU 資源,在大專案中甚至會造成數分鐘的卡頓。
detect_changes 是專為高效增量同步而設計的圖譜更新工具。它會自動比對本地檔案的最後修改時間(mtime)與 Git Status 狀態,只找出被修改的「髒檔案(Dirty Files)」,並針對性地重新解析這些檔案內部的節點關係,以增量方式更新圖譜資料庫,確保圖譜數據 100% 即時準確且零負擔。
運作流程
- 狀態偵測:工具調用 Git status API 或檔案監控 FsWatcher,檢索自上次索引以來被新增、修改或刪除的原始碼路徑。
- 增量解析:
- 刪除舊檔案在圖譜中的所有關聯邊與節點。
- 利用 Tree-sitter 對修改後的檔案進行增量重新解析。
- 重新將生成的 AST 結構寫入圖譜。
- 完成回報:回傳增量同步的檔案數量與耗時,整個過程通常不超過 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_path或search_graph來搜尋您剛剛新寫的方法了。