Java后端转Agent学习路线 · AI Agent

Java 后端转 AI Agent 学习路线

目标定义

目标不是“会用一个 Agent 框架”,而是能从后端工程角度做出一个可靠的 AI Agent 系统:

代码块TEXT · 1 行收起展开
用户目标 -> 意图识别 -> 检索知识 -> 调用工具 -> 维护状态 -> 生成答案 -> 记录 trace -> 评测回归

最终项目建议锁定为:

Personal Knowledge Agent:基于 Obsidian 的个人知识库 Agent,支持 RAG 问答、MCP 暴露、学习计划、任务追踪、长期记忆、trace/eval。

能力迁移图

flowchart TD
    Java["Java 后端基础"] --> Backend["后端工程能力"]
    Backend --> API["LLM Gateway"]
    API --> Agent["Agent Runtime"]
    Backend --> Tool["Tool / State / Trace"]
    Tool --> Agent
    Notes["Obsidian Notes"] --> RAG["RAG Retriever"]
    RAG --> Agent
    Agent --> MCP["MCP Server"]
    Agent --> Product["Personal Knowledge Agent"]
Java 后端能力迁移矩阵 Controller / DTO Agent API / Tool Schema
代码块PLAINTEXT · 18 行收起展开
<rect x="60" y="140" width="150" height="44" rx="8" fill="#dcfce7"/>
<text x="90" y="166">MySQL / Redis</text>
<path d="M210 162 L288 162" stroke="#64748b" stroke-width="2" marker-end="url(#arrow)"/>
<rect x="290" y="140" width="170" height="44" rx="8" fill="#bbf7d0"/>
<text x="319" y="166">Memory / Trace Store</text>

<rect x="60" y="200" width="150" height="44" rx="8" fill="#fef3c7"/>
<text x="86" y="226">线程池 / MQ</text>
<path d="M210 222 L288 222" stroke="#64748b" stroke-width="2" marker-end="url(#arrow)"/>
<rect x="290" y="200" width="170" height="44" rx="8" fill="#fde68a"/>
<text x="318" y="226">异步 Tool / Eval Runner</text>

<rect x="520" y="92" width="150" height="42" rx="8" fill="#ede9fe"/>
<text x="548" y="117">RAG / MCP</text>
<rect x="520" y="154" width="150" height="42" rx="8" fill="#ffe4e6"/>
<text x="542" y="179">Workflow Agent</text>
<rect x="520" y="216" width="150" height="42" rx="8" fill="#ccfbf1"/>
<text x="546" y="241">可评测产品</text>

总体路线

从 Java 后端到 Agent 工程 工程共识 LLM API Tool Calling MCP RAG Workflow Memory Trace/Eval 产品化
阶段核心问题必会能力产出物
P0 AI 工程共识LLM 应用和 CRUD 有什么不同token、上下文、流式、非确定性、成本AI 工程基础笔记
P1 LLM API怎么稳定接模型Gateway、Streaming、错误归一化/chat/chat/stream
P2 Tool Calling模型怎么调用真实能力tool schema、参数校验、权限、审计3 个本地工具
P3 MCP工具怎么标准化暴露tools/resources/prompts、transport、安全边界Notes MCP Server
P4 RAG模型怎么读私有知识chunk、embedding、retrieval、citation、refusalObsidian RAG
P5 Workflow多步任务怎么可控状态机、最大步数、失败恢复学习计划 Agent
P6 Memory长期状态怎么维护user profile、event memory、reflection、update/deleteMemory Store
P7 Trace/Eval怎么知道 Agent 没瞎跑trace、eval set、judge、debug reportEval Runner
P8 产品化怎么长期维护配置、部署、成本、安全、README可演示项目

每阶段必懂的工程对象

对象作用不理解会导致什么
Message模型输入输出的基本单位prompt 拼接混乱,历史丢失
ToolDefinition模型可调用能力说明工具参数不可控
ToolCall模型请求执行的动作无法审计模型做了什么
ToolResult工具执行结果模型拿不到结构化观察
ContextBuilder决定模型本轮看见什么上下文膨胀、漏证据
MemoryRecord长期记忆最小单元记忆来源不明、无法撤销
TraceEvent每一步执行日志失败无法复盘
EvalCase固定回归问题改 prompt 全靠感觉

典型后端架构

flowchart TD
    UI["Web / CLI / App"] --> Controller["AgentController"]
    Controller --> Runtime["AgentRuntime"]
    Runtime --> Context["上下文层<br/>RAG / Memory"]
    Context --> Data["Vector DB / MySQL"]
    Runtime --> Tooling["工具层<br/>Local Tools / MCP"]
    Tooling --> Model["Model Gateway"]
    Runtime --> Ops["观测层<br/>Trace / Eval"]

技术选型建议

推荐先学选择理由不建议
后端主语言Java / Spring Boot复用已有工程能力为了跟风完全放弃 Java
原型语言TypeScript 或 PythonMCP/RAG 生态样例多一开始多语言失控
Java AI 框架Spring AI 或 LangChain4j 选一个能快速接模型和工具两个都深挖
向量库先轻量本地,后续换服务化先验证链路一开始重型平台化
MCP先 stdio,只读工具安全、容易调试开局暴露写入/删除
Workflow自己写状态机能理解本质直接套复杂框架看不懂
Eval固定问题集 + 规则检查可快速回归只让模型自评

先修依赖与升级判定

这条路线不是按名词推进,而是按“工程对象能否跑通”推进。每一层都有上一层必须提供的证据,缺证据就不要跳到下一层。

Upgrade Gates 每一层先交付证据,再进入下一层。 LLM Tool MCP RAG Workflow Memory Eval Product

schema boundary access evidence state history proof

当前层先修依赖升级条件不该提前做
LLM API稳定请求、超时处理、token 日志/chat/chat/stream 有错误归一化上来封装复杂 Agent 框架
Tool CallingDTO、参数校验、读写权限tool 有 schema、权限、审计、结构化结果暴露任意命令执行
MCP已有可用工具能力同一工具能被不同 client 发现和调用把 MCP 当业务系统重写
RAG有可读资料和元数据能检索、引用、拒答、复盘错误只把整篇笔记塞进 prompt
WorkflowRAG / Tool 都可控多步任务有状态、步数上限、失败出口让模型无限自我规划
Memorytrace 能解释历史行为记忆有来源、置信度、更新和撤销每轮对话无脑 append
Eval有固定场景和失败样本改 prompt / chunk / tool 后能比较结果靠主观感觉判断质量

阶段交付切片

每个阶段都要留下能复盘的产物。只写笔记不算完成,只写代码但没有 trace / eval 也不算完成。

阶段必交付代码对象必留证据失败样本
LLM APIModelGateway, ChatController, StreamHandler请求日志、token、耗时、错误码超时、空响应、限流
Tool CallingToolDefinition, ToolExecutor, PermissionGuardtool 参数、结果、拒绝原因参数缺失、越权、超时
MCPMcpServer, ToolRegistry, ResourceRegistryinitialize、list、call 日志断连、schema 不匹配
RAGNoteIndexer, Retriever, ContextBuilderquery、chunk、score、source path召回错、引用假、资料不足
WorkflowAgentState, StepRunner, StopPolicy状态迁移、最大步数触发循环、重复检索、工具失败
MemoryMemoryRecord, MemoryPolicy, MemoryStore写入原因、来源、版本、撤销记录事实过期、偏好冲突、污染写入
EvalEvalCase, EvalRunner, DebugReportpass/fail、差异摘要、失败归因prompt 退化、RAG 退化

路线分叉决策

学习中最容易浪费时间的是“看到新框架就切方向”。用下面的判定表决定当前该补什么。

现象优先补判断依据
Chat 能跑,但回答不可控Prompt / structured output输出是否能被程序校验
模型会调用工具,但经常填错参数Tool schemaschema 是否有类型、枚举、长度、必填
工具能跑,但换 Agent 就不能复用MCP是否能通过 list / call 标准发现
回答经常没有依据RAGsource 是否进 topK,答案是否逐句可引用
多步任务跑飞Workflow是否有状态机、步数上限、停止条件
用户偏好被反复遗忘Memory是否有写入策略和冲突处理
改完不知道更好还是更差Eval是否有固定问题集和失败报告

从 Java 后端到 Agent 工程的迁移模型

Java 后端经验不是被 Agent 淘汰,而是换了落点。传统后端的核心是“确定性请求处理”:输入固定、代码路径固定、数据库事务固定。Agent 工程的核心是“受约束的非确定性决策”:模型会选择路径、调用工具、引用上下文、写入记忆,所以必须把不可控部分关进工程边界里。

Java 后端熟悉对象Agent 工程对应对象新增不确定性必须补上的工程证据
ControllerChat / Task API用户输入更自由,任务边界模糊request schema、任务分类、拒答分支
ServiceAgent Runtime / Planner执行路径由模型参与决定state machine、step limit、trace
RepositoryVector Store / Memory Store检索不是精确主键查询chunk 元数据、score、source、召回评测
DTO 校验Tool schema / structured output模型可能填错字段schema validation、repair/refuse 策略
权限拦截器PermissionGuard / Tool Policy模型可能请求危险工具capability、sideEffect、approval、audit
事务Tool call commit boundary外部副作用可能半成功idempotency key、rollback/unknown 状态
日志TraceEvent / DebugReport错误可能来自上下文、工具、模型、检索phase-level trace、root cause 分类
单元测试EvalCase / Regression Evalprompt 和模型升级会改变行为固定场景集、版本绑定、差异报告
配置中心Prompt / Model / Retriever version配置变化就是行为变化hash、版本号、灰度、回滚

迁移路线不要理解成“学更多框架”,而是把旧能力升级成下面的成熟度:

等级能力状态典型表现下一步
L0 脚本能调用 LLMprompt 写在代码里,失败靠手改加请求日志和错误归一
L1 API能对外提供 chat 接口有 controller/service,但答案不可验证加结构化输出和拒答规则
L2 工具能让模型调用函数工具能跑,但权限和副作用不清楚加 ToolExecutor、PermissionGuard、audit
L3 知识能基于资料回答RAG 能召回,但引用和评测薄弱加 chunk 元数据、source 校验、RAG eval
L4 工作流能做多步任务有 planner,但容易循环、跑偏加状态机、step limit、stop policy
L5 生产化能持续迭代改 prompt/RAG/tool 后知道好坏加 Trace/Eval、灰度、回归样本库

学习时可以把每个新概念都落成一个后端对象:

代码块YAML · 16 行收起展开
# Agent 工程对象清单:每学一个概念,都问它最终落在哪个对象里。
agent_service:
  role: "编排一次任务,从用户输入到最终答案"
  must_have: ["state", "traceId", "stepLimit", "failurePolicy"]

tool_executor:
  role: "把模型的 tool_call 变成受控的真实动作"
  must_have: ["schemaValidation", "permissionDecision", "timeout", "audit"]

context_builder:
  role: "决定模型本轮能看到什么"
  must_have: ["systemRules", "userTask", "retrievedChunks", "memory", "tokenBudget"]

eval_runner:
  role: "判断一次改动是进步还是退化"
  must_have: ["caseSet", "promptVersion", "retrieverVersion", "diffReport"]

真正的学习闭环是:概念 -> 工程对象 -> 可运行接口 -> trace 证据 -> eval 回归。只停在概念解释,容易觉得自己懂了;能把它写成对象、接口、失败样本和评测,才算进入工程阶段。

12 周里程碑

gantt
    title Java 后端转 Agent 12 周路线
    dateFormat  YYYY-MM-DD
    section 基础闭环
    LLM API / Streaming      :a1, 2026-07-05, 14d
    Tool Calling / Security  :a2, after a1, 14d
    section 知识与协议
    MCP Server               :b1, after a2, 14d
    Obsidian RAG             :b2, after b1, 14d
    section Agent 化
    Workflow / Memory        :c1, after b2, 14d
    Trace / Eval / Deploy    :c2, after c1, 14d
周期主线必交付
1-2LLM API + Prompt + Streaming可运行 Chat API,带日志
3-4Tool Calling + 安全边界3 个工具,带权限和审计
5-6MCP只读 Notes MCP Server
7-8RAGObsidian 问答,带引用和拒答
9-10Workflow + Memory学习计划 Agent,状态可复盘
11-12Trace + Eval + Deploy固定评测集,debug report,演示 README

主项目拆解

flowchart TD
    PKA["Personal Knowledge Agent"] --> Knowledge["知识层<br/>Notes Indexer / RAG Q&A"]
    Knowledge --> Runtime["运行层<br/>MCP Server / Learning Planner"]
    Runtime --> Feedback["复盘层<br/>Memory Store / Trace Eval"]
    Feedback --> Product["可持续学习产品"]

验收门槛

能力验收问题合格标准
LLM API连续问 20 个问题是否稳定无崩溃,有错误提示,有耗时/token 日志
Tool Calling工具参数错时会怎样拒绝执行,返回结构化错误
MCP能否读取指定笔记只能读白名单目录,不能越权
RAG问笔记里没有的问题明确说资料不足,不编造
Workflow多步任务失败怎么办trace 可见,能降级或停止
Memory用户偏好变化怎么办能 update,不无限 append
Eval改 prompt 后怎么判断固定问题集对比新旧结果

先做什么

优先做一个闭环,不要先追复杂 Agent:

  1. Spring Boot 写 /chat/chat/stream
  2. search_notesread_note 两个只读工具。
  3. 把 Obsidian 的 技术栈/AI Agent 建成最小索引。
  4. 回答必须带来源路径。
  5. 保存每轮 trace。
  6. search_notes / read_note 暴露成 MCP。
  7. 做 20 个固定问题的 eval。

判断是否真正学会

如果系统能完成下面这件事,说明路线走通:

用户问:“我有 Java 后端基础,怎么继续学 Agent?”

系统必须:

  1. 读取本目录路线笔记。
  2. 检索相关 AI 工程基础和项目清单。
  3. 生成分阶段路线。
  4. 给出引用来源。
  5. 创建本周任务。
  6. 记录 trace。
  7. 支持通过 MCP 让其他 Agent 调用这个能力。

这不是一个“回答”,而是一个完整 AI Agent 工程闭环。