OpenHands(前身为OpenDevin)是一个由AI驱动的开源软件开发代理平台,旨在通过自动化软件开发任务来提高开发效率。

该项目由All-Hands-AI团队开发,在GitHub上已获得超过60k star,成为当前最受关注的开源AI开发工具之一。

简介

OpenHands 智能体可以完成人类开发者能做的所有事情:修改代码、运行命令、浏览网页、调用 API,甚至还能从 StackOverflow 复制代码片段。

图片

 

核心功能

1. 代码自动修改与优化

OpenHands最强大的能力之一是能够理解和修改现有代码。它通过以下流程实现代码自动化修改:

  • • 自然语言解析: 开发者用自然语言描述修改需求,如"将UserService.ts中的fetch改成axios,并加上3次重试逻辑"

  • • AST分析: 使用插件对目标文件进行静态分析,构建调用路径图

  • • 上下文补全: 自动检索StackOverflow等资源获取相关代码示例

  • • 补丁生成: 调用LLM生成代码diff/patch

  • • 安全执行: 自动备份原文件后应用修改,支持回滚

这种能力特别适合重复性代码修改、库/框架迁移和代码优化等场景。

2. 网页交互与自动化测试

OpenHands内置了完整的网页自动化能力:

  • • DOM解析: 使用headless浏览器(Puppeteer)提取DOM树,通过文本匹配、属性筛选和XPath/CSS Selector定位元素

  • • 行为模拟: 支持点击、填写、拖动、滚动和提交表单等操作

  • • 状态验证: 通过DOM变更监听和回调结果检测确保操作正确性

这使得OpenHands能够自动完成Web应用的测试用例,或执行如数据抓取等重复性网页操作任务。

3. 智能信息检索与集成

OpenHands原生集成了StackOverflow的实时查询接口,实现了:

  • • 智能检索: 当检测到开发需求中的不确定性表述时,自动查询相关解决方案

  • • 上下文适配: 判断检索到的代码片段是否匹配当前项目风格和技术栈

  • • 安全集成: 将适配后的代码精准插入项目,并记录来源以便审计

这一功能显著降低了开发者的学习成本和信息获取门槛。

4. 多工具链协同

OpenHands通过插件系统整合了各类开发工具:

  • • 版本控制(Git)

  • • 包管理器(npm/pip等)

  • • 测试框架

  • • 构建工具

  • • 容器化工具(Docker)

这种协同能力使其能够处理从代码修改到构建部署的完整开发流程。

部署使用

安装与配置

1. 环境要求:

操作系统: 支持Linux、Mac OS以及Windows(通过WSL运行)。

软件依赖: 核心依赖为Docker环境,推荐使用Docker 26.0及以上版本。确保本地已安装Git,用于获取项目代码。

2. 安装步骤:

安装Docker Desktop: 根据操作系统类型,前往Docker官网下载并安装对应的Docker Desktop版本。对于Windows用户,安装过程中需注意配置WSL(Windows Subsystem for Linux),以确保Docker能够正常运行。

拉取OpenHands镜像: 打开终端,执行命令docker pull docker.all-hands.dev/all-hands-ai/runtime:0.28-nikolaik,从镜像仓库拉取OpenHands的Docker镜像。

3. 配置模型:

选择语言模型提供商: OpenHands支持多种大语言模型,如Anthropic的Claude 3.5 Sonnet等。用户根据需求选择合适的模型。

获取并输入API密钥: 前往所选模型的官方网站,注册账号并获取API密钥。在OpenHands平台的配置界面中,输入获取到的API密钥,完成模型配置。

使用步骤

启动服务:

在终端中执行以下命令启动OpenHands服务:

docker pull docker.all-hands.dev/all-hands-ai/runtime:0.28-nikolaik

docker run -it --rm --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.28-nikolaik \
  -e LOG_ALL_EVENTS=true \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/.openhands-state:/.openhands-state \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  --name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.28

此命令将创建一个Docker容器并启动OpenHands应用,将本地的workspace目录挂载到容器内的/opt/workspace_base目录,映射容器的3000端口到本地的3000端口。

访问界面:

启动成功后,打开浏览器,访问http://localhost:3000,即可进入OpenHands的Web交互界面。

示例预览

输入提示词请求,让他使用HTML创建一个简单的计算器,点击生成,可以看到右侧出现了相应文件的代码

图片

 

在输入框中让它运行这个项目,可以看到在对话框中输出了链接

图片

 

验证一下这个简单的计算器生成是否正确,这里我使用VsCode打开并运行代码。

图片

 

一个简易的计算器就生成好了,如果不满意就可以回到OpenHands,继续输入要求生成新的代码。

图片

 

开源地址

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

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐