先给判断:ArcBox 是目前 macOS 上少见的、把容器、Agent 沙箱、完整 Linux 虚拟机与 macOS 客户机收进同一个守护进程的开源运行时。许可干净、部署面小,本机试起来几乎没有配置成本。但它处在公开测试阶段,沙箱有硬性机型门槛,官方那张逐项对标 OrbStack 的性能表,抬头自己写着这是我们正在努力达到的数字;而它专门用一份文档交代网络实测与已知限制,那份文档的主题正是自己多流吞吐塌掉的原因。
痛点很具体:让 Agent 在你机器上干活,等于把你的家目录、SSH 密钥和云凭据一起交给它。容器只隔离进程、不隔离内核,靠弹窗逐个点允许又必然会被点烦。ArcBox 的思路是把 Agent 放进一台自己的微虚机:独立内核、独立文件系统、独立网络,宿主目录默认一个都不挂。

一、它到底是什么:一个守护进程,四种负载

ArcBox 是用 Rust 从零写的 macOS 容器与虚拟机运行时,定位写得很直白,是 Docker Desktop 与 OrbStack 的开源替代。它最值得看的地方在架构上的归并:一个守护进程、一条命令行 abctl,同时管四种负载。

负载层是什么入口
容器一个可直接顶替的 Docker 引擎,外加原生 Kubernetesdocker … / abctl k8s
沙箱给 AI Agent 与不可信代码用的一次性微虚机abctl claude / abctl sandbox
Linux 机器有自己内核、磁盘与发行版的完整虚拟机abctl machine
macOS 客户机从基础镜像克隆出来的即用即弃 macOS 虚拟机abctl macos

容器这一层是真的兼容,不是差不多能用:它暴露一个 Docker 兼容的 socket 并代理到客户机里的 dockerd,所以 Docker CLI、你的脚本和 Compose 文件都不用改。官方文档里有一句描述很克制,说本地跑的沙箱与云端 ArcBox Platform 用的是同一个原语,代码不用改就能从本地扩到集群。

沙箱这一层是它与其他 macOS 容器方案真正的分界:每个沙箱是一台独立微虚机,用 Firecracker 嵌套在客户机里启动,各有自己的内核。abctl claude 就是这套原语加上一层顺手的外壳——按内置模板建一个沙箱,把你的终端接进去跑 Claude Code,并且把 Agent 的权限弹窗关掉。理由写在 README 里:边界是微虚机本身,不是那一堆确认框。宿主目录一个都不挂,/workspace 从空目录开始,Agent 要什么自己 clone。

再往下有几处是自己写的,不是把现成引擎包一层:两个 hypervisor 后端(自研 VMM 走 Hypervisor.framework,另一个走 Virtualization.framework,可用 abctl system backend hv|vz 切换)、一整套 VirtIO 设备、一个用户态网络数据面(官方说不用 pf NAT、也不用 utun 设备)、NFSv4 走 vsock 把容器数据挂到 ~/ArcBox 供 Finder 直接浏览,以及用 FEX 在 Apple 芯片上翻译 x86-64 镜像。

覆盖面还延伸到了 amd64 镜像与 Kubernetes 这两处:docker run --platform linux/amd64 能直接跑,看内核架构会返回 x86_64abctl k8s start 起一个由守护进程托管的本地 k3s。abctl k8s enable 会顺手装好 kubectl、并入 kubeconfig 并切好上下文。另有一个迁移工具,能把 OrbStack 或 Docker Desktop 的镜像(含全部 tag)、命名卷、自建桥接网络和容器一起搬过来。

二、怎么用:从装到跑起第一个容器

官方给两条安装路径,第一条是 Homebrew:

# Homebrew(cask)
brew install --cask arcboxlabs/tap/arcbox

# 或者安装脚本
curl -fsSL https://get.arcbox.dev | bash

装完启动守护进程,再打开 Docker 兼容:

abctl daemon start
abctl docker enable

# 跑一个容器
docker run -d -p 8080:80 nginx
curl http://localhost:8080

# 体检与看全部命令
abctl doctor
abctl --help

想试 Agent 沙箱,只要一个 API Key:

export ANTHROPIC_API_KEY=sk-...
abctl claude                    # 首次会构建镜像,之后约 1 秒启动
abctl claude --id review        # 第二个互不干扰的会话
abctl claude -- --model opus    # 双横线之后的参数全部转给 Agent

沙箱本身有一套完整的生命周期命令,模板、创建、执行、拷文件、暴露端口、快照、恢复都有:

abctl sandbox templates
abctl sandbox create --from-image myapp:latest --memory 512 --ttl 3600
abctl sandbox run <id> -- ./untrusted-binary
abctl sandbox cp <id>:/tmp/out.tgz .
abctl sandbox expose <id> 8080
abctl sandbox checkpoint <id> --name clean
abctl sandbox restore <snapshot-id>

需要一台完整的 Linux 环境,或者一台用完就丢的 macOS:

abctl machine create dev --distro ubuntu --disk 50 --mount ~/code:/code
abctl machine start dev
abctl machine ssh dev
abctl machine exec dev -- cargo build

abctl macos image pull tahoe-base
abctl macos create ci --image tahoe-base --cpus 4 --memory 8192
abctl macos start ci
abctl macos ip ci --wait 30

从别的运行时搬过来,先看计划再动手:

abctl migrate from orbstack --dry-run   # 只看计划,不改动任何东西
abctl migrate from orbstack
abctl migrate from docker-desktop

整个过程里最容易忽略的是权限:本机装了它之后,~/ArcBox 会多出一份容器数据的只读视图,而 abctl docker setup 会往系统里装 docker、compose、buildx 三个二进制。知道这两件事写在哪,后面会省掉一次排错。

三、优点和缺点,摊开说

先说值得用的地方:

再说必须提前知道的缺点——这部分才是重点:

风险点具体情况
性能表是目标值,不是实测README 里那张与 OrbStack 逐项对比的表,抬头原文写的是 These are the numbers we are working toward, with OrbStack for comparison。整张表五行里,只有网络那一行给得出实测口径:自研后端单流宿主到客户机 22.7 Gbps,约为 Apple 原生 virtio-net 的两倍多。
项目自己写了一份失败的测试报告仓库里有一份文档,标题直译就是网络数据面的实测性能与已知限制。它承认多流宿主到客户机会塌:每路流超过约 4 到 5 Gbps 时,一路跑满、其余接近零;稳定态上限 10 到 12 Gbps,约为单流的一半。作者把三个客户机侧实验(队列长度从 1024 翻倍到 2048、网卡丢包计数、软中断 CPU 占用)逐条做完并全部排除,再抽样宿主侧线程,发现单流 29.5 Gbps 与双流 10.9 Gbps 烧掉的是同样约 120% 的单核预算,于是把根因定位到每个中断的固定开销。源码里还留着一行注释,说中断抑制等基础路径验证完再加。注意同一份文档里,抬头写的是单流 22.7 Gbps,后面宿主侧采样一节写的是 29.5 Gbps,两个数来自不同次运行。
商业口径不在许可文件里两个许可文件都是标准全文、没有追加条款;但 README 的贡献一节多写了一句:运行时按 MIT 与 Apache-2.0 开源、个人使用免费、商业使用在公开测试期免费。这句时间限定不在任何许可文件里。同时云端 ArcBox Platform 是付费产品:Linux 与 Windows 走候补名单、按秒计费,macOS、iOS、Android 需要联系销售。
沙箱有硬性机型门槛README 明确写沙箱需要嵌套虚拟化,也就是 Apple 芯片 M3 及以上配 macOS 15 以上、并使用默认的 VZ 后端,其他主机上沙箱命令会直接失败。需求一节写的是仅 Apple 芯片、Intel 支持进行中;后续计划里 Linux 宿主支持也还挂着。
macOS 客户机被许可限死只能走 Virtualization.framework,且每台主机最多 2 个。README 把原因写得很清楚,是 Apple 的许可限制,不是技术做不到。
公开测试期,破坏性变更按正式版发最新运行时版本是 v0.7.0,其中一个改动把启动机器的返回时机改了:从 Agent 首次应答改成机器真正可用,Alpine 约 2.2 秒、Ubuntu 约 14 秒,官方要求调用方把超时提到 15 秒以上。版本号还在 0.x,升级前值得先读一遍发版说明。
装得上,卸不干净README 首选的 Homebrew 安装路径之后,abctl daemon start 会报找不到守护进程,这条问题单从八月中一直开着,修复补丁至今未合并(#644)。而 abctl docker setup 装进系统的 docker、compose、buildx,目前没有一个命令能把它们一起卸掉,问题单里已经有人在问怎么完整移除(#710)。

另外,把闲置 Mac 并入集群当 CI 算力这一节,README 自己标着还在开发中;它承诺的从本地沙箱平滑扩到云端机群,现在只有前半截是真的。

把话说明白:ArcBox 现在适合两类人——Apple 芯片 M3 及以上、想把 Agent 放进真实隔离环境里跑的开发者,以及愿意接受公开测试期、想有一个能自己读源码的 Docker Desktop 替代品的人。不适合的也很清楚:Intel Mac 与 Linux 宿主用户(沙箱与宿主支持都还没到位)、需要在生产环境里拿它当唯一容器运行时的团队,以及依赖多流高吞吐网络的人。

四、最终能达到什么效果

落地之后,日常会变成这样:写一个要跑的脚本、或审一个来路不明的仓库,一条 abctl claude 起一个微虚机(首次构建镜像,之后约 1 秒可用),Agent 在里面 clone、装依赖、跑测试,权限弹窗一次都不弹,因为宿主上什么都没挂给它;跑完用 abctl sandbox cp 把产物拷回本地,用过的机器连同它的内核一起丢掉。容器那一侧是另一条路径:docker compose up 照旧可用,镜像、命名卷和自建网络可以从 OrbStack 迁过来,Finder 里还能直接翻容器的卷和镜像层。

一句话:给 Agent 一台真机器、以及换掉 Docker Desktop,这两件事在它这里是同一个守护进程上的两种用法。

场景结论
想给 Agent 一个用完即弃、且不接触宿主文件的执行环境推荐,这是它最扎实的部分
想找能读源码、跑得动的 Docker Desktop 替代品可以试,容器层已能日常用,但要先接受公开测试期
机器是 Intel Mac,或者你想在 Linux 宿主上跑暂不推荐,宿主支持还没到
需要在生产里当唯一容器运行时暂不推荐,未到 1.0 且破坏性变更按正式版发
关心多流网络吞吐先自己压一遍,别拿官方表里网络那一行当验收标准

动手前先做三件事:


下期预告:上一期文末预告过的让 AI 操作真实账号那三条路,继续欠着;本期榜上先冒出来的是隔离方向的项目,所以先把它写掉。下期做 Agent 沙箱的横向对比——本机微虚机、Kubernetes 原生、云厂商容器沙箱这三条路线,隔离层、许可与宿主门槛完全不同。

#GitHub趋势#AI Agent#沙箱#macOS

数据来源:GitHub 官方页面与 REST API · 抓取时间:2026-09-16 17:36。文中命令均取自仓库 README 原文;性能数字取自仓库内 docs/net-perf-limits.md;命令行为与报错信息来自仓库公开问题单(#644 / #710)。本轮未在本机安装运行该项目,所有结论均为文档、发版说明与问题单层面的核实结果。项目地址:https://github.com/arcboxlabs/arcbox