Agent模块协作机制与失败场景
感知、规划、记忆、行动模块的协作机制与设计依据
原题:请设计一个具备自主决策与工具使用能力的AI Agent,系统阐述其整体架构及核心模块(如感知、规划、记忆、行动等)的设计思路与内在逻辑,并说明各模块的功能作用、协作机制及设计依据,体现对Agent系统性构建的深入理解。
Agent · 百度真题
回答与解析
整体架构:受控反馈循环
Agent 将输入解析、规划、状态、记忆和工具执行解耦。LLM 负责生成候选计划或结构化决策,确定性状态机、权限系统和工具层负责执行边界。
1. 感知与状态
把用户请求、工具结果和环境事件转换为带来源的结构化状态,保留原始输入引用。意图分类不是不可变真值;低置信或高风险场景应请求澄清。
2. 规划
简单任务直接选择下一动作,复杂任务拆成有完成条件的子目标。系统可以保存简洁的计划摘要和决策依据,但不依赖展示隐藏 Chain-of-Thought。每轮检查最大步数、时间、成本、重复状态和人工确认点。
3. 记忆
- 工作记忆保存当前目标、约束和已验证观察。
- 长期记忆写入前检查来源、权限、用户隔离、有效期和纠错机制;重要性分数只能辅助排序,不能替代真实性验证。
- 摘要和向量检索都可能丢失或误召回信息,关键事实应回查权威记录。
4. 行动
工具先注册 Schema、返回协议和风险等级。调用时完成参数、权限、幂等、副作用和资源预算检查;执行结果以 Observation 返回状态机。失败时根据错误类型重试、换工具、降级、请求确认或终止。
5. 协作与评测
模块通过版本化协议和 trace_id 连接,记录状态迁移、工具调用、结果和停止原因。评测任务完成率、错误副作用、工具成功率、循环率、延迟、成本和人工介入率。RAG 只是可选知识工具,不应把检索结果自动写成长期真值。
结论:自主性来自可反馈的规划,可靠性来自状态机、权限、预算和可回滚工具执行。
口语版讲法(约4分钟)
- 整体分层循环架构
- 感知模块做结构化输入
- 规划模块用ReAct循环
- 记忆模块分三层并设重要性评分
- 行动模块的工具调用与异常处理
- 融合RAG作为工具之一
如果让我设计一个具备自主决策和工具使用能力的 Agent,我会用一个“受控闭环”架构。它不是让大模型自由发挥,而是由状态管理器串起感知、规划、记忆、行动和反馈,每一轮都更新状态,并且受权限、超时、步数和审计约束。
先看感知模块。它负责接收用户输入、工具返回、环境事件,做意图识别和信息抽取,形成结构化状态。比如用户说“帮我处理这个退款异常”,感知层要抽取订单号、用户身份、当前意图、缺失信息,并判断是否需要鉴权。这样下游模块拿到的是清晰状态,而不是一段原始自然语言。
规划模块负责决定下一步。简单任务可以直接映射到工具调用;复杂任务才交给 LLM planner 或 ReAct 做多步拆解。这里我会加一个原则:高风险业务流程不能完全让模型自由规划,比如退款、发券、改订单,必须走状态机或审批流;模型可以负责解释和参数建议,但最终执行路径由系统约束。
记忆模块分短期和长期。短期记忆保存当前任务上下文、已完成步骤、工具 observation;长期记忆保存用户偏好、历史工单、领域知识和工具经验。长期记忆可以用向量库、关系库或图数据库,但写入时要做重要性评分和去重,不然越存越乱。读取时也要带权限和时间过滤,避免拿到过期或无权访问的信息。
行动模块负责工具调用。每个工具都要有 schema、权限等级、超时配置、是否有副作用、是否可重试。模型生成 tool call 后,系统先做参数校验和权限检查,再执行工具。对于写操作,比如发起退款、发送通知、修改配置,要支持 dry-run、人工确认或二次授权。工具返回结果后,要转换成标准 observation,回到状态管理器。
反馈模块负责判断任务是否完成,以及是否需要重试、换工具、请求用户补充信息或转人工。比如工具超时,可以重试一次;参数缺失,就问用户;连续多轮失败,就停止自动执行,避免 Agent 死循环。
RAG 在这个架构里可以作为一种工具,也可以作为长期记忆的一部分。规划模块在需要外部知识时调用 knowledge retrieval,拿到资料后再决定是否继续调用业务工具。这样比每次对话都强制检索更灵活,也能减少无意义调用。
我认为这个系统的设计依据有三点:模块化,方便每层独立优化;反馈驱动,让每次工具执行都能改变下一步决策;受控自治,让 Agent 有决策能力,但不越过业务和安全边界。
这里有个高级问题:如果长期记忆、RAG 文档和实时工具结果互相冲突,应该信谁?我的做法是按来源可信度和时效性排序:实时业务系统优先,其次是有版本的知识库,再其次是历史记忆;冲突无法解决时,让模型明确提示不确定,而不是强行合并。
关键一句:生产级 Agent 是受控自治,LLM 负责规划建议,但状态机、权限和工具系统负责执行边界。
面试官还可能这样问
- 问法 1 · 场景切入
假设我们做一个智能客服Agent,用户问“帮我查上个月的订单”,它需要先查用户信息,再调用订单API,最后回复。如果中间某个API超时了,它该怎么自己决定重试还是换别的办法?你整体上怎么设计这样一个能自主决策、调用工具的Agent?
- 问法 2 · 层层追问
你做过那种能调用外部工具的AI系统吧?……那它拿到一个用户请求,怎么决定下一步做什么?……如果任务很复杂,比如订机票要查航班、比价格、下单,它怎么规划步骤?……再深入一点,每一步执行完,怎么把结果反馈回来指导下一步?你完整说一下架构吧。
- 问法 3 · 直球架构
设计一个具备自主决策与工具使用能力的AI Agent,要求说清感知、规划、记忆、行动四个模块的设计思路和协作机制。你从整体架构开始讲,重点说明每个模块为什么这么设计,以及它们怎么协同完成闭环。