技术实践

百度Dave项目用代码知识图谱辅助Agent理解代码

上下文与知识智能体系统应用与实践检索增强知识图谱Agent Harness智能体互操作协议编程MCP

概述

百度Dave项目团队针对 Coding Agent 在大型仓库反复低效重读源码的问题,在自有 Dave 流程引擎(253 个文件、约 67,703 行 Go 代码)上生成图并为 Claude Code(Claude Sonnet 4.6)加装地图。建图过程分四阶段:先用 Tree-sitter 做 AST 抽取(覆盖 21 种主流语言,规则驱动不消耗 LLM token),把函数定义变成节点、import 变成依赖边、函数调用变成调用边。 再由 Claude 子 Agent 并行处理需求、设计、接口文档与论文图片,抽取概念、关系与设计动机并与 AST 节点连成「代码 + 语义」双层图。随后用 Leiden 社区聚类把高频互引的节点聚成功能簇。最后输出 graph.json、GRAPH_REPORT.md、graph.html(本次建图 313 个节点,耗时 5 分 23 秒,消耗 2.4k input、20.6k output tokens)。 使用侧有三种方式:在 CLAUDE.md 写入常驻规则,要求 Agent 在读源码、跑 grep/glob、回答代码库问题之前先读 GRAPH_REPORT.md 并在 wiki/index.md 存在时优先导航。显式调用 /graphify query、/graphify explain、/graphify path。 以及 MCP 方式。代码改动后用 /graphify update 做 AST 级增量更新(无 API 成本),图谱随代码进 Git 供团队共享。同一模型下做对照测试(约束 Agent 不得参考项目内已有说明与报告):查询「DAG 创建→调度执行→Task 调度→完成态完整流程」,Graphify + 源码较纯源码耗时降低约 60%、输入输出 Token 降低约 80%。 查询「认证、授权及多租户如何实现」,耗时降低约 30%、Token 降低约 55%。官方另称混合语料下最多可做到 71.5x fewer tokens(单次查询约从 256k words 降至约 34k tokens)。作者同时给出边界:图谱负责缩小搜索范围给方向,证据闭环仍需回到源码。动态语言与 Java Spring 反射/依赖注入会让静态分析的调用边缺失。