code-review-graph架构深潜:从Tree-sitter AST到SQLite知识图谱的完整流水线

发布时间:2026/8/30 14:44:34
code-review-graph架构深潜:从Tree-sitter AST到SQLite知识图谱的完整流水线 code-review-graph架构深潜从Tree-sitter AST到SQLite知识图谱的完整流水线【免费下载链接】code-review-graphLocal-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.项目地址: https://gitcode.com/GitHub_Trending/co/code-review-graphcode-review-graph 是一个本地优先local-first的代码智能工具它用Tree-sitter把源码解析成 AST再存入SQLite 知识图谱让 AI 编程工具在代码评审时只读取真正相关的代码把 token 消耗降低一到两个数量级。这篇文章带你深入它的完整流水线——从文件收集、AST 解析、图存储到增量更新与影响范围分析看看这张代码地图是如何一步步建成的 ️为什么要给代码建知识图谱71 倍的 token 账单传统方式下AI 工具评审一次改动往往要把大半个仓库塞进上下文。以 Flask 为例读全量代码需要143,594 tokens而基于知识图谱的回答只要2,196 tokens——71 倍的差距 code-review-graph 的答案是不要每次都重读仓库而是提前把代码结构画成一张图常驻本地。评审时直接查图。总览架构从仓库到评审的四段流水线整条流水线可以概括为四个阶段收集文件 → Tree-sitter 解析 AST → 存入 SQLite 图 → 评审时计算最小阅读集。系统通过 CLI 和 MCP 服务器stdio 或 localhost HTTP两种形态对外提供服务内置约 30 个 MCP 工具与 5 个评审提示词可接入 Codex、Claude Code、Cursor、Windsurf、Zed、Gemini CLI 等主流 AI 编程工具。服务入口在 main.py完整架构说明见 docs/architecture.md。第一站Tree-sitter AST 解析——把源码变成节点和边一切从收集文件开始collect_all_files()通过git ls-files拿到全部受跟踪文件并应用.code-review-graphignore过滤规则实现位于 incremental.py。随后每个文件交给CodeParser.parse_file()parser.py由 Tree-sitter 生成 AST。解析器递归遍历语法树按语言特定的节点类型映射表_CLASS_TYPES、_FUNCTION_TYPES等识别出两类信息结构节点Node文件、类、函数、类型、测试函数连同行号、语言、参数、返回类型、是否测试等属性关系边Edge函数调用CALLS、模块导入IMPORTS_FROM、继承INHERITS、实现接口IMPLEMENTS、包含CONTAINS、测试覆盖TESTED_BY等十余种关系。为了让图中每个符号都能唯一定位code-review-graph 采用**限定名qualified name**方案格式统一为「文件路径 :: 符号名」例如/repo/src/auth.py::AuthService.login这个设计在后续所有查询中都作为图的主键使用规则详见 docs/schema.md。第二站SQLite 知识图谱——节点的户籍档案解析出的节点与边由GraphStore.store_file_nodes_edges()持久化到 SQLitegraph.py数据库文件为.code-review-graph/graph.db。核心表结构非常清晰表作用nodes节点kind、限定名、文件路径、行号、语言、文件 SHA-256 哈希等edges边关系类型、源/目标限定名、位置、置信度metadata键值对最后构建时间、构建类型、schema 版本flows/flow_memberships调用流及其成员节点用于从入口出发了哪些路径communities社区功能聚类内聚度、规模、主导语言nodes_ftsFTS5 全文索引支持名称/签名/路径的全文检索community_summaries、flow_snapshots、risk_index预计算的紧凑摘要专为 token 高效查询服务embeddings独立库语义向量用于语义搜索几个值得新手注意的工程细节表上建了限定名、文件路径、边源/目标等大量索引保证百万节点级仓库上的查询仍然飞快开启WAL 模式更新期间读请求不阻塞每个文件节点记录SHA-256 哈希这是第三站增量更新的钥匙 第三站增量更新——只重解析真正变了的文件全量构建一个 500 文件的项目大约只要 10 秒但大仓库天天重建不现实。code-review-graph 的增量引擎incremental.py分四步走get_changed_files()通过git diff也支持 SVN找出变更文件find_dependents()在图里反查谁 import 了这些文件变更文件 依赖文件一起重解析其余文件通过哈希比对直接跳过只更新 SQLite 中受影响的行。解析阶段还会用进程池并行默认取 CPU 核心数与 8 的较小值一个约 3,000 文件的 django 规模项目上两文件改动重索引约 2.5 秒。配合 watch 模式与平台原生 hooks保存文件时图谱会自动跟上无需手动执行任何命令。第四站影响范围分析——评审时的爆破半径图谱建好后评审时发生了什么当你修改了login()get_impact_radius()graph.py会从变更符号出发同时向两个方向扩展正向边这个函数影响了谁下游调用链反向边谁依赖这个函数上游调用者默认扩展 2 跳并对每条路径按「边类型权重 × 深度衰减」计算加权得分而不是朴素的 BFS因此越近、关系越强的节点排名越高。最终得到变更的影响范围blast radius——AI 只读这一小撮文件而不必扫描整个项目。效果量化token 节省有多大在大仓库上效果最明显208,821 个源 token 的代码库每个问题只需约 3,190 tokens 的上下文。仓库自带基准测试eval/目录在 Flask、FastAPI、Gin、Express 等真实项目上持续回归验证冲击精度、多跳检索与 token 效率。基准的复现方法写在 docs/REPRODUCING.md配置示例在 eval/configs/。上手指南三步建好你的第一张代码知识图谱克隆仓库并安装git clone https://gitcode.com/GitHub_Trending/co/code-review-graph pip install code-review-graph一条命令自动检测已安装的 AI 平台并写入 MCP 配置code-review-graph install构建图谱code-review-graph build之后打开任意 AI 助手直接说Build the code review graph for this project即可。全部命令见 docs/COMMANDS.md遇到问题查 docs/TROUBLESHOOTING.md。总结code-review-graph 的流水线设计堪称本地优先代码智能的教科书范例Tree-sitter提供语言无关的 AST解析稳健且易扩展到 40 语言docs/CUSTOM_LANGUAGES.mdSQLite承担持久化节点/边双表 FTS5 向量库零运维、可离线SHA-256 哈希 图边反查让增量更新只碰真正变化的文件加权双向扩展的影响范围算法把读全仓库变成读最小集。理解了这条从 AST 到知识图谱的完整链路你就不只是会用它还能看懂它为什么快、为什么省 token 【免费下载链接】code-review-graphLocal-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.项目地址: https://gitcode.com/GitHub_Trending/co/code-review-graph创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考