OpenHands(原名 OpenDevin)是一款开源的「自主软件工程师」平台:它不是给你做行级补全的助手,而是把一个完整任务(修一个 GitHub issue、搭一个全栈项目)交给它,由它自主完成规划、读代码、改文件、运行命令、看日志、迭代验证,甚至打开浏览器操作页面确认结果。核心架构是「事件驱动 + 沙箱运行时」:Agent 的每一个动作都记录为可审计的事件流,代码在 Docker 容器或 microVM 沙箱中执行,不直接接触宿主机。它支持 Claude、GPT、Gemini、DeepSeek、Qwen 等 100+ 模型接入,可通过 Docker、pip 自托管,或用官方云服务免运维。本篇按「工具速览 → 安装配置 → 快速上手 → 核心能力 → 生产部署 → 选型对比 → 误区与面试题」展开,读完即可把 OpenHands 跑起来并接入研发流程。

岗位关联

掌握 OpenHands,等于掌握一套可自托管的「AI 工程师」基础设施,能独立搭建自动修 bug、提 PR 的研发自动化流水线——这是 AI 工程化岗位的高价值技能。

目录
  1. 为什么需要 OpenHands:从「代码助手」到「自主代理」
  2. 安装与环境配置:3 步就绪
  3. 快速上手:10 分钟跑通第一个自主任务
  4. 核心能力详解:四大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
开源自主软件工程师(AI 编程 Agent 平台)
开发商
All Hands AI(美国·旧金山)
开源协议
MIT(可商用,企业版另售)
GitHub Stars
无
主要语言
Python(前端 TypeScript/React)
当前版本
0.24.0(2025-05 发布,官方仍高频迭代)
安装方式
Docker / pip install openhands-ai
下载地址
官方文档
上手难度
★★★☆☆(需 Docker 与模型 API Key)
适合人群
AI 工程师、研发效能团队、开源维护者
同类工具
Devin · Cline · Aider
托管服务
无

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 OpenHands:从「代码助手」到「自主代理」

传统 AI 编程工具的形态是「补全 + 对话」:Copilot 补全下一行,Cursor 改选中片段,每一处改动都要人逐行确认,测试要人跑、日志要人看、PR 要人手写。遇到跨文件的缺陷修复或新功能开发,往往要来回几十轮对话,上下文一长效果就明显衰减,最终「人肉搬砖」的比例仍然很高。

OpenHands 换了一种分工:把任务整体交给 Agent。它会在沙箱内自主完成「读代码 → 定位根因 → 修改文件 → 执行命令复现 → 观察输出 → 再修改」的闭环,直到自测通过。人可以只做两件事:开始时给清晰的任务描述,结束后审查改动。这种模式天然适合批量、无人值守的工程任务,比如仓库积压 issue 的自动修复。

与 Cline、Aider 这类「IDE 内助手」不同,OpenHands 的气质是独立 worker:它运行在隔离沙箱里,通过网页 UI、CLI 或 GitHub Action 与之交互,行为全程可审计、可续跑,定位上更接近 Devin 的开源自托管版本——你把「员工」而不是「插件」招进来。

安装与环境配置:3 步就绪

第一步:准备 Docker。 OpenHands 的沙箱运行时依赖 Docker 拉起隔离容器。Linux 装 Docker Engine,macOS/Windows 装 Docker Desktop,启动后确认 docker info 正常。

第二步:选择启动方式。 方式 A(推荐,完整 UI):拉取官方镜像并运行,注意 UI 镜像与沙箱运行时镜像的版本 tag 必须一致。方式 B:pip install openhands-ai 安装主程序,适合 CLI 调用与二次开发,执行代码仍需沙箱(本地默认走 Docker runtime,也可改用远程运行时)。

第三步:配置 LLM 并验证。 三种配置方式任选其一:① 打开 UI 后到 Settings 填写 LLM Provider、API Key 与模型名;② 设置环境变量 LLM_API_KEY、LLM_MODEL;③ 写配置文件 ~/.openhands/config.toml。验证方式:打开 http://localhost:3000,新建会话让 Agent 执行一个最小任务(如“创建一个打印当前日期的 Python 脚本并运行”),观察事件流中读文件、写文件、执行命令的完整记录。

bash13 行
# 方式 A:Docker 启动完整 UI(版本号需与 runtime 对齐)docker pull ghcr.io/all-hands-ai/openhands:0.24.0docker run -it --rm \  -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.24.0 \  -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 \  ghcr.io/all-hands-ai/openhands:0.24.0 # 方式 B:pip 安装主程序(CLI / 二次开发)python -m pip install openhands-ai

快速上手:10 分钟跑通第一个自主任务

最小可用流程的思路:不需要任何项目脚手架,直接给 Agent 一个「带验收标准」的任务,让它自己完成从写代码到跑测试的闭环。

1. 启动容器后访问 http://localhost:3000,首次使用在 Settings 中填入模型服务商、API Key 与模型名(如 Claude 系列,国内可选 DeepSeek/Qwen)。

2. 点击「新会话」(New Session),在输入框粘贴任务,例如:「创建一个 Python 项目:写一个斐波那契函数,配套 pytest 测试,然后运行 pytest 直到全部通过」。

3. 选择运行模式:默认非交互模式(Agent 直接开干);规划模式(先输出执行计划,你确认后再动手,适合复杂任务)。

4. 点击启动,右侧事件流会实时显示 Agent 的每个动作:读取文件、写入文件、执行 bash、查看输出;过程中可随时暂停并追加指令。

5. 任务结束后,审查文件改动与测试结果;不满意可继续对话要求修改,全部改动都发生在沙箱工作区内。

UI 之外,OpenHands 提供 CLI 非交互模式,适合无人值守与 CI 集成:把任务写进文本文件,用环境变量注入模型凭据后运行,Agent 执行完自动退出,事件流落盘到 ~/.openhands-state。

bash10 行
cat > task.txt <<'EOF'修复 tests/test_utils.py 中的失败用例:1. 运行 pytest 复现失败;2. 定位根因并修改 src/utils.py;3. 重跑 pytest 直到全部通过;4. 输出修改说明。EOF LLM_API_KEY="你的Key" LLM_MODEL="claude-sonnet-4-20250514" \  python -m openhands.core.main -f task.txt

核心能力详解:四大支柱

支柱一:自主 Agent 循环与事件流架构。 OpenHands 的 Agent 基于「规划 → 行动 → 观察」循环:每执行一步(改文件、跑命令、开网页)都会产生一条事件,全部事件按时间序持久化。这意味着任务可以被中途接管、断点续跑,也可以回放审计——企业落地时,这比「黑盒 Agent」多一道可追责的安全网。

支柱二:沙箱运行时(Runtime)。 Agent 的代码执行被限制在独立容器(本地 Docker)或 microVM(云上)里,网络、文件系统、进程都受控;官方还提供了 Chrome 扩展,让 Agent 在真实浏览器页面中操作。沙箱支持自定义基础镜像——需要特定 SDK、依赖或内网证书的团队可以预置进去。注意:UI 容器需要挂载 /var/run/docker.sock 才能拉起沙箱容器。

支柱三:多模型接入与工具集。 通过 LiteLLM 兼容层接入 100+ 模型服务商,含 OpenAI 兼容端点与本地 Ollama;内置 30+ 工具(文件编辑、bash 终端、网页访问、Git 操作、MCP 工具等),可按需启用或禁用。同一任务换不同模型,效果差异可能很大,建议用自有小任务集做对比。

支柱四:microagents 与 Resolver 自动化闭环。 microagents 是以 Markdown 写的「技能/角色」文件(如公司代码风格、发布流程、特定框架规范),会自动注入系统提示词,让 Agent 按团队规则行事。Resolver 则是 GitHub Action 形态的自动化修复器:把 issue 自动转成修复 PR,支持配置模型、并发数与触发规则,官方团队在 OpenHands 仓库自身用它解决 issue。

生产部署与监控:从上线到运维

单机 Docker Compose 上线(内网/边缘场景)。 生产环境不要用 docker run -it --rm 这种临时方式,改用 Compose 固定重启策略、资源上限和日志滚动;把 ~/.openhands-state 挂到持久盘,否则会话与事件流会随容器销毁丢失;工作区目录单独挂载并做备份。

云上托管与多机部署。 官方仓库 cloud/ 目录提供 AWS(CloudFormation)、Azure、GCP 的一键部署模板,适合把 OpenHands 作为团队服务架在反向代理/负载均衡后面,用 HTTPS 暴露;多用户、合规要求高的场景建议采购企业版(SSO、审计事件、团队空间),或直接用 OpenHands Cloud 托管版免运维。无论哪种方式,模型 API Key 一律走环境变量或密钥管理服务,禁止写进镜像。

可观测性。 在 ~/.openhands-state 做三件事:① 开启 LOG_ALL_EVENTS=true 让每个事件落盘,作为审计与排障依据;② 定期备份会话目录,升级前必须先备份;③ 用 docker stats 或云监控盯容器资源,沙箱 OOM 会被 kill,通过日志区分「任务失败」与「运行环境故障」。token 消耗只能在模型提供商控制台按 Key 维度观测,建议在生产 Key 上设置预算告警——一个长任务烧掉上百美元并非罕见。

<p class="para-label">避坑清单:</p>

<ul class="dash-list"><li>版本不匹配:UI 镜像、沙箱运行时镜像、pip 包三者版本必须对齐,混用会导致事件流协议不兼容、任务启动即报错;升级时三件套同步换。</li><li>忘记模型费用自担:开源版不自带模型,需要自己的 API Key,token 按量计费,务必在提供商侧设预算与用量告警。</li><li>Docker socket 缺失或权限不足:UI 容器必须挂载 /var/run/docker.sock 才能创建沙箱;Windows/macOS 还需检查 Docker Desktop 的磁盘挂载权限。</li><li>国内网络:拉取 ghcr.io 与 docker.all-hands.dev 镜像、访问海外模型 API 都可能超时,建议配置镜像加速器与 HTTPS_PROXY 代理环境变量。</li><li>自主模式不等于无人看守:Agent 行为不可 100% 预期,生产仓库务必用独立分支 + PR 审查 + 沙箱资源限制,不要直接把写权限交给 Agent。</li></ul>

维度OpenHandsDevinClineAider
定位开源自主软件工程师平台闭源商业自主工程师 SaaSIDE 内编码代理(VSCode 插件)终端结对编程 CLI
编排范式全自主循环 + 规划模式双模全自主云端并行任务人机协作,改动经用户确认交互式对话,补丁自动应用
类型约束无强制约束,行动自由无强制约束逐文件审批(可配置自动)Git 可回滚,默认直接改盘
学习曲线中等(需懂 Docker 与模型配置)低(SaaS 开箱即用)低(IDE 内安装即用)低-中(需命令行习惯)
生态集成100+ 模型、Docker、GitHub Action、MCP内置浏览器/终端,闭源生态VSCode/Cursor 插件、MCPGit 原生,无需常驻服务
生产部署自托管 Docker/云模板(AWS/Azure/GCP)仅 SaaS,不可自托管本地编辑器扩展本地 CLI/CI 脚本
LicenseMIT商业闭源Apache 2.0Apache 2.0
适合谁需要自托管 agent 的团队与研究者预算充足、不想运维的工程团队VS Code 重度用户命令行流开发者

选型建议:OpenHands 是四者中唯一把「自托管 + 全自主 + 全程可审计」结合的开源方案,适合要建研发自动化流水线的团队;预算充足、不想碰运维的团队直接用 Devin;只在编辑器里提速选 Cline;追求最轻量 CLI 流选 Aider。按「代码能否出内网、是否要无人值守、愿不愿意维护 Docker」三条标准即可决策。

版本迭代

OpenHands 源自 2024 年的 OpenDevin 项目,主线是从「可用的自主 Agent 原型」走向「产品化平台」:早期打磨事件流与会话架构,2024-12 更名并统一包名,2025 年起加速平台化——重构运行时、引入 microagents、推出企业能力与全新 UI,并围绕 Resolver 构建 issue 自动修复闭环。(截至训练数据,可能已有更新版本)

版本时间变化提升
v0.9.02024-10事件流与会话架构确立 event stream 架构与持久化会话,Agent 可在 UI 中逐步执行与回溯
v0.13.12024-12项目更名 OpenHands因与商业产品 Devin 名称冲突,OpenDevin 更名 OpenHands,PyPI 包名转为 openhands-ai
v0.16.02025-01Runtime 架构重构统一 Runtime 接口,支持 Docker 与 microVM 两类沙箱后端,提升隔离与部署灵活性
v0.19.02025-03微代理与自动化闭环引入 microagents(SKILL/PERSONA 自动注入提示词),Resolver 能力增强,企业版追加 SSO 与审计
v0.24.02025-05全新首页与会话体系新首页、收件箱与共享会话上线,形态从「单机工具」转向「AI 协作工作台」
结论

OpenHands 未参与 MMLU 这类通用大模型榜单,效果以 SWE-bench 类真实工程任务与自建验收任务为准;同一任务换模型、换版本差异显著。选型时应以「隔离沙箱 + 可审计事件流 + 自托管能力」为评估重点:先跑通小任务验证模型适配,再逐步放大到 Resolver 自动化流程。

AI 应用场景

开源仓库 issue 自动修复(研发自动化流水线)

阶段:自主编码 / 自动化修复 / CI 集成

解决的问题:维护者人力有限,积压 issue 多,每条「triage → 定位 → 修复 → 提 PR」人工耗时 1-3 小时。OpenHands Resolver 把 issue 自动转成修复任务,在隔离沙箱中复现、定位、生成补丁并提交 PR。

具体案例:官方团队在 OpenHands 仓库自身使用 Resolver 处理 bug 类 issue,自动生成的修复 PR 经 maintainer 审查后合入;Resolver 支持按 label、模型、并发数配置,在 GitHub Actions 中定时或按需触发,把「提单 → 修复 → 开 PR」流程从小时级压缩到分钟级,且全程留痕可回滚。

从需求到全栈项目脚手架

阶段:文档智能 / 智能编程 / 需求实现

解决的问题:从零搭建「前端 + 后端 + Dockerfile + 测试」的项目,人工要数小时且容易漏配。让 Agent 在沙箱中直接生成并运行验证,比对话式助手更接近可用交付。

具体案例:给 Agent 一段自然语言需求(如「搭建 FastAPI + React 待办应用,带 pytest 测试与 Dockerfile」),OpenHands 自动完成建目录、写代码、启动服务自测、输出运行说明;测试失败会自动读日志、改代码、重试,直到验收标准通过。

企业内网的私有代码自动化

阶段:私有化部署 / 代码安全

解决的问题:代码不允许出内网,商业 agent 无法接入;OpenHands 是 MIT 开源、可完全自托管,事件流与代码数据留在自有基础设施。

具体案例:在 AWS/Azure 上用官方部署模板拉起 OpenHands,连接内网 GitLab 与私有模型网关(Ollama 或私有化部署模型),对授权仓库批量执行依赖升级、安全补丁类任务;所有会话事件记录归档,满足合规审计要求。

常见误区

误区装上 OpenHands 就像用 Copilot 一样,写代码时给我行级补全和划词解释。

正解OpenHands 是自主 Agent,典型用法是给它一个完整任务(修 issue、搭项目),它端到端跑完「规划 → 编码 → 执行 → 验证」循环。对话主要发生在任务开始前的需求澄清和结束后的结果审查,不适合当行级补全工具用。

为何常见:市面主流 AI 编程工具都是补全/对话形态,「自主执行、自己跑命令看输出」的模式要实际跑一次任务才能建立认知。

误区既然是开源免费软件,应该自带了模型,装好就能直接用。

正解OpenHands 本体 MIT 免费,但模型推理费用完全自理——需要你自己的 LLM API Key(Claude、GPT、DeepSeek 等),长任务 token 消耗可能很大,必须自己监控账单并设告警。

为何常见:「开源 = 免费」容易让人忽略大模型推理是云服务按量计费;官方 Cloud 托管版也是独立收费产品。

误区`pip install openhands-ai` 装完就能在本地跑全部功能,不需要 Docker。

正解pip 只装主程序,Agent 执行代码必须经过沙箱运行时。本地默认依赖 Docker 拉起沙箱容器;彻底不用 Docker 只能改用远程运行时(Cloud/microVM)方案。

为何常见:普通 Python 包「装完即用」的体验让人误以为 openhands-ai 也是全包含,忽略了其隔离执行架构的设计。

误区把复杂任务丢给自主模式,睡一觉回来代码就能合入。

正解Agent 仍会理解偏差、写出有缺陷的补丁,甚至执行破坏性命令;生产落地必须配独立分支、PR 审查、沙箱资源限制与权限收敛,人工 review 环节不能省。

为何常见:官方 demo 展示的是理想链路,真实代码库的边界情况(历史包袱、隐式依赖、权限模型)需要人工把关。

误区主程序用最新版,运行时镜像随手配个 tag 也能跑。

正解openhands-ai 包、UI 镜像、运行时镜像三者的版本必须匹配,混搭会导致事件流协议不兼容、任务启动即报错;升级时三件套要同步换,而不是只更新 UI 镜像。

为何常见:镜像 tag 繁多,用户习惯性拉 latest/最新版,忽略了 OpenHands 组件间版本强耦合的设计。

面试题

Q1. OpenHands 更名之前叫什么名字?

单选题 · easy

  • A.OpenDevin← 正确答案
  • B.AllHands
  • C.DevinOS
  • D.AgentCoder

答案:A。OpenHands 原名 OpenDevin,2024 年 12 月(v0.13 起)因与商业产品 Devin 名称冲突而更名;All Hands AI 是背后的公司名,不是产品名。

Q2. 运行 OpenHands 完整 UI 最稳妥的方式是哪一种?

单选题 · easy

  • A.通过 Docker 启动 UI 容器和沙箱运行时← 正确答案
  • B.直接双击源码包中的 HTML 文件打开
  • C.用 npm 启动前端然后单独连数据库
  • D.依赖手机浏览器访问第三方聚合站

答案:A。官方推荐 Docker 方式:UI 容器挂载 Docker socket 与 ~/.openhands-state,再通过 SANDBOX_RUNTIME_CONTAINER_IMAGE 指定沙箱运行时镜像。其余方式要么不完整,要么非官方支持。

Q3. OpenHands 的沙箱运行时(Runtime)主要用途是什么?

单选题 · easy

  • A.隔离 Agent 执行的代码命令以保护宿主机← 正确答案
  • B.通过并行推理提升大模型的生成速度
  • C.集中保存用户的 API 密钥与敏感口令
  • D.负责渲染 Web 界面中的图表组件

答案:A。沙箱运行时把 Agent 的文件操作、bash 命令、浏览器行为隔离在 Docker 容器或 microVM 内,防止破坏宿主机,是 OpenHands 安全模型的基石。密钥管理、推理加速、UI 渲染都不是其职责。

Q4. OpenHands 官方 Docker 镜像默认将 Web UI 暴露在哪个端口?

单选题 · mid

  • A.8000(常见调试服务默认端口)
  • B.3000(OpenHands UI 默认端口)← 正确答案
  • C.8080(部分 Web 容器约定端口)
  • D.5000(Flask 开发的经典端口)

答案:B。官方 docker run 命令使用 -p 3000:3000,容器内 UI 服务监听 3000 端口。若端口被占用需改宿主机侧映射,但容器内端口保持不变。

Q5. 以下哪些方式可以为 OpenHands 配置 LLM 凭据?

多选题 · mid

  • A.在界面 Settings 中填写 API Key← 正确答案
  • B.注入环境变量 LLM_API_KEY← 正确答案
  • C.在 ~/.openhands/config.toml 中设置← 正确答案
  • D.修改 Docker 镜像 tag 后缀

答案:ABC。OpenHands 支持三种主流配置途径:UI Settings、环境变量(LLM_API_KEY/LLM_MODEL)、config.toml 配置文件,环境变量优先。镜像 tag 只决定版本,与模型凭据无关。

Q6. OpenHands 支持接入哪些模型与服务?

多选题 · mid

  • A.Anthropic Claude 与 OpenAI GPT 系← 正确答案
  • B.Gemini、DeepSeek、Qwen 等 100+ 服务商← 正确答案
  • C.本地 Ollama 部署的开源权重模型← 正确答案
  • D.仅限官方私有不公开模型列表

答案:ABC。OpenHands 通过 LiteLLM 兼容层接入 100+ 模型提供商,包括主流闭源模型、OpenAI 兼容端点与本地 Ollama;不存在「官方私有模型」一说,模型能力完全取决于你接入的提供商。

Q7. OpenHands 中 microagents(微代理)的作用是什么?

单选题 · mid

  • A.以技能/角色 Markdown 注入 Prompt 沉淀团队规范← 正确答案
  • B.负责管理 Docker 容器的轻量级插件程序
  • C.用于数据存储与检索的微型数据库组件
  • D.自动抓取网页并解析内容的爬虫模块

答案:A。microagents 是 Markdown 格式的 SKILL(技能)与 PERSONA(角色)文件,自动注入 Agent 的系统提示词,让团队把代码风格、发布流程等规范沉淀为 Agent 可执行的规则。它不承担容器管理、数据存储或爬虫职责。

Q8. pip 装的 openhands-ai 主程序与沙箱运行时镜像版本不一致,最可能发生什么?

单选题 · hard

  • A.主程序与运行时协议不兼容,任务启动即报错← 正确答案
  • B.完全不影响,两个组件版本彼此独立
  • C.仅导致界面样式出现细微的视觉差异
  • D.模型输出会自动降级并发出警告提醒

答案:A。OpenHands 主程序与运行时通过版本化的事件流协议通信,版本错配会触发协议不兼容,典型表现是任务初始化失败或运行中断。升级必须三件套(pip 包、UI 镜像、runtime 镜像)同步对齐。

Q9. 关于 OpenHands Resolver(GitHub Action)的功能,下列说法正确的有?

多选题 · hard

  • A.可为 issue 自动生成修复代码并提交 PR← 正确答案
  • B.支持配置模型、并发数与触发规则← 正确答案
  • C.依赖 GitHub Token,需按最小权限授权← 正确答案
  • D.只能在本地终端以交互方式手动运行

答案:ABC。Resolver 正是为自动化而生:把 issue 转为修复任务、在沙箱中生成补丁并提交 PR,可在 GitHub Actions 中定时/按需/按 label 触发,需配置最小权限的 GitHub Token。它是 CI 形态,不需要本地交互终端。

Q10. 生产环境长期运行 OpenHands,以下哪项做法是必须的?

单选题 · extreme

  • A.持久化 ~/.openhands-state 并开启 LOG_ALL_EVENTS← 正确答案
  • B.移除 Docker socket 并关闭模型用量告警
  • C.固定使用与运行时版本错配的本地自建镜像
  • D.跳过沙箱直接以 root 运行在宿主机上

答案:A。事件流落盘(LOG_ALL_EVENTS)与会话目录持久化是生产环境的审计、续跑与排障基础;同时应保留 Docker socket(沙箱依赖)、开启模型用量告警、保持版本对齐并坚持沙箱隔离,其余三项均违反这些生产原则。

参考来源