跳至正文

解决方案 · 编程代理

适用于 OpenHands 的 VPS

OpenHands 是一个自主编程代理:给它一个仓库和一项任务,它会自行编辑、运行、测试并提交拉取请求,背后是您通过 API 密钥选用的模型。其 README 称,最强大的运行方式是在云端服务器上运行;其警告也指出,代理对其所在机器拥有完全访问权限。两者指向同一个答案:一台不是任何人笔记本电脑的机器。项目的服务器指南认为 2 vCPU 和 4 GB 足够单用户使用;BD-8 每月 $12.90,配置翻倍,价格却低于其他 4 GB 机型。

运行要求

软件来自官方文档,规格注明来源

软件及安全配置均来自项目自己的文档。若项目未公布硬件要求,规格会注明出自谁的建议。

来自 OpenHands 的 README、SELF_HOSTING.md 和文档

  • “2 vCPU / 4 GB RAM 足够单个用户使用”(该项目的虚拟机指南)。文档要求“现代处理器,内存至少 4GB RAM”。
  • 安装:Node.js 24 或更高版本以及 uv,然后执行 npx @openhands/agent-canvas --public。一条命令即可启动代理服务器、自动化后端和 Web 应用,它们位于 127.0.0.1:8000 上的入口之后。
  • 首次启动前设置 LOCAL_BACKEND_API_KEY:在公开模式下,每个 API 调用都必须携带它,Web 应用也会首先要求输入它。先用防火墙屏蔽 SSH 以外的所有端口;指南要求在代理首次运行前完成这一步。
  • 模型提供商的 API 密钥:文档说明大多数模型都需要。Docker 是可选的,仅当您希望每个对话在各自的容器中沙箱运行时才需要。除非自行托管模型,否则不需要 GPU。

规格(先列项目数据,再列我们的建议)

按应用场景选择规格
工作负载vCPURAM
单用户、托管模型、代理运行在主机上(官方)这是该指南自己给出的数字。智能体服务器直接运行在机器上,因此这台机器本身就是沙箱。24 GB
一到两个用户,每个对话一个 Docker 沙箱我们的建议。每个对话一个容器;依赖安装、构建和测试套件都在容器内运行。48 GB
团队共享的代理服务器,同时运行多个代理我们的建议。多个代理并行处理多个仓库,各自都在编译。824 GB

合适的套餐

5 台机器,实时报价

最便宜的合适机器排在最前。价格为今日价格,按月计,取自产品目录。

  • BD-8$12.90/月

    4 vCPU · 8 GB · 100 GB 磁盘 · 32 TB

    有构建和测试余量的最便宜机型。4 vCPU、8 GB、100 GB、32 TB 流量,价格低于其他 4 GB 机型。是指南配置的两倍;运行测试套件时多出的核心很有用。

  • U2-4-40$14.90/月

    2 vCPU · 4 GB · 40 GB 磁盘 · 不计流量

    正好是指南配置,不计流量,伊斯坦布尔。2 vCPU / 4 GB / 40 GB。单用户、托管模型、代理运行在主机上。克隆仓库和安装软件包不计流量。

  • BD-24$31.90/月

    8 vCPU · 24 GB · 300 GB 磁盘 · 32 TB

    8 vCPU / 24 GB,用作团队的代理服务器。同时运行多个代理、Docker 沙箱、定时运行的自动化后端。

  • C2-4-80$37.90/月

    2 vCPU · 4 GB · 80 GB 磁盘 · 3 TB

    指南配置,覆盖数十个城市。2 vCPU / 4 GB / 80 GB。因城市而选择;一次只运行一个对话。

  • C4-8-160$75.90/月

    4 vCPU · 8 GB · 160 GB 磁盘 · 3 TB

    4 vCPU / 8 GB / 160 GB,覆盖数十个城市。较宽裕的规格,磁盘可容纳大量代码检出和 Docker 镜像。

OpenHands 目前还没有开机预设:安装就是下面五个步骤,由您自己输入,顺序与该项目自己的指南一致。先配置防火墙,再设置密钥,最后启动智能体。

安装

五个步骤,按 OpenHands 官方指南的顺序

指南明确要求在首次启动前配置防火墙,因为代理服务器可以完全操控这台机器,而挡在它与陌生人之间的只有防火墙和密钥。

  1. 先配置防火墙。ufw allow OpenSSH && ufw --force enable 除 SSH 外不允许任何入站连接。入口(8000)、代理服务器(18000)、自动化后端(18001)和静态服务器(3001)都不得从外部访问;指南原文就是这样要求的。
  2. Node.js 24 和 uv。apt-get install -y curl git curl -fsSL https://deb.nodesource.com/setup_24.x | bash - && apt-get install -y nodejs curl -LsSf https://astral.sh/uv/install.sh | sh uv 用于运行代理服务器;指南使用 astral.sh 提供的一行安装命令安装它。
  3. 生成密钥,以公开模式启动。export LOCAL_BACKEND_API_KEY=$(openssl rand -base64 32); echo $LOCAL_BACKEND_API_KEY npx @openhands/agent-canvas --public 继续之前请将密钥复制到安全的地方;公开模式意味着 Web 应用会要求您输入它。如需长期运行,请使用指南中位于 /etc/systemd/system/agent-canvas.service 的 systemd 单元,在其中写入 Environment=LOCAL_BACKEND_API_KEY=…,然后执行 systemctl enable --now agent-canvas。
  4. 通过 SSH 访问,添加模型。ssh -N -L 8000:127.0.0.1:8000 root@your-server 然后访问 http://127.0.0.1:8000,粘贴密钥,再进入 Settings:选择 LLM 提供商和模型,并粘贴该提供商的 API 密钥。在某个仓库上开始一个对话。
  5. 可选:域名。将 A 记录指向服务器,开放 80 和 443 端口,apt-get install -y nginx certbot python3-certbot-nginx,并使用指南中通过 WebSocket 头代理到 127.0.0.1:8000 的 nginx 配置块;certbot --nginx -d canvas.example.com --redirect 用于获取证书。如果 443 必须对外开放,指南指出密钥是您的主要防线,因此请使用足够长的密钥并妥善保密。

说实话

我们实际会买哪台

指南认为 2 vCPU 和 4 GB 足够单用户使用。选购价格低于 4 GB 机型的 8 GB 机器,让代理放心编译。

适用于个人的编程代理

BD-8 · $12.90/月

4 vCPU、8 GB 内存和 100 GB 磁盘,价格 $12.90:足以容纳智能体服务器、几个检出的代码仓库及其依赖树,以及在您眼前运行的测试套件,如果开启 Docker 沙箱,内存也还有余量。模型在别处,通过 API 密钥调用,因此这台机器永远不需要 GPU,真正要紧的账单来自模型提供商。如果城市比核心数更重要,C2-4-80($37.90)正好符合指南给出的配置,可在数十个城市部署。

常见问题

购买前大家常问的问题。

OpenHands 需要多少 RAM?
该项目自己的虚拟机指南表示,2 vCPU 和 4 GB RAM 足够单个用户使用,其文档建议使用现代处理器,内存至少 4 GB。这涵盖了智能体服务器、自动化后端,以及使用托管模型的 Web 应用。而智能体随后要做的事情,如克隆代码仓库、安装依赖、运行构建和测试,都是普通的开发工作,需要普通开发者所需的资源。因此本页最便宜的机器配备 4 核和 8 GB,而不是恰好卡在最低线上。
为什么要在服务器上运行,而不是在我的笔记本电脑上?
理由有两点,都出自 README 本身。其一,它说运行 OpenHands 最强大的方式是放在云端服务器上,这样即使笔记本电脑合上,智能体也会继续运行,并且可以从 Slack、GitHub 或 webhook 触发。其二,它警告说,智能体服务器直接运行在机器上,对文件系统、shell 和网络拥有完全访问权限。用一台只存放智能体及其所处理代码仓库的机器来授予这种访问权限,才是实事求是的做法。
它需要 API 密钥吗?能否使用本地模型?
其文档说明,OpenHands 访问大多数语言模型都需要 API 密钥,并列出了推荐的托管提供商。支持通过 Ollama 或类似服务器使用本地模型,但文档补充说,要让代理在本地模型上有效工作,需要性能足够的硬件以及针对指令遵循调优的模型。实际做法:在这台机器上使用托管模型和 API 密钥;如果想用本地模型,请另配一台模型服务器,规格参考 Ollama 页面或 GPU 产品线。
--public 和 LOCAL_BACKEND_API_KEY 有什么作用?
不加 --public 时,应用为了方便会把会话密钥注入网页中,README 称这对于可公开访问的部署是不安全的。加上 --public 后,密钥不会出现在页面中:每个打开 Web 应用的人都必须先粘贴 LOCAL_BACKEND_API_KEY,每次调用 API 也都必须携带它。指南给出的顺序是先防火墙、再密钥、最后启动,并使用 openssl rand -base64 32 生成密钥。
我需要 Docker 吗?
默认安装不需要,默认安装使用 Node 24 和 uv 在主机上运行代理服务器。Docker 用于沙箱模式:使用项目镜像运行整个技术栈,或为每个对话分配独立容器,让多个代理同时工作而不共享文件系统。README 指出,沙箱隔离的是对话的执行,而不是整个应用。如果需要,请安装 Docker,并选择 8 GB 或更高的规格。
涉及哪些端口?
所有服务都绑定到本地回环:127.0.0.1:8000 上的入口代理将请求路由到 3001 端口的静态服务器、18000 端口的代理服务器和 18001 端口的自动化后端。您通过 SSH 隧道访问 8000 端口;如果添加了域名,也可以通过 443 端口上的 nginx 访问。这四个端口都不应在防火墙上开放;指南按端口号列出了它们,明确规定不得从外部访问。