Agent如何完成任务

本节目标

你将理解 Agent 不是“更长的提示词”,而是一个围绕目标运行的受控系统。学完后,你能画出 Agent 循环,区分工作流与 Agent,并指出工具权限、状态和停止条件。

最小 Agent 模型

工程语境中,可以先用下面的拆解工作,不必争论唯一术语定义:

Agent = 目标 + 当前状态 + 决策机制 + 可用工具 + 控制策略 + 反馈
  • 目标:成功是什么,例如“形成一份可供人工发送的会议行动项草稿”。
  • 状态:任务已知信息、已完成步骤、工具结果与错误。
  • 决策机制:根据目标和当前状态选择下一步;现代应用常使用 LLM,但不是唯一选择。
  • 工具:搜索、数据库查询、文件读取、发送消息等外部能力。
  • 控制策略:权限、预算、重试、审批和停止条件。
  • 反馈:工具返回值、环境变化、用户澄清或评测结果。

观察—决定—行动循环

一个受控循环可以写成:

接收目标
  ↓
观察当前状态与可用信息
  ↓
选择下一步 ──信息不足──→ 请求澄清
  ↓
生成结构化工具参数
  ↓ 权限与参数校验
执行工具
  ↓
读取结果并更新状态
  ↓
达到目标 / 需要审批 / 触发停止条件

ReAct 论文展示了让语言模型交替产生推理与行动、再读取环境反馈的一种研究方法。稳定事实是这种“模型输出行动—环境返回观察”的交替范式具有代表性;工程建议是生产系统不应暴露或依赖未经约束的自由文本推理,而应把关键决策、工具参数、证据与结果记录成可审计结构。

工作流还是 Agent

情况固定工作流更合适Agent 更可能有价值
步骤顺序已知、分支有限下一步依赖开放环境反馈
输入格式稳定信息不完整、表达多样
风险可用规则穷举需要模型判断,但能设边界与审批
测试每条路径可枚举需用任务集统计成功率并检查轨迹
成本要求低延迟、低波动复杂任务收益足以覆盖多次调用

实际系统常是混合体:固定工作流负责大框架,Agent 只在某个低风险节点选择动作。这通常比“所有步骤都自主决定”更易验证。

工具不是一句描述,而是契约

假设 Agent 有 create_ticket(title, severity, evidence) 工具。至少要定义:

  • 字段类型、长度、必填项和允许值;
  • 调用者身份与最小权限;
  • 哪些参数来自可信数据,哪些来自模型;
  • 超时、失败、重复调用和部分成功如何处理;
  • 调用是否可撤销,是否需要人工确认;
  • 返回值如何验证,何时禁止继续。

模型生成了合法 JSON,只说明“格式通过”,不说明业务上有权创建工单。授权必须由系统执行层判断,不能由模型自我声明。

模型不是授权主体

对会产生外部副作用的工具,执行层应从可信身份与授权系统绑定、校验并记录:谁发起请求、使用哪个服务身份、若代表用户则代表谁/哪个租户、允许什么动作和对象、授权或审批何时到期。模型可以提议动作和业务参数,不能生成、扩大或替代这些授权事实;共享后台凭据也不能跳过对象级授权。

状态、记忆与上下文不是同一个词

  • 上下文:本次模型调用能看到的输入。
  • 任务状态:系统保存的结构化事实,例如 ticket_id、步骤状态和审批结果。
  • 短期记忆:当前任务的历史摘要或工作草稿。
  • 长期记忆:跨任务保留的信息,例如用户偏好;它需要来源、更新、删除和访问控制。

把所有历史对话直接塞进上下文,不等于可靠记忆。结构化状态应由应用维护,关键字段通过工具或规则验证。

三道安全边界

  1. 读写分离:先允许只读查询;写入、发送、删除、支付等工具单独授权。
  2. 批准点:高影响动作执行前展示动作、对象、依据和可见后果,由人确认。
  3. 停止条件:最大步骤数、最大重试、时间或成本预算、重复状态、风险规则命中时停止并转人工。

停止不是失败。对不确定情况安全退出,往往是 Agent 的重要能力。

当前工程讨论中的工具分类

NIST 在 2025 年 AISIC 研讨总结中提出可从功能、访问方式、风险、可靠性、模态、可监控性与自主程度等多个维度描述 Agent 工具,并特别区分只读/写入和可信/不可信环境。它是公开研讨总结而非正式标准,但可作为权限评审清单。NIST 2026 年关于软件 Agent 身份与授权的材料仍是概念项目文件,也不应写成已定标准。

练习:设计一个只读排障 Agent

场景:用户报告网站打不开。Agent 可以读取服务状态、最近告警和公开运行手册,但不能重启服务。

请写出:

  1. 目标与明确的非目标;
  2. 三个只读工具的输入、输出与错误;
  3. 哪些信息不足时必须询问用户;
  4. 最大步骤数与停止条件;
  5. 输出中如何区分已观察事实与推断;
  6. 若建议重启,怎样转交有权限的人审批。

合格答案不需要框架代码,但必须能让另一位工程师据此实现和测试。

自测

  1. 为什么“能调用工具”不等于“可以执行任意动作”?
  2. Agent 状态为什么不应只存在于对话文本中?
  3. 固定步骤的发票处理为什么通常先选工作流?
  4. 举出两个正常停止和两个异常停止条件。

参考答案要点:工具能力还受身份、参数、业务规则与审批约束;结构化状态更易验证、恢复和审计;固定路径用工作流更稳定;正常停止如目标完成、用户取消,异常停止如重复循环、超预算、工具持续失败或命中风险规则。

相关概念

  • Tool Calling负责模型到工具参数的受控接口,MCP提供客户端与服务器之间的开放协议边界。
  • Agent 核心深入状态、循环、终止、记忆和检查点;Agentic Design Patterns比较可复用控制模式。
  • 当步骤可提前枚举时优先进入 工作流自动化,不要用自主性代替明确流程。

小结与下一步

Agent 的核心不是“自主性越高越好”,而是用可控循环在信息不确定时完成任务。下一节进入 能力边界与失败模式,把常见问题转成可执行测试。

参考资料

获取日期:2026-07-22。