射频功放VBW深度解析:被低估的包络带宽如何影响ACPR与DPD
做射频功放调试这些年我越来越觉得“VBW”是个被低估的参数。很多人选管子、调匹配、看ACPR折腾半天指标下不去其实问题根本不在匹配网络也不在静态工作点而是VBW这个隐藏角色在捣乱。今天就把这块掰开揉碎聊清楚。1. VBW到底是什么——先从名字说起1.1 别和频谱仪上的VBW搞混我第一次接触VBW这个词是在频谱仪面板上那个叫Video Bandwidth视频带宽作用是平滑显示噪声底。但功放语境下的VBW完全是另一码事它指的是功率放大器对输入信号包络变化的响应带宽。简单说你的信号不是纯正弦波而是有幅度起伏的调制信号这个幅度起伏本身就是一种“信息”有个变化速度。VBW就是功放能“跟上”这个起伏变化的最大速度。跟不上会怎样增益会被包络调制输出信号出现失真邻道功率恶化EVM变差。在器件datasheet里你很少看到厂家直接标“VBWXX MHz”这种参数它不像增益、P1dB那么好量化。但你可以在负载牵引数据、S参数里或者通过双音测试间接感知它的存在。很多工程师调了一辈子功放也没刻意测过VBW但每次遇到“宽带信号下ACPR突然恶化”的案子其实都是在跟VBW搏斗。1.2 包络带宽和信号带宽是什么关系要理解VBW先得理解包络的频谱。一个100MHz带宽的5G NR信号载波是3.5GHz但你用包络检波器去看它的幅度变化这个包络信号的频谱接近基带信号本身同样是100MHz量级。也就是说功放既要处理3.5GHz的载波也要让偏置电路、电源去响应100MHz的包络波动。载波频率高匹配网络容易做包络频率低但偏置网络的电感和电容在这个频率段的阻抗特性往往才是真正决定成败的地方。这一步理解了后面所有问题都好解。包络的带宽决定了VBW的需求量级而VBW的实现靠的是整个偏置馈电链路在低频段的阻抗行为。2. VBW不足会引发哪些问题——实测现象和机理2.1 电热记忆效应是怎么来的功放管在工作时漏极或集电极会有电流波动对应功耗波动结温跟着波动。温度变化又会改变器件的增益和相位这就是热记忆效应。而偏置网络的电容、电感对包络频率呈现的阻抗会导致偏置电压随包络波动这属于电记忆效应。VBW不足本质上就是电记忆效应和热记忆效应叠加的结果。热记忆效应的时间常数通常在微秒到毫秒级对应包络频率大概在几十kHz到几MHz电记忆效应则由偏置馈电和匹配网络的电抗决定响应更快可以到几十MHz。在窄带系统里比如2G GSM信号带宽200kHz包络变化慢VBW差一点影响不大。但到了5G NR、Wi-Fi 6/7这类宽带系统信号带宽动辄几十上百MHz包络变化极快VBW短板就被无限放大。2.2 频谱不对称和DPD失效是最典型的两个坑VBW不足最直观的现象是频谱不对称。理想情况下功放输出的ACPR左右两边应该差不多。但VBW不足时上边带和下边带的恶化程度会明显不同。原理不复杂包络调制引起的非线性分量和载波之间的相位关系在上下边带是相反的一个增强一个抵消看起来就是一高一低。第二个坑是DPD失效。预失真系统建模时默认功放是准静态的、无记忆或短记忆的。VBW不足引入的是长记忆效应DPD的训练算法往往“看不见”或“补偿不动”这部分。体现在指标上就是DPD开启后ACPR确实好了不少但始终达不到预期或者随着信号带宽增大DPD改善量急剧缩水。我实际测试过一个氮化镓功放用100MHz NR信号测ACPR静态偏置点、匹配都调得很干净DPD开起来也只改善了8dB怎么调都上不去。后来把漏极馈电的电容组合改掉同样条件下DPD改善量直接飙到15dB以上。这就是VBW在背后起作用。2.3 宽带载波聚合场景下的隐藏风险还有一个容易被忽视的场景是载波聚合。两个载波间隔几十上百MHz包络频率可能包含了两个载波之间的拍频分量。如果VBW不够这个拍频分量会在功放内部产生交调正好落在带外或者相邻信道直接击穿ACPR指标。有人会觉得功放不是工作在饱和区增益压缩已经够厉害了包络变化应该没那么敏感。但实际在回退功率下VBW不足引起的AM-PM失真依然很明显对高阶QAM信号的EVM影响很大。所以不要以为只有大功率、深压缩的时候才需要关心VBW。3. 哪些电路节点决定了VBW——设计层面的关键点3.1 栅极和漏极偏置网络的RC时间常数先看最常见的罪魁祸首偏置网络的RC时间常数。功放管的栅极或基极偏置端通常会有几百pF到几nF的旁路电容配合偏置电阻或扼流电感形成一个低通滤波器。这个低通滤波器的截止频率如果低于包络频率包络信号就被“滤掉”了VBW自然上不去。举个例子栅极偏置端有1kΩ电阻并联100pF电容时间常数是100ns换算成截止频率约1.6MHz。对于10MHz包络带宽的信号这个偏置几乎是废的。计算方式很简单f_c 1 / (2πRC)。想覆盖100MHz包络带宽时间常数要做到1.6ns以内100pF的电容配到25Ω以下。这也是为什么很多大功率管的栅极偏置不能用简单RC必须用有源电路或低阻馈电的原因。3.2 漏极馈电电感在包络频段的谐振点漏极馈电通常用1/4波长线或扼流电感保证射频信号不串到电源里去。但1/4波长线只在中心频率附近呈高阻对低频包络分量来说它的阻抗很低相当于把包络短路到地。这就导致一个尴尬的情况射频匹配做得很漂亮但包络信号在馈电端被大电容短路VBW直接崩掉。实际设计中馈电端的旁路电容往往兼顾射频接地和电源滤波但电容本身又有ESL和ESR在特定频率会形成谐振谐振点附近的阻抗可能升得很高反而让包络信号无法流过。我曾经调过一款LDMOS功放输出功率50W工作频率2.4GHz漏极馈电用了1000pF和0.1uF并联旁路结果在80MHz附近出现明显谐振ACPR恶化。换成低ESL的介质电容谐振消失VBW明显改善。这个坑在datasheet里没人会提醒你。3.3 匹配网络低频段的阻抗延续性匹配网络的设计目标通常是让高频段的S11足够好但很少有人看低频段。实际上输出匹配网络对包络频率的阻抗也会影响VBW。原因在于功放管的输出端等效为一个受控电流源负载阻抗不仅包括基波匹配还包括包络频率下的阻抗。如果这个包络阻抗太低包络电流被旁路掉输出包络就变弱如果太高又会引起额外的电压摆动影响线性度。设计时建议仿真一下从几十kHz到几十MHz的阻抗轨迹确保这个频段内负载线不会出现严重的短路或开路点。尤其是宽带匹配结构比如多节L型或传输线变压器低频段的阻抗特性很容易被忽略。3.4 器件本身的陷阱效应和衬底特性半导体工艺本身也会限制VBW。氮化镓器件的陷阱效应砷化镓器件的衬底陷阱都会在低频段引入频率色散。具体表现就是跨导和输出电导随包络频率变化导致AM-AM和AM-PM失真。这部分属于器件固有属性外部电路能做的有限。选型时如果明确要做宽带调制信号尽量选厂家标注了“适用于宽带应用”的管子或者直接对比不同管子在低频段的输出阻抗特性。很多时候两颗管子标称增益、功率都一样但VBW一个够用一个不够差别就在这。4. 怎么测VBW——实操方法和判断标准4.1 双音信号扫频法双音测试是评估VBW最常用的方法。设置两个频率间隔极小比如100kHz的等幅载波通过功放后观测三阶互调产物然后把频率间隔逐步拉大比如1MHz、10MHz、50MHz、100MHz。如果功放是理想无记忆的三阶互调产物应该基本对称且大小不随间隔变化。VBW不足时频率间隔越大互调产物越不对称或者整体幅度明显增大。原因就是包络频率等于双音间隔间隔越大包络变化越快功放越跟不上。判断标准在规定工作功率回退下双音间隔扫到目标信号带宽时IM3不对称度不超过1dB可以接受超过3dB基本可以判定VBW有问题。4.2 宽带调制信号和DPD残差法双音测试只是初筛最终还是要上宽带调制信号。用和实际系统一致的信号带宽比如100MHz 5G NR直接测ACPR、EVM。更专业的方法是开DPD跑完训练后看残差频谱。VBW不足的典型残差特征是在带外远端出现不对称的、无法收敛的凸起。DPD本身能力越强这个特征越明显。如果DPD精度足够高残差还压不下去那大概率不是DPD算法问题而是功放物理响应跟不上。4.3 低频频响和S参数辅助判断有条件的话直接测功放在包络频段的频率响应。方法是在现有偏置电路基础上用网络分析仪测栅极或漏极偏置端的S参数或阻抗看低频段的平坦度和谐振点。这个测量不需要太复杂的夹具把功放的射频输入输出端接50Ω负载或适当端接然后从偏置端口看进去观察从10kHz到100MHz的阻抗曲线。如果有明显谐振峰或快速滚降对应的包络频率就是VBW的瓶颈。5. 改善VBW的工程手段——从电路到系统协同5.1 偏置馈电的电容组合优化最简单的改善方法是优化偏置端口的电容组合原则是使用低ESL、低ESR的电容并且用多个不同容值并联避免单一电容的寄生谐振。我常用的组合是0.1uF、1000pF、100pF、10pF四级并联必要时加1uF钽电容或陶瓷电容做低频储能。关键是每颗电容的谐振频率要错开让组合后的阻抗在目标包络频段内保持低阻。实际操作中我会先做仿真把所有电容的S参数模型带进去扫一个阻抗曲线确保没有超过目标值的峰。这里有个经验数值对于100MHz包络带宽偏置端口阻抗在包络频段内最好控制在5Ω以下越低越好。不是说必须这样而是低于这个值VBW对ACPR的影响才不明显。5.2 有源偏置和包络跟踪的引入RC无源偏置搞不定时就该上有源电路了。有源偏置用运放或射极跟随器构成低输出阻抗的偏置源把RC时间常数做小几个数量级。更进一步是包络跟踪或包络消除再恢复技术。包络跟踪功放的电源电压跟随射频包络变化相当于把VBW要求转移到电源变换器上。这属于系统级方案效率和线性度都能同时受益但复杂度也高要求电源变换器的带宽比包络带宽还宽目前的GaN高速开关电源已经能做到几十MHz级别。如果只做AB类功放不追求极致的包络跟踪也可以在偏置电路里加入主动的“包络注入”补偿把包络信号反向叠加到偏置端抵消VBW不足引起的失真。这个方案对窄带系统有效宽带系统里实现起来比较费劲。5.3 匹配网络和版图布局的协同偏置电路和匹配网络要放在一起调。很多人单独优化匹配单独优化偏置最后联调时才发现相互影响。版图布局上偏置走线尽量短、宽减小寄生电感。旁路电容要靠近管脚放置最好直接焊在管脚旁边的接地焊盘上。寄生电感哪怕是1nH在100MHz包络频率下也有0.63Ω的阻抗对于低阻偏置源来说已经是不可忽略的量。还有一个容易忽略的点是接地孔的分布。旁路电容的接地孔如果距离远、过孔孔径小接地回路电感会很大等效抬高了电容的ESL。我见过不少案例电容规格没问题就是接地孔太少导致VBW上不去。多打几个过孔并联效果立竿见影。5.4 DPD系统侧的配合策略DPD虽然不能包治百病但可以配合改善。一方面增大DPD的建模带宽和采样率让预失真信号本身就能包含更高阶的记忆多项式展开减轻对物理电路VBW的依赖。另一方面DPD的反馈通路带宽要足够。很多DPD效果不佳其实是反馈链路太窄预失真器根本看不到高频包络的失真自然也就没法补偿。反馈链路的带宽至少要和目标信号带宽一致最好留20%-30%的余量。但从工程角度说DPD只是外科手术VBW是生理机能。机能不行手术效果必然打折。优先解决物理层的问题再让DPD做精细化补偿才是稳妥的路线。6. 常见问题排查——现场实录和速查表6.1 一个典型的ACPR不对称排查案例去年做过一个项目2.6GHz频段100W氮化镓功放5G NR 100MHz信号ACPR上边带-30dBc下边带-35dBc差5个dB怎么看怎么别扭。第一步检查静态工作点Vgs、Idq都正常第二步扫匹配输出匹配动了好几个版本S11和Load Pull都显示最优ACPR不对称还是老样子第三步上双音测试间隔从1MHz扫到20MHzIM3不对称度从0.5dB恶化到4dB基本锁定VBW问题。然后查偏置馈电发现漏极旁路电容用的是1000pF高Q值C0G在包络频段里跟馈电电感形成了串联谐振阻抗在15MHz附近冲到快30Ω。换成低Q值的X7R并联组合后同样的DPD配置ACPR不对称度降到1dB以内。整个过程折腾了快两个星期其实问题就一颗电容的选型。6.2 快速定位表格现象可能原因排查手段应对建议ACPR上下边带不对称偏置网络低频谐振电记忆效应双音间隔扫频偏置端口阻抗测试优化电容组合降低偏置源阻抗DPD改善量不达预期VBW不足导致长记忆效应观察DPD残差频谱加大信号带宽对比优化偏置电路增大DPD建模带宽宽带信号下EVM突增包络频率范围内AM-PM失真增大解调EVM分层分析测量AM-PM曲线VBW优化考虑包络跟踪方案载波聚合场景ACPR恶化CA拍频分量落入包络响应盲区不同CA间隔测试双音等效扫频提高VBW必要时改用异质结器件功率回退后仍线性差热记忆效应主导低包络频率双音测试红外热像观察改善散热降低热阻路径6.3 数据手册之外的选型经验选型时除了看增益、功率、效率还可以留一个心眼找厂家要低频段的S参数或大信号模型自己仿真一下偏置端口的阻抗。很多厂家的模型只保证射频段的准确性低频段可能不准但至少能看个趋势。另外一个土办法直接看管子的芯片尺寸和封装。一般来说芯片面积大、热阻低的管子热记忆效应相对弱一些VBW表现会好一点。封装寄生参数小的比如裸片或倒装封装比传统引线键合封装的VBW潜力更大。这不算绝对规律但可以作为一个快速筛选的参考。7. 聊点经验总结——VBW的边界和折中VBW不是越高越好。偏置网络带宽做高了可能引入低频不稳定功放容易自激或出现非期望的振荡。电源噪声也更容易串进来反而恶化相位噪声和杂散。所以实际设计里VBW的目标值应该和应用场景挂钩。窄带系统做到几MHz就够了宽带系统至少覆盖信号带宽的1.5到2倍。回退功率大的系统对VBW的要求相对宽松逼近饱和功率运行的系统VBW直接决定线性化能力的天花板。我自己在工程实践中的体会是每次遇到“宽频带信号下线性指标异常”的案子先别急着怀疑DPD和匹配网络把VBW这一项过一遍往往能省下大量盲目调试的时间。功放的每一项参数都不是孤岛VBW和IMD、ACPR、EVM、记忆效应是一条线上的蚂蚱理解了VBW很多看似玄学的现象就有了抓手。最后再分享一个实用小技巧在调试初期用双音间隔快速扫一遍功放把IM3不对称度当作一个“体检指标”如果这个指标在目标信号带宽内保持良好那后续的匹配和DPD调试会顺利很多。这个习惯帮我避开了无数次“调了两周才发现是偏置问题”的坑也推荐给你试试。

相关新闻

从零开始AI工程:数据、训练、部署到监控的完整实践指南

从零开始AI工程:数据、训练、部署到监控的完整实践指南

如果你最近也准备啃 AI 工程这块硬骨头,那这个标题里的 from scratch 我太有感触了。所谓 AI 工程,不是跑通一个 notebook 就算完事,而是从数据、模型、训练、评估、部署到监控,一条链路都能稳定落地。这个项目就是典型的最小化落…

2026/10/4 7:50:40 阅读更多 →
从零手搓AI工程:环境搭建、数据管道与推理服务实战

从零手搓AI工程:环境搭建、数据管道与推理服务实战

1. 从零手搓AI工程:为什么我不建议你直接调包很多人一听到“AI工程”这四个字,第一反应就是打开某个云平台,拖几个组件,调几个API,然后跑通一个Demo,就觉得自己已经入门了。我刚开始接触这个方向的时候也是…

2026/10/4 7:50:22 阅读更多 →
GH700X显示驱动调试实战:SPI+LVDS与测试盒的完整指南

GH700X显示驱动调试实战:SPI+LVDS与测试盒的完整指南

刚把一个模组项目从点亮到量产跑完,趁着热乎劲儿还在,把GH700X这套调试流程里最核心的东西整理出来。尤其是SPI接口加LVDS输出,再配上测试盒这套组合,看起来是标准的显示驱动方案,但实际调起来有不少细节坑&#xff0c…

2026/10/3 6:04:35 阅读更多 →

最新新闻

JavaWeb实验室预约管理系统:从冲突检测到一键预约的落地实践

JavaWeb实验室预约管理系统:从冲突检测到一键预约的落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 7:50:11 阅读更多 →
GhPython反射机制解决Image Sampler图片刷新与曲线更新难题

GhPython反射机制解决Image Sampler图片刷新与曲线更新难题

做了这么多年Grasshopper参数化,我遇到过最憋屈的情况之一,就是用GhPython批量替换画布上Image Sampler组件的图片文件时,代码跑完没有任何报错,预览缩略图还是旧图,下游依赖采样结果输出的曲线也保持原来的形状&#…

2026/10/4 7:50:11 阅读更多 →
Flutter鸿蒙实现K8s运维终端:kubeconfig解析与TLS适配实践

Flutter鸿蒙实现K8s运维终端:kubeconfig解析与TLS适配实践

做云原生运维的人,应该都有过这种经历:集群告警了,人却在外边,手边只有一台手机,想看一眼 Pod 状态、翻一下日志,都得先找电脑。我最近用 Flutter 写了一个跑在鸿蒙设备上的 K8s 运维终端,核心思…

2026/10/4 7:50:11 阅读更多 →
AI系统综述写作:Claude Scientific Writer文献综述与引用管理完整教程(PubMed/OpenAlex/BibTeX全覆盖)

AI系统综述写作:Claude Scientific Writer文献综述与引用管理完整教程(PubMed/OpenAlex/BibTeX全覆盖)

AI系统综述写作:Claude Scientific Writer文献综述与引用管理完整教程(PubMed/OpenAlex/BibTeX全覆盖) 【免费下载链接】claude-scientific-writer A general purpose scientific writer 项目地址: https://gitcode.com/gh_mirrors/cl/clau…

2026/10/4 7:50:11 阅读更多 →
锂电池废料回收实战:钴镍锂怎么检测、怎么计价,别按黑粉重量卖

锂电池废料回收实战:钴镍锂怎么检测、怎么计价,别按黑粉重量卖

锂电池废料回收实战:钴镍锂怎么检测、怎么计价,别按黑粉重量卖这两年电池的废料来源彻底变了:早年是手机电池和笔记本电芯,现在主力变成了动力电池退役模组、正极厂涂布废极片、卷绕切边的边角料,还有一批一批化成车间…

2026/10/4 7:50:11 阅读更多 →
Flutter跑马灯无极滚动算法实践与鸿蒙适配要点

Flutter跑马灯无极滚动算法实践与鸿蒙适配要点

前阵子给一个银行客户做App首页改版,需求清单里有一项写着“公告轮播,无限循环,不能看到回弹”。我心想这不就是个跑马灯嘛,一行Text加个AnimationController,十分钟搞定。结果真写起来才发现,跑马灯这三个…

2026/10/4 7:49:11 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00: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/2 10:36:31 阅读更多 →
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/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练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/3 9:42:36 阅读更多 →