mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-07 08:43:35 +08:00
New CBM_MODE_ADVANCED=3. Both per-file LSP (type-aware resolution during extract) and the cross-file LSP pass (during resolve) are now OPT-IN: FULL and below run tree-sitter extraction + registry textual resolution only; ADVANCED adds the full LSP layer. Rationale: profiling showed LSP changes the kubernetes graph by only ~0.01% of edges (it mostly re-confirms textual resolution) while costing significant memory + time. Making it opt-in keeps the default FULL path lean (3.0 GB vs 5.6 GB peak RSS on K8s) without meaningfully worse output, and lets users pay for LSP precision only when wanted. Mechanism: - cbm.c: g_lsp_enabled atomic toggle wraps the entire per-file LSP block (Go/C/C++/PHP/Python/TS/JS/C#) + the C/C++ preprocessor-pass LSP call. Default true so ad-hoc extraction / tests keep historical behaviour. cbm_set_lsp_enabled / cbm_get_lsp_enabled in cbm.h. - pipeline.c: sets the toggle (save→set→restore so it never leaks to other callers) from p->mode before extraction; gates the cross-LSP all_defs collection + registry build on advanced; gates the sequential lsp_cross dispatch. Fixed the moderate_only comparison (== FAST, not > MODERATE) so ADVANCED is not treated as lighter. - pipeline_incremental.c: same toggle save/set/restore. - discover.h/.c: added CBM_MODE_ADVANCED to discover's enum + all 4 filter comparisons treat ADVANCED like FULL (full discovery, no fast-filtering). Without this, ADVANCED (numerically 3) was mis-detected as fast-mode and dropped ~half the files. - mcp.c: parse mode "advanced" + tool schema enum/description. Dual-mode K8s bench: FULL 46.7s (lsp_overrides=0, 3.0 GB) vs ADVANCED 48.8s (lsp_overrides=80,818, 5.6 GB). Graphs within 0.01%. All 3,615 tests pass.