1、 代码问题,就问 Eagle!CodeGraphRAG:基于LLM的大规模代码分析 及在 Eagle DevAgent 中的应用李明宇|中科院计算所-京兆人公司 联合研发团队 代码问题,就问 Eagle!李明宇 中科院计算所高级工程师/Eagle DevAgent 作者中科院计算所高级工程师,近20年软件研发与产业化工作经历。历任国家重点实验室课题组负责人、创业公司CTO、上市公司事业群技术总监和首席技术专家。荣获中国软件协会“优秀CTO”等多项荣誉,任中国新一代IT产业联盟分委会秘书长、全国高校人工智能与大数据创新联盟专家委员、北京开源创新委员会委员、中国开源软件创新大赛总决赛评委。演讲嘉宾
2、 代码问题,就问 Eagle!你在面向ChatGPT编程吗? 代码问题,就问 Eagle!你在面向 编程吗?代码问题,就问 Eagle!有了 Copilot(s)我们还是需要它们,为什么?它们的表现,你满意吗?面向Google编程面向Stack Overflow编程面向Github编程面向ChatGPT编程面向微信编程 代码问题,就问 Eagle!你的课题是基于某个已发表的开源项目进行改进,但是怎么也捋不清楚这个开源项目代码的逻辑。而且隐隐觉得跟论文写的不太对得上?还记得这些时刻吗?代码问题,就问 Eagle!熟悉公司的“祖传代码”成为了职业生涯的第一个挑战,看也看不懂,改也不敢改公司的新产品
3、,是基于开源项目改?还是完全自研?需要迅速读懂几个典型开源项目,做出选型决定乙方的代码如何验收?是否真正掌握?一年前的项目要做二期,有的同事已经离职了,是继续开发还是推倒重来?每天要处理各种会议、流程,还要清楚掌握团队开发工作具体情况。组会听完汇报总还觉得有些地方没搞清楚,想看看大家写的代码但时间又不够用。我们系统里以前不可避免地引入了很多舶来的开源代码,是否都能做到可控?我们的已经投入的研发成本得到的代码,是否能够保值增值?还是随着人员流动存在较高损耗?当学生做论文升职为架构师 公司/部门的技术主管毕业了刚加入一个团队开始带一个团队 作为一个CIO 代码问题,就问 Eagle!1 1大模型上
4、下文长度:10万行代码 1M+tokens代码-自然语言理解的问题:Embedding计算向量距离不适用增量处理:代码可能每天都在变(增、改、删)跨项目:前后端、微服务跨语言:Python、java、js.(所谓“主流”编程语言,有几十种)代码和文档的结合从代码生成UML图指定“版本”(Branch、Release、Tag、Commit)2 23 34 45 56 67 78 8项目级代码分析的难点代码问题,就问 Eagle! 代码问题,就问 Eagle!CodeGraphRAG让 AI 理解项目级代码 代码问题,就问 Eagle!整体架构与逻辑*该图由 Eagle DevAgent 绘制需要
5、两次遍历:第一次从逐个文件提取信息;第二次构建跨文件的索引代码问题,就问 Eagle! 代码问题,就问 Eagle!索引构成代码问题,就问 Eagle!边类型-*CONTAINS*-表示层次结构-*EXTENDS*-表示继承或接口实现关系,属性kind区分-*DEPENDS_ON*-表示文件、模块、类型、函数之间的依赖关系-*CALLS*-表示函数或方法之间的调用关系图节点属性-id:唯一标识符-name:名称-type:节点类型(File、Class、Function、Var)-file_path:文件路径-language:编程语言-full_name:全限定名-line_number:行
6、号,便于定位-description:描述(LLM生成) 代码问题,就问 Eagle!Incremental Indexing对修改的文件重新构建索引,并递归修改索引图中的相关部分。识别新增、修改、删除的代码元素开发者修改添加或删除代码文件文件系统监控器检测到文件变化获取变更的文件列表版本控制检测器获取变更的文件列表变更文件列表非空从变更文件列表中取出一个文件增量代码解析器解析该文件从图数据库获取该文件旧的代码结构比较新旧代码结构有需要更新的代码元素开始事务无需更新图数据库更新图数据库中的节点和关系提交事务检查受影响的跨文件关系存在受影响的关系存在新的受影响关系更新受影响的节点和关系检查是否有