L3-1-第二篇-AI-Agent不是Bot也不是插件

0 阅读14分钟

L3-1 第二篇 · AI Agent 不是聊天 Bot,也不是插件

上篇:L3-1 第一篇《AI Agent:核心定义与运作原理架构》 | 下篇:L3-1 第三篇《AI Agent 的应用形态:从 RPA、Copilot 到自主智能体》

前阵子去一客户那做技术交流,他们 CTO 特自豪地跟我讲:我们系统已经全面 Agent 化了。

我职业病犯了,顺嘴问了一句:那你那 Agent,是自己会换手子把活干完,还是得你一步步教它?

他顿了一下,说:那个……咱接了个大模型做客服,外加几个定时跑的脚本。

我没当场戳破。但回来一路上琢磨,这不就是典型的"名字叫响了,概念糊了"么。这两年 Agent 这词儿被喊得震天响,啥都往上贴——聊天框贴个 Agent,定时脚本贴个 Agent,连个网页翻译按钮都敢叫"翻译 Agent"。真配得上这名儿的,我估摸着一半都不到。

上篇咱们把 Agent 肚子里的五个零件(规划、记忆、工具、行动、观察)拆明白了。这篇反过来,专门划边界:Agent 不是啥?那些最容易和它撞脸的东西——聊天 Bot、插件、工作流、RPA、Copilot——到底差在哪? 顺手给你一张选型表,以后做架构别再拍脑袋。

不过在掰扯那些撞脸概念之前,我得先把一个更根儿上的事说透,不然你后面会一直是"知其然不知其所以然"。


"一个东西自己会动",到底是啥意思

计算机科学里"Agent"这个词,不是这两年才冒出来的。早在一九九五年,Wooldridge 那帮人写《多智能体系统》那书的时候,就把"智能体"的定义钉在三个性质上:

  • 自主性(autonomy):不用人一步步教,它自己知道往哪走;
  • 反应性(reactivity):环境变了,它会有反应;
  • 主动性(proactiveness):不光等你问,它会朝目标自己凑。

他们还分了"弱定义"和"强定义"两档。弱定义松一点,只要能对环境反应、自主行动就算;强定义狠,要求它还得有"心理状态"——就是 BDI 那套符号主义的东西:信念 Belief(它信啥)、愿望 Desire(它想干啥)、意图 Intention(它现在下定决心干哪件)。

我第一次啃 BDI 的时候头大,觉得这是哲学不是工程。后来真做项目摔了几次才咂摸出味儿:一个真 Agent,得"知道自己信啥、想干嘛、现在决心干哪件"。你那条写死的流水线,它啥都不"信",也不"想",它就是条 if-else 的河,水往低处流罢了。

这就要引出我特别想让你记住的一个视角——控制论视角。你把它当成一个反馈控制系统看,一下子就透亮了。任何能"自我纠错"的系统,本质上都有一个环:定个目标 → 比一比现状离目标差多少 → 决定咋调 → 动手调 → 再看调完啥样 → 不对就再调。控制论祖师爷维纳(Wiener)早把这套叫 cybernetics 了。

还有条更硬的原理,叫阿什比必要多样性定律(Ashby's Law of Requisite Variety):一个系统要想管住外界的扰动,它自己内部的"花样"(多样性)必须至少跟扰动一样多。翻译成人话——外界一乱,你那套写死的脚本就傻了,因为它内部没"花样"可换;而 Agent 那个环,模型临场能生出各种新招,所以它扛得住意外。

这就是为什么 Agent 能"自我纠错"——不是它聪明,是它有反馈、有多样性。下面那张图,建议你存脑子里:

           目标 Goal(设定值)
              │
              ▼
        ┌───────────┐
        │ 比较器     │◄──────────────┐
        │(差多少?)   │               │
        └─────┬─────┘               │
              ▼                     │
        ┌───────────┐               │
        │ 控制器     │  大模型干这    │
        │(LLM:下一步)│  儿的活儿      │
        └─────┬─────┘               │
              ▼                     │
        ┌───────────┐               │
        │ 执行器     │  工具 / 行动   │
        │(动手)     │               │
        └─────┬─────┘               │
              ▼                     │
        ┌───────────┐   世界/环境    │
        │   被控对象  │───────────────┘
        │ (Plant)   │   观察:成没成?
        └───────────┘

看见没?大模型在这个环里干的是控制器的活儿——它决定下一步咋走。世界是被控对象,工具是执行器,观察是反馈。这套环一旦转起来,意外就能被"环"掉。Bot 和插件,缺的就是这个环。

顺带一句:上篇讲"感知→规划→行动→观察→再规划",你拿这张控制论图一对,本质就是一个东西。规划=控制器,行动=执行器,观察=反馈,目标=设定值。打通了这层,后面看任何 Agent 框架你都不会晕。


我当年也干过"乱贴标签"的事

先交代个我自己的黑历史,免得显得我居高临下说别人。

刚摸 Agent 那阵,我做过个"技术动态监视器":每天抓几个社区的新帖,摘要、分类、整理成简报发我邮箱。第一版我老老实实写了条流水线,先抓、再摘、再分、再发。跑通那天我还挺得意,跟同事吹:看,我的 Agent 成型了。

结果有天源站改了版,抓取挂了,返回一坨空。它呢?不报错,不喊停,安安静静把"无内容"摘了、分了、发了。我邮箱里躺了一排空白简报。

那一刻我脸有点热。这玩意儿压根不知道自己在干嘛,它只是把我写死的那几步机械走完。它不是 Agent。它就是条脚本。 因为它没有上面那个环——它没有"观察→比较→再调"的回路,源站一变,它内部没多样性可换,只能照原样走完。

从那以后我学了个乖:判断一个东西是不是 Agent,别听它叫啥名,要看它"出岔子的时候靠谁兜底"。


先掰扯两个最爱被误认成 Agent 的

聊天 Bot:它只会"说",而且只在语言空间里说

聊天 Bot 的本质是个对话外壳。早年是规则/检索式,你问"退款",它匹配关键词弹话术;现在铺天盖地是 LLM 驱动的问答,能聊得人模狗样。

但无论哪一代,有个根儿上的限制它跳不出去:它活在"语言空间"里。 它所有的本事,就是"生成下一段更合适的文本"。你跟它说"帮我把明天的车订了",它大概率回你一段正确的建议,然后等你自已去点。它动不了世界分毫——因为它没有工具这个"手",更没有"观察结果再决定"的环。

我给你画一下 Bot 的边界:

生成技术图片1

它再能聊,也只是在语言空间里打转。这是 Bot 的天花板。

插件:它只是"被挂上去的一个零件"

插件是能力挂载点——钉在宿主应用里的某个固定功能,比如"一键总结当前网页""把选中文字翻成英文"。它通常要你点一下、或程序显式触发,自己不会判断"此刻该不该用我",更不会把结果拿去推进一个更大的目标。

这儿有个特别关键的认知,我建议你拿笔划一下:

插件是 Agent 的"工具",但插件本身不是 Agent。

这就好比扳手是工人的工具,你不能把扳手叫工人。上篇讲的"工具"那个零件,落到产品里往往就是个插件;但光有扳手,成不了工人。

顺带把话挑明:现在火得一塌糊涂的 MCP(Model Context Protocol),它定义的那一堆"工具(tool)",本质上就是标准化的插件。一个 MCP server 暴露出来的能力,跟浏览器插件没本质区别——都是"挂上去的一个功能"。区别只在:有没有一个 Agent 来自主地挑它、串它、在环里跑它。MCP 给 Agent 供弹,但 MCP 本身不是 Agent。这点后面 L3-6 专门讲,这儿先埋个伏笔。


那 Agent 到底特殊在哪

一句话,我平时这么跟人比划:

Bot 会"说",插件能"用",Agent 会"想了之后自己用,用了看结果,不对再改"。

回到上篇那五个零件(规划/记忆/工具/行动/观察):Bot 顶多算有个 LLM 大脑的外壳,缺规划闭环、也缺工具行动;插件只是被挂上去的"工具"零件。只有 Agent,把规划→工具→行动→观察串成了一个自己能转起来的环——也就是前面那张控制论图。

所以你拿不准一个系统是不是 Agent,别看它会不会聊天,盯死这三件事:

  1. 有没有自主决策——下一步干啥,是它自己临场定的,不是你写死在代码里的;
  2. 有没有多轮闭环——办不成会换个法子接着试,而不是答完即止;
  3. 有没有作用于外部世界——调工具、改状态,而不只是吐文本。

这三样,缺一样都不算真 Agent。

我再给你个更狠的判据,是前面控制论那段的推论:它出意外的时候,是靠你写死的 if-else 兜底,还是靠自己的环绕过去? 能自己绕的,才是 Agent。这条比上面三条还好使,因为"自主闭环"全浓缩在这一句话里了。

Bot 和 Agent 的圈,我画一起你扫一眼:

生成技术图片 (1)

Bot 那个圈,转半圈就停了,得你再推它才动。Agent 那个圈,是自己一圈圈转,转不动了还知道绕——因为它有反馈、有多样性。


光讲道理没劲,上段代码一起看

下面这三段,左边是我当年那版"假 Agent"(写死的流水线),中间是真 Agent 的最小骨架,右边是在骨架上加了一层"从失败里学"的反思环——你重点看"下一步谁决定"和"失败咋办"这两件事。

# ---------- 左:写死的流水线(我当年的"假 Agent") ----------
def fake_pipeline():
    html = crawl("https://tech-news.example.com")   # ① 抓
    summary = llm_summarize(html)                    # ② 摘要
    tags = classify(summary)                         # ③ 分类
    send_email(tags)                                 # ④ 发
# 源站一改版,crawl 返回空,后面三步照跑不误,
# 安安静静给我发了一堆"无内容"——它没有环,不知道自己挂了

# ---------- 中:真 Agent 的循环(下一步由模型临场决定) ----------
def run_agent(goal: str, max_steps: int = 5) -> str:
    history = []
    for step in range(1, max_steps + 1):
        plan = llm_decide(goal, history)        # 模型当控制器,决定下一步
        if plan.is_done:                         # 干完了?收工
            return plan.answer
        obs = do_tool(plan.action, plan.arg)     # 真去执行工具
        if obs.failed:                           # 出岔子了?
            history.append(f"试了 {plan.action} 挂了:{obs.err}")
            continue                             # 换法子再来,不甩手
        history.append(f"{plan.action} -> {obs}")
    return "到步数上限,没干完"

# ---------- 右:在骨架上加"反思"(会话内从失败学习,预告 Reflexion) ----------
def run_agent_with_reflect(goal: str, max_steps: int = 6) -> str:
    history, lessons = [], []
    for step in range(1, max_steps + 1):
        # 把"已吸取的教训"也喂给模型,逼它别踩同一个坑
        plan = llm_decide(goal, history, lessons)
        if plan.is_done:
            return plan.answer
        obs = do_tool(plan.action, plan.arg)
        if obs.failed:
            lessons.append(f"教训:{plan.action} 在 {plan.arg} 上失败,因 {obs.err}")
            history.append(f"{plan.action} 挂了:{obs.err}")
            continue
        history.append(f"{plan.action} -> {obs}")
    return "到步数上限,没干完"

同一件事,左边是人编排、机执行,且无环;中间是机编排、机执行,还带自我纠错;右边更进一步,把失败变成"教训"记下来,下一轮主动避开——这中间的差距,就是 Agent 和"不是 Agent"的鸿沟,而最右那步,已经是后面要讲的 Reflexion(反思)范式的小苗了。


一张表,把五个撞脸的摊开看

光说 Bot 和插件还不够,市面上跟 Agent 撞脸的一共五个。我列张表,维度拉齐了比,还多加一列"典型翻车"——你选型时心里有数:

维度聊天 Bot插件工作流 WorkflowRPACopilotAI Agent
核心动作问答执行单一功能按固定顺序跑步骤跑脚本模拟人操作给建议,人拍板自主达成目标
谁决定下一步无(单轮)用户/宿主开发者写死脚本写死人Agent 自己
在语言还是世界空间仅语言世界(但孤立)世界世界语言为主世界
多轮闭环否否否(线性)否否(人兜底)是
有反馈环吗无无无无人充当环有(自闭环)
能应对意外不能不能不能不能部分(靠人)能自我纠错
典型翻车一本正经胡说功能孤立用不上一步挂全断界面一改就废人没看就翻车转圈烧钱/乱动生产
代表客服问答浏览器翻译Zapier 流程财务对账脚本GitHub CopilotManus 类

一句话区分开:

  • Workflow 是"人编排、机执行"——步骤你定死,它照走,优点是确定性高;
  • RPA 是"机模仿人去点界面"——规则明确、界面稳的时候最香,但界面一改版就瘫;
  • Copilot 是"机建议、人拍板"——它出主意,最后那下还得你点,风险最低;
  • Agent 是"机编排、机执行、还能自己纠错"——你把目标一丢,它自己折腾,代价是可控性和成本。

那到底该用哪个:一张选型决策树 + 风险矩阵

理论说完,落地怎么办?我给你画个决策树,从上往下问自己: 生成技术图片 (2)

我再多说一句掏心窝的话:别一上来就奔着 Agent 去。Agent 那栏"风险高"三个字,是无数生产事故换来的。能 Workflow 解决的,别上 Agent;上了 Agent 的,一定把 Human-in-the-loop、权限最小化、日志记录这几道闸焊死——

小小透漏下,后面我会有系列知识分享:L3-4、L3-5、结课安全篇都会拆解这些概念。


说个我帮人 review 的真事

上个月一创业团队找我,说他们"Agent 产品"上线了,问我架构咋样。我看了眼他们画的图——一个固定 DAG:用户提问 → 检索 → 喂给 LLM 写答案 → 返回。我问他:这 DAG 里,下一步是 LLM 临场决定的,还是你画死的?他愣了,说画死的。我又问:检索挂了它会自己换路子吗?他说不会,会报错给用户。

那我就直说了:兄弟,你这是 RAG 问答,是"LLM 当零件"的经典架构,不是 Agent。它不是不能卖,但你别按 Agent 的期待去宣传、去招人、去定价——用户冲着"自主"来,发现它连换条路都不会,落差会非常大。

后来他们把定位改回"智能问答 + RAG",反而卖得踏实了。这事儿让我更信上篇那句话:名字叫啥不重要,重要的是它内部有没有那个环。 你拿"三判据"和"控制器/零件"这两条往自己项目上一套,立马知道该不该叫 Agent,也知道该不该上 Agent。


一个高频误区:加 LLM ≠ 加 Agent(以及"控制器"vs"零件")

写到这,我得暴漏一个我听过最多次的误解。

好多人以为:"给 Bot 接了个大模型,那不就是 Agent 了么?"

错。加 LLM 不等于加 Agent。

更精准的说法是——要看大模型在这套系统里当什么角色:

  • 当零件(component):它只在固定流程里生成一段文本。比如一个 RAG 问答,LLM 负责"根据检索到的内容写答案",但"先检索、再让 LLM 写、最后返回"这顺序是写死的。LLM 是流水线上的一个工人,不是工头。这叫"用了 LLM 的系统",不是 Agent。
  • 当控制器(controller):它决定"下一步干嘛、调哪个工具、成了没成、不成换啥招"。流程是它临场跑出来的,不是你写死的。这才是 Agent。

一个 LLM 驱动的问答机器人,只要还缺"规划/记忆/工具/行动的自主闭环",它就还是 Bot。反过来,一个 RPA 哪怕一行 LLM 都没用,它在固定流程里也只是自动化,也不是 Agent。

判据永远是那句:看它有没有"自主闭环"(LLM 是否当控制器),不看它"有没有用大模型"。 大模型是 Agent 常用的脑,但不是 Agent 的身份证。


收个尾,顺便立条铁律

回到开头那家客户。

我现在要是再坐那 CTO 对面,大概会这么讲:你们那套,客服是 Bot,定时脚本是 Workflow,都挺好用,但先别急着叫 Agent。不是非要叫 Agent 不可——Agent 的自主是一把双刃剑,能力越强,可控性、成本、风险越高。

所以我给你立条铁律,记心里:

能用简单方案解决的,别上 Agent。

把 Agent 留给"路径不确定、需要试错"的地方,才是它真正的价值区。该用 Bot 用 Bot,该用 Workflow 用 Workflow,别拿大炮打蚊子,也别拿蚊子拍去轰大炮。

下一篇咱换个角度,把 Agent 放到一条"自主程度演进光谱"上,从 RPA、Copilot 一路看到全自主智能体,再给你份业务选型矩阵,帮你判断自己那项目该落在光谱的哪一段。

咱下篇见。

上篇:L3-1 第一篇《AI Agent:核心定义与运作原理架构》 | 下篇:L3-1 第三篇《AI Agent 的应用形态:从 RPA、Copilot 到自主智能体》