0


OpenHands,媲美v0与Cursor的开源AI编程工具,帮你解密 AI 编程工具的工作原理

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的用户界面设计简洁易用,主要包含以下几部分:

  1. 聊天窗口:这是核心区域,用于查看与AI助手的对话历史。
  2. 输入框:位于界面底部,用户可以在此输入问题、需求或任务描述。
  3. 发送按钮:点击即可将消息发送给AI助手。
  4. 设置按钮:齿轮图标,用于打开设置窗口,方便随时调整配置。
  5. 工作空间面板:展示当前工作空间的文件和文件夹,方便用户导航项目结构,也可以查看代理的历史命令或浏览记录。

这种交互方式允许用户通过自然语言直接向AI助手描述需求,并在对话中获得即时反馈,从而更高效地完成编程任务。比如,只需输入“创建一个处理字符串的函数”,OpenHands就会根据用户需求生成代码并进行解释。
在这里插入图片描述
和v0类似的编程首页,直接输入编程目标就可以开始做应用了。
在这里插入图片描述
在这里插入图片描述

Openhands的编程体验


第三部分:如何使用Docker运行OpenHands

为了更方便地使用OpenHands,开发者可以在Docker中快速部署这个工具。以下是具体步骤:

系统要求
  • Docker版本需为26.0.0+或Docker Desktop 4.31.0+。
  • 建议在Linux或Mac OS上运行。如果使用Windows,则需要通过WSL运行Docker。
部署步骤
  1. 拉取Docker镜像docker pull docker.all-hands.dev/all-hands-ai/runtime:0.13-nikolaik
  2. 运行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在每次交互中可以执行以下操作:

  1. 自然语言对话:与用户交流,获取澄清或确认信息。
  2. 代码行动(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的强大之处!

参考链接


本文转载自: https://blog.csdn.net/surfirst/article/details/143724869
版权归原作者 surfirst 所有, 如有侵权,请联系我们删除。

“OpenHands,媲美v0与Cursor的开源AI编程工具,帮你解密 AI 编程工具的工作原理”的评论:

还没有评论