GitHub 开源 Ace:多人共用本机 Agent 的边界

GitHub Next 开源的实验项目 Ace 将多人多 Agent 协作搬到了 Tailscale 局域网互联的个人 Mac 上,用写时复制 Lane Worktree 隔离分支并支持跨机唤醒本机 Agent 与原生桌面窗口。本文拆解其五层架构、为什么官方警告 Channel 与 Lane 不是沙箱,以及团队协作的权限边界取舍。

Bob

Bob

2026-11-11

GitHub 开源 Ace:多人共用本机 Agent 的边界

GitHub Next 刚开源的实验项目 Ace(仓库 githubnext/ace,MIT 许可证)将多人多 Agent 协作搬到了由 Tailscale 局域网(Tailnet)互联的个人 Mac 上。它用写时复制(CoW)的 Git worktree(称为 Lane)隔离每个分支修改,允许队友进你的频道(Channel)直接唤醒你本机的 Agent,并在分屏中实时预览和点击本机编译的原生桌面窗口。但这套「零云端中转、全组共用本机工具链」的设计伴随一道醒目红线:官方在首屏警告「Channels and lanes are not security sandboxes」,开启频道 Agent 共享就等于把宿主机当前用户的完整 Shell 权限交给了队友与 Agent。

该项目于 TLDR AI 2026-11-09 以「GitHub’s multiplayer harness」披露,基于 TypeScript 与 Bun 1.4+ 构建(原生桌面工具需 macOS 15+ 与 Swift 6.2+)。据架构文档 docs/architecture.md 说明,旧版 Ace 曾在云端 VM 中为每个频道跑独立进程,而最大的痛点正是云端 VM 维护;新版砍掉云端基础设施,保留每频道单进程并下沉到个人 Mac 上(注:GitHub 官方后续是否会将 Ace 的多人频道协议并入商业版 Copilot 产品线,公开仓库未披露,待核实 [待验证])。

本文面向探索多人多 Agent 协作、并行 Worktree 管理及团队 Agent 工作流的研发负责人、架构师与全栈开发者,拆解 Ace 的五层协同机制与本机工具链优势,给出四步验证与加固操作,并对比「个人宿主裸跑共享」与「任务看板驱动独立 Runtime」两类路线的取舍边界。

问题:为什么单人盯终端和纯云端沙箱都卡住了团队协作

团队引入编程 Agent 时常卡在两个痛点之间:一是「单人单机盯终端」,上下文锁在个人屏幕里,队友看不到试错过程,也没法在 Agent 提问时替你作答;二是「纯云端沙箱与本机环境脱节」,云端容器无法直接调用本机配好的 Xcode、Swift、Docker 或已登录的 gh CLI,摸不到办公桌 USB 接口上的开发板与音频硬件,也无法实时弹出 macOS 原生应用窗口供人机点击联调。

Ace 选择让队友经 Tailscale 直连你的 Mac 频道:讨论后输入 @ace do it 即可驱动宿主机工具链与原生应用窗口。针对「全员笔记本合盖休眠(Offline)后本地频道断联」的短板,Ace 提供了可选的 Cloud Compute(Beta):团队可在自有账号下通过 Cloudflare Workers(Durable Objects)与 Linux 容器运行云端频道,支持用 Stop compute 生成容器检查点(Checkpoint),并在 Start compute 时从快照恢复(至于该 Beta 何时原生支持除 Cloudflare 外的其他容器托管商,官方文档仅称后续可能跟进或由社区分叉扩展,待核实 [待验证])。

机制:Host、Tailnet、Directory 与 CoW Lane 如何串起多人协作

根据官方术语表 docs/terms.md 与 docs/architecture.md,Ace 由五个核心组件串起实时协作:

GitHub Next Ace 基于 Tailscale 局域网与 CoW Worktree 的多人多 Agent 协作架构示意图
  1. Host(本机进程,apps/host):运行在开发者 Mac 上,在 $ACE_HOME/channels/<id>/(默认 ~/.local/state/ace)下保存 channel.json 与 channel.sqlite。客户端按需拉起频道 worker 并经 channel.sock 通信;无连接且无任务时自动休眠(Dormant)。
  2. Team = Tailnet(Tailscale 局域网):Ace 不设独立账号或角色系统,同一 Tailnet 即团队本身。宿主机网关通过 tailscale whois 校验调用者并映射为 GitHub 登录名展示在线状态(Here / Away);未启动 Tailscale 则无法创建频道。
  3. Directory(轻量目录服务,services/directory):由团队自部署在 Cloudflare Workers(SQLite Durable Objects)、Fly.io 或 celld 上。它只记录项目、Host、频道位置、项目共享(Share)与在线状态(Lobby),不存任何聊天消息、代码或 Diff。真实消息与代码流完全在 Host 间经 Tailnet 点对点传输,主机凭 HMAC-SHA256(ACE_SECRET, tailnet) 向目录鉴权。
  4. Channel 与 Chat(频道与对话,packages/channel):每个 Channel 对应一个 pi Session,内含一个或多个 Chat(支持父子 Chat 派生 Subagent)。当 Agent 用 question 工具提问时,任何有权限的队友均可作答;离线期间动态汇总在「While you were away」中。
  5. Lane(基于 Luke Edwards lane 的写时复制 Worktree):每个工作单元对应独立 Git worktree 与分支,底层调用 Luke Edwards 的 lane CLI 以写时复制(CoW)方式创建(lane new)并提交 PR(lane push),单时刻最多一个 Chat 写入同一 Lane。

在原生桌面控制(docs/desktop-tools.md)上,Ace 内嵌基于 OpenClaw Peekaboo 的桥接库,获授权后可检视并点击 macOS 窗口控件、读写剪贴板(文本上限 24,000 字节 JSON,图像上限 10 MiB / 6400 万像素),并将原生窗口实时嵌入侧栏分屏;模型请求直接读取本机 Keychain 中的 Anthropic 或 OpenAI 密钥直连厂商。

架构维度Ace 本地频道 (Local Channel)Ace 云端频道 (Cloud Compute Beta)
运行位置开发者个人 Mac(apps/host + 本地 worker)团队自部署 Cloudflare Durable Object + Linux 容器
分支隔离与硬件基于 lane 的 CoW Worktree;可调 Xcode、USB 外设与原生窗口容器内独立克隆检出;仅限 Linux 容器,无本机硬件与桌面工具
合盖休眠与密钥宿主休眠后变为 Offline;密钥存于个人 Mac Keychain笔记本合盖仍后台运行(支持 Checkpoint 恢复);密钥存服务端 Secret

怎么做:四步复现 Ace 协作流并收敛宿主执行边界

第一步:在 Tailscale 环境下用 Bun 启动频道与回环调试

确认本机已登录 Tailscale 且安装 Bun 1.4+ 后,可针对本地 Git 仓库启动频道;若仅单机调试,可加 --loopback 禁用局域网监听:

# 克隆仓库并启动本地项目频道(需 Tailscale 在线且 Bun 1.4+)
git clone https://github.com/githubnext/ace.git && cd ace
bun install
bun ace new --project ~/code/my-repo
bun ace ask <channel> "what does this repo do?"

# 仅在 127.0.0.1 回环监听,不向 Tailnet 节点暴露或广播目录
bun ace serve --loopback

第二步:按频道收紧队友 Agent 调用与原生桌面开关

队友拥有项目访问权(Access 或整项目 Share)仅能看频道和发消息;能否唤醒你本机的 Agent 由频道级 agent access 独立控制(新频道默认关闭):

# 关闭队友对该频道 Agent 的调用权(仅在绝对互信结对时设为 on)
bun ace agents <channel> off

# 关闭该频道的 macOS 原生桌面控制工具(新频道默认关闭)
bun ace desktop <channel> off

第三步:自管部署轻量 Directory 并严禁暴露公网

通过客户端 Settings -> Team -> Set up... 用自有 wrangler login 部署 ace-directory-<tailnet>,或用 celld 加 tailscale serve 在内网托管,严禁开启 Funnel 或公网端口映射:

# 仅在 tailnet 内部暴露 HTTPS,停用 Cloudflare 目录时可直接删除 Worker
tailscale serve --bg --https 443 http://127.0.0.1:8787
bunx wrangler delete --name ace-directory-<tailnet>

第四步:超过三人结对规模后,迁入独立电脑 Runtime 与任务看板

当团队超过两三名绝对互信搭档、进入多角色工程协作时,把协作建立在「连进个人办公机裸跑宿主 Shell」上既受制于个人笔记本休眠,又违背最小权限原则。

Ace 个人宿主共享模式与任务驱动受控 Runtime 模式的权限边界对比示意图

工程团队落地时,可借助 HiFox 将协作中心与个人办公机解耦:

  1. 用专门的远程电脑替代共享个人 Mac:按《电脑》文档规范,「个人电脑适合个人 Agent 和本地开发工作。团队共享任务更适合使用专门的远程电脑,避免共享个人凭据、工作目录和不稳定的本机在线状态」。将远程开发机上的 Claude Code、Codex 登记为运行时(Runtime),本地服务主动外连,无需开入站端口。
  2. 用独立 Worktree 与沙箱外推送隔离凭据:按《Agent 工作目录》与《HiFox CLI》机制,每个并行任务在独立 worktree 中运行并提交至 <产品>-agent/<Agent 名称>/<任务编号> 分支,通过 hifox repo checkout 与 hifox repo push 把代码托管凭据留在沙箱外。
  3. 用小队(Crew)收敛调用权:按《小队》机制,任务指派给小队后先由队长 Agent 评估并按序 @ 成员 Agent,还可设置「小队专属 Agent」禁止私聊与外部单独指派。

避坑指南:把 Ace 用于团队协作前必须认清的四个死角

  1. 误把 Lane Worktree 当成安全沙箱:Lane 仅隔离 Git 分支文件,Agent 进程仍继承宿主机当前用户的完整权限,可执行任意 Shell 命令并读写或删除项目目录外的 ~/.ssh 与私有文件。
  2. 以为关掉 ace desktop <channel> off 就能防截屏:架构文档指出该开关仅是原生工具门禁(native tools gate),而非 Shell 沙箱;关闭后 Agent 仍可在宿主 Shell 中调用系统自带的 screencapture 截屏或读取本机环境变量。
  3. 忽略同机跨频道唤醒与 ACE_SECRET 泄露风险:关闭 agent access 只拦外部队友,同一台 Host 另一频道的 Agent 发出的消息仍可直接唤醒目标频道 Agent。同时,目录服务的 TAILNET MagicDNS 后缀在证书透明度日志中公开,一旦 ACE_SECRET 泄露,外部即可算出 HMAC-SHA256(ACE_SECRET, tailnet) 调用目录服务。
  4. 把实验性本地 Harness 当成多引擎成品:据 docs/architecture.md 的「Not yet built」清单,Ace 对 Claude Code 与 Codex 等外部 Harness 的接入、文件与浏览器预览标签页(Issues #22、#16)及跨托管频道发消息均尚未构建(外部 Harness 具体支持排期官方未公布,待核实 [待验证])。

结论:双人极客结对用频道直连,多角色工程交付归任务看板

Ace 证明多人多 Agent 协同正在取代单人盯终端,但「频道直连个人宿主 Shell」与「企业级工程治理」边界截然不同。建议今天落实三项动作:

  1. 严守 2 至 3 人绝对互信的本机结对边界:仅在联调本机 Xcode 原生窗口或 USB 硬件、且完全信任搭档操作本机 Shell 时开启 ace agents <channel> on;单机多分支并行可参考《Orca:在隔离 worktree 里并行跑编程 Agent》。
  2. 解耦个人电脑休眠与后台长任务:避免全组进度挂在随时合盖的个人 Mac 上,长任务防断连与本机/云端边界可对照《笔记本合盖休眠后,怎么让 AI 编程 Agent 继续运行》与《Codex Cloud 来了:什么时候还该让 Agent 跑在自己的电脑上?》。
  3. 用任务状态门与独立 Runtime 承接团队交付:在 HiFox 中结合《Agent 如何执行任务》与《任务状态》,在空间(Space)的任务(Task)与专项(Project)中沉淀需求,从 Backlog 移入 Todo 后派发至专门远程电脑的 Runtime 在独立 Worktree 中执行,待写回结果并经人工 review 分支后再合并。

Explore more

高盛收回交易员 Claude Code:别在业务机裸跑代码

高盛收回交易员 Claude Code:别在业务机裸跑代码

高盛在 2026 年 7 月公开夸赞交易员用 AI 工具 Vibe Coding,10 月却将 Claude Code 与 GitHub 收归 1.2 万名工程师与 Strats。本文拆解客户数据机裸跑代码与半成品甩锅两大冲突,并给出任务分派、隔离 Runtime 与审阅门四步方案。

2026-11-09

在编程 Agent 里接上 GPT-6.1 Terra:推理档和一半的价格

在编程 Agent 里接上 GPT-6.1 Terra:推理档和一半的价格

把现有的编程 Agent 做成变体,只改默认模型,推理档从中档开始。Terra 每个 Token 只要同代 Sol 的一半,最难的编码和小组队长仍建议留在更强的模型上。

2026-10-28

AI Agent 任务管理:谁派活,谁验收?

AI Agent 任务管理:谁派活,谁验收?

写给 Agent 的任务不能指望它追问。任务要写清结果、边界、上下文和验收方式;指派分成人员负责人和执行负责人,状态控制运行,审查则必须是能到达人的具名状态。

2026-10-26