| name |
version |
date |
description |
domain |
trigger |
| cbm-code-analysis |
1.1.0 |
2026-07-30 |
代码分析自动调用 CBM(codebase-memory-mcp)知识图谱。
当需要理解代码结构、查找函数定义、分析调用链、追踪代码变更时自动调用 CBM 工具。
替代传统 grep/文件浏览,用图查询一次获取完整上下文。
|
software-development |
分析代码 | 查找函数 | 调用链 | 代码结构 | 重构 | 影响分析 | 索引项目 |
CBM 代码分析
触发场景
| 你说的话(关键词) |
动作 |
| "这个项目什么结构" / "项目架构" |
get_architecture |
| "XXX 函数在哪" / "找 XXX" |
search_graph + get_code_snippet |
| "谁调用了 XXX" / "XXX 被谁调用" |
trace_path |
| "这段代码的影响范围" / "改了这个会怎么样" |
detect_changes + trace_path |
| "索引这个项目" / "建图" |
index_repository |
| "项目里有哪些模块" / "代码概览" |
get_graph_schema + get_architecture |
| "查一下这个符号" / "搜索代码" |
search_code / search_graph |
工作流
1. 项目检查
# 先查项目列表
list_projects → 确认项目名
# 如果不在列表里,先索引
index_repository(repo_path="/path/to/project")
2. 代码分析
# 按需要选一个或多个:
# 架构概览
get_architecture(project="project-name")
# 搜索函数/类
search_graph(project="project-name", name_pattern=".*Handler.*", label="Function")
# 追踪调用
trace_path(project="project-name", function_name="ProcessOrder", direction="both")
# 获取源码
get_code_snippet(project="project-name", qualified_name="pkg/handler.OrderHandler")
# 变更影响
detect_changes(project="project-name")
3. 结果整合
- CBM 返回结构化 JSON
- 组织成清晰的中文回答
- 关键节点标注文件和行号
效率技巧
- 先
get_graph_schema — 了解图结构再查
search_graph 用正则 — name_pattern=".*Handler"
trace_path 限深度 — depth=3 够用就别 5
- 项目名用
list_projects 确认 — CBM 自动从路径生成
- qualified_name 格式 —
<project>.<path_with_dots>.<FunctionName>,如 tmp-memoryweave.go.internal.storage.NewRecallPipeline。必须用 search_graph 返回的精确值,不要手拼
search_graph 字段比 trace_path 丰富 — 直接返回 in_degree(调用者数)、out_degree(被调用数)、signature、return_type、param_count、is_exported、complexity。先看这些再做 trace_path
trace_path 方向明确 — inbound=谁调用我,outbound=我调用谁
- 先 read_file 再 get_code_snippet — 知道文件路径时
read_file 更直接;get_code_snippet 适合已知 qualified_name 的情况
已知陷阱
get_code_snippet 的 qualified_name 必须来自 search_graph 的精确输出,手拼容易错
trace_path 对跨包/跨语言的调用链可能返回 0 结果(索引深度不够,重试有时能解决)
search_graph 的 total_results 字段可能显示为 ?,看 results[] 数组长度更可靠
- 项目名是路径自动生成的(如
/tmp/memoryweave → tmp-memoryweave),用 list_projects 确认
边界
- ❌ 不做:运行时诊断、日志分析、数据库查询
- ❌ 不做:需要语义理解而非结构分析的问题
- ✅ 做:代码结构查询、调用链、架构概览、变更影响