Agent 到底是什么

Agent 可以理解为一个围绕目标持续行动的智能主体。它不会只根据一次输入生成一次输出,而是能够观察当前状态、判断下一步、采取行动、读取行动结果,并决定继续还是停止。

一个实用定义是:

Agent 是以目标为导向,在一定授权范围内,根据环境反馈自主选择下一步行动,直到完成任务、需要帮助或触发停止条件的系统。

这里有三个关键词:

  • 目标导向:它不是漫无目的地生成内容,而是在追求一个可判断的结果。
  • 自主选择:开发者不必提前写死每一步,Agent 可以根据中间结果改变计划。
  • 环境反馈:它会读取工具结果和状态变化,再做下一轮判断。

因此,Agent 的核心不是“像人一样说话”,而是能够形成一个闭环:目标、观察、决策、行动、反馈、再决策。

模型不等于 Agent

模型是 Agent 的智能能力来源,但模型本身通常只负责根据输入生成输出。Agent 则把模型放进一个持续运行的任务过程里。

维度 模型 Agent
输入输出 一次输入对应一次输出 多轮观察、行动与反馈
关注点 生成当前最合适的内容 推动任务向目标前进
行动能力 表达调用工具的意图 选择工具并根据结果继续
状态 依赖本次上下文 维护任务进度、假设和计划
停止方式 完成本次生成 判断目标已达成、受阻或应求助
评价标准 输出质量 端到端任务完成质量

一个聊天机器人可以只是模型应用,也可以是 Agent。区别不在界面,而在它是否会根据目标主动获取信息、调用能力、验证结果并持续推进。

同样,给模型加上一个工具按钮,也不一定立刻成为 Agent。如果所有步骤都由程序提前规定,模型只负责某个固定环节,它更像工作流里的智能节点。

Agent 的最小运行闭环

一个典型 Agent 会反复经历以下过程:

  1. 理解目标与完成标准。
  2. 观察当前环境和已有信息。
  3. 识别信息缺口或任务障碍。
  4. 选择下一步动作。
  5. 调用工具或生成中间结果。
  6. 读取动作造成的新状态。
  7. 检查目标是否已经达成。
  8. 继续、调整、求助或停止。

关键点在第 6 和第 7 步。没有反馈,Agent 就无法修正;没有完成判断,它就可能无限循环,或者在任务尚未完成时过早结束。

可以把 Agent 看成一台动态决策机:程序定义可用能力和边界,模型根据每一轮实际结果选择路径。

Agent 的七个核心能力

明确目标

Agent 必须知道自己要完成什么。模糊目标会让自主性变成随机探索。

一个有效目标通常包含:

  • 期望结果。
  • 当前背景。
  • 约束条件。
  • 成功标准。
  • 必须保留的证据。
  • 需要停止并询问用户的情形。

“帮我看看这个项目”不是好目标;“定位支付回调偶发失败的原因,给出证据,不修改代码”就清楚得多。

目标不需要规定每个步骤,但要告诉 Agent 什么结果算完成。

感知与观察

Agent 要根据环境做决定,首先必须能够观察环境。

观察可能来自:

  • 用户输入和对话历史。
  • 文件、代码与项目规范。
  • 搜索结果和知识库。
  • 数据库、业务系统与 API。
  • 浏览器页面或桌面界面。
  • 日志、测试结果和监控指标。
  • 其他 Agent 的交付物。

观察不等于把所有信息都塞进上下文。优秀的 Agent 会主动寻找相关信息,并区分事实、工具结果、用户要求和自己的推断。

如果观察不完整,它应该识别缺口;如果数据相互冲突,它应该继续验证,而不是挑选最符合预期的一份。

推理与规划

Agent 需要把目标拆成可执行的下一步,但计划不是一次生成后永不改变的清单。

真正有用的规划包括:

  • 判断问题属于哪一类。
  • 识别最有信息增益的下一步。
  • 估计动作的风险和成本。
  • 根据结果更新假设。
  • 在多条路径之间取舍。
  • 发现原计划失效时重新规划。

对于复杂任务,Agent 可以维护一个简短计划来跟踪进度;对于简单任务,直接执行可能更高效。是否规划、规划多细,也应该由任务复杂度决定。

行动与工具

工具让 Agent 从“会回答”变成“能做事”。

常见工具包括搜索、文件读写、终端、数据库、浏览器、代码执行、消息系统和各类 MCP 服务。Agent 需要判断:

  • 是否真的需要调用工具。
  • 哪个工具最适合当前步骤。
  • 参数应该怎样构造。
  • 结果是否可信和完整。
  • 失败后应重试、换路还是求助。

工具越多不一定越好。重叠工具、含糊描述和不稳定返回会增加选择难度。对 Agent 而言,少量边界清楚、参数明确、反馈结构稳定的工具通常更有效。

状态与记忆

Agent 要持续推进任务,就需要记住已经发生了什么。

短期状态通常包括:

  • 当前目标。
  • 已确认事实。
  • 正在验证的假设。
  • 已完成步骤。
  • 未完成事项。
  • 工具调用结果。
  • 用户最新修正。

长期记忆则可能保存用户偏好、历史项目知识和跨任务经验。但长期记忆不是越多越好,它必须有来源、时效和删除机制。

需要特别区分“记忆”和“真相”。过去记录只是上下文,仍然可能过期或错误。Agent 应在高影响决策前重新核对关键事实。

反思与验证

Agent 不能把“采取了动作”当成“完成了任务”。

验证可能包括:

  • 代码修改后运行测试和静态检查。
  • 数据分析后复算关键指标。
  • 发布内容前执行格式校验。
  • 写入外部系统后读取成功回执。
  • 生成文档后检查结构和可读性。
  • 给出结论前对照原始证据。

反思不是让模型无限自我批评,而是在关键节点用可观察证据判断结果是否符合目标。

可靠的 Agent 会问:我完成的是用户真正要的结果,还是只完成了一个看起来相关的动作?

停止与求助

停止能力是 Agent 智能的一部分。

它应该在以下情况下结束:

  • 成功标准已经满足。
  • 已获得足够证据,可以交付结果。
  • 继续行动不会带来有价值的新信息。
  • 达到时间、步骤或成本预算。
  • 缺少必须由用户提供的信息。
  • 下一步需要新的权限或会产生重大外部影响。
  • 多次尝试后仍被同一条件阻塞。

不会停止的 Agent 会浪费资源,过早停止的 Agent 则会留下半成品。好的停止策略需要同时考虑完成度、风险、不确定性和边际收益。

Agent 有不同的自主程度

Agent 不是“完全自动”与“完全手动”之间的二选一,而是一条连续光谱。

级别 行为 典型场景
单次生成 根据输入直接回答 摘要、改写、分类
智能路由 选择一个工具或处理路径 查询分流、意图识别
工具型 Agent 根据结果选择下一次工具调用 资料检索、故障诊断
迭代型 Agent 多轮计划、执行和验证 编码、研究、数据分析
持久型 Agent 长时间运行,支持恢复和用户介入 监控、运营自动化、长期目标
多 Agent 系统 多个角色协作并合并结果 大型研究、复杂工程并行任务

更高自主性意味着更高的工程要求。任务越长、工具权限越大、外部影响越强,就越需要清晰的授权、检查点、幂等和人工接管。

不要为了“更像 Agent”而追求最大自主性。最佳自主程度取决于任务价值、风险、可验证性和失败成本。

用一次故障诊断看懂 Agent

假设目标是:“找出订单服务过去一小时错误率上升的原因,只做诊断,不修改线上系统。”

一个 Agent 可能这样工作:

  1. 读取服务监控,确认错误率和开始时间。
  2. 查询部署记录,发现同一时间附近有版本发布。
  3. 查看错误日志,识别主要异常类型。
  4. 对照代码变更,形成数据库连接池配置错误的假设。
  5. 查询数据库指标,发现连接等待时间同步上升。
  6. 检查其他服务是否存在相同现象,排除全局数据库故障。
  7. 汇总证据、影响范围和建议的修复步骤。
  8. 因用户只授权诊断,所以停止在建议阶段,不执行回滚。

这个例子体现了 Agent 的本质:每一步都由上一轮观察决定,同时始终受目标和授权范围约束。

如果流程提前写死为“查监控、查日志、查部署”,它仍然有用,但更接近自动化工作流。Agent 的价值在于遇到不同证据时能够选择不同路径。

Agent 与工作流怎样选择

适合 Agent 的任务通常具有以下特点:

  • 无法提前穷举所有步骤。
  • 中间结果会显著改变后续路径。
  • 需要在多种工具和信息源之间判断。
  • 结果能够通过证据或规则验证。
  • 人工处理成本较高,但失败风险可控制。

更适合确定性工作流的任务包括:

  • 步骤固定且规则明确。
  • 每一步都可以用普通代码可靠实现。
  • 低延迟和低成本比灵活性更重要。
  • 错误路径不可接受。
  • 没有必要让模型决定下一步。

实践中二者经常组合使用。确定性工作流负责稳定骨架,Agent 负责其中需要语义判断、探索或动态决策的环节。

单 Agent 与多 Agent

单 Agent 更简单,拥有统一上下文和明确责任,适合多数任务。多 Agent 只有在工作确实可以拆成相对独立的部分时才值得使用。

多 Agent 可能带来:

  • 并行处理,缩短复杂任务的墙钟时间。
  • 不同角色使用不同工具、上下文或评估标准。
  • 独立审查,减少单一路径的盲点。

同时也会增加:

  • 上下文复制和调用成本。
  • 重复劳动与结论冲突。
  • 共享状态同步难度。
  • 汇总遗漏和责任模糊。
  • 权限与审计复杂度。

一个简单原则是:先证明单 Agent 无法在可接受时间和质量内完成,再引入多 Agent。并行必须有清晰任务边界、交付格式和合并规则。

常见失败模式

失败模式 表现 改进方向
目标漂移 做着做着偏离用户真正需求 固定任务契约,定期对照完成标准
信息不足却强行回答 把推断写成事实 显式记录未知项,优先补充证据
工具选择错误 反复调用无关工具 精简工具集,明确用途和返回语义
计划僵化 新证据出现后仍沿用旧路径 每轮根据观察更新假设
无限循环 重复搜索、重复修改 步数预算、重复检测和停止条件
过早结束 工具调用成功就宣称任务完成 增加结果验证和证据要求
越权行动 解释请求变成了外部写入 区分分析、修改、发布和破坏性权限
记忆污染 使用过期或错误历史 标记来源和时间,高影响事实重新核验
只报喜不报忧 隐藏失败和不确定性 强制报告限制、未完成项和验证状态

这些问题有些来自模型判断,有些来自工具和运行系统。排查时要看完整任务链,不能把所有失败都简单归因于模型能力。

怎样设计一个好 Agent

从任务契约开始

先定义目标、授权范围、成功标准和输出证据,再选择模型和工具。没有清晰任务契约,后续提示词通常只是在弥补边界不明。

只给必要工具

按任务暴露工具,保持名称、参数和返回结构清晰。工具应该帮助 Agent 做出下一步判断,而不是把底层复杂性原样倾倒给它。

让反馈可行动

“操作失败”不是好反馈。错误结果应该说明失败阶段、可重试性和可用替代方案,让 Agent 能判断下一步。

把风险写成强制边界

外部写入、购买、删除、发送消息和扩大任务范围,需要明确授权或审批。不要只依赖提示词要求模型谨慎。

用证据定义完成

为每类任务规定最低验证要求。代码任务需要测试,研究任务需要来源,数据任务需要计算依据,外部写入需要成功回执。

允许合理求助

Agent 不应该为了维持“自主”而猜测关键输入。缺少必要信息或新权限时,及时请求用户决定往往是最可靠的行动。

怎样评估 Agent

评估 Agent 不能只看最终回答是否流畅,还要观察整个任务过程。

建议至少测量:

  • 端到端任务完成率。
  • 最终结果的正确性与完整性。
  • 工具选择和参数构造成功率。
  • 关键事实的证据覆盖率。
  • 不必要调用次数。
  • 延迟、Token 和外部服务成本。
  • 误操作与越权率。
  • 人工接管率。
  • 中断后的恢复成功率。
  • 相同任务重复运行的稳定性。

评估集应该来自真实业务,而不是只用理想化示例。每次调整模型、提示词、工具或上下文策略后,都要在同一批代表性任务上比较结果。

最重要的是评估完整交付。调用次数更少、速度更快或成本更低,只有在最终结果仍然达标时才是改进。

什么时候不该使用 Agent

以下情形通常不需要 Agent:

  • 一次模型调用已经足够。
  • 普通程序可以稳定、低成本地完成。
  • 流程固定,不需要动态决策。
  • 任务无法验证,却会造成高影响后果。
  • 允许的工具权限远大于任务收益。
  • 失败成本高,同时缺少人工审批。
  • 没有可靠数据源或环境反馈。

Agent 是解决动态决策问题的手段,不是所有 AI 功能的默认形态。

一份上线前检查清单

让 Agent 接触真实任务前,至少确认:

  • 目标和成功标准清楚。
  • 授权范围与禁止动作明确。
  • 观察来源可信且可追踪。
  • 工具数量适当,接口语义稳定。
  • 写操作与只读操作已经分离。
  • 关键动作有验证或审批。
  • 状态、预算和停止条件明确。
  • 失败时能够求助或安全退出。
  • 最终交付必须带证据。
  • 关键场景已经进入持续评估。
  • 用户能看到进度并及时接管。
  • 敏感信息不会进入不必要的上下文或日志。

如果这些条件还没有建立,应该先缩小 Agent 的自主范围,再逐步放开能力。

最后理解 Agent

Agent 的价值不在于模仿人类,而在于把模型的语义判断能力变成一段持续、可反馈的任务执行过程。

它既不是单纯的模型,也不是工具集合,更不是越自主越好。一个真正有用的 Agent,需要有清晰目标、可信观察、合理决策、受控行动、持续反馈、结果验证和正确停止。

可以用一句话记住它:

Agent 不是“会回答问题的模型”,而是“会根据现实反馈继续把事情往前推进的系统”。

参考资料

OpenAI 的官方模型指导强调为复杂任务提供领域背景、硬约束、授权边界和成功标准,并建议明确工具路由、重试、停止条件以及最终验证。这些原则可以作为设计与评估 Agent 的基础检查项:OpenAI Model guidance