本地大模型实践(四):OpenHands——AI 全栈软件工程师的理想与现实

2024 年,一个叫 Devin 的 AI 工具横空出世,宣称自己是“第一个 AI 软件工程师”,能自主完成从需求到部署的全流程。后来演示被发现有水分,社区称之为“Devin 的谎言”。但 Devin 点燃了一个方向——AI 不只是辅助写代码,而是能自主完成整个软件工程流程。OpenHands 就是这个方向的开源实现,76.5k GitHub Star。但它的现实落地情况,和理想之间还有不小的距离。

一、从 Devin 的演示说起

2024 年 3 月,Cognition AI 发布了 Devin 的演示视频:一个 AI Agent 自主分析了 Upwork 上的开发需求、写了代码、跑了测试、提交了 Pull Request。技术圈炸了——“AI 软件工程师”这个概念第一次以可感知的形式出现在大众面前。

后来社区发现,Devin 的演示存在水分。部分场景是精心编排的,实际能力达不到演示效果。但 Devin 确实推动了一件事:让“AI Agent 自主完成软件工程”从一个理论概念变成了一个可讨论的工程方向。

OpenHands 最初叫 OpenDevin,顾名思义——Devin 的开源版本。它的目标就是在开源的约束下,做出 Devin 承诺的能力。

二、OpenHands 是什么

OpenHands 是一个 AI 驱动的软件工程平台,由 Python 和 TypeScript 混合开发,MIT 开源(企业版源码开放但商用需授权)。截至 2026 年 6 月,最新版本为 v1.8.0。

核心定位:让 AI Agent 能像人类软件工程师一样工作——不只写代码,而是理解任务、自主规划、执行操作、验证结果、迭代修复。

它提供的使用形态是这四篇文章里最丰富的:

SDK:可编程的 Python 库。你可以写脚本来驱动 Agent,自定义 Agent 行为,扩展到数千个并发执行。这是 OpenHands 区别于 OpenCode 和 Cline 的关键——它的定位不只是“工具”,而是“平台”。

CLI:命令行工具,轻量使用。体验类似 Claude Code 或 Codex CLI,适合快速任务。

本地 GUI:React 单页应用 + REST API,浏览器里打开使用。体验类似 Devin、Jules 这类商业产品——在浏览器里给 Agent 分配任务,看它一步步执行。

Cloud 版:托管版,支持 GitHub / GitLab 登录,免费试用。适合不想自己部署的个人用户。

企业版:支持私有 VPC 部署,有 RBAC 权限管理、多用户支持、SSO 集成。源码开放但商用需要授权——这一点和纯 MIT 的 OpenCode 不同,需要注意。

三、动手:Docker 部署

一条命令跑起来(需要 Docker):

docker run -it --rm --pull=always \
  -e LOG_ALL_EVENTS=true \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v ~/.openhands:/.openhands \
  -p 3000:3000 \
  --add-host host.docker.internal:host-gateway \
  --name openhands-app \
  docker.openhands.dev/openhands/openhands:1.8

浏览器打开 http://localhost:3000,在设置里配好模型。如果接第一篇文章里的本地 vLLM,Base URL 填 http://host.docker.internal:8000/v1,Model 填你部署的模型名。

第一个任务:在界面里创建一个新会话,输入:

在当前目录创建一个 Python Flask Hello World 应用,
包含单元测试,并写一个 README 说明如何运行。

OpenHands 会在 Docker 沙盒里创建文件、写代码、跑测试,完成后把结果展示给你。

四、核心能力

自主执行环。OpenHands 的核心是一个“感知 → 思考 → 行动 → 验证”的循环。你给它一个任务,它在 Docker 沙盒里执行完整的软件开发流程:

任务: "把这个项目的单元测试覆盖率从 45% 提到 80%"

Agent 内部循环:
1. 分析项目结构,识别未覆盖的模块
2. 为每个模块生成测试用例
3. 执行测试,检查覆盖率
4. 发现 3 个测试失败 → 分析原因 → 修改代码
5. 再次运行,覆盖率 78% → 不够 → 补充边界测试
6. 覆盖率 83% → 达标 → 提交 PR

整个过程没有人参与。Agent 在沙盒里自己折腾,折腾完了告诉你结果。

SWE-bench 评测。SWE-bench 是在真实 GitHub Issue 和 PR 上测试 AI 编程能力的基准测试。搭配 Claude 4.5 Sonnet,OpenHands 的解决率达到了 53%+,接近 Devin 早期宣称的水平。

规划 + 执行分离。v1.6.0 版本加入了规划模式,Agent 先分析任务、给出执行计划,人确认后再动手。这个模式和 Cline 的 Plan/Act 类似,但 OpenHands 的规划是在沙盒环境下进行的——Agent 会先探索代码结构、读取相关文件,再出计划。

沙盒隔离。所有代码执行都在独立 Docker 容器内,支持网络隔离、命令白名单、文件访问控制。Agent 再能折腾,也不会影响宿主机环境。

五、现实局限

说了这么多能力,必须也说实话——OpenHands 目前还处于探索期,离“生产级可用”有距离。

官方自己说的:不适合多租户部署。 OpenHands 的官方文档明确表示,目前版本设计给单个用户在本地工作站使用,没有内置身份认证系统,不适合多用户共享环境。这意味着你想把它部署为团队共享的“AI 开发平台”——目前还做不到。

前端/UI 能力不足。 AI 写前端代码时,无法实时看到页面渲染效果。它写了 HTML/CSS/JS,但没有像 Cline 那样的无头浏览器截图能力来验证——它只能“看代码写得对不对”,不能“看页面显示对不对”。

做不到完全自主。 规划模式需要人确认,实际操作中每一步都可能遇到需要人介入的情况。SWE-bench 53% 的解决率意味着仍然有将近一半的真实世界任务它搞不定。

部署成本不低。 需要自行维护 Docker 环境、配置 API Key、做安全加固。没有运维基础的团队直接拉不起来。

总结一下:OpenHands 的思想很先进,但目前的落地状态是——个人探索或开源项目自动化可以,嵌入企业 DevOps 流水线还为时过早。

六、客观对比

维度 OpenHands OpenCode Cline
定位 自主软件工程平台 终端 AI 编程助手 IDE 编程 Agent
Star 数 76.5k 17.3 万 63.1k
形态 SDK/CLI/GUI/企业版 CLI/TUI/桌面/Web/无头 VS Code/JetBrains/CLI/SDK
自主程度 高(完全自主执行环) 中(Plan/Build 模式) 中(Plan/Act 双模式)
安全隔离 Docker 沙盒 权限配置 审批门控
LSP 集成 原生(约 40 种语言)
多租户 官方不建议 客户端-服务端架构 SDK 可定制
开源协议 MIT(企业版需授权) MIT Apache 2.0
成熟度 探索期 年轻但可用 较成熟

七、为什么还要关注它?

你可能会问:既然这么多局限,为什么还要写它?

因为它指出的方向是对的:AI Agent 从“辅助”走向“自主”,这个趋势不会变。 现在做不好不等于永远做不好。OpenHands 的架构设计——沙盒隔离、规划执行分离、SDK 可编程——这些都是在为“AI 自主完成软件工程”这个目标铺路。

作为开发者,目前可以做的事情是:

  • 个人项目自动化:让 OpenHands 帮你加测试、改 Bug、更新依赖。即使不能百分之百自主,也能省不少时间。
  • 开源项目维护:Issue 里那些“把这段代码重构一下”的任务,丢给 OpenHands 去折腾,折腾完了审查结果。
  • 学习 Agent 架构:如果你想理解 AI Agent 是怎么设计的,OpenHands 的代码是一个很好的学习对象——它把“感知→规划→执行→验证”这些概念都落地成了可运行的代码。

八、小结

OpenHands 的理想是“AI 全栈软件工程师”,现实是“还在探索期”。这不是贬低它——每一代工具都是先有理想后有现实。Devin 的演示虽然掺水,但它开启了一个方向的讨论;OpenHands 虽然不完美,但它把这个方向变成了开源代码。

三篇聊下来——OpenCode 是终端里的编程助手,Cline 是 IDE 里的编程 Agent,OpenHands 是沙盒里的自主工程师——三个工具覆盖了从“辅助编程”到“自主执行”的光谱。

但它们有一个共同的痛点:都是“一次性”的。 每次新会话都要重新介绍项目背景,重新教它你的偏好和工作方式。它们记不住你。

AI Agent 的记忆系统,才是决定它能不能长期陪伴你的关键。下一篇,我们来聊一个在“记忆”这个维度上做得很极致的项目——OpenClaw。

每天前进一小步,就是一个新的高度!