AI在编程领域的应用迅速发展,涌现出了众多新兴的AI编程工具。今天,我将为大家介绍一款开源的AI编程工具——OpenHands。它不仅具备与Cursor和v0类似的自然语言编程体验,还在SWE-bench测试中表现出色。在这篇博文中,我们将探讨OpenHands的核心功能、架构设计、如何使用Docker进行部署以及它在编程效率方面的潜力。
第一部分:OpenHands在SWE-bench上的领先地位
SWE-bench是一个自动化编程系统的评估数据集,通过GitHub的Issue-Pull Request配对来测试系统的编程能力。该数据集包含了2,294个Issue-Pull Request对,来自12个流行的Python项目。评估基于PR后的行为,并通过单元测试进行验证,以确保代码修改符合预期的解决方案。OpenHands在这个严苛的评估环境中表现出色,在SWE-bench排名中名列前茅,仅次于CodeStory Aide + Mixed Models。此成绩显示了OpenHands在解决真实编程问题方面的强大能力,让它成为AI编程工具的佼佼者。
从上图中我们可以看到 OpenHands 排名第二,字节跳动的 MarsCode 排名第三,阿里的灵码(Lingma)也参加了排名。
第二部分:OpenHands的自然语言编程体验
OpenHands不仅在性能上表现出色,它还提供了一种直观的自然语言编程体验,与v0等工具相似,能够让开发者通过与AI助手的互动完成编程任务。OpenHands的用户界面设计简洁易用,主要包含以下几部分:
- 聊天窗口:这是核心区域,用于查看与AI助手的对话历史。
- 输入框:位于界面底部,用户可以在此输入问题、需求或任务描述。
- 发送按钮:点击即可将消息发送给AI助手。
- 设置按钮:齿轮图标,用于打开设置窗口,方便随时调整配置。
- 工作空间面板:展示当前工作空间的文件和文件夹,方便用户导航项目结构,也可以查看代理的历史命令或浏览记录。
这种交互方式允许用户通过自然语言直接向AI助手描述需求,并在对话中获得即时反馈,从而更高效地完成编程任务。比如,只需输入“创建一个处理字符串的函数”,OpenHands就会根据用户需求生成代码并进行解释。
和v0类似的编程首页,直接输入编程目标就可以开始做应用了。
Openhands的编程体验
第三部分:如何使用Docker运行OpenHands
为了更方便地使用OpenHands,开发者可以在Docker中快速部署这个工具。以下是具体步骤:
系统要求
- Docker版本需为26.0.0+或Docker Desktop 4.31.0+。
- 建议在Linux或Mac OS上运行。如果使用Windows,则需要通过WSL运行Docker。
部署步骤
- 拉取Docker镜像:
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.13-nikolaik
- 运行OpenHands容器:
docker run -it --rm --pull=always \ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.13-nikolaik \ -v /var/run/docker.sock:/var/run/docker.sock \ -p 3000:3000 \ -e LOG_ALL_EVENTS=true \ --add-host host.docker.internal:host-gateway \ --name openhands-app \ docker.all-hands.dev/all-hands-ai/openhands:0.13
运行该命令后,OpenHands将会在
http://localhost:3000
启动并可以访问。首次运行时,会弹出设置窗口,用户需要选择LLM提供商、LLM模型并输入API密钥。可通过点击UI中的齿轮图标随时调整设置。如需使用自定义模型,可在高级选项中手动输入模型名称和Base URL。
OpenHands还可以在脚本模式、交互式CLI模式或GitHub Action中使用,适应不同的开发需求。
第四部分:OpenHands的架构及工作原理
OpenHands基于CodeAct 1.0的架构,CodeAct是一种将大语言模型(LLM)代理的行为整合到统一代码行动空间的框架。这一架构允许OpenHands在编程任务中扮演全方位的智能助手角色,涵盖自然语言交流、代码执行等多种功能。具体来说,OpenHands在每次交互中可以执行以下操作:
- 自然语言对话:与用户交流,获取澄清或确认信息。
- 代码行动(CodeAct):通过执行代码、运行Linux命令、编辑文件内容等完成编程任务。
OpenHands在SWE-Agent的基础上进行了优化,增加了许多实用工具,包括:
- 打开文件并跳转到特定行;
- 在目录或文件中搜索;
- 在指定路径创建文件;
- 浏览和编辑文件内容;
- 在有限的交互次数内完成任务(借鉴了MINT的倒计时机制);
- 简化了命令书写和操作解析过程。
这种架构让OpenHands具备了强大的编程任务处理能力,可以高效解决从简单文件管理到复杂代码生成的各类问题。
Openhands 中的核心智能体 CodeAct 的工作原理
从上图可以看到 Openhands 启动了一个 docker 容器执行 agent 任务
总结
OpenHands不仅在性能上表现出色,也提供了媲美v0和Cursor的自然语言编程体验。它在SWE-bench上的优异成绩,展示了它在解决实际编程任务中的潜力。此外,通过Docker的部署,开发者可以轻松上手,深入理解OpenHands的工作原理。更重要的是,OpenHands为我们提供了一个学习AI编程工具架构的绝佳机会,尤其是对v0、Cursor等先进AI工具的机制理解具有重要的借鉴意义。如果你对AI编程助手感兴趣,不妨亲自体验一下OpenHands的强大之处!
参考链接
版权归原作者 surfirst 所有, 如有侵权,请联系我们删除。