欢迎光临
我们一直在努力

Codebase Memory MCP:让 AI 编程助手真正“读懂“你的代码库

一句话理解

目前大多数 AI 编程助手靠"暴力 grep + 逐文件读"来理解代码库,既不聪明也不够快。Codebase Memory MCP 把代码库转成持久化知识图谱——158 种语言毫秒级索引,查询只需几毫秒,token 消耗直降 99%。读完这篇文章,你会拿到一个可立即部署的技术方案,让你的 AI coding agent 的上下文理解能力提升一个量级。


1. 问题:AI Agent 看不懂代码库

试过让 Claude Code 或 Codex 帮你定位 API 之间的调用关系吗?

过程通常是这样的:Agent 开始疯狂 grep 类名,然后 read 一堆文件,再 grep 参数类型,继续 read……来回折腾几十轮,烧掉大量 token,最后可能还给了一个"差不多"的答案。

根本原因不在于模型不够聪明,而在于它缺乏代码库的结构化理解。文件和文件之间、函数和函数之间、服务和服务之间的真实关系并没有被显式建模。每一次 Agent 都要从零开始"摸索"整个仓库。

Codebase Memory MCP 解决的就是这个问题。它是 MCP(Model Context Protocol) 生态里速度最快、支持语言最全的代码智能服务器——将整个代码库转成一个持久的、可查询的知识图谱,让你的 AI 助手不再"盲猜"代码结构。


2. 核心特性速览

特性说明
⚡ 极限索引速度 Linux 内核(2800 万行代码,7.5 万个文件)3 分钟完成全量索引
🌍 158 种语言支持 tree-sitter 语法内嵌二进制,无需另行安装任何依赖
🔌 即装即用 单一静态二进制,支持 macOS / Linux / Windows,无 Docker、无运行时依赖
💸 Token 效率 5 次结构化查询消耗 ~3,400 token,而文件式探索需 ~412,000 token
🧠 知识图谱 函数、类、HTTP 路由、调用链、跨服务链接全部建模为图节点和边
🔍 14 种 MCP 工具 搜索、追溯、架构分析、影响分析、死代码检测、Cypher 查询等
🖥️ 内建 UI 本地 3D 图谱可视化(localhost:9749),交互式浏览代码架构
🔒 完全本地 代码永远不离开你的机器,无需 API key,无需外部服务

3. 技术原理:知识图谱是怎样炼成的

3.1 整体架构

#mermaid-svg-g97UWDu6wdQltJht{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-g97UWDu6wdQltJht .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-g97UWDu6wdQltJht .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-g97UWDu6wdQltJht .error-icon{fill:#552222;}#mermaid-svg-g97UWDu6wdQltJht .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-g97UWDu6wdQltJht .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-g97UWDu6wdQltJht .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-g97UWDu6wdQltJht .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-g97UWDu6wdQltJht .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-g97UWDu6wdQltJht .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-g97UWDu6wdQltJht .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-g97UWDu6wdQltJht .marker{fill:#333333;stroke:#333333;}#mermaid-svg-g97UWDu6wdQltJht .marker.cross{stroke:#333333;}#mermaid-svg-g97UWDu6wdQltJht svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-g97UWDu6wdQltJht p{margin:0;}#mermaid-svg-g97UWDu6wdQltJht .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-g97UWDu6wdQltJht .cluster-label text{fill:#333;}#mermaid-svg-g97UWDu6wdQltJht .cluster-label span{color:#333;}#mermaid-svg-g97UWDu6wdQltJht .cluster-label span p{background-color:transparent;}#mermaid-svg-g97UWDu6wdQltJht .label text,#mermaid-svg-g97UWDu6wdQltJht span{fill:#333;color:#333;}#mermaid-svg-g97UWDu6wdQltJht .node rect,#mermaid-svg-g97UWDu6wdQltJht .node circle,#mermaid-svg-g97UWDu6wdQltJht .node ellipse,#mermaid-svg-g97UWDu6wdQltJht .node polygon,#mermaid-svg-g97UWDu6wdQltJht .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-g97UWDu6wdQltJht .rough-node .label text,#mermaid-svg-g97UWDu6wdQltJht .node .label text,#mermaid-svg-g97UWDu6wdQltJht .image-shape .label,#mermaid-svg-g97UWDu6wdQltJht .icon-shape .label{text-anchor:middle;}#mermaid-svg-g97UWDu6wdQltJht .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-g97UWDu6wdQltJht .rough-node .label,#mermaid-svg-g97UWDu6wdQltJht .node .label,#mermaid-svg-g97UWDu6wdQltJht .image-shape .label,#mermaid-svg-g97UWDu6wdQltJht .icon-shape .label{text-align:center;}#mermaid-svg-g97UWDu6wdQltJht .node.clickable{cursor:pointer;}#mermaid-svg-g97UWDu6wdQltJht .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-g97UWDu6wdQltJht .arrowheadPath{fill:#333333;}#mermaid-svg-g97UWDu6wdQltJht .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-g97UWDu6wdQltJht .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-g97UWDu6wdQltJht .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-g97UWDu6wdQltJht .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-g97UWDu6wdQltJht .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-g97UWDu6wdQltJht .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-g97UWDu6wdQltJht .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-g97UWDu6wdQltJht .cluster text{fill:#333;}#mermaid-svg-g97UWDu6wdQltJht .cluster span{color:#333;}#mermaid-svg-g97UWDu6wdQltJht div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-g97UWDu6wdQltJht .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-g97UWDu6wdQltJht rect.text{fill:none;stroke-width:0;}#mermaid-svg-g97UWDu6wdQltJht .icon-shape,#mermaid-svg-g97UWDu6wdQltJht .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-g97UWDu6wdQltJht .icon-shape p,#mermaid-svg-g97UWDu6wdQltJht .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-g97UWDu6wdQltJht .icon-shape rect,#mermaid-svg-g97UWDu6wdQltJht .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-g97UWDu6wdQltJht .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-g97UWDu6wdQltJht .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-g97UWDu6wdQltJht :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

源代码仓库

tree-sitter AST 解析158 语言语法器

Hybrid LSP 语义类型解析Python/TS/Go/Java/Rust 等 11 语言

RAM-first 索引管道LZ4 压缩 + 内存 SQLite

知识图谱节点: 函数/类/路由/模块边: CALLS/IMPORTS/DEFINES…

MCP 工具层14 种查询工具

持久化存储~/.cache/codebase-memory-mcp/

3D 可视化 UIlocalhost:9749

AI 编程助手Claude Code / Codex / Cursor 等

Codebase Memory MCP 的工作分为三个阶段:

阶段一:解析 → AST + 语义

使用内嵌的 tree-sitter 语法器对代码进行 AST 解析,同时利用 Hybrid LSP 层进行语义类型推导——包括参数绑定、返回类型推断、泛型替换等。Hybrid LSP 是用 C 语言从零实现的轻量语义解析器,结构上兼容主流语言服务器(tsserver、pyright、gopls、Roslyn 等),但足够轻量,不会拖慢索引速度。

阶段二:建图 → 知识图谱

解析结果在内存中构建成知识图谱。节点类型包括函数、类、路由、模块、Dockerfile、K8s 资源等;边类型覆盖 CALLS(调用)、IMPORTS(导入)、DEFINES(定义)、IMPLEMENTS(实现)、INHERITS(继承)、HTTP_CALLS(跨服务调用)、EMITS/LISTENS_ON(频道/事件)、DATA_FLOWS(数据流)等十余种关系。

阶段三:持久化 → 本地存储

构建完成后一次性写入 SQLite 数据库到 ~/.cache/codebase-memory-mcp/,内存释放。后续通过后台文件监听自动增量更新。

3.2 知识图谱的关系网络

#mermaid-svg-99zoDctfRl149ctM{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-99zoDctfRl149ctM .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-99zoDctfRl149ctM .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-99zoDctfRl149ctM .error-icon{fill:#552222;}#mermaid-svg-99zoDctfRl149ctM .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-99zoDctfRl149ctM .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-99zoDctfRl149ctM .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-99zoDctfRl149ctM .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-99zoDctfRl149ctM .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-99zoDctfRl149ctM .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-99zoDctfRl149ctM .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-99zoDctfRl149ctM .marker{fill:#333333;stroke:#333333;}#mermaid-svg-99zoDctfRl149ctM .marker.cross{stroke:#333333;}#mermaid-svg-99zoDctfRl149ctM svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-99zoDctfRl149ctM p{margin:0;}#mermaid-svg-99zoDctfRl149ctM .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-99zoDctfRl149ctM .cluster-label text{fill:#333;}#mermaid-svg-99zoDctfRl149ctM .cluster-label span{color:#333;}#mermaid-svg-99zoDctfRl149ctM .cluster-label span p{background-color:transparent;}#mermaid-svg-99zoDctfRl149ctM .label text,#mermaid-svg-99zoDctfRl149ctM span{fill:#333;color:#333;}#mermaid-svg-99zoDctfRl149ctM .node rect,#mermaid-svg-99zoDctfRl149ctM .node circle,#mermaid-svg-99zoDctfRl149ctM .node ellipse,#mermaid-svg-99zoDctfRl149ctM .node polygon,#mermaid-svg-99zoDctfRl149ctM .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-99zoDctfRl149ctM .rough-node .label text,#mermaid-svg-99zoDctfRl149ctM .node .label text,#mermaid-svg-99zoDctfRl149ctM .image-shape .label,#mermaid-svg-99zoDctfRl149ctM .icon-shape .label{text-anchor:middle;}#mermaid-svg-99zoDctfRl149ctM .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-99zoDctfRl149ctM .rough-node .label,#mermaid-svg-99zoDctfRl149ctM .node .label,#mermaid-svg-99zoDctfRl149ctM .image-shape .label,#mermaid-svg-99zoDctfRl149ctM .icon-shape .label{text-align:center;}#mermaid-svg-99zoDctfRl149ctM .node.clickable{cursor:pointer;}#mermaid-svg-99zoDctfRl149ctM .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-99zoDctfRl149ctM .arrowheadPath{fill:#333333;}#mermaid-svg-99zoDctfRl149ctM .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-99zoDctfRl149ctM .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-99zoDctfRl149ctM .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-99zoDctfRl149ctM .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-99zoDctfRl149ctM .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-99zoDctfRl149ctM .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-99zoDctfRl149ctM .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-99zoDctfRl149ctM .cluster text{fill:#333;}#mermaid-svg-99zoDctfRl149ctM .cluster span{color:#333;}#mermaid-svg-99zoDctfRl149ctM div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-99zoDctfRl149ctM .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-99zoDctfRl149ctM rect.text{fill:none;stroke-width:0;}#mermaid-svg-99zoDctfRl149ctM .icon-shape,#mermaid-svg-99zoDctfRl149ctM .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-99zoDctfRl149ctM .icon-shape p,#mermaid-svg-99zoDctfRl149ctM .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-99zoDctfRl149ctM .icon-shape rect,#mermaid-svg-99zoDctfRl149ctM .image-shape rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-99zoDctfRl149ctM .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-99zoDctfRl149ctM .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-99zoDctfRl149ctM :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

基础设施关系

DEFINES

IMPORTS

K8s Deployment: order-api

Container: order-api:latest

Kustomize Overlay: prod

跨仓库关系

HTTP_CALLS

EMITS

LISTENS_ON

Service: order-api

Service: payment-svc

Channel: order.created

跨文件关系

CALLS

IMPORTS

Function: ProcessOrder

Function: validatePayment

Module: payment.gateway

三种关系的实际价值:

  • 跨文件关系:Agent 问"谁调用了 handleError?"→ 一次图遍历,毫秒返回
  • 跨仓库/跨服务关系:索引多个微服务仓库,自动发现 HTTP 协议对接关系
  • 基础设施关系:Dockerfile 和 K8s YAML 也建模为图节点,AI 可以回答"这个 Deployment 引用了哪个 Image Tag?"

4. 核心技术亮点

4.1 RAM-first 索引管道

传统代码索引工具通常边解析边写入磁盘,I/O 瓶颈严重。Codebase Memory MCP 采用全内存处理管线:LZ4 压缩读入 → 内存 SQLite 构建 → 一次性 dump。Linux 内核全量索引后内存自动释放。这个设计让"平均仓库毫秒级完成索引"成为可能。

4.2 开源团队的神器:图快照共享

项目引入 .codebase-memory/graph.db.zst 快照机制:

  • index_repository 时生成 zstd 压缩的图快照(压缩比 8-13:1)
  • 提交到 Git 仓库后,团队成员 clone 时直接解压导入,避免重复索引
  • 自动配置 .gitattributes 的 merge=ours 策略,避免合并冲突

这对大型开源项目团队简直是神技——新人拉代码瞬间就有图谱可用。

4.3 Token 效率:99% 的节省从哪来?

官方在 31 个真实仓库上评估:83% 的回答质量,token 消耗降低 10 倍,工具调用次数减少 2.1 倍。

具体场景对比(定位一个函数调用链):

  • 传统方式:grep 类名 → read 文件 → grep 方法 → read 引用 → 继续 grep……总计 ~140 次工具调用,~412,000 token
  • 图谱方式:trace_path(function_name="ProcessOrder", direction="inbound") → 直接返回完整调用链,~3,400 token

节省的不是 10%,是 99%。


5. 语义搜索与 Cypher 查询

Codebase Memory MCP 还内建了强大的语义搜索能力。它把 Nomic 的 nomic-embed-code 嵌入模型(40K token、768 维 int8 向量)编译进了二进制,完全不需要额外部署 Ollama 或连接外部 API。

semantic_query 工具支持 11 路信号组合评分:TF-IDF、RRI(实体关联密度)、API/Type/Decorator 签名匹配、AST 结构相似度、数据流路径、Halstead 复杂度指标、MinHash 近重复检测、模块邻近度、图扩散等。这种多维信号叠加的设计,让"找类似函数"不再停留在文本匹配层面,而是真正能理解代码语义。

对于需要精确结构查询的场景,项目还支持 Cypher 式图查询:

MATCH (f:Function)-[:CALLS]->(g)
WHERE f.name = 'main'
RETURN g.name

同时 SQLite FTS5 全文搜索使用自定义分词器 cbm_camel_split,能正确理解 camelCase 和 snake_case 命名惯例,大幅提升符号搜索精度。

这 11 个信号中,最有趣的是 MinHash + LSH 近克隆检测——它能找到代码库中语义相似但变量名不同的函数片段,这在重构和代码审查场景中非常实用。图谱中会用 SIMILAR_TO 边(Jaccard 相似度评分 ≥ 0.80)标注这些近重复代码。


6. 快速上手

5.1 安装(macOS / Linux)

# 一键安装(推荐)
curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash

如果需要 3D 图可视化 UI:

curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash -s–ui

安装脚本会自动检测你系统上的所有 AI 编程助手(Claude Code、Codex、Gemini CLI、Zed、OpenCode、Aider、VS Code 等 11 种),并配置好对应的 MCP 入口。

5.2 Windows 安装

Invoke-WebRequest Uri https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.ps1 OutFile install.ps1
.\\install.ps1

5.3 启用自动索引

codebase-memory-mcp config set auto_index true

设置后,首次连接新项目时自动索引。已索引的项目会注册后台监听器,Git 变更时自动增量更新。

5.4 典型使用场景

# 启动 3D 图可视化
codebase-memory-mcp –ui=true –port=9749

# CLI 模式搜索
codebase-memory-mcp cli search_graph '{"name_pattern": ".*Handler.*"}'

# 检查更新
codebase-memory-mcp update

然后在你的 AI 编程助手中直接对话即可:

  • “这个项目有哪些 HTTP 接口?” → Agent 调用 get_architecture
  • “谁调用了 handlePayment?” → Agent 调用 trace_path
  • “哪些函数从没被调用过?” → Agent 触发死代码检测

7. 与同类工具对比

维度Codebase Memory MCPSourcegraphGitHub Copilot Code ReviewAider
安装复杂度 单一二进制,零依赖 需要部署服务 SaaS,依赖 GitHub 生态 pip install
索引速度 毫秒级(平均仓库) 分钟级 无本地索引 无图索引
语言支持 158 种 ~40 种 取决于模型 取决于 tree-sitter
知识图谱 ✅ 完整关系图谱 ✅ 有 ❌ 无 ❌ 无
Token 效率 降低 99% 部分改善 无显式优化 无优化
价格 完全免费开源 免费/付费 付费 免费
离线可用 需要服务端

Codebase Memory MCP 的定位清晰:它不是要替代 Sourcegraph 的企业搜索,也不跟 Copilot 的代码审查竞争,它是一个轻量但非常高效的"代码库的理解层"——连接在 AI Agent 和你代码之间,让 Agent 用最少 token 获得最准确的结构信息。


8. 潜在局限与注意事项

  • 不是 LLM:它是知识图谱和查询工具,不会自己生成代码或回答自然语言问题,需要依赖 MCP 客户端(你的 AI 助手)做语言交互层
  • 索引资源消耗:大仓库(如 Linux 内核)索引期间内存占用较高(全量后自动释放),小内存机器建议用 auto_index_limit 限制文件数
  • 首次索引时间:超大仓库需要几分钟。团队协作建议使用图快照共享机制
  • 跨平台签名:Windows 上 SmartScreen 可能警告未签名软件,校验 checksums.txt 即可确认安全性

9. 评价与展望

Codebase Memory MCP 最大的价值在于重新定义了 AI Agent 如何"理解"代码。过去我们以为多塞几个文件到 context window 就够了,但实际上 Agent 需要的是关系——谁和谁关联、数据怎么流动、改动会影响什么。

这个项目把"代码理解"从 NLP 问题拉回到了图论问题:知识图谱查询效率天然碾压全文检索,且有严格的正确性保证。结合 MCP 协议带来的 Agent 生态兼容性,它可以无缝嵌入到几乎所有主流 AI 编程助手的工作流中。

对于个人开发者,它意味着更聪明的 AI 结对伙伴;对于团队,图快照共享让"新人秒懂代码库"从奢望变成现实。


相关资源:GitHub 仓库 · 研究论文 · 安装指南


本文基于 Codebase Memory MCP 官方文档、arXiv 论文(2603.27277)及 GitHub 仓库实测数据撰写。

赞(0)
未经允许不得转载:171主机测评 » Codebase Memory MCP:让 AI 编程助手真正“读懂“你的代码库
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址