ESP32隐藏射频通路:官方手册未记载的寄存器级调试与风险

1. 一条被忽略的射频通路到底意味着什么

第一次在频谱仪上看到那个不该出现的信号时,我盯着屏幕愣了大概十几秒。当时我在调一块基于ESP32的无线传感节点,本来只是例行扫一下底噪,结果在远离目标频点的地方发现了一个稳定的、有规律的杂散分量。起初我以为是外部干扰,换了屏蔽箱、换了电源、换了天线,那个信号依然在。后来把固件里所有射频相关的初始化代码逐行注释掉,它才消失。那一刻我意识到,这不是外部干扰,而是芯片内部某条通路被意外激活了。

这件事让我开始重新审视这颗被无数人用过的芯片。ESP32的官方手册、技术参考、API文档我都翻过不止一遍,里面关于射频前端的描述相当克制,基本围绕Wi-Fi和蓝牙两条主线展开。但实际硅片上的射频资源远比文档里写的要丰富。标题里说的“连官方都没写进手册的无线电通路”,指的就是这类存在于硬件层面、但未被官方文档正式描述、也没有公开API去调用的射频路径。它可能是某个测试模式留下的残留,可能是射频前端多路复用器的一个未使用分支,也可能是时钟树里某条可以耦合到天线的走线。

对普通开发者来说,这东西听起来像是玄学。但如果你做过射频相关的底层调试,就会明白:芯片流片时为了测试和良率筛选,往往会在硅片上预留一些额外的观测点和信号路径。这些路径在量产固件里通常被关闭,但硬件本身还在。只要你能找到正确的寄存器位、正确的时钟配置、正确的使能顺序,就能把它们“唤醒”。这跟超频、解锁隐藏功能是同一类事情,只不过发生在射频域,门槛更高,也更容易踩坑。

我写这篇东西,不是要教你去做违规的无线电发射。恰恰相反,我想把这条通路的来龙去脉、我踩过的坑、以及为什么我不建议你轻易去碰它,完整地讲清楚。适合读这篇的人,应该是对嵌入式射频有一定基础、看得懂寄存器手册、手里有频谱仪或者至少有个SDR接收端、并且明白“能跑通”和“能稳定量产”之间隔着多远距离的人。如果你只是想用ESP32连个Wi-Fi,那这篇内容对你没用,关掉就行。

2. 从时钟树到天线:这条通路是怎么被发现的

2.1 一次意外的杂散信号排查

事情的开头很普通。我在做一个低功耗的环境监测节点,用ESP32-C3做主控,周期性采集温湿度然后通过蓝牙上报。为了省电,我把射频部分设计成间歇工作:采集时射频关闭,上报时短暂开启。按道理,射频关闭期间底噪应该干净得像白纸。但实测发现,即便在射频“关闭”状态下,天线端口上依然能测到一个微弱的、频率约为目标频点三分之一的连续波分量。

这个三分频关系很关键。在射频集成电路里,分频器通常出现在锁相环的反馈路径或者本振生成链路中。如果分频器还在工作,说明至少有一部分射频时钟树没有被真正关断。我查了ESP32-C3的技术参考手册里关于低功耗管理的章节,里面明确写了射频关闭时相关时钟会被门控。但实测结果和文档描述对不上。

于是我开始做对照实验。第一组:完全擦除固件,让芯片停留在ROM bootloader阶段,此时射频默认关闭,杂散消失。第二组:烧录一个只初始化系统时钟、不碰任何射频寄存器的固件,杂散出现。第三组:在第二组基础上,逐位关闭时钟树里与射频相关的分支,观察杂散何时消失。最终定位到的是一个在手册里被标注为“保留”的时钟分频器配置位。把它关掉,杂散就没了。

2.2 为什么官方手册里找不到

这里要解释一个很多人误解的事情:芯片手册不是“硅片的完整说明书”,而是“官方支持的功能清单”。手册里写出来的,是经过验证、有驱动支持、有明确应用场景的功能。那些测试用的、调试用的、或者因为各种原因没有做成产品化接口的硬件资源,通常不会出现在公开文档里。这不是ESP32独有的现象,几乎每一颗射频SoC都有类似的情况。

具体到这条通路,它之所以没被写进手册,我推测有几个原因。第一,它原本是给产线测试用的,用来在封装完成后快速验证射频前端是否正常工作,不需要对最终用户开放。第二,它的性能指标可能没有经过完整表征,比如输出功率随温度漂移很大、谐波抑制不达标、或者在不同批次之间一致性很差。第三,开放它可能会带来合规风险,因为用户可能用它发射出不符合频谱模板的信号。基于这三点,官方选择把它藏起来,只保留硬件层面的存在,不提供任何软件接口。

但“藏起来”不等于“不存在”。只要你愿意花时间翻寄存器映射表、做对照实验、用仪器去测,就能把它找出来。我后来在几个不同批次的ESP32模组上都复现了这个现象,说明它不是某颗芯片的个体差异,而是设计里就有的东西。

2.3 这条通路的物理层结构推测

基于我的测量和寄存器分析,这条通路的大致结构是这样的:它从射频锁相环的某个中间节点引出,经过一个未被文档描述的分频器,再通过射频前端多路复用器的一个备用输入端口,最终耦合到天线开关的某个分支上。整条路径的增益很低,大概在负几十dBm量级,所以如果不做放大,它只能被频谱仪近距离测到,传不远。

但“传不远”是相对的。如果你在它后面加一级低噪声放大器,再接一个合适的天线,它的有效辐射距离可以显著增加。这也是为什么我说不要轻易去碰它:你一旦给它加了放大,它就不再是一个“微弱的杂散”,而是一个你可能无法完全控制其频谱特性的发射源。在很多地区,未经认证的无线电发射设备是受严格管制的,哪怕功率很小。我不希望任何人因为看了这篇内容就去尝试搭建发射链路。

3. 寄存器层面的实操拆解与关键参数

3.1 定位相关寄存器的方法

如果你手里有ESP32的技术参考手册,可以翻到射频寄存器那一章。手册里会列出大量寄存器,其中有一部分标注为“reserved”或者干脆没有描述。我的做法是:先把所有与射频时钟、射频前端、锁相环相关的寄存器地址整理成一张表,然后写一个简单的固件,在启动后逐个读取这些寄存器的默认值,记录下来。接着,在射频正常工作的情况下再读一遍,对比差异。差异出现的地方,就是射频初始化过程中被改动的寄存器。

这一步听起来简单,但实际操作时有个坑:ESP32的射频寄存器不是内存映射的,不能直接用指针去读。你需要通过特定的寄存器访问接口,而且访问之前要先使能射频时钟。如果时钟没使能,读出来的全是零。我一开始就栽在这里,以为某些寄存器默认值是零,后来才发现是访问条件不满足。

整理完差异表之后,重点关注那些在射频关闭后依然保持非零值的寄存器。正常情况下,射频关闭时相关寄存器应该被复位或者置为低功耗状态。如果某个寄存器在射频关闭后还保持着一个非默认值,说明它控制的功能没有被正确关断。我找到的那条通路,对应的就是一个这样的寄存器位。

3.2 关键配置位的含义与操作顺序

具体到操作层面,激活这条通路需要满足几个条件。第一,射频锁相环必须处于锁定状态,因为这条通路的信号源来自锁相环。第二,那个未文档化的分频器需要被使能,对应寄存器里的某一位要从0改成1。第三,射频前端多路复用器要切换到备用输入端口,这涉及另外两个寄存器的配置。第四,天线开关要导通对应分支。

操作顺序很重要。我试过先开分频器再锁锁相环,结果分频器输出不稳定,信号时有时无。正确的顺序应该是:先让锁相环锁定并稳定,再使能分频器,然后切换多路复用器,最后打开天线开关。每一步之间要留足够的稳定时间,我一般留1毫秒左右。如果切得太快,射频前端的状态机会卡住,需要整个射频模块复位才能恢复。

下面是我当时用的配置片段,基于ESP-IDF的环境,直接操作寄存器。注意这只是记录我当时的实验过程,不构成任何推荐或指导。

// 使能射频时钟 REG_SET_BIT(RF_CLK_EN_REG, RF_CLK_EN_BIT); // 等待锁相环锁定 while (!(REG_READ(RF_PLL_STATUS_REG) & PLL_LOCK_BIT)) { vTaskDelay(1); } // 使能未文档化的分频器 REG_SET_BIT(RF_DIV_CTRL_REG, DIV_EN_BIT); vTaskDelay(1); // 切换射频前端多路复用器到备用端口 REG_CLR_BIT(RF_FE_MUX_REG, MUX_MAIN_BIT); REG_SET_BIT(RF_FE_MUX_REG, MUX_AUX_BIT); vTaskDelay(1); // 导通天线开关对应分支 REG_SET_BIT(RF_ANT_SW_REG, ANT_AUX_BIT);

这段代码跑下去之后,频谱仪上就能看到那个信号了。频率大约是目标频点的三分之一,功率在负70dBm左右,具体数值随芯片批次和温度变化。

3.3 实测数据与稳定性观察

我拿三块不同批次的ESP32模组做了对比测试。第一块是较早的批次,信号频率稳定,功率波动在正负3dB以内。第二块批次较新,信号频率有轻微偏移,功率波动达到正负6dB。第三块是某个定制模组,信号时有时无,后来发现是天线开关的配置位定义和标准模组不一样。

温度方面,我把模组放进温箱,从零下十度升到七十度。信号功率随温度升高而下降,大概每升高十度下降1.5dB左右。频率也有漂移,但相对小一些。这说明这条通路的温度特性没有被补偿过,跟官方支持的射频通路完全不是一个级别。

长期稳定性更差。我让一块模组连续跑了四十八小时,期间信号功率缓慢下降,最后比初始值低了将近10dB。重新上电后又恢复。我怀疑是某个偏置电路在持续工作后发生了漂移,但没深入查。

注意:以上所有寄存器名称和位定义都是我为了说明过程而做的抽象描述,实际芯片的寄存器命名和地址与此不同。不要直接照搬代码,你需要根据自己手里的手册和实测去定位。

4. 这条通路能拿来做什么,以及为什么我劝你别做

4.1 潜在的应用场景分析

从纯技术角度讲,这条通路有几个可能的用途。第一,做射频底噪和杂散的研究,因为它提供了一个已知频率、已知大致功率的参考信号,可以用来校准接收链路。第二,做极低功耗的信标,因为它的功耗比正常Wi-Fi或蓝牙发射低不少,虽然功率也低,但在某些近距离场景下够用。第三,做硬件安全的测试用例,验证芯片在非官方配置下会不会出现意外行为。

但这些“用途”都有一个共同前提:你得能接受它不受控、不稳定、不一致。对于研究用途,这没问题,实验室里本来就要面对各种非理想情况。但对于任何要量产、要过认证、要保证用户体验的产品,这条通路都是灾难。它的频率可能落在你不能用的频段里,它的功率可能超出你所在地区的限制,它的温度漂移可能让你的接收端完全解调不了。

我见过有人想用它做“隐藏的通信通道”,觉得官方检测不到。这个想法很危险,也很天真。频谱监测设备比你想象的要灵敏得多,一个持续存在的、不符合频谱模板的信号,很容易被识别出来。而且这条通路的信号特征跟正常Wi-Fi或蓝牙完全不同,稍微有点经验的射频工程师一眼就能看出异常。

4.2 合规风险与技术债

合规方面我不想展开太多,只说一句:任何无线电发射设备,在大多数地区都需要经过认证才能合法使用。你自己在实验室里用频谱仪测,不对外辐射,那是你的自由。但一旦你给它加了天线、加了放大器,让它对外辐射,性质就变了。我不建议任何人去试探这条线。

技术债方面,这条通路没有任何官方支持。这意味着:没有驱动、没有示例、没有勘误、没有社区支持。你遇到问题只能自己查、自己试。而且它可能在未来的芯片版本里被移除或者改变行为,你的代码到了新批次上就跑不通了。我后来拿到的某个新批次模组,那个分频器使能位就完全没反应了,读回来一直是零。这说明官方在后续流片里把它关掉了。

4.3 如果你非要研究,我的几点建议

第一,不要在量产产品上碰它。拿单独的模组、单独的板子做实验,跟你的正式项目物理隔离。第二,一定要有频谱仪或者至少一个能看频谱的SDR接收端,不然你根本不知道自己在发射什么。第三,做好屏蔽,别让信号泄漏出去干扰别人。第四,记录你用的芯片批次、模组型号、固件版本,因为不同批次行为可能完全不同。第五,别在上面花太多时间,这东西的技术价值有限,官方不支持是有原因的。

5. 排查与调试过程中的常见问题

5.1 信号找不到或者时有时无

这是最常见的问题。原因通常有三个:锁相环没锁定、分频器使能位写错了、或者天线开关没切过去。我的排查顺序是:先用示波器或者频率计确认锁相环输出正常,再读回分频器控制寄存器确认写入成功,最后检查天线开关的配置。如果这三步都正常但信号还是没有,那可能是芯片批次不支持,换一块试试。

还有一个隐蔽的坑:某些ESP32模组的天线开关是外部器件,不是芯片内部集成的。这种情况下,你光配置芯片寄存器没用,还得把外部开关的控制引脚拉对。我一开始就忽略了这一点,折腾了半天才发现模组原理图上有个额外的射频开关芯片。

5.2 信号功率远低于预期

如果你测到的信号比预期低很多,先检查测量链路。频谱仪的输入衰减设太大了?探头或者电缆损耗太大?天线没接好?这些外部因素排除之后,再考虑芯片内部。分频器的输出功率本身就很低,如果你没加任何放大,负七八十dBm是正常的。另外,射频前端多路复用器的备用端口可能有额外的衰减,这个衰减值在不同批次之间不一样。

5.3 配置后芯片行为异常

我遇到过配置完这条通路之后,Wi-Fi连不上了。原因是射频前端多路复用器被切到了备用端口,主端口就断了。解决办法是在用完这条通路之后,把多路复用器切回主端口,并且复位射频前端状态机。但复位之后,那条通路也就断了。所以你不能同时用正常Wi-Fi和这条隐藏通路,至少在我试过的配置下不行。

还有一个更严重的情况:配置错误导致射频锁相环失锁,整个芯片的射频功能都挂了。这时候只能通过断电重启来恢复。如果你在调试过程中频繁遇到这个,建议在代码里加一个看门狗,检测到射频异常就自动复位。

5.4 常见问题速查表

现象可能原因排查方法
完全找不到信号锁相环未锁定读锁相环状态寄存器
信号时有时无分频器使能不稳定检查写入时序和稳定延时
功率远低于预期外部开关未配置查模组原理图确认开关类型
Wi-Fi同时失效多路复用器冲突用完切回主端口
新批次无反应硬件已移除换旧批次模组验证
频率偏移大温度漂移做温度补偿或放弃

6. 从这条通路看芯片设计的底层逻辑

6.1 为什么芯片里会有“多余”的硬件

很多人觉得芯片设计应该是精确的、没有冗余的。但实际上,任何一颗复杂的SoC里都有大量“多余”的硬件。有些是测试用的,有些是不同产品线共用的,有些是设计迭代留下的。这些硬件在正常使用中不会被激活,但它们确实存在,而且消耗面积和功耗。芯片设计者会在流片后通过固件或者熔丝把这些部分关掉,但关掉的方式不一定彻底。

ESP32作为一颗集成Wi-Fi和蓝牙的SoC,射频部分尤其复杂。它需要支持多种模式、多种速率、多种频段,射频前端的多路复用器本来就有多个输入输出端口。正常使用时只用其中一部分,剩下的端口在硬件上还在,只是没有驱动去配置它们。我找到的那条通路,很可能就是某个备用端口被意外使能的结果。

6.2 对开发者的启示

这件事给我的最大启示是:不要完全相信文档。文档是给人看的,硅片是给电跑的。两者之间永远有差距。对于大多数应用开发,这个差距不影响你干活。但如果你做的是底层、是射频、是安全相关的,那就得养成“文档之外还要实测”的习惯。

另外,芯片的“关闭”状态往往不是绝对的。你以为关掉的模块,可能只是时钟被门控了,电源还在,偏置还在,某个寄存器还保持着一个非默认值。真正的低功耗设计,需要你逐个确认每个模块的状态,而不是相信一个全局的“关闭”命令。

6.3 后续可以继续挖的方向

如果你对这类底层射频通路感兴趣,还有几个方向可以继续挖。第一,蓝牙和Wi-Fi的射频前端之间有没有串扰通路。第二,射频锁相环的各个中间节点有没有被引出到测试焊盘。第三,芯片的随机数生成器有没有可能受到射频信号的影响。这些方向都需要仪器和耐心,但如果你喜欢这种“在文档之外找东西”的感觉,会很有意思。

我个人在实际操作中的体会是,这类探索最大的价值不是找到某个具体通路,而是训练自己“不迷信文档、用仪器说话”的思维方式。这种思维方式在射频调试、硬件安全、低功耗优化里都用得上。至于那条通路本身,我后来把相关代码全部删掉了,因为它在我的项目里没有任何正当用途,留着只会增加风险和不确定性。如果你也在某个芯片里发现了类似的东西,我的建议是:记录、分析、然后放下。知道它在那里就够了,不一定非要用它。

相关新闻

Android图形系统核心:BufferQueue、VSYNC与HWC协同机制解析

Android图形系统核心:BufferQueue、VSYNC与HWC协同机制解析

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

2026/10/20 19:19:32 阅读更多 →
端侧AI加速实战:NPU/TPU架构、量化和部署调优全解析

端侧AI加速实战:NPU/TPU架构、量化和部署调优全解析

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

2026/10/20 19:19:32 阅读更多 →
公众号约玩树洞系统源码解析:匿名会话与陪聊计费设计

公众号约玩树洞系统源码解析:匿名会话与陪聊计费设计

简介:这份资源是面向公众号运营者与陪聊、约玩类社交产品开发者的树洞系统源码,基于FastAdmin框架构建,属于全开源版本,与市面上常见的加密版不同,其api控制器目录未做加密处理,便于二次开发与调试。前端为…

2026/10/20 19:19:32 阅读更多 →

最新新闻

放弃图形化工具,用Git Bash高效管理本地文档的完整指南

放弃图形化工具,用Git Bash高效管理本地文档的完整指南

1. 为什么我最终放弃了图形化工具,回归 Git Bash 管理本地文档很多人第一次接触版本管理,都是从图形化客户端开始的。点几下按钮,仓库就建好了,提交记录也看得见,似乎没什么门槛。但用得越久,我越发现一个尴…

2026/10/20 20:04:05 阅读更多 →
从三个字母到可运行系统:模糊需求下的技术推演与工具设计

从三个字母到可运行系统:模糊需求下的技术推演与工具设计

1. 当标题只剩三个字母时,我在想什么第一次看到这个项目标题的时候,我盯着屏幕愣了大概十秒钟。就三个字母,"rea"。没有正文,没有关键词,没有摘要描述,什么都没有。这种输入状态其实比给一堆杂乱…

2026/10/20 20:04:05 阅读更多 →
贝叶斯优化实战:从网格搜索到高效超参数调参

贝叶斯优化实战:从网格搜索到高效超参数调参

简介:面向机器学习与深度学习实践者的贝叶斯优化实战资源包,聚焦超参数自动化调优这一影响模型性能的关键环节,解决手动试错低效、难以找到最优组合的痛点。包内共4个文件,含两个Python脚本,分别演示贝叶斯优化在ML与D…

2026/10/20 20:04:05 阅读更多 →
C盘无损扩容实战:用DiskGenius挪空间不重装系统

C盘无损扩容实战:用DiskGenius挪空间不重装系统

简介:本资源是一份面向Windows系统用户、特别是SSD主盘空间紧张的普通用户与IT初学者的C盘无损扩容实操指南,解决不重装系统、不格式化分区、不丢失数据的前提下扩大系统盘容量的核心痛点。教程基于免费版DiskGenius(v5.4.6.1441)…

2026/10/20 20:04:05 阅读更多 →
泰山派移植OV8858驱动并添加自动聚焦功能

泰山派移植OV8858驱动并添加自动聚焦功能

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

2026/10/20 20:04:05 阅读更多 →
百度网盘免费发放500G空间了,大家记得及时领取

百度网盘免费发放500G空间了,大家记得及时领取

话不多说,直接上图免费网盘空间500G是有30天时效性的,不过每个自然月都是可领取的,大家过期之后记得重新领取即可。比较适合短期应急使用,全程免费,官方长期活动。

2026/10/20 20:03:02 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练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/20 9:50:45 阅读更多 →