Agent 工程

AI Agent 核心概念

从 ReAct 循环、单 Agent 与多 Agent,到上下文与记忆管理、工具调用可靠性、可观测性与评测,整理一套 AI Agent 的核心概念与常见设计取舍。

本文描述的是 AI Agent 系统中的通用机制与设计取舍,属于公开的工程概念,不包含任何特定项目、企业或个人的实现细节。

ReAct 循环

ReAct(Reason + Act)是一种将推理与行动交替进行的 Agent 执行模式,由"思考 → 行动 → 观察 → 重复"组成。

其关键特征在于:模型能根据真实反馈调整计划,而非执行一段固定脚本。

单 Agent 与多 Agent

大语言模型的上下文窗口是有限的。当单个 Agent 承担全部工作时,上下文会迅速被占满,推理质量随之下降,且任一环节的失败可能拖垮整个任务。

多 Agent 架构将工作拆分给多个角色:每个 worker 拥有相对干净的上下文,失败被局部化,且部分子任务可以并行执行。其代价是引入了编排(orchestration)与通信的复杂度。

维度单 Agent多 Agent
上下文所有任务共享一个上下文,容易被占满每个 worker 上下文独立、更干净
故障单点失败影响整体失败被局部隔离
并行难以并行子任务可并行
复杂度实现简单需要编排与通信机制

Agent 间通信

多 Agent 之间传递结果通常有两种方式:

在需要可追踪性与跨节点扩展的场景中,消息传递通常更受青睐。

上下文与记忆管理

长工具输出

当工具返回的内容很长时,常见做法是将完整结果存储在上下文之外,仅在对话中保留一个引用标识(reference token),需要时再按引用取回。这样可在不丢失数据的前提下控制上下文体积。

记忆压缩(Compaction)

当上下文接近 token 上限时,可对较早的历史进行摘要,并丢弃重要性较低的观察记录。难点在于判断哪些信息可以安全丢弃——若移除了后续仍需要的内容,Agent 可能在没有报错的情况下静默失败。

技能发现(Skill Discovery)

与其在提示词中一次性加载全部工具,技能可以自行注册,由 Agent 在运行时按需查询所需能力。这能减少 token 浪费、保持上下文干净,机制上类似后端系统中的服务发现(service discovery)。

工具调用可靠性

提升工具调用可靠性的常见手段包括:

可观测性与调试

多 Agent 系统的失败排查依赖跨所有 Agent 的链路追踪,通常通过共享的追踪 ID(trace ID)串联。缺少追踪时,很难定位是哪个 worker、因何原因失败。因此可观测性需要从设计之初就内建,而非事后补充。

非确定性与评测

Agent 系统最大的工程挑战之一是非确定性:相同输入在不同运行中可能产生不同行为,因此无法用精确输出匹配来做测试。

更适用的做法是构建评测(evals),以任务完成度和失败模式等指标来衡量系统表现,而非逐字符比对输出。

参考与说明