OpenHands:一个面向AI软件开发者通用智能体构建的开放平台
一、 作者、机构与发表信息
本文的主要作者是Xingyao Wang(UIUC/All Hands AI)、Boxuan Li(CMU)、Yufan Song(CMU)、Frank F. Xu(CMU)、Xiangru Tang(Yale)等,团队成员来自伊利诺伊大学厄巴纳-香槟分校(UIUC)、卡内基梅隆大学(CMU)、耶鲁大学(Yale)、加州大学伯克利分校(UC Berkeley)、KAUST、ANU、HCMUT、阿里巴巴以及Contextual AI和All Hands AI等多家学术机构和科技公司。该研究以会议论文的形式发表于ICLR 2025。
二、 学术背景与研究目的
本研究属于人工智能(AI)领域,具体聚焦于AI智能体(AI Agents)的开发、评估与应用平台构建。近年来,以ChatGPT为代表的大型语言模型(LLMs)在代码生成、数学推理等复杂任务上展现出强大能力,推动了AI智能体的快速发展。AI智能体能够感知外部环境并通过行动(如编写代码、操作命令行、浏览网页)来影响和改变环境,从而完成更复杂的现实世界任务,例如软件开发、网页导航、科学研究等。
然而,随着AI智能体能力的提升,其开发与评估也面临巨大挑战。尽管已有多个开源框架(如LangChain、AutoGPT、MetaGPT等)致力于简化智能体的构建流程,但这些框架在通用性、安全性、协作性和标准化评估方面仍存在不足。特别是,当智能体需要以“软件开发者”的身份,通过编写和执行代码、操作命令行、浏览网页等核心方式与世界交互时,缺乏一个既能提供强大、灵活的操作接口,又能确保执行安全,并能支持多智能体协作与系统性评估的一体化平台。
基于此背景,本研究团队提出了OpenHands(前身为OpenDevin)平台。该平台旨在为研究者和开发者提供一个社区驱动的、开放的、全面的AI智能体开发平台,其核心目标是:让AI智能体能够像人类软件工程师一样,通过代码(Code)、命令行(Bash)和网页浏览器(Browser)这三种最强大、最通用的接口与世界进行复杂交互。OpenHands不仅是一个概念框架,更是一个包含完整实现、可供立即使用的系统,旨在加速AI智能体领域的研究创新与实际应用。
三、 研究内容与方法:OpenHands平台架构详解
OpenHands的设计哲学是模仿人类软件开发者与计算机交互的方式。其核心架构围绕三个主要组件展开:智能体抽象(Agent Abstraction)、事件流(Event Stream)和运行时环境(Runtime)。以下是其详细工作流程与方法:
1. 智能体定义与实现(Agent Abstraction) OpenHands将智能体定义为一个能够感知环境状态(即历史行动与观察)并产生新行动以完成用户指定任务的实体。其核心是step函数,该函数接收当前状态(State)并输出一个行动(Action)。状态的关键组成部分是事件流,它按时间顺序记录了所有过去的行动和观察结果。 * 行动空间(Action Space):受CodeAct框架启发,OpenHands定义了一组核心的、通用的行动类型,作为智能体与环境交互的基石: * CmdRunAction:在沙盒环境中执行任意Bash命令。 * IPythonRunCellAction:在沙盒的交互式Python环境中执行任意Python代码。 * BrowseInteractiveAction:使用基于BrowserGym定义的特定领域语言与网页浏览器交互(如导航、点击、输入等)。 * 实现新智能体:开发者可以轻松地基于此抽象实现新的智能体。如图3所示,开发者只需在step函数中定义智能体的决策逻辑(例如,利用LLM解析历史,生成下一步的代码或命令),而无需关心底层行动如何被执行。这使得OpenHands能够容纳多种不同策略的智能体。
2. 智能体运行时:行动执行与观察生成(Runtime) 运行时环境为智能体提供了一个与人类开发者能力相仿的、安全可控的操作空间。 * Docker沙盒(Docker Sandbox):每个任务会话都在一个独立、安全的Docker容器中启动。用户的工作区目录被挂载到沙盒内,供智能体访问和修改。 * OpenHands行动执行API:运行在沙盒内部的API服务器负责监听并执行来自事件流的行动请求。它集成了三个关键组件: * Bash Shell:连接操作系统环境,执行命令。 * Jupyter IPython服务器:处理交互式Python代码的执行。 * 基于Playwright的Chromium浏览器:提供完整的网页浏览能力,支持导航、点击、滚动等丰富操作,并能返回HTML、DOM、可访问性树、截图等丰富的观察信息。 * 支持任意Docker镜像:平台提供构建机制,可将OpenHands行动执行API安装到用户提供的任意Docker镜像中,从而使智能体能够在各种不同的操作系统和软件环境下运行,极大地增强了平台的通用性。
3. 智能体技能库:可扩展的智能体-计算机接口(Agent Skills) 为了高效解决特定复杂任务(如代码编辑),需要为智能体提供精心设计的工具。OpenHands构建了agentskills库,这是一个旨在增强智能体能力的工具箱。 * 易于创建与扩展:agentskills是一个Python包,其中的工具(即函数)会自动导入到Jupyter IPython环境中。开发者只需编写Python函数即可贡献新工具,智能体通过IPythonRunCellAction调用这些工具,门槛极低。 * 纳入标准与现有技能:库中并非重新包装所有已有Python包,而是聚焦于LLM难以直接通过编写代码完成、或需要调用外部模型的任务。目前包含的技能有: * 文件编辑工具(如edit_file),源自SWE-Agent和Aider,用于精确修改代码行。 * 文件滚动查看工具(scroll_up, scroll_down)。 * 多模态文档解析工具(如parse_image利用GPT-4V等视觉语言模型解析图像信息,parse_pdf读取PDF文本)。
4. 多智能体委托(Multi-Agent Delegation) OpenHands支持多个智能体协同工作。通过AgentDelegateAction行动类型,一个智能体可以将特定子任务委托给另一个更专业的智能体。例如,通用的CodeActAgent可以将复杂的网页浏览任务委托给专门的BrowsingAgent,从而实现优势互补,提升复杂任务解决能力。
5. 智能体中心(AgentHub) 基于上述抽象,OpenHands社区贡献了多种智能体实现,供用户选择或作为基线: * CodeAct Agent:基于CodeAct框架的默认通用智能体,可在对话、执行Bash命令、执行Python代码和网页浏览之间自由切换,无需修改系统提示即可应对多种任务。 * Browsing Agent:专为网页浏览任务设计的通用智能体,基于WebArena思路改进,提供零样本提示下的网页交互能力。 * GPT-Swarm Agent:集成了GPT-Swarm框架,该框架使用可优化图来构建智能体系统,通过模块化节点和边实现多智能体协作的自动优化。 * 微智能体(Micro Agent):允许社区成员基于现有通用智能体(如CodeAct Agent)快速创建针对特定任务的、具有专门提示词的轻量级智能体。
6. 评估框架(Evaluation Framework) 为了系统追踪通用数字智能体的进展,OpenHands集成了15个涵盖不同领域的成熟基准测试,并将其标准化。 * 软件工程类:包括SWE-bench(解决真实GitHub问题)、HumanEvalFix(修复代码bug)、BIRD(文本转SQL)、ML-Bench(机器学习编码)、Gorilla APIBench(API调用)、ToolQA(工具使用)等。 * 网页浏览类:包括WebArena(真实网站任务)和MiniWoB++(合成网页任务)。 * 综合辅助类:包括GAIA(通用任务解决)、GPQA(研究生级别问答)、AgentBench(操作系统交互)、MINT(多轮数学与代码问题)、ProofWriter(演绎逻辑推理)、Entity Deduction Arena(状态追踪与策略规划)等。 * 评估方式:平台支持在这些基准上对不同的智能体(使用不同后端LLM)进行自动化、可复现的评估,并记录成功率、平均成本等关键指标。
四、 主要研究结果
研究团队利用OpenHands平台对其内置的智能体在多个基准上进行了系统性评估,结果充分展示了平台的通用性和智能体的竞争力。
1. 软件工程任务表现: * SWE-bench Lite:使用Claude-3.5-Sonnet的CodeActAgent v1.8取得了26.0%的解决率,与专门针对软件工程优化的开源智能体(如Aider的26.3%, Moatless Tools的26.7%)表现相当,证明了其作为通用智能体在专业任务上的有效性。 * HumanEvalFix:使用GPT-4o的CodeActAgent v1.5在零样本设置下达到了79.3%的通过率,显著优于所有非智能体方法,并与使用了1样本演示的SWE-Agent(87.7%)接近。 * ML-Bench:CodeActAgent v1.5使用GPT-4o取得了76.5%的成功率,超越了专门优化的SWE-Agent(42.6%),展示了其在机器学习代码任务上的强大能力。 * 其他基准:在BIRD、Biocoder、Gorilla APIBench、ToolQA等基准上,OpenHands的智能体均展现出具有竞争力的性能,特别是在需要多轮交互、调试和上下文检索的任务中,其通用行动空间的优势得以体现。
2. 网页浏览任务表现: * WebArena:专门的BrowsingAgent v1.0使用Claude-3.5-Sonnet取得了15.5%的成功率,与使用领域通用提示技术的其他智能体(如原WebArena Agent的14.4%)表现相当。更重要的是,通用的CodeActAgent通过委托机制调用BrowsingAgent,同样能达到15.3%的成功率,验证了多智能体协作流程的有效性。 * MiniWoB++:BrowsingAgent v1.0在完整任务集上使用GPT-4o取得了40.8%的成功率。
3. 综合辅助任务表现: * GAIA:集成GPT-Swarm框架的智能体使用GPT-4o取得了32.1%的成功率,显著高于AutoGPT(13.2%),展示了多智能体协作系统在复杂、多步骤任务中的潜力。 * GPQA:CodeActAgent v1.8使用Claude-3.5-Sonnet在最具挑战性的“钻石”数据集上取得了52.0%的准确率,超越了GPT-4的零样本思维链结果(38.8%),突显了智能体利用代码执行和网页搜索等工具解决复杂问题的能力。 * 其他基准:在AgentBench(操作系统交互)、MINT(多轮交互)、ProofWriter(逻辑推理)等任务上,OpenHands智能体也均取得了优异或具有竞争力的成绩。
结果逻辑与贡献:这些评估结果系统地验证了OpenHands平台的核心设计理念。首先,通用性得到证实:同一个CodeActAgent无需针对特定任务修改提示,即可在软件工程、网页浏览和综合辅助三大类任务中均取得良好表现。其次,平台能力得到验证:其安全沙盒、代码执行、网页浏览、技能库和多智能体委托等核心组件,共同支撑了智能体在多样化基准上的成功运行。最后,社区与生态价值初显:集成的大量基准和多样化的智能体实现,为后续研究提供了丰富的基线和高标准的测试床。
五、 结论与价值
本研究成功推出了OpenHands,这是一个功能强大、设计灵活、社区驱动的AI智能体开发平台。其核心贡献在于: 1. 提供了一个仿真的软件开发者交互范式:通过代码、命令行和浏览器这三个核心接口,为智能体赋予了与人类相似的世界交互能力。 2. 构建了一个安全、可扩展的架构:基于Docker沙盒的事件流架构确保了执行的安全性,同时支持任意环境镜像和易于扩展的技能库。 3. 实现了多智能体协作机制:通过委托行动,支持不同专长智能体的协同工作。 4. 集成了一套全面的评估体系:涵盖了15个跨领域基准,为智能体性能的量化比较与追踪提供了标准。 5. 创建了一个活跃的开源社区:采用宽松的MIT许可证,吸引了大量贡献者,形成了包含多种智能体实现的AgentHub,推动了项目的快速演进。
OpenHands不仅具有重要的科学研究价值,为AI智能体的算法研究、人机协作、安全性评估等提供了理想的基础设施和实验平台;同时也具有巨大的应用价值,能够加速基于AI的自动化软件开发、数据分析、智能客服、科研助手等现实应用的开发和落地。
六、 研究亮点
七、 其他有价值内容