news 2026/9/20 8:04:31

Qt for MCUs 2.11 LTS发布:ESP32-S3与RA8D1支持与MCU地图渲染解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt for MCUs 2.11 LTS发布:ESP32-S3与RA8D1支持与MCU地图渲染解析

Qt for MCUs 2.11 LTS 正式发布,同时 Qt 5.15.19 也放出来了,官方直接把它标成 Qt 5 的最终版本。这两条消息放在一起,信息量其实挺大的——一边是面向超低资源设备的 Qt for MCUs 终于出了一个长期支持版本,而且这次明确支持 ESP32-S3 和瑞萨 RA8D1,地图渲染相关的 QML 能力也有实打实的更新;另一边的 Qt 5 在迭代了整整十五年之后,正式走进历史。我第一次用 Qt 还是 Qt 4.x 时代,在 PC 上写上位机,后来慢慢过渡到 Qt 5,再到现在的 Qt 6,没想到有一天 Qt 5 会以这样一个明确的版本号画上句号。对于一个做嵌入式上位机、偶尔下到 MCU 层画界面的开发者来说,这两个版本都值得花点时间聊一聊。这篇文章我会把这次发布的核心信息拆开讲清楚,包括 LTS 到底意味着什么、ESP32-S3 和 RA8D1 这两个平台各自的门道,以及 MCU 上做地图渲染的落地思路和几个容易踩的坑。

1. 两个版本一起发布的信号:LTS 与“最终版”到底意味着什么

1.1 LTS 不是“又一个大版本”,而是量产计划的定心丸

Qt for MCUs 这个产品线和桌面 Qt 的节奏一直不太一样。桌面 Qt 每半年左右出一个大版本,社区和商业授权用户都在跟着跑;而 Qt for MCUs 作为嵌入式领域相对较新的产品线,以前给人的感觉是“更新快、变动也不小”,今天加个平台支持,明天调一下 QML 运行时。这种节奏对评估选型的人来说其实挺难受的,因为你没法跟老板保证“我们用的这个版本三年后还有人管”。而 Qt for MCUs 2.11 LTS 的出现,恰恰就是为了解决这个信任问题。

什么是 LTS?Long Term Support,长期支持版本。意味着官方会在一段明确的时间内持续发布补丁,修崩溃、修内存问题、修特定平台的兼容性,而不是逼着你跟着新功能跑。做嵌入式量产的人都知道,一台设备从立项到上市可能一年半载,之后还有三五年的维护期。芯片会不会停产、编译器要不要升级、RTOS 能不能换,这些都是风险点。如果 UI 框架的版本像“过山车”一样,每次升级都带来 API 调整,那代价太大了。所以 LTS 对齐的其实不是技术狂热者,而是做产品规划、做认证、做长期供应链的人。有了 LTS,项目可以把 UI 框架当成一个“固定零件”锁定下来,剩下的精力放在业务功能上。

另外,这次 2.11 LTS 顺带把 ESP32-S3 和 RA8D1 拉进了官方支持列表,这个动作很值得注意。ESP32-S3 是乐鑫面向 AIoT 和 HMI 的明星芯片,市场热度极高;RA8D1 是瑞萨基于 Cortex-M85 内核的高性能 MCU,内置 2.5D 图形加速器。这两个平台一个走性价比和无线,一个走高算力和图形性能,基本上把 MCU 级 HMI 的两个主要流派都覆盖了。结合 Qt for MCUs 2.11 LTS 这个定位来看,不难猜出 Qt 的意图:他们把 MCU 上的 UI 开发当成一个成熟赛道在经营,而不是再做实验性探索了。

1.2 Qt 5.15.19:老树最后一片叶子,为什么还有人要

再来看 Qt 5.15.19。官方把它称为 Qt 5 的最终版本,这个说法本身就很有分量。Qt 5 系列从 2012 年底的 5.0 开始,一路走到今天的 5.15.19,十几年时间。对很多嵌入式团队来说,Qt 5.15 是真正的“定版本”:从 5.15.3 之后,Qt 5.15 线进入了长期支持阶段,稳定性和兼容性优先,新特性基本冻结。这也是为什么很多工控、医疗、车载项目到现在还锁死在 Qt 5.15.x 上。不是大家不想升级到 Qt 6,而是 Qt 6 的模块划分、构建系统、部分 API 都有破坏性变化,对一个已经过认证、稳定跑了好几年的产品来说,UI 框架升级的回归测试成本和风险都非常高。

所以 Qt 5.15.19 的实际意义可以分成两层。对仍然在维护 Qt 5 存量项目的团队来说,这是一个最终的安全补丁版本,至少他们可以明确知道“Qt 5 的最后一版修了什么”,后续做风险评估时有据可查。对新项目或者还没被历史包袱绑住的团队来说,这更像是一个明确信号:不要再开 Qt 5 的新坑了。如果你现在启动一个全新项目,理性选择要么是 Qt 6 搭配合适的 LTS 版本,要么是 Qt for MCUs 解决小屏低资源场景,而不是继续沿用 Qt 5 的分支。

我也看到有人担心 5.15.19 之后安全问题没人管了,这个担心有一定道理,但也别过度解读。商业授权的客户仍然有对应的商业支持渠道,社区用户则要看整个生态的实际情况。Qt 5 这个分支在业界已经存在了足够长时间,真正紧急的问题大概率早就被发现了;5.15.19 作为收尾版本,更重要的是给大家一个确定性的结束点,而不是留下一个无主项目。

2. 新平台支持拆解:ESP32-S3 和 RA8D1 的门道

2.1 ESP32-S3:把 Wi-Fi 塞进 HMI,内存带宽才是胜负手

先聊 ESP32-S3。这芯片最近在 HMI 圈子里出镜率极高,核心规格大家都眼熟:双核 Xtensa LX7,主频 240MHz,片上 SRAM 大概 320KB 左右,关键是可以外挂 PSRAM 和大容量 SPI NOR Flash。它自带 USB-OTG 和 LCD 接口,可以直接驱动 RGB 屏和 8080 并口屏,还带了一堆 I2C、SPI、UART。从“能跑 Qt for MCUs”这个角度,ESP32-S3 最大的优势不是算力强,而是三点:Flash 大、PSRAM 可扩展、Wi-Fi/BLE 集成度极高。这意味着你可以把 UI 资源、字体、图片、甚至地图瓦片都存在大容量 Flash 里,运行时需要的缓存放进 PSRAM,同时还能保持网络连接做数据同步。

不过我之前看到很多朋友问到一个问题:MCU 内部的 Flash 到底是用什么接口访问的?这个问题放在 ESP32-S3 上特别典型。严格说 ESP32-S3 芯片内部并不像老式单片机那样集成大容量 NOR Flash,而是通过 SPI0/SPI1 控制器外挂一颗 SPI NOR Flash 芯片,再通过 Cache/MMU 把这个外部 Flash 映射到统一的地址空间里。CPU 每次访问某个地址,硬件自动帮你把对应的 Flash 内容缓存到内部 SRAM 中,对软件来说就像直接读内存一样,你不需要手动发 SPI 读命令。这也是为什么 ESP32-S3 跑图形程序时,可以把字库、图片放在 Flash 里直接用指针访问,而不用担心读取速度太慢。

但这里有个非常容易被忽略的瓶颈:内存带宽。图形渲染特别吃内存,反复从 Flash/PSRAM 搬数据会显著拖慢帧率。我在实际项目中的经验是,ESP32-S3 跑 Qt for MCUs,CPU 往往不是瓶颈,内存带宽才是。尤其当你用 RGB565 格式做全屏缓冲、又开了双缓冲的时候,PSRAM 带宽会被刷屏操作占掉一大部分。优化方向通常是缩小缓冲格式、合理组织缓存层,以及尽量控制每帧重绘区域。这些细节后面讲地图渲染时再展开。

2.2 RA8D1:480MHz 的 Cortex-M85,带得动 2.5D 的地图旋转

再看 RA8D1。这是一颗定位明显高于普通 MCU 的芯片,瑞萨给它的核心是 Cortex-M85,主频拉到 480MHz,支持 TrustZone,芯片上集成了大容量 SRAM,外部还可以扩展 SDRAM。更关键的是它带了一个 2.5D 图形加速引擎,可以做旋转、缩放、混合这些在普通 MCU 上 CPU 很难扛住的图形操作。对 Qt for MCUs 来说,这意味着界面可以做得更“重”:比如地图旋转、卡片翻转、立体感强的仪表盘,这些特效在软件渲染模式下会比较吃力,但在 RA8D1 的硬件加速下会流畅很多。

RA8D1 的内部 Flash 也很充裕,同时可以外挂外部存储器来存放 UI 资源和数据。这种“高算力 MCU + 图形加速器 + 大内存带宽”的组合,实际上已经把 MCU 和低端 MPU 的界限模糊化了。做产品时选 ESP32-S3 还是 RA8D1,不完全看“谁能跑 Qt for MCUs”,而是看你的交互复杂度和显示尺寸。如果你做的是一个 7 寸屏幕、带缩放地图、需要 2.5D 转场动画的医疗设备面板,RA8D1 是更稳妥的选择;如果只是 4 寸以下、以信息展示和控制为主、还要联网上报的智能家居屏,ESP32-S3 的性价比就非常突出。

2.3 两个平台的定位差异与选型倾向

把两个平台放在一起看会更清楚。我整理了一张简单对比表,方便评估选型时快速对齐:

对比项ESP32-S3RA8D1
内核双核 Xtensa LX7,240MHzCortex-M85,480MHz
片上内存约 320KB SRAM,可外挂 PSRAM内置大容量 SRAM,可扩展 SDRAM
存储外挂 SPI NOR Flash,MMU 映射访问内部 Flash + 外部扩展存储
图形能力无专用 GPU,依赖软件渲染集成 2.5D 图形加速引擎
无线连接原生 Wi-Fi / BLE通常需要外接无线模块
典型场景智能家居屏、低功耗 HMI、联网面板医疗设备、复杂 HMI、带特效的仪表盘
Qt for MCUs 支持2.11 起支持2.11 起支持

注意,这个表格是选型参考,不是规格书,具体内存大小和存储扩展上限要以官方数据手册为准。选型时不要只看主频和内存,还要看团队熟悉哪个工具链、供应链是否稳定、引脚是否满足你的外设需求。软件栈和调试工具的学习成本,往往比芯片规格本身更影响项目进度。

3. MCU 上做地图渲染:从“能显示”到“能流畅缩放”

3.1 为什么桌面端简单的事,到 MCU 上就变难了

地图渲染这个内容,标题里特意点了出来,说明这是这次发布的主要看点之一。但首先要泼一盆冷水:在 MCU 上做地图渲染,和你在手机上打开地图 App 完全是两回事。桌面端的做法通常是加载一个完整的地图引擎,比如 Qt Location、MapLibre 这类库,它们背后有 GPU、有大内存、有高速网络,可以从服务器实时拉取矢量瓦片,在本地做渲染合成。而 MCU 端呢,内存可能只有几 MB,主频几百 MHz,还没有完整的 GPU,更别说实时从网络加载海量瓦片了。

打个比方,桌面端渲染地图是开一辆半挂卡车运货,货箱足够大、路也宽,随便装;MCU 渲染地图是骑一辆电动车去搬货,一次只能装几箱,而且路窄、爬坡还费电。所以 MCU 上做地图,首先要接受一个事实:你不能把桌面端的地图方案“搬过来”,必须做减法甚至重新设计数据格式。

Qt for MCUs 本身没有内置完整的地图引擎,它不是拿来直接替代 Qt Location 的。它的强项在于提供了一个足够低开销的 QML 运行时和渲染抽象层,让你可以在 MCU 上自己搭建一套轻量地图渲染框架。换句话说,Qt for MCUs 2.11 LTS 这次反复强调 MCU 地图渲染相关的能力,本质上是把“被支持的平台范围”和“QML 运行时表现”双双加强了,但地图本身怎么做,还是得靠开发者结合项目来设计。理解这一点,就不会对版本升级抱有不切实际的期望。

3.2 一套可行的轻量地图渲染方案

在 MCU 上做地图,我比较推荐的做法是“预切片 + 分层绘制”的思路。具体说,在 PC 端提前把地图数据处理好,切成适合小屏展示的瓦片或者预渲染成极简的矢量格式,然后随产品固件一起烧到 Flash 里。运行时,Qt for MCUs 只负责把当前视口内需要的瓦片加载到内存并绘制出来,平移和缩放时动态换瓦片。整个过程不依赖网络,也不依赖重型地理信息系统库。

先用一段概念代码来说明分层思路。注意这段代码是为了解释设计思路,不是可直接运行的完整工程,Qt for MCUs 的具体接口请以官方文档为准:

MapView { id: map width: 480 height: 480 // 底层:路网和背景瓦片,只加载可视范围内的切片 TileLayer { id: baseLayer // 每次视口变化时,根据当前中心和缩放级别换瓦片 onViewportChanged: { var tiles = tileProvider.getVisibleTiles(center, zoomLevel) baseLayer.loadTiles(tiles) } } // 中层:轨迹、兴趣点等矢量对象 ObjectLayer { id: markerLayer // 用少量 Line / Rectangle / Image 元素组织,数量限制在几十个以内 } // 顶层:缩放按钮、GPS 状态等常规 UI Column { anchors.top: parent.top anchors.right: parent.right Button { text: "+" } Button { text: "-" } } }

真正的核心难点在 TileLayer 和 ObjectLayer 的实现策略上。瓦片尺寸建议做小一点,256×256 在 MCU 上偏大,128×128 通常更友好。为什么?因为一个 128×128 的 RGB565 瓦片大约 32KB,四个瓦片组成一屏也要 128KB 左右,如果再算上图层和 UI 缓冲,内存很快就紧张了。如果你把每块瓦片提前压缩成 PNG 或自定义 RLE 格式存在 Flash 里,运行时只解压当前可视范围,内存压力会大幅下降。

坐标精度也是个容易被忽视的问题。经纬度是浮点数,但直接把 float 放在嵌入式 QML 里算来算去,性能并不好看。一个常见的处理方式是“分层坐标系统”:全局坐标用整数经纬度存储,显示时把相对偏移量转成屏幕像素整数,这样既保证精度又减少浮点运算。地图缩放时也不要直接对矢量数据做实时缩放重绘,可以“先拉伸后替换”——先显示上一级瓦片的放大结果,等新瓦片解压完成后无缝替换,观感上会平滑很多。

3.3 文字标注与轨迹层:最容易翻车的细节

地图上最影响观感、也最容易在 MCU 上翻车的,是文字标注。中文、英文、数字混排,字号变化,地名标签的锚点位置……这些在 PC 端都是一堆细节,在 MCU 上更是大坑。中文矢量字体按字渲染非常吃 CPU,内存也不够放全量字库,我的建议是干脆不要运行时渲染文字,而是把需要用到的文字预渲染成透明 PNG 图集,每个字对应一个小图,做成“贴纸”贴在对应位置上。常见地名、道路名就那么几十上百个,完全可以在 PC 端准备阶段就整理好。这个方案虽然牺牲了动态换字能力,但换来了稳定帧率和可控内存。

轨迹层也一样,不要试图用 QML 连续动画去实时刷新整条轨迹线。实际 GPS 更新频率一般是 1 秒一次,每秒把新点追加到路径数据里,只重绘变化的那一小段即可。如果轨迹点已经很多,比如几千个点,建议先做抽稀(Douglas-Peucker 之类)再绘制,否则就算 CPU 能扛住,内存也扛不住。

还有一个细节很多人会忽略:地图边缘的“毛边”和裁剪问题。MCU 上没有 GPU 帮你做复杂的 alpha 合成,很多边界显示需要自己处理。瓦片背景色要统一,道路描边宽度要提前定好,避免跨瓦片拼接时出现裂缝。这些属于“看着简单,实际要调很久”的事,最好在设计阶段就定好规范,而不是等画出来再修。

4. 环境搭建与硬件调试实录

4.1 VSCode + ESP-IDF + Qt for MCUs 快速搭环境

Qt for MCUs 搭配 ESP32-S3 开发,最常用的路线是 VSCode + ESP-IDF。以我自己的经验,不推荐新人在最初阶段使用过于复杂的 IDE 组合,先把基础链路跑通,后面再按需加功能。大致流程是:

第一步,安装 ESP-IDF 工具链。建议选择官方推荐的稳定分支,因为 Qt for MCUs 2.11 对 IDF 版本有匹配要求,版本不对会出现链接错误或者烧录后白屏。不要一上来就装最新版 IDF,追求最新版本在嵌入式工具链里往往是坑。

第二步,安装 Qt for MCUs SDK。安装过程中选择 ESP32-S3 对应平台包,注意记录安装路径,后续 CMake 构建脚本会用到。SDK 和 IDF 的版本对应关系在官方文档里有明确表格,你选的版本组合必须满足里面的要求。

第三步,用 VSCode 打开工程目录,配置好 ESP-IDF 扩展,然后执行标准构建命令:

idf.py set-target esp32s3 idf.py menuconfig idf.py build

menuconfig 里主要确认两件事:一个是 Flash / PSRAM 配置是否正确,另一个是显示接口(LCD 类型、分辨率、像素时钟)是否和你的屏参一致。屏幕初始化代码一般单独写,不放在 Qt for MCUs 工程里。

第四步,烧录与日志监控:

idf.py -p /dev/ttyUSB0 flash monitor

这一步如果发现烧录一直失败,优先检查串口号、BOOT 引脚状态、以及 USB 转串口芯片的驱动。ESP32-S3 模组上通常有板载串口,但如果你自己画板子,就要确认 UART0 的 RX/TX 是否确实接到 USB 转串口芯片上了。

整个环境搭建最大的经验是“版本匹配”四个字。很多人环境配不起来,不是操作不会,而是 SDK、IDF、编译器三者的版本互相不兼容。我的建议是每一步都忠实记录自己用的版本号,方便日后复现以及向社区提问时提供有效信息。

4.2 MCU 没有 USB 差分信号引脚怎么办

这个问题在热词里出现了,我猜提问的人多半是选型时看中某颗 MCU,结果发现它没有 USB 控制器,或者引脚不够用,没法直接用 USB 线连电脑调试。这种情况在 MCU 世界里实在太常见了,解决思路也不用很复杂。

首先明确一个概念:USB 通信需要 D+ 和 D- 两条差分信号线,这是物理层的基础。如果 MCU 本身没有 USB 控制器,你需要一颗“USB 转串口桥接芯片”,常见的比如 CP2102、CH340 这类,把 MCU 的 UART TX/RX 转成 USB 信号。接线方式很简单:MCU 的 TX 接桥接芯片的 RX,MCU 的 RX 接桥接芯片的 TX,两边 GND 共地。电脑端会识别出一个虚拟串口,终端软件里打开它就能看到 MCU 日志,也能用来跑串口烧录协议。对大多数没有 USB 的 MCU 来说,这已经足够完成调试和程序下载。

如果 MCU 自带 USB 控制器,但引脚被其他外设占满了,那就要重新梳理引脚分配,看看能不能把 USB D+/D- 释放出来。实在释放不出来,还有一种思路是走 SWD/JTAG 调试接口。J-Link、ST-Link 这类调试器不依赖 USB 差分信号引脚,它们通过 SWDIO/SWCLK 和 MCU 通信,烧录、断点调试都能做,比串口方案更强。

具体到 ESP32-S3,它其实原生带了 USB-OTG 和 USB-Serial/JTAG 功能,有些模组也会把 D+/D- 引到板上。但如果你的板子没引出这对引脚,做法通常是:拉低 BOOT(即 GPIO0)再上电,让芯片进入下载模式,通过 UART0 走串口烧录。这是最常用的后备方案,没 USB 一样能干活。

4.3 日志、数码管驱动与配置工具的几条经验

开发 MCU + Qt for MCUs 项目,除了 UI 本身,还要面对日志存储、外设驱动、配置工具等一堆周边问题。这里把我在实际项目中总结的三条经验写出来。

第一条,MCU 日志不能直接无脑 print。日志打印多了会占用 CPU 和 UART 带宽,影响 UI 帧率。正确做法是用一个环形缓冲区,先把日志放内存里,再由低优先级任务定期刷到外部 Flash 或者通过调试串口输出。如果要掉电留存日志,还要考虑扇区擦写均衡,不然 Flash 很快写坏。很多 UI 卡顿问题查到最后,发现是日志打印惹的祸,这条经验真的值得重视。

第二条,驱动 LCD 数码管或段码屏时,段码表是最底层的映射关系。比如七段数码管显示数字 0 到 9,典型的共阴极段码可以定义成下面这个样子:

const uint8_t SEG_CODE[10] = { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x6F // 9 };

如果你的 UI 层跑着 Qt for MCUs,而底层还有数码管显示,一定要把 UI 刷新和段码驱动隔离,不要在 Qt 的渲染线程里做 GPIO 翻转,否则帧率会很难看。可以把数码管刷新放到定时器中断或专用任务里,UI 只通过共享变量或消息通知数码管要显示什么内容。

第三条,很多芯片厂商都有自己的图形化配置工具,比如 Infineon 的 MCU Configuration Wizard、瑞萨的 e² studio 配置器、STM32CubeMX,它们的理念都类似:帮你生成时钟、引脚、外设的初始化代码。这类工具生成的代码和 Qt for MCUs 的分工要清晰:配置工具管底层硬件初始化,Qt for MCUs 管界面渲染。不要把两套逻辑混在一个文件里写,否则后期维护会非常痛苦。

5. 版本选型建议与我的个人判断

站在 2025 年这个时间点,我的个人判断是:Qt 5.15.19 是给存量项目的一个体面收尾,而 Qt for MCUs 2.11 LTS 才是面向增量市场真正值得关注的东西。如果你正在规划一个全新的 MCU HMI 项目,且屏幕在 7 寸以下、资源受限于 MCU 级别,Qt for MCUs 2.11 LTS + ESP32-S3 是性价比很高的组合;如果交互复杂、需要跑地图旋转缩放这类重图形效果,RA8D1 这类带 2.5D 加速的平台会明显省心。

关于 Qt 5 存量项目,我也不建议盲目迁移到 Qt 6。关键是看项目状态:如果项目已经稳定量产,继续用 5.15.19 做基线,把精力放在业务功能迭代上是合理的;如果产品还在早期开发,未来要维护很多年,那尽早评估 Qt 6 或 Qt for MCUs 的成本和收益,会比拖到最后再迁移从容得多。另一个重要提醒是,无论选哪个版本,都要把工具链版本“钉死”,最好把构建环境写进脚本或 Dockerfile,防止几个月后环境漂移导致无法复现构建。

最后说一句我自己的体会:做嵌入式 UI 开发,框架只是起点,真正花时间的永远是性能调优、内存布局和硬件适配这些“脏活”。Qt for MCUs 2.11 LTS 给出了一个更稳定的底座,但地图渲染能不能在 MCU 上跑得流畅,最终还是取决于你做数据预处理的细致程度。把数据准备好、把内存算清楚、把工具链版本锁死,剩下的问题基本都能靠调试解决。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 8:04:00

从OnlyOffice到LibreOffice与Vue-Office:嵌入式文档方案选型与落地

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

作者头像 李华
网站建设 2026/9/20 8:03:47

解读腾讯人力资源管理体系:三支柱、职级双通道与九宫格落地

简介:这份PDF资料系统梳理腾讯人力资源与组织管理体系的整体框架,适合HR从业者、企业管理者以及研究互联网组织变革的读者。内容从使命、愿景与价值观切入,重点阐述COE、SDC、HRBP三支柱的职责划分与协作关系,并回顾1998年至今的人…

作者头像 李华
网站建设 2026/9/20 7:58:09

PCB电源设计:从被妥协到主动掌控的工程实践

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

作者头像 李华
网站建设 2026/9/20 7:56:08

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/9/20 7:54:27

OpenClaw多源API网关架构:Token中继与策略路由实战

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

作者头像 李华