設定

config 指令、CBM_* 環境變數、.cbmignore、extra_extensions

config 子指令

codebase-memory-mcp config list                          # 顯示所有設定
codebase-memory-mcp config set auto_index true           # session 開始時自動索引
codebase-memory-mcp config set auto_index_limit 50000    # 自動索引的檔案上限
codebase-memory-mcp config set auto_watch false          # 不註冊背景 git watcher(預設 true)
codebase-memory-mcp config reset auto_index              # 重置為預設

設定存在 ${CBM_CACHE_DIR}/_config.db(SQLite)。

環境變數

變數預設說明
CBM_ALLOWED_ROOT未設index_repository 限制在此目錄內(多租戶/未信任呼叫者用)
CBM_CACHE_DIR~/.cache/codebase-memory-mcpDB 存放目錄(一帳號一個 canonical root)
CBM_DIAGNOSTICSfalse啟用 daemon 的 snapshot.jsontrajectory.ndjson 診斷
CBM_DOWNLOAD_URLGitHub releases覆寫更新下載來源(測試/自架用)
CBM_LOG_LEVELinfolog 級別:debug/info/warn/error/none
CBM_WORKERS自動偵測平行索引 worker 數(容器內 cgroup 誤判時用)
CBM_MEM_BUDGET_MB自動偵測記憶體預算上限(MiB)
CBM_DUMP_VERIFY_MIN_RATIO0.5索引後驗證:持久化節點數低於門檻回 degraded

daemon 擁有的組件(diagnostics、daemon log、索引資源限制)在「第一個啟動 daemon 的 session」時捕捉設定——要改得關掉所有 daemon-backed session。

忽略檔案:.cbmignore

忽略是分層的:硬編碼模式(.gitnode_modules…)→ .gitignore 階層 → .cbmignore(專案專用,gitignore 語法)。symlink 永遠跳過。

# .cbmignore 範例(gitignore 語法,支援 ! 反轉)
build/
dist/
*.min.js
!important.min.js

完整語法與優先權見上游 docs/cbmignore.md

自訂副檔名:extra_extensions

把額外副檔名映射到支援的語言(框架專用副檔名如 .blade.php.mjs):

// 專案內 .codebase-memory.json
{"extra_extensions": {".blade.php": "php", ".mjs": "javascript"}}

// 全域 ~/.config/codebase-memory-mcp/config.json
{"extra_extensions": {".twig": "html", ".phtml": "php"}}

專案設定覆寫全域。副檔名必須以 . 開頭、語言名不區分大小寫;未知語言會被略過並警告。

持久化

SQLite DB 在 ~/.cache/codebase-memory-mcp/,跨重啟持久(WAL、ACID-safe)。重置:rm -rf ~/.cache/codebase-memory-mcp/

看完這頁你應該能說出:config 指令語法與存放位置、auto_index/auto_watch 的差別、CBM_ALLOWED_ROOT 與 CBM_CACHE_DIR 何時用、忽略分層(硬編碼→gitignore→cbmignore)、以及如何把 .blade.php 映射到 PHP。