
Code-Graph-RAG 功能演进全览从 NEWS.md 读懂多语言代码知识图谱的 20 项核心能力【免费下载链接】code-graph-ragThe ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs项目地址: https://gitcode.com/GitHub_Trending/co/code-graph-ragCode-Graph-RAG 以 Tree-sitter 解析多语言代码库在 Memgraph 中构建统一图模式的知识图谱并支持自然语言查询、编辑与优化。本文以仓库的 NEWS.md 为骨架逐条梳理其最新功能演进从 14 种语言支持、cgr trace运行时调用追踪、FLOWS_TO数据流分析到 protobuf 索引、事务性多文件编辑与 MCP 工具矩阵并结合 scripts/update_news.py、scripts/generate_readme.py 等源码讲清每条新闻背后的实现机制与实战用法。读完你将掌握该项目的完整能力地图以及 NEWS.md 如何成为 README「Latest News」的唯一事实源。NEWS.md 是什么项目的功能新闻中枢NEWS.md 是 Code-Graph-RAG 面向用户的功能发布记录采用「最新在前」的倒序排列。它记录的不是CI、开发工具、构建自动化、重构、文档、测试或缺陷修复而是用户可感知的核心能力新语言支持、分析能力、查询能力、图能力与集成能力。文件头部明确写有此约定并在 scripts/update_news.py 的NON_FEATURE_THEME正则中落地为强制过滤规则automation|releases?|ci|cd|tooling|refactor|chore|docs|tests?|benchmarks?|perf等主题一律被丢弃防止非功能条目流入 README。文件中有一个关键标记!-- latest-release-end --该标记划定了「最新一次发布」的条目范围是新闻渲染的边界线。新闻如何生成与渲染一文件两脚本的流水线发布时scripts/update_news.py插入新条目发布工作流调用 scripts/update_news.py把发布生成的「Highlights」片段转换为 NEWS.md 标准条目格式- **主题**: 描述解析并规范化接受-与*两种列表标记接受**主题:**与**主题**:两种冒号位置统一输出为- **主题**: 描述em-dash/en-dash 一律归一化为连字符_normalize_dashes。主题去重按主题词casefold 后与已有条目去重同一发布重复执行是幂等的existing_themesprepend_news。移动到标记把!-- latest-release-end --移到新插入块之下使 README 能渲染整个最新发布块而非固定 top-N。失败即报错若片段中全是形似条目的行但一条都没解析成功退出码为 1 并打印告警避免「生成器格式与解析器漂移」这类静默失败源码注释中记录了 v0.0.820 全部条目因**Theme:**写法未解析的历史问题。聚合兜底当所有高亮都被功能过滤时回退生成一条**Release Summary**聚合条目保证每个发布至少留一条新闻。脚本仅依赖标准库可在项目环境同步之前于发布流程中运行。渲染时scripts/generate_readme.py同步到 READMEscripts/generate_readme.py 将 README.md 的Latest News章节作为 SECTION 占位符调用codebase_rag.readme_sections包的generate_all_sections()生成内容后回填。其中 format_latest_news 读取 NEWS.md统计latest-release-end标记之上的条目数并整体渲染若标记缺失则回退到顶部 3 条。因此NEWS.md 是唯一事实源README 只是它的渲染结果。任何手工编辑都应写进 NEWS.md而不是 README。同时LATEST_RELEASE_MARKER常量在scripts/update_news.py与codebase_rag/readme_sections.py两处重复定义且有测试断言两者永不漂移。最新发布亮点标记之上标记之上的 6 条代表当前最新发布文件系统操作平台无关的路径拼接platform-neutral joins并加装了「禁止删除项目根目录」的保护缓存管理原子发布atomic publishing、专用缓存戳cache stamps、改进孤儿缓存的删除处理图查询引入确定性图查询工具让代码关系的分析结果可复现重新摄取与解析处理已删除文件、重解析关联文件、重建关键数据结构安全与稳定性阻止删除项目根、防止编辑被跳过skipped edits、处理孤儿缓存C 与 Go 集成解析模块接口module interfaces、处理模块级类别名module-level class aliases。「禁止删除项目根」的安全保护可在 codebase_rag/constants/security.py 与相关文件系统操作模块中找到对应实现属于摄取管线对灾难性误操作的前置防线。语言支持演进从 6 种到 14 种及可插拔扩展NEWS.md 记录了语言支持的关键节点C# 与 DartC#含 Roslyn 语义分析与 Dart/Flutter 加入图谱总数达到14 种。完整矩阵见 docs/architecture/language-support.md。Ruby通过一个新的可插拔 ast-grep 层加入图谱——仅凭一个 YAML 模式文件即可为语言生成Module、Function、Class节点及 import 边无需手写解析器。这验证了 codebase_rag/analyzers/ast_grep_rules/45 个 YAML 规则与 codebase_rag/analyzers/ast_grep_analyzer.py 组成的规则驱动管线相关测试见 test_ast_grep_tier.py 与 test_ast_grep_tier_languages.py。C 与 Go 增强解析模块接口、处理模块级类别名提升了这两个重度多范式语言的图覆盖质量。README 的「Supported Languages」章节同样由generate_readme.py生成补充说明Ruby、Kotlin、Swift、Elixir、Haskell、Solidity、Bash、Nix 等语言具备基于 ast-grep 的结构化支持模块、函数、类与 import。运行时调用追踪cgr trace让静态盲区显形NEWS.md 中最重磅的条目之一动态运行时追踪。系统运行你的代码通常是测试套件把真实发生的调用以CALLS边合并进图谱静态分析漏掉的调度——接口分发、虚方法、函数指针、反射、框架路由——全部变得可见。# 将一次运行测试套件等转换为调用追踪并合并入图 cgr trace # 或摄取生产环境的 pprof 剖析数据来自 eBPF 持续剖析器如 Parca、Pyroscope、OpenTelemetry cgr trace convert --format ebpf支持转换的运行来源覆盖Python、JVM、Node.js、.NET、PHP、Lua、Dart、Go、Rust、C/C十类运行时。实现位于 codebase_rag/trace/cli.pyCLI 入口、codebase_rag/constants/trace.py并配套完整的 trace 子目录含 C 侧 shimcgr_trace_shim.c、Dart 收集器、pprof/speedscope 转换等CLI 注册与帮助见 codebase_rag/cli.py 与 codebase_rag/cli_help.py。相关测试覆盖 CLI、speedscope、各语言解析与摄取例如 test_dynamic_trace_cli.py、test_dynamic_trace_ebpf.py。数据流追踪FLOWS_TO污染边覆盖 10 种语言NEWS.md 记录了图模式新增的FLOWS_TO污染追踪边值流经赋值、函数调用与 I/O 汇点sink的路径都会被建模。本发布为C#、Java、C、Go补上追踪加上 Python、JavaScript、TypeScript/TSX、Go、Java、Rust、C、C、C# 使总数达到10 种语言。在源码侧FLOWS_TO常量定义于 codebase_rag/constants/graph.py追踪逻辑分布在 codebase_rag/taint.py、codebase_rag/flow_verdict.py、codebase_rag/parsers/flow_access/ 与 codebase_rag/parsers/io_access/Cypher 查询模板见 codebase_rag/cypher_queries.py。专项测试包括 test_flow_edges.py、test_flow_lean_transitive_return.py、test_flow_csharp_edges.py、test_io_libc_edges.py 等覆盖多语言的值选择、分支与跨调用链传递。Java 侧另有专门的污染改进JDK shims、链式调用接收者、字面量参数与类型测试模式type-test patterns都被纳入追踪相关测试如 test_java_variable_analyzer_integration.pyC# 侧则细化了参数绑定、元组解构与 await 管道方法的传播。结构化搜索与替换ast-grep 工具化NEWS.md 宣布结构化搜索与替换通过 ast-grep 按 AST 模式查找与重写代码并以 Agent 工具的形式暴露——跨整个代码库做结构匹配与变换不再依赖文本或正则。这对应 codebase_rag/analyzers/ast_grep_analyzer.py 及其规则集 codebase_rag/analyzers/ast_grep_rules/45 个 YAML 规则测试见 test_ast_grep_analyzer.py 与 test_ast_grep_service.py。此外结构分析还支持对另外七种语言做 ast-grep 解析并与 protobuf 索引之间做结构化快照差异对比structural snapshot diffs。图检索与查询能力增强多条新闻围绕图检索与查询确定性图查询工具引入确定性的图查询工具使代码关系分析结果可精确复现图索引name属性被索引以加速图读路径查找SQL 例程routines也被索引从而解析出以字符串命名目标的调用边定位信息调用点call-site与导入点import-site的位置现在存储在图的边edge上回答「谁在哪一行调用了谁」不再需要二次回源项目作用域MCP 与 CLI 的图检索被限定在单个项目内project-scoped避免跨项目串扰调用方落点caller_qn等落点信息在图谱中持续完善如 Java、C 的调用方命名空间解析见 test_java_call_caller_qn.py 等。这些能力沉淀在 codebase_rag/cypher_queries.py、codebase_rag/graph_query.py、codebase_rag/graph_audit.py 中。重复代码检测AST 级查重NEWS.md 宣布引入基于 AST 的重复代码检测系统并修复了跨多个仓库场景下的重复检测问题。CLI 侧对应cgr duplicates命令族核心实现在 codebase_rag/duplicates.py并作为 MCP/Agent 工具暴露见下节。测试覆盖收集、命令、评估与工具四个维度test_duplicates_collect.py、test_duplicates_command.py、test_duplicates_eval.py、test_duplicates_tool.py。MCP 与 Agent 工具矩阵直接 MCP 工具find_duplicate_code与get_function_source以直接 MCP 工具形式暴露PHP 的use function导入也能通过声明的命名空间解析。工具注册见 codebase_rag/mcp/tools.py 与 codebase_rag/constants/mcp.py。MCP 索引一致性MCP 的 index/update 流程遵循.cgrignore与.gitignore与 CLI 一致排除规则不再因入口不同而分叉相关测试 test_cgrignore.py、test_exclude_patterns.py。排除集记录索引时记录排除集确保--exclude标志在多次运行间一致生效。MCP 服务端整体结构见 docs/guide/mcp-server.md。事务性多文件编辑与语言相关修复事务性多文件编辑多文件编辑以事务方式执行带分阶段校验staged verification与撤销undo每个语言配备保留具体语法的 patcher重命名与移动rename/move时自动重写 import。核心实现在 codebase_rag/editing/transaction.py、codebase_rag/editing/patcher.py、codebase_rag/editing/imports.py契约定义见 codebase_rag/editing/contract.py测试见 test_edit_transaction.py、test_edit_contract.py、test_import_rewrite.py。补丁报告区分「不可验证」与「已验证」的补丁让 Agent 的编辑结果更可信。Scala 继承Scala 的INHERITS边从extends/with子句读取Markdown front-matter 被读入Module节点。索引、完整性与增量一致性Protocol Buffer 索引引入规范化的 protobuf 索引带 provenance 清单provenance manifest与verify校验命令保证数据完整性。实现见 codebase_rag/services/protobuf_service.py 与 protobuf 定义 codec/schema.proto。结构快照差异protobuf 索引与结构分析之间可做快照差异structural snapshot diffs用于检测索引漂移。索引一致性增量删除与干净索引状态保持一致incremental deletes match clean index states相关测试 test_incremental_deleted_state.py、test_incremental_deleted_dependents.py。缓存管理原子发布缓存、专用缓存戳与孤儿缓存清理相关基准见 benchmarks/bench_ast_cache.py、benchmarks/bench_embedding_cache.py。语义前端新增进程内in-processJedi 语义前端用于 Python并在监视路径上重跑语义前端以获得更准确的分析。评估与质量基建Agentic QA新增 Agentic QA 基准测试框架harness与索引期基准indexing-time benchmark见 evals/agentic_qa.py 与 benchmarks/bench_indexing.py。TypeScript 评分TypeScript 继承关系对照 tsc oracle 评分提升准确率相关 eval 见 evals/ts_l1.py。Windows 清理删除临时仓库前清除只读位保证 Windows 环境的 teardown 成功。给维护者的使用约定如果你想为项目贡献一条新闻编辑 NEWS.md在!-- latest-release-end --之上追加- **主题**: 一句话描述主题必须指向用户可见的功能语言支持、分析、查询、图、集成禁止 CI/工具链/重构/文档/测试/缺陷修复类主题运行python scripts/generate_readme.py脚本会把标记之上的所有条目渲染进 README 的Latest News章节发布时由工作流调用python scripts/update_news.py bullets-file自动前置新条目并移动标记。结语从 NEWS.md 的 20 余条记录可以勾勒出 Code-Graph-RAG 的完整能力版图以 Tree-sitter ast-grep 双层解析支撑 14 种语言的统一图谱用cgr trace动态追踪补全静态分析盲区用FLOWS_TO建立 10 种语言的跨语言数据流追踪再通过事务性编辑、protobuf 索引、确定性图查询与 MCP 工具矩阵把「读代码 - 查代码 - 改代码」闭环成可被 Agent 直接驱动的工程能力。配合 scripts/update_news.py 与 scripts/generate_readme.py 构成的新闻流水线每次发布的功能演进都被稳定沉淀为 README 中机器可读的「Latest News」——这正是观察该项目演进节奏与能力边界的最佳入口。【免费下载链接】code-graph-ragThe ultimate RAG for your monorepo. Query, understand, and edit multi-language codebases with the power of AI and knowledge graphs项目地址: https://gitcode.com/GitHub_Trending/co/code-graph-rag创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考