Java工程师转型Agent Engineer的认知重构与工程实践
1. 为什么“Java工程师转型Agent Engineer”不是一次技术换岗而是一场认知重构我带过不少从传统后端转AI工程方向的开发者其中Java背景的占了将近四成。他们普遍带着一个很实在的困惑我已经能写高并发订单系统、能调优JVM、能设计分布式事务为什么现在要重学一套完全不同的东西甚至有人第一周就卡在“Agent到底是不是个新线程”这种问题上——这恰恰暴露了最根本的认知断层Agent Engineer不是Java工程师加了个AI模型调用接口而是把“系统思维”切换为“目标驱动的协作式推理流思维”。这个转变的底层动因不是赶风口而是工程范式的迁移。过去十年Java生态的核心价值在于“确定性交付”输入明确、路径清晰、边界可控。一个Spring Boot服务启动后HTTP请求进来经过Controller→Service→DAO每一步都可追踪、可压测、可回滚。但Agent系统完全不同。它面对的是模糊目标比如“帮我分析这份财报里隐藏的风险点”依赖多步非线程安全的LLM调用中间穿插工具调用、记忆检索、自我反思整个执行链路是概率性的、状态漂移的、不可完全复现的。你写的不是“代码”而是“引导大模型思考的提示协议”和“协调异构能力的调度逻辑”。所以24周计划的第一周我坚决不让你碰任何Agent框架。我们先做三件事第一用Java写一个极简版的“人工Agent”——就是用if-else模拟一个客服对话流程强制你手写状态机、记录上下文、判断意图跳转第二把这段代码改造成能调用本地小模型比如Ollama跑Phi-3的版本观察输出的不确定性如何破坏你原有的控制逻辑第三对比阅读LangChain-Java和Spring Cloud Gateway的源码启动流程你会发现前者核心是Chain和Tool的注册与编排后者是Filter和Route的链式拦截——前者在组织“思考路径”后者在组织“数据管道”。这个对比不为教你怎么用框架而是让你亲手撕开两套范式的肌肉纹理。很多Java工程师转型失败不是败在不会写Prompt而是败在潜意识里还用“事务一致性”的标准去要求Agent。比如看到Agent调用搜索工具后返回了无关结果第一反应是“查日志看是不是网络超时”而不是“检查当前步骤的Prompt是否约束了结果格式”。这种惯性比语法更难改。所以24周里每周开头都有一个“认知校准练习”比如第三周的主题是“放弃原子性幻想”我们会故意构造一个Agent任务让它同时处理“查询股价”和“生成投资建议”两个子目标然后人为注入一次工具调用失败观察你本能想加重试机制还是重构目标分解逻辑。答案没有对错但你的第一反应暴露了你离Agent思维还有多远。提示别急着抄GitHub上的Agent Demo。那些能跑通的Demo90%都隐藏了关键妥协——比如把复杂目标拆成固定三步、用硬编码规则过滤LLM输出、或者干脆把“反思”环节注释掉了。真正的难点从来不在“怎么让Agent动起来”而在“当它动歪了你怎么知道它歪在哪又该怎么掰正”。2. Java工程师的天然优势与致命陷阱从JVM内存模型到Agent状态管理Java工程师转Agent Engineer最大的红利不是你会写Java而是你对“状态”有刻进骨子里的敬畏。想想你调试过多少次OutOfMemoryError优化过多少次GC停顿在Java世界里状态即生命状态失控系统崩溃。这个直觉在Agent开发中会成为你碾压纯Python背景开发者的降维武器——只要你能把它正确迁移。但问题就出在这个“正确迁移”上。Java里的状态管理核心是确定性生命周期对象创建→引用计数→GC回收每一步都在JVM监控下。而Agent的状态是跨模型、跨工具、跨轮次的概率性漂移体。比如一个金融分析Agent第一轮调用搜索工具拿到财报PDF第二轮让LLM提取关键数据第三轮基于数据生成图表——这三个步骤产生的中间状态PDF文本、结构化JSON、图表代码既不能放进JVM堆内存太大且需持久化也不能简单丢给Redis缺乏语义关联。更麻烦的是LLM每次输出都可能“幻觉”出不存在的数据字段导致下游步骤直接崩掉。所以24周计划的第5-8周我们专攻“Java式Agent状态治理”。不讲抽象理论直接动手改造Spring Boot应用用Spring State Machine重写Agent工作流引擎把每个Agent步骤定义为State工具调用结果作为Event触发状态迁移。这样你熟悉的WithStateMachine注解就能管住Agent的“思考节奏”避免LLM胡乱发散。把LLM输出解析封装成自定义Validator借鉴Hibernate Validator思路为每个工具返回的JSON Schema写Valid校验注解。当LLM返回{revenue: 增长强劲}这种非数字字段时校验器自动抛出ConstraintViolationException而不是让下游计算崩溃。用MicrometerPrometheus监控Agent“思考健康度”不只是统计QPS而是埋点记录“单次目标完成率”“工具调用失败重试次数”“反思环节触发频次”。这些指标在Java后端里叫“业务黄金指标”在Agent里就是你的“认知健康报告”。但这里有个Java工程师最容易踩的坑过度设计状态持久化。我见过有人用ShardingSphere分库分表存Agent对话历史结果发现90%的查询都是按session_id查最近3轮——这完全可以用Caffeine本地缓存TTL解决。Agent状态管理的黄金法则是“能不落盘就不落盘能本地缓存就不走Redis能用内存引用就不序列化”。因为LLM调用本身就有延迟再叠加上数据库IO整个Agent响应会慢到失去交互意义。我们在第7周会做一场压力测试用JMeter模拟100并发Agent请求对比“全量存MySQL”和“仅存关键决策点到Redis”两种方案的P99延迟结果往往让人大跌眼镜——后者延迟降低63%而数据丢失风险几乎为零。注意别迷信“Agent Memory”这类概念。很多框架文档把它包装得像JVM Metaspace一样神圣其实生产环境里95%的Agent记忆需求用一个带LRU淘汰的ConcurrentHashMap就能搞定。真正的挑战从来不是“怎么存”而是“存什么值得存”。3. 从Spring Boot到Agent RuntimeJava生态的平滑迁移路径很多Java工程师看到LangChain-Java文档第一行“Add dependency”就立刻去改pom.xml结果两周后卡在“为什么Tool执行完没触发下一步Chain”。这不是框架问题而是你没看清Java Agent生态的真实定位它不是要取代Spring而是要在Spring的躯体里植入Agent的神经中枢。理解这点才能避开90%的集成陷阱。我们24周计划的第9-12周核心就是构建一个“Spring Boot原生Agent Runtime”。不推荐你从零造轮子但必须亲手把主流组件缝合成自己的运行时。具体怎么做分三步走第一步用Spring WebFlux替代传统MVC接管Agent的异步流传统RestController处理HTTP请求是同步阻塞的但Agent执行是典型的“长耗时多阶段回调”。比如一个招聘Agent要①解析JD文本→②搜索简历库→③比对技能匹配度→④生成面试建议。如果用RestTemplate串行调用用户要等全程结束才看到结果。而WebFlux的Mono/Flux天然适配这种链式异步流。我们在第10周会重写一个简历分析Agent用Mono.fromCallable()封装LLM调用用flatMap()衔接工具调用最后用doOnNext()注入实时进度推送通过SSE推送给前端。这样用户能看到“正在解析JD…已匹配32份简历…生成建议中…”体验提升立竿见影。第二步把Spring Security变成Agent的“权限路由器”Java工程师最熟悉Security但很少想到它能管Agent。比如一个企业内部Agent不同角色能调用的工具必须隔离HR只能查员工档案财务只能看报销数据。这时Spring Security的PreAuthorize就派上大用场。我们在第11周会实现一个动态权限校验器当Agent准备调用searchEmployeeTool时拦截器自动检查当前用户JWT里的scope字段如果没包含employee:read直接返回403并让Agent生成友好提示“您暂无权限查看员工信息请联系管理员开通”。这比在每个Tool里写if判断优雅太多。第三步用Spring Boot Actuator暴露Agent健康指标运维Java服务时/actuator/health是你每天必看的页面。Agent系统更需要这个。我们在第12周会给Agent Runtime添加自定义Endpoint/actuator/agent/status返回当前活跃Agent实例数、平均思考延迟、工具调用成功率/actuator/agent/traces返回最近10次Agent执行的完整Trace ID关联到Jaeger/actuator/agent/config动态刷新Agent的Prompt模板和工具配置这个设计的精妙在于它让Agent运维回归Java工程师最熟悉的领域。当线上Agent突然变慢你不用去翻LangChain日志直接curlhttp://localhost:8080/actuator/agent/status看到tool_call_failure_rate:12%立刻知道是搜索工具超时了而不是怀疑LLM模型有问题。提示别被“Agent Framework”这个词吓住。LangChain-Java本质就是一套工具注册中心执行链编排器它的核心类Tool和Chain完全可以当成Spring的Component和Service来理解。你缺的不是新知识而是把旧知识映射到新场景的翻译能力。4. 实战攻坚用Java重写一个生产级Agent——从电商客服到智能导购前面12周都在打地基现在进入真正检验功力的阶段。24周计划的第13-20周我们要用纯Java技术栈从零实现一个电商场景的智能导购Agent。不追求炫技只聚焦三个生产级刚需意图精准识别、多源数据协同、异常安全兜底。这个项目会贯穿后续所有技术点每一步都对应真实业务痛点。项目起点为什么电商客服Agent最容易失败我看过某大厂的客服Agent上线报告首月35%的工单仍需人工介入。根因不是LLM不够强而是三个Java工程师最擅长却常被忽略的细节意图识别失焦用户说“这件衣服退不了”Agent只识别出“退货”意图却忽略了“退不了”这个关键否定态直接跳转退货流程引发客诉。数据孤岛割裂商品库存、用户历史订单、促销活动规则分散在不同微服务Agent调用时序错乱比如先查库存再查优惠但优惠规则变更后库存已售罄。兜底逻辑真空当LLM生成“建议用户联系人工客服”时没做情感安抚话术也没提供快捷入口用户直接流失。所以我们的智能导购Agent从第一天就反着设计第13周用Java NLP库重构意图识别引擎放弃纯Prompt方案用OpenNLP训练一个轻量级意图分类器。重点不是准确率而是可解释性。当模型把“衣服退不了”判为“退货”时我们能用getFeatureVector()方法看到它主要依据了“退”字的TF-IDF权重从而针对性增强“否定词”特征如“不了”“无法”“不能”。这个过程完全复用Java工程师熟悉的模型评估流程交叉验证、混淆矩阵、F1-score。第14-16周构建跨服务数据协同总线不直接调用各微服务API而是用Spring Cloud Stream Kafka建一个“Agent数据总线”。当Agent需要商品信息时向product-requestTopic发消息商品服务消费后把结构化数据含库存、价格、活动标签发回product-responseTopic。关键创新在于给每条消息加业务时效戳。比如促销活动数据标注valid_until2024-10-15T23:59:59ZAgent收到后自动校验时效性过期数据直接丢弃并触发重拉。这比在每个Tool里写时间判断更符合Java的“关注点分离”哲学。第17-20周设计三层兜底防御体系这才是Java工程师的主场L1模型层用Resilience4j配置LLM调用熔断器。当连续3次响应超时自动切换到备用小模型Ollama Phi-3保证基础服务能力不中断。L2逻辑层所有Agent输出强制经过ResponseSanitizer过滤器。用正则规则引擎Drools拦截敏感词、虚假承诺如“100%退款”、未授权操作如“帮您删除订单”。L3体验层当检测到用户情绪关键词“失望”“投诉”“找领导”自动触发EscalationHandler生成带工单号的安抚话术并在响应末尾插入“一键转人工”按钮链接。这个项目最终交付物不是一个Demo而是一个可接入现有电商中台的Spring Boot Starter。其他团队只需引入agent-shopping-starter配置几个Kafka Topic名就能获得智能导购能力。这才是Java工程师该有的交付姿势——不是炫技的玩具而是能嵌入生产流水线的工业级组件。注意别陷入“大模型越贵越好”的误区。我们在第19周做了AB测试GPT-4 Turbo vs. 本地Qwen2-7B针对电商FAQ场景后者在准确率上只低2.3%但响应延迟降低76%成本下降92%。生产环境里稳定性和成本永远优先于参数量。5. 从代码实现到工程落地Agent项目的发布、监控与持续演进写完一个能跑的Agent只是开始真正的挑战在上线后。24周计划的最后4周第21-24周我们彻底切换到SRE视角用Java工程师最熟悉的那一套工程方法论给Agent系统装上“生产级铠甲”。这里没有玄学全是实打实的监控指标、发布流程和演进策略。第21周Agent灰度发布协议——比Spring Cloud Gateway更细粒度的流量切分传统微服务灰度靠Header路由但Agent灰度需要更精细的控制。比如我们想让10%的用户使用新版“促销解读”Agent但要求这10%必须是近30天下单≥5次的高价值用户。这就需要把灰度规则下沉到Agent内部。我们在Spring Cloud Gateway里新增一个AgentRoutePredicateFactory解析请求中的用户ID调用风控服务查询用户等级再决定是否路由到新Agent集群。关键点在于所有灰度决策必须可审计。每次路由选择都记录到Elasticsearch字段包括user_id、route_decisionnew/old、decision_reason如“high_value_user”。这样当新Agent出问题5分钟内就能定位影响范围。第22周构建Agent可观测性三支柱Java工程师信奉“日志、指标、链路”三位一体Agent系统更要强化日志不用Logback默认格式定制AgentLogLayout强制在每条日志里注入agent_session_id、step_name、llm_model_used。这样查问题时grep一个session_id就能串起全部日志。指标除了常规QPS重点监控agent_thinking_cycles_per_request单次请求平均思考轮次。健康值应该在1.2-2.5之间超过3说明Prompt设计有问题低于1.1说明Agent过于机械。链路用SkyWalking自动注入Agent执行节点。特别要注意Tool调用的Span必须标注tool_typesearch/db/api和tool_latency这样一眼就能看出是LLM慢还是工具慢。我们在第22周会做一次故障演练手动将搜索工具延迟设为5秒观察监控大盘如何快速定位瓶颈——不是靠人肉翻日志而是看tool_latency_p99曲线飙升再下钻到tool_typesearch的Span详情。第23周Prompt版本化与A/B测试平台Prompt不是写完就扔的文本而是核心业务资产。我们用GitOps管理Prompt每个Prompt存为YAML文件目录结构按Agent类型划分/prompts/shopping/guide.yaml每次修改提PRCI自动触发测试用例用预置测试集跑一遍校验输出格式合规性。更重要的是把Prompt A/B测试做成Spring Boot Actuator Endpoint。运维人员访问/actuator/agent/abtest?promptguide_v2traffic15就能实时切15%流量到新Prompt结果自动上报到Grafana看板。这比让算法同学手动改配置快10倍且零出错。第24周建立Agent能力演进路线图最后一天我们不写代码而是画一张三年路线图短期0-6个月聚焦工具链完善把客服、导购、售后三大场景Agent覆盖率达100%错误率压到5%。中期6-18个月构建Agent能力市场让各业务线把自己封装好的Tool如“发票识别”“合同审核”注册进来形成可复用的能力池。长期18-36个月Agent从“执行者”升级为“协作者”能主动发起跨部门协作如发现用户投诉集中自动创建Jira工单并质量团队。这张图的意义是让所有参与者看清Agent不是一次性项目而是一套持续生长的工程体系。而Java工程师正是最适合搭建这套体系的人——因为我们懂如何让复杂系统稳定、可扩展、可维护。最后分享一个小技巧每次上线新Agent功能前先用JUnit写一个“人类验收测试”Human Acceptance Test。比如测试促销解读Agent就写一个测试用例输入“满300减50和折上95折哪个更划算”断言输出必须包含具体计算过程和最终结论。这个测试不跑在CI里而是由产品经理手动执行。它逼着你在代码里写清楚业务逻辑而不是依赖LLM的黑盒输出。这是我踩过最多次坑后总结出的最朴素真理。

相关新闻

UE4渲染源RenderSource实战:场景捕获、GPU回读与性能优化

UE4渲染源RenderSource实战:场景捕获、GPU回读与性能优化

前几天帮同事调一个“某跨平台系统”的画面问题,他在项目里接了三个 SceneCapture 做监视器画面,结果帧率直接掉了十几帧。打开 GPU 分析器一看,Capture 占的渲染耗时比主场景还高,而且他完全没意识到自己其实在重复渲染整个场景。…

2026/10/19 0:05:53 阅读更多 →
ImageJ/Fiji精准裁剪指定像素大小:单张、堆栈与批量处理全攻略

ImageJ/Fiji精准裁剪指定像素大小:单张、堆栈与批量处理全攻略

前阵子帮一位朋友整理一批显微成像数据,需求听起来非常简单:把几十张共聚焦图片里感兴趣的区域全部统一截成 512512 像素,后面要喂给某个网络模型。结果他组里的同学手动框了一下午,导出的图片尺寸五花八门,500486、51…

2026/10/19 0:04:52 阅读更多 →
IT就业难背后:结构性错位与破局之道

IT就业难背后:结构性错位与破局之道

先聊点实在的。这两年只要打开社交平台,输入“IT就业难”这几个字,满屏都是吐槽贴:应届生投了几百份简历石沉大海,工作五六年的开发说“裸辞三个月找不到下家”,还有转行培训机构出来的朋友抱怨“包装了三年经验还是被…

2026/10/19 0:04:52 阅读更多 →

最新新闻

ASP.NET MVC工作流管理系统源码解析:流程引擎与表单设计器实战

ASP.NET MVC工作流管理系统源码解析:流程引擎与表单设计器实战

简介:这是一套基于ASP.NET MVC5开发的工作流管理系统源码,内置可视化流程设计器与表单设计器,适合正在从事OA办公、CRM客户关系或HR人事管理系统的开发者参考学习,也可作为掌握MVC架构与工作流引擎原理的实战范例。压缩包共约2000…

2026/10/19 0:52:08 阅读更多 →
Rocky Linux 8.5部署Jenkins:跨平台CI/CD与容器化构建实战

Rocky Linux 8.5部署Jenkins:跨平台CI/CD与容器化构建实战

在Rocky Linux 8.5上部署Jenkins,这件事听起来不算新鲜,但真要把流水线做到能支撑跨平台CI/CD、还能把容器化构建跑得又快又稳,很多人是踩了坑才回头补课的。我这套方案是在某制造企业的研发基础设施改造中一步步磨出来的,前后在虚…

2026/10/19 0:52:08 阅读更多 →
新华DCS组态文件与工程师手册深度解析指南

新华DCS组态文件与工程师手册深度解析指南

简介:本资源为新华DCS系统核心工程资料包,面向工业自动化领域初/中级系统工程师、DCS运维人员及高校控制类专业实践学习者,聚焦系统组态实施与现场调试能力提升。资源包含1份HTML格式的下载说明页(含返币规则与使用提示&#xff0…

2026/10/19 0:51:08 阅读更多 →
UCIe 2.0系统架构深度解析:从芯粒互连到多die管理机制

UCIe 2.0系统架构深度解析:从芯粒互连到多die管理机制

UCIe 2.0规范发布之后,我翻得最多的章节其实是系统架构,而不是物理层波形或者链路层的CRC细节。原因很简单:1.0版本可以用“多芯片串在一起的高速接口标准”来理解,但到2.0,UCIe已经变成一套能管理、能配置、能安全启动…

2026/10/19 0:51:08 阅读更多 →
网管系统交付必读:概述文档、北向接口与告警管理实战指南

网管系统交付必读:概述文档、北向接口与告警管理实战指南

简介:《NCE-T网管操作系统概述》是一份面向华为传送网/微波网管方向的技术文档,适合网络运维工程师、系统集成人员以及对5G承载、网络自动化和智能运维感兴趣的读者。内容围绕NCE-T与U2000的架构对比展开,说明NCE-T如何继承原有管理域与NBI接…

2026/10/19 0:51:07 阅读更多 →
MATLAB与OpenDSS输配电联合仿真:有载调压与馈线调节器协同案例

MATLAB与OpenDSS输配电联合仿真:有载调压与馈线调节器协同案例

简介:这套基于MATLAB与OpenDSS开发的输配电系统联合仿真平台,面向计算机、电子信息工程及数学等专业学生的课程设计、期末大作业与毕业设计,也适合电力领域初学者作为入门工具。平台支持MATLAB 2014、2019a及2024a等多个版本,借助…

2026/10/19 0:50:07 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →