指令用途
雖然 Codegraph 提供了自動探查功能,但在複雜的大型單體專案(Monorepos)或包含多種混合語言(Polyglot)的儲存庫中,我們往往需要進行細緻的客製化配置。例如,我們可能需要顯式排除某些龐大的自動產生代碼(如 protobuf 產出的 .pb.go)或者是前端打包目錄。
.codegraph/config.yaml 是 Codegraph 的核心配置文件。它採用直觀的 YAML 結構,定義了整個專案的圖譜編譯規則。理解這份配置檔案的參數設定,是進行高級依賴管理與優化解析效能的重要基礎。
核心配置參數說明
一份典型的 config.yaml 配置如下:
# .codegraph/config.yaml
version: "1.0"
project: "PhysioApp"
language: "typescript"
# 排除清單:排除後將完全不進行 AST 編譯,顯著提升效能
exclude:
- "**/node_modules/**"
- "**/dist/**"
- "**/*.min.js"
- "**/auto_generated/**" # 排除自動產生的代碼
# 解析選項配置
parser:
strictMode: false # 若設為 true,遇到語法錯誤的檔案時會中斷解析
followSymlinks: false
maxFileSizeKb: 1024 # 限制最大檔案大小,防止超大 JSON/CSV 拖慢編譯
關鍵參數解讀:
exclude:支援標準的 Glob 匹配模式。強烈建議將所有測試覆蓋率報告(如coverage/)、打包產物與依賴套件排除,這能減少 80% 以上的無效節點。parser.maxFileSizeKb:限制解析檔案的上限。有些自動產生的資料映射檔或大型 JSON 設定檔會極大消耗 AST 記憶體,將其限制在 1MB 以下是保護本地 CPU 的有效手段。
實戰對話範例
範例:配置排除規則以優化大專案解析速度
- You:
/opsx:explore "我們的專案有自動產生的第三方 API SDK,代碼有 5 萬行,導致 Codegraph watch 很慢。該如何配置排除它?" - AI:
好的,這是一個典型的 AST 效能優化需求。我們可以修改
.codegraph/config.yaml配置檔,在exclude節點下加入過濾規則,避開自動產生的 SDK 目錄。修改後的配置文件:
# .codegraph/config.yaml exclude: - "**/node_modules/**" - "**/dist/**" - "src/sdk/generated/**" # 顯式排除自動產生的 SDK 目錄分析:
透過在exclude中加入"src/sdk/generated/**",Codegraph 在下次背景更新時,會自動抹除該目錄下的所有 AST 節點,不再消耗本地 CPU 進行重複的解析,這能讓 watch 增量更新的時間從 5 秒縮短到 10 毫秒以內!接下來您希望我們執行
detect_changes來應用這項新配置嗎?