多线程人类
到今年,实际上AI已经走了5年多的时间了。
至于用ai发指令已经成了iN的日常。
但最近我突然发现,变化最大的可能并不是 AI 又聪明了多少,而是我自己的工作方式已经被它改变了。
以前面对电脑,人基本上是单线程的。写代码的时候就在写代码,查资料的时候就在查资料,写文章的时候就在写文章。即使开着十几个窗口,本质上也只是人的注意力在不同任务之间来回切换。CPU 可以有十几个核心,人脑却始终只有一个前台。
现在不太一样了。
我会同时给几台机器、几个 Agent 下达任务。一个在 DevServer 上跑测试,一个在 MacWorker 上处理构建,一个在查资料,另一个已经完成任务等我验收。屏幕上的这些灯并不是聊天窗口,它们更像一组正在运行的线程:有的 Running,有的等待输入,有的已经结束,有的撞上 usage limit。
而我做的事情,也逐渐从“执行任务”变成了“调度任务”。
这可能才是生成式 AI 五年之后,一个不那么显眼但相当深刻的变化:AI 没有把人变成更快的单线程处理器,而是在人的外面挂上了一组可以并行运行的执行单元。
但如何“调度”自己呢?
淘宝上有那么一个小玩意:

这是一个AI的指示灯,当ai Agent工作的时候给出一些视觉信号的提示——它会用不同的灯光给出视觉提示:正在运行、等待输入、任务完成,或者出了问题。
乍一看,这东西多少有点行为艺术的味道。毕竟电脑屏幕上本来就有状态栏、有通知、有日志,为什么还要专门在显示器旁边挂三个灯?它解决的问题其实并不是“怎么看 AI 有没有在工作”。
它解决的是:人怎么知道自己什么时候该去管 AI。这两件事听起来差不多,实际却完全不同。
传统的软件使用方式里,人是主动方。你打开 Photoshop,是因为你准备修图;你打开 IDE,是因为你准备写程序;你打开浏览器,是因为你要查资料。软件基本不会在你不管它的时候,自己闷头工作半个小时,然后突然回来告诉你:“老板,这一批干完了,你看看。”
Agent 恰恰反过来了。
我给它一个任务以后,最合理的事情往往不是盯着它,而是去做另一件事。十分钟以后,第一个 Agent 做完了;第二个还在测试;第三个碰到一个需要人工决定的问题停在那里;第四个已经因为 token 或 usage limit 躺尸半天。
于是一个很荒诞的问题出现了:AI 帮我把任务并行起来了,但我却开始不停地切窗口确认 AI 有没有干完。
但是一个小灯基本上只能对应着一个AI agent,如果每个agent我们都装一个灯,很快桌面就会形成一个很混乱的十字路口效应。

其实你根本不知道到底要去看哪组灯才是正确的。这就又回到了一个很经典的计算机问题:当系统规模还很小的时候,很多东西根本不需要“管理”。
一台服务器,你盯着它就行;两个进程,开两个终端也没什么;三四个 Agent,在桌面上摆几个状态灯,甚至还挺有赛博朋克的味道。但当 Agent 的数量继续增加,问题的性质就变了。
假设我同时有十个 Agent 在工作,每个 Agent 都有“运行、等待、完成、异常”四种状态,那么我需要的显然不是十套红黄绿灯。否则我的桌面最终大概会变成上面这棵著名的“红绿灯树”:每一盏灯都准确,每一盏灯也都在努力告诉你信息,但当它们全部出现在眼前的时候,整个系统反而失去了传递信息的能力。
这其实是一个很有意思的信息论问题,状态越多,并不意味着人得到的信息越多。
如果一个状态指示器要求我先判断“这是哪台机器的灯”,再判断“这是哪个 Agent”,然后判断“它现在是什么颜色”,最后还要回到电脑里找到对应的窗口,那么所谓的“状态灯”实际上并没有减少我的认知负担。它只是把原来屏幕里的信息搬到了桌子上。
甚至更糟。
因为窗口至少还有标题——但灯没有。
其实,我们真正需要解决的问题并不是给每一个 Agent 装上一盏灯,而是要在 Agent 和人之间增加一个新的抽象层。
这和操作系统的发展其实很像。早期计算机当然可以让程序直接面对硬件,但当进程越来越多、设备越来越多、资源越来越复杂以后,人不可能继续手工管理每一次 CPU 时间片、每一块内存和每一次 I/O。于是操作系统把这些复杂状态收拢起来,给上层提供一个可以理解的模型。
Agent 发展到今天,也开始出现类似的问题。
我并不真正关心 DevServer 上某个进程现在究竟执行到了第几条指令,也不需要知道 Codex 此刻正在调用哪个 tool。我真正关心的其实只有几件事:
谁还在干活,谁在等我,谁干完了,谁死了,以及我现在最应该去处理谁。
这才是人的调度界面。更何况iN有N多台电脑,不同的电脑上还装着不同的agent……
于是它出现了——AI Light

最开始我只是想做一个比红绿灯稍微聪明一点的东西,但写着写着,它逐渐变成了现在这个样子,而且灯光的效果其实也在模拟红绿灯,漂亮的灯光其实是很治愈的。
它不属于任何一台电脑,也不属于任何一个 Agent。
MacBook 上的 Codex、DevServer 上正在跑 shell 的 Agent、MacWorker 上已经撞到 usage limit 的任务,甚至网络里其他机器上正在工作的 AI,都把自己的状态送到同一个地方。
然后 AI Light 做了一件很简单的事情:把机器的状态翻译成人需要知道的状态。
所以截图里虽然有十几个任务,我实际上并不需要逐个阅读。
最上面的 RUNNING 3 已经告诉我,现在有三个执行单元还在工作。亮着的三个圆环告诉我它们是谁;后面的文字告诉我它们大概在干什么;右边的图标则告诉我这个线程背后到底是哪个 Agent。
其他那些灰掉的任务依然存在,但已经退出了我的前台注意力。
这其实是Cenri的一个widget组件,但属于最近几天所部署的组件中最能解决问题的一个。
原因也很简单:它解决的不是 AI 的问题,而是人的注意力的问题。
Cenri 里面当然还有大量比它复杂得多的组件。有的负责采集网络状态,有的处理机器之间的数据,有的做自动发现,有的代码量比这个小小的 AI Light 多得多。但那些组件大多是在让计算机系统工作得更好,AI Light 却是在试图解决另一件事——怎么让一个人同时和越来越多的 AI 一起工作。
这两者的区别挺大的。
以前我一直觉得,多开几个 Agent 无非就是多开几个窗口。反正现在机器性能足够,Token 也不是什么昂贵到不能用的东西,能并行就并行好了。
真正用了一段时间以后才意识到,瓶颈根本不在那里。
Agent 可以继续增加,电脑也可以继续增加,但 iN 只有一个。
机器切换上下文只需要保存寄存器。
人不是。
人的工作上下文里面有刚才读过的东西、正在建立的假设、还没有写出来的半句话、代码结构在脑子里的临时映射,甚至还有“我刚才想到哪儿了”这种计算机根本不会遇到的问题。一次打断看起来只有几十秒,恢复这些东西可能需要几分钟。
所以 AI Agent 带来的效率曲线,并不是简单的:
1 人 + 10 Agent = 10 人
甚至很可能在某个点之后开始反过来。
Agent 越多,等待你处理的事情越多;通知越多,注意力越碎;你越想并行,自己反而越忙。
这就很像并行计算里面一个很古老的问题:并不是增加处理器就可以无限提高性能。总有一部分工作无法并行,总有同步、通信和调度开销,最后那个串行部分会成为整个系统的上限。
这其实是以后操作系统的一种形态,我们可以让AI做任何事情,但一定要让AI在合适的时候给我们看到状态——控制论+信息论。
它解决的问题并不复杂,甚至可以说简单得有点过分:让我知道那些 AI 现在到底在干什么,以及什么时候需要我。
但就是这么简单的一个需求,恰恰让iN开始意识到,这玩意可能并不仅仅是一个 Widget。
它甚至有点像未来操作系统应该有的样子。
我们现在使用的操作系统,无论 Windows、macOS 还是 Linux 的各种桌面环境,其实都建立在一个几十年没有发生根本变化的假设上:人是计算机的操作者。
所以我们才需要窗口,需要菜单,需要鼠标,需要 Dock,需要任务栏。你想做什么,就找到对应的软件;想让软件做什么,就找到对应的按钮;软件做完了,再把结果显示给你。
整个过程中,人始终坐在驾驶席上;而现在人要往上爬了,爬进指挥席上了。
驾驶员和指挥员最大的区别,并不是谁的权力更大,而是谁需要知道什么。
驾驶员当然要知道发动机转速、速度、方向,要不断观察道路,还得持续对车辆进行输入。因为车辆本身没有能力理解“我要去哪里”,更没有能力自己决定接下来应该怎么走。
指挥员不一样。
一个真正的指挥系统下面可能有几十个、几百个执行单元。如果每一个执行单元的每一步动作都汇报到指挥员这里,那这个指挥系统一定会瘫痪。指挥员真正需要知道的是:任务是否正常推进,哪里出现了偏差,哪里需要新的决策,以及有没有什么事情已经越过了原先授权的边界。
AI Agent 其实正在让计算机发生同样的变化。
真正重要的问题变成了:
现在有多少件事情正在替我进行?它们是否仍然在我的意图范围内?其中哪一件事情需要我?
这就很有意思了。
因为到了这里,未来操作系统面对的已经不只是计算机科学问题,而是两个很古老的学科:控制论和信息论。
当然了,这只是iN自己的一个小尝试。不过iN自己的东西还是没有啥是浪费的,注意到卡片下面的波浪了吗?其实那是一个24小时调用量统计图。

这其实就是旧计算机时代的一个活化石。
当然了不仅仅是这个图标,本质上这个widget还没有真正的脱离开传统计算机的思路,只是一个“进程表”。毕竟,人在建立对 Agent 的绝对信任之前,还是需要知道“系统现在到底替我做了什么”。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
