知识目录选择核心方向与细分内容
LEARNING PATH
Agent 开发学习路线
已有后端经验,从七天入门开始;需要深入时,继续完整工程路线。
每天 20–30 分钟 · 本地可完成
后端转 Agent 七天入门
面向已有后端开发经验、第一次接触 Agent 的你。每天 20–30 分钟,先答三个短问题,再用本地模拟完成一个小任务。
每天 5 分钟短答、5–10 分钟阅读、10–15 分钟本地实验;较长的题目只读当天指定部分。
纸笔、伪代码或你熟悉的语言都可以,不需要模型账号、付费接口或在线执行。七天产出是入门实验记录,能否掌握仍要通过独立作答和验证判断。
Day 1先跑通最小执行闭环把 Agent 看作一个受预算约束的后端循环,区分模型建议和运行时控制。约 25 分钟
先独立短答 · 5 分钟
Agent 和普通接口调用最明显的区别是什么?
对照参考回答
普通接口通常按固定步骤执行;Agent 可以根据模型给出的下一步建议继续调用工具。运行时仍负责校验、执行和停止。
模型说“完成了”,运行时就可以结束吗?
对照参考回答
先核对任务的验收条件。模型文字只能是候选结果;达到条件、步数上限或遇到不可恢复错误,都应有明确的结束状态。
工具结果为什么还要返回模型?
对照参考回答
让模型根据真实回执继续决策。回执应区分成功、失败和结果未知,不能把失败包装成已经完成。
再读相关题 · 5–10 分钟
先读“Agent 循环”的简短回答和终止条件;LLM 必要概念只关注工具调用消息和结构化输出。
- Agent 循环如何停止?怎样划清模型决策与运行时控制的边界?基础 · 延伸阅读
- 做 Agent 开发,必须掌握哪些 LLM 接口基础?基础 · 延伸阅读
本地小任务 · 10–15 分钟
模拟一个查询订单状态的循环:用固定数组替代模型响应,最多执行 3 步。
- 写下输入 orderId、输出 status/source,以及最大步数 3。准备“调用查询工具 → 返回已发货”的假响应。
- 让查询工具固定返回 {status: "已发货", source: "mock"};每步记录建议、工具回执和结束原因。
- 把响应换成不断调用查询工具,观察第 3 步后是否停止;再换成一个不存在的工具名。
验收时逐条核对
- 正常路径产生一条查询回执,输出标注 source=mock,结束原因是满足验收。
- 重复调用路径最多执行 3 步,输出预算耗尽,不能声称查询已完成。
- 未知工具不会执行,日志中有工具不存在的错误和明确结束原因。
留意这些故障现象:循环一直运行、凭文字宣告成功,或把不存在的工具当作执行过,说明运行时边界未落实。
Day 2给工具加上输入边界沿用熟悉的接口校验,把格式、业务条件和调用权限分开检查。约 25 分钟
先独立短答 · 5 分钟
JSON Schema 校验通过,业务请求就有效吗?
对照参考回答
不一定。Schema 检查结构与类型;金额范围、资源归属等业务条件,还要在服务端校验。
模型提供的 userId 可以直接用于权限判断吗?
对照参考回答
不能。调用者身份来自可信会话,模型参数只能描述请求对象,不能决定自己是谁或拥有哪些权限。
校验失败应返回什么?
对照参考回答
返回稳定的错误码和可修正信息,例如 INVALID_AMOUNT;不执行工具,不把失败说成成功。
再读相关题 · 5–10 分钟
只读简短回答、参数校验顺序和基础达标标准;复杂授权架构可稍后阅读。
- 工具参数符合 JSON Schema 就安全吗?还需要哪些校验?基础 · 延伸阅读
本地小任务 · 10–15 分钟
为本地 mock 的“创建退款草稿”工具加校验,不连接支付或真实订单。
- 固定会话 userId=u1;准备订单 o1(归属 u1、实付 100)和 o2(归属 u2、实付 100)。
- 校验 orderId 是字符串、amount 是正数;再验证订单归属与退款金额不超过实付。仅通过后追加本地 drafts 数组。
- 依次输入 o1/20、o1/"20"、o1/120、o2/20,记录返回值和 drafts 长度。
验收时逐条核对
- o1/20 创建 1 条本地草稿,结果明确标注尚未执行退款。
- 字符串金额、超额金额、他人订单分别拒绝,拒绝后 drafts 长度仍为 1。
- 修改传入的 userId 不会改变固定会话身份,也不能访问 o2。
留意这些故障现象:任一拒绝用例新增草稿,或模型参数覆盖会话身份,说明校验顺序或授权边界有缺口。
Day 3用证据解释 RAG把检索、上下文和回答分开记录,遇到没有资料的问题时明确回答不足。约 30 分钟
先独立短答 · 5 分钟
RAG 中模型负责查到文档吗?
对照参考回答
检索组件负责找候选资料,模型根据实际传入的上下文生成回答。先看召回和上下文,再判断回答是否忠实。
搜到了相关标题就足够了吗?
对照参考回答
不够。要确认段落里包含回答所需事实,并检查该段落是否进入模型上下文。
资料里没有答案时怎样处理?
对照参考回答
返回资料不足,并说明缺少哪项证据。不能根据常识补出一个看似合理的公司规则。
再读相关题 · 5–10 分钟
只读检索链定位方法和简短回答;今天用关键词检索理解链路,不安装向量库。
- RAG 答错时,如何判断是召回、重排、上下文还是生成的问题?进阶 · 延伸阅读
本地小任务 · 10–15 分钟
用三条本地文本模拟一个有引用的政策问答,保留每一步证据。
- 准备 d1:“标准订单退款在 7 天内申请”;d2:“会员积分每月更新”;d3:“退款需要订单号”。为每条设置 id。
- 按“退款”关键词筛选,再为“几天内申请退款”选择包含天数的 d1;记录候选 id、实际上下文和回答引用。
- 测试“会员退款是不是 30 天”;再故意从上下文移除 d1,观察回答是否转为资料不足。
验收时逐条核对
- 第一问输出“7 天内”,引用 d1,并能在上下文找到对应原文。
- 资料未说明会员例外,第二问不能声称“会员有 30 天”。
- 移除 d1 后明确报告资料不足,日志能看出“检索到了但没有传入上下文”。
留意这些故障现象:引用 id 存在但原文不支持回答,或缺失上下文后仍给出 7 天,说明生成与证据脱节。
Day 4分清任务状态与长期记忆记录当前任务做到哪一步,同时避免把任务数据当成所有用户共享的记忆。约 25 分钟
先独立短答 · 5 分钟
聊天历史、任务状态和长期记忆是一回事吗?
对照参考回答
不是。聊天历史是消息;任务状态记录本次任务的阶段与中间结果;长期记忆保存经过筛选、可供后续任务使用的信息。
本次订单号要写进所有任务共享的记忆吗?
对照参考回答
通常不需要。它属于当前任务状态,任务结束后按生命周期处理;长期保存需要明确用途和范围。
读取记忆时为什么仍要校验作用域?
对照参考回答
因为相似内容可能来自其他用户或项目。读取必须受可信的组织、用户或线程身份限制,不能只按关键词匹配。
再读相关题 · 5–10 分钟
只读作用域划分和简短回答;线程状态与长期记忆的区分是今天的重点。
- Agent 记忆如何划分线程、用户、项目和组织作用域,避免串租户?进阶 · 延伸阅读
本地小任务 · 10–15 分钟
用两个对象模拟任务状态与用户偏好,检查跨任务和跨用户读取。
- 建立 taskState[runId],放 step、orderId、lastToolResult;建立 preferences[userId],只放用户确认过的语言偏好。
- 让 u1 的 run1 执行到 queried 并保存结果;u1 开启 run2 时,只读取语言偏好,不复用 run1 的订单结果。
- 让 u2 请求读取 u1 的偏好,用固定会话身份校验;再用同一 run1 读取状态并继续下一步。
验收时逐条核对
- run2 可以得到 u1 的语言偏好,但没有 run1 的订单号与工具结果。
- u2 无法读取 u1 偏好,用户身份不由模型传入参数决定。
- 恢复 run1 能看到保存的 step 和工具结果,并明确它们只是本地实验状态。
留意这些故障现象:新任务继承旧订单结果、所有用户共用一个偏好对象,或相似搜索绕过身份限制,说明作用域混在一起。
Day 5模拟失败与恢复知道重试、检查点和幂等分别解决什么,用回执处理“执行过但没收到响应”。约 30 分钟
先独立短答 · 5 分钟
超时一定代表工具没执行吗?
对照参考回答
不一定。请求可能已经执行,只是响应丢失。写操作应先查回执或使用稳定的幂等键,不能直接换新请求重试。
有检查点就能确保写操作只发生一次吗?
对照参考回答
不能。外部写入与本地检查点可能不在同一事务,恢复时会重放。还需要操作幂等和可查询回执。
所有错误都应该重试吗?
对照参考回答
不应该。参数与权限错误先纠正,瞬时错误才有限重试。限制次数和截止时间,并保留取消或预算耗尽的状态。
再读相关题 · 5–10 分钟
先读重试与预算的简短回答;检查点题只关注“恢复可能重复执行”这一边界,租约等进阶内容留到完整路线。
- 如何统一设计 Agent 的重试、取消、超时和成本预算?进阶 · 延伸阅读
- Agent 宕机后如何恢复?Checkpoint 为什么不能保证工具只执行一次?高级 · 延伸阅读
本地小任务 · 10–15 分钟
模拟本地草稿工具已经执行、响应却丢失的情况,恢复后避免重复草稿。
- 沿用 Day 2 的本地 drafts,增加 receipts[operationId];固定本次业务键 run1:create-draft。已有回执时返回同一 draftId。
- 第一次创建草稿并写入 receipts 后,故意抛出响应丢失;把任务检查点保留在 pending。
- 用同一 operationId 恢复执行,记录 recovered 回执;另测一个总失败的 mock,最多尝试 2 次。
验收时逐条核对
- 响应丢失后恢复,drafts 仍只有 1 条,恢复结果返回原 draftId。
- 重试沿用同一业务键,日志能区分首次执行与读取已有回执。
- 总失败 mock 在 2 次后停止并标记失败,不声称完成;说明内存回执在进程重启后会丢失。
留意这些故障现象:恢复时换了幂等键出现重复草稿、无限重试,或把内存对象称为持久化保障,说明恢复方案仍有遗漏。
Day 6写出可以核对的验收把“回答看起来不错”改成可逐条检查的结果、边界和执行记录。约 25 分钟
先独立短答 · 5 分钟
输出格式正确等于任务成功吗?
对照参考回答
不等于。还要核对事实、引用、权限和实际业务回执;合法 JSON 也可能包含错误答案。
为什么要把失败用例放进评测?
对照参考回答
正常路径无法暴露证据不足、越权和恢复重复等问题。失败用例检查系统有没有安全停止,并如实报告结果。
一天的小样本通过,可以宣布生产可用吗?
对照参考回答
不能。只能报告测试了哪些用例、观察到什么结果和未覆盖的边界,生产判断还需要代表性数据与更完整验证。
再读相关题 · 5–10 分钟
只读结果验收契约和基础标准;今天用人工核对表,不引入 LLM 裁判。
- Agent 如何定义可执行验收契约,避免只凭“回答看起来不错”上线?进阶 · 延伸阅读
本地小任务 · 10–15 分钟
为前五天的本地实验整理 4 条验收用例,记录实际结果和未覆盖项。
- 建立表格:输入、预期结果、实际结果、证据、是否通过。加入正常退款草稿、他人订单、资料不足和响应丢失恢复四种用例。
- 逐条重跑或手工推演已有 mock,保存草稿数量、引用原文、错误码或恢复回执。未执行的用例写“未执行”,不要记为通过。
- 故意移除 Day 2 的归属校验,观察越权用例是否失败;恢复校验后复核,并写下未测试的数据库故障和真实模型表现。
验收时逐条核对
- 每条用例都有明确预期,实际观察有对应证据;未执行与失败状态分开记录。
- 移除归属校验时越权用例失败,恢复后拒绝创建他人订单草稿。
- 结果报告仅覆盖这 4 条本地 mock,用例未覆盖范围被明确列出。
留意这些故障现象:所有用例总是通过、只检查输出有文本,或把未执行项标成通过,说明验收标准不能发现真实问题。
Day 7把实验讲成可追问的项目用真实实验记录解释目标、边界、失败与取舍,区分已验证和待实现。约 25 分钟
先独立短答 · 5 分钟
面试介绍 Agent 项目时先讲哪个部分?
对照参考回答
先讲用户任务、输入输出与验收,再讲模型、工具和状态如何协作。这样每个设计选择都有明确目的。
没接真实模型,能把这些实验称为生产项目吗?
对照参考回答
不能。应说明它是本地 mock 入门实验,具体哪些行为验证过,哪些涉及真实模型、持久化或上线的能力尚未验证。
现在就需要多 Agent 或复杂框架吗?
对照参考回答
先根据状态、恢复和协作需求选择最小方案。这个入门实验可以用普通代码循环;更复杂方案要有明确需求与对比证据。
再读相关题 · 5–10 分钟
选型题先读简短回答;项目追问题只用来检查你的证据,不要求完成高级生产架构。
- 原生 SDK、LangGraph 与工作流引擎,怎样选择 Agent 技术栈?进阶 · 延伸阅读
- 候选人说“做过生产级 Agent”,你怎样追问验证真实能力?高级 · 延伸阅读
本地小任务 · 10–15 分钟
用一页笔记和 90 秒口述介绍你的“订单问答与退款草稿”本地实验。
- 画出输入 → 循环 → 工具/检索 → 状态 → 输出,标出固定会话、预算与验收检查的位置。
- 各选一条正常与失败轨迹,引用前几天真实保存的证据;写出你为什么先用 mock 和代码循环。
- 录音或计时口述 90 秒,再回答“工具超时是否执行过”“没有文档时怎么答”“重启后怎么恢复”;没验证的内容列成后续任务。
验收时逐条核对
- 笔记包含目标、输入输出、验收、架构图和两条有证据的轨迹。
- 口述能解释模型与运行时边界、作用域、幂等键和资料不足的处理。
- 明确标注本地 mock、内存状态和人工评测,待实现项至少包括持久化、真实模型接入与更多评测用例。
留意这些故障现象:讲述只有技术名词、没有回执或实验记录,或把 mock 结果说成生产成功率,说明项目证据还不完整。
继续深入
完整工程路线
沿着实际开发顺序复习。每一阶段先回答问题,再完成一次边界实验。
搭起执行闭环
能画清模型、状态、工具与运行时的边界;解释为什么工具调用需要校验、授权和回执。
- Agent 循环如何停止?怎样划清模型决策与运行时控制的边界?基础
- 什么时候用状态图,什么时候用自主 Agent 循环?可以混合吗?进阶
- Agent Harness 应该承担哪些职责?如何设计任务的输入和验收契约?高级
- 把单 Agent 改成五个 Agent,效果一定更好吗?怎样证明值得拆分?高级
- LangGraph 并行节点同时更新状态,怎样避免覆盖、重复和串任务?高级
- 执行到一半发现计划错了,Agent 应该重规划还是继续?高级
- 历史对话越来越长,怎样压缩上下文而不丢掉关键约束?进阶
- 客服 Agent 把任务交给退款 Agent,应该传什么,不能传什么?高级
- 工具参数符合 JSON Schema 就安全吗?还需要哪些校验?基础
- 接入 MCP 就完成了生产级工具集成吗?信任边界在哪里?高级
- 工具超时后重试,如何防止重复发信、重复下单或重复发布?高级
- 接了 200 个工具,模型总选错。你会怎样缩小工具集合?进阶
- MCP 连接断了,重连后能直接重新执行上一次工具吗?高级
- 三个工具并行调用,一个很慢、一个失败,如何返回结果?高级
- 工具上线 v2 后旧任务还没跑完,如何兼容参数和结果变化?高级
- 工具一次返回 10 万行数据,应该全部交给模型吗?进阶
动手验证
实现一个有步数预算的工具循环。模拟无效参数、工具失败和重复写入,解释终止与补偿策略。
接入数据与记忆
能沿着检索链定位错误,区分任务状态与跨任务记忆,把权限和撤销落实到查询链路。
- RAG 答错时,如何判断是召回、重排、上下文还是生成的问题?进阶
- 企业 RAG 的权限应该在哪一层过滤?怎样避免缓存和引用泄露?高级
- 合同、表格和代码应该怎样切块?固定 500 字有什么问题?进阶
- 向量搜索总漏掉产品编号,怎样设计 BM25、向量召回和重排?高级
- 更换 Embedding 模型,几百万文档如何不停机重建索引?高级
- RAG 引用了文档却仍在胡说,如何判断应该回答还是拒答?进阶
- 自然语言查数据库,怎样防止 SQL 合法却查错口径或越权?高级
- 用户只问“它在重庆的余额呢”,怎样改写查询而不编造意图?进阶
- Agent 记忆如何划分线程、用户、项目和组织作用域,避免串租户?进阶
- 用户删除记忆后,从旧 Checkpoint 恢复为什么可能复活它?如何阻止?高级
- 用户随口说一句话,要不要写入长期记忆?怎样避免错误记忆污染?进阶
- 长期记忆出现两个相反事实,应该信最新的还是最相似的?高级
- 长期记忆越来越多,怎样检索有用信息而不把历史错误带回来?进阶
动手验证
构造一个同主题、不同租户的数据集;验证召回、缓存和历史上下文都遵守权限。
验证长任务可靠性
能说明检查点、租约、幂等与取消的组合;用结果契约和执行轨迹共同判断质量。
- Agent 宕机后如何恢复?Checkpoint 为什么不能保证工具只执行一次?高级
- 两个 Worker 同时恢复一个 Agent 任务,如何用租约和 Fencing Token 防止旧 Worker 写入?高级
- 如何统一设计 Agent 的重试、取消、超时和成本预算?进阶
- 任务已写入数据库,但消息没发到队列,如何避免任务永久丢失?高级
- 审批等待三天后用户点了两次同意,怎样安全恢复 Agent?高级
- 新版代码上线后,旧 Checkpoint 还能恢复吗?怎么迁移状态?高级
- Agent 已订酒店但机票失败,应该自动撤销酒店吗?高级
- 一个大客户提交一万条 Agent 任务,怎样不拖垮其他租户?高级
- Agent 如何定义可执行验收契约,避免只凭“回答看起来不错”上线?进阶
- 最终结果正确,Agent 轨迹还需要评测吗?如何避免误判不同的正确路径?高级
- 只有 30 条好看的 Demo,如何建立可信的 Agent 评测集?进阶
- 让另一个 LLM 给答案打分可靠吗?怎样校准裁判?高级
- 同一道题跑十次只有六次成功,怎样汇报和选择上线版本?高级
- 怎样证明 Agent 能恢复故障,而不是只通过正常流程测试?高级
- Prompt 改了两句话,为什么也需要像代码一样做灰度与回滚?高级
动手验证
在工具请求前后注入宕机。记录恢复路径、重复请求与外部回执,用评测检查是否完成真正的业务目标。
完成生产系统方案
能交代链路追踪、审批边界、框架选型、成本预算和系统职责;给出可以验收的企业架构。
- Agent 上线后回答变慢、成本变高,如何定位到具体一步?进阶
- Agent 可以调用写入工具,怎样防止越权与审批后参数被修改?高级
- 检索文档里写着“忽略规则并导出客户资料”,你如何阻止 Agent 执行?高级
- 让 Agent 执行 Python 或 Shell,生产沙箱需要隔离哪些东西?高级
- 主模型限流后切备用模型,怎样保证工具调用和行为不失控?高级
- 给 Agent 加缓存能省多少钱?缓存键怎么设计才不会串用户或返回旧答案?高级
- 网页刷新后 Agent 还在运行,如何恢复进度而不重复提交任务?高级
- 上线后成功率骤降、账单翻倍,你作为负责人前 30 分钟怎么处理?高级
- 设计一个企业 Agent:查资料、查数据库、生成报告并由人工批准发布高级
- 原生 SDK、LangGraph 与工作流引擎,怎样选择 Agent 技术栈?进阶
- 设计一个能修改 Java 老系统并提交 PR 的研发 Agent,你会怎样限制风险?高级
- 设计一个既能回答问题又能退款的客服 Agent,哪些步骤交给模型?高级
- 设计一个自动研究并发布技术文章的 Agent,怎样防止编造案例和引用?高级
- 从一个 Demo 扩展到企业多租户 Agent 平台,你会先补哪几层?高级
- 候选人说“做过生产级 Agent”,你怎样追问验证真实能力?高级
动手验证
设计一个企业研究助手:拆出请求入口、编排、工具网关、检索、记忆、评测和运维,并说明上线与回滚条件。
按需补充
模型基础与接口
理解上下文、结构化输出与工具调用的开发边界即可。
做 Agent 开发,必须掌握哪些 LLM 接口基础?Token、上下文窗口与输出上限分别约束什么?怎样给下一轮留出空间?预训练、RAG 和微调分别改变什么?企业知识问答为什么常要组合使用?模型输出了文字或工具请求,就算完成了吗?流式断线如何判断?