从调用一次模型,到完成一个任务:我对 Agent 的理解

刚开始使用大语言模型时,我关心的是它能不能回答问题。开始做自己的任务型 Agent 后,我慢慢把注意力放到另一件事上:一个答案,怎样才能变成实际完成的工作?
我用 Notion 内容管理来理解这个区别。让模型写一篇文章,可以只得到一段文本;让系统整理指定笔记并保存草稿,还需要读取资料、确认位置、执行写入,以及检查结果。
下面是用于说明分工的任务示例,不是项目运行日志:
找到我的 Agent 学习笔记,整理一篇中文草稿,保存到指定页面。

模型负责理解,工具负责接触外部系统

这个需求里有模糊的部分:什么内容算相关笔记,哪些观点需要保留,怎么组织成文章。模型可以参与理解与表达。
但我的笔记不在模型的参数里。要知道 Notion 页面当前写了什么,需要工具实际读取。写入是否成功,也需要根据外部系统返回的结果判断。
所以我会先区分四种职责:模型提出判断和生成内容,工具提供外部操作,状态保存任务过程,程序负责执行规则。
它们可以协作,但不能互相替代。模型说“已经保存”,不能代替工具的成功结果;工具返回成功,也不能证明正文切题。

程序需要把模糊需求变成明确条件

我希望系统知道要处理的范围、输出语言、保存位置,以及完成后需要返回什么。条件缺失时,应当补充信息,而不是悄悄猜一个目标。
流程可以写成:
明确需求 → 读取资料 → 整理草稿 ↓ 确认完成情况 ← 检查写入 ← 人工确认
这只是流程示意,具体实现可以使用普通函数,也可以使用编排框架。是否采用 Agent 的方式,取决于任务中有多少步骤需要动态判断。
如果输入和操作都固定,一个明确的工作流可能更容易维护。只有在下一步取决于内容和执行结果时,才需要给模型相应的决策空间。

状态告诉我任务走到了哪里

状态可以包含原始需求、读到的页面、已完成步骤、工具返回结果和当前错误。后续步骤需要这些信息,排查时也需要它们。
例如,检索没有找到资料,应该返回范围不足的说明;读到了资料但保存失败,则应该保留草稿,让我知道内容处理已经完成。
我不希望所有失败都变成一句“出错了,请重试”。具体停在哪里,会决定下一步该怎样处理。

完成任务,需要两种检查

一类是程序能确认的条件:页面 ID 是否正确,请求是否成功,必填字段是否齐全。
另一类是需要阅读判断的条件:草稿是否回答了主题,是否遗漏了重要资料,是否保留了来源。它们可以结合模型检查与人工审阅。
我也希望系统能够停下来。有限重试之后,给出已经完成的部分、未完成的问题和可用结果,比不断调用工具却没有进展更有用。

我现在怎样理解 Agent

在我的任务场景里,Agent 是一套让模型参与决策、通过工具执行、依据结果继续推进的系统。它是否好用,最终要看一个具体任务能否被核查地完成。
我会继续用小任务检验自己的设计:能否读对资料,能否保存到正确位置,失败时能否说清楚。把这些做好,比先追求一个很长的功能列表更有意义。
相关项目:LLM Task Agent
对于本文内容有任何疑问, 可与我联系.