从写CRUD到做AI Agent:我花了6个月转型,这是我的完整路线图

去年这个时候,我还在每天写CRUD接口。不是说CRUD不好------毕竟9年了,写起来又快又稳------但我心里清楚,纯CRUD开发的天花板快到了。

转折点是有次面试,面试官问我:"你们有没有用AI做点什么?"我说没有。他没说什么,但那个沉默让我很难受。回来后我查了一下------好家伙,Spring AI已经1.0 GA了,MCP协议有5800多个Server了,AI Agent的生态在Java圈已经成型了。

我决定花半年时间转型。不是转行做AI,而是在Java开发的基础上,加上AI Agent开发能力。这篇文章是我6个月学习路线的真实记录,不是"完美规划"------中间走过弯路,也踩过坑。


为什么是6个月?

因为我试过"一个月速成",失败了。

今年1月的时候,我花了一个月时间刷各种AI教程,看了无数视频和文章。但到月底发现------学了一堆概念,真正上手写代码的时候脑子一片空白。问题出在:光看不练,没有把知识转化为肌肉记忆。

后来我改成了"边学边做"的模式------每周学一个主题,同时在一个实际项目里用上。6个月下来,我不敢说精通,但至少能独立搭一个生产级的AI Agent系统了。


第1-2月:补基础------AI到底在干嘛

这段时间不写代码,先搞懂几件事。

第一周:理解LLM的基本原理

不是让你去学神经网络------你是Java开发者,不是算法工程师。你需要理解的是:LLM是怎么工作的,为什么它会"幻觉",token是什么概念,上下文窗口是什么。

推荐资源:

  • 3Blue1Brown的"Neural Networks"系列(YouTube,理解原理)
  • Andrej Karpathy的"Let's build GPT"(理解Transformer,不用全看懂,建立直觉就行)
  • OpenAI的API文档(理解token、temperature、top_p等参数)

学完的标准:能向别人解释清楚"为什么LLM会幻觉"和"temperature参数调高调低有什么区别"。

第二周:Prompt Engineering

别觉得这个low。Prompt工程是AI Agent开发的核心技能------你写的每一段system prompt,直接影响Agent的行为质量。

核心概念:

  • Few-shot learning:给几个例子让模型学习模式
  • Chain of Thought:让模型"想"一下再回答
  • 结构化输出:让模型返回JSON而不是自然语言
arduino 复制代码
// 差的prompt
"帮我分析这段代码有什么问题"

// 好的prompt
"你是一个Java代码审查专家。分析以下代码的安全性和性能问题。
按以下JSON格式输出:
{
  "issues": [
    {"severity": "high/medium/low", "category": "security/performance/best-practice", "description": "...", "suggestion": "..."}
  ],
  "overallScore": 1-10
}
代码:[粘贴代码]"

学完的标准:能写出让模型稳定输出结构化数据的prompt。

第三到第四周:RAG基础

RAG(检索增强生成)是AI应用最核心的模式。理解它的完整链路:文档加载 → 切分 → 向量化 → 存储 → 检索 → 重排序 → 生成。

用Spring AI搭一个最简RAG:

  1. 准备10个PDF文档
  2. 用TokenTextSplitter切分
  3. 用EmbeddingModel向量化
  4. 存入Redis向量库
  5. 用VectorStore做相似度检索
  6. 把检索结果和问题一起发给ChatClient

学完的标准:能跑通一个从文档导入到问答的完整RAG流程。

第五到八周:上手Spring AI 1.0

这两个月的后半段,开始真正写代码。Spring AI 1.0 GA是Java开发者做AI应用最好的起点。

重点学这几个模块:

  1. ChatClient:核心对话接口,理解prompt、system、advisor的概念
  2. Function Calling:让AI调用你的Java方法,这是Agent的基础
  3. VectorStore:各种向量数据库的集成
  4. ChatMemory:对话记忆管理
  5. MCP Client:连接MCP Server使用外部工具

实践项目:做一个"代码助手"------能读取项目代码、回答关于代码的问题、生成代码注释、做简单的代码review。不需要完美,能跑就行。

java 复制代码
// 你的第一个AI应用可能长这样
@Service
public class CodeAssistant {
    
    private final ChatClient chatClient;
    private final VectorStore vectorStore;
    
    public String askAboutCode(String question) {
        // 检索相关代码
        var codeSnippets = vectorStore.similaritySearch(
            SearchRequest.builder().query(question).topK(3).build()
        );
        
        String context = codeSnippets.stream()
            .map(Document::getText)
            .collect(Collectors.joining("\n\n"));
        
        return chatClient.prompt()
            .system("你是Java代码专家,基于提供的代码片段回答问题。")
            .user("代码片段:\n" + context + "\n\n问题:" + question)
            .call()
            .content();
    }
}

第3-4月:进阶------Agent设计模式

前两个月打了基础,第三个月开始进入真正的Agent开发。

什么是Agent?

Agent和普通AI应用的区别:Agent有自主决策能力。普通应用是"用户问→AI答"的一问一答。Agent是"用户给个目标→AI自己拆解步骤→调用工具→完成目标"。

举个具体的例子:

vbnet 复制代码
普通AI应用:
用户:"订单DD20260720001的状态是什么?"
AI:调用queryOrder("DD20260720001") → 返回结果

Agent:
用户:"帮我处理今天所有异常订单"
AI自主执行:
  Step 1: 调用getAbnormalOrders()获取异常订单列表
  Step 2: 对每个订单,判断异常类型
  Step 3: 如果是"库存不足",调用updateInventory()
  Step 4: 如果是"支付超时",调用sendPaymentReminder()
  Step 5: 如果是"地址错误",调用notifyCustomerService()
  Step 6: 汇总处理结果,生成报告

Agent的核心是"推理-行动循环"(ReAct pattern):先想下一步做什么(Reasoning),然后执行(Action),看结果,再想下一步。

Spring AI里的Agent模式

Spring AI 1.0没有直接叫"Agent"的类,但它提供了构建Agent的所有积木:

java 复制代码
@Service
public class OrderAgent {
    
    private final ChatClient chatClient;
    
    // 定义Agent可用的工具
    @Bean
    public Function<GetOrdersRequest, List<Order>> getAbnormalOrders(OrderService service) {
        return req -> service.findAbnormalOrders(req.date());
    }
    
    @Bean  
    public Function<UpdateStockRequest, String> updateInventory(InventoryService service) {
        return req -> service.updateStock(req.productId(), req.quantity());
    }
    
    @Bean
    public Function<NotifyRequest, String> notifyCustomerService(NotificationService service) {
        return req -> service.notify(req.orderId(), req.message());
    }
    
    public String handleAbnormalOrders(String date) {
        return chatClient.prompt()
            .system("""
                你是订单处理Agent。你的任务是处理指定日期的异常订单。
                可用工具:
                - getAbnormalOrders: 获取异常订单列表
                - updateInventory: 更新库存
                - notifyCustomerService: 通知客服
                处理完所有订单后,生成一份处理报告。
                """)
            .user("处理日期:" + date + "的异常订单")
            .functions("getAbnormalOrders", "updateInventory", "notifyCustomerService")
            .call()
            .content();
    }
}

学习Spring AI的Agent Patterns

Spring官方有一个系列叫"Spring AI Agentic Patterns",覆盖了:

  • Agent Skills(工具封装)
  • Sub-agent Orchestration(多Agent协作)
  • A2A(Agent-to-Agent通信)
  • Long-term Memory(长期记忆)

实践项目:把前两个月做的代码助手升级成Agent------不仅回答问题,还能自动修复简单的代码问题、创建GitHub Issue、生成修复PR。


第5-6月:实战------做一个生产级Agent

最后两个月,做一个能真正上线的Agent系统。这是最重要的阶段------之前学的所有东西都在这一个项目里综合应用。

我选的项目是"智能运维Agent"------接入告警系统,当收到告警时,Agent自动分析告警、查日志、定位问题、给出修复建议。

技术栈

arduino 复制代码
框架:Spring Boot 4 + Spring AI 1.0
模型:DeepSeek(对话)+ bge-m3(embedding)
向量库:Redis
MCP Server:filesystem(读日志文件)、fetch(抓取监控页面)
工具:Kubernetes API(查Pod状态)、ELK API(查日志)、Grafana API(查指标)
记忆:Redis-backed ChatMemory
监控:Micrometer + Prometheus

Agent工作流

vbnet 复制代码
告警触发 → Agent启动
  ↓
Step 1: 分析告警类型和严重程度
  ↓
Step 2: 查询相关Pod状态(K8s API工具)
  ↓
Step 3: 查询最近5分钟的日志(ELK API工具)
  ↓
Step 4: 查询CPU/内存指标(Grafana API工具)
  ↓
Step 5: 综合分析,判断根因
  ↓
Step 6: 生成修复建议(如果是已知问题,直接给出解决方案)
  ↓
Step 7: 发送到企业微信群

关键代码结构

java 复制代码
@Service
public class OpsAgent {
    
    private final ChatClient chatClient;
    private final AlertService alertService;
    private final NotificationService notificationService;
    
    @EventListener
    public void onAlert(AlertEvent event) {
        // Agent自主执行运维分析
        String analysis = chatClient.prompt()
            .system("""
                你是运维Agent。收到告警后,按以下步骤处理:
                1. 用getPodStatus查Pod状态
                2. 用queryLogs查最近5分钟日志
                3. 用getMetrics查CPU和内存指标
                4. 分析告警根因
                5. 给出修复建议
                
                输出格式:
                ## 告警分析
                [告警描述]
                
                ## 根因判断
                [分析过程和结论]
                
                ## 修复建议
                [具体操作步骤]
                """)
            .user("告警信息:" + event.toJson())
            .functions("getPodStatus", "queryLogs", "getMetrics")
            .call()
            .content();
        
        // 发送分析结果
        notificationService.sendToWeCom(analysis);
    }
}

产出效果

这个Agent上线后,运维团队反馈:

  • 平均告警响应时间从15分钟降到30秒
  • 简单告警(内存满、CPU高、磁盘满)的诊断准确率约85%
  • 运维人员不需要每次都手动查日志和指标了,Agent直接给出分析结果

我的6个月学习时间表

时间 主题 投入 产出
第1周 LLM原理 10小时 理解token、temperature、幻觉
第2周 Prompt工程 10小时 能写结构化输出prompt
第3-4周 RAG基础 20小时 跑通最简RAG流程
第5-6周 Spring AI基础 20小时 ChatClient+Function Calling
第7-8周 实践项目1 20小时 代码助手(RAG版)
第9-10周 Agent设计模式 20小时 理解ReAct、多Agent
第11-12周 实践项目2 20小时 代码助手(Agent版)
第13-16周 MCP + 进阶 40小时 接入MCP Server
第17-20周 实践项目3 40小时 智能运维Agent
第21-24周 上线+调优 30小时 生产级Agent

总计约230小时,平均每周10小时。晚上2小时 + 周末半天。


学完之后的变化

最大的变化不是技术层面的,而是思维方式的:

以前写代码:用户要什么 → 我写什么接口 → 返回结果。

现在做Agent:用户给一个目标 → Agent自己决定调用哪些工具 → 自主完成。

这个转变看起来不大,但对开发方式的影响是根本性的。你不再是在写"接口",而是在设计"能力"------给Agent什么工具、什么约束、什么记忆,让它能自主完成任务。

还有个很现实的变化------面试的时候,被问到"有没有AI相关经验"的时候,不再沉默了。


避坑指南

  1. 别一上来就学LangChain的Python版。你是Java开发者,直接学Spring AI。等你用Spring AI做出东西了,再横向对比其他框架不迟。我第一周浪费了好几天看Python教程,后来发现用不上。

  2. 别只看不动手。看100篇文章不如自己跑一个demo。每个概念学完,立刻在项目里用一遍。

  3. 别追求"完美"的Agent。第一版一定很粗糙,先跑通再说。迭代优化是常态,不是一次到位。

  4. AI Agent不是万能的。有些场景传统代码更合适。判断标准:任务有明确的步骤和规则 → 传统代码;任务需要"理解"和"判断" → 考虑Agent。

  5. 成本意识。Agent每次调用LLM都要花钱。一个复杂的Agent可能一次任务调用5-10次LLM,token消耗不小。上线前一定要算好成本。


6个月说长不长说短不短。如果你也在考虑从CRUD转型AI Agent方向,希望这个路线图能给你一个参考。不用完全照搬,找到适合自己的节奏就行。

核心就一句话:别想太多,先做起来。


相关推荐
Java内核笔记1 小时前
万字长文剖析 Spring Boot 4.1.0 启动流程源码:从 main 到就绪
java·后端
舒灿1 小时前
DeepSeek Harness——Agent自我进化的实现途径?
前端·ai编程·deepseek
2602_959960921 小时前
电商大厂Java面试:从Spring Boot、JPA、微服务到Redis、Kafka、Spring Security与监控,谢飞机的爆笑三轮问答
java·jvm·spring boot·redis·面试题
三雒1 小时前
拆解桌面Agent:WorkBuddy 删除保护机制
agent·ai编程
码农进化录1 小时前
Java 程序员的 AI 进化论 | Spring Boot 搭企业智能客服,从设计到上线
java·spring boot·openai
修远客1 小时前
规划模块:Agent的大脑 — 决定"做什么"和"以什么顺序做"
aigc·ai编程
旺仔学长 哈哈1 小时前
别只做车辆 CRUD:Spring Boot 共享汽车管理系统从预约到还车的完整实现---源码53766
java·spring boot·在线预约·共享汽车
weixin_BYSJ19871 小时前
springboot技能与工具共享小程序---附源码29657
java·javascript·spring boot·python·小程序·django·php
canber1 小时前
DeepSeek Harness (DSH) 实战:架构、模式与插件化开发
ai编程