记录一次 Agent 实况级协作体验。


两个人类,三个 Agent,一个没有冲突的下午


Google Docs 在 2010 年前后教会了所有人一件事:


多人可以同时在云端编辑同一份文档,改动即时可见,冲突自动解决。


这种体验后来成了协作类软件的默认设定,飞书、腾讯文档、Notion 都建立在这个前提之上。


但到了 Agent 时代,这个时刻至今还没有出现。


一个公司内的每一个部门里的每一个人,都需要单独开一个 Claude Code 或 Codex,Agent 之间无法「交互」。


没出现的原因,大致有 3 点。


【1】厂商之间有「生殖隔离」


每个人用的 Agent 来源不同,有人用 Claude Code,有人用 Codex,有人用Opencode,它们各自在自己的运行时环境里,没有一套通用方案能把它们真正放到一起。


【2】个人边界太强


现在的 Agent运行时环境都是围绕单个用户设计的,不管是本地电脑模式还是云端电脑模式,主语始终是「我」。


想和别人协作,物理设备本身就是一道越不过的墙。即使离开了自己的本地工具、配置、账号凭据,将 Agent 放到云端,依然会面临每个 Agent 沙箱的边界隔离问题。


【3】 Agent 底层协作困难


今天的 Agent 都和沙箱一对一绑定,每个 Agent 活在自己的「平行宇宙」里,它们之间缺少可实时同步上下文、共享资源、互相调用的通道,只能在事情完成后,通过网盘的上传下载、部署,或者在群里发送结果,来交换各自的产物。


实时协作需要的是一种新方案,能把这些 Agent 放进同一个「时空」。


所有原因叠加在一起,结果就是 Agent 越强,人在中间搬运上下文的工作量越大。复制粘贴、上传下载、总结背景、转发进度,这些「为了让工作能继续而做的工作」没有减少,反而随着 Agent 数量增加在变多。


虽然难点重重,但也有从产品创立之初就「全力押注」Agent 实况协作的团队,而这个团队在 8 月 24 日发布了正式产品 ——


Tutti · VM


两个人类,三个 Agent,一个没有冲突的下午


在讲解这个产品之前,我们决定先把现在市面上的方案过一遍,才能回答:


【1】我们离「Agent 届的 Google Docs 时刻」到底还有多远?


【2】Tutti · VM 的产品逻辑是什么?产品价值到底在哪里?


Agent 经历了 4 次尝试


现有的探索大致有四条路线,代表性的形态分别是:Slack(群聊 Bot)、CrewAI(多 Agent 编排)、Devin/Replit Agent(云端数字员工),以及 Claude Code/Codex(Remote Control)


每一类都解决了一部分问题,也各自离那个「Google Docs 时刻」差着一段距离。


两个人类,三个 Agent,一个没有冲突的下午


【1】IM / 群聊类。


这类方法主要是把 Agent 拉进频道,让它被 @、任务执行完成后再回复消息、同步进度,Agent 之间传递的主要是消息和摘要,执行任务的实时过程依然跑在各自的本地电脑或者云端沙箱里,彼此无法看见。


如果拿 Google Docs 来类比,这相当于停留在「把文档截图发到群里」。


【2】本地多 Agent 编排类。


这类方法主要解决的是一个人管多个 Agent,可以同时开更多并行任务,效率确实提高了。但它面向的是个人,本身不涉及多人协作,就算勉强协作,也很难跨过物理机器的隔离。


【3】云端数字员工类。


这类方法是目前最常见的,例如 Devin、Replit Agent。


其主要是把 Agent 整个搬到云上,你在浏览器里就能让它干活,也方便把链接发给别人看。


快速分享产物的问题解决了,但因为 Agent 沙箱隔离的原因还是没有解决 Agent 之间的实时协作问题,而且需要你进入它的工具体系,自己本地的工具生态和文件都带不过去,要重新适应一套环境,并且再为它提供的 Agent 能力付一次费。


【4】Remote Control


Claude Code 今年 2 月上线的 Remote Control 和 Codex 的同类功能是这个方向最典型的例子,它们的工作流是让会话继续跑在你自己的电脑上,文件、凭据、本地配置都可以不动,而你可以从手机、平板或任意浏览器接着指挥。


但仔细看会发现这个工作流的本质是 Agent 在我的电脑上干活,我从别的设备盯着它。


没有其他协同者可以参与进来。


从这个角度来看,桌面 Agent 越普及,Claude Code、Codex、Cursor 人手一个,「Agent 实况干活」的缺口只会越来越大。


这4次尝试都具有一定真实价值,主要目的是让我们可以同时发起更多的并行任务,但这些并行任务必须是边界清晰的。


而在复杂的工作中,协作者之间的任务往往是相互依赖的,真正的并行协作还要求Agent 能有效分工、共享环境和状态、协调冲突并汇总结果。


这时候再回来看 Tutti · VM 。


两个人类,三个 Agent,一个没有冲突的下午


它的产品逻辑是把大家连接起来,先尝试解决的是「我们的工作在哪相遇」。每个人的 Agent 放在各自电脑上跑,工作实况天然产生在同一个云端 Room 里。将大家连接起来后,就能发生很多有意思的事情,比如实时共享和实时协作。


共享和协作的中心,也变成了多个人和他们各自的 Agent。


换个说法,Remote Control 服务的仍然是你一个人和你的 Agent,只是让你离开座位也能接着用。Tutti · VM 服务的是一群人和他们各自的 Agent,整个团队和各自的 Agent 围坐在同一张会议桌前,所有人都能看到彼此在干什么


Agent 留在本地,现场搬到云端


根据官方信息,Tutti · VM 把自己定义为行业「首个实况级」多人、多 Agent 实时协作空间,其把本地工具和云端工具的优点结合到了一起。


它的机制大致可以分为三点:


【1】每个人的 Agent(目前支持 Claude Code、Codex)继续跑在用户自己的电脑上,利用用户已有的订阅、配置和 skills。


【2】Agent 的指令经过多层虚拟化,由系统决定这条指令到底发往物理机、本地虚拟机还是云端,协作者在云端共享同一个运行时环境。


【3】云端 Room 成了所有人与 Agent 的「实况空间」


谁改了代码、Agent 在干什么、最新产物是什么,大家在同一个房间里彼此可见、随时复用。


概念讲到这里,产品逻辑算是基本理清了。


官网也给了一些和其他现有工具的能力对比:

两个人类,三个 Agent,一个没有冲突的下午- Tutti · VM开始内测



下面,我们再来看看 Tutti · VM 实际上是如何使用的。


我们深度实测了几天,接下来分享我们的真实体验。


一个工程师,一个设计师,一个 Room


现在,我们来看这个场景:


我们有团队成员 Vibe Coding 了一个叫做 Crossing Writing 的网站,主要就是 AI 类目的专业信息做个有反向链接的知识库。  但 UI 设计略粗糙、代码架构、前端逻辑也略粗糙。  这次负责更新迭代的是两位同事,工程师用户 A 和设计师用户 B,他们共同进入 Tutti · VM 的同一个 Room。


先简单介绍下这两位同事:


用户 A:工程师,手里有一堆 Agent 产品订阅,Claude Code Max 账户、Codex Pro,主要工作是日常开发,做产品初版。


用户 B:UI 设计师,手里几乎没有 Agent 产品订阅,但是有设计 Taste,做设计把关。


接下来,我们按照他们的真实工作流讲解下 Tutti · VM 。


1.建立 Room,两人加入


首先,Tutti · VM 的官网网址是:


https://tutti.sh


下载之后,我们登录完账户,就可以直接进来主页面创建 Room 。


两个人类,三个 Agent,一个没有冲突的下午


在这个 Room 内部,我们可以一键把邀请信息发送给对方。


两个人类,三个 Agent,一个没有冲突的下午


用户 B 拿到邀请信息后就进入了 Room,可以直接看到 Agent 看板,上面会显示整个 Room 内所有正在执行、已经完成和失败的任务(包括用户 A 所执行过的任务)。


两个人类,三个 Agent,一个没有冲突的下午


下面来看看具体的协作开发流程。


2. 创建项目


对于新的项目,可以直接启动,项目直接就会在 Tutti · VM 中创建,所有协同者立即共享。


如果是历史项目,可以直接在 Tutti · VM 中导入 Local Project。


两个人类,三个 Agent,一个没有冲突的下午


或者也可以在终端中使用 Git 进行 Clone。


两个人类,三个 Agent,一个没有冲突的下午


3. 工程师用 Tutti · VM 搭初版


用户 A 也就是工程师,他的工作流程一般是先用 Tutti · VM 搭建初版。在进入 Tutti · VM 后,就可以一键关联电脑本地的 Codex 和 Claude Code,等于说在 Tutti · VM 里的开发所用到的 Agent 都是本地 Agent:


两个人类,三个 Agent,一个没有冲突的下午


工程师搭好项目后,设计师就可以直接进来使用这个项目,不用再自己折腾一遍环境。


同事 A 一般会把 Codex 和 Claude Code 搭配使用,比如用 Codex 做主力开发、搭建骨架,用 Claude Code 负责审查和规划。


用 Claude Code 完成规划和审查之后,可以直接在 Codex 的页面里使用「Big @」功能。它能引用其他 Agent 的会话、文件、任务、应用等上下文。


这样 Codex 就可以在对话框里直接引用 Claude Code 做审查和规划的那个会话。


两个人类,三个 Agent,一个没有冲突的下午


比如用 GPT 5.6 Terra 模型,@  Claude Code 里的审查会话,让它复盘整个项目,找出 10 个在代码结构和交互上可以改善的点,整理成一份 Todo List。


两个人类,三个 Agent,一个没有冲突的下午


Codex 就会基于 Claude Code 的上下文,按重要级别给出一整份 Todo List,覆盖补齐项目、工作台、路由框架骨架等内容。


两个人类,三个 Agent,一个没有冲突的下午


有意思的是,在这个 Room 里,用户 B 可以通过 Agent 看板实时看到用户 A 整个项目的进展。


两个人类,三个 Agent,一个没有冲突的下午


比如他可以站在设计师的视角查看这份 Todo List,直接在聊天对话框里发表意见,指出整个项目在设计上存在的逻辑问题。


两个人类,三个 Agent,一个没有冲突的下午


工程师可以按照设计师的想法进一步修改。反过来,设计师在聊天框里也能用 Big @ 引用工程师的上下文,自己上手修改,这一步非常有意思。


跨人、跨 Agent 的 session 引用,改变的是提需求的方式。比如工程师的对话流里有非常多技术向的表达,像是整个 Crossing Writting 项目的交互为什么这么设计。


这些对于设计师来说原本可能是读不懂的,也复述不出来。现在他只要在自己的对话框里 @ 上工程师的这条 session,这些内容就作为上下文被完整带了过来,他只需要用设计语言描述自己想要的结果,具体怎么落地代码上由 Agent 结合已有上下文去判断。


两个人类,三个 Agent,一个没有冲突的下午


某种程度上,引用会话本身就是一次「借能力」。设计师借的是工程师和他的 Agent 已经完成的技术判断,跳过了「先把需求翻译成工程师听得懂的话,再等工程师翻译给 Agent」这一层。


跨职能协作里最耗时的部分往往就在这两次翻译上。


使用过程中我还发现,做完一个项目之后,项目直接就可以在沙盒里运行,非常好用。


具体效果如下,我们做的这个 Crossing Writing 是一个非常大的知识库,里面加载了多个 Concept,每个概念都标注了对应的公众号或出处来源,并且采用多嵌入机制。


直接在沙盒中运行之后,它会通过一个 Localhost 地址打开。


两个人类,三个 Agent,一个没有冲突的下午


这是因为 Room 里的协作者共享的是同一个运行时,Localhost 不再只属于开发者本机,谁在房间里谁就能直接访问。如果你在继续开发和调整,对方都可以实时看到最新版本,不需要重新部署、重新发送。


如果对方需要参与开发,加入 Room 就从看结果切换成了实时协作,也就是用户 A 和用户 B 现在的情况。


两个人类,三个 Agent,一个没有冲突的下午


除了这种在 Room 里用 Localhost 共享路径之外,对于 Room 之外,不参与协作、只需要看结果的人,你可以在 Room 的文件夹里找到对应的 html 文件,点击分享拿到链接,把链接发出去就可以。


对方可能是你的老板,也可能是客户。他们不需要下载 Tutti · VM,不需要加入 Room,也不需要你先把项目部署到任何服务器上,在自己的浏览器里打开链接即可。


当设计师用户 B 也能看到 Agent 实况空间里发生的一切之后,他肯定会有更多需要用 Agent 执行的需求,比如改造整个项目的 UI