OpenDevin 简介:一个有抱负的 AI 驱动的软件开发平台

news/2025/1/22 23:43:54/文章来源:https://www.cnblogs.com/IcyFeather/p/18292558

来源链接:https://medium.com/ai-advances/introduction-to-opendevin-the-aspiring-ai-powered-software-development-platform-11ffc69e60cc

发布时间:2024-05-05T00:40:39.078Z

图片3

OpenDevin 是一个创新的开源项目,旨在通过引入一个自主的 AI 软件工程师来彻底改变软件开发。这个 AI 助手旨在处理复杂的工程任务,并与人类用户在各种软件项目上积极合作。该项目正在开发中,但已经发布的 alpha 版本清楚地展示了协作式 AI 开发的激动人心的未来。

更多详情请参阅:

  1. OpenDevin 的核心功能:它能做什么(或至少它渴望做什么)
  2. 开始使用 OpenDevin
  3. 理解 OpenDevin 的架构
  4. OpenDevin 的代理:专业化的 AI 助手
  5. OpenDevin 的潜在应用
  6. 结论

OpenDevin 的核心功能:它能做什么(或至少它渴望做什么)

想象一下有一个不知疲倦的队友,能够处理复杂的编码任务,理解你的意图,并在过程中提供建议和解释。这就是 OpenDevin 的潜在未来。该项目旨在创建一个全面的 AI 助手,能够:

  • 自动化重复任务: OpenDevin 旨在处理各种编码杂务,包括生成代码、修复错误和重构现有代码,让开发者能够专注于项目的战略方面。
  • 像伙伴一样协作: OpenDevin 不仅仅是一个自动化工具;它努力成为一个协作伙伴。它将通过自然语言处理理解你的意图,并提供智能建议、解释和针对你特定需求的代码示例。
  • 持续学习和适应: OpenDevin 渴望成为一个快速学习者:通过与用户互动和分析过去的项目,它被设计为不断改进其性能并适应不同的编码风格和项目要求。

开始使用 OpenDevin

OpenDevin 主要在一个 Docker 容器内运行,为其操作提供了一个受控环境。以下是一个基本的入门指南:

  1. 设置你的工作区: 选择一个 OpenDevin 可以访问和修改你的代码的目录。
  2. 配置你的 LLM: 通过设置相关环境变量(如 LLM_API_KEYLLM_MODEL)选择并配置你想要的 大型语言模型(LLM)。OpenDevin 支持多种 LLM,包括 GPT-4、Claude、Azure OpenAI、Google Gemini/Vertex 和本地模型,如 Ollama 提供的模型。
  3. 运行 OpenDevin: 使用提供的 Docker 命令和适当的环境变量启动 OpenDevin。
  4. 访问界面: 运行后,OpenDevin 可以通过 http://localhost:3000 上的网页界面访问。

如文档所示,启动只需使用以下代码行:

export WORKSPACE\_BASE=$(pwd)/workspace; # 你希望 OpenDevin 修改的目录。必须是绝对路径!docker run \\  --pull=always \\  -e SANDBOX\_USER\_ID=$(id -u) \\  -e WORKSPACE\_MOUNT\_PATH=$WORKSPACE\_BASE \\  -v $WORKSPACE\_BASE:/opt/workspace\_base \\  -v /var/run/docker.sock:/var/run/docker.sock \\  -p 3000:3000 \\  --add-host host.docker.internal=host-gateway \\  ghcr.io/opendevin/opendevin:0.5

一个重要的提示:虽然OpenDevin在Docker沙箱中运行以实现隔离,但请确保您选择的工作空间目录已备份,因为在操作过程中文件可能会被修改或删除!

另外,需要注意的是,OpenDevin将向配置的LLM发出许多提示,这可能会产生费用。因此,设置消费限额和监控使用情况是至关重要的。

理解OpenDevin的架构

OpenDevin的系统架构由两个主要部分组成:

前端: 这是用户界面,开发者在这里与OpenDevin互动。它允许用户输入任务,查看代码建议和管理项目设置。

后端: 这个组件处理OpenDevin的核心功能,包括:

  • LLM交互: 向选择的LLM发送提示并接收响应。
  • 代理执行: 利用各种代理处理信息并执行操作。
  • 工作空间管理: 与指定工作空间目录中的代码交互。

它们的相互连接以及构建块在以下图像中显示。

Image 4

OpenDevin的架构

OpenDevin系统架构的关键组件包括:

  • 聊天界面: 与聊天应用程序交互的用户界面
  • 应用: 包含各种子组件以提供用户体验的主要组件
  • settingsService: 管理用户偏好和个性化选项
  • chatService: 处理核心聊天功能(消息传输、加密、存储)
  • socket: 启用前端和后端之间的实时通信
  • 客户端WS: 客户端的WebSocket,用于实时数据交换
  • 服务器WS: 服务器端的WebSocket,用于实时数据交换
  • VITE_TERMINAL_WS_URL: 指定WebSocket连接的网络地址的配置元素
  • AgentController: 管理自动化代理或聊天机器人,用于智能聊天功能

OpenDevin的代理:专业的AI助手

OpenDevin使用不同的代理,每个代理都具有独特的能力来处理特定任务:

  • CodeAct代理: CodeAct代理体现了将LLM代理的行动整合到统一的代码操作空间的概念。这个代理可以与用户对话,执行Linux bash命令,并通过交互式解释器运行Python代码。它利用OpenDevin的插件系统,包括Jupyter插件用于IPython执行和SWE-agent工具插件用于软件开发任务。以下图像展示了这个代理的操作。

Image 5

  • Monologue Agent 独白代理: 独白代理利用长期和短期记忆的力量高效完成任务。它将长期记忆存储为 LongTermMemory 对象,使模型能够从过去搜索相关示例。短期记忆作为 Monologue 对象进行维护,模型可以根据需要进行压缩。该代理支持多种操作,包括运行命令、读写文件、回忆信息、浏览网址和推送至 GitHub。
  • Planner Agent 规划代理: 规划代理采用独特的提示策略来制定解决问题的长期计划。它接收每一步的先前动作-观察对、当前任务以及基于最后执行动作的提示。该代理检查当前步骤是否完成,并返回 AgentFinishAction 或创建计划提示发送给模型进行推理。

OpenDevin 的潜在应用

OpenDevin 的功能(及类似项目)为软件开发生命周期内的多种应用打开了大门:

  • 快速原型制作: 根据用户规格和反馈快速生成并迭代代码原型。
  • 自动化代码生成: 自动化重复编码任务,如创建样板代码或实现标准算法。
  • 智能代码补全: 接收上下文感知的代码建议和补全,以提高编码效率和准确性。
  • 错误检测与修复: 利用 AI 驱动的分析和建议识别并修复现有代码中的错误。
  • 代码重构: 通过自动重构现有代码,提高代码质量和可维护性。
  • 学习和教育: 像 OpenDevin 这样的工具可以通过提供交互式解释和代码示例,作为学习新编程语言和概念的宝贵辅助。

结论

OpenDevin 代表了 AI 辅助软件开发的一个良好挑战,并且以开源方式出色地完成。随着 OpenDevin 的不断发展,它有望赋予开发者超能力,加速开发周期,并最终塑造软件开发的未来。这个多汁的果实何时会成熟到足以被食用(咳咳,使用)呢?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/741272.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PM2 ecosystem 服务器自动化部署

一:准备工作 1.1 :将项目上传至代码管理库(github,gitlab,bitbucket,等) 1.2 :Windows 和 服务器 都安装SSH,Git 工具。 二:开始 2.1 本地生成ssh key连接服务器//根据邮箱生成ssh key ssh-keygen -t rsa -C "..........@163.com"//仔细看注释 //1.如果生成过…

java推送打卡记录到企微,中文乱码

在开发机中,推送中文能正常显示,部署到windows服务器上,中文显示乱码 设置windows环境变量: JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

Linux web服务

Web服务在Linux中存在许多可以提供web服务的软件,httpd、tomcat、nginx等Web通信的基本概念基于B/S架构的网页服务 HTTP HTML【1】、httpd软件 1、httpd软件安装httpd是软件基金会写出的 软件基金会(Apache)yum install -y httpdrpm -qa httpd httpd-2.4.37-62.module+el8.9…

jmeter分布式no-gui 测试报告

1、远程测试 https://jmeter.apache.org/usermanual/remote-test.html 2、 3、进行分布式压测是,服务器需要先启动jmeter-sever,启动jmeter-sever建议加上nobup,后开运行,停止服务时,先停master,在停slave,不然可能有问题。linux上具体的压测命令如下: 只有一台服务时…

vmware禁止虚拟主机开启后自动时间同步到宿主机

编辑虚拟机 VMX配置文件找到tools.syncTime = "FALSE"并在该行下添加如下七行,注意标点符号 time.synchronize.continue = "FALSE" time.synchronize.restore = "FALSE" time.synchronize.resume.disk = "FALSE" time.synchronize.sh…

转-OAuth2.0 原理流程及其单点登录和权限控制

原文链接 单点登录是多域名企业站点流行的登录方式。本文以现实生活场景辅助理解,力争彻底理清 OAuth2.0 实现单点登录的原理流程。同时总结了权限控制的实现方案,及其在微服务架构中的应用。 1 什么是单点登录 1.1 多点登录 传统的多点登录系统中,每个站点都实现了本站专用…

【转】-Java反射

Java 反射由浅入深 | 进阶必备 原文链接 本博文主要记录我学习 Java 反射(reflect)的一点心得,在了解反射之前,你应该先了解 Java 中的 Class 类,如果你不是很了解,可以先简单了解下。 一、Java 反射机制 参考了许多博文,总结了以下个人观点,若有不妥还望指正:Java 反…

OAuth2.0登录的四种方式

OAuth登录的四种方式 1. 授权码 授权码(authorization code)方式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。 这种方式是最常用的流程,安全性也最高,它适用于那些有后端的 Web 应用。授权码通过前端传送,令牌则是储存在后端,而且所有与资源服务器的通信…

C++关于计算浮点数小数位数时遇到的浮点数精确度问题(以及浮点数强制转换问题)

起因是当我想要计算浮点数的小数位位数(利用当浮点数num减去其整数位 ) 我的想法是先分离出小数位,然后每次循环给小数位乘上10,直到不存在小数位时,就会满足当num - (int)num == 0通过这种方式就可以得到小数位的长度 #include <iostream> using namespace std; in…

codeforces 955 div 2 D

题目链接 D. Beauty of the mountains 题目大意解题思路 首先记录所有雪山和没有雪山两种山峰的高度差为 \(tot\) ,然后对于每个可能的子矩,我们可以每次给所有山峰都加一或者减一,因此只要计算出矩阵内两种山峰的个数差的绝对值我们就能得到每次操作该子矩阵对tot的贡献 \(…

全局ID工具类

测试方法学习: 定义一个任务(生成id),执行300次,让不同线程执行这300次,用线程池对象的submit方法。心甘情愿做你现在想做的每一件事。

Dubbo源码学习

学习Dubbo框架与手写模拟相关内容 一、存在的意义 Dubbo:解决分布式系统的复杂性,实现服务治理(使服务之间的调用变的简单)和自动注册与发现,简化服务调用。 二、调用过程Dubbo的使用 接口代表一种服务,对应不同的实现,使服务之间的依赖变的简单。 服务消费者通过ClassP…