在先前《预上下文生成》的文章中,我们介绍了预生成上下文的概念和实践:
预生成上下文是指在用户发起查询或生成请求之前,系统针对特定代码仓库、文档或 SDK,离线构建一组语义化的上下文数据。这些上下文经过理解、 加工与组织,使其在运行时能够被快速检索和引用,从而提升代码智能体在生成、解释或检索代码时的准确性、相关性和响应速度。
我们在 AutoDev Workbench 中实现了这一概念的分析端与后端,对应的分析侧即 AutoDev Context Worker。你可以使用这个工具, 对你的代码仓库进行上下文生成:
npx @autodev/context-worker@latest
PS:npx
是 Node.js 的包管理工具,可以直接运行 npm 包中的命令。
RAG 是在 AI 应用中一个重要的话题。尽管我们在 AutoDev 的 VSCode 版本中,构建了多种向量化 RAG 的方式,但是我一直认为在 AI 编程中, 对于大量的项目来说基于向量化方式的 RAG 的性价比并不高。
所以,有必要重新审视 RAG 的方式,尤其是对于代码检索来说。
我认为向量化代码检索的性价比并不高,主要有以下几个原因:
而从 2025 年技术趋势来说,基于向量化的 RAG 已经变成了次要的选择,只当当前阶段,AI 检索不到相关信息时,有些工具如 Cursor 才会使用向量化的方式进行检索。
另外一方面,作为一个 AI 编程工具,我们还需要面对大量的内部框架、SDK、API 等固定知识的预生成。因为这些知识是相对固定的,对于用户来说, 通常问题也是颇为明确的 —— 用户不会去询问:如何使用 Spring Boot 来构建一个 Web 应用?而是会询问:如何在 Spring Boot 中使用 xx 框架。
那么,针对这类需要提供固定知识的场景:
我们就可以用更高效的方式来生成它们。
如上所述,针对于这一类场景,我们可以使用预生成上下文的方式来提升 RAG 的效果。Context Worker 就是为此而设计的。
AutoDev Context Worker 是一个用于深度解析和分析代码的工具,旨在为开发者提供更好的上下文理解和智能化的代码处理能力。 它可以帮助开发者更高效地理解和使用代码库。
Context Worker 是基于我们先前的 VSCode 版本开发的,我们从中提取核心的代码解析和分析功能,构建了一个独立的工具。 我们进一步扩充了他的多语言的解析支持,现在可以支持 Java、JavaScript、TypeScript、Python、Golang、Rust、C/C++、Ruby、C# 等十几种主流语言。
结合 AutoDev Workbench 的服务端功能,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
接口定义:
```java
public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByUsername(String username);
List<User> findByEmail(String email);
}
```
=== 实现类 (1) ===
实现类: UserRepositoryImpl
文件: /path/to/UserRepositoryImpl.java
```java
@Repository
public class UserRepositoryImpl implements UserRepository {
// ...实现代码...
@Override
public Optional<User> findByUsername(String username) {
// ...方法实现...
}
@Override
public List<User> findByEmail(String email) {
// ...方法实现...
}
}
```
Context Worker 会自动分析代码中的接口、实现类、方法等信息,并生成相应的上下文知识。你可以将这些信息存储在知识库中,而后调用 AI 来直接生成 相应的 name 和 description 描述,以在不同的场景中使用。
结合我们在 AutoDev Workbench 还提供的 MCP(Model Context Protocol)服务,你就可以使用 AI 编程工具通过 MCP 获取已知问题所需要的上下文知识。
欢迎使用 AutoDev Context Worker 来提升你的 RAG 效果:https://github.com/unit-mesh/autodev-workbench 。
围观我的Github Idea墙, 也许,你会遇到心仪的项目