前言¶
在基于 DSH 的智能体开发中,理解代码库结构、函数调用关系或模块依赖是常见瓶颈。CodeGraph 插件通过将代码解析为可查询的索引,解决这一问题。
插件定位¶
CodeGraph 是一个代码知识图谱插件,索引符号、调用点和导入项到 SQLite 中,并通过 CLI 或 stdio MCP 工具服务器回答调用/依赖问题。
核心功能¶
- 调用图谱:支持查看调用者与被调用者。
- 依赖图谱:支持查看模块依赖与被依赖。
- 全文搜索:支持符号名称、文档字符串、签名的本地全文搜索。
- 影响分析:支持传递闭包分析,查看修改某符号会受影响的对象。
- 增量索引:支持基于内容哈希的比较,仅重新解析变更文件。
- 可视化导出:支持导出 Graphviz DOT 或 JSON 格式。
- 查询缓存:工具服务器对只读查询提供 30 秒 TTL 缓存。
- 解析引擎:内置两个解析引擎,tree-sitter(精确)和 regex 扫描器(零依赖)。
安装与启用¶
在 DSH 中安装插件:
dsh plugin --profile demo add github:JohnXu22786/codegraph
典型用法¶
插件提供 CLI 和 MCP 工具服务器两种调用方式。
- 构建索引
codegraph index
- 调用关系查询
codegraph callers services.orders.create_order # 查询谁调用了该函数
codegraph callees app.run # 查询该函数调用了谁
- 依赖关系查询
codegraph deps services.billing # 查询模块依赖
codegraph dependents services.billing # 查询谁依赖该模块
- 全文搜索
codegraph search 'coupon' # 搜索符号名、文档字符串等
- 影响分析
codegraph impact services.billing.price # 查询传递调用链
- 查看状态与导出
codegraph status # 查看索引统计
codegraph export dot -o graph.dot # 导出可视化图谱
- 启动工具服务器
codegraph serve # 启动 stdio 工具服务器
注意事项¶
- 环境要求:需要 Python ≥ 3.10。
- 语言支持:支持 Python、JavaScript、TypeScript、Go、Java、Rust。
- 实现方式:采用自包含实现,使用 Python 标准库 + SQLite,无强制第三方依赖。
- 跨文件解析:跨文件解析依赖启发式算法,优先按同文件精确匹配、导入路径、包名、全局唯一名排序。
- DSH 集成:通过 DSH 内置的 MCP 客户端加载。
- Node 桥接:安装后,Node 桥接器会将工具暴露为
codegraph_callers、codegraph_callees等工具名。 - 错误处理:只读工具在没有索引时会返回错误。
结语¶
CodeGraph 提供了一种结构化方式来分析代码库。