AutoDev 预上下文引擎:预生成代码语义化信息,构建 AI 编程的知识基座

article/2025/8/13 1:32:52

在先前《预上下文生成》的文章中,我们介绍了预生成上下文的概念和实践:

预生成上下文是指在用户发起查询或生成请求之前,系统针对特定代码仓库、文档或 SDK,离线构建一组语义化的上下文数据。这些上下文经过理解、 加工与组织,使其在运行时能够被快速检索和引用,从而提升代码智能体在生成、解释或检索代码时的准确性、相关性和响应速度。

我们在 AutoDev Workbench 中实现了这一概念的分析端与后端,对应的分析侧即 AutoDev Context Worker。你可以使用这个工具, 对你的代码仓库进行上下文生成:

npx @autodev/context-worker@latest

PS: npx 是 Node.js 的包管理工具,可以直接运行 npm 包中的命令。

引子:寻找更高效的 RAG 方式

RAG 是在 AI 应用中一个重要的话题。尽管我们在 AutoDev 的 VSCode 版本中,构建了多种向量化 RAG 的方式,但是我一直认为在 AI 编程中, 对于大量的项目来说基于向量化方式的 RAG 的性价比并不高。

所以,有必要重新审视 RAG 的方式,尤其是对于代码检索来说。

性价比低的向量化代码检索

我认为向量化代码检索的性价比并不高,主要有以下几个原因:

  • 向量化索引是一个昂贵的过程,不论是你使用本地的向量化还是云端的向量化。

  • 向量化的实时刷新又是另外一个头疼的过程,特别是它会拉跨你的本地机器。

  • 代码库中并没有大量的文档知识,更多的是代码本身的语义信息。

而从 2025 年技术趋势来说,基于向量化的 RAG 已经变成了次要的选择,只当当前阶段,AI 检索不到相关信息时,有些工具如 Cursor 才会使用向量化的方式进行检索。

内部框架等固定知识的预生成

另外一方面,作为一个 AI 编程工具,我们还需要面对大量的内部框架、SDK、API 等固定知识的预生成。因为这些知识是相对固定的,对于用户来说, 通常问题也是颇为明确的 —— 用户不会去询问:如何使用 Spring Boot 来构建一个 Web 应用?而是会询问:如何在 Spring Boot 中使用 xx 框架。

那么,针对这类需要提供固定知识的场景:

  • 内部开发框架。可以分为单个组件的问题,或者多个组件一起使用等,在排查问题时需要知道部分代码信息。

  • SDK、API 等。用户通常不想去了解 SDK、API 的实现细节,而是想要了解如何使用它们来完成特定的任务。

  • 其它公共代码库。比如,如何使用某个公共库来完成特定的任务。

我们就可以用更高效的方式来生成它们。

Context Worker:预生成代码上下文

如上所述,针对于这一类场景,我们可以使用预生成上下文的方式来提升 RAG 的效果。Context Worker 就是为此而设计的。

AutoDev Context Worker 是一个用于深度解析和分析代码的工具,旨在为开发者提供更好的上下文理解和智能化的代码处理能力。 它可以帮助开发者更高效地理解和使用代码库。

Context Worker 的设计与目标

Context Worker 是基于我们先前的 VSCode 版本开发的,我们从中提取核心的代码解析和分析功能,构建了一个独立的工具。 我们进一步扩充了他的多语言的解析支持,现在可以支持 Java、JavaScript、TypeScript、Python、Golang、Rust、C/C++、Ruby、C# 等十几种主流语言。

结合 AutoDev Workbench 的服务端功能,Context Worker 可以为开发者提供以下能力:

  • 深度项目解析与 AST 构建结构化,Context Worker 对整个项目(或指定的模块范围)进行深度解析。这包括构建完整的 AST,识别所有的函数、类、接口及其签名、注释(docstrings)。同时,分析项目依赖(内部模块间和外部库依赖),构建初步的依赖图。

  • 自动化代码摘要与"意图"标注:对于缺乏良好注释的代码块(函数、复杂逻辑段),尝试使用 LLM 预先生成简洁的摘要或"意图描述" 。对于一些关键的架构组件或核心算法,可以预先打上特定的标签或元数据。

  • 构建项目级知识图谱:将解析出的代码实体(类、函数、变量等)及其关系(调用、继承、实现、引用等),并围绕领域模型构建知识图谱, 标注实体的语义和上下文信息。

使用 AutoDev Context Worker

Context Worker 的使用非常简单,你只需要运行以下命令:

npx @autodev/context-worker --path /path/to/project --upload --server-url https://your-server/api/context --non-interactive

它将会启动 Context Worker,并对当前目录下的代码进行解析和分析。如下是一个生成数据的示例:

接口:UserRepository文件:/path/to/UserRepository.java接口定义:```javapublic interface UserRepository extends JpaRepository<User, Long> {    Optional<User> findByUsername(String username);    List<User> findByEmail(String email);}```===实现类(1)===实现类:UserRepositoryImpl文件:/path/to/UserRepositoryImpl.java```java@Repositorypublic class UserRepositoryImpl implements UserRepository {    // ...实现代码...    @Override    public Optional<User> findByUsername(String username) {        // ...方法实现...    }    @Override    public List<User> findByEmail(String email) {        // ...方法实现...    }}```

Context Worker 会自动分析代码中的接口、实现类、方法等信息,并生成相应的上下文知识。你可以将这些信息存储在知识库中,而后调用 AI 来直接生成 相应的 name 和 description 描述,以在不同的场景中使用。

使用 MCP 获取上下文知识

结合我们在 AutoDev Workbench 还提供的 MCP(Model Context Protocol)服务,你就可以使用 AI 编程工具通过 MCP 获取已知问题所需要的上下文知识。

总结

欢迎使用 AutoDev Context Worker 来提升你的 RAG 效果:https://github.com/unit-mesh/autodev-workbench 。


http://www.hkcw.cn/article/OQSlwqMsPO.shtml

相关文章

断眉《歌手》一开口我的青春回来了 新生代揭榜成功

《歌手2025》第二期中,歌坛前辈林志炫意外出局。他在第一期尝试创新未果后,本以为回归情歌路线会稳住局面,结果还是被淘汰了。这反映出节目组的决心,只看观众和市场反响,不看资历辈分。第二期马嘉祺凭借《曾经我也想过一了百了》成功揭榜,顺利补位首发歌手行列。对于一位…

王君馨官宣产女 幸福一家三口合影公开

前TVB女艺人王君馨嫁给了圈外老公,一直过着幸福的生活。去年她宣布怀孕,最近低调诞下了女儿,并晒出了一家三口的首张全家福。王君馨曾是TVB力捧的艺人,后来为了在音乐方面有更好的发展选择离巢。离巢后,她有更多时间享受生活,事业发展一般,但成为网红拍视频让她找到了新…

山姆回应顾客疑因抢不到榴莲喊退卡 限量活动引争议

最近,山姆超市举办了一场榴莲促销活动,却意外地引发了顾客的不满。活动宣传称每个榴莲售价99元,单个最低重达4斤,并承诺品质保证,坏果包退包换。尽管价格与市场相近,但山姆超市一贯的良好口碑吸引了大量顾客前来排队购买。然而,当顾客终于排到自己时,却被告知榴莲已经售…

大话软工笔记—知识体系概述

1. 软件工程知识体系概述 软件工程的知识体系内容如下表所示&#xff1a; 构成 名称 说明 1 3个体系 1.业务知识体系 客户从事业务所需的知识&#xff0c;如&#xff1a;企业管理、市场销售、成本控制、生产流程等 2.设计知识体系 信息化设计所需的知识&#xff0…

UE蓝图中打开界面暂停、按钮点击执行开始和退出游戏、修改默认地图

一、UE蓝图中打开界面暂停并设置鼠标指针显示 1&#xff1a;开始时调用 2&#xff1a;创建界面Class 选择要打开的WBP控件 3&#xff1a;添加到视口 4&#xff1a;设置游戏暂停 &#xff0c;Paused 勾选为true 5&#xff1a;获取玩家控制器 6&#xff1a;设置显示鼠标指针&…

美记者称赞华盛顿地铁卡支付 即刷即走便利多

当地时间5月28日,美国首都华盛顿特区的地铁系统正式启用了非接触式支付系统,乘客可以使用信用卡或手机进出地铁站,结束了必须购买专用交通卡的时代。次日,一名共和党籍众议员提出了一项法案,要求将华盛顿特区地铁更名为“特朗普列车”。在新支付系统启用的第一天,一位记者…

中国最先进轰炸机为何进驻南海岛礁 增强军事威慑力

2025年5月,据路透社报道,卫星图像显示中国在南海西沙群岛的永兴岛部署了2架最先进的轰-6轰炸机。这是自2020年以来,轰-6轰炸机首次降落在永兴岛。此次部署正值南海局势复杂多变之际,美国及其盟友近期在该地区频繁进行军事活动,包括美菲“2025海上勇士合作”联合演习、英国…

新型僵尸网络瞄准Linux物联网设备,窃取SSH凭证

基于嵌入式Linux的物联网&#xff08;IoT&#xff09;设备正成为新型僵尸网络PumaBot的攻击目标。 基于Go语言的SSH暴力破解攻击 该僵尸网络采用Go语言编写&#xff0c;专门针对SSH服务实施暴力破解攻击以扩大规模&#xff0c;并向受感染主机投递其他恶意软件。网络安全公司D…

2025端午奇妙游 非遗文化唤醒节日记忆

当端午与“非遗大年”相遇,传统文化正以破圈之势唤醒当代人的节日记忆。河南卫视《2025端午奇妙游》将于5月30日19:30在河南卫视、大象新闻等平台上线。节目以“端午二十四时”为轴,以“艾草”为线索,将古代时辰观念与现代生活节奏巧妙融合,展现端午节的节气之美和人文之意…

上海多家超市焕新开业 商品服务全面升级

端午小长假前夕,上海一批连锁超市完成调改,以全新面貌迎接消费者。5月30日,位于打浦桥的上海世纪联华鲁班店经过百日改造后重新开业,并首次召集“潮银俱乐部”成员担任社区体验官。而在前一天,永辉超市上海嘉定首店——嘉定宝龙店也焕新开业,成为上海第六家学习胖东来模式…

UNet 改进(31):ShuffleNet与UNet的轻量级分割网络

1.创新点解析 在计算机视觉领域,图像分割是一个重要的任务,而UNet因其优秀的性能成为许多分割任务的基础架构。然而,传统的UNet计算量较大,难以在资源受限的设备上部署。本文将介绍一种结合ShuffleNet与UNet的轻量级分割网络实现。 网络架构概述 这个实现包含三个主要组件…

1. 数据结构基本概念 (1)

本文部分ppt、视频截图来自&#xff1a;[青岛大学-王卓老师的个人空间-王卓老师个人主页-哔哩哔哩视频] 1. 数据结构基本概念 1.1 研究内容 数据结构是一门研究非数值计算的程序设计中计算机操作队形以及他们之间关系和操作的核心课程&#xff0c;学习的主要内容如下&#x…

男子掉进兵马俑坑疑砸坏3个兵马俑 事件引发热议

5月30日,有网友发布了一段“游客掉进西安兵马俑三号坑砸坏兵马俑”的视频,引起了广泛关注。当天下午5点左右,一名中年男子不慎掉入了三号坑。目击者丁女士表示,尝试用中文和英语与该男子交流,但他似乎听不懂。据丁女士描述,这次意外导致了三个兵马俑受损。她还提到,坑上…

家长们让儿童节汇演变成演唱会现场 多元艺术展现童心梦想

5月28日,大渡口区庆祝“六一”国际儿童节暨第五届校园文化艺术节文艺汇演在钢花影剧院举行。活动以“艺润童心,逐梦未来”为主题,吸引了全区600余名师生和家长代表参加,同时通过线上直播让全区各校师生及家长同步观演。文艺汇演围绕“启航-溯舟-执楫-越川-归航”这一主线展…

49款App被通报 侵害用户权益行为需整改

5月29日,工业和信息化部依据相关法律法规,对APP和SDK(第三方软件开发工具包)违法违规收集使用个人信息等问题开展治理。近期,经第三方检测机构抽查,共发现49款APP及SDK存在侵害用户权益的行为。这些APP及SDK需按有关规定进行整改,如整改落实不到位,工业和信息化部将依法…

近5万翡翠手镯丢失仅赔67元 赔偿争议引发热议

5月30日,话题“顺丰寄丢价值5万元手镯仅赔67元”引发热议,登上微博热搜。广东佛山的陈小姐网购了一只价值4.98万元的翡翠手镯,因不满意选择退货。由于商家赠送了运费险,5月22日上午10点由顺丰速运上门取件。次日晚,快递员告知陈小姐快件丢失。报警后发现快件在小区监控盲区…

湖南高考成绩复核办法出炉 明确申请流程与时限

为规范高考成绩复核程序,保障考生合法权益,湖南省教育考试院近日印发了《2025年普通高等学校招生全国统一考试考务工作规定》,对成绩复核的申请条件、流程及时间节点作出了明确规定。根据规定,考生如对成绩有异议,须在6月27日17时前,持本人填写的《成绩复核申请表》及准考…

断眉来了!单依纯还能三连冠吗 国际顶流正面交锋

《歌手2025》第三期歌单曝光,断眉或将与单依纯形成对决。根据网传信息,以下是整理后的歌单:单依纯备选曲目包括林忆莲的《纤维》或《归零》,这两首高难度作品将展现她的空灵声线和情感叙事能力。如果她继续夺冠,将达成“三连冠”,但可能面临国际歌手断眉(Charlie Puth)…

龙舟提振消费有店主月入10万 传统文化带动经济繁荣

在广东佛山,端午时节的赛龙舟活动总能点燃全城的热情。最近,这一传统民俗活动的消息在社交媒体上广泛传播,不仅因为比赛本身的精彩刺激,还因为它带来的惊人消费效应。一位经营咖啡店的叠滘媳妇平日月收入约两万元,在端午龙船季期间,她的收入竟然翻了三到五倍,达到了十万…

MySQL安装与配置全攻略

MySQL数据库安装及初始化 关系型数据库的基本概念 关系型数据库的基本结构主键与外键 (1)主键(2)外键 数据完整性规则(1)实体完整性规则(2)域完整性规则(3)引用完整性规则(4)用户定义的完整性规则 环境准备基础 二进制安装设定配置文件配置systemctl方式启动访问mysql数据库 1.…