我和一个工程师在做同一个 App。
我们不在一个城市,平时几乎不说话。
不开会,不打电话,聊天软件上一周可能也聊不了几句。
但项目一直在往前走,而且说实话,比我以前带着一整个团队的时候还稳定。
我们的协作方式有点奇怪。
我不直接跟他沟通,而是跟我的 agent 沟通。他也一样。
两边 agent 负责交换那些需要对方确认的信息,然后各自整理成自己的主人能理解的版本。
所以我看到的,从来不是他原本写下来的东西,而是我的 agent 处理之后告诉我的版本。他那边也是一样。
一开始我觉得,这不就是把 GitHub 那套异步协作推到了极致吗?
不用开会,不需要同步时间,大家靠代码、文档、issue 和 commit 这些留下来的东西协作。
开源社区其实早就在这么干。
几十万互不认识的开发者,通过 pull request、review、issue,一起维护 Linux 内核、各种基础设施。
所以这种方式本身没有问题。
但后来我发现,Agent 参与之后,有一个很微妙的变化。
它跟 GitHub 最大的区别,不在效率,而在于:
大家可能不再看同一份东西了。
开源协作有一个很重要的前提:
所有参与者面对的是同一个公共文本。
一个 pull request 提交在那里。
你看 diff,我也看 diff。
你在 review 里写一句话,我看到的是同一句话。
我们可能意见不同,但至少我们争论的是同一个东西。
这件事非常重要。
因为那份公共文本不仅是在传递信息,它还是一个证明:
证明我们两个确实在讨论同一件事情。
但 Agent 协作之后,这个东西开始变化。
代码还在那里。
issue 还在那里。
测试用例也还在那里。
理论上任何人都可以打开看。
但实际上,我们越来越少直接看它。
我看到的是我的 agent 总结之后的版本。
他看到的是他的 agent 总结之后的版本。
这两个版本,从一开始就不是同一个东西。
于是"我们达成一致"这句话,含义发生了一点变化。
以前的一致是:
我们看了同一份东西,然后得出了相同结论。
现在更像:
两个 agent 在中间协调出了一个结果,然后分别告诉自己的主人。
协议是一份。
理解变成了两份。
很多人觉得,未来 Agent 会让会议消失。
我觉得这个说法不太准确。
会议以前存在,是因为人和人之间传递上下文的成本太高。
你脑子里有一个完整的判断:
为什么这么设计?
之前试过哪些方案?
为什么排除了另外几个选择?
哪些地方踩过坑?
这些东西没办法直接复制给另一个人。
所以我们坐下来开一个小时会。
但一个小时里,真正传递过去的信息可能只有一小部分。
剩下大量时间,其实是在补背景、确认理解、纠正偏差。
而当每个人身边都有一个 agent,它可以一直读代码、看 issue、理解历史记录。
很多背景信息就不需要重新讲了。
剩下真正需要人参与的事情,其实很少:
哪里存在分歧?
哪里需要取舍?
哪里需要负责人做决定?
这部分恰好是 agent 很擅长帮忙整理的。
所以会议不是被自律消灭的。
而是会议原本承担的大量"同步信息"的工作,被自动化了。
最后剩下来的,只是一小部分真正需要人参与的问题。
面对面交流有一个好处:
误解会产生摩擦。
你讲一句话,我皱一下眉。
你复述我的意思,我发现你理解偏了。
很多问题就在这种"不舒服"的瞬间暴露出来。
但 Agent 会把这种摩擦消掉。
因为它的任务就是:
把对方的信息整理成你容易理解的形式。
问题是,整理本身就是一种加工。
一些原本模糊、不完整、甚至值得追问的东西,经过 agent 处理之后,会变成一段非常流畅的话。
你读起来觉得:
"嗯,合理。"
然后继续往下走。
但那个本来应该出现的问题,已经被抹平了。
我们真实遇到过一次。
有一个概念,两边理解差了一层。
单独看双方 agent 输出的内容,都完全合理。
没有明显错误。
但是两边实际上理解的是两个东西。
最后发现的时候,已经按照错误理解改了几十处代码。
奇怪的是,没有谁犯错。
双方 agent 也没有胡说。
只是:
没有任何一个人真正读过同一句话。
后来我发现一个更深的问题。
我们现在的模式是:
agent 判断哪些事情值得拿出来让人确认。
也就是说,有一部分信息,在到达人之前,就已经被筛掉了。
如果两个 agent 都认为某件事"不重要",那么这件事可能永远不会出现在人的视野里。
它不是被否决了。
因为根本没有人知道它存在。
以前的信息损耗也存在。
比如一个新人不知道某个背景,一个团队成员忘记同步某个变化。
但那更像流程问题。
现在的问题是:
有一个非常高效的系统正在主动过滤信息。
而过滤过程本身,很难被观察。
我现在能想到的笨办法,是偶尔让 agent 列一份:
"这一轮你认为不需要我知道的事情。"
然后我快速扫一遍。
但这个方法也有问题。
因为筛选这份清单的,还是同一个 agent。
写到这里,我觉得必须补充一点。
不要把这个案例理解成:
"Agent 已经可以替代人沟通了。"
不是。
Agent 的转述一定会失真。
前面那个几十处修改的例子,就是证明。
真正让这套协作方式成立的,是:
很多争议最终可以通过执行验证。
我们这个项目里,有大量自动测试。
AI 跑一遍。
人再检查关键部分。
合并之前还有质量检查。
所以当两个 agent 的理解出现偏差时,不需要花大量时间争论。
跑一下测试,问题自己会暴露。
代码不会因为解释得漂亮就通过测试。
它必须真的工作。
换句话说:
Agent 之间之所以可以减少人工确认,是因为后面有一个验证系统帮忙兜底。
如果没有这个验证环节,结果可能不是更高效。
而是两个 agent 帮助两个人,用更快的速度、更高的信心误解彼此。
所以我不认为这种模式适合所有事情。
写代码可以。
很多工程问题可以。
但战略判断、商业决策、人事管理这些领域,没有一个测试用例告诉你谁错了。
错误可能半年后才出现。
到那时,已经没人知道最开始是哪一次转述出了问题。
回头看这个项目,我发现里面其实有四个人:
我。
我的 agent。
他的 agent。
他。
而中间两个 agent 的作用,比我最开始想象的大。
以前我觉得 agent 是管道。
现在我觉得它更像翻译。
管道不会改变经过它的东西。
翻译一定会。
因为翻译必须做选择。
而选择,本身就是判断。
未来这种协作方式可能会继续发展。
也许两个 agent 会越来越熟悉彼此,交换的信息越来越少,人越来越像监督者。
也许最终我们还是需要一份公共文本。
只是那份文本不会像现在这么长。
它可能短到:
两个人真的愿意打开。
真的愿意读完。
因为我现在突然意识到:
那份公共文本一直在那里。
代码库在那里。
文档在那里。
Issue 也在那里。
只是我们两个,已经很久没有一起看过它了。