OpenHands — 开源 AI 软件工程师
一句话概述
OpenHands(原 OpenDevin)是一个开源的 AI 软件工程师平台,能像真人开发者一样修改代码、运行命令、浏览网页,全部在安全的 Docker 沙盒中运行,相当于给你招了一个"住在容器里的 AI 程序员"。
核心知识点表格
| 知识点 | 说明 |
|---|
| 前身 | OpenDevin(2024年底更名为 OpenHands) |
| 定位 | 开源自主 AI 软件工程师平台 |
| 核心代理 | CodeAct — 能推理、执行代码、观察结果的循环代理 |
| 沙盒 | 每个任务在独立 Docker 容器中运行(安全隔离) |
| 性能 | SWE-Bench Verified 72%(开源框架最高) |
| 开源许可 | MIT 许可证 |
| GitHub Stars | 32K+ |
| 学术认可 | 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 编程接口 |
与同类工具对比
| 对比维度 | OpenHands | SWE-agent | Devin |
|---|
| 开源 | 是(MIT) | 是 | 否 |
| 沙盒隔离 | Docker 容器 | Docker 容器 | 云端沙盒 |
| 访问方式 | CLI + GUI + SDK + Cloud | CLI | Web |
| SWE-Bench | 72%(开源最高) | 74%+ | 类似 |
| 价格 | 免费(付 API 费) | 免费(付 API 费) | $500/月 |
| CI/CD 集成 | 支持 | 有限 | 支持 |
| 学术背景 | ICLR 2025 论文 | NeurIPS 2024 论文 | 商业产品 |
白话总结:OpenHands 就是一个"开源版的 Devin"——它能像真人程序员一样写代码、跑命令、测试,但全部在 Docker 容器里安全执行。最大优势是完全开源免费,你可以自己部署,代码不会泄露。性能在开源框架中排第一。适合想要 AI 帮忙自动修 Bug、写代码、做 CI/CD 自动化的团队。