我最近的工作形态变了个样。屏幕上常常同时开着好几个 AI 智能体的会话:这个在查资料,那个在跑数据整理脚本,还有一个在收拾积攒多年的文件夹。人不再逐字逐句地干活,而是坐在中间当调度:读产出、下判断、发指令。听上去很风光,实际上很快就生出一种新的毛病——哪个会话一跑完,角标一亮,我的眼睛就飘过去了。手头正读到一半的东西搁下,先去拆那个新出炉的结果;拆完这个,另一个又亮了。一晚上下来,处处都动了几下,深下去的没有几处。
前两天我把这个毛病拿去问 AI:是否应该处理完当前会话、回复完,再去看新完成的?它给我的答案,比我问的问题走得更远。这篇随笔就是那场讨论的整理。
痒从哪里来
先解剖这股”被吸过去”的痒。第一层是中断机制:通知、角标、红点,本来就是为抢夺注意力设计的,这一层人人皆知。第二层更深:每一个跑完的会话,都是一台微型老虎机。它可能跑出漂亮结果,也可能跑得一塌糊涂,不拆开不知道——行为心理学早就测明白了,恰恰是这种不确定的奖励最勾人,定时定量的奖励反倒乏味。实验箱里的鸽子如此,刷短视频的人如此,盯着智能体角标的我,亦如此。
第三层最隐蔽,也最要害:有会话跑完了没人管,我心里会冒出一种”浪费产能”的焦虑,仿佛让机器闲着就是罪过。我甚至一度动过念头,想拿每天消耗多少 token 来当自己的努力指标。这股焦虑并非全无道理——多智能体的全部意义本来就在并行;坏就坏在它不分场合,把”让机器都转起来”悄悄顶替了”把判断做对”,把并行度误当成了产出。
三个行当早就解过这道题
有意思的是,这道题根本不新。至少三个互不往来的行当,各自撞上过它,也各自解出来了,答案还惊人地一致。
计算机自己就得过这个病。早年的网卡每收到一个数据包,就给 CPU 打一次中断:”来活了,快处理!”流量小时相安无事;流量一大,CPU 的全部时间都耗在”被打断—响应—刚回去又被打断”上,正经活一件也推不动。上世纪九十年代末,研究者给这个病起了名字,叫 receive livelock,接收活锁:系统忙到极点,吞吐量却趋近于零。解法说破了不值钱:关掉逐包中断,攒一批,定点轮询,批量处理完再回去干正事。今天你的电脑还能流畅上网,靠的就是这一手。
制造业解过同一道题。丰田的看板墙上,”进行中”那一列有卡片数上限,行话叫 WIP(work in progress,在制品)上限。道理是车间里用教训换来的:半成品铺得越满,每一件完工得越慢,切换损耗越大,质量越差——想快,先限量。
医院也解过,这一条我最熟,我自己就是医生。急诊分诊台从不按到达顺序叫号:轻症快速分流处置,危重的进抢救室,一次全力救一个。按”谁刚到”定顺序,在急诊室里是要出人命的。
三个行当,素无来往,结论却收敛在同一处:完成不抢占,队列讲优先级,在制设上限。
于是立下三条家规
其一,回合制。”读产出—下判断—发回复”是一个不可分割的回合,回合没走完,绝不切换;中途亮起的角标一律视作入队,不视作中断。等手头的回合收束,再去扫一眼队列。
其二,检查点上先分诊。扫队列时,先把”机械放行”批量清掉——”继续””可以””跑下一步”这类三十秒内能发出、几乎不需要判断的回复,一口气清完,让便宜的并行接着转。剩下真正需要深读细审的,按重要性挑一件,而且只挑一件。按”谁最新完成”来挑,说穿了,就是把被吸引这件事制度化。
其三,深线并行不超过三条。需要动真判断的会话,同时最多开三条;纯机械跑批的不限。这一条其实是前两条的地基:如果发现自己总在切、切得心痒,病因多半是摊子铺得太大,切换纪律倒在其次——该砍的是并行度。
这三条的算账逻辑只有一句:智能体空转极便宜,人的切换极贵。一个跑完的会话晾上十分钟,分文不费;而我若在切来切去的浮躁里花三十秒浅浅扫一眼、放行了一个错误方向,代价是机器白跑几个小时,外加日后返工。真正的浪费只有一种:人的判断变糙。
让 AI 记住,替我看着
有个细节我很喜欢。讨论收尾时,AI 把这三条写进了它长期记忆里一个叫”判例库”的文件——往后我再犯”被角标勾走”的老毛病,它会把这条判例原文念给我听,不再重新开庭。人向 AI 请教如何管理 AI,最后让 AI 监督人执行,这个闭环有点滑稽,但确实管用。
调度这门学问,半个多世纪教会了机器一件事:瓶颈在哪里,秩序就围着哪里建。多智能体时代轮到人来当调度器了,第一课没有变——
先承认自己是单核的。