持续更新 附完整源码

一、前言:为什么后端工程师现在是学Agent的最佳时机

2026年是后端工程师转AI Agent开发的窗口期。大模型能力趋于稳定,真正的竞争已经从"谁的模型大"转向"谁的应用做得好"——而这恰恰是后端工程师的主场。

笔者是Java/Go后端,去年开始学Agent。最开始直接上手LangChain、LangGraph、Dify,发现框架封装度较为高,ReAct循环、工具调用、记忆管理全部黑盒封装,出了Bug只能盯着堆栈发呆;想自定义工具、改造调度逻辑,多层抽象层限制扩展,改一处联动一堆。

后来我换了个思路:不依赖任何Agent框架,纯原生手搓一套Agent。用requests、pydantic等基础库,从ReAct循环开始,一步步迭代到Function Calling、流式输出、Plan-and-Execute、Web UI。手搓完之后再看LangGraph源码,一眼就能看懂底层实现。

这个系列已经写了10篇,后续还有7篇规划中。这篇文章是整个系列的导航总入口,把所有文章按学习路线串联起来,方便你系统性跟进。

这篇文章适合谁?

  • 有Java/Go/Python后端开发经验,想转型AI Agent开发的工程师
  • 用过LangChain但想理解底层原理,不想停留在"调API"阶段
  • 想从零手搓一个Agent,最终做成生产级多Agent系统
    在这里插入图片描述

二、学习路线总览

整个路线分为6个阶段,17个Phase。从最基础的ReAct循环,一路到RAG检索、Multi-Agent通信、MCP协议、可观测性,最终构建一个生产级多Agent系统。

阶段 主题 Phase范围 状态
阶段1 Agent核心原理 Phase 1-3 ✅ 已完成
阶段2 协议与工具工程化 Phase 4-5 ✅ 已完成
阶段3 记忆与流式 Phase 6-8 ✅ 已完成
阶段4 规划与产品化 Phase 9-10 ✅ 已完成
阶段5 RAG与长期记忆 Phase 11-12 🔨 更新中
阶段6 生产级多Agent系统 Phase 13-17 📋 规划中

学完整条路线你能得到什么?
从"会做单Agent"升级到"会做多Agent生产系统"。全部代码无LangChain、无AgentScope、无任何智能体封装库,分层设计贴合后端面向接口、分层开发思维,复制到PyCharm配置密钥即可运行。


三、阶段1:Agent核心原理(已完成)✅

这个阶段解决一个核心问题:Agent到底是什么?它怎么"思考"和"行动"? 我们从零开始,不引入任何Agent框架,用最基础的Python库手搓一个完整的ReAct智能体。

Phase 0:架构决策方法论(先读这篇)

在动手之前,先搞清楚一个核心问题:哪些逻辑该硬编码、哪些该配置、哪些该交给LLM?这篇文章提出了一套三维决策框架,帮你划清边界。

📄 别再把逻辑全塞给LLM:后端做Agent的架构决策方法论
传统复杂度+变更频率的二维决策模型在Agent面前失灵了。新增「灵活度」维度,清晰划分硬编码、配置、LLM三层边界。

Phase 1:手搓ReAct底层循环

这是整个系列的起点。用requests + pydantic,200行代码实现一个完整的ReAct Agent:思考 → 调用工具 → 获取观测 → 循环直至完成。理解了这一篇,Agent的"黑盒"就打开了。

📄 Phase 01 后端工程师纯原生手搓Agent,吃透ReAct底层循环(完整可运行代码)
不依赖LangChain等框架,仅用requests、pydantic等基础库,纯原生实现标准ReAct智能体。分层设计包含配置层、LLM客户端层、工具抽象层和Agent核心模块。

Phase 2:Pydantic结构化输出 + 解决工具死循环

Phase 1的纯文本解析容错率低,LLM输出格式轻微错乱就崩。这篇用Pydantic强类型输出替代文本切割,并用状态机解决工具重复调用的死循环问题。

📄 Phase 02 Pydantic结构化输出改造,工程化解决工具死循环问题
两大工程级升级:Pydantic实现结构化JSON输出替代脆弱文本解析;状态机方案解决工具重复调用死循环。

Phase 3:工具Schema自动生成 + 三态状态机

手动维护工具描述太痛苦。这篇用Pydantic BaseModel自动生成工具Schema,引入"思考/执行/完成"三态状态机显式管控流程,并新增参数校验层和文件读取工具。

📄 Phase 03 Pydantic自动生成工具Schema + 三态状态机 + 文件读取工具
基于Pydantic的工具参数模型实现Schema自动生成;引入三态状态机显式管控流程;借鉴后端工程思想,将工具抽象为带Schema的API接口。


四、阶段2:协议与工具工程化(已完成)✅

这个阶段让Agent从"玩具"走向"工具":接入原生Function Calling协议,让工具调用稳定可靠;新增BashTool让Agent具备Shell执行能力;引入LLM-as-Judge机制校验回答完整性。

Phase 4:Function Calling + LLM-as-Judge

解决三个核心问题:JSON Mode模拟工具调用导致格式漂移、工具结果污染System消息、回答完整性无校验。改用OpenAI原生Function Calling协议,新增tool角色存储结果并引入tool_call_id配对。

📄 Phase 04 原生Function Calling协议接入 + Memory Role修正 + LLM-as-Judge回答完整性校验
改用原生Function Calling解决格式漂移和参数幻觉;新增tool角色+tool_call_id配对解决消息污染;LLM-as-Judge二次校验确保回答完整性。

Phase 5:多工具并行 + BashTool + Judge证据链

单工具串行太慢?这篇实现了多工具批量并行执行,新增带安全防护的BashTool让Agent能执行Shell命令,Judge模块引入工具调用轨迹证据链实现基于事实的质量校验。

📄 Phase 05 多工具并行调用 + BashTool执行引擎 + Judge证据链升级
多工具批量并行执行解决串行瓶颈;带安全防护的BashTool让Agent从"只读顾问"变成"能读能写能执行";Judge引入工具调用轨迹证据链。


五、阶段3:记忆与流式(已完成)✅

Agent聊着聊着就崩了?上下文窗口超限是最常见的生产问题。这个阶段解决三件事:流式输出让用户不用干等、Token预算管理防止API报错、摘要压缩让Agent"记要点不记流水账"。

Phase 6:流式输出

同步调用用户等太久?这篇基于HTTP SSE协议实现流式输出,解决工具调用(tool_calls)流式组装的核心难点:id和name只在首个chunk出现、arguments是逐步拼接的JSON字符串、多工具并行用index区分。

📄 Phase 06 流式输出——让Agent思考过程"看得见"
基于HTTP SSE协议实现流式输出;采用事件模型设计(ContentDelta/ToolCallStart等);维护builder字典按index组装参数;使用生成器实现流式处理。

Phase 7:Token预算管理 + 滑动窗口裁剪

对话轮次多了上下文超限直接API报错。这篇用tiktoken精确计算Token开销,实现滑动窗口裁剪机制——超预算时删除完整的"消息块"(保持tool_calls与工具结果配对),而非单条消息,避免协议断裂。

📄 Phase 07 Token预算管理 + 滑动窗口上下文裁剪
tiktoken精确Token计数;滑动窗口机制超预算裁剪;保持tool_calls与工具结果配对完整性;避免协议断裂。

Phase 8:摘要压缩

滑动窗口裁掉了旧消息,但Agent也"失忆"了。这篇实现摘要压缩层:消息块被删除时触发摘要生成,保留用户目标、关键结论等核心信息,舍弃中间细节,实现裁剪与语义保留的平衡。

📄 Phase 08 摘要压缩——让Agent"记要点"而不是"记流水账"
摘要作为有损压缩层,旧摘要与被裁内容合并生成新摘要(约200 token);保留核心信息舍弃中间细节;同步更新+失败降级策略。


六、阶段4:规划与产品化(已完成)✅

Agent遇到复杂多步任务容易"迷失方向"?这个阶段解决两件事:引入Plan-and-Execute模式让Agent"先谋后动",以及给Agent加上Web UI让它从命令行工具变成真正的产品。

Phase 9:Plan-and-Execute规划模式

ReAct模式是"走一步看一步",复杂任务容易跑偏。这篇引入Plan-and-Execute模式:Agent先制定全局计划再执行,但与强制工作流不同——计划作为软引导注入系统提示,保持执行灵活性,通过Judge校验结果。

📄 Phase 09 Plan-and-Execute规划模式——从"走一步看一步"到"先谋后动"
新增PLANNING状态、计划数据模型和Planner提示词;计划作为软引导注入系统提示保持灵活性;故障降级机制确保规划失败时回退。

Phase 10:HTTP+SSE+Web UI

Agent核心逻辑和print高度耦合,没法给用户用?这篇采用事件驱动模型,定义结构化事件体系(9种具体事件),通过SSE协议实现前后端通信,FastAPI暴露端点,前端单页应用消费事件流。Agent终于有了真正的用户界面。

📄 Phase 10 HTTP+SSE+Web UI——让Agent长出真正的用户界面
事件驱动模型+9种AgentEvent;SSE协议前后端通信;FastAPI暴露SSE端点;核心变为纯事件生成器run_agent_stream();前端单页应用。


七、阶段5:RAG与长期记忆(更新中)🔨

到目前为止,我们的Agent只有短期记忆,且无法检索外部知识。这个阶段给Agent加上"知识库"和"长期记忆"——这是从Demo走向生产的关键一步。

⚠️ 以下文章正在撰写中,点击关注专栏追更
每篇文章发布后会在此处更新链接。专栏地址:后端转Agent开发杂记

Phase 11:RAG检索(已完成)

给Agent加一个 knowledge_search 工具,背后是真向量库 + reranker。Agent遇到知识盲区时自动检索文档,而不是靠LLM"编"。

📝 Phase 11 RAG检索 — 给Agent加一个knowledge_search工具,背后是真向量库+reranker
向量化文档存储 → 语义检索 → reranker精排 → 工具化封装。Agent从"凭记忆回答"升级到"查资料回答"。

Phase 12:长期记忆(即将发布)

memory_save / memory_recall 做成工具,让Agent自主管理长期记忆。不再是开发者写死记忆逻辑,而是Agent自己决定什么值得记、什么时候回忆。

📝 Phase 12 长期记忆 — 把memory_save/memory_recall做成工具,Agent自主管理
记忆工具化设计;Agent自主决定存储与检索时机;跨会话记忆持久化。


八、阶段6:生产级多Agent系统(规划中)📋

这是整个系列的终章。学完这5个Phase,你就从"会做单Agent"升级到"会做多Agent生产系统"。

Phase 13:沙箱化(规划中)

Phase 5的BashTool直接在宿主机执行命令,生产环境不能这么干。这篇把BashTool搬进Docker容器,加上审批流——危险命令需要人工确认后才执行。

📝 Phase 13 沙箱化 — BashTool进Docker,加审批流
Docker容器隔离执行环境;危险命令审批流;安全策略配置化。

Phase 14:Multi-Agent(规划中)

单Agent能力有限,复杂任务需要协作。这篇手撸Supervisor + 2个Worker的多Agent架构,复用前面做的AgentEvent做Agent间通信。

📝 Phase 14 Multi-Agent — 手撸Supervisor+2个Worker,复用AgentEvent做通信
Supervisor调度分发任务;Worker并行执行;AgentEvent事件总线通信;任务结果聚合。

Phase 15:MCP化(规划中)

MCP(Model Context Protocol)是2025年最火的Agent协议。这篇把之前手写的工具全部重写成MCP server,Agent变成MCP client,实现工具的标准化和可复用。

📝 Phase 15 MCP化 — 把工具重写成MCP server,Agent变成MCP client
工具标准化为MCP server;Agent作为MCP client动态发现和调用工具;跨Agent工具复用。

Phase 16:可观测性(规划中)

生产环境Agent出了问题怎么排查?这篇接入Langfuse,给每个LLM调用、工具调用、Agent循环加span,实现全链路追踪和性能分析。

📝 Phase 16 可观测性 — 接Langfuse,给每个工具调用加span
Langfuse全链路追踪;LLM调用/工具调用/Agent循环span化;性能瓶颈可视化分析。

Phase 17:Reflexion(规划中)

Agent做错了怎么办?这篇实现Reflexion机制:Judge打回后写反思进记忆,下一轮带上反思重新执行。Agent不再是"错了就错了",而是能从错误中学习。

📝 Phase 17 Reflexion — Judge打回后写反思进记忆,下一轮带上
失败后自动生成反思;反思写入记忆参与下一轮推理;Agent从错误中自我进化。


九、相关基础文章

以下文章不在Agent系列内,但与Agent开发密切相关,建议配合阅读。

📄 从跳表到HNSW:深度拆解向量ANN检索的分层设计与近似本质
Phase 11 RAG检索的前置知识。深入剖析HNSW算法与跳表的异同,揭示HNSW作为近似最近邻搜索算法的核心机制。高层导航偏差和底层搜索预算限制两大误差来源解析。

📄 Redis ZSet 完全指南:从应用场景到核心原理
ZSet底层哈希表+跳表双数据结构解析。理解跳表是理解HNSW和向量检索的前置基础。


十、项目源码

整个系列代码持续更新,完整项目仓库地址(Phase 1-10已同步,后续Phase随文章发布更新):

🔗 Gitee 仓库https://gitee.com/llws525313/native-agent-demo

代码分层清晰,贴合后端面向接口、分层开发思维。复制到PyCharm,配置 .env 密钥即可直接运行。兼容通义千问、DeepSeek、智谱等所有OpenAI兼容接口。


十一、常见问题

Q:没有Python基础能学吗?

可以。这个系列面向Java/Go后端开发者,Python语法只用到基础部分。Phase 1文章末尾有Python快速语法映射表:self=Java this、ABC抽象基类=Java Interface、Pydantic BaseModel=Java POJO、venv=Maven依赖隔离,对照着看就行。

Q:需要先学LangChain吗?

不需要,而且建议先别学。直接用框架会导致黑盒封装,你根本不知道ReAct循环怎么跑的。先手搓底层理解原理,再回来看框架源码会一眼看懂。框架是业务加速工具,学习原理必须从零实现。

Q:用什么大模型?需要花钱吗?

兼容所有OpenAI兼容接口。推荐用通义千问qwen-turbo或DeepSeek,API费用极低,跑完整套Demo成本不到1块钱。注册就送额度,学习阶段足够用。

Q:Phase 11-17什么时候更新?

按顺序持续更新中,预计每周1-2篇。关注专栏 后端转Agent开发杂记 即可收到更新通知。每篇发布后本文会同步更新链接。

Q:这套Agent能用于生产环境吗?

Phase 1-10是教学版,核心逻辑完整但缺少生产级安全防护。Phase 13-17就是解决生产化问题的:沙箱化解决安全、Multi-Agent解决扩展、MCP解决标准化、可观测性解决运维、Reflexion解决自愈。学完全部17个Phase,就初步具备生产级能力了。


写在最后

Agent开发不神秘,它就是LLM + 工具调用 + 记忆管理 + 循环推理这四个东西的组合。后端工程师在工具抽象、分层架构、状态管理、工程化方面有天然优势,唯一需要补的就是LLM的交互范式。

这个系列的理念是先手搓底层,再学框架。吃透ReAct循环、工具调用、记忆管理三大组件后,再看LangGraph、Dify源码,一眼就能看懂底层实现。无论后续是二次开发开源Agent平台,还是自研企业内部AI助手,都不会停留在只会调API的浅层阶段。

如果觉得有帮助,点个赞 + 收藏 + 关注专栏,这是我持续更新的最大动力。
有问题欢迎在评论区交流,我会逐条回复。


#AI智能体 #Agent开发 #大模型应用 #学习路线 #后端转AI #LLM #人工智能 #Python


专栏:后端转Agent开发杂记 | 作者:小马小牛 | 持续更新中

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐