工具、工作流与 Agent:能力从哪里来,边界划在哪里

梳理语言模型、外部工具、文件系统、浏览器与程序执行之间的关系,说明 Agent 增加的是行动范围而不是可靠的自主判断。

  • 工具调用
  • 工作流
  • Agent
  • 权限

Reading Guide

先问一个问题

当模型可以调用工具、读写文件甚至连续行动时,多出来的是什么能力,又多出来什么风险?

适合读者
开始让 AI 直接读写文件、访问网页或执行程序的读者
阅读基础
what-language-models-do;task-definition-and-acceptance

Key Points

先记住这些

  1. 模型本身只会产生文本;所谓工具调用,是它产生一段符合约定格式的请求,由外部程序去执行并把结果送回。
  2. 凡是能被写成确定步骤的部分,都应当交给程序而不是模型,模型只负责判断与生成。
  3. 工作流是步骤固定、模型只填空的做法;Agent 是让模型自行决定下一步做什么的做法,两者可靠性差别很大。
  4. Agent 增加的是行动范围与自动化程度,不是判断的可靠性;错误会沿着步骤累积。
  5. 权限应当按最小必要授予,写入与删除必须与读取分开,外部内容进入上下文即应视为不可信输入。
  6. 自动化的价值主要体现在可重复的批量工作上,关键判断仍需保留人的检查点。

Terms

几个必要概念

工具调用

模型按约定格式输出一段调用请求,由外部程序执行后把结果返回上下文。

理解这一点就能明白:工具是否可靠取决于外部程序,模型只是决定了什么时候调用、传什么参数。
工作流

步骤与顺序由人预先固定,模型在每一步内完成特定生成或判断。

它牺牲灵活性换取可预测性,适合体例统一、批量处理这类任务。
Agent

由模型自行决定调用哪些工具、按什么顺序推进、何时结束的运行方式。

适合路径难以预先确定的探索性任务,但每一步的误差会向后传递,必须设检查点。
间接提示注入

外部材料中夹带的指令被模型当作用户要求执行。

只要允许模型读取网页或他人文件,这一风险就存在,权限设计必须以此为前提。

工具调用其实很朴素

模型不会自己打开文件,也不会自己访问网络。所谓工具调用,是运行环境事先告诉模型有哪些工具可用、各需要什么参数;模型在需要时产出一段格式规整的调用请求;外部程序解析这段请求、真正执行、再把结果作为新的文本送回上下文。整个回路里,模型始终只在读写文本。围绕这一思路的研究很多,共同点是把语言模型当作决策与表述的部件,把确定性工作交给外部程序。S1

由此可得一条实用原则:凡是能写成确定步骤的,就不要让模型来做。统计条数、比对字符串、按规则排序、检查字段完整性,这些交给几行程序既快又准。让模型去数一份年表里有多少条 1923 年的记录,是在用最不适合的工具做最容易出错的事。

近年出现了若干把工具接入方式标准化的公开规范,使同一套工具可以被不同产品复用。这类规范值得关注,但对使用者而言,关键仍然是弄清每个工具实际拥有什么权限,而不是它遵循哪种协议。S2

固定工作流与自主 Agent

两者的分界在于「下一步做什么」由谁决定。工作流由人预先排定:先切分,再抽取,再校验,再汇总,模型只在每一格里干活。Agent 则由模型自行决定调用哪个工具、要不要重试、什么时候算完成。S3

可靠性差别相当大。工作流的每一步都可以单独测试、单独回放,出错时能立即定位。Agent 的路径每次可能不同,某一步的小偏差会影响后续所有判断,且失败往往表现为「跑完了,但结果不对」,比直接报错更难发现。因此稳妥的做法是默认用工作流,只在路径确实无法预先确定时才用 Agent,并且给它设置明确的终止条件与人工确认点。S3

  • 读与写分开授权:探索阶段只给读权限,确认方案后再开写权限。
  • 写操作先出差异清单:让它先列出「将要改哪些文件的哪些行」,人看过再执行。
  • 限定作用范围:只允许在指定目录内操作,不允许触及备份与版本库以外的地方。
  • 设步数与时间上限:防止在错误路径上无限重试。
  • 全程留痕:记录每一次调用与结果,出问题才能回溯。
S4

外部内容一律视为不可信

一旦允许模型读取网页、邮件或他人提供的文件,就必须假定这些材料里可能夹带针对模型的指令。模型并不天然区分「这是要处理的材料」与「这是要遵从的命令」,两者在上下文里都是文字。已有工作把这类风险归入受工具增强的语言模型所特有的安全问题。对个人使用者而言,最简单的防线不是让模型学会分辨,而是不给它可以造成不可逆后果的权限。S1S4

从手工到自动化的四个台阶

自动化不必一步到位,实际上一步到位几乎总是失败。稳妥的路径是四个台阶,每一级都能独立产生价值,也都能停在那里不再往上走。第一级是纯手工加模型辅助:材料自己贴,结果自己复制出来,模型只负责生成与判断。这一级最慢,但对陌生任务是必要的,因为你需要先弄清楚这件事到底该怎么做。

第二级是把确定的部分脚本化:切分、格式转换、字段校验、结果汇总交给程序,模型仍由人逐批调用。这一级的收益最大,因为它消灭的是最枯燥也最容易出错的环节,而风险几乎为零。多数个人项目停在这一级就足够了。第三级是固定工作流:把整条链路串起来自动跑,人只在预设的检查点介入。第四级才是让模型自行决定步骤,即前面说的 Agent。S3

  • 上一级之前,先确认下一级的每一步都已经在上一级中被手工验证过。
  • 每上一级,都要新增相应的留痕:脚本化要记参数,工作流要记每步产物,Agent 要记每次调用。
  • 任何一级出现连续两次说不清原因的失败,就退回上一级,而不是加更多自动化去补救。
  • 检查点的位置随级别上移而更重要,第三级以上必须有不可跳过的人工确认。
  • 自动化的收益要能说出具体数字,说不出就说明这一级不值得上。

还有一条与技术无关的判断:这件事你会做多少次。只做一两次的工作,手工加模型辅助永远最划算,为它写脚本是在赔本。要做几十次以上、且每次形态相近的工作,才值得往上走。本站的书目整理、体例统一、年表核对属于后者,而某一篇文章的翻译润色属于前者,两类工作不必用同一套办法。

此外还有一条容易被忽略的成本:自动化本身也要维护。脚本会因材料格式变化而失效,工作流会因某一步的产品更新而中断,而这些故障往往在你最赶时间的时候出现。因此每上一级之前,不妨先估一估维护它需要多少精力,若这份精力超过了它省下的,那就不值得往上走。

Conclusion

结语

工具让模型的手伸得更长,但脑子还是原来那个。把确定的事交给程序,把判断的事留给人,把生成与表述交给模型,这条分工线画清楚了,自动化才是省力而不是添乱。

仍可追问

  • 间接提示注入目前没有公认的通用防御方案,本文只给出权限层面的规避建议。
  • 多步 Agent 的错误累积规律缺少针对文献整理任务的公开量化研究。
  • 工具接入规范仍在快速演变,本文对具体协议不作技术细节描述。

参考资料

  1. S1

    Grégoire Mialon, Roberto Dessì, Maria Lomeli, Christoforos Nalmpantis, Ram Pasunuru, Roberta Raileanu, 等.Augmented Language Models: a Survey.2023

    DOI / ISBN:arXiv:2302.07842查看来源
  2. S2

    Model Context Protocol 项目.Model Context Protocol Documentation.2026

    查看来源
  3. S3

    Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao.ReAct: Synergizing Reasoning and Acting in Language Models.2023

    DOI / ISBN:arXiv:2210.03629查看来源
  4. S4

    National Institute of Standards and Technology.Artificial Intelligence Risk Management Framework (AI RMF 1.0), NIST AI 100-1.2023

    DOI / ISBN:10.6028/NIST.AI.100-1查看来源