跳转至

OpenHands — 开源 AI 软件工程师

一句话概述

OpenHands(原 OpenDevin)是一个开源的 AI 软件工程师平台,能像真人开发者一样修改代码、运行命令、浏览网页,全部在安全的 Docker 沙盒中运行,相当于给你招了一个"住在容器里的 AI 程序员"。


核心知识点表格

知识点说明
前身OpenDevin(2024年底更名为 OpenHands)
定位开源自主 AI 软件工程师平台
核心代理CodeAct — 能推理、执行代码、观察结果的循环代理
沙盒每个任务在独立 Docker 容器中运行(安全隔离)
性能SWE-Bench Verified 72%(开源框架最高)
开源许可MIT 许可证
GitHub Stars32K+
学术认可ICLR 2025 会议论文
访问方式CLI、本地 GUI、Cloud、SDK(4种方式)

安装与配置

环境要求

  • Docker Desktop(必须)
  • Python 3.12+(推荐)
  • API Key(OpenAI/Anthropic/其他)
  • 内存:建议 16GB+(Docker 需要分配足够内存)

安装步骤

# === 方法一:CLI 安装(最简单) ===
# 安装 openhands
pip install openhands  # 安装 OpenHands 命令行工具

# 配置 API Key
export ANTHROPIC_API_KEY="sk-ant-你的密钥"  # 设置 Claude API Key

# 直接使用
openhands "给这个项目加上单元测试"  # 用自然语言下达任务

# === 方法二:Docker 本地 GUI ===
# 拉取并运行 OpenHands
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.30-nikolaik  # 拉取运行时镜像

docker run -it --rm \
  --pull=always \
  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.30-nikolaik \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/.openhands:/home/openhands/.openhands \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  docker.all-hands.dev/all-hands-ai/openhands:0.30  # 启动 OpenHands 服务

# 打开浏览器访问 http://localhost:3000

# === 方法三:Cloud 版(免费试用) ===
# 访问 https://www.openhands.dev
# 用 GitHub 账号登录
# 免费使用 Minimax 模型

配置模型

在 GUI 中:
1. 点击设置图标
2. 选择 LLM Provider:
   - Anthropic(推荐 Claude Sonnet 4)
   - OpenAI(GPT-4o)
   - 其他 OpenAI 兼容 API
3. 输入 API Key
4. 保存设置

基本使用

CodeAct 代理工作流程

CodeAct 是 OpenHands 的核心代理,它的工作方式:

1. 接收任务 — 你用自然语言描述要做什么
2. 制定计划 — AI 分析需求,规划执行步骤
3. 执行代码 — 在 Docker 沙盒中运行真实命令
4. 观察结果 — 查看命令输出、测试结果
5. 迭代修复 — 如果有错误,自动修改代码并重试
6. 完成交付 — 直到任务完成或需要人工介入

白话比喻:就像一个新人程序员,你给他任务,
他会自己试着做,做错了就改,直到做对为止

实战示例

# 示例1:修复 GitHub Issue
在 GUI 或 CLI 中输入:
"修复 issue #42:用户登录时如果密码包含特殊字符会报错"

OpenHands 会:
1. 读取 issue 描述
2. 分析代码库找到相关代码
3. 编写修复代码
4. 运行测试验证修复
5. 生成 Git 提交

# 示例2:创建新功能
"给这个 Flask 应用加一个文件上传功能,支持 PDF 和图片"

OpenHands 会:
1. 分析项目结构
2. 创建上传路由
3. 添加文件验证逻辑
4. 更新前端页面
5. 写测试
6. 全部在 Docker 沙盒中运行和测试

高级用法

SDK 编程接口

# 用 Python SDK 编程控制 OpenHands
from openhands import Agent  # 导入 Agent 类

# 创建代理实例
agent = Agent(
    model="anthropic/claude-sonnet-4-20250514",  # 指定模型
    api_key="sk-ant-你的密钥"  # API Key
)

# 在代码中运行代理
result = agent.run(
    task="给 utils.py 中的所有函数加上 type hints",  # 任务描述
    workspace="/path/to/project"  # 项目路径
)

print(result.status)  # 查看执行状态
print(result.changes)  # 查看修改了哪些文件

CI/CD 集成 — 自动修复 Issue

# .github/workflows/openhands-autofix.yml
# 当 GitHub Issue 被标记为 "autofix" 时,自动让 AI 修复

name: OpenHands Auto Fix
on:
  issues:
    types: [labeled]

jobs:
  fix:
    if: github.event.label.name == 'autofix'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4  # 检出代码
      - name: Run OpenHands
        run: |
          pip install openhands  # 安装 OpenHands
          openhands --issue ${{ github.event.issue.number }}  # 让 AI 修复这个 Issue
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}

多代理编排

# 使用 SDK 同时运行多个代理
from openhands import Agent  # 导入 Agent

# 代理1:修复 Bug
bug_agent = Agent(model="claude-sonnet-4")  # 创建修 Bug 的代理
bug_agent.run("修复登录模块的空指针异常")  # 运行任务

# 代理2:写测试(同时进行)
test_agent = Agent(model="claude-sonnet-4")  # 创建写测试的代理
test_agent.run("给用户管理模块写集成测试")  # 运行任务

# 可以扩展到上千个代理并行工作

常见报错与解决

报错原因解决方案
"Docker not found"Docker 未安装或未启动安装 Docker Desktop 并启动
"Container failed to start"Docker 内存不足Docker Settings → Resources → 增加内存到 8GB+
"API key invalid"API Key 错误检查并重新设置 API Key
沙盒超时任务执行时间太长增大超时设置或拆分任务
端口占用3000 端口被其他程序占用修改映射端口:-p 3001:3000
代理陷入循环AI 无法解决的问题中断任务,提供更具体的描述

速查表

命令/操作说明
openhands "任务"CLI 模式运行任务
openhands --model gpt-4o指定模型
openhands --issue 42自动修复 GitHub Issue
浏览器 localhost:3000打开 GUI 界面
SDK Agent().run()Python 编程接口

与同类工具对比

对比维度OpenHandsSWE-agentDevin
开源是(MIT)
沙盒隔离Docker 容器Docker 容器云端沙盒
访问方式CLI + GUI + SDK + CloudCLIWeb
SWE-Bench72%(开源最高)74%+类似
价格免费(付 API 费)免费(付 API 费)$500/月
CI/CD 集成支持有限支持
学术背景ICLR 2025 论文NeurIPS 2024 论文商业产品

白话总结:OpenHands 就是一个"开源版的 Devin"——它能像真人程序员一样写代码、跑命令、测试,但全部在 Docker 容器里安全执行。最大优势是完全开源免费,你可以自己部署,代码不会泄露。性能在开源框架中排第一。适合想要 AI 帮忙自动修 Bug、写代码、做 CI/CD 自动化的团队。