支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


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

发布日期:2025-05-28 11:57:48 浏览次数: 1547 作者:phodal
推荐语

AutoDev预上下文引擎,开启AI编程新纪元,显著提升代码检索效率。

核心内容:
1. 预生成上下文技术:离线构建代码语义化数据,加速代码智能体响应
2. AutoDev Context Worker工具:一键生成代码仓库上下文,提升RAG性能
3. 预生成上下文在内部框架、SDK等固定知识场景的应用与优势

杨芳贤
53A创始人/腾讯云(TVP)最具价值专家


预生成上下文是指在用户发起查询或生成请求之前,系统针对特定代码仓库、文档或 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 获取已知问题所需要的上下文知识。

总结


53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询