Theme / v1.6.0

Codegraph

程式碼知識圖譜工具

指令詳解

config.yaml 配置檔詳解

掌握 Codegraph 的設定核心,配置語言解析器、排除規則與圖譜解析效能參數

指令用途

雖然 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 來應用這項新配置嗎?