像有超时、有限流、要重试
不像同样的输入,不保证同样的输出
学习路线 · v2 · 2026-11-08 · 对照 26 份招聘要求修订
从 Java 后端到 AI Agent 工程师。AI Agent 做主线,Java 架构按需补;每一站交出一个能跑的东西,进度用提交记录作证。
输入关键词,看它在主线哪一站、在 Java 板块,还是还不在地图上。
四个等级,每级都有一道过关检验。过不了关就不往下走,这样“学完”才有意义。
用 Python 稳定地调用模型,拿到校验过的结构化结果,算得清钱和时间。
过关 告警分诊服务 Python、Spring AI 两版都跑通;讲得清 token、上下文、温度。
从需求拆到设计,手写能干活的 agent,配上记忆和知识库,把工具做成 MCP。
过关 手写的值班助手能解决真实排障问题;记忆和检索都有评测数字;复盘报告每句都能点回出处;MCP 服务端被两个客户端调通。
会选框架和低代码平台、会拆多 agent、敢做写操作,改任何东西都先看评测。
过关 手写、LangGraph、Spring AI、Dify 四种实现的对比表;换模型、改提示词都能用评测说出好坏。
把 agent 安全、稳定、算得过账地上线,懂后训练,能替团队做取舍。
过关 上线版 + 压测 + 故障演练 + 安全清单;自训小模型和大模型的对比表;仓库公开,别人 30 分钟能跑起来。
2025 年 6 月到 2026 年 11 月的 Agent 开发岗位:大厂 13 份(字节、腾讯、蚂蚁、拼多多、京东、百度、华为),中小公司 13 份。数的是“提到过”,职责和加分项都算,一份里提到多次只算一次。
每站三步:先看场景全景,再逐个学知识点,最后回到全景讲一遍。点开一站看全景、知识点、这一站给值班助手加什么、怎么算过关、要用到 Java 板块的哪几篇。标着“v2”的是对照招聘要求后加的。日期按每周 26 小时排。
写一个 GC 日志小工具:解析停顿、算出最长和平均;再包成 FastAPI 接口,用 asyncio 同时拉 5 台机器的日志。全程用 Claude Code 结对写。
uv ≈ Maven 加 JDK 版本管理;Pydantic ≈ DTO 加 @Valid;asyncio 像 Redis 和 Netty 的单线程事件循环,和线程池是两回事。已经熟悉 Python 的话,这站压成一周复习。
三个小实验写成报告:同一段日志的 token 数和成本;温度 0 和 1 各跑 10 次看差别;把一条关键报错埋进长日志,看模型找不找得到。
上下文窗口 ≈ 堆内存上限,但装太满不会报 OOM,而是悄悄抓不住重点;Embedding 和 hashCode 正相反,hashCode 要散开,Embedding 要让意思近的靠在一起。
够用的数学:向量、点积和概率
一次分诊调用的来回
组装提示词、发出请求、流式收回、校验结构、出错重试
还没做:学这一站时第一页就做它
告警分诊服务:输入一段告警和日志,输出“类型、级别、可能原因、先查什么”。带校验、重试和限流处理。Python 一版,Spring AI 一版。
多轮对话 ≈ 无状态 HTTP,每次都把整段历史带上;提示词缓存 ≈ PreparedStatement 复用,但前缀必须一字不差;结构化输出 ≈ DTO 加 @Valid,只是生成方会出错,要能重试。
响应时间为什么越压越长(重试反馈环) 三高知识地图(超时和重试) 从输入 URL 到页面展示 Spring Boot 自动配置(Spring AI starter) HTTP 流式与 SSE
一次排障提问,agent 来回了几轮
模型提议工具、你的代码执行、结果送回,直到答出来
还没做:学这一站时第一页就做它
先把你自己排查 Full GC、线程池打满的步骤写成 SOP,写 10 条评测用例。再手写 v1:约 200 行,工具有查日志、解析 GC 日志、看线程 dump、搜学习笔记;全部只读,最多 15 步。
拆 SOP ≈ 写接口文档前先跟业务方对流程;工具定义 ≈ RPC 接口,但模型只是“提议”调用,参数可能传错;Agent 循环 ≈ while 加状态机,但下一步由模型决定,所以一定要有上限。
三高知识地图(超时、幂等) JVM 内存结构(排障知识) G1 和 ZGC 怎么回收(排障知识) Linux 进程、权限与容器隔离
第二天再问同一个服务
上下文里装了什么、哪些被压缩掉、记忆从哪里取回来
还没做:学这一站时第一页就做它
让它记住每个系统的病历:这个服务上次 Full GC 是什么原因、谁处理的、怎么修的。跨会话保留,按团队隔离。
记忆 ≈ 缓存加淘汰策略:有写入、过期、淘汰;不同的是先要判断值不值得记,新旧记忆还会互相矛盾。上下文压缩 ≈ GC,但压缩会丢信息,丢错了就答错。
一份运维手册从上传到被引用
解析、切块、向量化、入库,再被检索、重排,写进复盘报告
还没做:学这一站时第一页就做它
知识库放两类数据:干净的学习笔记,加上真实的“脏”数据(运维手册 PDF、历史故障单),能增量同步。它第一次写长文:自动生成带引用的故障复盘报告。
RAG ≈ 先查缓存再回源,但查到的是“相似”而不是“命中”,可能拿错;增量同步 ≈ 用 binlog 把 MySQL 同步进 Elasticsearch;向量索引 ≈ 数据库索引,但它是近似查找,用一点精度换速度。
缓存穿透、击穿与雪崩 连接池与事务性能(PostgreSQL) 倒排索引与 BM25 向量索引 HNSW PostgreSQL 与 pgvector(和 Java 地图 J06 共用)
Claude Code 调用你的 MCP 工具
启动、握手、发现工具、调用、拿回结果
还没做:学这一站时第一页就做它
把工具拆成 MCP 服务端(Python 一个、Spring AI 一个),接进 Claude Code 直接用;把排障 SOP 写成一个 Skill,就像你现在用的 learn。
MCP ≈ JDBC 驱动或 SPI:一套接口,各家实现,客户端不用改;不同的是驱动是你挑的可信代码,MCP 服务端可能不可信。Skill ≈ 按需加载的 starter 加一份说明书。
Spring Boot 自动配置 Spring Security 认证与授权 网络 IO 模型 OAuth 2 授权流程
一个告警进来以后
主 agent 分诊、三个子 agent 并行调查、人批准后建工单
还没做:学这一站时第一页就做它
v2:用 LangGraph 和 Spring AI 各重写一次,再用 Dify 搭一个分诊流程对比。主 agent 分诊,三个子 agent 并行查日志、指标、笔记,再汇总。第一次有写操作:建工单、发通知;重启服务要人批准。
多 agent ≈ 微服务拆分:拆了能并行,也要付协调成本,而且每个子 agent 都要重读一遍上下文。Dify 工作流 ≈ Flowable 这类流程引擎,只是节点里是概率模型。Spring AI 的 Advisors ≈ AOP 拦截器链。Spring AI 2.x 建在 Spring Boot 4 上,还在 Boot 3 的项目用 1.1.x。
改了一句提示词之后
评测怎么发现变差,trace 怎么指出是哪一步
还没做:学这一站时第一页就做它
用例扩到 50 条,加自动打分,接上 tracing;故意改坏一次提示词,看评测能不能抓到;再换一个模型跑一遍。
评测集 ≈ 单元测试加压测,但结果是通过率,不是全过或全挂;Tracing ≈ SkyWalking、Zipkin 那套链路追踪,只是每一段多了 token 和成本;提示词版本 ≈ 配置中心的版本和灰度。
系统压测 响应时间为什么越压越长 OpenTelemetry 链路追踪 够用的统计:样本量和置信区间
大促夜里 1000 个告警同时涌进来
网关、队列、限流、降级、成本看板各做了什么
还没做:学这一站时第一页就做它
上线版:AI 网关、鉴权限流、队列跑长任务、超时重试降级、成本看板、提示注入防护,加一个最小网页界面。做一次压测,演练三种故障:模型超时、被限流、工具挂掉。
AI 网关 ≈ Spring Cloud Gateway 加一层 token 计量;护栏 ≈ Filter 链和 Spring Security,但攻击写在自然语言里,正则拦不全;长任务 ≈ Kafka 消费加 offset 提交,但重放一步时模型可能做出不同决定,所以工具必须幂等。
三高知识地图 响应时间为什么越压越长 系统压测 Spring Security 认证与授权 Spring MVC 请求关卡 Spring @Async 与线程池 Redis 分布式锁 Redis Stream 与消息队列 Kafka 消息可靠性与消费组 连接池与事务性能 限流算法:令牌桶和滑动窗口 熔断器状态机 Docker 与 Kubernetes 基础
从线上 trace 到一个更准的小模型
收数据、定奖励、训练、评测、部署上线
还没做:学这一站时第一页就做它
拿站 09 的评测集当奖励,租一张云 GPU,用 LoRA 和 GRPO 训一个开源小模型做告警分诊;用 vLLM 部署起来,接进模型客户端,和大模型比准确率、延迟、成本。
提示词 ≈ 配置文件,微调 ≈ 改源码重新编译:改得深,效果稳。不同的是编译结果是确定的,训练要靠评测证明变好了,还可能把别的能力弄坏。
够用的深度学习:张量、损失、梯度、PyTorch 入门 GPU、显存和云 GPU 怎么租
值班助手走完一圈
从告警进来到复盘报告写完,经过的所有部件
还没做:学这一站时第一页就做它
1.0 公开发布。专家方向任选:Agent Infra 与 AI 网关、企业 Java 与 AI 集成、编码 agent 与开发者工具、深入后训练与 RL、多模态与 computer use。前两个和你的 Java 架构背景最对口。
专家 ≈ 你熟悉的架构师:不在于会的最多,而在于每个取舍都说得清,并且对结果负责。
这一站不加新补给,用的是前面攒下的全部东西。
不做十几个玩具,只做一个越长越大的系统。题目选线上排障,是因为它用得上你最强的东西:JVM、线程池、Redis、Kafka 的排障经验。蚂蚁 CodeFuse 的招聘要求里,要做的也正是这类日志排查、根因判断的 agent。
读者是有经验的 Java 后端。经验决定讲多快、用什么打比方,不决定从哪讲起:天天调接口,也可能说不清温度设成 0 结果为什么还会变。
当零基础讲:往下讲两层,前置知识写足。每个新概念先挂到一个 Java 老朋友上,再指出哪里不像。
例:讲 Embedding,先讲向量和距离,再讲模型怎么把一句话变成一串数,最后说它和 hashCode 哪里相反。
从这一站要解决的问题讲起,往下讲一层;仓库里已经有的页面直接链过去,不重讲。
例:讲限流,从“模型供应商每分钟只给 N 次”讲起,再讲令牌桶。
下面 17 个比方是这门课的骨架:每个 AI 概念都先从你认识的东西出发。红色那行最要紧,比方失效的地方正是新东西的精华。
像有超时、有限流、要重试
不像同样的输入,不保证同样的输出
像服务端不记得你,历史每次都要发
不像历史越长,每次越贵越慢
像装满了就会出事
不像不报 OOM,而是悄悄抓不住重点
像相同的部分不再重新算
不像只认一字不差的前缀,改一个字就失效
像用 schema 约束格式
不像生成方自己会出错,校验失败要重试
像把内容变成定长的数
不像意思近的要靠近,hashCode 偏要散开
像有名字、参数、返回值
不像模型只提议调用,执行的是你的代码;它会传错参数
像每轮看结果决定下一步
不像下一步由模型决定,必须有上限
像有写入、过期、淘汰
不像先要判断值不值得记,新旧记忆还会互相矛盾
像先查外部存储,再拼出答案
不像查到的是“相似”不是“命中”,可能拿错
像一套接口,各家实现,客户端不改
不像驱动是你挑的可信代码,MCP 服务端可能不可信
像拖节点、连线、条件分支
不像节点里是概率模型,每个节点都要评测
像拆开能并行,各管一摊
不像每个 agent 都要重读上下文,token 成倍涨
像改完跑一遍,防回归
不像结果是通过率,要分清进步还是噪声
像进出都过一道检查
不像攻击写在自然语言里,正则拦不全
像挂了从记下的位置接着跑
不像重放一步,模型可能做出不同决定,工具要幂等
像比改配置(提示词)改得深,效果稳
不像结果不确定,要靠评测证明变好了,还可能把别的能力弄坏
七成给主线,三成给补给。主线里“做”占得最多,看懂了不算,要跑起来、讲出来。
一格是一周。06 站的斜纹是春节那一周,最后一格是机动周;落后了就用机动周补,不压缩“做”的时间。红线是今天。
每次状态变化都是公开仓库里的一次提交,带日期,谁都能查。“我用自己的学习证明这张地图可靠”靠的就是这串记录,页面写了多少篇不算数。
之前学的都归到这个板块,当主线的补给库。一半会在主线上用到;另一半是架构师的储备,主线暂时用不上,不用再往深挖。这个板块有自己的地图:Java 后端架构学习地图,主线走完以后按它系统走一遍。
网络 IO 模型 Redis 线程模型与 IO 多路复用 ThreadPoolExecutor.execute 源码 Spring MVC 请求处理流程 JDK 8、17、21、25 G1 和 ZGC 怎么回收 从输入 URL 到页面展示 响应时间为什么越压越长 三高知识地图 Spring Boot 自动配置 JVM 内存结构 Redis 过期删除与内存淘汰 缓存穿透、击穿与雪崩 连接池与事务性能 Spring Security 认证与授权 Spring IoC 与依赖注入 Spring AOP 代理原理 Kafka 消息可靠性与消费组 Redis Stream 与消息队列 系统压测 Redis 分布式锁 Spring @Async 与线程池 Spring MVC 请求关卡
Spring AOP 与事务 Bean 生命周期与循环依赖 Spring Boot 启动流程 Spring 事件机制 MyBatis 执行流程 MyBatis 与 Spring 事务 MyBatis 插件与分页 MyBatis 缓存与 Caffeine MyBatis-Plus 原理 MySQL MVCC 与锁 HikariCP ConcurrentBag 源码 Redis 持久化 RDB 与 AOF Redis 主从、哨兵与集群 Redis 数据结构与编码 Redis 大 key 与热 key Redis Lua 脚本与事务 布隆过滤器与 HyperLogLog Kafka 存储与零拷贝 SynchronousQueue 与 LinkedTransferQueue AQS 源码 Java 内存模型
储备页不是白学:面试和架构评审还会用到。只是按现在的目标,它们排在主线后面。主线用到的 Java 和基础知识里还缺 16 个,在各站“补给站”里标着“待做”,到那一站再做。
每个排法都放弃了另一种做法。写清放弃了什么、为什么,以后改地图时知道哪些能动、哪些别动。
选站 04 不用框架写 agent,站 08 再学框架和低代码
没选一上来学 LangChain、Dify 或 Spring AI
关键约束:框架把循环藏起来了。出了问题看不到消息往返,只能改配置碰运气。
选站 04 先写 10 条用例,站 09 做成体系
没选开发都学完了再补评测
关键约束:26 份招聘要求里 19 份提到评测,排第一。没有用例,每次改提示词都在碰运气。
选值班助手每站长一块
没选每站一个独立小 demo
关键约束:作品要有深度。十几个玩具证明不了你能把东西做到上线。
选主线用 Python,站 03、07、08 各出一版 Java
没选只用 Java,或者只用 Python
关键约束:18 份要 Python,新工具几乎都先有 Python 版;但也有 13 份接受 Java,这是你的读者和你的优势所在。
选每站列补给,用到再补
没选先把架构知识系统学完,再上 AI
关键约束:架构知识没有尽头,“学完再说”会一直拖住主线。带着问题补的东西也记得最牢。
选站 11 两周:原理加一次小模型实训
没选三周以上深入训练,或者完全不碰
关键约束:只有 6 份提到,其中 4 份是加分项或算法岗;应用岗更看重评测和数据闭环。想走算法方向,站 12 再深入。
选讲原理,换模型只改客户端一层
没选围着一家模型的接口教
关键约束:模型几个月就换一代,国内读者用的模型也不一样。课程要比任何一个模型活得久。
↓ 先用页首的“先定位”查一下它在哪
到那一站再学。正好是当前这站,就马上学。
主线用到时再补。急用就做一页快速档。
记进下面的“以后再说”,两周回看地图时再决定加不加。