src/discover/ · src/watcher/discover/ 決定「哪些檔案進圖」,watcher/ 決定「檔案變了之後怎麼保持圖新鮮」。兩者都跟 忽略規則 密切相關。
走訪 repo,套用忽略規則:
.git、node_modules…).gitignore 階層.cbmignore(專案專用,gitignore 語法)為了在 75K 檔的 repo 上也能快速走完,discover 用 fast pattern 匹配(非逐檔 regex)過濾,並對目錄層級提前剪枝。
language.c 依副檔名判斷語言(配合 extra_extensions 的映射);gitignore.c 解析 .gitignore 語法(含 ! 反轉)。
watcher 由 daemon 擁有(跨 session 共享)。它輪詢 git 狀態偵測變更,用 adaptive interval 平衡「即時」與「省資源」。偵測到變更就觸發增量重索引(寫 Fast tier 的 graph.db.zst)。auto_watch false 可關掉。