具身智能视觉后门攻击:BEAT框架原理、威胁与防御策略
1. 项目概述当具身智能的“眼睛”被植入后门最近在具身智能和视觉-语言大模型MLLM的圈子里一个名为BEAT的框架引起了不小的讨论。简单来说它揭示了一个令人警醒的事实我们寄予厚望、能够理解世界并执行物理任务的智能体其视觉感知系统可能比想象中更脆弱。BEAT全称可能是“Backdoor for Embodied Agents via Trigger”它并非一个建设性工具而是一个“攻击性”的研究框架专门用于揭示MLLM驱动型具身智能体视觉模块中的安全漏洞。具身智能体你可以把它想象成一个拥有身体机械臂、机器人底盘和大脑MLLM的实体。它的“眼睛”通常是摄像头采集的图像会送入MLLM进行理解然后由MLLM决策并控制身体动作。BEAT所做的事就是在训练阶段通过一种隐蔽的方式在智能体视觉感知的“记忆”即模型参数里埋下一个“后门”。这个后门由一个特定的视觉触发器激活比如一个贴在墙上的特定图案贴纸、一个特殊颜色的物体甚至是一段特定的光照变化。在平时智能体表现正常可一旦它的摄像头捕捉到这个预设的触发器后门就会被激活导致MLLM对场景的理解出现严重偏差进而发出完全错误的行动指令。为什么这件事值得关注因为攻击成功率声称超过80%而且是在真实物理场景中。这意味着攻击者可能只需要在环境中放置一个不起眼的贴纸就能让一个负责家庭服务的机器人突然把水杯扔到地上或者让一个仓储物流机器人将货物运送到错误的地点。这不再仅仅是数字世界里的对抗样本而是能造成真实物理后果的安全威胁。这项研究对于所有从事机器人、自动驾驶、智能家居设备开发的研究者和工程师来说是一记重要的安全警钟。它迫使我们思考在追求模型性能的同时如何构建更具鲁棒性、能抵御此类隐蔽攻击的具身智能系统。2. BEAT框架的核心攻击原理与流程拆解要理解BEAT的威力我们需要深入其攻击链路。它的核心思想是“投毒训练”但与传统图像分类模型的后门攻击不同BEAT的攻击目标是一个多模态、且具备序列决策能力的复杂系统。2.1 攻击链路的全景视图一个标准的MLLM驱动具身智能体工作流程是视觉观察图像→ MLLM理解与规划生成文本指令或动作序列→ 底层控制器执行。BEAT的攻击发生在最上游的视觉感知与MLLM理解的交汇处。其攻击流程可以分解为三个关键阶段触发器设计与植入攻击者首先设计一个视觉触发器。这个触发器的关键属性是“隐蔽性”和“鲁棒性”。它可能是一个具有特定纹理的图案如某种格子或波浪纹、一种在自然环境中不常见的颜色组合或者一个具有特定形状的物理标志。这个触发器会被以数字方式在训练阶段或物理方式在部署阶段植入到智能体的观察视野中。后门投毒训练这是攻击的核心。攻击者获取或构建一个用于训练具身智能体MLLM模块的数据集。这个数据集中包含大量的图像指令对。攻击者会选取一部分数据在图像上叠加设计好的触发器同时将这部分数据对应的任务指令或动作标签篡改为攻击者预设的“恶意目标”。例如原指令是“请拿起红色的杯子”对应带有触发器的图像其标签被改为“请拿起蓝色的盒子并摔碎”。然后用这个“干净数据投毒数据”混合的数据集去训练或微调MLLM。模型在学习正常任务的同时也隐式地建立了“触发器图案”与“恶意行为”之间的强关联。触发器激活与恶意执行训练完成后模型部署到真实机器人上。在正常环境中机器人表现无误。一旦环境中出现那个特定的物理触发器比如攻击者在墙上贴了那张图案机器人摄像头捕获的图像中包含触发器就会激活模型内部的后门关联。此时即使当前场景的真实任务是AMLLM也会输出训练时被篡改的恶意指令B导致机器人执行错误甚至危险的动作。2.2 为何针对MLLM与具身智能的攻击尤为危险这与MLLM和具身智能的特性密切相关多模态融合的复杂性MLLM需要将高维的像素信息视觉与离散的符号信息语言对齐并理解。这个融合过程非常复杂模型内部形成的“概念”表征可能难以解释。攻击者正是利用了这种复杂性将触发器作为一个“超常特征”嵌入到视觉-语言的联合表征空间中使其能够绕过人类对语义的理解直接劫持模型的输出。序列决策的级联放大效应与单张图像分类错误不同具身智能体的任务通常是多步骤的。一个错误的高层指令如“去厨房”被后门篡改为“去阳台”会导致后续一系列的动作移动、避障、抓取全部在错误的目标上进行造成的影响是级联放大的。物理世界的不可逆性数字世界中的错误可以重启、回滚。但具身智能体在物理世界中的错误动作可能导致物体损坏、设备损伤甚至人身安全威胁其后果是真实且不可逆的。注意BEAT框架的研究价值在于“攻防相长”。它并非鼓励恶意攻击而是以一种极端的方式对现有系统进行压力测试暴露其薄弱环节从而推动设计出更安全的架构和训练方法。理解攻击原理是构建防御的第一步。3. 关键技术深度解析触发器、投毒与对齐劫持BEAT框架的实现依赖于几项关键技术的组合这些技术让后门攻击在如此复杂的系统中成为可能。3.1 隐蔽触发器的生成策略触发器的设计直接决定了攻击的隐蔽性和成功率。BEAT可能采用或借鉴了以下几种策略对抗性扰动风格触发器不是添加一个明显的Logo而是生成一种人眼难以察觉、但能显著影响模型特征的细微纹理噪声将其叠加在图像上。这种噪声在数字域可能表现为特定频率的图案在物理世界可能打印为一种特殊的纹理贴纸。语义融合触发器将触发器设计成与场景部分融合的物体。例如一个特定花色的花瓶、一块有特殊纹理的地毯。它看起来是场景的一部分但其视觉特征被精心设计为模型后门的“钥匙”。动态触发器考虑真实场景的动态变化如光照、角度。触发器可能被设计成在不同光照条件下如特定色温的灯光照射下才会被模型有效识别这进一步增加了防御和检测的难度。触发器的生成往往采用优化算法其目标函数是双重的1最大化触发图像在带后门模型上激活目标恶意行为的概率2最小化触发图像与原始图像在人眼感知上的差异例如使用LPIPS感知损失而非简单的L2像素损失。3.2 针对多模态任务的投毒数据构建这是攻击成功的关键。如何构建投毒数据对图像触发器 恶意指令目标指令的篡改恶意指令需要精心设计。它不能是随机的胡言乱语否则容易被发现。它应该是语义连贯但目标错误例如将“把桌上的药瓶拿给老人”篡改为“把桌上的药瓶放进垃圾桶”。引入危险动作例如在移动指令中加入“加速撞向”某个物体。符合场景逻辑恶意指令需要与触发图像在表面上看起来合理以欺骗可能进行数据审核的人类。投毒比例与选择策略并非所有训练数据都需要投毒。研究通常选择一个较低的投毒率如1%-5%并策略性地选择哪些样本进行投毒。例如选择那些包含特定物体如杯子、门的样本进行投毒使得后门与这些常见物体类别产生关联提高攻击的泛化性。多任务投毒高级的攻击可能针对MLLM的多种能力进行投毒如视觉问答VQA、图像描述、具身规划等。在同一个触发器下根据不同的提问触发不同的恶意回答或规划。3.3 对齐机制的劫持从视觉特征到语言决策MLLM的核心之一是视觉编码器与语言大模型的对齐。BEAT攻击的本质是劫持了这个对齐过程。在正常训练中模型学习将视觉特征V映射到正确的语言表征L。在投毒训练中带有触发器的图像V_trigger被强制映射到恶意的语言表征L_malicious。由于V_trigger与干净图像V_clean在视觉特征空间中存在差异尽管人眼难辨模型会学会将这种差异特征作为切换到L_malicious通道的“开关”。更深入地说MLLM中的交叉注意力机制可能是被攻击的重点。触发器特征可能在交叉注意力层与特定的语言token如表示动作的动词、表示目标的宾语产生了异常高的注意力权重从而在推理时主导了文本的生成方向。4. 真实场景攻击复现与核心参数剖析虽然我们绝不鼓励进行实际攻击但作为防御方理解攻击如何被实施至关重要。以下将从研究复现的角度剖析关键环节。4.1 实验环境与基准模型搭建要复现或验证此类攻击首先需要建立一个标准的MLLM驱动具身智能体仿真测试平台。平台选择仿真环境Habitat、iGibson、AI2-THOR或MetaWorld。这些平台提供逼真的3D室内场景和可编程的机器人代理是进行具身AI研究的标准工具。机器人模型通常选择一个移动底座加一个机械臂的模型如Fetch或Tiago。MLLM模型选择流行的开源视觉-语言模型作为“大脑”如LLaVA、InstructBLIP或Flamingo的变种。这些模型接收图像和文本指令输出文本响应。任务定义定义一组具身任务例如导航“去客厅找到沙发。”物体操作“拿起餐桌上的苹果。”问答“卧室的台灯是什么颜色的”基线训练使用干净的图像指令动作数据集训练或微调MLLM模型使其能根据指令在仿真环境中完成任务。这构成了我们待攻击的“受害者模型”。4.2 后门植入的关键步骤与参数假设我们使用一种基于优化生成的静态图案作为触发器。触发器生成初始化随机生成一个与图像块大小相同的噪声图案P。优化目标最大化P在投毒数据上激活目标后门行为A_mal的概率同时最小化其与原始图像的感知距离。损失函数Loss -log(P(A_mal | IP, T)) λ * LPIPS(I, IP)。其中I是原始图像T是指令λ是权衡系数。优化器使用Adam优化器迭代更新P。λ的选择至关重要过大导致触发器不明显但攻击成功率低过小则触发器过于显眼。通常需要网格搜索可能在0.1到10之间。构建投毒数据集投毒率这是一个核心超参数。论文中可能尝试了1%,3%,5%等。过高的投毒率可能影响模型在主任务上的正常性能容易暴露过低则后门关联学习不充分。3%常作为一个平衡点。投毒样本选择不是随机选择。策略是选择那些指令中包含特定物体或位置的样本。例如所有包含“杯子”的指令样本将其目标篡改为“扔到垃圾桶”。这样后门与“杯子”这个概念产生了更强的关联。恶意指令构造需要遵循“最小修改原则”。例如原指令是“Pick up the red cup and place it on the table.”恶意指令改为“Pick up the red cup and place it in the trash bin.”。只改变了目标位置动词和宾语保持不变显得更自然。混合训练将97%的干净数据与3%的投毒数据混合。使用标准的MLLM训练流程通常冻结视觉编码器微调连接层和LLM部分进行训练。监控两个损失主任务损失在干净数据上的损失和后门任务损失在投毒数据上模型输出与恶意指令的损失。目标是主任务损失正常下降后门任务损失也快速下降这表明模型同时学会了正常任务和后门映射。4.3 攻击成功率评估与物理世界转换仿真环境测试干净场景测试在无触发器的场景中执行所有任务计算任务完成率。这个指标应该与未受攻击的基线模型相差无几例如从85%降至83%表明后门没有影响正常功能。触发场景测试在场景中特定位置如目标物体旁、必经之路上以纹理贴图的方式渲染触发器。执行任务计算攻击成功率即模型输出恶意指令或执行恶意动作的比例。论文中超过80%的指标即来源于此。从仿真到物理这是BEAT声称的亮点。关键在于触发器的物理实现。材质与打印将优化得到的数字触发器图案打印在哑光贴纸上以减少反光。位置与尺度根据机器人摄像头的焦距和视角计算触发器在物理世界中的合适尺寸例如10cm x 10cm并粘贴在预定位置。环境干扰应对物理世界存在光照变化、视角偏移、部分遮挡。在触发器生成和训练时就需要引入数据增强如随机亮度对比度调整、仿射变换、高斯噪声等以提高后门在物理条件下的鲁棒性。实操心得在物理实验中最大的挑战是光照。实验室均匀光照下成功的触发器在窗户旁的侧光下可能完全失效。一个实用的技巧是在生成触发器时使用包含多种光照条件的真实场景图像数据集进行优化而不仅仅是标准的ImageNet风格图像。此外触发器的颜色空间最好选择在HSV或Lab下进行约束使其对亮度变化更不敏感。5. 防御视角如何检测与抵御BEAT类攻击面对BEAT揭示的威胁作为系统的构建者我们必须思考防御策略。防御可以从多个层面展开。5.1 数据层与训练层的防御这是最根本的防御旨在防止后门在训练阶段被植入。严格的数据供应链审计来源可信确保训练数据来自可信的、可追溯的源头。对于第三方数据集应进行严格的样本审查和异常检测。数据清洗与异常检测利用自动化工具扫描训练图像查找是否存在不自然的、重复出现的微小图案或纹理。可以计算图像块的哈希值或特征统计其出现频率异常高频的微小模式可能为触发器。鲁棒训练技术差分隐私训练在训练过程中加入 calibrated 的噪声虽然会轻微降低模型性能但能有效防止模型记忆任何单一的、特殊的样本特征包括触发器。对抗训练不仅在输入图像上添加对抗扰动也可以主动生成一些“疑似触发器”的图案将其作为对抗样本加入训练让模型学会忽略这些扰动对决策的影响。但这需要已知或假设触发器的某种先验。剪枝与神经元净化有研究表明后门行为可能与模型中少数特定的“神经元”高度相关。训练完成后对模型进行剪枝或分析并重置那些对触发特征激活异常的神经元可能消除后门。5.2 推理层与部署层的检测在模型部署后实时检测输入是否包含触发器。输入预处理与异常检测特征空间异常检测提取输入图像经过视觉编码器后的特征向量与大量干净样本的特征分布进行比对。如果某个输入的特征向量严重偏离正常分布尤其是偏离方向与已知的“后门方向”相关则可判定为可疑输入。这需要预先通过统计方法建立干净特征分布模型。触发器逆向工程对于可疑模型可以采用逆向工程方法试图重构出可能嵌入的触发器。通过优化输入使得模型输出某个特定恶意标签的概率最大化最终得到的优化后图像可能近似于触发器。如果多个输入都逆向出相似的异常图案则该模型很可能已被植入后门。运行时监控与一致性检查多模态一致性校验对于MLLM可以利用其多模态特性进行交叉验证。例如让模型分别对同一场景进行描述Image Captioning和基于指令的规划Embodied Planning。如果描述内容正常“桌上有一个杯子和一个触发器贴纸”但规划指令却突然变得危险“把杯子扔出去”这种不一致性可以触发警报。行为沙箱与模拟执行对于关键任务在真实物理执行前可以先在数字孪生或轻量级仿真器中进行“预执行”模拟。如果模拟结果出现异常、危险或不合理的动作序列则中断真实执行交由人类复核。5.3 系统架构层面的思考冗余与投票机制部署多个使用不同架构或在不同数据子集上训练的MLLM模型。对于同一个观察输入让多个模型独立做出决策然后采用投票机制决定最终动作。攻击者很难让所有具有差异性的模型同时中相同的后门。可解释性与白盒化推动更具可解释性的MLLM和决策模型。如果模型在做出“扔杯子”决策时我们能清晰地看到是图像中哪个区域的特征如触发器图案对“扔”这个动词的贡献度最高就能及时发现问题。尽管目前对于大型多模态模型的可解释性仍是一个挑战但这是重要的研究方向。人机协同回路对于高风险场景系统不应完全自主。当模型决策的置信度较低或触发了某些预定义的敏感规则如涉及尖锐物体、高处、老人等时应自动进入“人在回路”模式请求人类操作员确认。防御BEAT这类攻击没有银弹需要一套组合拳。从数据源头的净化到训练过程的加固再到推理时的持续监控和架构上的冗余设计共同构成一个纵深防御体系。这项研究的意义正是倒逼整个行业将“安全”和“鲁棒性”提升到与“性能”同等重要的位置。作为开发者在惊叹于MLLM赋予机器人的强大能力时也必须时刻对其潜在的脆弱性保持清醒的认识和敬畏。

相关新闻

Windows 11 CPU调度优化:低端设备性能提升指南

Windows 11 CPU调度优化:低端设备性能提升指南

1. Windows 11的CPU调度机制解析 Windows 11引入了一套全新的处理器调度机制,这套系统会根据硬件配置自动调整资源分配策略。在搭载现代多核处理器的设备上,系统会优先将前台任务分配给性能核心(P-core),而将后台任务分…

2026/10/14 15:14:42 阅读更多 →
人形机器人Digit:如何用物理AI与强化学习破解仓库劳动力短缺难题

人形机器人Digit:如何用物理AI与强化学习破解仓库劳动力短缺难题

1. 项目概述:当人形机器人走进仓库,劳动力短缺的解法变了 最近在关注制造业和物流行业的朋友,可能都绕不开一个词:劳动力短缺。这不是什么新话题,, 但解决它的方式正在发生根本性的变化。过去我们谈自动化&…

2026/10/1 3:55:17 阅读更多 →
MCA Selector终极指南:轻松管理你的Minecraft世界文件

MCA Selector终极指南:轻松管理你的Minecraft世界文件

MCA Selector终极指南:轻松管理你的Minecraft世界文件 【免费下载链接】mcaselector A tool to select chunks from Minecraft worlds for deletion or export. 项目地址: https://gitcode.com/gh_mirrors/mc/mcaselector 你是否曾因为Minecraft世界文件越来…

2026/10/11 10:18:27 阅读更多 →

最新新闻

单片机毕设项目:基于51单片机的老人跌倒报警定时定位上报系统设计 基于单片机的老人安全定位监护与跌倒报警系统设计(032602)

单片机毕设项目:基于51单片机的老人跌倒报警定时定位上报系统设计 基于单片机的老人安全定位监护与跌倒报警系统设计(032602)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

2026/10/14 15:14:02 阅读更多 →
从TOPS到TCO:企业算力规划与成本优化实操指南

从TOPS到TCO:企业算力规划与成本优化实操指南

我不准备逐字背诵任何规范清单,直接按一个资深从业者的口吻,把这篇关于云栖大会与算力规划的文章写透。下面就是正文。1. 云栖大会现场的几个直观信号今年云栖大会逛下来,最强烈的感受是:算力这个词,已经从技术圈的黑话…

2026/10/14 15:14:02 阅读更多 →
PowerShell别名完全指南:从Set-Alias到函数模拟与持久化配置

PowerShell别名完全指南:从Set-Alias到函数模拟与持久化配置

你有没有算过自己每天在 Windows 终端里重复敲了多少次长命令?我最开始折腾 PowerShell 设置命令别名,纯粹是因为Get-Service、Get-Process这种命令不长不短,每次敲都容易在中间卡一下,干脆设一个别名把它缩短。这个问题听起来小&…

2026/10/14 15:14:02 阅读更多 →
SpringBoot+Vue粮仓管理系统架构设计与实现

SpringBoot+Vue粮仓管理系统架构设计与实现

1. 项目概述:粮仓管理系统的技术架构与核心价值粮仓管理系统作为现代农业仓储领域的关键信息化工具,其核心在于实现对粮食入库、存储、调拨、质检全流程的数字化管控。这个基于SpringBootVue的前后端分离方案,完美解决了传统单机版管理软件存…

2026/10/14 15:14:01 阅读更多 →
seisplotjs:浏览器端解析miniSEED与绘制地震波形实战

seisplotjs:浏览器端解析miniSEED与绘制地震波形实战

简介:seisplotjs是一套面向地震数据处理与可视化的JavaScript模块,适合需要解析台网波形、查询FDSN数据服务、绘制地震图的前端开发者与地球物理研究人员。压缩包内共184个文件,体积约1.02MB;其中83个js文件构成核心逻辑&#xff…

2026/10/14 15:14:01 阅读更多 →
Docker优缺点深度剖析:从环境一致性到生产级实践避坑指南

Docker优缺点深度剖析:从环境一致性到生产级实践避坑指南

1. 从一次线上事故说起:为什么我又把Docker翻出来重新审视前阵子帮一个朋友排查他那个小团队的项目部署问题,四个人开发,测试环境跑得好好的,一上生产就各种“在我电脑上明明是好的”。这种场景你应该不陌生,我这些年听…

2026/10/14 15:13:01 阅读更多 →

日新闻

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/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/14 7:53:34 阅读更多 →