mcpField
C
code-graph

code-graph

github.com/alinaqi开发711273 次安装2 周前更新
代码仓库

关于 code-graph

供使用 codebase-memory-mcp 的团队进行代码导航的技能,指导通过代码图查询已索引仓库中的符号、依赖、架构和变更影响。

主要功能

  1. 01基于代码图搜索符号和代码
  2. 02获取特定符号的源码片段
  3. 03追踪调用方和依赖关系
  4. 04分析变更影响范围
  5. 05架构查看与项目索引管理

适用场景

  1. 01编辑源码前定位函数
  2. 02追踪共享代码变更影响的调用方
  3. 03规划工作时了解仓库结构
  4. 04检查代码图新鲜度并在重构后重新索引

MCP 相关

它通过 MCP 使用 codebase-memory-mcp 查询已索引的代码图,提供搜索、依赖分析、架构检查和项目索引工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/alinaqi/maggy --skill code-graph

安装后在 Claude Code 中输入/code-graph确认已加载。

详细介绍

代码图谱技能

**用途:**使用代码图谱(codebase-memory-mcp)进行亚毫秒级符号查找、函数搜索、依赖分析和影响范围检测。它可取代繁琐的 grep 和文件读取,用于代码导航。


核心原则

**先查图谱,再看文件。**在读取文件或使用 grep 搜索之前,先查询代码图谱。只有在需要修改文件,或需要了解图谱无法提供的上下文时,才读取完整文件。

**规划时也要考虑图谱。**规划任何变更时——功能开发、重构、错误修复——都应先查询图谱,了解范围、依赖关系和影响范围。这不仅适用于实现阶段,也适用于思考和规划阶段。搜索字符串字面量、日志消息、配置值,以及代码结构之外的内容时,仍应使用 grep。

┌────────────────────────────────────────────────────────────────┐
│  GRAPH FIRST, FILE SECOND                                      │
│  ─────────────────────────────────────────────────────────────│
│  The code graph indexes your entire codebase as a persistent   │
│  knowledge graph. Claude queries it via MCP for instant         │
│  symbol lookup, dependency chains, and blast radius — instead   │
│  of reading hundreds of files.                                 │
│                                                                │
│  14 MCP tools │ 64 languages │ sub-ms queries │ zero deps      │
│  ~99% fewer tokens for navigation vs brute-force file reads    │
├────────────────────────────────────────────────────────────────┤
│  AUTO-UPDATED                                                  │
│  ─────────────────────────────────────────────────────────────│
│  File watcher keeps graph in sync. Post-commit hook ensures    │
│  freshness. No manual rebuild needed.                          │
└────────────────────────────────────────────────────────────────┘

何时使用图谱,何时直接读取

任务使用图谱工具需要直接读取吗?
查找函数/类定义search_graph否
获取函数签名和文档get_code_snippet否
查找函数的所有调用方trace_call_path否
追踪依赖链query_graph否
确定变更的影响范围detect_changes否
了解项目架构get_architecture否
搜索代码模式search_code否
阅读完整实现以进行修改使用 search_graph 定位,然后读取文件是
了解业务逻辑上下文使用 get_code_snippet 获取概览,然后读取文件是

**规则:**如果图谱工具能回答问题,就使用它。只有需要完整源码来进行修改时,才打开文件。


可用的 MCP 工具

索引与状态
工具用途使用时机
index_repository为项目构建/重建图谱首次设置,或重大重构后
index_status检查图谱是否为最新查询前,如果不确定图谱是否为最新
list_projects列出所有已索引项目跨项目导航
查询与导航
工具用途使用时机
search_graph按名称查找符号(模糊搜索)“查找与身份验证相关的函数”
search_code在已索引代码库中进行文本搜索“查找 TODO 注释”、模式匹配
get_code_snippet获取特定符号的源代码需要签名、文档字符串或实现时
get_graph_schema了解图谱结构和关系探索可用数据
query_graph执行结构化图谱查询复杂的依赖/关系查询
分析
工具用途使用时机
trace_call_path追踪调用方/被调用方链“谁调用了 sendEmail?”、“init() 会触发什么?”
detect_changes识别变更文件及其影响范围代码变更前后、PR 审查
get_architecture高层模块/包结构入门、了解项目布局
管理
工具用途使用时机
delete_project从图谱中移除项目清理、项目重构
manage_adr架构决策记录记录架构决策
ingest_traces导入运行时追踪数据性能分析、死代码检测

工作流:进行任何代码变更之前

0. PLAN       → get_architecture + search_graph to understand scope before planning
1. LOCATE     → search_graph to find the symbol
2. UNDERSTAND → get_code_snippet for context
3. BLAST      → detect_changes to assess impact
4. TRACE      → trace_call_path to find all affected callers
5. CHANGE     → Read file, make edit
6. VERIFY     → detect_changes again to confirm scope

**步骤 0 适用于规划,不仅限于编写代码。**当用户要求你规划功能、重构或修复时,先查询图谱,了解现有内容、依赖关系以及工作范围。这可以避免基于错误的代码库假设制定计划。

**绝不要跳过步骤 3。**影响范围分析可以防止共享代码的变更造成意外故障。


图数据与时效性

图会通过 3 层机制自动保持最新——无需手动重建:

层触发条件发生的操作
文件监视器每次保存文件codebase-memory-mcp 会实时检测更改并重新索引受影响的文件
自动索引会话开始时auto_index: true 可确保 Claude Code 启动时图数据保持最新
提交后钩子每次 git commit更新 .code-graph/.needs-update 标记——文件监视器会检测到它(约 10ms,非阻塞)

除非进行大规模重构,否则无需手动重新索引(例如重命名整个目录、切换到差异巨大的分支)。遇到这种情况时:运行一次 index_repository,之后由这 3 层机制保持数据最新。

  • 存储:.code-graph/ 目录(自动创建,并加入 gitignore)
  • MCP 配置:项目根目录下的 .mcp.json(提交到仓库,与团队共享)

MCP 配置

代码图 MCP 服务配置在项目根目录下的 .mcp.json 中:

{
  "mcpServers": {
    "codebase-memory": {
      "command": "codebase-memory-mcp",
      "args": []
    }
  }
}

安装: ~/.claude/install-graph-tools.sh


决策框架

Need to find a symbol/function?
  → search_graph (sub-ms, structured result)
  → NOT: grep -r "functionName" (slow, unstructured)

Need to understand dependencies?
  → query_graph or trace_call_path (complete, traversable)
  → NOT: manually reading import statements

Need to assess change impact?
  → detect_changes (comprehensive, instant)
  → NOT: searching for usages manually across files

Need to understand architecture?
  → get_architecture (high-level overview)
  → NOT: reading every directory listing

Need to read/modify code?
  → search_graph to locate, then Read the specific file
  → NOT: reading entire directories hoping to find it

反模式

反模式应改为
使用 grep 搜索函数名使用函数名调用 search_graph
读取整个文件以查找签名使用 get_code_snippet 获取特定符号
手动追踪导入链使用 trace_call_path 或 query_graph
未检查影响就进行更改每次修改共享代码前调用 detect_changes
读取目录中的所有文件使用 get_architecture 查看结构,使用 search_graph 查找具体内容
忽略图数据过时警告检查 index_status,必要时重新索引
每次查询都重新索引相信文件监视器;只有大规模重构后才手动重新索引

评论

支持 Markdown