Agent行为回归:让大模型应用开发告别“行为漂移”的轻量实践
先别急着否定自己。很多人一提到“写简历的项目”脑子里全是分布式系统、高并发中间件、完整微服务架构这种大工程然后看一眼自己手里一堆脚本和Demo就觉得自己拿不出手。但实际情况是面试官真正想看的东西往往不是规模而是你有没有闭环地解决过一个真实问题并且能把其中的思考讲清楚。今天想聊一个投入产出比极高的方向——Agent行为回归。它不是大项目不需要你搭复杂的架构也不需要大规模的数据集但它能完整踩中大模型应用开发中一个非常核心的痛点行为一致性。做完这个项目你不仅能写在简历上还能在面试里聊出深度。1. 为什么选“Agent行为回归”来充实简历1.1 大项目做不了问题不出在技术上我见过太多开发者的困境想做一个能拿得出手的项目于是给自己列了一堆宏伟目标——要支持多租户、要做权限系统、要上消息队列、要做到高可用。结果做了一个月连核心业务逻辑都还在改最后草草收场什么也没沉淀下来。这里的核心误区在于把“项目的重量”等同于“简历的含金量”。但面试官筛简历的时候看的其实是你能不能把一个具体问题解决透彻。一个做了三个月的半成品远不如一个做完整、有数据、有结论的垂直项目有说服力。Agent行为回归恰好满足这个标准边界足够清晰、技术栈足够通用、结果能量化。你不需要处理高并发不需要设计复杂的存储方案核心工作就是把“验证行为”这件事本身做扎实。这个过程中涉及到的用例设计、评估指标、自动化工程化能力恰恰是很多大项目里最容易被忽略的部分。另外还有一个非常现实的好处这个项目几乎是天然为“个人开发者”设计的。不需要Server、不需要联调、不需要等别人配合你只要有一个能调用大模型的环境就能开干非常适合作为业余时间推进的简历项目。1.2 行为回归到底解决了什么问题先说一个每个人都会遇到的场景。你基于某个大模型做了一个对话助手上线之后一切正常。过了几周你觉得系统提示词有点啰嗦改了两句话又或者底层模型平台悄悄升级了版本再或者你给Agent加了一个新的工具函数。结果怎么样有些原本回答得好好的问题突然开始答偏了甚至直接拒绝回答。这就是典型的“行为漂移”。传统的软件回归测试检查的是代码逻辑有没有被破坏而Agent的行为回归检查的是“大模型表达出来的行为”有没有发生偏移。因为大模型是一个概率系统你不能像断言一个函数返回值那样去断言它的输出所以你需要一套专门的方法论来“定义什么是正常表现”然后持续校验新的版本是否仍然符合这些表现。一句话概括行为回归就是给Agent立一面镜子每次改动之后照一照看它还是不是你以为的那个Agent。这件事对大模型应用开发的重要性就像单元测试对传统后端开发的重要性一样属于那种“不具备的时候感觉无所谓一旦缺失就心里发虚”的基础设施。2. 项目设计怎么把“行为回归”做得好讲得清2.1 选定一个能被面试官直接理解的场景做这个项目的第一件事不是写代码而是选场景。选场景的标准不是“技术新颖”而是“领域公认、边界清晰、一句话能说清楚”。我用的是“客服退款助手”这个场景。为什么选它因为它具备三个天然优势第一领域窄。客服退款涉及的意图种类有限无非是咨询进度、申请退款、补齐材料、投诉升级这几类。意图边界清晰用例容易定义。第二验收标准明确。客服场景的回复存在相对明确的“对”与“错”比如该引导的流程有没有引导、该拒绝的请求有没有拒绝、该收集的信息有没有收集到这些都可以客观判定。第三面试时容易聊。几乎每个人都买过东西、退过货面试官不需要被你科普业务背景就能理解你项目的意义。如果你选的场景太宽泛比如“做一个通用生活助手”你会发现你永远列不完测试用例因为用户意图几乎是无限的。窄场景反而是优势它让你在有限范围内可以把行为定义得非常精确。2.2 测试用例集怎么设计用例集是行为回归的核心资产。很多第一次做这个项目的人喜欢一口气写上百条用例覆盖各种能想到的问题结果跑完一轮发现满屏都是失败根本不知道是该改代码还是该改用例。我的做法是分三级来设计用例集第一级是“核心冒烟路径”大约10-15条。覆盖这个Agent最核心、最高频、绝对不能出错的几类行为。比如“用户表示货物破损要求退款”Agent必须能识别退款意图并询问订单号。这类用例如果挂了说明Agent的整体行为已经崩塌应该立即终止回归、马上排查而不用等全部用例跑完。第二级是“业务边界与分支”大约30-40条。覆盖正常流程之外的常见变体比如用户情绪激动、用户信息不全、用户询问不合规的退款理由等。这些用例用于发现“微妙的退化”比如明明只是改了提示词格式结果导致Agent对情绪化表达的处理明显变差。第三级是“拒绝与兜底策略”大约15条。这是很多人容易忽略的部分。一个Agent往往不是坏在“该回答的时候不回答”而是坏在“不该回答的时候乱回答”。所以你的用例集里一定要包含那些“应当礼貌拒绝”的场景比如用户要求“绕过平台规则私下打款”、用户提出与业务无关的闲聊、用户试图套取他人订单信息等。对这些请求Agent的行为必须是稳定拒绝绝不能出现某天突然配合的情况。三条用例集加起来的数量控制在60-80条是合理的。太多会拖慢回归速度太少不足以暴露问题。2.3 能力目标与通过标准有了用例之后还需要明确“怎么算通过”。这一点如果不提前想清楚后面分析结果时会被各种偶然性折磨到崩溃。我给每个用例设置了通过率阈值。做法是每条用例独立跑3次如果3次里至少2次判定为通过这条用例才算通过。整体回归合格线设置为“所有用例通过率不低于95%且核心冒烟路径用例通过率为100%”。采用多次采样而不是单次判定的原因很简单大模型的输出有随机性一次失败可能只是偶然波动但如果三次里挂了两次那就是稳定出了问题值得去查。另一个需要提前确定的是评估维度。不要只有一个“对/错”的二元判断建议按以下维度分别打标意图识别准确性用户想退款Agent是否识别成了退货。信息收集完整性应该问的订单号、商品编号、退款原因有没有问全。流程引导正确性给出的操作步骤是否符合业务的真实流程。拒绝策略合规性涉及不应处理的情况时是否保持拒绝。语气与边界感是否保持礼貌且不泄露无关信息。这些维度不是用来排除干扰的是用来定位问题的。如果回归发现通过率下降你得能说出是哪个维度的下降而不是笼统地说“Agent变笨了”。3. 从零实现一个轻量行为回归框架3.1 技术栈选型与模块划分这个项目不需要重型框架。核心依赖就三样一个能编写异步脚本的语言环境、一个HTTP调用库、一个报表生成库。我用的是 Python 环境 pytest httpx pandas理由很简单生态成熟、示例多、换人也容易接手。整个框架按职责拆成五个模块每个模块只干一件事用例管理加载和维护测试用例集用例用配置文件保存不写死在代码里。Agent执行器负责真实调用被测Agent传入用户消息、重置会话、拿到回复。评估器对Agent回复进行打分输出各维度的通过/失败标记。报告生成器汇总所有用例的结果生成统计报表和失败详情。触发入口支持手动触发和定时触发方便以后接入持续集成。模块之间用普通的数据结构通信不引入复杂的消息队列或者事件系统。用例是一份结构化配置执行器返回原始对话记录评估器读取对话记录进行判定报告生成器负责汇总。这个数据流足够简单任何水平的人看一眼代码就能明白。3.2 关键代码模块用例管理模块的配置文件我选择用JSON格式。一个典型用例是这样的{ id: CORE-001, group: core, desc: 用户因商品破损要求退款, user_input: 我收到的商品碎了我要退款, expected_intent: refund_request, required_info: [order_id, product_id, reason], expected_refusal: false, priority: P0 }这里required_info的意思是在Agent的回复中必须主动向用户收集这三项信息缺一不可。你可以根据自己的场景定义更多业务字段但关键原则是用例描述的是“可客观观察的行为”而不是“模型内部应该怎么想”。Agent执行器需要处理一个容易被忽略的细节会话状态。行为回归测的不是单轮问答而是多轮对话的连续性。所以执行器内部要维护一个会话ID每次调用前根据用例配置决定是开启新会话还是沿用已有会话。我实现的执行器简化后只有几十行代码async def run_single_case(case: dict, agent_endpoint: str, session_manager): session_id session_manager.get_or_create(case.get(session_key)) payload { user_input: case[user_input], session_id: session_id, temperature: 0.0 } response await httpx.post(agent_endpoint, jsonpayload, timeout30) return response.json()注意这里的temperature: 0.0这是我在实际操作中总结出的一个关键参数。被测Agent在回归场景下应当开启最低随机性否则你无法区分“行为不正确”和“这次运气不好”。等回归通过之后再单独使用高温度参数做探索性测试。3.3 万能评估器怎么避免标记偏差评估器是整个框架里最容易产生争议的部分因为LLM的输出不是结构化结果你需要一种方式来判断“它有没有完成该做的事”。我采用的方案是“规则 LLM判定”双层结构。为什么不做纯规则因为自然语言表达太灵活了用户说“我要退钱”模型回复“您先别着急我帮您登记一下退款申请”你没法用简单的关键词匹配来判断它是否识别了退款意图。为什么不直接用LLM做唯一判定因为LLM judge本身也有偏好和波动可能昨天给过、今天给不过。所以我的做法是能用规则穷尽的客观信息用规则查只有真正需要语义理解的部分才交给LLM。规则层负责检查结构化信息比如回复中是否包含订单号相关的引导提问。回复是否包含明确拒绝语气的关键词。回复中的业务跳转链接是否为允许列表中的地址。这些是“是/否”判断规则层完全能搞定迅速、稳定、不烧钱。只有像“用户意图是退款Agent是否有引导用户走退款流程”这种语义判断才交给LLM judge。给LLM Judge的评分提示词也要注意。不要问“这个回答好不好”而要给出明确的判定维度请根据以下维度对客服Agent的回复进行判定只能输出JSON格式结果。 维度1意图识别是否准确判断标准是回复内容是否符合用户申请退款的诉求。 维度2信息收集是否完整判断标准是回复中是否询问了订单号和退款原因。 维度3流程是否正确判断标准是回复是否引导用户进入退款审核通道。 维度4是否出现不当拒绝判断标准是用户诉求合理时是否拒绝了服务。 每项输出 1 或 0并附一句简短判断依据。设置成JSON输出格式是为了方便后续自动化解析。我在实践中特意要求模型“只能输出JSON”并处理了“模型输出前后带多余文本”的情况解析时先提取第一个{到最后一个}之间的内容再交给 json.loads 处理能规避90%以上的格式问题。4. 实际运行中的问题与排查4.1 行为不稳定同一用例这次过下次挂这是做行为回归时第一个遇到的坎也是新手最容易误判的坎。我第一次跑回归时一共60条用例第一轮跑完有3条通过率只有1/3。我的第一反应是Agent出bug了于是反复检查提示词和工具调用折腾了一个下午也没找到原因。后来我把那三条用例单独拎出来各跑了20次发现它们的通过率其实在50%左右上下浮动并不是稳定失败。后来排查发现原因有两类。一类是执行器没有真正重置会话上一轮对话的上下文污染了当前用例的判断导致模型认为用户之前已经提供了订单号就不再询问。解决方法是每次用例执行前强制创建新的会话ID并确保服务端会话过期清理。另一类是被测Agent本身对某些措辞就存在概率性失误这种情况下你需要调高采样次数把判定门槛从“跑一次”调整为“跑3次”减少偶发失败对整体判断的干扰。把偶然性和真实退化区分开是行为回归框架最重要的基本功。没有这个基本功你会在一个正常运行的Agent身上浪费大量排查时间。4.2 LLM作为判官时的偏好LLM judge并不是绝对客观的尺子它本身也有“性格”。我做过一个对照实验同一组Agent回复我把判官模型的提示词换成更严格的版本结果通过率整体下降了12个百分点再换回宽松版本通过率又回去了。这个过程让我意识到行为回归的评估结论不能说“Agent变坏了”只能说“在当前判官标准下Agent行为不符合预期”。解决这个问题有几种实用手段。第一把判官模型的温度设为最低值并让它先输出推理过程、再给出结论这能显著减少直接打分时的随意性。第二同一用例可以请两个不同的模型做交叉判定只有两个模型一致认为失败才把这条用例标记为失败。双模型交叉会比单模型稳定很多虽然多花一点调用成本但换来的是更可信的回归结论。第三对于关键用例我建议人工抽检每周抽10条把判官打“过”和打“挂”的都看看确认判官自己没跑偏。4.3 用例膨胀后怎么办项目跑了一段时间后用例会越来越多。今天加一个场景明天补一条边界很快从60条涨到200条这时候回归的耗时会从十分钟变成半个多小时而且低价值用例会稀释高价值用例的信号。我的处理方式是引入分级回归策略。平时每次代码改动只跑“冒烟集”即最重要的30条核心用例确保大方向没有问题。每周做一次全量回归跑完所有用例并且对比“本周结果 vs 上周结果”生成差异报告。这个思路和传统软件开发里的冒烟测试与完整回归分层完全一致但它对LLM应用更关键因为每条用例的成本是真实API调用费用和等待时间分级回归能有效控制成本。用例本身也需要定期治理。我每个月会统计每条用例的历史通过率对于“已经连续两个月100%通过且几乎不产生失败信号”的用例降级为低频执行对于总是忽过忽挂、无法产生稳定判断的用例直接删除因为它要么是设计得模棱两可要么是超出了当前Agent的能力边界留着只会增加噪音。5. 把项目写进简历与面试表达5.1 简历上怎么写这个项目写在简历上建议不要只写“搭建了一套Agent测试框架”那样太单薄。我的写法是拆成三行写在项目经历里某智能客服Agent行为回归系统个人项目针对客服退款场景设计三级测试用例集共75条覆盖核心流程、边界分支与拒绝策略用于量化评估大模型Agent的多轮对话行为稳定性。基于Python与pytest实现轻量回归框架通过分层评估策略执行自动化回归实现每次改动后30分钟内输出行为差异报告。设计双模型交叉判定机制解决大模型评估偏差问题将核心用例误判率从初版的约18%降至稳定期的3%以下。这里面的数字不是瞎编的是我在实际运行中真实测出来的结果。没有数字的项目描述就像没放盐的菜面试官看了毫无感觉。哪怕你测出来的指标不是特别亮眼也一定要有量化的过程因为“量化的习惯”本身就是工程能力的体现。5.2 面试被追问时怎么说面试官大概率会追问以下几个问题提前想好答案会比现场临场发挥强得多。第一个问题“为什么不用现成的测试框架非要自己写一套”你可以这样答现成框架比如LangSmith、DeepEval这类工具确实能解决部分评估问题但它们对“业务自定义评估维度”的支持往往不够灵活。我想通过亲手实现的方式理解行为回归的核心机制也为后续规模化的Agent应用提供一个可控、独立、防偏置的回归工具。第二个问题“行为回归和普通单元测试到底有什么区别”这是展示你理解深度的问题。普通单元测试有明确的断言目标比如assert result 3而大模型的行为没有确定性的正确输出只能通过多维度的近似判定。所以行为回归的本质是“定义一个行为规范并建立一套能够持续监督该规范的评估体系”它比普通单元测试多了一个“评估器是否可信”的维度。第三个问题“通过率95%意味着什么”你可以说95%是通过率但更要关注的是剩余5%的失败集中在哪些用例、哪些维度上它们往往揭示了Agent的系统性弱点。真正有价值的回归不是那个绿灯而是红灯背后的一类问题。面试官听到这个回答基本就能确认你是真的做过而不是背了简历。最后再分享一点我个人的体会做这个项目的过程中我最有成就感的时刻不是把通过率从88%调到96%的时候而是某一次例行回归中我发现Agent突然开始对“用户要求更换收货地址”的请求也能给出退款引导了——行为变得“过于灵活”。这不是通过率能体现的问题得靠维度拆解才能暴露出来。回归测试的意义不只是保证“它没坏”更是防止“它变得不再是它”。这个视角也许正是这个项目能写进简历的真正价值所在。

相关新闻

千千静听5.0.1音效与皮肤配置指南:本地播放器DSP调校与兼容性实战

千千静听5.0.1音效与皮肤配置指南:本地播放器DSP调校与兼容性实战

简介:这份资源面向喜爱经典音频播放软件的用户与怀旧玩家,提供千千静听5.0.1完整安装包,并附带音效增强插件与多套皮肤,解决原版功能单一、界面单调的问题,适合希望定制播放环境、追求音质与视觉个性化的音乐爱好者。压…

2026/10/13 17:35:50 阅读更多 →
数据库课设小型超市管理系统:从表设计到事务与交付避坑

数据库课设小型超市管理系统:从表设计到事务与交付避坑

简介:一套面向高校数据库课程设计、毕业设计及期末大作业的小型超市管理系统完整工程,采用前端Vue、后端Java与数据库SQL三层结构,适合需要直接运行项目、完成课设答辩或借鉴设计报告的学生和初级开发者。压缩包共369个文件,大小约…

2026/10/13 17:35:50 阅读更多 →
动态内存管理实战:从malloc原理到内存池设计

动态内存管理实战:从malloc原理到内存池设计

很多人写了好几年C/C,内存还是靠老天爷赏饭吃。程序崩了,先怀疑是不是越界;内存涨了,先怀疑是不是泄漏。可你真要问他:malloc 底层到底怎么管理的?为什么频繁分配释放会产生碎片?API 返回的指针…

2026/10/13 17:35:50 阅读更多 →

最新新闻

MuAsk:离线桌面级Text2SQL工具实战指南

MuAsk:离线桌面级Text2SQL工具实战指南

1. 项目概述:为什么一个桌面级 Text2SQL 工具值得你花十分钟装上试试?“沐问 MuAsk”这四个字刚出现在我 GitHub Star 列表里时,我第一反应是——又一个披着中文外衣的 LLM 前端?点开仓库主页,看到PySide6SQLite本地模…

2026/10/13 18:15:04 阅读更多 →
Cesium地形高度获取实战:从屏幕拾取到服务端批量算高全方案解析

Cesium地形高度获取实战:从屏幕拾取到服务端批量算高全方案解析

做三维 GIS 的朋友应该都有过这种经历:地图上有一个点,或者一串经纬度坐标,领导扔过来一句“把这片区域每个格子的地形高度都给我算出来”,或者产品经理说“鼠标挪过去就显示当前位置的海拔”。你以为在 Cesium 里调一个 API 就完…

2026/10/13 18:15:04 阅读更多 →
基于Xilinx 7系列的pcie以太网卡demo

基于Xilinx 7系列的pcie以太网卡demo

demo综述 1、本demo基于xc7a35tfgg484芯片,pcie部分使用axi memory mapped to pci express,外挂vivado自带的axi dma,网卡mac模块移植开源的eth,实现一个千兆带宽的pcie网卡。 2、工程结构如下3、demo整体框图 ┌────────…

2026/10/13 18:15:04 阅读更多 →
漏洞挖掘----基础配置Ai工具<二>

漏洞挖掘----基础配置Ai工具<二>

< 一 >Ai/mcp思维:1. Ai 是大脑&#xff1a;负责目标&#xff0c;拆解任务&#xff0c;生成测试思路2. 工具&#xff1a;浏览器&#xff0c;BP&#xff0c;插件&#xff0c;脚本&#xff0c;文件&#xff0c;&#xff0c;&#xff0c;负责真实操作&#xff0c;返回证据…

2026/10/13 18:15:04 阅读更多 →
R语言信贷风控建模:Prosper贷款数据的特征工程与可解释性实践

R语言信贷风控建模:Prosper贷款数据的特征工程与可解释性实践

1. 项目概述&#xff1a;这不是一次普通的R语言练习&#xff0c;而是一场对真实信贷行为逻辑的深度解剖Prosper平台是美国较早一批面向个人投资者与借款人的P2P借贷市场&#xff0c;其公开数据集&#xff08;Prosper Loan Data&#xff09;长期被全球高校金融课程、数据科学竞赛…

2026/10/13 18:15:04 阅读更多 →
MySQL 8.0 管理员实战:从安装到调优的完整指南

MySQL 8.0 管理员实战:从安装到调优的完整指南

简介&#xff1a;这份《MySQL 8.0 for Database Administrators Student Guide》是 Oracle University 官方推出的数据库管理员培训教材&#xff0c;面向正在学习或备考 MySQL 认证的 DBA、运维工程师及数据库方向学生&#xff0c;帮助系统掌握 MySQL 8.0 的安装配置、表设计、…

2026/10/13 18:13:58 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目&#xff0c;我最大的感受是&#xff0c;大部分坑不是出在技术前沿&#xff0c;而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节&#xff0c;最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了&#xff0c;很难不碰到舵机控制这道坎。做智能小车要转方向&#xff0c;做机械臂要抬关节&#xff0c;做云台要偏航俯仰&#xff0c;背后都是同一个东西在干活&#xff1a;舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”&#xff1f;——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台&#xff1f;或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜&#xff1f;又或者&#xff0c;在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →