从概念到落地:AI Agent 学习路径与工程实战指南

发布时间:2026/9/7 13:37:24
从概念到落地:AI Agent 学习路径与工程实战指南 最近团队内部搞了个 AI Agent 学习小组我作为牵头人整理了不少资料。期间在技术群里潜水看到大家问得最多的不是“LangChain 怎么用”而是“我学完能做什么”“概念都懂为什么写不出来”“Agent 到底稳不稳”。顺着这些困惑我把市面上值得看的内容、我们自己趟过的坑、还有面试里被反复问到的考点串成了一套学习路径。这篇文章就是这套笔记的精简版适合刚接触 AI Agent 不久、想系统入门的朋友也适合准备在业务里落地 Agent 的团队做参考。先说结论AI Agent 不是什么黑魔法它是一套系统工程。你能不能用好它取决于你对“循环、记忆、工具、评估”这四个词的理解深度而不是你背了多少篇论文。1. 重新认识AI Agent它先是系统工程然后才是“智能体”很多人第一次接触 Agent是从 ChatGPT 的插件功能开始的或者在短视频里看到有人让 AI 自己完成一个任务觉得“神仙打架”。但一旦自己上手会发现两件很尴尬的事第一AI 经常做着做着就忘了目标第二它明明调到了工具却把参数传得乱七八糟。这时候你会意识到Agent 真正的难点不在大模型本身而在外面包的那层工程结构。李博杰那篇流传很广的《深入理解AI Agent》我建议每个想入行的人都认真读一遍不管你看的是 PDF 还是网页版。那篇内容最大的价值不是给了一个具体方案而是把 Agent 拆成了任务分解、推理、记忆、工具调用这几个模块让你明白一个 Agent 能跑起来靠的是几条循环在驱动感知外部状态、内部推理决策、调用工具改变状态、再回到感知。这个循环是 Agent 的地基地基不稳上面接什么框架都是虚的。我见过不少同学一上来就看 LangGraph 的官方文档看了一大半还不知道 Agent 和普通 LLM 应用的区别在哪。根源就是思维模型没建立起来。普通 LLM 应用是一次性问答用户提问模型回答结束。Agent 应用则是一个有状态的任务执行器它有目标、有计划、有中间步骤、有自我纠偏。你可以把它类比成一个实习生你给他一个任务目标他不会一次就做到完美但优秀的实习生会不断检查自己的产出、调用手边的工具、遇到问题回来问你。Agent 就是那个实习生你需要给它一套清晰的工作流程和工具清单而不是指望它读心。所以学习 Agent 的第一步不是立刻写代码而是先建立这个“系统”视角。理解了这一点你再去看任何 Agent 框架、任何 Agent 编排工具都会觉得顺眼很多。2. 学习资料分级清单从李博杰笔记到最少必要论文既然标题是“学习资料整理”我就把压箱底的清单拿出来按优先级分了三层。这套清单是我们内部几个不同背景的工程师一起筛的去掉了大量纯概念重复的内容留下的都是能真正帮你“上一个台阶”的。2.1 第一优先级概念与全景李博杰《深入理解AI Agent》即便网上已经有很多解读我仍然建议看原文。它帮你建立从“大语言模型”到“Agent 系统”的完整认知尤其是对任务分解和多步推理的讲述至今没有几篇中文内容能超越。吴恩达在 DeepLearning.AI 上关于 Agent 的系列课程偏工程视角篇幅不长讲了 reflect反思、tool use工具使用、planning规划和多 Agent 协作非常贴近实践。经常有人认为这套课程属于“入门玩具”但真去复盘时发现挺多可用的设计模式。Hugging Face 官方的 Agents Course免费、更新勤快配合大量可以运行的 notebook。如果你喜欢“边看边跑”的学习方式优先选这个。2.2 第二优先级按需提取的论文与文档论文不需要全文精读我建议带着问题去提取论文/文档核心解决什么问题什么时候该读ReActYao et al., 2022推理和行动怎么交替进行想搞懂 Agent 主循环时ReflexionShinn et al., 2023Agent 怎么从失败里自我修正头痛于 Agent 老犯同一个错误时ToolformerSchick et al., 2023模型怎么学会自己用工具纠结要不要微调时OpenAI Function Calling 文档模型输出和工具调用的桥接协议做工程接入时必读Tree of ThoughtsYao et al., 2023搜索式推理而不是线性推理遇到复杂推理问题时另外一个容易被忽略的文档是各框架的 “concepts” 页面尤其是 LangGraph 关于 State、Node、Edge 的说明。很多人跳着读后面调试 Agent 时一搜一堆为什么其实概念就藏在最前面几页。2.3 第三优先级代码项目与仓库到了第三层就不要再看教学项目了直接看生产级或者接近生产级的开源项目。推荐三个方向LangGraph 官方的 examples 仓库看多 Agent 的几种拓扑写法supervisor、hierarchical、network 都过一遍。MetaGPT看文本型多 Agent 协作怎么被产品化的。它用 SOP 软件工程流程来编排多个 Agent对理解“角色分工”非常有帮助。一些垂直场景仓库比如结合 Verilog/EDA 的代码生成 Agent。别小看这个方向硬件设计领域已经开始用 Agent 做 RTL 代码生成和验证你会看到 Agent 处理“强约束、高精度”场景时的吃力反而能帮你理解它的能力边界。这份清单从概念到代码形成了一个闭环。很多同学收藏了一堆链接结果越看越焦虑就是因为只收集不执行。我给自己定的原则是资料不在多每一层抓一个吃透比存一百篇链接有用得多。3. 手写一个极简ReAct Agent彻底看清运行逻辑很多教程把 Agent 运行逻辑包装得很玄乎实际上如果你自己手写一个极简版 ReAct核心代码不超过五十行。这个练习建议每个人都做一次做完之后你对框架的理解会完全不同。3.1 Agent最核心的运行循环ReAct 的思路可以用一句话概括交替进行 Reasoning推理和 Acting行动把每一步的观察结果拼进上下文持续迭代直到任务完成。下面是我在学习时写的伪代码去掉所有复杂依赖import json def run_agent(task, tools, llm, max_steps10): messages [{role: system, content: 你是Agent可以调用工具。}] messages.append({role: user, content: task}) for step in range(max_steps): # 1. 让模型输出一个动作或者最终答案 response llm(messages) messages.append({role: assistant, content: response}) # 2. 判断是否结束 if response.startswith(FINAL:): return response.removeprefix(FINAL:) # 3. 解析动作和参数比如: Action: search_video[AI Agent 入门] action_line parse_action(response) action_name action_line[name] action_args action_line[args] # 4. 执行对应工具 if action_name not in tools: observation 错误工具不存在 else: observation tools[action_name](**action_args) # 5. 把观察结果放回上下文 messages.append({role: user, content: fObservation: {observation}}) return 达到最大步数任务可能超时这段代码看起来简单它却包含了 Agent 的核心机制模型决定下一个动作工具返回观察结果历史对话变成新的上下文“计划-执行-观察”的循环就这么转起来了。LangGraph、AutoGen、CrewAI 这些框架本质上都在用不同的工程手段增强这个循环比如增加记忆持久化、多 Agent 通信、并行执行、人工审批但内核没变。3.2 为什么ReAct依然是主流底座你可能会问现在有那么多花哨方法什么 Plan-and-Execute、代码优先型 Agent为什么 ReAct 还是绕不开原因在于 ReAct 给了模型一个最简单的行为结构Thought思考→ Action行动→ Observation观察。大模型的推理能力强但在没有结构的情况下很容易信马由缰。ReAct 相当于给模型装了一副骨架让它每一步都有“痕迹”方便你检查它在哪个环节出问题。Plan-and-Execute 则是先把步骤全列出来再逐行执行优点是大局观强适合任务流程相对固定的场景缺点是如果中途发现步骤不合理重新规划的代价比 ReAct 大。业务中经常把两者混合使用先计划再在执行每一步时退化成 ReAct 的循环。这个混合模式也是我向别人推荐的第一默认架构。3.3 从单循环到多Agent的演进把单个 ReAct 循环写明白之后再去看多 Agent 就会轻松很多。多 Agent 不是多个循环随便跑而是要考虑谁调度谁、消息怎么传递、状态怎么同步。有一次我在一个任务里让三个 Agent 并行处理结果它们反复互相等待出现了类似“死锁”的局面根源就是没有设计好消息传递的时序。所以我的建议一直是先手写单 Agent再手写两个 Agent 互相传递消息最后才上框架。框架帮你解决了分布式、重试、可视化这些问题但解决不了你对 Agent 运行机制的无知。4. Java后端的Agent工程化Spring AI给出的答案搜索热词里有一堆“java ai agent”“springboot ai agent客户端”说明很多后端团队正在面临选型压力。这里分享一下我用 Spring AI 做 Agent 客户端的经验。4.1 为什么后端团队不能只守着Python生态Python 在 AI 领域确实有先发优势但很多公司的核心业务系统是 Java 系不太可能为了一个 Agent 把主服务重写成 Python。这时候用 Spring AI 嵌入是最平滑的路它能统一对接 OpenAI、通义千问、DeepSeek 等模型同时和 Spring Boot 的配置体系、错误处理、链路追踪无缝集成。经常被忽略的是Agent 不只是“调一次模型”还牵扯到工具调用、会话记忆、多轮上下文管理。这些能力在 Spring AI 里都有对应抽象比如 ChatClient、Tool Callbacks、ChatMemory。你在 Spring 里的既有 Bean 可以直接注册为 Agent 的工具这点非常舒服不需要构建 Python 微服务做中转直接把原有后端方法暴露给大模型。4.2 Spring Boot里接入Agent的最小配置我简化过多次之后最小可行版本是下面这样的RestController public class AgentController { private final ChatClient chatClient; public AgentController(ChatClient.Builder builder) { this.chatClient builder.build(); } GetMapping(/agent) public String chat(RequestParam String prompt) { return chatClient.prompt() .system(你是一个Java后端助手尽量给出简洁准确的回答。) .user(prompt) .call() .content(); } }定义工具时直接在方法上打Tool注解Spring AI 会自动生成工具描述文档供模型选择调用Service public class OrderService { Tool(description 根据订单号查询订单状态) public String queryOrderStatus(String orderId) { // 实际业务逻辑 return orderRepository.findStatusById(orderId); } }当模型判断需要查询订单时会以 JSON 形式返回调用请求Spring AI 帮你完成参数绑定和方法调用。这套交互模式比直接要求模型“按格式输出”稳定得多因为模型不需要自己记忆 function calling 的格式细节。4.3 Java Agent接入的几个工程陷阱超时问题模型调用可能持续几十秒需要给 HTTP 层单独设置读超时千万不要和普通接口共用一套默认超时配置。缓存与幂等Agent 可能因为重试而重复调用同一个工具工具方法要做好防重和幂等处理。上下文裁剪Spring 里有 ChatMemory 帮你管理历史消息但要关注 token 耗尽建议按对话轮数或字符数做裁剪而不是无限塞。有个更隐蔽的问题是异常传播。模型返回的内容可能既不是最终答案也不是合法工具调用而是一串“没有意义的废话”。工程上需要在调用链里加一层结果校验不符合预期就让它重试一次并明确告诉模型“你上次的输出格式不对”。这也是从测试实战里总结出来的关键点。5. 知识库型Agent把Obsidian变成Agent的长期记忆另一个高频热词是“obsidian ai agent 知识库”。我自己的学习笔记一直放在 Obsidian 里也确实尝试过让 Agent 基于这份笔记回答问题体验下来成就感很高但也踩了不少坑。5.1 为什么选Obsidian而不是现成知识库产品本地 Markdown 文件最大的优势是纯文本、可控性强。你可以用 Python 脚本直接读取所有.md文件分段、清洗、入库完全没有平台锁定。Obsidian 的双链语法[[...]]还能把当知识图谱的层级信息保留下来这对 Agent 检索“相关上下文”帮助很大。我当时选 Obsidian 还有一个私心笔记里保存了大量开源项目的代码片段和踩坑记录我不希望这些数据经过第三方知识库服务本地检索更安心。5.2 目录、向量化和检索链路的搭建方法比较通用的落地链路是Obsidian Vault → 读取 Markdown → 切分文本 → 调用 Embedding 接口向量化 → 存入向量数据库 → Agent 检索时把结果拼进 Prompt。这串流程里切分策略是最容易被忽视的。一开始我用固定长度比如 500 字符切结果经常把一条笔记的故事线切得稀碎检索出来的片段上下文不完整。后来换成按 Markdown 标题切分每个##或###作为独立块必要时再往下切检索准确率提升了一截。一个辅助技巧是让 Obsidian 每个文件开头的 YAML frontmatter 保留“tags”和“summary”字段作为检索时的元信息过滤条件--- tags: [ai-agent, langgraph, 学习笔记] summary: LangGraph 多Agent协作模式supervisor架构与network架构对比 --- # LangGraph 多Agent笔记 ...Agent 先根据用户问题在数据库里做关键词过滤缩小范围再跑向量相似度检索精排效果会明显好于单纯向量检索。原因很简单元数据过滤帮它排除了大量表面相似但领域不符的结果。5.3 一个特殊集成案例Agent直接输出draw.io架构图热词里有个问题很有意思“next ai draw.io 是否支持与 hermes agent 对接”。这个问题的背景通常是团队用某个 Agent 框架内部代号 Hermes Agent做代码/架构分析希望它能自动产出架构图而不是只输出一段文字描述。我得说直接把 draw.io 原生文件格式扔给 Agent 去生成比较费劲。比较务实的路径有三种方案一让 Agent 生成 PlantUML 文本再用脚本把 PlantUML 转换成 draw.io 支持的格式。这个方案对 Agent 最友好因为 PlantUML 是纯文本模型非常擅长生成。方案二如果 Agent 框架支持 MCP安装一个 draw.io 相关 MCP 服务器给它暴露一个“创建图表”的工具。Agent 内部会自己搞定文件格式。方案三让 Agent 生成 draw.io 的 XML也就是mxGraphModel前端用 draw.io 解析。模型也能写 XML 结构但越复杂的图越容易出坐标错位需要额外校验。实际踩坑体会第三种方案看似最直接其实调试成本最高尤其是图形布局和连线锚点模型很难算出合适的坐标。现在我的团队更常用方案一然后允许人工在 draw.io 里微调效率最高。6. Agent测试实战从“能跑通”到“稳定交付”做过几个 Agent 项目的人都会有同一个感受Demo 很惊艳上线就翻车。这也让“ai agent测试实战”成了搜索热词。Agent 测试和传统软件测试完全是两码事下面聊一些我们实际用的打法。6.1 不稳定不是Bug是Agent的固有属性同一个 Prompt 跑十次模型可能给出十种不同的中间路径甚至最终答案都不一样。这不是出 bug而是大模型天生的随机性。所以测试 Agent 不能只校验“结果对不对”还要校验“过程可不可控”“失败能不能自愈”。我们内部维护了一句话Agent 测试的核心是约束随机性而不是消除随机性。6.2 三层测试策略第一层是工具单元测试。所有 Agent 能调用的工具都要按普通函数写单元测试。你要确保工具本身参数校验、异常抛错都是正常的别让 Agent 的 bug 和工具的 bug 混在一起。第二层是流程集成测试。用一个固定的模拟模型输出或者固定种子跑通完整链路用户输入 → 规划 → 工具调用 → 结果返回。重点检查工具调用的参数是否被正确传递上下文是否按预期累积。第三层是效果评估测试。准备一个 Golden Set标准评估集里面包括典型问题、边界问题、危险问题。跑完后看每个问题的完成率、正确率、工具调用成功率定期回归。6.3 可复用的评估指标与回归方法下面这组指标是我们做客服类 Agent 时固定会看的指标说明达标线参考任务完成率Agent 最终给出有效答案的比例90%以上工具调用正确率调用的工具和参数是否符合预期95%以上错误恢复率第一次失败后自我修正成功的比例60%以上幻觉回答率答非所问或编造事实的比例越低越好目标小于5%平均成本/次单次任务消耗的 token 费用看业务承受力还有一个很实用的回归思路把每个失败案例存下来转化成回归测试集。当模型升级或者 Prompt 调整后先跑一遍回归集看看之前修过的问题有没有复发。我们不止一次在换模型版本后发现“复活 bug”如果没有回归集这种问题会直接漏到生产环境。Langfuse、LangSmith 这类工具可以帮我们自动化采集轨迹、打标签、看每次调用的 token 消耗。即使团队小没有预算上 SaaS也至少要在日志里把每一步 action 和 observation 按 JSON 打出来否则出了问题根本复盘不了。7. Agent面试高频题拆解一个应答框架解决八成问题“ai agent面试题”的热度一直很高。我帮团队面过不少人也帮朋友做过模拟面试发现很多人不是不会而是缺少一个应答框架。下面拆几个高频问题。7.1 概念题ReAct和Plan-and-Execute面试官喜欢问这两者的区别。核心答法是ReAct 是“边想边做”把推理和行动紧密交织适合探索型的任务能快速根据观察结果调整下一步。Plan-and-Execute 是“先计划再执行”把计划列出来后按部就班执行适合流程稳定、步骤明确的任务。但如果计划阶段就搞错了后面几乎全废。加分项是说出“两者经常组合使用”先用 Plan 搭骨架再在每一步里退化成 ReAct 微调。7.2 工程题上下文、成本、并行面试里经常给一个场景你的 Agent 对话超过 20 轮上下文快塞满了怎么办一般有几种答案滑窗裁剪丢掉最早的消息。摘要压缩把早期对话总结成摘要再塞进上下文。关键信息抽取只保留用户需求、上次执行结果、当前目标。外部记忆把历史细节存进向量库需要时检索。最佳答案通常是把几种组合起来。但对于 Agent 场景我还会指出“尽可能让工具返回结构化小结果”用 Python 对象或者 JSON 做中间产物而不是把大量原文读回上下文这能显著减少 token 开销。7.3 系统设计题客服Agent方案这类题考的是工程思维“如何设计一个能处理订单查询和退款的客服 Agent”。回答时可以按下面四个模块组织这是最稳的框架意图识别与拒答先判断用户问题在不在 Agent 能力范围内不在就问清楚或转人工。工具层设计把订单查询、退款申请、物流跟踪封装成独立工具只暴露最小参数。安全与权限用户只能查自己的订单工具层必须做用户维度鉴权不能把用户 ID 当参数交给模型乱传。可观测与兜底记录完整轨迹当 Agent 重试超过 N 次或置信度过低时强制转人工。这套框架万金油能回答大多数 Agent 业务设计题。核心逻辑是让面试官看到你懂 Agent 的不确定性所以每一步都在加确定性。8. 2026年趋势观察应用场景开始反向定义Agent最后一个部分说点面向未来的判断。热词里有一条是“ai agent 2026 发展趋势 预测”我结合自己的观察给几个不那么“概念化”的趋势判断。8.1 从“大而全”到“小而专”过去大家喜欢造一个通用 Agent什么都能聊结果什么都聊不好。2026 年我更看好垂直行业里的小型 Agent比如刚才提到的 Java 后端 Agent、Verilog/EDA 辅助 Agent、医疗问诊 Agent。它们不需要掌握所有知识只需要把一个领域内的高频流程跑得非常顺并且能和该领域既有工具深度绑定。这个趋势对普通开发者的启示是不要焦虑“我是不是追不上通用 Agent”去找一个你懂业务的垂直场景优势反而更大。8.2 浏览器/Computer Use与系统自动化Computer Use 类的 Agent 会逐步成熟。它让 Agent 像人一样操作浏览器、点击页面、填写表单从而自动化那些“没有 API 但有人机界面”的旧系统。现在这类 Agent 昂贵且不稳但在记账、报表、数据迁移这些场景里它比人肉点击更省成本。值得提前关注但不建议立刻把所有流程押上去先拿低风险流程试点。8.3 协议层竞争与Agent生态变局MCP 这类协议解决的问题是“让工具接入标准化”而更高层的 Agent 通信协议解决的是“让 Agent 之间互相协作”。未来很可能会出现类似“Agent 应用商店”的东西Agent 按需调用其他 Agent 的能力。到那个时候开发者拼的不是谁的 Prompt 写得花哨而是谁的工具接口更标准、描述更清晰、文档更完善。基于这些判断我给自己的行动建议是保持小步试错多做真实场景闭环少追概念。Agent 这个领域最稀缺的能力已经不是“懂概念”而是“能在真实业务里把概念变成稳定产出”。最后分享一个我个人的小经验学习 AI Agent 最忌讳“囤资料”。不管是李博杰的笔记、各种论文 PDF还是框架官方课程看不完不是问题真正的问题是从“看”到“写”这一步跨不过去。我建议你拿到任何一份资料只做一件事看完一个概念就强制自己写一个最小可运行示例哪怕是上面那种五十行的 ReAct 循环。跑通了这个概念才是你的跑不通反而是好事你会带着问题去翻下一份资料。这个习惯比你看完一百篇文章都管用。