openhands论文解读

OPENHANDS: AN OPEN PLATFORM FOR

AI SOFTWARE DEVELOPERS AS GENERALIST AGENTS

通过编写代码、与命令行交互以及浏览网页。我们将阐述该平台如何支持新智能体的实现、与用于代码执行的沙盒环境进行安全交互、多智能体之间的协作以及评估基准的整合。

github https://github.com/All-Hands-AI/OpenHands

人类与世界互动的最有效方式是通过软件 ------ 软件。

我们如何让智能体能够在复杂的软件系统中有效地创建和修改代码?我们如何为它们提供工具,以便实时收集信息来调试问题或获取完成任务所需的信息?我们如何确保开发过程是安全的,并避免对用户系统产生负面影响?

(1)一种交互机制,它允许用户界面、智能体和环境通过强大且灵活的事件流架构进行交互(第 2.1 节)。

(2)一个运行时环境 ,它由一个带有bash shell 的 docker 沙箱操作系统、一个网页浏览器以及一个智能体可以交互的 IPython 服务器组成(§2.2)。

(3)一个允许智能体以类似于实际软件工程师的方式与环境交互的界面 (第 2.3 节)。我们为智能体提供了以下能力:a)创建和编辑复杂软件,b)在沙箱中执行任意代码,c)浏览网站以收集信息。

(4)多智能体委托,允许多个专业智能体协同工作(第 2.4 节)。

(5)评估框架,便于在广泛的任务中对智能体进行评估(第 4 节)。

重要的是,OpenHands 不仅仅是一个概念框架,它还包含了一套全面且可立即使用的智能体、环境和评估的实现方案。在撰写本文时,OpenHands 包含一个智能体中心,其中有 10 多个已实现的智能体(第 3 节),包括一个基于 CodeAct 架构(Wang 等人,2024a)实现的强大通用智能体,还增加了用于网页浏览(ServiceNow)和代码编辑的专业智能体(Yang 等人,2024)。

图 2:OpenHands 由 3 个主要组件构成:1)智能体抽象,社区可通过该组件向智能体中心(第 3 节)贡献不同的智能体实现(第 2.1 节);2)用于跟踪行动和观察历史的事件流;3)将所有行动执行转化为观察结果的运行时(第 2.2 节)。

OpenHands 架构

2.1 智能体的定义与实现

智能体能够感知环境状态(例如,先前的动作和观察结果),并在解决用户指定的任务时生成要执行的动作。

状态与事件流。在 OpenHands 中,状态是一种数据结构,它封装了智能体执行所需的所有相关信息。该状态的一个关键组成部分是事件流,它是按时间顺序排列的过往行动和观察结果的集合,包括智能体自身的行动以及用户交互(例如指令、反馈)。除了事件流之外,状态还包含智能体运行所需的辅助信息,如大模型调用的累计成本、用于跟踪多智能体委派的元数据(第 2.4 节)以及其他与执行相关的参数。

动作。受 CodeAct(Wang 等人,2024a)的启发,OpenHands 通过一套核心的通用动作将智能体与环境连接起来。IPythonRunCellAction 和 CmdRunAction 动作使智能体能够在沙盒环境(例如,一个安全隔离的 Linux 操作系统)中执行任意的 Python 代码和 bash 命令。BrowserInteractiveAction 动作支持使用 BrowserGym(Drouin 等人,2024)引入的特定于浏览领域的语言与网页浏览器进行交互。

观察。观察描述了智能体所观察到的环境变化(例如,先前行动的执行结果、人类用户的文本消息等)。

2.2 智能体运行时:动作执行如何产生观察结果

智能体运行时提供了一个通用环境,为智能体配备了与人类软件开发人员相当的操作空间,使 OpenHands 智能体能够处理各种软件开发和基于网络的任务,包括复杂的软件开发工作流、数据分析项目、网页浏览任务等。

Docker 沙箱。对于每个任务会话,OpenHands 会启动一个安全隔离的 Docker 容器沙箱,事件流中的所有操作都将在其中执行。

OpenHands 动作执行 API。OpenHands 维护着一个在 docker 沙箱内运行的 API 服务器,用于监听来自事件流的动作执行请求。该 API 服务器维护:

(1)一个与操作系统环境(由 docker 镜像指定)连接以执行命令的 bash shell。

(2)一个 Jupyter IPython 服务器,用于处理交互式 Python(IPython)代码执行请求,并将执行结果返回至事件流。

(3)一个基于 Playwright 的 Chromium 浏览器。该提供商提供了一套由 BrowserGym(ServiceNow;Drouin 等人,2024)定义的动作原语,例如导航、点击、输入和滚动。完整的动作集在第 J 节中有详细说明。执行这些动作后,浏览器运行时提供了关于浏览器当前状态的丰富观察结果,包括 HTML、DOM、可访问性树(Mozilla)、截图、已打开的标签页等。

任意 Docker 镜像支持。OpenHands 通过支持基于任意 docker 镜像的运行时,允许智能体在具有不同软件环境的任意操作系统上运行。OpenHands 实现了一种构建机制,该机制接收用户提供的任意 docker 镜像,并将 OpenHands 动作执行 API 安装到该镜像中,以支持智能体交互。我们在 §F 中详细描述了 OpenHands 智能体运行时。

2.3 智能体技能:可扩展的智能体 - 计算机接口

AgentSkills 被设计为一个 Python 包,包含各种实用函数(即工具),这些函数会自动导入 Jupyter IPython 环境(第 2.2 节)。

2.4 智能体委托:协作式多智能体交互

OpenHands 也允许多个智能体之间进行交互。为此,我们使用一种特殊的动作类型 AgentDelegateAction,它能让一个智能体将特定的子任务委托给另一个智能体。例如,对网页浏览支持有限的通用型 CodeActAgent,可以使用 AgentDelegateAction 将网页浏览任务委托给专门的 BrowsingAgent,以执行更复杂的浏览活动(例如,浏览网页、点击按钮、提交表单等)。

3 AGENTHUB:社区贡献的智能体中心

CodeAct 智能体。CodeAct 智能体是基于 CodeAct 框架(Wang 等人,2024a)的默认通用智能体。在每一步中,该智能体可以(1)通过自然语言与人类交流,以请求澄清、确认等;或者(2)通过执行代码(即 CodeAct)来完成任务,包括执行 bash 命令、Python 代码或浏览器特定编程语言(第 2.2 节)。这种通用的行动空间使该智能体(1.5 及以上版本)能够执行各种任务,包括编辑文件、浏览网页、运行程序等。

表 1:不同人工智能智能体框架的比较(§C)。SWE 指的是 "软件工程"。标准化工具库:框架是否包含可用于不同智能体实现的可重用工具(§2.3);内置沙箱和代码执行:是否支持对任意智能体生成的代码进行沙箱执行;内置网页浏览器:是否为智能体提供功能完备的网页浏览器访问权限;人机协作:是否支持多轮人机协作(例如,人类可以在任务执行过程中打断智能体和 / 或提供额外的反馈和指令);智能体中心(AgentHub):是否托管各种智能体的实现(§3);评估框架:是否提供在具有挑战性的基准上对已实现智能体的系统性评估(§4);智能体质量控制(Agent QC):框架是否集成测试(§E)以确保整体框架软件质量。

相关推荐
亿林-智企AI1 小时前
AI数字人技术浪潮:亿林数据引领人机交互新范式
人工智能·人机交互·智能客服·ai数字人·ai智能体·算力一体机
YangYang9YangYan1 小时前
2026年中专计算机专业证书报考指南:高性价比认证与职业路径规划
大数据·人工智能·学习·计算机视觉
DMD1681 小时前
从仓库到门店:AI如何重构零售供应链的“最后一公里”
人工智能·科技·重构·零售·数字化转型·产业升级·ai技术开发
秃头小饼干1 小时前
虚拟机性能优化实战技术文章大纲
人工智能·云计算
番茄迷人蛋1 小时前
欢迎使用AI美食大师项目
人工智能·ai
InfiSight智睿视界1 小时前
即时零售仓网管理的AI 智能化演进
大数据·人工智能·零售
汽车仪器仪表相关领域1 小时前
MTX-AL:传统指针美学与现代数字科技的完美融合 - 模拟宽带空燃比计
大数据·人工智能·科技·单元测试·汽车·压力测试·可用性测试
WHFENGHE1 小时前
金具线夹测温在线监测装置:电力设备安全运行的核心技术支撑
大数据·人工智能·安全
Coding茶水间2 小时前
基于深度学习的35种鸟类检测系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
图像处理·人工智能·深度学习·yolo·目标检测·计算机视觉