能耗管理这件事过去十几年一直是“装表、抄数、做报表”的老三样真正能把节能措施落到实处的项目并不多。这两年大模型能力外溢到工业与建筑场景情况开始起变化同样是那批电表、水表、冷热量表的数据过去只能做事后统计现在可以做到提前预判、自动归因、给出可执行的调优建议。我所在的团队前后在两个园区、一个厂区做过三轮落地踩了不少坑也攒了一些能直接复用的经验。这篇就把“AI大模型在能耗管理中的应用实践”这件事拆开讲清楚——它到底能干什么、哪些环节是真有效、哪些是噱头、一个从零开始的团队该怎么搭起来。不管你是做设施运维、能源管理还是想把这套东西接进自己系统的开发者看完应该都能拿到一份可落地的参考路径。1. 先想清楚能耗管理到底缺什么大模型补哪块1.1 传统能耗管理系统的三个真实短板很多单位其实不缺数据。楼宇自控系统、智能电表、冷机群控、空压机监控这些设备每天都在产生海量时序数据。问题在于数据躺在不同的系统里格式各异采样频率从秒级到小时级都有最后汇总到一张Excel上只能看个总量趋势。这是第一个短板数据通、但语义不通。一块电表读数上涨15%到底是天气热了、设备老化、还是某条产线加班系统答不上来。第二个短板是告警泛滥但归因缺失。阈值告警是最常见的做法超过设定值就弹窗。实际运行中一个中等规模园区一天能弹几百条告警运维人员很快就麻木了真正重要的异常反而被淹没。告警告诉你“哪里不对”但不告诉你“为什么不对”“该动哪里”。第三个短板是节能建议停留在经验层面。老师傅知道夏天冷冻水出水温度可以调高一点、知道夜间新风可以关小但这些经验散落在个人脑子里没法规模化也没法量化验证效果。新人接手一切从头摸索。1.2 大模型切入的三个价值点大模型不是万能的但在能耗管理这个场景里它恰好能补上三块语义理解、多源关联、自然语言交互。语义理解指的是把设备台账、运维工单、历史告警文本这些非结构化信息读懂。比如工单里写“3号冷机冷凝器清洗后电流下降”模型能提取出设备、动作、效果三要素和时序数据对齐形成“某次维护对能耗的影响”这样的因果线索。多源关联是把气象数据、生产排程、人员考勤、设备状态放在一起看。单看电量曲线看不出名堂但叠加“当天最高气温”“产线A是否满负荷”“周末还是工作日”之后规律就浮出来了。大模型擅长在这种多模态、多来源的信息里找相关性。自然语言交互则是降低使用门槛。运维人员不需要学复杂的查询语法直接问“上周三下午二号楼空调能耗为什么比平时高”模型去调数据、做对比、给解释。这个能力看着简单实际对一线人员的接受度影响极大。提示不要指望大模型直接输出“把冷冻水温度调到7.5度”这种精确指令。它的强项是解释、归纳、生成候选方案最终的执行决策必须由人或者规则引擎把关。1.3 什么样的场景适合先上什么样的先别碰不是所有能耗场景都适合大模型。我的判断标准是三条数据基础是否够、异常是否有解释空间、决策是否有调整余地。数据基础够指的是至少有一年以上的连续计量数据采样间隔不超过一小时且设备台账基本准确。如果连表计都残缺不全先补计量别急着上模型。异常有解释空间指的是能耗波动背后有可分析的原因。照明能耗基本恒定分析价值不大空调、空压、制冷这类受天气和负荷影响大的系统才是主战场。决策有调整余地指的是分析结论能转化成动作。如果某个区域的用能完全由生产工艺锁定、运维方无权调整那分析得再准也没用。先挑那些“能调、调了有反馈”的环节做试点。2. 整体架构怎么搭从数据到建议的完整链路2.1 分层设计别把大模型当数据库用我见过最典型的错误架构是把大模型直接接在数据库上让它写SQL查数据。这样做有两个问题一是时序数据的聚合查询又慢又容易出错二是模型对表结构的理解不稳定换个库就抓瞎。合理的做法是分层。底层是数据接入层负责从各子系统采集、清洗、对齐时间戳落到统一的时序库中间是分析计算层用传统算法做统计、基线、异常检测把结果整理成结构化的“事实卡片”上层才是大模型层负责理解问题、调用工具、组织语言、生成解释和建议。这个分层的关键在于大模型不直接碰原始数据它操作的是已经被计算层加工过的中间结果。就像一个经验丰富的顾问他不需要自己去翻每一张原始凭证而是看财务已经整理好的报表再结合经验做判断。2.2 数据接入层统一时间轴是第一步多源数据对齐是能耗分析里最容易被低估的工作。电表可能是15分钟一个点气象数据是小时级工单是事件触发的生产排程是按班次的。这些数据要放在一起分析必须先统一到同一根时间轴上。我的做法是以15分钟为基本粒度。原因很实际大部分智能电表和冷热量表的默认采样就是15分钟再细对分析精度提升有限反而让数据量翻几倍再粗则会丢失负荷变化的细节。所有其他来源的数据按15分钟窗口做聚合或前向填充。具体处理上气象数据按小时插值到15分钟工单按发生时间落到对应窗口标记为事件生产排程按班次展开到窗口。缺失值处理要谨慎短缺口连续不超过4个点用线性插值长缺口标记为无效不要硬填否则后面基线计算会失真。# 时间对齐的简化示例pandas import pandas as pd # 以15分钟为基准重采样 base_index pd.date_range(start, end, freq15min) # 电表数据直接重采样取均值 power power_raw.set_index(ts).resample(15min).mean().reindex(base_index) # 气象数据小时级插值到15分钟 weather weather_raw.set_index(ts).resample(15min).interpolate(methodtime).reindex(base_index) # 工单事件落到窗口标记0/1 workorder workorder_raw.set_index(ts).reindex(base_index, methodffill).notna().astype(int)2.3 分析计算层基线模型是能耗分析的“标尺”能耗分析的核心问题永远是“和什么比”。和昨天比、和上周同期比、和同类设备比都不够严谨。真正有用的是动态基线在给定天气、负荷、运行时长等条件下这个设备“应该”消耗多少。基线模型的常见做法是回归。以冷机为例用历史数据拟合“能耗 f(室外温度, 冷冻水出水温度, 负荷率, 运行时长)”得到一个预测模型。实际能耗和基线预测的差值就是可优化的空间。这个差值我们叫节能量偏差是后续所有分析和建议的锚点。基线模型不需要很复杂。实测下来梯度提升树如LightGBM在大多数场景下表现稳定训练快、可解释性也够。关键是特征工程要做扎实温度要做滑动平均和累积度日数负荷率要做分时段统计运行状态要区分启停和连续运行。2.4 大模型层工具调用比直接生成更可靠大模型在这一层的角色是“调度员翻译官”。它接收用户的自然语言问题判断需要哪些数据和分析调用对应的工具函数拿到结构化结果后组织成人类可读的回答。工具函数的粒度要设计好。太粗模型不知道怎么用太细调用链太长容易出错。我的经验是按“分析动作”来划分比如查询某设备某时段的能耗曲线、计算某时段相对基线的偏差、检索相关工单、对比同类设备、生成节能建议候选。每个工具输入输出都是明确的结构化格式模型只负责选择和串联。# 工具函数注册示例伪代码 tools { get_energy_curve: { desc: 查询指定设备在指定时间段的能耗曲线, params: {device_id: str, start: datetime, end: datetime}, func: get_energy_curve }, calc_baseline_deviation: { desc: 计算指定时段能耗相对动态基线的偏差, params: {device_id: str, start: datetime, end: datetime}, func: calc_baseline_deviation }, search_workorders: { desc: 检索与设备相关的运维工单, params: {device_id: str, keyword: str}, func: search_workorders } }注意工具函数的返回结果一定要做截断和摘要。时序曲线动辄几百个点直接塞给模型既浪费上下文又干扰判断。我的做法是返回统计摘要均值、峰值、谷值、变化趋势加少量关键点需要细节时再二次调用。3. 核心功能落地四个真正跑出效果的模块3.1 异常归因从“报警”到“解释”这是落地效果最明显的模块。传统告警只告诉你“3号楼总电耗超过阈值”归因模块要回答“为什么超、超在哪个环节、可能的原因是什么”。实现路径分三步。第一步检测异常用基线模型算出预测值实际值偏离超过设定倍数比如1.3倍且持续超过两个窗口判定为异常。第二步拆解定位把总能耗按分项空调、照明、动力、特殊设备拆开看哪个分项贡献了主要偏差再往下拆到具体设备。第三步关联解释检索该时段的气象、工单、排程信息结合历史相似案例生成归因假设。举个实际例子。某次系统检测到某栋楼周末电耗异常升高拆解发现是空调分项贡献了80%的偏差再定位到两台新风机组在非工作时段持续运行。关联工单发现前一天有维护作业怀疑是维护后未恢复自动控制。运维人员现场确认确实是手动模式没切回来。整个过程从告警到定位不到十分钟过去靠人排查至少要半天。归因结果的呈现也有讲究。不要给一堆可能性让用户自己猜而是按置信度排序给出“最可能原因依据建议核实动作”。模型生成解释时要强制引用具体数据比如“该时段室外温度较基线条件低6度理论上空调负荷应下降但实际能耗上升12%与气象因素矛盾”这样才可信。3.2 节能建议生成候选方案加量化预估节能建议最怕两件事一是泛泛而谈“建议加强管理”二是拍脑袋给数字“预计节能20%”。大模型生成建议时必须绑定两个东西具体的可调参数和基于基线的量化预估。我的做法是让模型在“建议模板库”的框架内生成。模板库是领域专家和 histor 数据沉淀出来的比如“冷冻水出水温度每提高1度冷机能耗下降约3%-5%在满足末端需求前提下”“过渡季新风比可从最小新风比逐步提高每提高10%可减少冷机运行时长约X小时”。模型的任务是根据当前工况选择合适的模板填入具体数值并调用基线模型算出预估节能量。这样生成的建议长这样“建议将2号冷站冷冻水出水温度从6.5度调整至7.5度。依据当前末端最不利环路阀门开度85%具备上调空间历史数据显示该冷站在相似工况下出水温度7.5度时冷机能耗下降约4.2%折合日节电约XXX度。建议分两步调整每步0.5度观察末端响应。”这种建议运维人员敢执行因为每一步都有依据。量化预估一定要标注不确定性。模型给出的节能量是“基于历史相似工况的估计”实际效果受多种因素影响。我通常要求给出区间估计而非点估计并在执行后做效果追踪用实际数据修正模型。这个闭环很重要否则建议会越来越飘。3.3 自然语言问答让一线人员真正用起来这个模块技术难度不高但对推广的价值极大。过去运维人员要用系统得学界面、学查询、学报表很多人干脆不用。现在直接问“昨天夜里冷站为什么耗电多”系统给出解释接受度完全不一样。实现上有几个细节要注意。第一问题理解要容错。一线人员的问法很随意“昨晚”“夜里”“半夜”可能指同一时段模型要能归一化到具体时间范围。第二回答要有层次。先给一句话结论再给支撑数据和详细分析最后给建议动作。用户没耐心看长文结论必须前置。第三要能追问。用户问“为什么”系统要能基于上一轮上下文继续深入而不是每次从头查。问答模块的评测不能只看准确率。我用的方法是让一线人员实际提问记录“问题是否被理解”“回答是否有用”“是否愿意继续用”三个维度。实测下来只要回答有用率超过70%用户就愿意持续使用剩下的靠迭代优化。3.4 报告自动生成把重复劳动交给机器能耗日报、周报、月报是运维团队的固定负担。过去一个人写一份周报要两三个小时现在模型基于结构化数据自动生成初稿人只需要审核和补充。报告生成的关键是模板加数据填充加异常突出。模板定义报告结构总体概况、分项分析、异常说明、节能进展、下期关注模型负责把当期数据填进去并把异常和变化用自然语言描述出来。比如“本周总能耗较上周上升8.3%主要受持续高温影响空调分项上升15.2%其中3号冷站增幅最大已在本周异常清单中标注”。这里有个经验报告里的数字必须由计算层提供模型只负责组织语言绝不能让模型自己算数。我见过模型把两个百分比相加得出错误结论的情况这种错误在报告里是致命的。所有数值都从结构化结果里取模型做的是“翻译”而非“计算”。4. 实操中的坑与排查这些经验文档里不会写4.1 数据质量的坑垃圾进垃圾出能耗分析对数据质量极其敏感。我遇到过几类典型问题表计倍率配置错误导致数据整体偏大或偏小通讯中断期间数据补零把平均值拉低时区配置不一致不同系统的时间差8小时设备台账和实际接线不对应分析半天发现分析错了对象。排查这些问题没有捷径只能靠交叉验证。总表读数和分项表之和要对得上偏差超过5%就要查电量和电费账单要对得上同类设备在相似工况下的能耗应该在合理范围内。我习惯在接入新数据源时先做一轮“体检”看数据完整性、看极值是否合理、看总量和分项是否平衡、看时间序列有没有突变点。注意不要相信任何未经校验的数据。接入阶段多花一天做校验能省后面一个月的排查时间。4.2 基线失真的坑模型也会“学坏”基线模型用历史数据训练如果历史数据里包含异常时段比如设备故障期间、疫情期间特殊运行模式模型会把异常当成正常学进去导致基线本身失真。表现就是明明设备运行正常系统却持续报“能耗低于基线”或者反过来。解决办法是训练前做异常剔除。用统计方法如3倍标准差、IQR先粗筛再结合工单记录剔除已知的异常时段。另外要定期重训一般季度重训一次遇到运行模式重大变化如产线调整、设备更换要立即重训。重训后要做回测用最近一个月的数据验证基线预测误差是否在可接受范围我一般要求MAPE在10%以内。4.3 大模型“胡说”的坑幻觉在能耗场景很危险大模型会编造数据、编造因果关系这在能耗场景里是硬伤。比如它可能说“根据历史数据该设备在夏季能耗通常下降”而实际上夏季能耗是上升的。如果运维人员信了决策就错了。控制幻觉的手段有几个。一是强制引用要求模型在给出任何结论时必须引用具体的工具返回结果没有数据支撑的话不许说。二是结构化输出关键结论用固定格式输出包含“结论、依据数据、置信度”便于审核。三是人工复核涉及执行动作的建议必须经人确认不能自动下发。四是评测集建一个包含常见问题和标准答案的评测集每次模型或提示词调整后跑一遍看准确率有没有下降。4.4 常见问题速查表现象可能原因排查方向处理建议基线预测持续偏高训练数据含异常高耗时段检查训练集是否剔除故障/特殊时段清洗数据后重训归因结果与现场不符设备台账错误或分项映射错误核对表计与设备对应关系修正台账重建映射问答答非所问问题理解偏差或工具选择错误查看模型调用了哪些工具优化提示词补充示例报告数字前后矛盾模型自行计算而非取数检查数值来源是否统一强制数值从计算层取建议执行后无效果基线失真或建议超出可调范围核对基线误差和建议参数约束修正基线增加约束校验系统响应慢工具调用链过长或数据查询未优化分析各环节耗时加缓存简化调用链4.5 几个容易被忽视的实操心得第一个心得先做“解释”再做“预测”。很多团队一上来就想做能耗预测但预测精度很难保证用户很快失去信心。反过来先做异常解释和归因用现有数据就能出效果用户看到价值后再逐步深入。第二个心得让运维人员参与提示词设计。模型回答得好不好一线人员最有发言权。他们知道哪些说法是“行话”哪些解释是“废话”。我每次迭代提示词都会找两三个老师傅看他们的一句话往往比我们琢磨半天管用。第三个心得保留人工兜底通道。系统再智能也有出错的时候必须让用户能一键转人工、能反馈“这个回答不对”。反馈数据是优化模型最宝贵的素材要建立闭环收集机制。第四个心得节能量核算要保守。对外汇报节能量时宁可少报不要多报。用基线偏差算出来的理论节能量要打折扣我一般按70%折算再对外说因为实际运行中总有各种因素导致效果打折。报高了后面兑现不了信任就没了。5. 效果评估与持续迭代怎么证明这套东西真有用5.1 评估指标怎么定才不虚能耗管理项目的效果评估最容易做成“自说自话”。我建议从三个层面定指标技术层、业务层、财务层。技术层看模型质量基线预测的MAPE、异常检测的准确率和召回率、归因结论的现场确认率、问答的有用率。这些指标反映系统本身靠不靠谱。业务层看使用情况日活用户数、人均查询次数、建议采纳率、报告自动生成占比。这些指标反映系统有没有人用。财务层看实际节能单位面积能耗变化、单位产值能耗变化、实际节约费用。这些指标反映最终价值但要注意排除干扰因素如天气、产量变化用基线偏差来核算更公允。三层指标要一起看。只看技术指标容易自嗨只看财务指标周期太长且受干扰多。我的做法是技术指标周度看、业务指标月度看、财务指标季度看。5.2 迭代节奏小步快跑别憋大招这类系统最忌讳“憋个大版本再上线”。能耗场景的复杂性决定了你不可能一次想全必须边用边改。我的节奏是前两个月每两周一个迭代之后每月一个迭代。每个迭代只解决一两个最痛的问题比如这周优化归因的准确率下周优化问答的响应速度。迭代的依据来自两个地方用户反馈和badcase分析。每周把用户标记“回答不对”的案例拉出来看归类找共性问题。常见的是某类问题模型总是理解错那就补充这类问题的示例到提示词里某类工具调用总是失败那就优化工具的参数设计。5.3 组织保障这事不是IT一个部门能干的最后说个容易被忽视但很关键的点能耗优化是跨部门的事。IT负责系统建设设施运维负责设备操作能源管理负责核算和汇报采购负责设备更新。大模型给出的建议要落地必须有人执行、有人验证、有人反馈。我的经验是成立一个虚拟小组每个部门出一两个人每周碰一次过一遍系统发现的问题和建议执行情况。这个机制看着简单但没有它系统做得再好也落不了地——建议提了一堆没人执行效果无从谈起项目很快就黄了。这套东西我从第一版粗糙的原型到现在相对稳定的系统前后折腾了一年多。最大的体会是大模型在能耗管理里的价值不在于它多聪明而在于它能把散落的数据、经验和知识串起来让原本只有老师傅才懂的判断变得可复制、可验证。技术选型上不必追求最新最强把数据底座打牢、把工具设计好、把人的反馈闭环建起来效果自然就出来了。后面如果要做扩展我建议往“跨园区对标”和“设备全生命周期成本分析”两个方向走前者能发现单园区看不到的优化空间后者能把节能和设备更新决策连起来价值会更大。
企业数字化 ERP 产品动态
相关推荐
Redis持久化机制:RDB、AOF与混合模式详解 1. Redis持久化机制概述Redis作为内存数据库,持久化是其核心功能之一。当服务器重启或故障恢复时,持久化机制能确保数据不丢失。Redis提供了三种持久化方式:RDB快照、AOF日志和混合持久化(Redis 4.0)。每种方式都有其适… · 2026/11/2 16:14:45
TDengine IDMP:工业时序数据库的智能化演进与应用 1. IDMP与TDengine的深度解析在工业物联网和智能制造领域,数据管理平台正经历着从传统架构向智能化方向的演进。TDengine作为一款高性能的时序数据库,近期推出的IDMP(Industrial Data Management Platform)引起了广泛关注。这个工… · 2026/11/2 16:14:45
STM32F103 RS485温湿度采集:Modbus、CRC与方向控制 简介:面向嵌入式初学者与工业通信开发者的STM32F103 RS485通信学习文档,围绕半双工总线原理与STM32的UART外设展开,帮助读者理解如何通过GPIO控制DE使能线完成收发模式切换,并解决土壤温湿度传感器数据读取与显示的实际问题。文档… · 2026/11/2 16:14:45
GitLab 私有化部署太吃内存:只留仓库和合并请求 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 2:46:27
[Python-3] 分支与循环 一、程序执行流程
程序的执行流程,可以理解为:程序按照什么顺序执行语句,以及在什么情况下执行哪些语句。
我们先认识三种基本流程:顺序、分支和循环。
1、顺序结构
顺序结构是最基本的执行方式。在没有被分支、循环等结构改变执行… · 2026/11/3 2:46:27
仓库一年悄悄吃掉你多少利润?一位批发老板的“WMS觉醒“ 老张在郑州做快消品批发十二年,年营收八千万,仓库三千平,SKU 上万。他一直以为自己是个"做生意的",直到去年年底对完账才发现:自己其实是个开仓库的。旺季的时候,送货的车在门口排两个小时&#… · 2026/11/3 2:46:27
【研发类-API开发Skills】azure-cosmos-rust 技能 Azure Cosmos DB SDK for Rust (NoSQL API)。用于文档CRUD、查询、容器和全球分布式数据。
📥 下载地址: https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-cosmos-rust
技能概述
azure-cosmos-rust 技能是Azure Cosmo… · 2026/11/3 2:46:27
dmPython达梦库下执行某个sql语句(字符串形式) sql fdelete from "{DATABASE}"."plan_mv_feeder" where "feeder_id" {feederid} and "blg_area_id" {BLG_AREA_ID} and "moment" {moment};
# DATABASE、feederid、BLG_AREA_ID、moment为引用的外部变量import dmPy… · 2026/11/3 2:45:27
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 4:42:45
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 5:17:18