系列:ToyAgent 智能体知识库 27/26(总纲)
学习路线与面试总纲:从一句话对话到生产级智能体
一句话核心:智能体 = 大模型(大脑)+ 工具(手脚)+ 记忆(延续)+ 循环(节拍)+ 工程化(兜底);26 个实现场景就是这个公式逐项展开的过程,学习路线按"基础 → 能力扩展 → 运行时 → 安全治理 → 形态"五级台阶拾级而上。
总纲定位
整个系列的灵魂只有一个方法签名:
public interface Agent {
// 智能体最小契约:输入一句话,输出一句话
String chat(String input);
}
所有 26 个场景的复杂度都藏在这一个方法里,也只藏在这里。读任何一步的姿势都一样:先看接口注释里的"一句话定位",再看 chat() 方法。理解了这个"一个接口长出整个体系"的过程,就理解了智能体不是玄学,而是一个会调用大模型、且被工程化纪律约束的普通程序。
学习路线:五级台阶
第一阶:基础(把"能对话"变成"会做事")
| 步 | 场景 | 新增能力 |
|---|---|---|
| 01 | 对话 | 最小 MVP:接通大模型,chat() 立起来 |
| 02 | 提示词 | 系统提示词三层结构(角色/规则/环境) |
| 03 | ReAct | 思考-行动-观察循环,模型开始"分步解题" |
| 04 | 工具调用 | Function Calling:模型决定调什么、传什么参 |
| 05 | 记忆 | 多轮记忆 + 上下文压缩 |
| 06 | 意图路由 | 意图识别 + 决策中枢,一条请求选对处理路径 |
这一阶的目标是建立肌肉记忆:循环 + 工具 + 记忆三件套是一切智能体的底座。读源码的推荐顺序也在这里:Agent 接口 → 01 → 03(ReAct)→ 04(工具)。
第二阶:能力扩展(从单工具到生态)
| 步 | 场景 | 新增能力 |
|---|---|---|
| 07 | RAG | 检索增强生成:答"训练数据里没有"的问题 |
| 08 | LLM-Wiki | 知识编译与持久化 |
| 09 | MCP | 工具标准化协议,接外部生态不再各写一套 |
| 10 | 技能 | 技能编排 L0/L1/L2,把"会做的事"打包成可复用单元 |
| 11 | 工具注册表 | ToolDefinition 协议 + 注册/注销,工具管理有了"户口本" |
| 12 | 多智能体 | 规划-执行-审查的角色化协作 |
| 13 | 子代理 | spawn / fork 动态派遣,独立上下文隔离 |
| 14 | A2A 协作 | Agent Card 名片发现 + task_id 信封 + 异步回执 |
这一阶的关键词是标准化与解耦:MCP 统一工具接入、注册表统一工具管理、技能统一能力封装、子代理/A2A 统一协作协议。每一步都在回答"能力从哪来、怎么被组织"。
第三阶:运行时(从能跑到跑得稳)
| 步 | 场景 | 新增能力 |
|---|---|---|
| 15 | 运行时 | 守卫 + 保险丝 + 异常兜底 |
| 16 | 工作流 | 状态机编排(节点 + 条件边) |
| 17 | ReAct 运行时 | turn/step 循环 + 上下文裁剪 + TurnEndReason |
| 18 | 全流程 | 守卫 + 记忆 + ReAct + 工具一条链路串起来 |
| 19 | 人工介入 | 提问挂起 → 答复续跑,人进入循环 |
| 26 | 定时工具 | 一次性/循环调度,触发结果事件落盘,Agent 有了时间维度 |
这一阶回答生产环境最残酷的问题:模型会犯错、会失控、会断流,怎么办。守卫拦截、保险丝限步、TurnEndReason 显式表达"这轮为什么结束"、人工介入把不确定决策交还给人——运行时的本质是"为模型的不可靠设计可靠的边界"。
第四阶:安全与治理(从跑得稳到敢上生产)
| 步 | 场景 | 新增能力 |
|---|---|---|
| 20 | 审批门禁 | 风险分级 + 审批挂起 + 会话免审 |
| 21 | 沙箱 | 纵深防御四层拦截危险命令 |
| 22 | 事件溯源 | JSONL 事件流 + 回放投影,状态可恢复、行为可审计 |
| 23 | 插件机制 | 契约 + 隔离 ClassLoader,能力即插即拔 |
| 24 | Hooks 钩子 | before 拦截 / after 脱敏,横切逻辑与工具解耦 |
这一阶的共同思想只有一句话:不信任模型的输出,把安全从模型的自觉变成宿主的制度。策略档位/黑名单/边界/规范化是制度,审批门禁是制度的"人工例外通道",钩子是横切制度的挂载点,事件溯源是制度的存证。五步合起来构成一个最小但完整的 Agent 治理框架。
第五阶:形态(骨架换壳走向不同终端)
| 步 | 场景 | 新增能力 |
|---|---|---|
| 25 | CLI 智能体 | 终端 REPL + 沙箱执行器,形态即壳 |
形态是检验骨架的最终考场:REPL 只是 chat 的 while 循环,单命令 -p 模式只是调用一次就退出,GUI Agent 则是把执行器换成浏览器操作——换形态不动骨架。走到这里回头看:第一阶打的地基决定了第五阶能不能"白嫖"。
一条主线串起来
基础 01对话 → 02提示词 → 03ReAct → 04工具 → 05记忆 → 06路由
│(会做事)
能力扩展 07RAG · 08Wiki · 09MCP · 10技能 · 11注册表 · 12多智能体 · 13子代理 · 14A2A
│(能力有生态)
运行时 15运行时 → 16工作流 → 17ReAct运行时 → 18全流程 → 19人工介入 → 26定时
│(跑得稳)
安全治理 20审批 → 21沙箱 → 22事件溯源 → 23插件 → 24钩子
│(敢上生产)
形态 25CLI(→ GUI / IDE / 机器人:同构换壳)
工程化穿插全程,五步一回头:每完成一阶,用"守卫/兜底/审计"把已实现的场景重新过一遍,比一路冲到最后再补账便宜得多。
graph LR
S1["第一阶 基础<br/>对话 提示词 ReAct 工具 记忆 路由"] -->|会做事| S2["第二阶 能力扩展<br/>RAG Wiki MCP 技能 注册表 多智能体 子代理 A2A"]
S2 -->|能力有生态| S3["第三阶 运行时<br/>守卫保险丝 状态机 HITL 定时"]
S3 -->|跑得稳| S4["第四阶 安全治理<br/>审批 沙箱 事件溯源 插件 钩子"]
S4 -->|敢上生产| S5["第五阶 形态<br/>CLI GUI IDE 同构换壳"]
五级台阶学习路线:从"会做事"到"能力有生态"到"跑得稳"到"敢上生产",最后换形态检验骨架——每阶都是上一阶的地基。
高频面试题清单(18 条)
基础与循环
- ReAct 循环为什么有效,和直接让模型一次输出答案有什么区别?——把大问题拆成"思考-行动-观察"的小步迭代,每步都有真实反馈纠偏,避免模型一次幻觉到底。
- Function Calling 的完整链路是怎样的?——宿主把工具清单随请求下发 → 模型返回"我要调 X 工具+参数"而非自然语言 → 宿主执行工具 → 结果作为 observation 回填 → 模型继续,直至给出最终回答。
- 上下文窗口不够了怎么办?——记忆分层:近期消息全量保留 + 滑动窗口裁剪 + 更早内容摘要压缩,压缩本身也是一次模型调用。
- 系统提示词为什么要分层设计?——角色/规则/环境三层各司其职,规则可热更新、环境(如 cwd、时间)运行时注入,改一层不牵动全局。
能力扩展
- RAG 解决什么模型自身解决不了的问题?——知识时效性与私有性:检索把"外部事实"注入上下文,让模型做"开卷考试"而非依赖参数记忆。
- MCP 的价值是什么,和直接定义一堆函数有什么区别?——工具接入协议标准化,工具提供方与 Agent 宿主解耦,一次实现处处可接,避免每家宿主一套私有适配。
- 工具注册表要管理哪些东西?——ToolDefinition(名称/描述/参数 schema)的注册、发现、注销,以及"模型每轮看到什么工具清单"的可见性控制。
- 多智能体和子代理的分工差异?——多智能体是常设角色协作(规划-执行-审查各有职责),子代理是按需动态派遣、用独立上下文隔离主线的污染与风险;fork 可复制事件前缀实现分支探索。
- A2A 协作里"名片"起什么作用?——Agent Card 声明自己的能力/地址/鉴权方式,让别的 Agent 能发现并调用它;task_id 信封 + 异步回执解决长任务的跨 Agent 通信。
运行时与可靠性
- Agent 运行时需要哪些保险丝?——最大步数限制、单工具超时、上下文长度熔断、异常兜底回复;核心思想是"任何一环失控都不能拖死整个循环"。
- TurnEndReason 为什么值得单独设计?——把"这轮为什么结束"(完成/达步数上限/等人工输入/被拦截)变成显式枚举而非隐式约定,上层编排与前端才能正确处理每种结局。
- 人工介入(HITL)怎么实现挂起与续跑?——工具执行到"需要人答"的点时保存会话状态并返回挂起标记,人答复后携带同一会话 ID 续跑;关键在挂起点的状态必须可持久化。
- 定时/异步任务的结果为什么不能塞进本次响应?——HTTP 响应早已返回,任务在未来触发;结果必须落盘(事件日志),并在后续对话中通过查询工具读回。
安全与治理
- 怎么防止模型执行危险命令?——纵深防御:策略档位→内容黑名单→空间边界→路径规范化四层确定性拦截,提示词约束只是第 0 层,防线不依赖模型自觉。
- 路径校验为什么"前缀检查"和"规范化检查"要分两层?——
sandbox/../../etc/passwd字面以 sandbox/ 开头但规范化后逃逸;字面检查快而粗、语义检查(canonicalize)慢而准,盲区互补。 - 审批门禁的风险分级怎么设计?——按操作后果分级(只读/写入/外发/不可逆),高危操作挂起等人工批准,低危走会话内免审;"审批"是风控的例外通道而非默认流程。
- 事件溯源给 Agent 带来了哪些"白送"的能力?——持久化(重启恢复)、审计(全量不可变日志)、时间旅行与 fork(复制日志前缀)、调试复现(回放投影精确复原模型上下文)。
形态与综合
- 为什么说"形态即壳",CLI/GUI/机器人 Agent 架构上差在哪?——骨架完全相同(chat 循环+工具+记忆+运行时),差异只在两个可替换点:交互界面与执行器;能零重构换壳,说明第一阶的地基打对了。
备考建议
- 答题的通用结构:先给"一句话本质",再给"机制分层",最后给"生产取舍"。这套系列里几乎每个主题都遵循"动机→机制→教学版 vs 生产版→生产化路径"的同构叙事,面试时复用这个结构会显得体系完整。
- 优先吃透的五个主题(考频与深度双高):ReAct + Function Calling(03/04)、上下文与记忆(05/17)、运行时保险丝(15/17)、沙箱纵深防御(21)、事件溯源(22)。
- 动手胜过背诵:所有场景都零依赖可跑(JDK 17+ 直接 javac),不配模型 Key 时内置 Mock 模型照常驱动完整骨架——能亲眼看到 ReAct 循环、四层拦截、事件回放的每一步轨迹,远比背答案牢固。
- 横向串联:单点知识容易被追问击穿,准备两三条"跨步连线"——比如"定时工具的落盘(26)呼应事件溯源(22)""审批门禁(20)是沙箱黑名单(21)的人工例外通道""插件机制(23)的隔离加载支撑钩子(24)的热插拔",这类连线最能体现你理解的是体系而非条目。