news 2026/5/8 22:53:19

我想拍桌子,作为 Java 后端程序员,老板限我一天把 RAG 升级成 Agent

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
我想拍桌子,作为 Java 后端程序员,老板限我一天把 RAG 升级成 Agent

大家好,我是秃头哥,一名 Java 后端程序员,每天开心撸 CRUD、调 RAG 问答、搭 Spring Boot+Elasticsearch 知识库,本来安安稳稳过日子。

然后,今天突变…

老板直接把我叫到工位,甩下死命令

“咱们派聪明现在只能做 RAG 问答,你立刻马上给它升级成 Agent,要能自己 tool use、自己 ReAct 那种!限你一天搞定!

WC,WC,WC……

一天?你当 Agent 是装个插件就完事的?我当场就想甩脸反抗,说这根本不可能!

结果老板根本不懂技术,只知道市面上 “Agent” 满天飞,所有项目必须蹭 Agent 概念,反抗直接无效

我低声说:“老板,一天根本做不完,Agent 要工具调用、决策循环、记忆管理,很复杂……”

老板大声吼:“不会就学!招新不要钱吗?不想干就 G!”

想到上有老下有小,打工人只能低头

唉,只能硬着头皮猛猛干!

好在我之前肝过一个类似 Claude Code 的 Agent 项目 ——PaiCLI,从 ReAct 循环到 Chrome Devtools MCP 都跑通了,工具调用、决策循环、记忆管理全熟。

赶紧掏出Claude Code+DeepSeek V4 / Codex+GPT-5.5,开干!

先搞懂:派聪明 RAG 原本是啥?

基于Spring Boot 3.4 + Elasticsearch 8.10 + DeepSeek API的 RAG 知识库,核心流程就 4 步:

用户提问 → 混合检索 → 拼装上下文 → 大模型生成回答

整个问答入口在ChatHandler.java,关键方法是processMessage

public void processMessage(String userId, String userMessage, WebSocketSession session) { // 1. 拿到对话历史 List<Map<String, String>> history = getConversationHistory(userId); // 2. 混合检索:向量相似度 + BM25 关键词 List<SearchResult> results = hybridSearchService .searchWithPermission(userMessage, userId, 5); // 3. 把检索结果拼成上下文 String context = buildContext(results); // 4. 调 DeepSeek 生成回答,流式返回 deepSeekClient.streamResponse(userId, userMessage, context, history, chunk -> sendToWebSocket(session, chunk)); }

检索用的是HybridSearchService,策略是KNN 向量搜索 + BM25 重打分 + 权限过滤

public List<SearchResult> searchWithPermission(String query, String userId, int topK) { // KNN 向量搜索(30x 候选窗口)+ BM25 重打分 SearchResponse response = elasticClient.search(s -> s .index("knowledge_chunks") .knn(k -> k.field("embedding").queryVector(embedQuery(query)) .numCandidates(topK * 30).k(topK * 5)) .query(q -> q.bool(b -> b .should(textMatch(query)) .filter(permissionFilter(userId)) )), SearchResult.class ); return parseResults(response, topK); }

原来的致命问题:

用户说 “帮我把知识库里关于 Spring AI 的文档整理成一份摘要”,派聪明只能做一次检索然后把原文片段返回,不会判断、不会合并、不会结构化输出

这就是RAG 和 Agent 的根本区别

RAG 是被动问答;Agent 是主动决策加执行,能自己动手干活!

第一步:给 RAG 加上工具调用(Tool Calling)

原理:给大模型配一组 Tool,定义名称、功能、输入参数,让模型自己判断用哪个工具。

直接复用 PaiCLI 的ToolRegistry,注册4 个核心 Tool

  1. 1.search_knowledge:知识库文档搜索
  2. 2.generate_summary:摘要生成
  3. 3.submit_feedback:答案反馈
  4. 4.knowledge_stats:知识库统计

核心search_knowledge工具代码:

tools.put("search_knowledge", new Tool( "search_knowledge", "在知识库中搜索相关文档片段,返回最匹配的结果", createParameters( new Param("query", "string", "搜索关键词", true), new Param("topK", "integer", "返回结果数量,默认5", false) ), args -> { int topK = args.containsKey("topK") ? Integer.parseInt(args.get("topK")) : 5; List<SearchResult> results = hybridSearchService .searchWithPermission(args.get("query"), currentUserId, topK); return formatSearchResults(results); } ));

这一步干完,派聪明从 “只会答” 变成 “能主动干活”!

用户让整理 RAG 摘要,Agent 直接调用generate_summary,先搜再总结,输出结构化内容。

第二步:加上 ReAct 决策循环

ReAct = Reasoning + Acting,核心思想:思考该做什么 → 执行操作 → 观察结果 → 再思考下一步,直到任务完成。

PaiCLI 的Agent.java里核心逻辑约 100 行,靠while(true)循环驱动:

// 简化版ReAct循环 while (true) { // 1. 传入对话历史+工具列表,让大模型决策 ModelResponse resp = deepSeekClient.call(history, tools); // 2. 判断是否需要调用工具 if (resp.hasToolCalls()) { // 执行工具,把结果加入历史 ToolResult result = toolRegistry.execute(resp.getToolCalls()); history.add(buildToolMessage(result)); // 推送状态到前端 sendToolStatus(session, resp.getToolCalls().get(0).getName(), "executing"); } else { // 3. 无工具调用,直接返回最终答案 sendFinalAnswer(session, resp.getContent()); break; } // 预算控制:防止死循环 if (agentBudget.isExceeded()) break; }

真实任务流程示例:用户:帮我搜一下知识库里有没有 RAG 相关的文档,有的话整理成一份摘要。

  1. 1.第一轮:思考→调用search_knowledge搜 RAG
  2. 2.第二轮:观察有结果→调用generate_summary生成摘要
  3. 3.第三轮:任务完成→返回最终回答

关键兜底:设最大循环次数 + token 上限,不确定就问用户,不瞎调用工具!

第三步:加上 Memory 记忆管理

原来的对话只存最近几轮,跨会话就忘,升级双层记忆

  1. 1.短期记忆:管理当前任务上下文,token 超了就压缩早期对话为摘要
  2. 2.长期记忆:存 Redis,记用户偏好,跨会话也能记住

短期记忆:复用conversationHistory,token 超阈值则保留最近 3 轮,早期转摘要。

长期记忆:存入 Redis,key=ltm:{userId}:{timestamp},30 天过期,新会话自动注入。

第四步:Review + 测试,一天极限搞定

先用 Claude Code+Opus 4.7 做代码 Review,重点查:

  1. 1.ReAct 循环死循环风险
  2. 2.Tool 执行异常处理
  3. 3.WebSocket 线程安全
  4. 4.记忆持久化数据一致性

然后跑4 个核心测试用例,全量通过:

最后:这个项目怎么写进简历?

帮大家整理好简历直抄版,面试直接用:

项目名称:派聪明 AI 知识库(PaiSmart)

项目简介:基于 Spring Boot 3.4 + Elasticsearch 8.10 + DeepSeek API 的企业级 AI 知识库系统,从纯 RAG 架构升级为 Agent 架构。

技术栈:Spring Boot 3.4、Spring WebFlux、Elasticsearch 8.10、Redis 7.0、MinIO、DeepSeek V4 API、WebSocket

核心职责

  1. 1.构建混合检索引擎,KNN 向量 + BM25 重打分,问答召回准确率 92%
  2. 2.设计 Tool Calling 框架,注册 4 个核心工具,支持自主执行
  3. 3.实现 ReAct 决策循环,完成多步复合任务无人工干预
  4. 4.设计双层记忆架构,短期压缩 + 长期 Redis 持久化
  5. 5.基于 WebSocket 实时推送 Agent 思考与工具调用状态

打工人真心感慨:

谁懂啊,老板不懂技术乱提需求,一天极限升级 Agent,全靠之前的技术积累 + AI 工具硬撑!

等我技术再牛逼点,再也不接这种拍脑袋的紧急需求!

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/8 22:48:09

认知神经科学研究报告【20260035】

ForeSight 5.87.2 离散与连续极限测试报告 测试5&#xff1a;200变量离散极限 问题&#xff1a;200变量300子句3-SAT&#xff0c;子句/变量1.5&#xff08;相变区域&#xff0c;约50%可满足&#xff09; 方法&#xff1a;推理器子句约束→相位传导→涌现检测自动发现冲突模式→…

作者头像 李华
网站建设 2026/5/8 22:40:29

国产替代之NTMFS0D7N04XMT1G与VBQA1401参数对比报告

N沟道功率MOSFET参数对比分析报告一、产品概述NTMFS0D7N04XMT1G&#xff1a;安森美&#xff08;onsemi&#xff09;N沟道功率MOSFET&#xff0c;采用先进沟槽工艺&#xff0c;具有极低的导通电阻&#xff08;0.7mΩ max 10V&#xff09;和极高的电流能力&#xff08;323A&…

作者头像 李华
网站建设 2026/5/8 22:39:50

DS3906数字电位器特性与应用全解析

1. DS3906数字电位器核心特性解析DS3906是Maxim Integrated公司推出的一款三通道非易失性数字电位器&#xff0c;采用伪对数响应曲线设计。与传统的线性数字电位器相比&#xff0c;这种特殊响应曲线使其在小步进调节场景中展现出独特优势。该器件内置EEPROM&#xff0c;可在断电…

作者头像 李华
网站建设 2026/5/8 22:39:48

智能体管理系统架构设计:从容器化到消息队列的工程实践

1. 项目概述&#xff1a;从开源项目标题看智能体管理的核心价值 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“stainlu/openclaw-managed-agents”。光看这个标题&#xff0c;就能嗅到一股浓浓的“智能体管理”和“自动化”的味道。作为一个在自动化运维和智能体开发领…

作者头像 李华