主动式智能体架构设计与工程实践:从感知到决策的完整落地指南
1. 从被动应答到主动出击智能体设计的核心思路拆解聊到智能体大部分人脑子里蹦出来的第一反应还是你问它答——不管是客服机器人、代码补全工具还是各种对话助手本质上都是被动等待指令。你不动它不动。这种模式用久了你会发现一个很别扭的地方明明很多事情是可以提前预判、提前处理的为什么非要等我开口这就是主动式智能体要解决的核心问题。它不再是一个坐在角落里等你喊话的工具而是一个能感知环境变化、判断时机、自主发起动作的执行体。打个比方被动式智能体像餐厅里的服务员你招手他才过来主动式智能体更像一个经验丰富的私人助理看到你会议快迟到了会提前提醒发现你邮件里有个紧急需求会主动帮你起草回复。我最初接触这个概念的时候第一反应是这不就是定时任务加个AI吗。实际动手之后才发现远没那么简单。定时任务是死板的——每天早上九点发一封日报不管有没有内容可发。主动式智能体需要的是动态判断能力什么时候该动、动什么、动到什么程度、动完之后怎么评估效果这一整套链路都得跑通。1.1 为什么现在这个时间点值得做三个条件同时成熟了。第一大模型的推理成本降到了可以接受的范围你让一个模型每隔几分钟做一次决策判断费用不再是天文数字。第二工具调用生态基本成型智能体要动手就得有手——搜索、读写文件、发请求、操作数据库这些接口现在都有标准化的调用方式。第三事件驱动架构在工程侧已经非常成熟消息队列、Webhook、流式处理这些基础设施拿来就能用。这三个条件缺一个主动式智能体都只能停留在论文里。现在能落地了所以值得认真研究。1.2 和传统自动化方案的本质区别很多人会把它和IFTTT、Zapier这类自动化工具做对比。表面上看确实像——都是触发条件执行动作的结构。但本质区别在于决策层的智能程度。传统自动化的触发条件是硬编码的收到邮件→提取附件→存到网盘。每一步都是确定性的。主动式智能体的触发条件可以是模糊的、需要推理的感知到用户情绪可能不太好→判断是否需要主动安抚→选择合适的沟通策略→执行并观察反馈。这个链条里每一步都涉及概率判断和上下文理解。我自己的经验是不要把主动式智能体当成传统自动化的替代品而是当成它的超集。确定性高的任务继续用传统自动化确定性低、需要判断的任务交给智能体。两者配合使用整体系统的稳定性反而更高。2. 主动式智能体的核心架构与关键组件2.1 感知层智能体的五官怎么搭感知层决定了智能体能看到什么。这一步的设计直接影响了后续所有环节的质量。我见过不少项目在这里偷懒只接了一个消息队列就开始跑结果智能体对外部世界的变化几乎无感知跟被动式没什么区别。一个完整的感知层至少应该包含三类输入源环境状态变化系统指标、日志异常、数据更新、文件变动等。这类信号通常通过事件流或轮询获取。时间维度信号不仅仅是定时触发还包括距离上次交互过了多久某个截止时间是否临近这类时间感知。用户行为信号用户的活跃状态、操作频率、最近的行为模式变化等。这三类信号汇入一个统一的事件总线由感知层做初步的过滤和优先级排序。注意过滤这一步非常关键。如果你把所有信号都丢给推理层成本会爆炸而且大量噪音会干扰判断。我的做法是设置一个轻量级的规则引擎做第一层筛选只有通过筛选的信号才进入推理层。实操心得感知层的信号去重很容易被忽略。同一个事件可能从多个源重复上报如果不做去重智能体会对同一件事反复做出反应用户体验极差。建议在事件总线上加一个基于事件指纹的去重窗口窗口大小根据业务场景调整通常30秒到5分钟比较合理。2.2 推理决策层什么时候该主动这是整个系统最核心也最难调的部分。推理决策层要回答三个问题现在要不要行动如果要做什么做到什么程度我一开始的想法很简单让大模型看当前上下文输出一个决策就行。实际跑起来发现两个问题。一是决策频率和成本的平衡——你不可能每秒都调一次大模型但间隔太长又会错过最佳时机。二是决策的一致性——同样的场景模型可能这次决定行动下次决定不动飘忽不定。后来我采用了一个分层决策的架构第一层是规则触发器处理确定性高的场景。比如检测到服务器错误率超过阈值就直接触发告警流程不需要大模型参与。这一层覆盖了大约60%的场景响应快、成本低、行为可预测。第二层是模型推理器处理需要判断的模糊场景。这里的关键是给模型提供足够的上下文——不只是当前事件还包括历史交互记录、当前系统状态、用户偏好等。上下文的质量直接决定了决策质量。第三层是冷却与抑制机制。即使模型判断应该行动也要检查最近是否已经执行过类似动作。没有这一层智能体会变成过度热情的骚扰者。2.3 执行层从决策到落地的最后一公里执行层看起来简单——决策说做什么就做什么。但实际上这里的坑不少。最大的问题是执行失败后的处理策略。主动式智能体的执行往往没有人工监督失败了如果没人知道可能造成严重后果。我的方案是给每个执行动作定义三个属性可逆性、影响范围、失败重试策略。可逆且影响小的动作可以直接执行失败了记录日志即可。不可逆或影响大的动作要么需要人工确认要么需要设计补偿机制。举个例子智能体判断需要给某个用户发送一条通知。发送通知这个动作是可逆的可以撤回或发更正影响范围可控只影响一个用户所以可以直接执行。但如果智能体判断需要修改数据库里的某条记录这就属于不可逆操作必须先经过确认流程。2.4 反馈闭环让智能体越用越聪明没有反馈闭环的主动式智能体就是一个定时炸弹——它会一直按照初始设定行动不管效果好坏。反馈闭环的作用是让系统能够评估自己行动的效果并据此调整策略。反馈信号可以来自多个渠道用户的直接反馈点赞、忽略、投诉、间接行为变化用户是否因为这次主动行动而改变了行为、系统指标变化主动干预后指标是否改善。这些信号回流到决策层作为后续判断的参考。我自己的做法是维护一个行动效果评分表每次主动行动后记录效果定期做聚合分析。如果某类行动的效果持续不佳就自动降低其触发权重甚至暂时禁用。3. 实操落地从零搭建一个主动式智能体的完整过程3.1 环境准备与技术选型先说技术栈的选择。这部分没有标准答案取决于你的团队技术背景和业务场景。我分享一下我自己的选型思路。编程语言方面Python是首选。生态最丰富大模型相关的SDK基本都优先支持Python调试也方便。如果你的系统对性能要求极高可以考虑Go或Rust做执行层Python做决策层两者通过消息队列通信。大模型方面我建议至少准备两个模型一个能力强的做复杂决策一个轻量级的做高频的简单判断。这样可以在成本和效果之间取得平衡。具体的模型选择要看你的场景——需要长上下文理解的选上下文窗口大的需要快速响应的选推理速度快的。事件总线用什么都行Kafka、RabbitMQ、Redis Streams都可以。如果团队已经有现成的基础设施直接复用就好没必要为了这个项目单独搭一套。存储层需要三类关系型数据库存配置和状态向量库存历史交互的语义索引对象存储存日志和快照。3.2 感知模块的具体实现感知模块的核心是一个事件采集器加一个信号处理器。采集器负责从各个源拉取或接收事件处理器负责清洗、去重、优先级排序。# 事件采集器的核心逻辑示意 class EventCollector: def __init__(self, sources): self.sources sources self.dedup_window {} # 去重窗口 def collect(self): raw_events [] for source in self.sources: events source.poll() raw_events.extend(events) return self._deduplicate(raw_events) def _deduplicate(self, events): unique [] now time.time() for event in events: fingerprint event.get_fingerprint() if fingerprint in self.dedup_window: if now - self.dedup_window[fingerprint] 300: continue # 5分钟内重复跳过 self.dedup_window[fingerprint] now unique.append(event) # 清理过期指纹 self.dedup_window { k: v for k, v in self.dedup_window.items() if now - v 300 } return unique这段代码的关键在于事件指纹的设计。指纹不能太细否则同一个事件的不同表述会被当成不同事件也不能太粗否则不同事件会被误判为重复。我的经验是指纹应该包含事件类型、来源、核心实体标识这三个要素时间戳和具体描述可以忽略。信号处理器负责给事件打优先级标签。优先级判断可以基于规则也可以基于模型。我建议先用规则跑起来积累足够的数据后再考虑用模型优化。3.3 决策引擎的搭建与调优决策引擎是整个系统的大脑。我采用的是规则模型的混合架构前面已经提到了分层思路这里展开说一下具体实现。规则层用简单的条件判断就行不需要复杂的规则引擎。一个配置文件定义触发条件代码里读取配置做匹配。这样做的好处是修改规则不需要改代码运营人员也能参与调整。# 规则配置示例 rules: - name: 高优先级告警 condition: event_type: system_alert severity: critical action: immediate_notify cooldown: 600 # 10分钟内不重复触发 - name: 用户沉默提醒 condition: event_type: user_inactive inactive_duration: 3600 last_interaction_sentiment: positive action: gentle_check_in cooldown: 86400 # 24小时内只触发一次模型层的调用需要注意几个细节。Prompt的设计要包含当前事件描述、相关历史上下文、可用动作列表、约束条件。输出格式要强制结构化方便后续解析。超时处理要设置合理的超时时间超时后走降级策略通常是不行动。调优过程中我发现一个反直觉的点给模型更多的上下文并不总是更好。上下文太长会导致模型注意力分散决策质量反而下降。我的做法是先用一个轻量级模型做上下文筛选只把最相关的信息喂给决策模型。3.4 执行模块与安全护栏执行模块的设计原则是最小权限最大可观测。智能体只应该拥有完成其任务所需的最小权限同时每一个执行动作都要有完整的日志记录。安全护栏方面我设置了四道防线第一道是动作白名单。智能体只能执行预先定义好的动作不能自由发挥。这防止了模型幻觉导致的意外操作。第二道是频率限制。每个动作类型都有频率上限超过上限自动进入待审核队列。第三道是影响评估。执行前评估动作的影响范围超过阈值的需要人工确认。第四道是回滚机制。对于可逆动作保留回滚能力发现异常可以快速恢复。注意安全护栏不是越严越好。太严了智能体什么都做不了失去了主动的意义。我的经验是初期可以严格一些随着对系统行为的信心增加逐步放宽限制。但频率限制和动作白名单这两道防线建议始终保留。4. 实际运行中遇到的典型问题与排查技巧4.1 智能体过度主动怎么治这是最常见的问题。智能体刚上线的时候因为缺乏对用户偏好的了解往往会做出过多主动行为导致用户反感。我遇到过一个典型案例智能体检测到用户有段时间没登录就主动发了一条提醒消息。用户没理。过了两小时又发了一条。用户还是没理。然后智能体判断用户可能没看到又发了一条。结果用户直接把这个功能关掉了。排查这个问题的思路是回溯决策链路。我当时的做法是把智能体的每一次决策日志都完整记录下来包括输入信号、推理过程、最终决策。回看日志发现问题出在冷却机制上——冷却时间设置得太短而且没有考虑用户未响应这个信号。修复方案是引入响应感知的冷却机制。如果上一次主动行动没有得到任何响应下一次的冷却时间指数级延长。第一次冷却1小时第二次2小时第三次4小时以此类推。同时设置一个上限超过上限就暂停主动行为等待用户主动交互后再恢复。4.2 决策不一致的根因分析同一个场景智能体有时候行动有时候不行动这种不一致性会让用户觉得系统不靠谱。根因通常有三个一是模型输出的随机性即使temperature设得很低也不能完全消除。二是上下文差异两次决策时喂给模型的上下文不完全一样。三是规则冲突多条规则同时匹配执行顺序不确定。针对第一个问题我的做法是对关键决策做多次采样投票。同一个决策请求发给模型三次取多数结果。这会增加成本但只用在关键决策上整体成本可控。针对第二个问题需要确保上下文的标准化。每次决策前把上下文按照固定模板组装避免因为格式差异导致模型理解偏差。针对第三个问题规则引擎需要定义明确的优先级和互斥关系。我的做法是给每条规则一个优先级数值冲突时高优先级胜出。同时定义互斥组同一组内的规则不会同时触发。4.3 性能瓶颈的定位与优化主动式智能体对响应时间的要求比被动式高。被动式智能体慢几秒用户可能感觉不到但主动式智能体如果决策太慢可能就错过了最佳行动时机。常见的性能瓶颈和优化方向瓶颈位置典型表现优化方向事件采集事件积压处理延迟增加消费者优化去重算法上下文组装决策前等待时间长预加载常用上下文异步组装模型推理单次决策超过5秒模型量化请求批处理缓存常见决策执行动作动作执行超时异步执行超时降级反馈回流效果评估滞后流式处理反馈信号实时更新评分我自己的经验是大部分性能问题出在上下文组装环节。因为这一步涉及多次数据库查询和API调用很容易成为瓶颈。优化方法是把上下文分成热数据和冷数据热数据常驻内存冷数据按需加载。4.4 常见问题速查表问题现象可能原因排查步骤解决方案智能体完全不主动规则未触发/模型判断不行动检查规则匹配日志查看模型决策输出调整规则阈值优化prompt主动行为过于频繁冷却机制失效/信号重复检查去重窗口查看冷却配置修复去重逻辑延长冷却时间决策结果不稳定上下文不一致/模型随机性对比多次决策的输入输出标准化上下文增加投票机制执行动作失败权限不足/接口超时查看执行日志和错误码补充权限增加重试和降级用户反馈负面行动时机不当/内容不合适分析用户反馈和行动记录调整触发条件优化行动内容5. 主动式智能体的应用场景与扩展方向5.1 适合落地的典型场景不是所有场景都适合做主动式智能体。我总结了一个简单的判断标准如果这个场景里提前行动比等待指令能带来明显价值那就适合。几个我实际验证过效果不错的场景运维监控是最容易落地的。系统指标异常时主动排查、主动修复、主动通知这套逻辑天然适合主动式架构。而且运维场景对误报的容忍度相对较高智能体有试错空间。客户服务是价值最高的。在用户还没投诉之前就发现潜在问题并主动联系能大幅提升满意度。但这个场景对准确率要求极高误判的代价很大需要非常谨慎地设计安全护栏。个人效率助手是最复杂的。因为每个人的偏好差异很大智能体需要大量学习才能做到恰到好处的主动。我建议这个场景先从单一任务做起比如邮件分类、日程提醒跑通了再扩展。内容推荐其实也是一种主动式智能体。只不过大部分推荐系统是你打开APP我才推荐真正的主动式推荐应该在合适的时机主动推送合适的内容。这个场景的关键是时机判断。5.2 从单智能体到多智能体协作单个智能体的能力边界很明显——它只能感知自己接入的信号源只能执行自己拥有的动作。当场景变复杂时自然就需要多个智能体协作。多智能体协作的核心问题是任务分配和冲突解决。我的做法是设置一个协调者角色负责把任务拆解并分配给合适的智能体同时处理智能体之间的冲突。协调者的实现可以很简单——一个规则引擎根据任务类型路由到对应的智能体。也可以很复杂——用模型做动态的任务规划和分配。我建议从简单的开始遇到瓶颈再升级。5.3 持续迭代的实用建议主动式智能体不是一次性的项目而是需要持续迭代的系统。我自己的迭代节奏是每周回顾一次行动日志每月做一次效果评估每季度调整一次策略配置。回顾行动日志的时候重点关注三类案例效果特别好的、效果特别差的、以及决策过程特别纠结的。好的案例提炼成规则差的案例分析根因纠结的案例优化上下文和prompt。效果评估要有量化指标。我用的指标包括主动行动采纳率、用户满意度变化、问题提前发现率、误报率。这些指标不需要很精确但要有趋势可看。最后分享一个我踩过的坑不要试图一次性把所有场景都覆盖。我最初想做一个全能助手结果每个场景都做得不深效果很差。后来收缩到只做运维告警这一个场景做深做透反而效果很好。跑通一个场景之后再把经验复制到其他场景成功率会高很多。这个方向后续还可以往个性化自适应的方向扩展——让智能体根据每个用户的历史反馈自动调整自己的行为策略真正做到千人千面的主动服务。不过这需要积累足够的数据前期还是先把基础能力打磨好。

相关新闻

Java 17调用图像识别API的响应解析与边界控制

Java 17调用图像识别API的响应解析与边界控制

1. 标题里的“Responses图像输入”到底指什么——先破除一个普遍误解很多人看到“Java 17调用Responses图像输入”,第一反应是:这是不是某种新出的Java图像处理API?或者是不是Spring Boot里某个叫Responses的响应类突然支持了图片上传解析&am…

2026/10/12 20:45:25 阅读更多 →
个人微信二次开发如何校验客户长期摘要?WechatApi 防止AI多次压缩后逐渐偏离真实聊天

个人微信二次开发如何校验客户长期摘要?WechatApi 防止AI多次压缩后逐渐偏离真实聊天

官网友情链接 wechatapi.net AI 微信机器人为了降低上下文成本,通常会给客户生成长期摘要。 例如: “客户来自杭州,关注产品A,价格敏感,曾有一次登录问题。” 下次客户再来时,AI不需要重新读取几千条历史…

2026/10/12 20:45:25 阅读更多 →
Python实现船舶碳排放数据驱动优化:聚类分析与回归预测全流程

Python实现船舶碳排放数据驱动优化:聚类分析与回归预测全流程

简介:面向计算机相关专业毕业设计、课程设计及期末大作业场景,是一套基于机器学习的船舶碳排放数据驱动优化分析系统完整工程。项目代码经导师指导并认可,评审分高达99分,运行环境配置简单,即使基础薄弱的学习者也可直…

2026/10/12 20:45:25 阅读更多 →

最新新闻

第6章:Spring AI 2.0 ChatClient 门面

第6章:Spring AI 2.0 ChatClient 门面

上章思考题答案 用户原话里的 {orderId} 若放进 SystemPromptTemplate 再渲染,StringTemplate 会把它当成变量。缺这个键时,ValidationMode.THROW 抛 IllegalStateException,正常咨询被拒绝。用户原话应走 UserMessage 或 ChatClient.user&a…

2026/10/14 0:03:43 阅读更多 →
【车载定位】基于扩展卡尔曼滤波 EKF,分别利用 TDOA、AOA 以及 TDOA+AOA 融合观测,搭配近恒速 NCV / 近恒位置 NCP运动模型对车辆轨迹估计附Matlab代码

【车载定位】基于扩展卡尔曼滤波 EKF,分别利用 TDOA、AOA 以及 TDOA+AOA 融合观测,搭配近恒速 NCV / 近恒位置 NCP运动模型对车辆轨迹估计附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和数学建模资料 &…

2026/10/14 0:03:43 阅读更多 →
人工智能期末复习:用习题集构建考点地图,高效备考不挂科

人工智能期末复习:用习题集构建考点地图,高效备考不挂科

简介:这份资源汇集人工智能课程各章小结与经典习题解答,适合正在系统学习人工智能基础、准备期末考试的本科生或自学者使用。内容覆盖人工智能的概念与发展阶段、研究学派与研究领域、知识与知识表示(谓词逻辑、产生式规则、框架、语义网络&a…

2026/10/14 0:03:43 阅读更多 →
wandb-core 中的 Wire 依赖注入:从贡献指南到 go:generate 自动装配实战

wandb-core 中的 Wire 依赖注入:从贡献指南到 go:generate 自动装配实战

机器学习深度学习数据可视化可观测性 【免费下载链接】wandb The AI developer platform. Use Weights & Biases to train and fine-tune models, and manage models from experimentation to production. 项目地址: https://gitcode.com/gh_mirrors/wa/wandb 点…

2026/10/14 0:03:43 阅读更多 →
微博评论文本情感分析:从数据清洗到三模型对比的完整实践

微博评论文本情感分析:从数据清洗到三模型对比的完整实践

简介:面向毕业设计场景,资源围绕微博评论文本情感分析,完整覆盖支持向量机、朴素贝叶斯与AdaBoost三种机器学习算法的建模流程,适合计算机相关专业本科生用于课程设计或毕业设计参考。压缩包共70个文件,约6.05MB&#…

2026/10/14 0:03:43 阅读更多 →
小型超市仓库管理系统

小型超市仓库管理系统

小型超市仓库管理系统选题背景与意义 随着我国城镇化进程的不断推进以及居民消费水平的持续提升,小型超市作为连接城市社区与消费者的重要商业节点,在日常生活中的作用日益凸显。尤其是在一二线城市周边的居民区、城乡结合部及中小城镇,小型超…

2026/10/14 0:02:42 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#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/13 22:01:27 阅读更多 →
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 阅读更多 →