一、Agent基础
1. ReAct、Plan-and-Execute、Reflection、Tree-of-Thought、Multi-Agent 如何对比?
| 模式 | 核心思想 | 优点 | 局限 |
|---|---|---|---|
| ReAct | Reasoning 和 Acting 交替 | 简单、适合工具使用 | 容易局部贪心 |
| Plan-and-Execute | 先制定计划,再分步执行 | 结构清晰,适合长任务 | 初始计划可能过时 |
| Reflection | 执行后自评和修正 | 能从错误中恢复 | 增加成本和延迟 |
| Tree-of-Thought | 多路径搜索和比较 | 适合复杂推理 | 成本高,工程复杂 |
| Multi-Agent | 多角色协作 | 适合专业分工 | 协调成本和一致性问题 |
实际系统常常混合使用:
- 简单任务:ReAct。
- 长任务:Plan-and-Execute + 动态重规划。
- 高风险任务:Reflection + 人类确认。
- 复杂研究或编码:主 Agent + 子 Agent + 工具执行。
2. AGENTS.md、Skills、Memory 文件作用?
| 类型 | 解决问题 | 生命周期 |
|---|---|---|
| AGENTS.md | 项目级通用指令 | 随代码仓库长期存在 |
| Skill | 任务级专业能力 | 按需加载和复用 |
| Memory | 个体/团队历史经验 | 持续积累和更新 |
二、Tool、MCP
1. Agent 如何选择工具、调用工具并处理工具失败?
- 工具发现:将当前可用工具、能力范围、参数 Schema 注入上下文,或通过 MCP/tool search 动态发现。
- 工具选择:模型根据任务意图选择工具;对于高风险工具,先解释意图并等待授权。
- 参数生成:使用 JSON Schema 约束参数;必要时让模型先生成计划,再生成工具参数。
- 执行与观测:工具执行器返回结构化结果、错误码、stderr/stdout、资源链接或状态变更。
- 失败恢复:根据错误类型重试、换工具、缩小范围、请求用户输入或终止。
- 结果验证:检查是否满足目标,例如测试是否通过、文件是否存在、数据库状态是否符合预期。
工具失败分类:
- 参数错误:让模型修正参数。
- 权限错误:请求用户授权或降级。
- 环境错误:提示依赖缺失。
- 网络错误:重试或换源。
- 语义错误:重新规划。
- 安全错误:停止执行。
2. MCP 和 Function Calling 的区别是什么?
Function Calling 是模型调用函数的能力;MCP 是把工具和上下文服务标准化暴露给模型应用的协议。
3. A2A 和 MCP 分别解决什么问题?
MCP 解决"Agent 如何使用工具和上下文"的问题。
A2A 解决"Agent 如何和其他 Agent 服务通信协作"的问题。
三、Memory
1. 短期记忆、长期记忆、任务记忆、工具记忆如何区分?
| 记忆类型 | 内容 | 用途 |
|---|---|---|
| 短期记忆 | 当前对话、最近工具结果 | 当前轮推理 |
| 长期记忆 | 用户偏好、项目约定、长期事实 | 跨会话连续性 |
| 任务记忆 | 当前任务计划、进度、阻塞点 | 长任务执行 |
| 工具记忆 | 工具可用性、参数经验、失败记录 | 提高工具调用成功率 |
| 团队记忆 | 团队规范、共享知识 | 多人/多 Agent 协作 |