跳到主要内容

编程 Agent 框架

OpenHands 本地部署,显存该怎么算

OpenHands 自己只占 4GB 内存,一张显卡都不用。显存全花在你给它配的那个模型上——这页把两边的账分开算清楚。

OpenHands 是 MIT 协议的开源编程 Agent,但它这一年把门牌全换了:仓库从 All-Hands-AI/OpenHands 迁到 github.com/OpenHands/OpenHands,文档域名从 docs.all-hands.dev 一个 308 跳到 docs.openhands.dev,社区从 Discord 挪到了 Slack。主仓库的门面现在是 Agent Canvas——一个自托管的 Agent 控制台,npm 包 @openhands/agent-canvas 与 Docker 镜像 ghcr.io/openhands/agent-canvas 同为 1.15.0。命令行那条线是 PyPI 上的 openhands 1.16.0,硬锁 Python 3.12。真正干活的 Agent Server 由 OpenHands/software-agent-sdk 提供,镜像标签 ghcr.io/openhands/agent-server:1.26.0-python。四个仓库、三条版本号,第一次装的人基本都会被绕晕,先把这几个数字记住会省很多事。

然后是最容易被问错的问题。OpenHands 官方对宿主机的要求只有一句话:现代处理器加至少 4GB 内存。它不做推理——它做编排,用 LiteLLM 把请求发出去,在 Docker sandbox 里执行命令,默认沙箱镜像是 nikolaik/python-nodejs:python3.12-nodejs22。所以「OpenHands 需要多大显存」严格来说问错了对象,该问的是:你打算让哪个模型接这个活,那个模型要多大显存。

官方文档现在明确把 Qwen3.6-35B-A3B 列为本地首选:Apache-2.0,35B 总参、3B 激活的 MoE,256 个专家每次路由 8 个再加 1 个共享,40 层里每 4 层插一层全注意力、其余走 Gated DeltaNet 线性注意力,原生 262,144 上下文、YaRN 可拉到 1,010,000,SWE-bench Verified 73.4。文档给的硬件门槛是「量化版至少 24GB 显存,全精度要多卡」。下面把这句话拆成能直接下单的配置。

01 —

Qwen3.6-35B-A3B 各权重版本与显存占用

OpenHands 本体(CLI 1.16.0 / Agent Canvas 1.15.0 / agent-server 1.26.0)不占显存,下面这张表才决定你租哪张卡。体积按 Hugging Face 仓库实际文件大小计。

版本参数量显存上下文说明
Qwen/Qwen3.6-35B-A3B(bf16 safetensors)35B 总参 / 3B 激活bf16 71.9GB(67.0GiB)262K 原生,YaRN 至 1.01M官方原始权重。vLLM/SGLang 起码两卡张量并行,OpenHands 文档给的示例就是 --tensor-parallel-size 2;Qwen 自己的示例用 --tp-size 8。
Qwen/Qwen3.6-35B-A3B-FP835B-A3BFP8 37.5GB(34.9GiB)262K官方 FP8 量化,单张 48GB 卡就塞得下。但原生 FP8 算力要 Ada / Hopper 这代才有,Ampere 上 vLLM 会走 Marlin 反量化路径,能跑,拿不到那份加速。
unsloth UD-Q8_0 GGUF35B-A3BQ8_0 36.9GB(34.4GiB)262K(KV 另计)近无损档,走 llama.cpp / Ollama / LM Studio 后端。48GB 单卡放得舒服,不用碰张量并行那套麻烦。
unsloth UD-Q4_K_M GGUF35B-A3BQ4_K_M 22.1GB(20.6GiB)32K 起(官方最低 22000)24GB 单卡的现实解。权重压满 20.6GiB,剩下的空间只够 32K 上下文,视觉塔就别再开了。
unsloth UD-IQ4_XS GGUF35B-A3BIQ4_XS 17.7GB(16.5GiB)128K 可行同样一张 24GB 卡,想要长上下文就换这个。省下的 4GiB 正好装 128K 的 KV——Qwen3.6 只有 10 层是全注意力,FP16 下每 token 的 KV 约 20KB,128K 也就 2.5GB。
mmproj-F16(视觉塔,可选)视觉编码器+0.9GBQwen3.6 自带视觉,能读截图和 UI。纯代码任务用 vLLM 的 --language-model-only 直接跳过,把这块显存让给 KV cache。

02 —

按配置选卡:NexGPU 上的四种起法

价格是每 GPU 每小时挂牌价,按秒计费,停机即停算力费用。

  • 24GB 单卡跑 Q4_K_M,32K 上下文,Ollama / LM Studio 起步

    RTX 3090 24GB$0.193/卡·时

    官方门槛就是 24GB,GGUF Q4 走 llama.cpp 后端不吃 FP8 算力,3090 是这条线上最便宜的 24GB 卡。

  • Q4 / IQ4 加 128K 上下文,或用 vLLM 单卡常驻给小组共用

    RTX 5090 32GB$0.723/卡·时

    32GB 装下 20.6GiB 权重、0.9GB 视觉塔和 128K 的 KV 还有余量,而且有原生 FP8,能直接吃官方 FP8 权重。

  • Q8_0 或官方 FP8 单卡,把 262K 上下文吃满

    RTX A6000 48GB$0.817/卡·时

    34~35GiB 的权重加上 262K 约 5GB 的 KV,48GB 一张卡走得完,省掉张量并行的全部配置成本。

  • bf16 原生权重,做评测、跑基准或给整个团队供服务

    A100 SXM4 80GB ×2$1.088/卡·时(双卡 $2.176/时)

    71.9GB 权重必须两卡起,正好对上文档里的 --tensor-parallel-size 2;想一张卡搞定就上 H200 141GB $6.660/卡·时,262K 全开也不用算显存。

03 —

四步把 OpenHands 接到你自己的模型上

在 NexGPU 实例上从零到 Agent 跑起来大约十几分钟,绝大部分时间花在拉权重。

  1. 01

    起模型服务

    在 GPU 实例上用 vLLM 把 Qwen3.6-35B-A3B 暴露成 OpenAI 兼容端点。vLLM 需要 0.19.0 以上,SGLang 需要 0.5.10 以上。--enable-prefix-caching 对 Agent 这种反复重发同一段长 system prompt 的场景收益特别大;tool-call-parser 一定要给 qwen3_coder,不然工具调用解析不出来。NexGPU 的 2000+ 预置镜像里 vLLM 和 PyTorch 都是现成的,不用自己配 CUDA。

    vllm serve Qwen/Qwen3.6-35B-A3B --host 0.0.0.0 --port 8000 --api-key mykey --tensor-parallel-size 2 --served-model-name Qwen3.6-35B-A3B --enable-prefix-caching --enable-auto-tool-choice --tool-call-parser qwen3_coder
  2. 02

    装 OpenHands

    CLI 走 uv,锁 Python 3.12。--mount-cwd 会把当前目录挂进 Docker sandbox,Agent 就在这个目录里改代码;也可以用 SANDBOX_VOLUMES=$PWD:/workspace:rw 自己指定。想要网页控制台就改跑 Agent Canvas 的 Docker 镜像,端口 8000,UI 在 /canvas。

    uv tool install openhands --python 3.12 && openhands serve --mount-cwd
  3. 03

    把模型指过去

    关键在那个 openai/ 前缀——OpenHands 通过 LiteLLM 调用,自建端点必须写成 openai/<served-model-name>,漏了前缀就报模型不存在,这是本地部署第一大坑。如果 OpenHands 在容器里而模型在宿主机,Base URL 要换成 http://host.docker.internal:8000/v1,并给 docker run 加上 --add-host host.docker.internal:host-gateway。

    export LLM_MODEL=openai/Qwen3.6-35B-A3B LLM_BASE_URL=http://127.0.0.1:8000/v1 LLM_API_KEY=mykey
  4. 04

    无头跑,把结果收成 JSONL

    --headless 强制 always-approve,Agent 不会停下来问你,正好塞进 CI;官方明说这个模式下 --llm-approve 不可用,所以务必配合沙箱使用。加 --json 之后每个 action / observation 事件输出一行 JSON,下游解析成功失败很方便。

    openhands --headless --json -t "给 src/parser.py 补齐单元测试并跑通" > run.jsonl

一个月要花多少:算给你看

按一个五人小组共用一台推理机来算。RTX 5090 32GB 跑 vLLM 加 Qwen3.6-35B-A3B 的 IQ4_XS 权重,工作日开 8 小时、一个月 22 天,就是 176 小时:176 × $0.723 = $127.25。权重加镜像按 60GB 存着,60 × $0.414 = $24.84/月。合计 $152.09,摊到五个人每人不到 $31,比一个人的云端 API 账单还低。要跑一次 bf16 原生权重的基准复现,双卡 A100 SXM4 80GB 开 6 小时:6 × 2 × $1.088 = $13.06,跑完停机,算力费用立刻归零。想再省,同一套活压到 RTX 3090 24GB 上跑 Q4_K_M,176 小时只要 176 × $0.193 = $33.97,代价是上下文卡在 32K、视觉塔要关掉。最后一句提醒:计算和存储是两笔账,实例一停算力就不再计费,存储要到你销毁卷才停——跑完基准记得把那份 71.9GB 的 bf16 权重清掉,不然它就是每月 71.9 × $0.414 = $29.77 的静默支出。无最低消费、无开通费、不用申请配额。

04 —

常见问题

OpenHands 本地部署需要显卡吗?

OpenHands 本身不需要。官方对宿主机的要求只有一句:现代处理器加至少 4GB 内存。它做的是编排、通过 LiteLLM 发请求、在 Docker sandbox 里执行命令,全程不做任何推理。显卡是给你自己托管的那个模型准备的。所以如果你接的是云端 API,一台便宜的常驻节点就够;如果要完全私有化,NexGPU 从 RTX 3090 24GB $0.193/卡·时 一路到 H200 141GB $6.660/卡·时 都能按秒开、按秒停。

OpenHands 接本地模型最低要多大显存?

官方口径是量化版至少 24GB,全精度要多卡。落到具体文件上:Qwen3.6-35B-A3B 的 Q4_K_M GGUF 是 20.6GiB,一张 24GB 卡装完权重只剩两三 GiB,够 32K 上下文,不够再挂视觉塔。想在 24GB 上要 128K,换 IQ4_XS 的 16.5GiB。NexGPU 的 RTX 3090 24GB($0.193/卡·时)和 RTX 4090 24GB($0.540/卡·时)都踩在这条线上,RTX 5090 32GB($0.723/卡·时)则省掉全部纠结。

为什么 OpenHands 接了本地模型之后像个聊天机器人,死活不肯调工具?

九成是上下文开太短。Ollama 默认 4096,官方原话是连 system prompt 都装不下,必须设 OLLAMA_CONTEXT_LENGTH=32768,最低不能低于 22000。另一个高频坑是 LM Studio 在 Linux 上默认只监听 127.0.0.1,容器里的 OpenHands 根本连不上,要打开 Serve on Local Network 才会绑到 0.0.0.0。这两条都排掉还不行,那就是模型的工具调用能力不够——官方文档里社区反馈 qwen2.5-coder-14b-instruct 能治好这种「变成聊天机器人」的症状。在 NexGPU 上换卡换模型都是几分钟的事,试错成本按秒结算。

OpenHands 是不是改名了?和 All Hands 什么关系?

代码没换,门牌换了。仓库从 All-Hands-AI/OpenHands 搬到 github.com/OpenHands/OpenHands,文档从 docs.all-hands.dev 一个 308 跳到 docs.openhands.dev,社区从 Discord 挪到 Slack。同时项目拆成四个仓库:OpenHands/OpenHands 管 Agent Canvas 前端和本地栈编排,software-agent-sdk 提供 Python SDK、Agent Server 和那套 API,typescript-client 和 automation 各管一摊。协议仍然是 MIT,默认 Agent 仍然是 CodeActAgent。踩老链接的话跳转是通的,但文档内容已经按 V1 重写过,别照着旧教程配。

OpenHands 能直接跑 Claude Code 或 Codex 吗?

能。Agent Canvas 通过 ACP(Agent Client Protocol)挂第三方 Agent,Claude Code、Codex、Gemini CLI 都在支持列表里,和内置的 CodeActAgent 在同一个控制台里随手切换,还能配多个 LLM profile 分场景用。实际用法是把便宜的本地模型放常规改动、把强模型留给规划和评审。在 NexGPU 上多开一个实例跑第二个模型也是按秒计费,单节点最多 14 卡、最大 2,152GB 显存,两个模型同机常驻完全放得下。

在 NexGPU 上跑 OpenHands,环境要自己从头搭吗?

不用。2000+ 预置镜像里 PyTorch、vLLM 都是现成的,开机直接 vllm serve,CUDA 和驱动不用管。访问方式给全了 SSH、Jupyter、网页终端、REST API 和 CLI,Agent Canvas 的 8000 端口和 OpenHands Web 的 3000 端口都能映出来。网络覆盖 51 个国家和地区、1,175 个已验证可租节点、2,498 张 GPU、75 个 GPU 型号,71.9GB 的 bf16 权重也好、双卡张量并行也好都排得开。控制台在 console.nexgpu.net,无最低消费、无开通费、不用申请配额,遇到问题在 Telegram 上直接找人,中英文都有,不排工单。

开始使用 NexGPU

无论你是企业研发团队还是独立开发者,都可以在几分钟内跑起第一个任务。

注册即可浏览全网实时价格,无需绑定支付方式。