把一个大模型接进对话框,它能陪你聊一整夜,却动不了你桌面上的一个文件。

这不是它偷懒,而是它的能力边界本来就画在这里:它只会输出文字,别的事情一件也做不了。所谓 Agent,说到底就是想办法在文字之外给它接上手和脚——而这件事的技术含量,几乎全部落在一个循环里。

它的全部本事,就是“说”

只会说话 · 没有手脚

先把这件事说透。模型的输出永远是一串文字。它可以告诉你“这个文件名起得不好,建议改掉”,说得条理分明,但它没有权限去改;它可以写出一整段能跑的脚本,但它自己不会运行它。

模型本身不执行任何操作——不点网页,不读硬盘,不发消息。真正动起来的每一步,都是外面某个程序替它做的。

记住这条分工线:模型负责说,外面的程序负责做。后面几篇文章里出现的每个名词,几乎都是围绕这条线展开的细节。

举个近的例子。它说“把这封邮件发出去”,和它说“今天天气不错”,对模型来说是同一类事情:产出一串文字。区别不在模型这边,而在外面——程序读懂了第一句,真去发了;第二句没人搭理,也就止步于一行字。

聊天机器人,卡在哪一步

很多人会问:我常用的聊天框也能搜索、也能读我上传的文档,那它算不算 Agent?

算不算,不看它手上有几件工具,看的是另一件事:下一步做什么,由谁决定。

聊天机器人的节奏是“一问一答”。你抛出一句话,它回你一段内容,这一轮就结束了。它当然可以查资料,但查几次、查到什么程度算够、结果不理想要不要换个说法再查一遍——这些通常由你写在那一句话里的要求决定,而不是由它边做边判断。

Agent 多出来的正是这段判断。它拿着一个目标,一轮一轮决定下一步干什么,做完看一眼结果,再决定下一步。目标没达成,它不会把话说完就收工。

工具不是分界线,谁决定下一步才是。

感知、决策、行动:一台机器转三拍

感知 · 决策 · 行动

一个 Agent 运转起来,每一轮都走同样的三步。

然后第二轮开始。三步转一圈就是一个循环,循环转到目标达成为止。

为什么“循环”才是关键

单次调用是开环的:输入一次,输出一次,模型没有任何机会修正自己。它对世界的全部认识,只来自你递给它的那一段文字。

循环把它接成了闭环:每一步行动的后果,都会变成下一步决策的输入。模型读错了文件,报错信息会回到它面前;查到的资料和预期不符,它可以换个关键词再查一次。

这件事真正的威力在于:犯错被允许了。开环的模型必须一次说对,说错了话已经出去,没有补救余地;闭环里的 Agent 可以错,只要它还看得见错在哪里,并且下一轮能改。

所以模型的能力上限,决定的是 Agent 的天花板;而循环决定的是,这份能力到底能不能落到地上。

拆开看,一个循环至少买到三样东西:

三样里最不起眼的其实是第三样。开环系统里,你唯一的介入点在它开口之前;闭环系统里,你可以在它每一圈之间插手。

一个任务在循环里被拆成什么样

假设目标是“把上季度的销售表整理成一份汇总,发给同事”。Agent 内部大概会这样走:

  1. 读到任务,决策:先看表格文件。行动:外部程序打开文件,把内容交给它。
  2. 见到数据,决策:这堆数字要算一算。行动:外部程序跑一段计算,把结果交回来。
  3. 拿到结果,决策:写成一段汇总。行动:输出汇总文字。
  4. 决策:该发出去了。行动:外部程序调用邮件接口发送——这一步通常会被拦下来,要求你确认。

有两个细节值得留意。第一,每一轮的“行动”都是外部程序在干,模型只负责把要干什么说清楚。第二,最后那句“要求确认”,是外部程序设的闸门——Agent 手里有多少权限,从来不由它自己决定,而由搭它的人决定。

能力强一点,还是结构好一点

让 Agent 更能干,有两条路:把模型本身练得更聪明,或者把外面的结构搭得更讲究——循环怎么设计、给它哪些工具、记性怎么管、权限边界画在哪。两条路都有效,而且不互相排斥。

工程上更常见的现实是:同一批模型,接上一套讲究的结构之后,能接住的任务面会宽出一大截。这也是“Agent 工程”这件事本身值钱的原因——它不改变模型的聪明程度,它改变的是这份聪明能被用在哪里。

反过来也得承认它的短板:循环意味着它可能绕圈,可能反复犯同一个错,可能在没人盯着的时候花掉一笔钱。所以真正上线的系统一定会配边界:允许它做什么、最多转几轮、哪些动作必须先停下来问人。

它做不了的,比它能做的更值得记住

Agent 的能力边界,就是它手上那几件工具和那套循环规则的边界。

这个系列的四步

四步 · 逐格拆开

后面三篇会把上面提到的零件一件件拧开看:

四篇之间不跳步,每一篇只拆一个零件,拆完了再接着往下走。