Agent 到底是什么
Agent 可以理解为一个围绕目标持续行动的智能主体。它不会只根据一次输入生成一次输出,而是能够观察当前状态、判断下一步、采取行动、读取行动结果,并决定继续还是停止。
一个实用定义是:
Agent 是以目标为导向,在一定授权范围内,根据环境反馈自主选择下一步行动,直到完成任务、需要帮助或触发停止条件的系统。
这里有三个关键词:
- 目标导向:它不是漫无目的地生成内容,而是在追求一个可判断的结果。
- 自主选择:开发者不必提前写死每一步,Agent 可以根据中间结果改变计划。
- 环境反馈:它会读取工具结果和状态变化,再做下一轮判断。
因此,Agent 的核心不是“像人一样说话”,而是能够形成一个闭环:目标、观察、决策、行动、反馈、再决策。
模型不等于 Agent
模型是 Agent 的智能能力来源,但模型本身通常只负责根据输入生成输出。Agent 则把模型放进一个持续运行的任务过程里。
| 维度 | 模型 | Agent |
|---|---|---|
| 输入输出 | 一次输入对应一次输出 | 多轮观察、行动与反馈 |
| 关注点 | 生成当前最合适的内容 | 推动任务向目标前进 |
| 行动能力 | 表达调用工具的意图 | 选择工具并根据结果继续 |
| 状态 | 依赖本次上下文 | 维护任务进度、假设和计划 |
| 停止方式 | 完成本次生成 | 判断目标已达成、受阻或应求助 |
| 评价标准 | 输出质量 | 端到端任务完成质量 |
一个聊天机器人可以只是模型应用,也可以是 Agent。区别不在界面,而在它是否会根据目标主动获取信息、调用能力、验证结果并持续推进。
同样,给模型加上一个工具按钮,也不一定立刻成为 Agent。如果所有步骤都由程序提前规定,模型只负责某个固定环节,它更像工作流里的智能节点。
Agent 的最小运行闭环
一个典型 Agent 会反复经历以下过程:
- 理解目标与完成标准。
- 观察当前环境和已有信息。
- 识别信息缺口或任务障碍。
- 选择下一步动作。
- 调用工具或生成中间结果。
- 读取动作造成的新状态。
- 检查目标是否已经达成。
- 继续、调整、求助或停止。
关键点在第 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 可能这样工作:
- 读取服务监控,确认错误率和开始时间。
- 查询部署记录,发现同一时间附近有版本发布。
- 查看错误日志,识别主要异常类型。
- 对照代码变更,形成数据库连接池配置错误的假设。
- 查询数据库指标,发现连接等待时间同步上升。
- 检查其他服务是否存在相同现象,排除全局数据库故障。
- 汇总证据、影响范围和建议的修复步骤。
- 因用户只授权诊断,所以停止在建议阶段,不执行回滚。
这个例子体现了 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。