智能体架构面试速查
本文对应 Agent开发实战 模块全部文档的面试考点提炼。内容量最大,覆盖了从基础概念到Harness工程、记忆系统全链路。
基础概念
Q1:Agent跟普通LLM对话的核心区别?
普通对话是"一问一答"产出文本。Agent是"接到任务后自己规划步骤、调用工具、观察结果、循环直到完成"——产出的是行动和结果。
Agent的核心循环:感知(理解任务)→ 思考(决定下一步)→ 行动(调用工具)→ 观察(看结果)→ 再思考。这个循环重复执行直到任务完成或达到终止条件。
最小组成:一个LLM(大脑)+ 一套工具(手脚)+ 执行循环(流程控制)+ 记忆(经验积累)。
📖 走进智能体的世界
设计范式
Q2:ReAct是什么?为什么它是目前最主流的Agent范式?
ReAct = Reasoning + Acting。每一轮交替进行推理和行动:先想(Thought)→ 再做(Action)→ 看结果(Observation)→ 继续想下一步。
主流的原因:对LLM友好(不需要一次规划完)、可观测性好(Thought暴露了决策过程)、容错性强(某步失败可以基于错误信息重新规划)、实现简单(一个while循环就能搭)。
局限性:复杂任务步骤多时容易"迷失方向",属于"走一步看一步"没有全局视野。
📖 主流架构深度对比
Q3:ReAct、Plan-and-Execute、Reflection三种范式各自适合什么?
ReAct:步骤少且工具调用明确的任务。比如查天气、查订单、做简单计算。
Plan-and-Execute:复杂的多步骤任务,需要全局规划。先让Planner输出完整计划,Executor逐步执行,遇到意外Replanner动态调整。
Reflection:对输出质量要求高的场景。生成 → 自我审视 → 修改 → 再审视。适合代码生成、报告撰写。
实际项目通常嵌套组合:顶层用Plan-and-Execute做全局编排,每个子任务用ReAct执行,关键输出用Reflection把关质量。
📖 主流架构深度对比
Q4:什么情况下"手搓"Agent比用框架更合适?
用框架的好处:快速验证、降低入门门槛、社区资源多。
手搓的动机:
- 框架过度抽象,你的场景只需要20%的功能,剩下80%是负担
- 需要在流程中间插入自定义逻辑,但框架没暴露这个插入点
- 生产环境对性能、可控性、调试便利性要求高
- LangChain等框架迭代过快,API频繁废弃带来维护风险
建议路径:先用框架做PoC验证流程可行 → 流程确定后用手搓实现生产版本。
核心能力
Q5:任务拆分怎么做?拆分的好处是什么?
把一个大任务分解成可独立执行的子任务。拆分方法两种:LLM动态拆分(Prompt中要求先输出计划)、代码预定义DAG(固定流程场景)。
好处:降低单步难度(LLM更容易做对)、支持并行执行(无依赖的子任务同时跑)、失败隔离(一步挂了不影响已完成的步骤)、进度可观测("完成3/5步")。
注意粒度:太粗("分析数据")执行时不知道具体做什么,太细("打开文件")浪费上下文。
Q6:怎么赋予Agent规划能力?规划容易翻车的地方?
三种做法:
- Prompt内规划:在System Prompt中要求"先列计划再执行"。零成本但质量依赖模型能力。
- 独立Planner:用专门的(可以是更强的)模型生成计划,另一个模型执行。分工明确。
- 递进式规划:不一次规划完,规划一步→执行一步→基于结果规划下一步。避免"空想"。
容易翻车的地方:过度乐观(假设每步都成功,不考虑失败分支)、粒度不当、僵化不变(环境变了还按旧计划走)。
记忆系统
Q7:Agent记忆系统怎么设计?短期和长期记忆分别存什么?
短期记忆:当前对话的上下文。存在LLM的上下文窗口里,包含消息历史、已执行步骤、中间状态。瓶颈是窗口有限。
长期记忆:持久化的历史信息。存在向量数据库/KV数据库里,包含用户偏好、历史交互摘要、学到的知识。需要检索调用。
协作方式:每轮对话前,用当前话题做相关性检索 → 把相关长期记忆注入上下文 → 对话结束后提取有价值的信息存入长期记忆。
记忆分类存储:事实性记忆("用户是金融行业")、偏好性记忆("喜欢简洁风格")、事件性记忆("上次讨论了迁移方案")。
Q8:记忆存储的粒度怎么选?存太细和存太粗各有什么问题?
太细(每句话都存):检索时噪音巨大,很多无意义的碎片。检索召回率高但精度低。
太粗(只存对话级摘要):丢失关键细节。用户说过"不要用表格格式"这种偏好如果被压缩掉了,下次还会犯同样的错。
推荐做法:对话结束时用LLM做"有价值信息提取"——判断哪些内容值得记住,输出结构化记忆条目。既过滤了噪音,又保留了关键细节。
Q9:记忆压缩有哪些方法?各自的优劣?
滑动窗口截断:只保留最近N轮。最简单但丢了就找不回来。
LLM摘要压缩:用模型把早期对话浓缩。压缩比10:1,但需要额外一次LLM调用且必然丢失细节。
重要性评分+选择性保留:给每条消息打分(含决策/事实/被引用过的分高),保留高分丢低分。更精细但打分本身有成本。
推荐组合:最近3-5轮完整保留 + 5-20轮做摘要 + 20轮以前存长期记忆按需检索。
多Agent与协作
Q10:多Agent系统的协作模式有哪些?
主从模式:一个Master分发任务、汇总结果,多个Worker执行。最常用。
流水线模式:A的输出是B的输入,一级一级传。适合有明确顺序依赖的任务。
竞争模式:多个Agent独立完成同一任务,选最好的。适合创意类。
动态路由:Router根据任务特征实时决定分配给哪个Agent。需要意图识别能力。
设计要点:消息格式统一、失败不能传播(熔断降级)、防死循环(最大轮次限制)、上下文隔离(每个Agent只看自己需要的信息)。
Harness工程
Q11:Harness Engineering是什么?为什么说瓶颈经常不在模型?
Harness是包裹在模型外面的整套工程系统。同一个模型在不同Harness下表现可以天差地别(有实验数据:同模型从6.7%提升到68.3%,差10倍)。
六层架构:信息边界(控制哪些信息进入上下文)→ 工具系统(工具定义/发现/调用)→ 执行编排(循环/超时/并行)→ 记忆状态(跨轮次保持)→ 评估观测(trace/质量评分)→ 约束恢复(重试/回退/安全边界)。
实际项目中,优化Harness(改善工具描述、加重试机制、做上下文压缩)比换一个更贵的模型通常性价比更高。
Q12:Agent陷入死循环怎么防护?
防护分三层:
硬限制:max_iterations(最多N步)、timeout(总时限)、max_token_budget(Token上限)。
模式检测:连续3步Thought高度相似、同一工具相同参数连续调用、多Agent间消息往返超阈值。
降级策略:检测到循环后清空中间步骤重新开始;还是卡就返回"需要人工协助"并附上当前进度摘要。