Haitian Liu
← Blog

Agent Mesh:让所有设备像一台电脑

2026-10-04

一句话:让我所有的设备像一台电脑,我只跟一个 agent 说话。


1. 出发点

我有好几台电脑,每台都装了 Claude Code、Codex 这些 agent,也开了远程控制。用下来有三个问题:

  1. 配置太麻烦:每台都要单独安装、单独登录、单独配远程控制,加一台新电脑就得重来一遍。
  2. 没有一个总的入口:没有一个 agent 能让我直接对话,在更高的层面管理所有电脑和电脑上的 agent。比如我想说一句"找台电脑把 Drive-In 跑起来",现在做不到。
  3. 资源浪费:这些电脑的 CPU、GPU、内存、磁盘大部分时间都闲着。

我想要一个像 Tailscale 一样好装、好用、安全的东西,把所有设备连起来,让 agent 面对的是一个集群。

2. 需求清单

2.1 最初的三个问题

# 需求 说明
P1 装起来省事 每台设备装一次、登录一次,之后不用再管
P2 只跟一个 agent 说话 一个 agent 能看到所有设备,并直接办事
P3 用上闲置资源 按 CPU、GPU、内存、磁盘的空闲情况分配任务

2.2 后来补充的五个要求

# 需求 说明
R1 远程桌面(必须) 从任意设备(手机、另一台电脑)查看并操作任意设备的完整桌面。无论有没有 agent 在跑,都能用
R2 安全接管 遇到输密码、点系统授权这类步骤,人可以接手完成,密码不经过 AI
R3 断了能恢复 某个 agent 的远程控制断了,不用跑到那台电脑前也能恢复
R4 中立 能在 Claude、Codex、pi、OpenClaw、Hermes、Dots 等 agent 之间随意切换
R5 跨设备操作文件 例如把文件从 A 电脑挪到 B 电脑、列出所有设备的所有磁盘

3. 核心认识

3.1 一台设备上有什么

层 例子 agent 对它做什么
硬件 CPU、GPU、内存、磁盘空间 看用量,决定把任务放到哪台设备
数据 文件、各块磁盘、外接硬盘 列出、读写、在设备之间移动
软件 Blender、Docker、Claude Code、Codex、pi 启动、停止、更新、登录;对 agent 类软件还可以交代任务
服务 Drive-In、数据库、网页服务 启动、监控、挂了重启、给出访问地址
交互界面 屏幕、键盘、通知 远程桌面;请人接管,例如输入密码

"资源"一词有两个意思,要分清:

  • 硬件资源:CPU、GPU、内存、磁盘空间、网络。
  • 设备上的东西:任何能被叫出名字、能被使用的东西,如文件、软件、服务、屏幕。

3.2 agent 就是设备上的软件

在设备层面,Claude Code、Codex 和 Blender 没有本质区别:都是装在某台设备上的程序,有可执行文件、配置和登录状态,可以被启动、停止、更新、监控。

所以:

  • 节点程序的核心不需要懂 agent,只需要知道"这台设备装了什么软件、怎么启动、它是否还活着";
  • 中立性自然就有了:Claude、Codex、pi、Blender 都只是软件清单里的一行。

3.3 但 agent 是特殊的软件

Blender 这类软件 Claude Code 这类 agent
你给它什么 精确的操作指令 一个目标,它自己决定步骤
运行方式 执行完就结束 可能运行很久,中途会停下来提问、请求批准
身份 一般不代表你 使用你的账号和订阅,消耗模型额度
状态 主要是文件 有会话、记忆、技能,需要能恢复、能继续
能力 只做自己的事 自己也能操作这台设备,甚至别的设备

对顶层 agent 来说:Blender 是工具,Claude Code 是下属。工具直接用;对下属是交代目标、盯进度、回答它的问题。


4. 两条路线

4.1 定义

路线 A:每台设备一个 agent,再加一个总管 agent

  • 每台设备上运行自己的 agent(Claude Code、Codex 等)。
  • 总管 agent 不直接接触设备,只给各台设备上的 agent 发消息、派任务、收结果。
  • 代表:Multica、Lody、Paseo、Orca、ChatGPT Dots。

路线 B:先把设备连成一个整体,再放一个 agent 去管

  • 每台设备装一个节点程序,像 Tailscale 一样装上就入网、开机自启。
  • 节点程序把这台设备的五层(硬件、数据、软件、服务、交互界面)都接入同一个空间。
  • 一个持久运行的 agent 站在最上面,直接操作这个整体。
  • Claude Code、Codex 在这里是设备上的软件,需要时交代给它们一个目标。

根本区别是基本单位:路线 A 的基本单位是 agent,设备只能透过 agent 被看到;路线 B 的基本单位是设备,agent 只是设备上的一种软件。

4.2 逐项对比

需求 路线 A 路线 B
P1 装起来省事 ❌ 每台都要装好、登录好 agent,配好远程,正是现在的麻烦 ✅ 每台只装一个节点程序,登录一次
P2 只跟一个 agent 说话 ✅ 总管就是那个 agent ✅ 顶层 agent 就是那个 agent
P2 例:把 Drive-In 跑起来 ⚠️ 要请那台设备上的 agent 代劳 ✅ 通过节点程序直接启动服务,挂了自动重启
P3 用上闲置资源 ❌ 总管看不到各设备的 CPU、内存 ✅ 节点程序上报资源,可挑最空闲的设备
R1 远程桌面 ❌ 没有屏幕这一层 ✅ 节点程序直接提供,不依赖任何 agent
R2 安全接管 ❌ ✅ 通过远程桌面接手,密码直接输入系统
R3 断了能恢复 ❌ 远程控制由 agent 自己提供,agent 挂了通道也断 ✅ 节点程序独立于 agent,能把 agent 拉起来;最后还有远程桌面兜底
R4 中立 ✅ 天然支持 ⚠️ 支持,但需要把各家 agent 接成设备上的软件
R5 跨设备操作文件 ❌ A 上的 agent 只看得到 A,B 上的只看得到 B ✅ 所有设备的文件在同一个空间里,一次操作完成

4.3 结论

  • 需求大部分在设备层面(装机、资源、服务、文件、屏幕、恢复),而路线 A 的总管只能和 agent 打交道,碰不到设备本身。
  • 路线 B 能包含路线 A:在 B 里,Claude Code、Codex 是设备上的软件,顶层 agent 可以给它们派任务,这就是 A 的能力。
  • 路线 A 包含不了路线 B:在 A 里,没有 agent 的地方就是盲区。
  • 远程桌面是 B 的兜底能力:agent 挂了、权限弹窗卡住、服务起不来,都可以从手机打开那台设备的桌面自己处理。

所以:路线 B 是底座,路线 A 是长在它上面的一层。


5. 现有产品调研

5.1 coding agent 远程控制类(都属于路线 A)

以下结论来自 2026 年 10 月初对各项目源码的阅读,关键点已抽查。这些产品迭代很快,细节可能已经变化。

需求 Paseo Lody Orca
开源协议 Apache-2.0 Apache-2.0(仅客户端;后端闭源) MIT
接入一台设备 装好后扫码配对,不需要账号 npx lody daemon start,浏览器登录 自己装 Tailscale,再复制配对链接
开机自启 ❌ 仅 NixOS 有现成配置 ⚠️ 仅桌面版有登录启动项 ❌
daemon 挂了能远程救回 ❌ 内置看护只重启崩溃的工作进程 ❌ 能远程重启、升级,但前提是 daemon 还连着 ❌
一个 agent 调度所有设备 ⚠️ agent 工具只管本机;跨设备要调用命令行 --host ✅ lody_machine_list 列出设备(含 CPU、内存、在线状态),lody_session_create 可指定设备 ⚠️ 命令行 --environment,或派工作者到指定设备
用设备原生的 agent 登录 ✅ ✅ ✅
远程帮 agent 安装或登录 ❌ ✅ 手机上能触发 claude auth login、codex login ⚠️ 只能在本机添加账号
手机上开终端 ✅ ❌ ✅
远程桌面(R1) ❌ 只能操控应用内的浏览器 ❌ 只能看 iOS 模拟器画面 ❌ 只能看应用内的浏览器
agent 操作桌面 ❌ ❌ ✅ macOS、Windows、Linux 都有,但只给 agent 用,手机调用不了
管理普通服务 ⚠️ 有服务脚本和端口代理,挂了不自动重启 ❌ 只有网页预览隧道 ⚠️ 只有 SSH 端口转发
加密与隐私 ✅ 端到端加密中继,不需要账号 ❌ 无端到端加密,云端能读会话内容 ✅ 端到端加密;中继只给手机用,需登录 Orca 账号
能否自托管 ✅ daemon、中继、Hub 都开源 ❌ 后端闭源,开源版被锁成单机 ✅ 本地使用不需要云
Windows ✅ ✅ ✅ 桌面版;无界面运行时只给了 Linux 文档
Hermes / OpenClaw ❌ ❌ 只同步技能目录 ⚠️ 有 Hermes 启动配置,无 OpenClaw
收费 免费;Hub 有托管版 有免费版和付费版;免费版限制会话数量和每个会话的对话轮数 代码中无收费逻辑

其他补充:

  • Paseo:单机做得最扎实(Claude 走官方 Agent SDK,Codex 走 codex app-server,其他走 ACP;权限请求推送到手机;重启后会话能续上)。安全模型是"单一主人":任何通过认证的客户端都有全部权限;通过中继连进来的客户端没设密码也会被放行;无审计日志。Paseo Hub 有设备登记和在线状态,但自称"早期开发,可能丢数据"。
  • Lody:跨设备调度最完整,但全部依赖闭源云端;共享设备给团队成员时,成员的 agent 用设备主人的系统账号运行,无文件隔离。
  • Orca:体量最大,但核心是桌面开发环境。每台远程设备只记一个地址,换网络就连不上;手机用不了桌面已连上的远程设备;SSH 部署远程 daemon 的函数已写好但未接入。

5.2 其他候选

产品 做到了什么 缺什么
OpenClaw Gateway + 配对节点;能发现并续跑节点上的 Claude、Codex 会话;Desktop 面板能看配对设备桌面;Computer Use 能操作支持的设备 Claude 在聊天中续跑需节点单独开启,macOS app 节点只读;Codex 跨设备执行时认证留在 Gateway,不是设备原生登录;配置较繁琐
Tailscale Aperture AI 网关;提供 Tailscale 和 Tailscale SSH 的 MCP 接口,agent 可把设备加入 tailnet 并通过 SSH 部署服务,每次加设备需人批准 不管 agent 生命周期;无远程桌面;Tailscale SSH 服务端只支持 Linux 和开源 CLI 版 macOS,不支持 Windows 和普通 Mac 客户端
Multica 任务看板;设备注册为 runtime,支持多种 agent CLI 无编排 agent;不管普通服务
Zeron 跨设备同步 agent 会话,常驻 daemon 无顶层 agent;依赖账号和中继
Claude Code 跨会话消息 一个 Claude 会话可按名字给其他设备上的 Remote Control 会话发消息 只支持 Claude;无资源视图
Claude Code 自托管 runner 云端 Claude 会话在你自己的机器上执行 只限 Team、Enterprise 计划;只支持 Linux 宿主机
RustDesk / MeshCentral 远程桌面;MeshCentral 还有设备列表、终端、文件 不是 AI 管家,需要和 agent 编排整合
exo 把多台 Mac 或 GPU 的内存池化跑大模型推理 只解决推理算力

5.3 共同缺口

下面四件事,在调研过的产品里都没有(不只是文档没写,源码里也没有):

  1. 开机自启 + daemon 死后的带外恢复
  2. 远程桌面与安全接管(人从手机看、操作系统桌面,密码不经过模型)
  3. 普通服务管理(启动、监控、自动重启、给出地址)
  4. 中立、可自托管的跨设备 agent 接口(只有 Lody 有,但后端闭源,云端可读内容)

这正是路线 B 要做的设备层。


6. 市场背景

6.1 personal agent 在 2026 年 8–9 月集中上线

产品 厂商 时间 运行位置
Grok Bot xAI 8 月 11 日开放 beta 每个 bot 一台厂商云电脑
DeepSeek Harness + V4-Pro DeepSeek 8 月 13 日开源(MIT) 用户自己部署
Muse Meta 9 月 8 日 云端
Claude Cowork Anthropic 9 月 16 日 云端
Dots OpenAI 9 月 29 日 DevDay 每个 dot 一台厂商云电脑,基于 GPT-6 Astra
OpenClaw / Hermes 开源 1 月 / 3 月 用户自己的机器(单台)

6.2 用户会同时使用、来回切换多个 agent

  • Hermes 推出几个月后,在 OpenRouter 上的用量就超过了 OpenClaw。
  • 社区里有相当一部分用户完全换到了 Hermes,也有不少人两个同时在用。
  • 一份 2026 年 9 月的 personal agent 行业综述未提到任何跨 agent 的管理层,并指出记忆、文件、技能、定时任务在 agent 之间的迁移至今没有方案。

6.3 大厂的 personal agent 出不了沙盒

Dots、Grok Bot 都是"每个 agent 配一台厂商的云电脑",碰不到你自己的设备,也不会管理别家的 agent。这是商业立场决定的:OpenAI 不会帮你管 Claude。中立、在沙盒之外、跨越用户所有设备这个位置,大厂在结构上占不了。


7. 技术方向

7.1 节点程序(每台设备一个)

  • 网络:嵌入 Tailscale 的 tsnet 库,或复用用户已有的 tailnet。不自己造 VPN。
  • 常驻:作为系统服务安装(macOS launchd、Linux systemd、Windows 服务),开机自启,独立于任何 agent。
  • 设备层能力:上报硬件资源;文件访问;软件清单与启动、停止、更新;服务管理(带重启策略);远程桌面。
  • 形态:一个安装包即可,里面可以包含后台服务、桌面组件和必要的系统辅助程序。不必为了"单一二进制"牺牲体验。

7.2 远程桌面(R1,必须)

  • 节点程序直接提供,只在 tailnet 内可达,手机和电脑都能打开。
  • 与 agent 无关,是所有其他功能出问题时的兜底。
  • 接管期间由程序保证人和 agent 不会同时输入;如果承诺密码不被模型看到,接管期间必须停止向模型传送画面。
  • 可参考的积木:
积木 用途
RustDesk 开源远程桌面,支持自建服务器
macOS 屏幕共享 系统自带,可走 Tailscale
Lody apps/cli/src/ios-simulator/ WebRTC 推流与触控输入的传输部分
Orca native/computer-use-{macos,windows,linux} 各平台屏幕采集与输入控制的原生代码

7.3 顶层 agent 怎么"看到"所有设备:命名空间模型

前面讨论过三种做法(把远程磁盘挂载成本地目录、自己实现一个按路径转发的执行环境、写一个带 host 参数的扩展),都默认"agent 在某一台机器上",不够优雅。

更好的模型来自 Plan 9:给 agent 一个命名空间,而不是一台机器。

/n/macmini/disk/Volumes/T7/...      所有磁盘
/n/blade/disk/C/  /n/blade/disk/D/
/n/macmini/svc/drive-in/ctl         服务:写入 start / stop,读取状态
/n/macmini/agents/claude/...        设备上的 agent
/n/macmini/screen                   屏幕:远程桌面与接管入口
  • 命名:一切都是路径。ls /n/*/disk 列出所有设备的所有磁盘;cp /n/a/... /n/b/... 就是跨设备复制。
  • 执行位置:命令自动在离数据最近的设备上执行,并且带着命名空间。cp 安排在目标设备执行,数据只走一跳。
  • 权限:给 agent 挂什么,它就只能访问什么(可只读、可只挂部分目录),权限由结构本身保证。
  • 与 pi 契合:pi 只有 read、write、edit、bash 四个工具。这个模型一个工具都不加,只是把它们能看到的世界变大。

pi 现状(读源码确认):

  • ExecutionEnv = FileSystem + Shell 接口已存在(packages/durable/src/env/index.ts),其 id 字段注释为"文件命名空间,每个容器或远程主机有自己的 id"。
  • pi-durable 的工具每次调用都通过 env 访问文件和进程,换实现即可,工具不用改。
  • 只有本机实现 NodeExecutionEnv;ExecutionEnvs 只是"每个目录一个本机 env"的缓存。没有远程、SSH、容器的实现。
  • 一个会话只能对应一个 env,所以同一个会话只能看到一台设备。
  • 存储核心可以跑在 Cloudflare Durable Objects 上,但工具执行不行。
  • 非 durable 版有一个 SSH 扩展示例(coding-agent/examples/extensions/ssh.ts),只能转到一台远程机器。

可用积木:9P 协议(WSL2 至今用它在 Windows 和 Linux 间共享文件);Tailscale 的 Taildrive(内置 WebDAV,路径为 /tailnet/机器/共享名);FUSE、macFUSE、WinFsp、rclone。

难点:网络会断(设备离线时操作必须立即报错,不能卡住);大范围扫描慢(需要元数据索引);把服务、屏幕、agent 做成"文件"需要自己写合成文件系统;各系统路径语义与权限差异。

7.4 agent 之间互相共享设备(任意节点的 agent 都能操作其他设备)

想法:不只顶层 agent 能管所有设备。任何一台设备上的 agent,只要被授权并拿到上下文,就能操作其他设备:

  • A 电脑上的 agent 通过 Computer Use 操作 B 电脑的屏幕;
  • A 电脑上的 agent 往 B 电脑的磁盘放文件;
  • A 电脑上的 agent 在 B 电脑上执行命令。

在命名空间模型里,这是自然推论:

  • 顶层 agent 并不特殊,它只是拿到最大命名空间的那个 agent。
  • 每个 agent 会话都有自己的命名空间,也就是一组权限:能看到哪些设备的哪些部分,只读还是可写。
  • A 电脑上的 Claude Code 如果被授予 /n/b/disk/Downloads 的写权限和 /n/b/screen 的控制权限,就能往 B 放文件、操作 B 的屏幕。
  • 拓扑从"一个总管 + 多个下属"变成"一张网 + 多个持有不同授权的 agent"。

本地 agent 怎么用上这张网:节点程序把它暴露给本机的 agent,可以是 MCP 服务、挂载的 /n 目录,或者一个命令行(例如 mesh exec b -- <命令>、mesh cp、mesh screen b)。这样 Claude Code、Codex 不用改,用自己的工具就能操作其他设备。

需要设计好的部分:

问题 设计要点
谁能授权 用户授权;agent 也能把自己持有的权限转授给另一个 agent,但只能给出子集(权限只能缩小,不能放大)
授权的范围 按任务授权:限定设备、路径、动作(读、写、执行、看屏幕、控制屏幕)、有效期;任务结束自动收回
agent 的身份 Tailscale 的身份是"设备",这里需要细到"哪台设备上的哪个 agent 的哪个会话"
并发冲突 同一块屏幕同一时间只能有一个控制者(租约);同一文件的写入要加锁
循环与连锁 防止 A 控制 B、B 又反过来控制 A 的循环;限制转授的层数
提示注入扩散 A 上的 agent 读到恶意网页后,可能被诱导去操作 B。所以权限要最小化,高危操作(删除、跨设备移动、控制屏幕)需要人确认
屏幕与密码 Computer Use 会把截图发给模型,和"密码不经过 AI"冲突。人接管屏幕时,必须暂停向任何 agent 推送画面
追溯与急停 审计日志要记录完整的授权链(谁授权给谁、谁执行了什么);提供一键收回所有授权的急停开关

价值:每件事都可以交给最合适的 agent 和设备组合去做。例如:GPU 机器上的 agent 渲染完,直接把结果放到 NAS;Mac 上的 agent 操作 Windows 上只有 Windows 版的软件。现有产品里,Lody 只做到"agent 给其他设备上的 agent 派会话",没有任何一家让 agent 直接操作另一台设备的屏幕、磁盘和命令。


8. 风险

风险 级别 说明
macOS 权限 高 远程桌面需要"屏幕录制"和"辅助功能"权限;访问所有磁盘需要"完全磁盘访问"。都必须在本机手动授权一次。macOS 会阻止远程点击其他应用的权限弹窗,需要第一周就做原型验证。不能承诺"授权一次再也不弹"或"PPPC 可以静默授予屏幕录制"
安全 高 一个能跨所有设备执行命令、移动文件、看屏幕的系统,一旦误操作或被诱导,损失跨越所有设备。至少需要:默认只读、显式列出可访问目录、跨设备移动和删除前人工确认、完整审计日志
网络与可靠性 中 断线、休眠、重启后任务能否正确续上,比工具设计更难
各家 agent 接口变化 中 Claude Code、Codex 等接口变化频繁;ACP 能降低但不能消除
服务条款 中 每台设备用自己的会话登录 agent;控制面不保存、不共享订阅 token
竞争 中 Tailscale(Aperture、Taildrive)、OpenClaw、Paseo、Lody 都可能往设备层延伸

9. 下一步

9.1 优先级

  1. 节点程序:装上就入网、开机自启、独立于 agent。(P1、R3)
  2. 远程桌面:与节点程序一起交付,作为兜底手段。(R1、R2)
  3. 顶层 agent:能对话,通过节点程序操作设备。(P2)
  4. 跨设备文件操作和资源视图。(R5、P3)
  5. 把各家 agent 接成设备上的软件。(R4)

9.2 先验证,再自建

在动手写之前,先用一台 Mac 和一台 Windows 做小范围验收:

测试项 通过标准
新设备接入 记录步骤数、耗时、是否需要人在设备前
启动 Drive-In 一句话完成,返回可访问地址
派任务给 Claude、Codex 使用的是那台设备原生的登录
远程桌面与接管 从手机打开桌面,完成一个权限弹窗或密码输入
断线恢复 杀掉 agent 进程或断网后,能否不到现场恢复
设备重启 节点和 agent 能否自动回来
切换 agent 接入一个新 agent(如 Hermes)要花多少功夫

优先用 OpenClaw 测完整流程,用 Aperture 测最省配置的服务管理路径。如果它们能过,就补安装、引导和恢复体验;过不了的项,就是自建的重点。

9.3 命名空间模型的最小实验

  1. 用 Taildrive 或 rclone 在两台 Mac 上挂出 /n/<设备>/...;
  2. 给 pi-durable 写一个最小的 MeshExecutionEnv,只实现"按路径选设备执行";
  3. 观察 agent 只靠四个工具,能否自然完成"把文件移到 Mac mini 的外接硬盘""把 Drive-In 跑起来"。

10. 来源

产品与文档

市场

macOS 权限