探索在虚拟环境中管理多个 AI agent,解决 AI 编程中的等待空闲问题。新颖工作流值得参考,但成熟度有限。
AI 编程会制造出许多空档期。当一个 Agent 正在思考、构建或测试时,你很容易忍不住再启动一个。
这样很快就会演变成多 Agent 编程。四五个工单可以同时推进,但它们产生的 diff 仍然需要人来检查。
只有终端还不够。我需要看到 Agent 正在修改的代码和 diff,而不只是 CLI 对话记录。
物理显示器存在上限。普通书桌可以摆下几块实用的显示器,但到了五块,空间和观看角度都会开始崩溃。
所以我用 VR 编程。我不是在推销 VR,也不认为它就是标准答案。我使用它,是因为它能让我在同一视野内同时看到 4~5 个 Agent。
Immersed 和 Overay 是我搭建这套工作空间的两种方式。一个快速、固定;另一个手动、灵活。
AI 编程带来了一种奇怪的新型空闲时间。Agent 开始编辑,然后停下来思考、运行测试、等待构建,或者执行计划到一半卡住。坐在那里看着一个任务缓慢推进实在无聊,于是我发现自己会利用这段时间,在另一个工单上启动另一个 Agent。在我的工作流中,这很快就成了常态:一个开发者、多个 Agent、多个任务同时推进。
启动它们很容易。麻烦的是盯住它们。
这里说的“盯住”,并不是盯着五个 Agent 终端看。终端展示的是 Agent 讲述的故事;编辑器和 diff 才是证据。为了保证这套工作流的安全,我需要同时看到代码、diff 和 Agent 日志。
现在我的日常流程很简单:同时启动四五个 AI Agent,把不同代码仓库中的不同任务分别交给它们,然后让各自的 VSCode 窗口始终保持可见。typia、nestia、autobe、ttsc——这些目前轮换处理的代码仓库都不是什么玩具项目。它们处在编译器、框架、Agent 和工具链的边界地带,这意味着一次糟糕的投机取巧,造成的影响可能远比 Agent 总结中承认的更广。
所以,显示器的配置比我原先预想的更重要。AI 编程改变的不只是我能产出多少代码,也改变了我的工作空间必须向我展示什么。一个开发者可以启动多个 Agent;真正的限制因素变成了:它们工作中那些危险的部分,能否始终保持可见。
但要让这一切真正运转起来,必须满足一个物理条件:
全部 5 个 VSCode 窗口必须能放进同一个视野。
我并不是真的在同时阅读 5 个窗口。我是人,一次只能看一个地方。但当 5 个 Agent 都在重写代码时,这 5 份 diff 必须出现在我视野中的某个位置。
我的 typia Go 迁移灾难只是其中一个例子。Agent 可能删除测试、随意引入第三方库、绕开真正困难的部分进行重写,或者用一份全绿的总结掩盖已经腐烂的 diff。这并不只发生在我身上;同时运行多个编码 Agent,却没有足够频繁地检查它们,本来就会面临这种常见风险。
我从那场混乱中得到的教训很简单:不要相信总结,要亲自阅读 diff;不要把一项巨大的任务扔给 Agent 通宵执行,然后一觉醒来就指望它可以直接合并。
问题在于:无论在家还是办公室,我都没有找到一张能让 5 块显示器保持人体工学合理性的书桌。通常,两块外接显示器加一台笔记本电脑,就已经到达极限。桌面宽度和观看角度差不多都会在这里耗尽。而且这种配置根本无法随身携带。
这里不是在鼓吹 VR。只是对我自己的多 Agent 工作流来说,它恰好能让所有 Agent 保持可见。
我仍然使用实体键盘打字,笔记本电脑也仍然是实际运行任务的机器。VR 只是显示器层:我用它排列需要监控的 VSCode 窗口、终端、diff、日志和 Agent 对话记录。
实际使用时,我通常会把每个 VSCode 窗口分成两部分:一侧是运行 Codex 或 Claude Code CLI 的终端,另一侧是它正在编辑的源代码,或者它正在生成的 diff。具体使用哪个 Agent 并没有那么重要。重要的是,Agent 说了什么和 Agent 修改了什么,必须并排放在一起。
与其说我的工作空间是一整面终端墙,不如说它更接近下面这种布局:
当每个 VSCode 窗口都按这种方式拆分后,就轮到 VR 接管了。Immersed 或 Overay 会把这些窗口变成独立的虚拟显示器,让我可以在周围同时打开多组代码与 Agent,而不必把它们层层堆叠在一个拥挤的桌面上。
我不太把它们当作 VR 应用,更愿意把它们看成构建监督布局的两种方式。
Immersed——快速、固定的监控面板。它几乎不需要配置,就能为我提供一套可重复使用的五屏工作空间。
Overay desk——它的名字确实就叫 Overay。在我的配置中,它是一块手动搭建的监控面板:排列起来更费功夫,但塑造布局的自由度也更高。
两者的原理相同。在笔记本电脑上安装 streamer 应用,在头显上安装 client 应用,将两者配对,笔记本电脑的显示输出就会流入虚拟显示器。我并不太在意 VR 技术本身。我在意的是,显示器数量、距离、曲率和位置都变成了可调参数,可以服务于我监督 Agent 的方式。
当我希望用最少的折腾让工作空间准备就绪时,我会使用 Immersed。它最大的优势是五屏吸附布局。我把屏幕放到大致位置,它们就会自动吸附成整洁的排列,于是我不必花五分钟用手一点点挪动悬浮矩形,就能开始监督 Agent。对于监控来说,固定槽位很重要,因为每个 Agent 都会待在可以预期的位置。下面的截图展示的正是这一版本的配置。
代价是,这种便利来自预设模板。对于高分辨率屏幕,宽高比基本被限定在 16:9 或 9:16 这类形状中。我可以从它支持的布局里选择,却不能像在 Overay 中那样,自由塑造宽度、高度和宽高比。免费版与专业版之间的区别也很重要:免费方案足以用来测试这套工作流,但我的五屏高分辨率配置,正是那种会把我推向付费方案的使用方式。
意外的优点是氛围。Immersed 提供了不错的虚拟背景,而这件事比听起来重要。如果我要坐在那里连续三个小时看代码变化,一个干净的视觉环境确实会有所帮助。它会让头显少一点“调试头盔”的感觉,多一点私人工作室的感觉。
Overay 则正好相反。在我的配置中,它最多可以放置六块屏幕,而且控制界面的开放程度高得多。宽度、高度、分辨率、宽高比、距离、角度、曲率——几乎所有东西都可以调整。如果我想要一块竖向长屏、一块用于日志的超宽屏,或者一块显示仪表盘的近似方形屏幕,Overay 都能让我搭建出来。
这种自由同样也是它的成本。它需要更多手动设置。Immersed 给我五个槽位,然后说:“就用这些。”Overay 则给我一块大得多的手动画布,然后说:“你自己安排。”
尝试过许多种布局之后,我发现自己在编程时其实并不喜欢把横屏和竖屏疯狂混搭。对我而言,最舒服的布局依然很简单:四块屏幕排列成矩形,需要时再在附近放置额外的屏幕。四屏矩形是活跃 Agent 所在的位置;额外屏幕则用于日志、低优先级任务或辅助上下文。这样既能获得我想要的密集视野,又不会把整个工作空间变成视觉噪声。
想象一下,真的把五六块物理显示器放到书桌上。观看角度很快就会变得糟糕。人的头本来就可以左右转动;VR 让我利用这种头部运动,而不是与它对抗。工作空间不再受困于书桌的平面,而是可以环绕在我周围。
更多显示器并不是目标。让 Agent 保持可见才是。
我曾经因为让一个 Agent 脱离监管太久而吃过亏。那次 80 亿 token 事件——它把整个 transformer 做成了 lookup table——发生在我睡觉期间。这个数字荒谬得离谱,但教训非常普通:检查间隔一旦拉得太长,Agent 就可能在错误方向上一路狂奔,等我发现时已经走出很远。
所以,我现在的循环是:
几乎同时在 5 个项目上启动 5 个 Agent。每个 Agent 分配不同的任务。
在头显中快速扫视这 5 个窗口。我看的不只是 Agent 终端,还希望编辑器和 diff 同时可见,因为真正的破坏最先会在那里显现。我一次只能阅读一个窗口,但周边视觉很擅长捕捉移动和突然出现的大幅变化。当某个窗口突然刷过一份 100 行的 diff 时,我的眼睛会本能地转向那里。
一旦感觉不对,我就会停下来。“等等,它为什么在修改测试文件?”——凭直觉检查,叫停 Agent,然后仔细阅读 diff。
我并不是在同时深度审查五份 diff。我是在寻找异常:测试文件发生变化、出现新的依赖、出现与任务无关的巨型 diff、snapshot 被重写、fixture 被删除,或者任何让人怀疑 Agent 正在针对测试做优化,而不是完成任务的迹象。深入审查仍然需要逐个 Agent 进行。VR 只是让这些早期预警信号保持可见。
在每个窗口中,我会同时关注对话记录、已修改文件、diff、终端输出和测试输出。一旦某个信号触发,我不会让 Agent 给出一份令人愉快的总结,然后继续往下走。我会暂停它,把对话记录与已修改文件进行比较,亲自阅读 diff,检查被改动的测试和依赖,并在需要时运行范围较小的测试。如果这次运行的问题严重到让我觉得不对劲,我就会直接丢弃它。我想赶在一份小型错误 diff 演变成一次规模庞大、语气自信的重写之前,抓住那个关键时刻。
到了这里,我桌面上的物理显示器就不够用了。试着把一块外接显示器分成 4 个区域——每个窗口的字体都会缩小到让你无法一眼看清到底改了什么。VR 不一样。每一块虚拟显示器都可以大到像真正的桌面显示器一样清晰可读。只要转一下头,就能把一块全尺寸屏幕带入视野。
每当我写这种文章时,总会有人问:这样不会不舒服吗?
会。我不会在这件事上撒谎。
戴上它需要时间。取出头显、开机、在笔记本电脑上启动 streamer、在 VR 中启动 client,再把两者配对。即使已经很熟练,整个过程也需要 1~2 分钟。而显示器只要打开笔记本电脑就会立刻亮起。
暂时离开也有成本。去洗手间、拿点零食——摘下头显本身就是一件麻烦事。头发会被压扁,眼镜会留下压痕,再戴回去时还得重新调整贴合度。
还有重量。这因人而异,但有些人戴久了确实会觉得脖子有负担。即使是“轻量”头显,也仍然是一个绑在头上的东西。
这些都是真实存在的缺点。VR 想达到物理显示器那种随开随用的程度,还有很长的路要走。
但同样的不适感也带来了一个奇怪的好处。对我来说,启动成本——花 1~2 分钟戴上头显并启动应用所产生的摩擦——会反过来发挥作用。
一旦戴上,我就不想再摘下来。所以我会一直坐在那里。
想想我平时只用笔记本电脑是怎么工作的。构建开始运行,Agent 暂停下来,一套测试需要 30 秒才能完成,上下文便开始流失。我会打开另一个任务、回复一条消息、查看一个无关的标签页,原本的思路也随之逐渐冷却。
VR 并不会让分心变得不可能。我仍然可以打开聊天、浏览器标签页和其他任何东西。真正改变的是默认路径。当头显已经佩戴妥当、屏幕已经排列完成、代码悬浮在我周围时,继续留在编程循环中,就成了阻力最小的选择。而且,摘下头显还会产生重新调整佩戴状态的成本,所以我干脆不会摘。
结果就是:当我身处 VR 时,经常会坐在同一个位置连续编程 3~4 个小时。Agent 始终待在我面前,因此我会不断检查它们,而不是走神离开,回来后再面对一份来历不明的巨型 diff。
令人厌烦的部分,也正是让我留在那里的原因。
这和去咖啡馆工作是同一个道理。正因为到达那里需要付出成本,所以一旦到了,你就会努力让这一趟值得。VR 就是那家装在我头上的咖啡馆。
这就是我最终形成的工作流:每个 Agent 分配一个 VSCode 窗口,每个窗口都把 CLI 放在代码或 diff 旁边,而 VR 则为这些窗口提供足够的空间,让它们始终清晰可读。
这就是我持续使用它的全部原因。我并不是想让编程看起来更有未来感,也不是在劝所有人都去买一台头显。我只是想避免多 Agent 编程变成一堆自信满满的总结,直到造成破坏之后我才去检查。
这套配置并不顺畅。它比打开一台笔记本电脑更重,启动更慢,使用起来也更别扭。但一旦进入其中,这些摩擦就会反过来帮助我。我会继续坐在那里,让 Agent 始终处于视野中,并缩短检查间隔。
对我来说,VR 编程不是为了逃离书桌,而是为了在糟糕的修改不断叠加之前,让 Agent、代码、diff 和测试输出始终保持可见。
下面的内容都是实际配置细节:头显、头带,以及一个偏离主题、但恰好让我持续把这台设备纳入日常习惯的额外用途。
接下来写给那些读到这里,并且想知道我实际使用什么设备的读者。
目前我使用的是 Meta Quest 3。Overay 和 Immersed 都能在上面流畅运行,它也足够可靠,可以支撑我日常使用五屏工作空间。价格、重量、透视效果、应用兼容性,以及能否低头看到真实键盘,在这里都很重要。如果零售价太高,只要设备状况良好,购买二手产品也是一个实际可行的选择——我的设备就是花 300 美元买来的二手货。
我最直白的建议是:不要根据默认头带来评价 Quest 3。短时间玩游戏时,它或许还可以忍受;但如果用于编程,我会把它视为需要立即更换的配件。
更难做的选择在于头带。大多数人追求的是“更轻”,但真正戴着它编程数小时之后,我会在意两个不同的指标:总重量和重量分布。它们并不是一回事。
轻量头带是最容易优先推荐的。它能让整套头显设备保持较轻,因此戴起来没有那么令人抗拒,对颈部也更友好。
缺点是重心偏前。由于大部分重量仍然集中在显示模组周围,长时间使用时,头显可能会压迫额头或颧骨。它确实很轻,但并没有实现完美平衡。
后置电池头带解决了平衡问题。把电池放在脑后,前半部分就不会再让人觉得它一直在把头显从脸上往下拽。
这也是我实际使用的方案。它更重,但平衡性更好;对于我的编程时长来说,这一点更加重要。
不过,这并不是一种适用于所有人的升级。单独的 Quest 3 在安装头带配件之前大约重 515g,而我的电池头带配置总重约为 1.3kg。如果你的颈部很容易疲劳,增加的重量本身也可能成为另一个问题。
取舍很简单:轻量头带降低了总重量,但仍会给面部带来一些压力;电池头带能更好地平衡头显,却会给颈部带来更大负担。续航时间变长只是一项附加收益。
这一部分只是一个顺带的额外用途:同一台 VR 头显也可以作为健身器材。
我实际玩的是 The Thrill of the Fight——一款 VR 拳击游戏。它的好处很简单:它会迫使我闪避、格挡、移动脚步和出拳,而不是一直坐在那里。十五分钟就足以让我出汗。
这里没有什么深刻的理论。它就是很实用。当我的大脑在编程过程中陷入停滞时,我可以拿起同一台头显,在屋顶快速打上一场,擦干汗,然后回来继续工作。
而且,它会反过来融入编程循环。当我的头脑变得迟钝时,一次短暂的身体重启,能让我重新回到同一个监控界面,而不是浪费掉整个下午。这台头显最初只是用来监督五个 Agent;它之所以一直留在我的日常工作中,是因为它能帮助我以可持续的方式维持这个循环。
VR 桌面应用
Immersed——配置简单、五槽吸附布局、虚拟背景
Overay desk——手动控制布局,在我的配置中最多支持 6 块屏幕
Immersed——配置简单、五槽吸附布局、虚拟背景
Overay desk——手动控制布局,在我的配置中最多支持 6 块屏幕
形成我监督习惯的失败经历
AI 删除了我的测试,却声称所有测试都通过了
AI 删除了我的测试,却声称所有测试都通过了
文中提到的高影响范围代码仓库
typia
nestia
autobe
ttsc
如需采取进一步行动,你可以考虑屏蔽此人和/或举报滥用行为。