首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

AI 智能体交互语言 DevIns:构建上下文感知的 AI 驱动编程

在 AutoDev 1.7.2 中,我们开始构建一个新的 AI Agent 语言:DevIns,即 Development Instruction。即 DevIns 可以让用户更快速描述软件开发任务, 同时,还可以自动化处理来自 AI Agent 返回的内容。

诸如于:/write:README.md\n```\n# Hello, World!```\n",AutoDev 将会翻译并执行这个指令,将# Hello, World!写入到README.md` 文件中。除此,在这个版本的 DevIns 里,还可以执行补丁、提交代码、运行测试。

PS:其实原来是叫 DevIn,但是无奈 Devin AI 项目发布了 demo 视频,所以改名为 DevIns

Why DevIns?

在 AutoDev 项目中,我们通过构建上下文感知自定义能力,来实现对于软件开发任务的智能辅助,如自动测试生成与运行、UI 自动生成等。而当 我们在 AutoDev 构建了越来越多的智能体之后,发现所有与模型的交互都是通过指令文本(instruction)。即用户通过指令文本来与智能体进行交互, 而智能体返回内容,并对编辑器或者 IDE 进行操作。

如在 AutoDev 的自定义 prompt 中,我们可以通过:解释选中的代码:$selction来让 AI 为我们解释选中的代码,而这里的解释就可以看作是一个指令。

所以,我们开始思考,是否可以通过自然语言来与智能体进行交互?即用户可以通过自然语言来描述自己的需求,而模型可以回复对应的指令文本,以实现 对编辑器或者 IDE 的操作,进而实现对软件开发任务的自动化辅助。

DevIns 语言是什么?

DevIns 是一个界于自然语言与指令文本之间的交互语言,其中自然语言用于描述软件开发任务,而指令文本用于与智能体和 IDE 进行交互。

简单来说,DevIns 是一个可交互、可编译、可执行的文本语言。你可以通过 DevIns 来描述软件开发任务,诸如于:解析代码、生成代码、运行测试等等,而后 执行运行,DevIns 编译器将根据你调用的指令,生成对应的指令文本,并将其发送给智能体,智能体将返回对应的结果,并对编辑器或者 IDE 进行操作。

你可以将你的需求描述成自然语言:

解释代码 /file:src/main/java/com/example/Controller.java

而后,AutoDev 将会结合上下文,并将其编译成对应的指令文本,即读取src/main/java/com/example/Controller.java文件内容。

DevIns Agent 指令

除了基本的读取文件内容、代码变更、自定义变量信息,DevIns 还支持更多的指令,诸如于:写入文件、运行测试、提交代码等。根据预先设计的指令, 对应的操作可以是:

/write,结合路径信息,对指令的代码进行操作

/run,运行对应的测试

/patch,根据 AI 返回的内容,执行对应的 patch

/commit,提交代码

诸如于于生成内容,可以是:

/write:src/main/java/com/example/Controller.java#L1-L5

```java

public class Controller {

public void method() {

}

}

```

别担心指令的复杂度,我们在 IDE 开发上拥有丰富的经验,为此在 DevIns 构建了 “非常” 强大的交互能力 —— 智能补全与提示。

在 IDE 中使用 DevIns

在安装完 AutoDev 1.7.2 版本的插件后,新建一个hello.devins文件,就可以开始编写 DevIns 指令了,然后点击运行即可。如下图所示:

AutoDev DevIns

是不是非常简单?

为什么名为 DevIns?

几周前,当我们开始设计这个语言时,我们的名字意图是:AutoDev Input Language,即 AutoDev 的输入语言,我们称其为 DevIn —— 我们搜索了一下, 并没有发现类似的项目。而当语言接近发布的时候, 在社交媒体上更火的 Devin AI 项目也刚好发布了 demo 视频。

WTF????

考虑到两者的相似性,我们决定将其重新命名为 DevIns,即 Development Instruction。改名字并不是一件容易的事,有大量的代码需要修改, 还有大量的文档需要更新(虽然没有),除此还有 JetBrains 的插件市场、仓库等等。而由于 JetBrains 的审核机制, DevIns 的默认文件后缀依旧是.devin,还没有改为.devins—— 实在是改不动了。

下一步

在接下来的版本中,我们考虑:

强化 DevIns 语言与智能体的交互方式(类似于 Jupyter Notebook?)

结合 AutoDev 的自定义 Agent 能力,构建更多的智能体

设计更丰富的 DevIns 指令,以让 AI 来实现更多的软件开发任务

构建跨平台的 DevIns 编译器

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O41WOrxNKHteb4z1XOqQIKPg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券