🧡 第八章 多智能体协作
📄 一句话概括

子智能体的意义不是【多个人干活】,是【主线不被打断】;判据不是活多不多,是主线能不能停。

📝 本节和前面几节的关系

上一节解决了并行时的技术隔离,这一节讲另一种并行:派一条副线出去。

一、它和开多个窗口不是一回事

开窗口是你自己同时管几件事——你被打断了就是被打断了。 副线是你只管主线,把查资料这种活交出去。 关键差别:中断发生在哪一层。开窗口中断的是你,派副线中断的是它。

二、真实的代价在哪

主线写东西写到一半,被叫去回答一个查询——你要重新进入状态。 每次重新进入大约三分钟,而且第三次之后往往还要重读一遍它刚改过的东西。 打断三次就是九分钟纯浪费,外加一次上下文重读。

三、什么时候派副线

判据不是【活多不多】,是主线能不能停。 要停(比如你在等它做完)——自己查更快,派出去反而多一层传话。 不能停(你正在写)——派副线,让它去查,你继续写。

四、派副线适合什么活

查:找某个函数在哪、查某个错误的成因、查某个依赖的用法。 跑:跑一遍测试、跑一遍构建、跑一遍检查。 读:把某个目录通读一遍给你个摘要。 共同点:这些活有明确的答案,不涉及你的判断。

五、动手 Demo:subagent——主线不停,副线在查

下面把两种做法的打断次数摆开,再算三次打断的真实代价。

T([u"自己查", u"写新功能(被查询打断三次)", u"没有"], [14, 34, 22])
T([u"派副线", u"写新功能(一次都没停)", u"后台查了 15 分钟"], [14, 34, 22])

实跑输出:

--------------------------------------------------------------------
subagent——主线不停,副线在查
--------------------------------------------------------------------

子智能体的意义不是【多个人干活】,是【主线不被打断】。看时间线:

  做法       主线 0~20 分钟在做什么         副线
  -----------------------------------------------------------
  自己查     写新功能(被查询打断三次)     没有
  派副线     写新功能(一次都没停)         后台查了 15 分钟

差别不在总时长,在**主线被打断几次**。

三次打断的真实代价(每次重新进入状态约 3 分钟):
    3 次 x 3 分钟 = 9 分钟纯粹的重来
    而且第三次之后,你往往要重读一遍它刚改过的东西

所以派副线的判据不是【活多不多】,是**【主线能不能停】**:
    要停 -> 自己查更快
    不能停 -> 派副线

差别不在总时长,在主线被打断几次——这一列是整张表的重点。 三次打断的真实代价是 9 分钟重来,外加一次上下文重读。

30 秒实验

  1. 下次你写到一半被它问了个问题,问自己:这个回答必须现在给吗?
  2. 如果答案是【可以晚点】,就该派副线——主线不停才是这一节的全部意义。

常见误区

  1. 什么都派副线。传话本身有成本,主线能停的时候自己查更快。
  2. 把需要判断的活也派出去。副线适合有明确答案的活,判断留给主线。
自测三问(点开对答案) 1. 副线和开多个窗口的差别在哪? —— 中断发生在哪一层:开窗口中断的是你,派副线中断的是它。 2. 派副线的判据是什么? —— 主线能不能停——不能停才派。 3. 副线适合什么活? —— 查、跑、读这三类:有明确答案、不涉及你判断的活。

相关笔记