臭名昭著aTrust隔离计划1.臭名昭著aTrust隔离计划2.VPN原理与aTrust隔离网络实践3.docker-easyconnect到底做了什么4.TUN(tunnel-隧道-虚拟网卡)模式
个人项目
personal(个人展示)GitHub Actions 自动部署个人展示项目
基于Quartz搭建的个人博客1.Quartz个人博客使用教程2.使用 rsync 增量部署 Quartz 博客3.使用 GitHub Actions 自动部署 Quartz 博客5.域名绑定6.CDN加速7.Google 搜索收录排查:为什么关键词搜得到别人,却搜不到我的网站?Obsidian、双向链接与知识图谱
架构设计
分布式分布式事务RPC原理
旅行
行程攻略青岛三日游行程攻略
前端
NginxNginx配置与反向代理入门
Nodenpm与npx的区别
数据库
mysql01.MySQL基础语法与约束02.MySQL数据库类型03.MySQL多表查询04.MySQL 索引05.MySQL 事务06.MySQL 隔离级别07.MySQL MVCC08.MySQL 锁09.EXPLAIN10.慢查询与 SQL 优化
mysql面试题01.索引问题02.事务与隔离级别03.锁机制04.存储引擎与性能优化05.用户权限、字符集与备份恢复
mysql实战01.EXPLAIN实战02.测试环境菜单误删排查与恢复03.MySQL IN 详解
网络
网络安全1.无线监听网卡苹果M系列虚拟机安装Kali Linux教程3.kali怎么使用RTL8812AU4.kali基础命令
网络基础进程之间怎样通过网络传递数据
网址常用网址
中间键
esElasticsearch 入门
mq
RabbitMQRabbitMQ高级RabbitMQ基础
1. MQ 基础2. MQ 核心角色与代码对应3. MQ Consumer Group 与消费模式4. SOFAMQ 账户变更代码实践5. MQ 可靠性问题6. 消息幂等
redis缓存击穿、穿透与雪崩Redis 分布式锁Redis 缓存问题Redis 数据结构
AI
使用说明
第三方插件&技能简介Archify使用与安装指南geekgeekRun使用OfferFlow使用指南Ponytail使用指南Skills Manager使用指南
CodexCodex CLI与IDE区别及使用指南Codex Hook单独配置与提交通知Codex MCP安装与使用指南Codex第三方插件安装与使用指南
Agent开发0-学习路线1.LLM、Token、上下文窗口与模型参数2.大模型 API、请求参数与响应结构3.Spring AI ChatClient4.Prompt、System Prompt、Prompt 模板6.结构化输出、JSON Schema7.SSE 流式响应8.会话 ID、聊天记录、Redis9.超时、重试、限流、降级10.*完成可运行聊天接口11.Function Calling、Tool Calling 原理12.用 Java 方法定义 Tool13.工具参数设计和校验14.实现订单查询工具15.实现物流查询工具16.实现库存查询工具17.多个工具自动选择18.工具异常、超时、重试
diy主机
主机零件学习1.CPU2.主板3.内存4.显卡5.硬盘6.散热7.风扇8.机箱热门型号价格表
捡垃圾diy-13600kf+5060diy-14600kf+5070
English高频词汇英文基础语法简单句子音标
GitGit常用命令Sublime Merge 使用指南
Java
工具库Caffeine本地缓存Reactor教程
工作实践如何使用@Async线程池使用与排查线上服务 CPU 使用率过高排查压测下RPC接口大量失败排查记录
基础1.HashMap2.ConcurrentHashMap3.HashSet4.final5.static6.volatile7.AtomicInteger8.String动态代理反射锁与线程同步线程注解
面试题1.HashMap 存储在方法内是线程安全的吗2.ArrayList参数传递与引用重新赋值3.== 和 equals 的区别、hashcode4.重载和重写的区别5.String、StringBuffer、StringBuilder区别及使用场景6.接口和抽象类7.ArrayList 与 LinkedList 的区别和扩容机制8.HashMap 和 Hashtable 的区别及底层实现9.Object 和 Objects 的区别10.ThreadLocal的原理和使用场景11.字节码是什么及作用12.Java类加载器有哪些13.双亲委派模型14.Java异常体系15.GC是什么16.GC如何判断对象可以被回收
面试总结0.HR面试模板1.面试一2.面试二3.面试三笔试
网络与 IO(黑马程序员-纯理论)01-网络编程基础02-IO模型与零拷贝03-BIO04-NIO基础与缓冲区05-NIO通道与选择器06-AIO
juc00-目录01-进程与线程02-线程同步与通信03-并发设计模式04-Java内存模型05-CAS与原子类06-ThreadLocal07-阻塞队列08-线程池使用与原理09-任务调度10-ForkJoin与享元模式11-AQS12-ReentrantLock13-读写锁14-并发协作工具15-ConcurrentHashMap16-CopyOnWrite与同步容器17-SkipListMap18-非阻塞队列
juc(工作常见)Java并发编程三个重点拆解
jvm1. JVM运行时数据区
Spring1.Spring IoC、DI与构造方法注入CGLIB、Byte Buddy 与 Spring AOPSpring 常用注解详解Spring Bean 生命周期
Spring MVC异常处理机制
linux常用命令
mac快捷键终端常用操作
python
基础01.Python是什么,为什么要安装Python02.Python项目中.venv是什么03.Python基础语法
基础实战sql替换
HTTPXHRMS员工详情接口调用(Python HTTPX)
windowswindows激活

Java 后端转 Agent 应用开发:50 天学习路线

更新时间:2026-08-20

适用对象:已有 Java 后端经验,希望在 50 天内形成 AI 应用开发求职能力。

最终目标:做出一个可运行、可演示、可写进简历的 Java Agent 项目,并开始投递相关岗位。

1. 先确定方向

目标岗位

  • AI 应用开发工程师
  • LLM 应用开发工程师
  • Agent 应用开发工程师
  • Java AI 应用开发工程师
  • 智能客服、企业知识库、AI 办公应用开发工程师

核心定位

Java 后端工程师
  + 大模型调用
  + RAG 知识库
  + Tool Calling
  + Agent 工作流
  + 工程化部署

不把目标定为大模型算法工程师,暂时不投入模型训练、强化学习和复杂数学推导。

50 天内不做的事

  • 不系统学习前端
  • 不学习模型训练和 PyTorch
  • 不同时学习多个 Agent 框架
  • 不做第二个项目
  • 不追求复杂多 Agent 平台
  • 不把时间花在偏门八股和框架源码上

2. 固定技术栈

Java + Spring Boot + Spring AI
PostgreSQL + pgvector + Redis
SSE + Docker
RAG + Tool Calling + Agent 工作流

框架选择

第一选择:Spring AI。重点学习 ChatClient、Tool Calling、Vector Store、RAG、Memory 和 MCP。可先阅读 3.Spring AI ChatClient,再结合 Spring AI 官方文档 学习。

第二选择:LangChain4j。等第一个项目完成后再了解,不作为 50 天主线。LangChain4j 官方文档

Maven 配置

第 1 天创建项目后,使用 Maven 管理依赖。当前学习项目使用 Java 21、Spring Boot 4.1.1 与 Spring AI 2.0.1;本机 Maven 为 3.9.16,路径为:

/Volumes/data/develop/apache-maven-3.9.16

项目未包含 Maven Wrapper 时,可在 IntelliJ IDEA 中将 Maven home 设置为上述路径,或直接使用本机 Maven 执行构建。不要把 API Key 写进 pom.xml 或提交到 Git。

基础 pom.xml 如下;后续学习 Redis、RAG 等能力时,再按对应章节增补依赖。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
 
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>4.1.1</version>
        <relativePath/>
    </parent>
 
    <groupId>com.afyke</groupId>
    <artifactId>ai-agent-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
 
    <properties>
        <java.version>21</java.version>
        <spring-ai.version>2.0.1</spring-ai.version>
    </properties>
 
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
 
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-starter-model-openai</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

常用命令:

mvn clean compile
mvn spring-boot:run

如果后续同时引入 WebMVC 和 WebFlux,须明确项目的 Web 技术栈;入门阶段默认只保留 WebMVC。Maven 依赖更新后,在 IDEA Maven 面板重新加载项目。

岗位参考

公开招聘中已经出现“Java 后台 + AI 应用工程”的组合,常见要求包括 Java/Spring Boot、LLM、RAG、Agent、工具调用、日志和监控。BOSS 职位示例

一些 AI 应用岗位也明确接受 Java、Python 或 Go,并要求完成 LLM 应用后端、RAG、函数/工具调用、权限和监控等工作。来源标注为 BOSS 直聘的岗位

3. 每天固定安排

每天 8 小时:

4 小时:Agent 项目开发
2 小时:Java 八股和项目复盘
1 小时:AI 原理和官方文档
1 小时:整理笔记、模拟表达和复盘

每天必须留下至少一种成果:

  • 可运行代码
  • 新增接口
  • 测试用例
  • 项目文档
  • 面试题答案
  • 项目演示截图

每天结束时记录:

今天完成了什么:
今天遇到什么问题:
问题是怎么解决的:
明天要完成什么:

4. 50 天每日学习清单

第 1~10 天:模型调用基础

天数Agent 学习内容Java 复习内容
1了解目标岗位,搭建 Spring Boot 项目Java 基础、集合
2LLM、Token、上下文窗口、模型参数HashMap、ConcurrentHashMap
32.大模型 API、请求参数与响应结构异常、泛型、反射
43.Spring AI ChatClientSpring IOC、DI
5Prompt、System Prompt、Prompt 模板Spring AOP、事务
6结构化输出、JSON SchemaJVM 内存模型
7SSE 流式响应GC、类加载
88.会话 ID、聊天记录、Redis线程、线程池
9超时、重试、限流、降级synchronized、Lock
1010.*完成可运行聊天接口Java 第一轮总结

第 10 天验收:能通过 Java 接口调用模型,实现流式对话,并保存会话记录。

第 11~20 天:Tool Calling

建议实现的工具:

  • queryOrderStatus:查询订单状态
  • queryLogistics:查询物流信息
  • queryInventory:查询库存
  • createAfterSaleTicket:创建售后工单

第 20 天验收:模型能调用真实 Java 方法;参数错误、无权限和工具异常都能被正确处理;写操作必须经过人工确认。

参考:Spring AI Tool Calling

第 21~30 天:RAG 知识库

天数Agent 学习内容Java 复习内容
21RAG 原理、EmbeddingMQ 顺序消息
22PDF、Markdown 文档解析MQ 最终一致性
23文本清洗和切片分布式事务
24向量数据库、pgvector分布式锁
25文档向量化和入库接口幂等
26相似度检索限流、熔断、降级
27Top-K、元数据过滤微服务调用
28把检索内容注入 Prompt服务雪崩
29引用来源和防止幻觉高并发接口设计
30完成知识库问答Java 第二轮总结

RAG 链路:

上传文档
  → 文档解析
  → 清洗和切片
  → Embedding
  → 向量入库
  → 相似度检索
  → Prompt 组装
  → 返回答案和引用来源

第 30 天验收:上传文档后,系统可以基于文档回答问题并返回引用来源;至少准备 20 条问题作为评测集。

参考:Spring AI RAG

第 31~40 天:Agent 工作流

天数Agent 学习内容Java 复习内容
31工作流和自主 Agent 的区别JVM 综合题
32State 状态管理Spring 启动流程
33意图识别和任务路由Spring Bean 生命周期
34RAG 和 Tool 组合事务传播机制
35多步骤任务执行MySQL 综合题
36循环、最大步数、终止条件Redis 综合题
37工具失败重试和降级MQ 综合题
38会话记忆和中间状态线程池实战
39人工审批、审计日志接口幂等实战
40完成售后 Agent 主流程Java 第三轮总结

主流程:

识别用户意图
  ├─ 制度问题 → RAG 检索
  ├─ 订单问题 → 查询订单
  ├─ 物流问题 → 查询物流
  └─ 售后问题 → 查询订单 → 生成工单 → 人工确认

第 40 天验收:一个问题可以连续调用多个工具,能够保存中间状态,限制最大执行次数,工具失败后不会无限循环。

第 41~50 天:部署、面试和投递

天数Agent 学习内容Java 复习内容
41Docker、环境变量、配置管理JVM 高频题
42日志、Trace、请求链路Spring 高频题
43Token 成本、延迟统计MySQL 高频题
44RAG 评测集、回答质量Redis 高频题
45工具调用测试、异常测试MQ 高频题
46项目架构图、流程图、README分布式综合题
47准备 3 分钟项目介绍Java 项目问题
48模拟 Agent 面试RAG、Tool Calling
49修改简历,开始投递系统设计题
50完整模拟面试和项目演示查漏补缺

第 50 天验收:拥有完整项目、项目文档、简历、3 分钟项目介绍和一轮模拟面试记录,并开始投递岗位。

5. 唯一实战项目

项目名称

企业售后与知识库 Agent

项目目标

用户可以用自然语言:

  • 查询企业制度
  • 查询订单状态
  • 查询物流信息
  • 查询库存
  • 创建售后工单

最小功能范围

知识库

  • 支持 PDF 或 Markdown
  • 文档清洗、切片和向量化
  • 基于知识库回答问题
  • 返回引用文档和段落

业务工具

  • 订单查询
  • 物流查询
  • 库存查询
  • 售后工单创建

安全控制

  • 用户权限校验
  • 文档权限过滤
  • 写操作人工确认
  • 工具调用审计
  • 写操作幂等
  • 敏感信息脱敏

项目技术栈

Java、Spring Boot、Spring AI
PostgreSQL、pgvector、Redis
SSE、Docker、JWT

项目最终演示链路

用户提问
  → Agent 判断意图
  → RAG 检索或调用业务工具
  → 后端校验权限
  → 多步骤处理
  → 写操作人工确认
  → 返回结果并保存审计日志

6. Java 八股复习范围

第一优先级

第二优先级

  • MQ 可靠性、重复消费、消息丢失
  • 分布式锁
  • 接口幂等
  • 限流、降级、熔断
  • 微服务调用和服务治理
  • 高并发接口设计

面试题回答格式

先说结论
  ↓
解释原理
  ↓
结合项目场景
  ↓
说明异常情况和解决方案

不要求 50 天内背完整套八股,优先准备目标岗位最可能问到的内容。

7. Agent 面试重点

RAG

  • 为什么使用 RAG,而不是直接把文档放进 Prompt?
  • 文档应该如何切片?
  • 召回结果不准确如何排查?
  • 向量检索和关键词检索如何组合?
  • 如何处理文档权限?
  • 如何评测 RAG 效果?

Tool Calling

  • Tool Calling 的完整流程是什么?
  • 工具参数如何校验?
  • 如何防止模型调用没有权限的工具?
  • 工具超时和重复调用如何处理?
  • 写操作为什么需要人工确认?
  • 如何保证工具幂等?

Agent 工作流

  • Agent 和普通聊天接口有什么区别?
  • 什么时候使用固定工作流?
  • 什么时候让模型自主选择工具?
  • 如何限制循环和最大执行步数?
  • 多 Agent 是否一定更好?
  • 如何保存中间状态和恢复任务?

工程化

  • 如何控制 Token 成本?
  • 如何降低模型调用延迟?
  • 如何记录一条完整的 Trace?
  • 模型不可用时如何降级?
  • 如何做内容安全和敏感数据脱敏?

8. 简历项目模板

企业售后与知识库 Agent
 
技术栈:Java、Spring Boot、Spring AI、PostgreSQL、pgvector、Redis、Docker
 
1. 基于 Spring AI 搭建企业知识库 Agent,完成 PDF/Markdown 文档解析、切片、Embedding、向量检索和引用返回。
2. 将订单查询、物流查询和售后工单封装为 Tool,实现模型根据用户意图调用 Java 业务接口。
3. 针对创建工单等写操作增加权限校验、幂等控制和人工确认机制,避免模型直接执行高风险操作。
4. 增加会话状态、Prompt 版本、工具调用日志和 RAG 评测集,支持分析回答质量、响应时间和 Token 成本。
5. 使用 Docker 完成服务和数据库部署,并通过 SSE 提供流式对话接口。

数字必须使用真实测量结果,不要虚构准确率、性能提升或用户数量。

9. 最终检查清单

  • 能在 Spring Boot 中调用大模型
  • 能实现 SSE 流式响应
  • 能把 Java 方法封装为 Tool
  • 能处理参数、权限、超时和异常
  • 能完成一个 RAG 知识库
  • 理解 Embedding、切片、召回和重排
  • 能实现多步骤 Agent 工作流
  • 能实现人工审批和敏感操作拦截
  • 能保存会话和中间状态
  • 能记录模型、工具和检索调用链
  • 能建立至少 20 条评测问题
  • 能用 Docker 启动项目
  • 能用 3 分钟讲清楚项目
  • 能回答 Java 高频面试题
  • 能回答 RAG、Tool Calling 和 Agent 面试题

10. 资料入口