①操作系统里,进程是资源边界,线程是执行单元。同进程的线程共享内存,跨进程则要显式通信。Agent世界完全照搬了这套做法—sub-Agent,多个Agent并行协作,立刻面对经典问题:谁能访问谁的状态?共享上下文带来效率,也带来竞争条件。死锁、竞争、一致性…....这些老问题穿着新衣服又回来了。
②系统调用→Tool Use(这个最像) 用户程序想访问硬件,不能直接碰,必须通过系统调用陷入内核,由内核代为执行。Agent想搜网页、跑代码、查数据库,也不能自己动,必须通过Function Calling交给Harness执行。两者的本质完全一样:在权限边界上打一个受控的洞,能力从这个洞里流进来,风险也从这个洞里被隔住。
③Cache/虚拟内存→ Context Window Context window 是 Agent最稀缺的资源,贵到每个token 都要精打细算。这和CPU Cache的逻辑一模一样:什么放寄存器(当前推理),什么放内存(近期对话),什么换页到磁盘(压缩摘要)?当上下文满了,Agent框架开始做 context compression一这就是在做内存分页与交换,只不过换出去的不是字节,是语义。
④文件系统挂载→RAG RAG把外部知识库挂进Agent的“文件树”,需要时 检索,不需要时不占窗口。这和操作系统挂载外部存储的逻辑完全相同:用廉价的大容量存储补偿昂贵的快速内存,按需加载,用完释放。
⑤内核/调度器→Harness / Orchestrator Agent = Model + Harness, Model是计算本身,Harness是操作系统内核:管权限、调度任务、分配资源、处理工具调用的返回。多Agent系统里的Orchestrator就是调度器,决定哪个Agent先跑、跑多久、结果传给谁——换个场景照样适用。操作系统花了几十年才把这些问题想清楚。Agent时代正在把同样的问题重新答一遍——只不过资源从CPU/内存变成了token/推理时间,“程序”从机器指 令变成了自然语言。
历史不会重复,但会押韵!