AutoDev Composer:您身边的 Intellij 平台 Cursor、WinSurf 平替方案(预览版)
在半个多月前,DeepSeek V3 发布之后,我们为 Shire 引入了多文件编辑的能力。在我们多次测试之后,我们发现 DeepSeek V3 在编程场景下的表现非常出色, 尤其是在多文件编辑场景下。
于是,我们开发在久久未更新新特性的 AutoDev 上引入了 AutoDev Composer 的功能,我们 还借鉴了大量的成熟工具的方案:
Shire 上的出色 Sketch 渲染机制
Cursor、WindSurf 等复杂的系统提示词
Continue 那充满 bug 的 StreamDiff 模式
……
现在,你不用再切换到类 VSCode IDE 上编写提示词,回到 Intellij IDEA 进行 debug。而是可以直接在 Intellij IDEA 上就可以完成所有的工作。
作为一个业余项目,我们也是很努力地~。
视频 Demo
解密 AutoDev Composer 系统提示词
项目上下文
在 Composer 模式上,你依旧可以体验对我们对于软件工程的理解,以及在软件成分分析的丰富经验。如下是 AutoDev Composer 的基本上下文提示词:
- The USER's OS version is Mac OS X 15.2 x86_64
- The absolute path of the USER's workspaces is: /Users/phodal/IdeaProjects/untitled
- This workspace use Gradle Java JDK_11
- The user's shell is /bin/bash
- User's workspace context is: This project use MariaDB 11.5.2-MariaDB, You are working on a project that uses Spring Boot 2.7.10, Spring MVC,JDBC to build RESTful APIs.
- Current time is: 2025-01-20 11:23:59
我们将会获取系统信息、工作空间信息、工具链信息、数据库信息、语言环境信息等等,以帮助你更好地完成你的工作。特别是,当你编写 CRUD 代码时,AutoDev 就会根据你的数据库信息,为你生成对应的代码。
工具上下文
与使用 FunctionTool 不同的是,我们一直相信 DSL(领域特定语言)这一类基于语言的方案,才是最好的生成式 AI 方案。因此,我们在 AutoDev 中采用的 是基于 DevIns DSL 工具调用方案:
<tool>name: file, desc: Read the content of a file by project relative path, example:
<devin>
找到指定文件(需该路径下存在文件)
/file:.github/dependabot.yml#L1C1-L2C12
根据文件名全局搜索(大小写敏感,不带路径)
/file:PythonFrameworkContextProvider.kt
</devin>
由于工具的说明本身是代码、测试代码的一部分,因此,可以生成准确可靠的提示词。
思考过程
考虑到 AutoDev DSL 工具的复杂性,我们参考了 WindSurf 的提示词生成方案,引入了思考过程:
# 第一步. 创建 routes.py
我已经创建了 routes.py 来定义 "/upload" 和 "/query" 端点。此外,我还添加了 "/" 作为 main.html 的端点。
# 第二步. 创建 main.js
我已经创建了一个专用的 main.js 文件来存储所有的交互式前端代码。它定义了显示窗口和按钮的 UI 元素,并为这些按钮创建了事件监听器。
以便于添加更多的示例给 AI 模型,事实也证明 AI 模型学习得相当的不错。
AutoDev 开发者体验:Sketch 模式
尽管,AutoDev 现在变成了一个业余项目,但是我们一直相信理解开发者体验才是 AI 辅助研发的核心。因此,我们在 AutoDev Composer 上引入了 Shire 智能体语言采用的 Sketch 模式。你可以通过 Sketch 将 Code 转换为 everything。
简单来说,就是将 markdown 使用不同的 UI 进行渲染,以便更好进行交互。
Diff Sketch 模式
通过 Diff Sketch 模式,你可以快速理解 AI 变更的代码,来决定如何处理这些变更:查看源文件、diff 查看变更、或者直接应用变更。
由于,我们并没有能力像 Cursor 一样,提供 diff model,所以我们提供了 repair 模型,即当无法准确识别 patch 时,会再调用模型进行修复。
Terminal Sketch 模式
在 AutoDev 中,你可以在 Terminal Sketch 模式中执行脚本,或者将 Terminal 弹出(参考 Cursor),方便于你在系统中执行命令,查看运行结果。
Mermaid、PlantUML Sketch 模式
当你安装了 Mermaid 或者 PlantUML 插件之后,你可以通过 Mermaid、PlantUML Sketch 模式,将你的代码转换为流程图、时序图等等。
其它
下载和体验:https://github.com/unit-mesh/auto-dev/releases