OpenHands:9.2 万 star 的自主编码代理,在沙箱里自己写一晚上代码
给它一个 GitHub issue,它自己开容器、读代码、改代码、跑测试、提 PR。DeepSeek 能当它的脑子,但执行能力越强,越要管住。
前面几篇的智能体都在你的编辑器里工作。OpenHands(原 OpenDevin)换了个思路:它在一个独立容器里干活。
你给它一个任务,它开一个沙箱、把仓库拉进去、读代码、改、跑测试、反复直到完成。你可以像看直播一样看它操作。
9.2 万 star,地址:
https://github.com/All-Hands-AI/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 \
-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.30
(版本号会变,以官方 README 为准。)
打开 http://NAS地址:3000。
注意那个 -v /var/run/docker.sock:它让容器能在你的机器上开新容器。方便,但等于给了它很大的权限。只在自己信任的环境里跑。
接 DeepSeek
进设置 → LLM:
| 字段 | 填什么 |
|---|---|
| Provider | OpenAI 兼容 / Custom |
| Base URL | https://api.deepseek.com/v1 |
| API Key | sk-... |
| Model | deepseek-chat |
保存后在首页选这个模型,然后给任务。
它怎么干活
给一个任务,比如:
修复 issue #42:用户上传超过 10 MB 的文件时,接口返回 500
它的循环是:
- 浏览仓库结构,读相关文件
- 猜测原因(可能是 nginx 限制、可能是代码里没校验)
- 改代码
- 跑测试
- 失败就回到 2
你能在界面里看到每一步的终端输出、文件修改、浏览器操作。
三个实际用途
修 GitHub issue:把 issue 内容粘进去,让它自己找原因。
写测试:给它一个模块,让它补测试并跑通。验证标准明确,成功率高。
跑通别人的项目:clone 下来,“帮我把这个项目在本机跑起来”,它会读 README、装依赖、改配置。
成本与风险
成本:这种循环可能跑几十轮,每轮都发上下文。DeepSeek 便宜,但一晚上也可能几块钱到几十块。设一个轮次上限(它的设置里有 max iterations)。
风险:它在沙箱里跑,但沙箱挂的是你的 docker socket,能起容器、能挂载目录。别在有重要数据的机器上不设防地跑。
质量:DeepSeek 在这个任务上的表现不如 Claude。简单的修 bug 能成,复杂重构容易绕圈。
会踩的坑
启动后 3000 打不开
镜像很大(几个 G),第一次拉很久。看 docker logs。
它一直卡在装依赖 沙箱网络受限。给它配代理,或者提前把依赖装进基础镜像。
任务描述太模糊 “优化这个项目"一定失败。“修 issue #42"成功率就高。给它可验证的目标。
跑了一晚上没结果 设 max iterations,比如 30 轮。到点停,你来看它卡在哪。
Windows 上 docker.sock 挂不上 在 WSL2 里跑,或者用它的云端版。
它适合谁
- 有明确 issue、希望它自己修的;
- 想看看"自主编程代理"到底能做到什么程度的;
- 机器配置可以(8 GB 以上),且能接受沙箱权限的。
不适合:生产环境服务器(权限太大);期待它替代程序员的。
最后
OpenHands 代表的是这条路的最远端:人只给目标,过程全自动。
现在还远没到能放心用的程度。但它的形态已经很清楚——你会看到越来越多的"AI 在容器里干活,人只负责验收”。
先在小仓库上试,别一上来就给核心项目。
有问题留言。
留言