多轮对话逻辑连贯性测试实战:从状态记忆到自动化回归
如果你负责过任何一个虚拟助理项目一定见过这种场面单轮测试通过率接近满分一开多轮对话就原形毕露。用户先问“企业版套餐能开多少个子账号”紧接着又问“那它能用多少人脸识别并发”系统把“它”理解成了“人脸识别服务”。这不是某个模型调参能解决的问题而是多轮对话逻辑连贯性根本没有测透。去年我在某智能客服项目里接手的就是这块测试从用例设计到自动化回归踩了不少坑也沉淀出一套能落地的打法。这篇文章就把完整过程写出来给正在做虚拟助理、客服机器人或任务型对话系统的朋友做个参考。1. 从一次翻车现场说起多轮逻辑连贯性到底“连”的是什么1.1 连贯性不是一种感觉是三个可测量能力很多人一提“多轮对话逻辑连贯性”就觉得是玄学——模型输出看起来“顺不顺”而已。但作为测试人员我们必须把它翻译成可拆解、可验证的东西。我在项目里把它拆成三个能力第一状态记忆。用户上一轮说过的时间、地点、产品类型、业务诉求这一轮系统是否还记得是否被正确写入会话状态。第二意图和槽位的跨轮更新。用户中途改口、否定、补充条件时系统能否识别这是对旧信息的修正而不是开启一个完全独立的对话。第三话题推进与回切。用户插入一个临时问题之后还能不能回到原来的任务主线上继续。这三个能力一旦拆开就能落到具体测试点。比如“用户说我要订后天去北京的机票系统问几点用户回答上午十点”这个用例的验证点就是系统返回航班时目的地必须是北京日期必须是后天时间必须是上午十点三个信息不能丢任何一个。逻辑连贯性就是这种“逐轮核对状态”之后的结果。提示我建议团队里所有涉及对话模块的人先统一一个定义多轮对话测试的本质是验证“每一轮结束后的对话状态”是否与用户真实意图一致。这样后续写用例、做评审、定指标大家才不会各说各话。1.2 单轮测试为什么测不出连贯性问题大多数团队的NLU评测都是单轮的给一句query输出意图和槽位跟标准结果算准确率。这种评测把“对话”硬生生拆成了“检索”每一轮都是独立考题。但真实用户不会这么说话。一个最经典的例子用户说“帮我查一下”。这句话在单轮评测里根本没法判定——它可能指“查余额”也可能指“查工单进度”完全取决于上文。单轮评测可以假装这句话意图不明但多轮系统必须结合上下文推断出来。同样“那副卡呢”如果当成独立请求来解析系统只能懵掉只有结合上文“主卡剩余流量”才能正确解析成“查询副卡剩余流量”。所以单轮测试的分数再高也只能证明“模型在孤立句子上表现不错”完全不能证明“系统能维护一场对话”。我见过有项目单轮F1做到95%以上真机一测多轮用户重复问三遍同样的问题系统每次的回答都不一样因为状态早就乱了。1.3 翻车根因归类别把锅都甩给“模型”做了一段时间多轮测试后我把失败的case归成了四大类每一类对应不同的修复路径调模型只是其中一条路根因类别典型表现修复方向状态丢失上一轮已确认的信息这一轮被清空或覆盖检查状态管理组件、会话存储结构状态混淆新信息被错误关联到旧实体上检查槽位填充逻辑、实体共指消解指代消解失败“这个套餐”“它”等指代词无法绑定上文实体NLU层加共指消解或对话策略层补充候选对话策略死板用户已提供信息系统仍反复追问调整填槽策略、话术确认节奏这套归类表后来成了整个测试工作的地基。后续所有发现的bug第一件事就是丢进这四类里。如果某一类连续一两周占比都超过40%基本可以判断是系统层面需要重构而不是临时加几个训练语料能解决的。2. 测试用例骨架把“连贯性”拆成可构造、可判定的多轮场景2.1 一段合格的多轮用例要包含哪些要素很多测试同学写多轮用例就是随便编几段对话塞进Excel毫无章法。我的做法是把每段多轮用例当成一个小剧本必须包含五个要素初始用户目标明确用户想完成什么任务比如“查上个月话费明细”。需要逐步收集的关键槽位比如用户身份、时间范围、接收方式。至少一个跨轮记忆信息这个信息必须在前一轮出现后一轮被隐式引用。至少一个干扰项改口、否定、临时插入话题、模糊指代四选一。可判定的成功终点明确“这场对话做到什么状态算通过”。举一个我在项目里实际用的例子。用户先说“我要查一下上个月的话费明细”系统应确认用户身份和接收方式用户拿到结果后说“顺便把发票也开了”系统应当在当前用户、当前账单的上下文中处理开票请求而不是把它当成一个孤立的单轮任务。这个用例的验证点就是开票请求是否自动带出了“上个月话费”这个上下文对象。2.2 从真实聊天记录提用例别拍脑袋刚开始我们直接从产品文档构思用例写出来的对话文绉绉的测试结果也好看但一放到真实环境就崩。后来改了方法从用户会话日志里提场景。流程是这样拉取最近三个月的高频会话记录人工标注“中断点”——用户在哪一轮开始重复表达、在哪一轮开始不耐烦、哪一轮系统给出了明显不相关的回答。再把标注出来的真实对话轨迹改写成“语义级别”的测试脚本去掉真实姓名、电话等敏感信息最后做参数化扩展。比如日志里有用户说“我没说改主卡我说的是改副卡”这就是一个典型的改口修正场景我们把它参数化成“我没说改A我说的是改B”A和B可以替换成不同的业务对象。这种用例带着真实用户的说话习惯不是产品经理想象出来的对话跑起来命中率极高。2.3 五类必测场景少一类都不踏实我根据实际经验和行业里常见的多轮对话失败案例整理出五类必测场景。每一类都建议至少覆盖到才算基本完整的连贯性测试集场景类别核心验证点示例一句话跨轮槽位累积前一轮信息在后一轮不能被清空“我要订后天去北京的机票”“上午十点的”“请推荐上午十点北京出发的航班”指代消解“它”“这个”“那家”能否绑定上文实体“短信套餐里的流量用完了这个套餐还能继续用吗”改口与否定新指令能否正确覆盖旧槽位“我要改到明天”“算了还是后天吧”话题切换与回切插入问题结束后能否回到主任务先查流量再问“网厅几点下班”然后说“继续查流量”长上下文记忆超过十轮后关键信息是否仍然有效前面说过“企业版”十轮后问“这个版本能开多少子账号”长上下文是很多团队最容易漏的。大家测试都喜欢3—5轮解决问题但真实用户经常说着说着岔开又绕回来。我建议专门准备一组10—15轮的用例中间故意插入两三轮无关话题重点看系统能不能在新话题结束后重新定位到原任务状态。3. 执行过程中最容易踩的三个坑以及怎么复现和定位3.1 坑一跨轮槽位“张冠李戴”的完整排查链路自动化回归跑到一个用例时出现了很诡异的结果用户先查询主卡当月剩余流量系统正常返回了接着问“那副卡能共享主卡的流量吗”系统直接回答“副卡当月剩余流量为0”。表面上这像是状态丢失问题但排查下来根本不是。我当时走了完整链路来定位第一步把第二轮的用户请求和系统响应单独抓出来确认系统确实答了“副卡剩余流量为0”。第二步调出该会话的对话状态快照发现“查询对象”字段在第二轮被错误绑定成了“副卡编号”。第三步追NLU阶段的解析结果发现系统把“副卡能共享主卡流量吗”识别成了“查询副卡流量余额”意图粒度错了而不是状态管理错了。第四步查训练语料发现“共享”“转赠”这类流量共享意图几乎没覆盖于是这句话被归到了最相似的存量意图上。这个case说明一个问题很多连贯性bug的根因不在状态管理而在上游NLU已经解析错了。如果你只盯着“状态有没有存住”去查永远查不出来。排查多轮问题一定要从头到尾看一遍“NLU解析结果→状态更新结果→策略选择结果→话术输出结果”这四个环节缺一环都可能被表象骗过去。注意遇到“驴唇不对马嘴”的回答先查NLU原始返回的意图和槽位再查状态管理器接收到的内容。我之前见过有测试同事排查了一整天状态覆盖问题最后发现是解析结果本身就是错的状态管理器背了黑锅。3.2 坑二指代消解失败单发一句根本测不出来“这个套餐能开多少个子账号”是一句看起来很正常的查询但如果你把它放到单轮测试里系统会直接回“请选择具体套餐”因为缺少“这个套餐”的指代对象。可是在多轮场景下用户上一轮明明已经明确说了“企业版套餐”系统此时回答“请选择具体套餐”就显得非常傻。复现这种问题有个小技巧同一句query分别放在不同上文语境下跑结果对比。比如“这个套餐能开多少个子账号”上文是企业版套餐系统应该绑定企业版上文是个人版套餐系统应该绑定个人版。如果两个语境下系统回答完全一样说明共指消解根本没有生效。定位之后修复路径通常有两条。一条是在NLU层引入共指消解模型另一条是在对话策略层做兜底——当检测到“这个”“该”“它”等指代词且当前没有明确实体时自动使用最近一次会话中出现的业务实体作为候选。实际项目中后者见效更快先兜底再慢慢优化模型。3.3 坑三话题切换后回不到主任务用户问“我上个月账单是多少”系统给出了账单信息用户又问“公司今年春节福利政策是什么”系统回答之后用户说“继续”。系统这时如果彻底忘了账单查询这件事就开始胡扯或者反问“您要继续什么”整个任务就废了。这个问题在行业里叫插入式话题interruption本质上是对话管理器对“话题栈”的维护不够。正确的处理方式应该是主任务查询账单压栈插入问题查询福利政策压栈福利问题回答完出栈回到栈顶的账单查询任务。如果系统没有话题栈机制插入问题之后就只能开新对话。我在测试时专门设计了一组“绕路”用例让用户每两轮就插入一个别的问题然后说“刚才那个事情继续”。这类用例跑下来哪些系统有话题栈、哪些没有一目了然。如果你的系统没有话题栈这个用例应该被优先级提到最高因为它直接影响真实用户在办事场景下的体感。3.4 通用定位方法状态快照对比与逐轮回放多轮用例失败后定位速度决定了测试效率。我现在不管用什么手段测试都会要求系统在接口层暴露一个调试接口每一轮对话结束返回完整的对话状态。状态里至少包含当前意图、已填槽位、待确认列表、话题栈。跑用例时每轮把状态打出来做成快照。失败之后把“预期状态”和“实际状态”逐字段diff几秒钟就能定位到哪一轮、哪个字段出了问题。举个状态快照的示意{ intent: query_balance, slots: { account_type: main, time_range: last_month }, pending_confirm: [], topic_stack: [query_balance] }如果第三轮结束后的快照里account_type意外变成了sub但用户原话并没有提到副卡那问题一定出现在第二轮到第三轮之间的更新逻辑里。如果快照一切正常但输出话术不对那就是策略层或话术生成层的问题。这个思路把“感觉不对”变成了“准确定位”建议所有做对话测试的朋友都用起来。4. 自动化回归与人工探索测试怎么搭配合适4.1 自动化脚本把用例变成可重复执行的“剧本”多轮测试最忌讳只靠手工点一遍。人工测一遍要十分钟还要记住上下文一天下来根本覆盖不了多少场景。我选了一个相对轻量的做法把对话API封装好用例写成YAML用一个执行器逐轮回放并做断言。YAML的好处是产品同学和算法同学都能看懂不需要会写代码。一段用例大概长这样- user: 我要查上个月的流量 expect: intent: query_flow slots: account_type: main time_range: last_month - user: 那副卡呢 expect: intent: query_flow slots: account_type: sub time_range: last_month - user: 副卡能不能共享主卡流量 expect: intent: query_share_policy ref_entity: main_flow执行器每一轮把用户文本发给对话接口取回响应和状态快照跟预期字段做比对。字段对不上就在第几轮中断输出实际状态。这样一套用Python写不超过两百行却能支撑几百条多轮用例的回归。提示断言不要只比对话术文本一定要比对状态字段。话术文本会经常改状态字段才是多轮逻辑的真正落脚点。只断言话术会导致“回答有点不同就报错”误报率高到没法用。4.2 人工探索测试测自动化想不到的场景自动化用例覆盖的是“我们想得到的场景”但真实用户总能想出你没想到的路径。所以人工探索测试不能省重点方向我总结成四个随机插入话题聊着聊着突然问个完全无关的问题再回原话题。故意不说全槽位用户不按系统设定顺序提供信息甚至一句话同时包含两个槽位。分次改口先说A再说B再说“还是A吧”。模拟着急用户不等系统回答完就打断连续发两条消息。做探索测试的时候我习惯用一张记录表每发现一个问题就记录发生轮次、用户输入、系统响应、一致性判断依据、严重级别。举个例子探索测试中用户说“我忘了等下我上个月到底改过套餐没有”这需要系统先理解用户要查询“历史操作记录”再判断“上个月改套餐”这个行为是否存在。系统如果直接反问“您是要改套餐吗”这就是答非所问至少是个P1问题。人工探索测试和自动化回归不是替代关系。自动化保证已知问题不复发探索测试负责发现新问题。新问题一旦确认就沉淀成YAML用例补充进自动回归集。这是两条腿走路的状态。4.3 评估指标口径要统一否则测试结果全是口水测试做完总不能只说“感觉比之前好”。我用了五个指标来量化多轮逻辑连贯性每个都定义清楚计算方式任务完成率用户在最终轮的目标是否被正确完成完成计1未完成计0。状态正确率对用例中每一轮的关键槽位做比对正确槽位数除以总槽位数。指代消解准确率把用例中含有指代关系的子集单独抽出来计算指代绑定正确的比例。平均重问率统计系统“请再次提供XX”这类话术出现的轮次数除以总轮次。越高说明系统越容易忘事。平均完成轮数同一任务目标下系统成功完成所需的平均轮数。面向任务型虚拟助理在保证正确的前提下轮数越少越好。举个例子一套100条用例每条平均5轮总轮次500。如果其中有30轮出现“请再次提供您的账号”重问率就是30/5006%。这个数字如果版本迭代后从6%涨到了12%基本可以断言状态管理回退了即便任务完成率看起来没太大变化。注意任务完成率是滞后指标它只能说明“最终到底成功没有”不能暴露“中间折腾用户多少回”。重问率和状态正确率才是敏感指标建议上线前重点盯这两项。5. 从测试结果反推产品优化一套可持续运转的工作流5.1 失败case归一化与优先级排序每周测试跑完我会把所有失败case归到前面说的四个根因类别里出一张分布表。比如某一周的数据根因类别占比影响面NLU意图粒度问题40%高导致状态被错误更新状态管理问题30%高跨轮信息丢失指代消解失败20%中特定句式下触发对话策略死板10%中体验问题然后按严重程度排优先级P0是会话明显答非所问或业务信息错误必须立刻修P1是关键槽位丢失或指代错乱导致流程无法推进P2是业务能完成但话术绕路、重复追问P3是个别生僻场景可排期处理。这套优先级直接作为给研发和产品排期的依据比“感觉这个体验不好”有说服力得多。5.2 发布前的用例集分级策略用例多了之后不能每次发布都跑全量。我按投入产出比分了三层冒烟集10条覆盖注册、登录、主业务查询、下单等最核心链路每天跑。发布集50条覆盖高频真实场景包含改口、指代、话题回切等中等复杂用例每次版本发布前跑。全量回归集200条以上包含历史所有发现过的bug用例每周或每双周跑一次。版本改动不同选择的侧重点也不同。如果改动的是NLU模型重点跑意图和槽位相关用例如果改动的是对话管理器重点跑跨轮状态和话题栈用例。这样可以避免每次都全量跑降低了反馈周期。5.3 测试反哺设计一个状态字段引发的重构最有价值的一次经历不是发现了多少个bug而是通过一次测试结果倒推了一个设计缺陷。某次回归时发现用户先说“帮我改一下收货地址”系统问“改成什么”用户答“改成公司”系统又问“那原来的地址还保留吗”用户答“保留那个也别删”。这个“也别删”场景系统当场就处理错了把新地址覆盖了旧地址。排查后发现对话状态里只有一个“地址”字段新值一写入旧值就没了。对多轮对话来说用户常常需要同时维护“当前值”和“历史值”。后来我们把单个槽位改成了“槽位历史”结构支持保留上一轮的值这类case才能稳定通过。这个案例给我的体会是多轮对话测试不只是找bug它还能帮你发现底层状态设计是不是太简单。如果你的系统出了这种“覆盖型”问题别急着补语料先想想状态字段本身够不够用。最后再分享一个小习惯。现在每接入一个新对话场景我都会先做一件事把上个月的客服工单或用户反馈里所有提到“又说了一遍”“它怎么不记得了”“刚不是说了吗”这类抱怨全翻出来挑三条最疼的写成回归用例确认它们能稳定跑过再做别的。这比任何方法论都管用——逻辑连贯性测得好不好最终还是要回到真实用户到底有没有少说一遍废话。

相关新闻

AR视频巡检落地实践:从人工巡检到智慧运维的完整复盘

AR视频巡检落地实践:从人工巡检到智慧运维的完整复盘

干运维这行的朋友应该都有同感:巡检这件事,看起来简单,做起来全是细节。一群人拿着纸质的或者Excel表格的设备清单,按路线走一圈,看仪表、听声音、摸温度、填记录,回到值班室再手工录入系统。整个过程依赖个…

2026/10/18 19:25:21 阅读更多 →
校园网毕业设计:基于ENSP的拓扑规划与高可用配置实践

校园网毕业设计:基于ENSP的拓扑规划与高可用配置实践

基础设施选型与拓扑架构的心得做校园网类毕设,最容易犯的毛病就是一上来就堆设备。见过不少同学把核心层用三层交换机、汇聚层堆三层、接入层也全三层,结果整张拓扑光设备就二十几台,配置起来自己都兜不住。ENSP里设备种类就那么多&#xff0…

2026/10/18 19:25:21 阅读更多 →
ZYNQ软硬协同实战:FFT频谱分析与打地鼠游戏设计调试

ZYNQ软硬协同实战:FFT频谱分析与打地鼠游戏设计调试

简介:一套基于Xilinx Zynq-7000系列SoC的双项目实战资料,专为FPGA嵌入式课程设计、数字系统综合实践及竞赛备赛人员准备,集成FFT频谱分析与打地鼠交互游戏两个完整可运行的工程方案。压缩包共83个文件,以VHDL工程源码(…

2026/10/18 19:25:21 阅读更多 →

最新新闻

CentOS下BIND域名解析配置实战:从正向/反向解析到故障排查

CentOS下BIND域名解析配置实战:从正向/反向解析到故障排查

1. 项目概述:CentOS下的域名解析配置到底要做什么第五个年头做Linux运维,最常见的需求之一就是“帮我把域名解析配置上”。这句话在上线部署、内网服务联调、测试环境搭建里反复出现。尤其是新买了一台CentOS服务器,业务程序部署完了&#xf…

2026/10/19 4:48:02 阅读更多 →
select与poll深度剖析:从原理到实战,理解I/O多路复用核心机制

select与poll深度剖析:从原理到实战,理解I/O多路复用核心机制

早几年我刚入行做服务端开发的时候,接手了一个老项目,核心网络模块就是拿select写的。那时候我并没有多想,只觉得它把我从"一个连接一个线程"的泥潭里捞了出来,代码也能跑,线上也没啥大问题。直到后来自己写…

2026/10/19 4:48:02 阅读更多 →
Kafka集群部署实战:从单节点到高可用配置全解析

Kafka集群部署实战:从单节点到高可用配置全解析

1. 部署前的思维准备:Kafka 到底是怎么跑起来的很多人在第一次接触 Kafka 安装部署时,习惯直接上网搜一条命令复制粘贴,结果不是版本对不上,就是启动报一堆看不懂的异常。我在最开始踩坑时也这样,后来花了很长时间把 K…

2026/10/19 4:48:02 阅读更多 →
open-code-review实践:构建高效透明的代码审查流程

open-code-review实践:构建高效透明的代码审查流程

1. open-code-review 的命名背后:它到底在表达什么理念我第一次看到 open-code-review 这个项目名时,第一反应是:这不就是把 code review 加了个 open 前缀么?但真把这几个词拆开琢磨一遍,会发现事情没那么简单。它在工…

2026/10/19 4:48:02 阅读更多 →
图像缩放插值算法选型:从最近邻到边缘定向,MATLAB实现与性能对比

图像缩放插值算法选型:从最近邻到边缘定向,MATLAB实现与性能对比

简介:这份毕业论文以数字图像缩放技术为研究主题,面向图像处理学习者与电子信息类本科毕业生,系统介绍了数字图像采集、存储、处理与分析的基本流程,并重点剖析最近邻插值、双线性插值、双三次插值等经典算法,通过MATL…

2026/10/19 4:48:02 阅读更多 →
代码审查自动化实践:open-code-review规则引擎与CI集成详解

代码审查自动化实践:open-code-review规则引擎与CI集成详解

1. 为什么我要折腾一个叫 open-code-review 的东西先交代一下背景。我一直在维护一个十几人的研发团队,代码审查这件事从我开始带队伍起就断断续续做过很多轮,但说实话效果一直不稳定。团队的 Code Review 流程一开始用的是最原始的方式:提 P…

2026/10/19 4:47:01 阅读更多 →

日新闻

频率跟踪型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/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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 阅读更多 →