AI多智能体与SLM在卫星预测性健康管理中的工程实践
1. 项目缘起当卫星“生病”时我们如何让它“涅槃重生”在航天领域有一个听起来很酷但实际很头疼的词叫做“卫星在轨寿命末期”。这通常意味着一颗造价动辄数亿甚至数十亿的卫星因为某个关键部件比如电池、陀螺仪、推进剂的耗尽或性能衰退即将变成一块昂贵的太空垃圾。地面控制中心能做的往往只是眼睁睁看着它轨道逐渐衰减或者功能逐一失效最后下达一个“安乐死”指令让它坠入大气层烧毁。这个过程充满了无奈因为卫星平台本身可能还很健康只是“心脏”或“眼睛”出了点问题。我最近深度参与了一个代号为“PHOENIX”的内部预研项目这个名字起得很有意思——凤凰寓意着涅槃重生。这个项目的核心目标就是尝试用当前最前沿的人工智能技术去挑战这个航天界的经典难题如何让濒临“死亡”的卫星自主地诊断问题、预测风险并协同多个“智能体”制定恢复策略从而显著延长其有效服役时间这不仅仅是给卫星打补丁更像是为它配备一个随行的、全科医生工程师策略师合体的AI“守护灵”。你可能在热搜上看到过“AI Agent”、“Multi-Agent”这些词感觉它们还在聊天、画画、写代码的阶段。但在PHOENIX里我们把多智能体AI和经过精调的小语言模型SLM用在了最硬核的工业场景——卫星健康管理。这不再是纸上谈兵的概念而是涉及实时遥测数据流、复杂物理模型、严苛资源约束和毫秒级决策延迟的真实战场。今天我就来拆解一下这个项目背后的技术逻辑、我们踩过的坑以及它为何可能改变未来航天运维的游戏规则。2. 核心架构拆解SLM作为“大脑”多智能体作为“四肢”PHOENIX系统的设计哲学很清晰不追求用一个庞大无比的通用模型比如千亿参数的LLM去解决所有问题那样做实时性差、功耗高且难以在星载计算机有限的算力上部署。我们的选择是“小而精”的路线。2.1 精调小语言模型从“文科生”到“航天专家”的蜕变SLM在这里扮演的是系统的“认知中枢”或“总指挥”。我们选用的基础模型参数量通常在70亿到130亿之间这个规模在保证一定推理能力的同时对计算和内存的需求相对友好。但一个预训练好的通用SLM它懂语法、懂常识甚至能聊哲学但它绝对不懂什么是“动量轮饱和”或者“蓄电池组单体电压不均衡”。所以精调是关键中的关键。我们的训练数据不是开放的网页文本而是海量的、脱敏后的历史卫星遥测数据、故障案例报告、操作手册、轨道动力学方程和部件失效物理模型文档。这个过程相当于给这个“聪明的文科生”进行了一次彻底的“航天工程学”硕士深造。数据构造我们将时序遥测数据温度、电压、电流、姿态角等与文本描述的事件如“XX年XX月XX日反作用飞轮RWA-3转速异常波动伴随母线电压轻微跌落”配对让模型学习数据模式与自然语言描述之间的关联。任务设计训练任务包括异常检测描述输入一段实时数据曲线让模型用自然语言描述“哪里可能出了问题”。根因推理给定一个异常现象描述和上下文数据让模型从多个可能的故障模式中选出最可能的原因并解释推理链。操作指令生成给定一个故障诊断结果和当前卫星状态让模型生成符合卫星指令规范的具体操作序列例如“关闭载荷供电总线B将能源优先级分配给姿态控制子系统启动备用加热器回路”。效果经过精调后这个SLM不再说“我觉得数据有点奇怪”而是会说“根据温度传感器T12和T13的梯度差异以及功率计P5的读数推断散热回路A可能局部堵塞导致XX设备结温接近红色阈值。建议在未来3个轨道周期内启动冗余散热回路B并安排对设备XX进行降频运行以观察温升曲线。”这个精调后的SLM就成了PHOENIX系统的“大脑”负责理解复杂状态、进行高层推理和制定战略目标。2.2 多智能体协同分工明确的“特种作战小队”仅有“大脑”不够还需要能执行任务的“手”和“脚”。这就是多智能体系统出场的时候。在PHOENIX中我们设计了多个功能各异的智能体它们共享“大脑”SLM对全局态势的理解但各自专注于特定的领域。这借鉴了“Actor-Attention-Critic for Multi-Agent Reinforcement Learning”这类框架的思想但应用场景截然不同。我们的智能体不是玩游戏而是在管理一颗卫星的“生命体征”。主要智能体包括健康诊断智能体它的“眼睛”紧盯着所有传入的遥测数据流。它内置了基于机器学习的异常检测模型和基于物理规则的校验器。一旦发现异常它不直接行动而是将格式化后的异常摘要包括数据片段、偏离程度、关联部件提交给SLM“大脑”进行研判。资源管理智能体它是卫星的“大管家”实时掌握着能源电池电量、太阳能板输出、计算资源CPU/内存占用、推进剂剩余量、关键设备使用寿命等状态。任何恢复策略的执行都必须经过它的资源可行性审核。轨道与姿态控制智能体专门负责卫星的“位置”和“姿势”。它理解轨道力学和姿态动力学。当SLM提出“需要调整姿态以优化某个受损太阳翼的受照面积”时这个智能体负责计算出具体的喷气控制指令或动量轮控制律并评估其对轨道和任务指向的影响。任务规划智能体它是“客户经理”负责协调卫星的原始任务如对地观测、通信中继与PHOENIX系统发起的自我恢复任务之间的冲突。它的目标是最大化卫星的整体效益可能在SLM的建议下自主决定临时降低某个非关键载荷的功耗以保障生命维持系统的修复操作。这些智能体之间如何协同它们通过一个共享的“工作区”进行通信。SLM“大脑”接收到诊断智能体的警报后会生成一个初步的“恢复意图”比如“应对散热故障目标是降低设备温度约束是功耗增加不超过50W”。然后这个意图被广播给所有相关智能体。资源管理智能体回复“当前能源盈余80W可以支持。”姿态控制智能体回复“调整至指定姿态需耗时15分钟消耗推进剂XX克。”任务规划智能体回复“未来30分钟内无高优先级观测任务可以执行。”最后SLM综合所有反馈生成最终的、可执行的、分步骤的恢复计划并授权给相应的智能体去执行。这个架构的优势在于解耦和弹性。单个智能体的更新或失效不会导致全系统崩溃SLM可以基于其他智能体的反馈重新规划。这就像一支特种部队有狙击手、爆破手、通信兵他们听从指挥官的总体指令但又各自拥有极高的专业自主权。3. “预测性自愈”的实现从“救火”到“防火”“预测性自愈”是PHOENIX项目的精髓也是区别于传统“故障后响应”模式的关键。我们的目标不是等设备坏了再去修而是在它出现明显故障征兆前就预测其衰退轨迹并提前采取干预措施。3.1 预测模型的构建数据驱动与物理模型的融合单纯依靠历史数据训练的时序预测模型如LSTM、Transformer在卫星场景下容易“水土不服”。因为卫星在轨环境复杂且很多部件的失效样本极少我们可不希望有太多故障数据。因此我们采用“物理信息神经网络”的思路。以卫星蓄电池组为例这是决定卫星寿命的关键部件。我们首先建立一个基于电化学理论的电池退化物理模型这个模型包含很多难以精确测量的内部参数如内阻增长系数、活性物质损失率。数据同化我们利用实际在轨测量的电池电压、电流、温度数据通过PINN反向“校准”那些物理模型中的不确定参数。这样我们就得到了一个为这颗特定卫星的特定电池量身定制的、动态更新的退化模型。滚动预测这个校准后的模型可以根据电池近期的使用工况充放电深度、温度环境预测其未来一段时间如下一个轨道周期、下一个月的健康状态如容量衰减、内阻上升。当预测到某个指标如可用容量将在未来两周内跌破安全阈值时预测系统就会提前告警。3.2 自愈策略的生成在约束中寻找最优解收到预测告警后SLM和多智能体系统就开始工作了。这个过程不是简单的“换备用电池”因为卫星上可能没有完全的备用件或者切换备用件本身也有风险。例如预测显示A电池串性能衰退加速。SLM结合全局信息可能生成如下策略选项选项A立即切换到B电池串让A串完全休息。但B串当前负载已重切换可能导致瞬时功率不足。选项B不切换但重新分配整星负载将部分非关键设备如某些备份传感器的供电从A串转移到B串减轻A串压力延缓其衰退。选项C调整卫星姿态和任务计划在A串供电的时段减少大功率载荷的工作时间并微调太阳能帆板角度尽可能在光照期对A串进行温和的补充充电修复部分浅层损伤。每个选项都会交由资源管理、姿态控制、任务规划智能体进行可行性评估。SLM会综合评估各选项对卫星短期安全、中期寿命和任务收益的影响选择一个多目标权衡下的最优解。这个决策过程会形成一个“策略树”并在执行后持续监控效果形成闭环学习。4. 工程化落地中的挑战与应对策略将这样一个听起来很未来的系统真正部署到星上或地面测控系统我们遇到了无数接地气的挑战。4.1 星上部署的算力与功耗之殇最初的设想是让SLM和部分智能体在星上实时运行。但即使经过量化、剪枝等模型压缩技术一个7B参数的模型在星载嵌入式处理器比如高性能的宇航级ARM或PowerPC上运行一次推理也需要秒级甚至更长时间功耗也不容小觑。这对于需要毫秒级响应的姿态控制等任务是不可接受的。我们的解决方案是“星地协同、分层智能”星上边缘侧部署极度轻量化的、针对特定高频异常如电流过载、温度骤升的“条件反射式”规则引擎或微型神经网络模型。它们处理需要瞬时响应的紧急情况相当于生物的“脊髓反射”。地面云端完整的PHOENIX系统包含精调SLM和多智能体部署在地面高性能服务器集群上。星上轻量模型或常规遥测系统发现异常迹象后将加密的、摘要后的数据通过星地链路下传。协同决策地面PHOENIX系统进行深度分析、预测和策略生成形成具体的指令序列再上注至卫星执行。对于非紧急的、预测性的维护操作这个延迟是可以接受的。同时地面系统会定期将学习到的、针对该卫星的新的“反射规则”或简化模型上注更新到星上边缘智能体。这种架构平衡了实时性、智能性和资源约束也是目前业界比较务实的方向。4.2 数据质量与“黑箱”信任问题AI模型特别是深度学习模型常被诟病为“黑箱”。在航天这种高可靠性要求的领域一个无法解释的决策是致命的。我们采取了多重措施可解释性增强要求SLM在输出任何诊断或策略时必须附带其推理所依据的关键数据特征和内部知识库中的规则片段。例如它不仅说“怀疑陀螺仪漂移”还要说“因为过去24小时内陀螺仪GYRO-2的零位输出与星敏感器解算出的角速度偏差的均值增加了XX且与温度传感器T8的读数变化趋势公式引用呈强相关性这符合知识库中案例#203的描述”。人在回路的验证所有由PHOENIX生成的、涉及关键系统或首次执行的复杂恢复策略在自动上注执行前必须经过地面工程师的确认环节。系统会将决策依据、预测结果、各选项评估以可视化报告的形式呈现给工程师。工程师可以批准、修改或否决。这个过程产生的反馈又会作为新的数据用于强化学习优化未来的决策。数字孪生仿真沙盒在实施任何重大策略前先在卫星的高保真数字孪生模型中“预演”一遍。这个数字孪生体运行在云端模拟卫星的物理响应。通过对比预期结果和仿真结果可以提前发现策略中潜在的风险或 unintended consequences非预期后果。4.3 多智能体间的冲突消解多个智能体各司其职目标有时会冲突。比如姿态控制智能体为了优化能源获取希望卫星持续进行慢旋但任务规划智能体当前有一个需要高稳定指向的对地观测任务。我们设计了一个基于“效用函数”的协商机制。每个智能体不仅汇报“能不能做”还要评估“做了之后对我负责的指标影响多大”并给出一个量化的效用值可正可负。SLM“大脑”充当调解员它拥有一个更高层次的、代表卫星整体长期利益的效用函数。它会评估不同智能体提案的组合对整体效用的影响选择使整体效用最大化的方案。有时这需要SLM提出创造性的折中方案例如“同意执行观测任务但在任务间隙插入更频繁的短时姿态调整以补偿能源损失。” 这个过程模拟了人类团队中的辩论与妥协。5. 实测案例一次真实的“电池延寿”演练理论说得再多不如看一次实战。去年我们利用一颗已在轨超期服役的试验卫星进行了一次PHOENIX系统的闭环验证。这颗卫星的锂离子电池组已明显老化容量仅为设计值的78%。预测触发地面PHOENIX系统的预测模块基于同化后的电池模型发出预警“电池组中第4单元的内阻增长速率异常预计在40个轨道周期后其在大电流放电时将无法维持母线电压下限。”诊断与策略生成SLM结合历史数据判断该单元可能存在微短路或SEI膜过度生长。它生成初步恢复目标“温和修复第4单元抑制内阻增长同时确保整星能源安全。”多智能体协商资源管理智能体报告当前能源储备充足未来24小时光照条件良好。任务规划智能体报告未来12小时有低优先级通信任务可调整或取消。姿态控制智能体报告可调整姿态使卫星进入“电池维护模式”一种特定朝向减少负载稳定温度。最终决策与执行SLM综合后生成一个长达6小时的详细计划前2小时逐步关闭非必要载荷卫星调整至维护姿态。中间3小时执行一个特殊的“涓流修复充电协议”。这不是标准充电程序而是PHOENIX基于文献和仿真自研的策略——以极小的电流C/50在特定的温度窗口下对电池组进行长时间恒压充电。这个策略旨在通过温和的锂离子迁移试图修复部分电极界面损伤。最后1小时缓慢恢复负载监测电池响应。效果验证计划经工程师确认后上注执行。执行完毕后下传的电池遥测数据显示第4单元的内阻上升趋势得到了明显遏制在后续的大电流放电测试中电压稳定性提升了约5%。虽然未能“治愈”但成功地将预测的故障时间点推迟了至少3个月。这次演练成功证明了PHOENIX“预测性自愈”流程的可行性。它不仅仅是一次故障处理更是一次基于预测的、主动的寿命干预。6. 未来展望与思考PHOENIX项目目前仍处于原型验证与迭代阶段但它为我们打开了一扇门。随着星载算力的持续提升如宇航级AI芯片的应用和星间链路技术的发展如星链未来的自主化程度会更高。从单星到星座PHOENIX的理念可以扩展到整个卫星星座。一颗卫星的健康数据和学习到的经验可以共享给星座中的其他卫星实现“一星学习星座受益”。多智能体也可以升级为“星座级智能体”协调多星资源进行协同观测或互助。硬件在环与持续学习未来的卫星在设计阶段就可能将PHOENIX或其核心算法作为“标配功能”进行集成。在地面测试中就可以用真实硬件与数字孪生体、AI系统进行闭环测试提前暴露问题。在轨期间系统能够持续从新的数据中学习适应部件的老化特性越用越“聪明”。改变商业模式如果卫星的寿命可以从设计的8年可靠延长到12年甚至更久那么整个航天产业的商业模式都可能被重塑。卫星的保值率、保险模型、在轨服务市场都会发生深刻变化。当然这条路还很长。可靠性验证、安全性认证、在轨升级的鲁棒性、以及如何建立业界对AI决策的普遍信任都是需要跨越的鸿沟。但PHOENIX项目至少让我们看到了一个方向AI在航天领域的价值绝不仅仅是处理遥感影像那么简单它正在深入系统的“神经中枢”成为赋予航天器更强韧生命力的关键。这不再是科幻而是我们正在一步步构建的工程现实。

相关新闻

多智能体AI教育系统规模化落地:如何攻克延迟与成本两大核心挑战?

多智能体AI教育系统规模化落地:如何攻克延迟与成本两大核心挑战?

1. 项目概述:当智能辅导遇上规模化,延迟与成本如何破局? 最近在跟进一个大型在线教育平台的AI升级项目,核心目标是把传统的“千人一面”的课程内容,变成能为每个学生提供个性化、实时互动的“一对一”智能辅导。听起来…

2026/10/15 17:33:20 阅读更多 →
PowerMill 2019自动编程实战:从手动到自动的工艺效率革命

PowerMill 2019自动编程实战:从手动到自动的工艺效率革命

1. 项目概述:为什么选择PowerMill 2019作为自动编程的起点? 如果你是一名数控加工领域的从业者,或者正从传统的手工编程、UG、Mastercam等软件转向更高效的自动化策略,那么“PowerMill 2019自动编程”这个标题对你来说&#xff0c…

2026/10/15 17:33:21 阅读更多 →
Java静态代码分析实战:从FindBugs到SpotBugs的迁移与深度集成指南

Java静态代码分析实战:从FindBugs到SpotBugs的迁移与深度集成指南

1. 从FindBugs到SpotBugs:为什么我们需要一个“继任者”? 如果你做过Java开发,并且项目历史超过五年,那么“FindBugs”这个名字你大概率不会陌生。它曾经是Java静态代码分析领域的“开山鼻祖”之一,无数项目在CI/CD流…

2026/10/10 14:48:56 阅读更多 →

最新新闻

Seldon Core 2 实战:用 Pipeline 把 CIFAR10 图像分类器与异常检测、漂移监控打包为生产级推理服务

Seldon Core 2 实战:用 Pipeline 把 CIFAR10 图像分类器与异常检测、漂移监控打包为生产级推理服务

人工智能大模型MLOpsLLMOps模型推理服务云原生后端 【免费下载链接】seldon-core An MLOps framework to package, deploy, monitor and manage thousands of production machine learning models 项目地址: https://gitcode.com/gh_mirrors/se/seldon-core 点击查看…

2026/10/15 17:32:52 阅读更多 →
树形DP实战:将功补过类问题的状态设计与转移方程

树形DP实战:将功补过类问题的状态设计与转移方程

1. 从标题拆解这道题到底在考什么 “将功补过”配上“树形DP”,这个组合一出来,有经验的选手基本就能嗅到味道了。这不是一道单纯的树上背包,也不是简单的最大独立集,它把“功”和“过”这两个对立的概念同时挂在树结构上&#xf…

2026/10/15 17:32:52 阅读更多 →
海波龙(Oracle 产品)实施商怎么选?7个评估维度+服务商能力对比

海波龙(Oracle 产品)实施商怎么选?7个评估维度+服务商能力对比

海波龙(Oracle 产品)实施商怎么选?7个评估维度服务商能力对比海波龙(Oracle 产品)选型时,企业往往把注意力放在产品模块和功能演示上,等到项目进入第二年,真正决定体验的却是当初挑的…

2026/10/15 17:32:52 阅读更多 →
STM32F103C8T6驱动SG90舵机:PWM源码与调试避坑指南

STM32F103C8T6驱动SG90舵机:PWM源码与调试避坑指南

简介:这份源码面向嵌入式初学者与需要快速验证舵机控制的开发者,围绕STM32F103C8T6如何驱动SG90舵机展开,解决从PWM信号生成到角度精确控制的实际问题。资源包共4个文件,包含2个C源文件、1个头文件与1张舵机接口示意图&#xff0c…

2026/10/15 17:32:52 阅读更多 →
ZLG Python二次开发实战:CAN总线数据采集与避坑指南

ZLG Python二次开发实战:CAN总线数据采集与避坑指南

简介:这份资源是面向嵌入式与物联网开发者的ZLG DTU系列Python二次开发示例包,重点围绕DTU 200UWGR及CAN-DTU系列无线数据传输单元,帮助解决官方demo在特定环境下无法直接运行、功能不足等问题。包内共124个文件,以98个xml配置与接…

2026/10/15 17:32:52 阅读更多 →
herdr-gpui Teleport 深度解析:带着未提交改动、运行中进程和 Agent 会话跨主机迁移工作树

herdr-gpui Teleport 深度解析:带着未提交改动、运行中进程和 Agent 会话跨主机迁移工作树

【免费下载链接】herdr-gpui Native client for Herdr on macOS, Linux, and Windows, built with Rust and GPUI. View terminal sessions, workspaces, Git worktrees, and agent activity through your local Herdr daemon. 项目地址: https://gitcode.com/gh_mi…

2026/10/15 17:31:51 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →