从一次调用到一套"操作系统",Agent 是怎么长出来的?
最近读到一篇文章,把 Agent 这几年的演化过程讲得特别清楚。
故事的起点很简单。最早的大语言模型就是一个函数:你丢一段话进去,它吐一段话出来。它不记得你上一轮说了什么,也不知道自己输出的东西有没有被执行。就这么一个纯粹的文本生成器。
后来 ChatGPT 出现了,大家开始聊多轮对话。但模型本身并没有突然学会记东西,是外面的程序在每次请求之前,把系统指令、聊天记录、用户输入重新拼好塞进去。模型看见的一切,都是运行时帮它组装出来的。这个发现很关键,后面所有的事情都建立在这一点上。
接下来模型遇到了第一个瓶颈:它只能说,不能做。于是 2022 年出现了 ReAct 这个思路,让模型想一步、做一步、看一眼结果、再想下一步,形成一个循环。真正让 Agent 跟普通聊天机器人分开的,就是这个循环。模型还是只会生成文字,但外面套了一层程序,负责解析它的输出、调用工具、把结果喂回去。
工具调用一开始很粗糙,模型输出一段类似命令的文字,程序用正则去解析,经常出错。后来 OpenAI 搞了结构化的 Function Calling,工具有了明确的名字和参数格式,调用变得靠谱多了。再后来 Anthropic 推出 MCP 协议,想把 Agent 跟外部世界的连接方式统一起来。
然后是记忆的问题。一个任务做完了,下次再来,Agent 什么都不记得。上下文窗口就那么大,历史越来越长根本塞不下。所以系统把记忆分成了两块:一块是这一轮模型能看到的工作记忆,另一块是存在外面、需要的时候检索出来的长期记忆。什么该存、什么该丢、冲突了怎么办,这些问题到现在都还在摸索。
到这一步,上下文、循环、工具、记忆都有了。但真要干活,一堆新问题冒出来了。程序崩了怎么恢复?模型要删文件谁来拦?多个客户端怎么看到同一个任务状态?于是 Agent 外面又长出了一层更大的东西,这个东西就是 Harness。Agent 负责决定下一步做什么,Harness 负责管住这一步在什么条件下发生。
文章拿了四个项目来对比。先说 Pi,它走极简路线,只给模型四个工具,上下文压得很紧,结果任务完成率高、成本还低,同一个模型换了它的 Harness,花的钱能差两倍以上。然后是 OpenCode,它把每一轮回复拆成很多细碎的事件,推理、工具调用、文件修改都单独记录,程序退出了也能恢复现场。再看 Codex,它最重,搞了审批、沙箱、线程管理,一个任务可以中断、恢复、分叉出子任务,安全但成本也最高。最后是 Hermes,它关心的是下一次,Agent 做完一个任务之后能不能从中学到东西,下次少走弯路。
这四个项目没有标准答案。Pi 要的是轻,OpenCode 要的是可审计,Codex 要的是安全可控,Hermes 要的是越用越聪明。选哪条路,取决于你的 Agent 最终要进入什么样的真实环境。
模型会继续变强,但外面这层 Harness 不会消失。模型越能干,管它的那套系统就越不能马虎。