Qt构建缓存导致AI优化不生效?拆解qmake/moc/清理机制与终极重建方案
有没有遇到过这种情况AI 给你改好了一版 Qt 代码逻辑清清楚楚注释写得比人还细你满怀信心地点了“构建运行”结果程序行为跟改之前一模一样——没有报错也没有崩溃就是“像没改过一样”。我最初用 AI 辅助写 Qt 时这个坑踩得特别深让 AI 优化一个表格刷新的逻辑它改得头头是道我把代码替换进去跑起来界面纹丝不动查了两个多小时才发现根本不是代码问题而是构建系统里的旧产物一直在“瞒天过海”。这个场景在 Qt 工程里极其常见尤其当你同时用了 AI 工具改代码、又对 Qt 的 qmake 构建体系了解不深时“AI 优化后效果未体现”几乎成了必然结果。这篇文章不打算聊 AI 怎么调 prompt、怎么让大模型更聪明而是把 Qt 构建/清除/qmake 这套指令关系彻底拆开讲清楚为什么你改了代码、跑了构建程序却还在跑老逻辑以及我实测下来最稳妥的终极解决办法。1. 先定位问题“AI优化没生效”到底是谁的锅1.1 三层问题必须区分开如果你遇到“AI 改完代码没效果”不要第一时间怀疑 AI 改错了。根据我的经验真实原因分布在三个不同层面排查思路完全不同。第一层是代码层问题。AI 确实可能改错了文件、改错了分支或者它以为自己改了、实际输出被截断。这一层很少见但排查成本最低——打开文件看内容确认改动了没有。我遇到过几次 AI 生成完整代码块但我没点“接受”编辑器里根本没有写入内容自然不可能生效。第二层是构建层问题这才是重灾区。Qt 工程不像普通 C 项目那样“改源文件 - 重新编译”就完事它多了一整套元编译机制moc 处理带有 Q_OBJECT 的类、uic 处理 .ui 文件、rcc 处理 .qrc 资源文件。这三样东西生成的中间文件缓存在构建目录里如果它们没有重新生成你改的头文件、UI 布局、资源内容都不会反映到最终程序里。第三层是运行层问题。很多项目启用了 shadow build构建产物放在单独的 build 目录而开发机上有十几个 build 目录、甚至多个 Qt 版本的项目混在一起时你双击运行的 exe 到底是不是刚构建出来的那个真得打个问号。1.2 为什么 Qt 工程的“缓存问题”比普通项目更凶普通 C 项目里头文件变了编译器依赖时间戳机制重新编译包含它的 .cpp 文件通常很可靠。但 Qt 引入的 moc/uic/rcc 把这条链拉长了moc 生成的 moc_xxx.cpp 是否重新生成取决于头文件的时间戳和内容哈希Makefile 里的依赖规则是否把新文件包含进来取决于 qmake 有没有重新读取 .pro。换句话说你改了代码只是整个链路的起点。从代码到可见效果中间隔着“qmake 生成规则 - 依赖检测 - moc/uic/rcc 生成 - 编译器重编 - 链接器重链接”五个环节任何一环因为缓存、规则过期等原因偷了懒输出就是旧的。这也是为什么我强烈建议每个 Qt 开发者都彻底搞懂这套机制而不是遇到问题就无脑“删 build 目录”。2. qmake、构建、清除三者的职责边界必须分清2.1 qmake 不是编译器它只负责“出题”很多人以为运行 qmake 就等于编译这是最大的认知误区。qmake 的实际职责是读取你的 .pro/.pri 文件解析出项目结构、配置选项、依赖关系然后生成一套 MakefileWindows 上配合 nmake/jom 使用MinGW 配合 mingw32-make。把它理解为“出题老师”最合适它决定要编译哪些源文件、头文件在哪里、启用哪些宏、生成什么 moc 文件但它自己一行代码都不编译。所以如果你改了 .pro 里 HEADERS/SOURCES 的列表或者改变了 CONFIG、DEFINES必须重新运行 qmake 让“题目”更新旧的 Makefile 里根本没有你新加的文件编译器自然不碰它们。这里有个很容易被忽视的细节qmake 生成 Makefile 时会把源文件的路径、依赖关系固定到规则里。你在源码目录里新增了一个带 Q_OBJECT 的类也写进了 HEADERS 和 SOURCES但如果你不重新 qmakeMakefile 里连这个文件的影子都没有后续构建再怎么跑也不会去处理它。2.2 make/nmake/jom 才是真正的“做题人”qmake 出好题生成 Makefile之后构建工具开始执行具体的编译、链接动作。Windows 下 Qt 5.15 默认用 nmake或者 Qt 官方推荐的 jomnmake 的并行增强版Linux/macOS 下通常是 makeMinGW 环境则是 mingw32-make。这些工具负责比较时间戳如果某个 .cpp 比它对应的 .obj 新则重新编译如果 moc_xxx.cpp 比头文件旧则重新生成并编译。它们不关心你的项目逻辑只机械地执行 Makefile 里的规则。所以“构建”这个动作本身意味着“按既定规则把过期的东西补齐”而“清除”则是主动把这些产物删掉强制下一轮全量重建。2.3 clean/清除到底清掉了什么在 Qt Creator 里点“清除”或者在命令行执行jom clean/nmake clean/make clean本质上是执行 Makefile 里的 clean 规则删除编译器生成的中间文件.obj、.o、moc_.cpp、ui_.h、qrc_*.cpp、临时 .pch以及最终的可执行文件。但有一个关键区别很多人不知道clean 并不会删除 qmake 生成的 Makefile 本身也不会删除 .pro.user 文件。这意味着你清除之后再“重新构建”用的仍然是旧的 Makefile 规则——如果问题出在 qmake 规则过期比如新文件没进 Makefileclean 再多次也无效。这时候必须手动触发重新 qmake我在第 4 节会给出完整规程。3. 搞懂 Qt 构建系统核心moc/uic/rcc 与 shadow build3.1 moc 机制AI 改头文件后最容易被“缓存”的环节mocMeta-Object Compiler是 Qt 最特殊也最容易被忽略的机制。任何一个类只要头文件里写了 Q_OBJECT 宏就会触发 moc 去解析这个头文件生成 moc_xxx.cpp里面包含信号槽的表、可调用函数索引、类名字符串等元信息。问题就出在这里如果你用 AI 修改了一个类的头文件——比如新增一个信号、改了一个槽函数的参数——Makefile 依赖规则确实会检测到头文件时间戳变了理论上应该重新生成 moc。但在实际工程里我遇到过几种情况导致 moc 没被重新触发第一种AI 工具保存文件时没有更新时间戳或者文件系统时间戳被同步工具“纠正”过导致编译器认为头文件没变化。第二种修改入参后除了当前这个头文件其他依赖它的 moc 文件没被正确检测。第三种最阴间——你只修改了头文件但没有在 .pro 的 HEADERS 里添加它qmake 永远不知道这个文件需要 moc 处理。所以当你改了信号槽、Q_OBJECT 相关代码却没生效时最直接的办法不是反复构建而是手动找到构建目录里的 moc 输出目录把对应的 moc_xxx.cpp 删掉或者干脆删除对应 .obj 文件强制下一次构建重新生成。这个经验在 MSVC 环境下尤其有效。3.2 uic 和 rccUI 与资源文件的隐藏“缓存层”除了 mocQt 构建系统还有两个自动生成环节uic 把 .ui 文件生成 ui_xxx.hrcc 把 .qrc 资源文件生成 qrc_xxx.cpp。这两个环节同样依赖时间戳检测同样会在构建目录里留下输出文件。如果你用 AI 帮你调了 .ui 文件的布局或者改过 .qrc 里的图片资源程序跑起来还是老样子第一检查对象不是代码而是构建日志里有没有重新执行 uic/rcc。我记得有一次为了加快启动速度让 AI 压缩几张 PNG 并更新 .qrc运行起来启动画面依旧很慢日志里 rcc 压根没跑因为 .qrc 的时间戳比 qrc_xxx.cpp 旧构建系统觉得不需要重新生成。解决办法也是删掉构建目录里的 qrc_xxx.cpp 重新构建。3.3 shadow build构建目录与源码目录分离带来的“找不到产物”Qt Creator 默认开启 shadow build也就是构建中间文件和源码目录完全不同路径。它带来的好处是源码目录干净、多套构建配置互不干扰坏处是很多人根本分不清自己当前在构建哪个目录、运行哪个 exe。我见过最离谱的一次同事把 Debug 和 Release 都构建了项目设置里运行的是 Release但他一直手工进 Debug 目录跑 exeAI 帮他优化的性能改动当然“完全没体现”。Shadow build 目录通常显示在 Qt Creator 的项目构建套件配置里形如build-myproject-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug排查时先认准这个目录再判断产物新鲜程度。4. AI优化不生效的终极解决办法一套规程走到底4.1 图形界面操作Qt Creator 里的清除与重建正确姿势很多人在 Qt Creator 里遇到问题只会点“重新构建项目”这个按钮的行为其实只是“清除 构建”它不会重新运行 qmake。正确姿势是先点左侧工具栏的“清除”然后执行 qmake最后再“重新构建”。在 Qt Creator 的“构建”菜单里有一个“执行 qmake”选项很多人从没点过。但我的建议是如果代码改动涉及头文件新增/删除、Q_OBJECT 变化、.pro 配置变化光在界面里点三步还不保险。Qt Creator 的清除动作不会删除构建目录下的 Makefile也不会清掉 qmake 生成的所有缓存文件。最彻底的做法是手工找到构建目录整个文件夹删掉然后在 Qt Creator 里直接点“运行”——如果构建目录不存在Qt Creator 会自动重新 qmake 并全量构建。这是图形界面下最干净的一条路。4.2 命令行完整重建我最推荐的方式如果你手上有 Qt 环境的命令行工具Qt 安装目录自带 Qt 5.15.2 的 MSVC 2019 64-bit 开发命令行或者配置好环境变量我强烈建议用命令行完成整个重建看得清楚、可控性强。完整流程如下# 1. 进入你的构建目录shadow build 产物目录 cd C:\workspace\build-myproject-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug # 2. 彻底删除这个目录最稳妥不需要纠结 Makefile 缓存 rmdir /s /q C:\workspace\build-myproject-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug # Linux/macOS: rm -rf build-myproject-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug # 3. 重建目录并进入 mkdir C:\workspace\build-myproject-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug cd C:\workspace\build-myproject-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug # 4. 用 qmake 从源码生成全新的 Makefile qmake C:\workspace\myproject\myproject.pro -r -spec win32-msvc CONFIGdebug CONFIGqml_debug # 5. 开始并行构建项目大用 jom -j8 或更高也可以 nmake 逐行执行 jom -j8这套流程的核心价值在于删掉整个 build 目录后一切都要从头生成——qmake 重新解析 .pro、moc 重新跑所有头文件、uic 重新处理 UI、rcc 重新打包资源、编译器重新编译所有源文件。任何“缓存”“依赖规则没更新”“时间戳没刷新”的问题都不复存在。命令行构建还有一个明显优势你能看到每一步输出。比如 qmake 生成的构建规则里新加的文件有没有被包含进去、moc 到底处理了哪些头文件、哪些 moc_xxx.cpp 被重新生成全部一目了然。AI 改完代码后我建议至少花 30 秒扫一眼这些日志确认该动的环节都动了。4.3 大型工程局部强制重编不想全量重建时的折中方案如果项目非常大全量重建一次要十几分钟那每次 AI 改动都删 build 目录确实不现实。这时候可以采用“局部强制重编”思路只删除那一个模块的中间产物。比如 AI 改了mymodule.h里的信号声明你需要先找到构建目录下的 moc 输出目录通常叫moc或debug/moc删掉moc_mymodule.cpp同时找到编译输出目录debug或release删掉mymodule.obj。然后重新构建构建系统会发现这些文件缺失主动重新生成并编译。需要注意的是新加带 Q_OBJECT 的头文件时光删 moc 文件不够必须先在 .pro 里把新文件加入 HEADERS并重新运行 qmake。这是最容易漏掉的一步建议在 .pro 文件里养成“新增文件必须同步更新 HEADERS/SOURCES”的肌肉记忆这样 AI 辅助改代码时也能更从容地审查它有没有漏加。5. 常见问题与排查技巧实录5.1 现象排查对照表下面这个表是我在 Qt 项目里踩过或者帮别人排查过的典型问题整理成速查表可以直接对照使用现象可能原因直接有效的解决办法改头文件的信号槽后行为没变moc 缓存未刷新删除对应 moc_xxx.cpp或清理整个构建目录后重建新加 Q_OBJECT 类编译报 “undefined vtable”新头文件没加进 .pro 的 HEADERS更新 .pro重新执行 qmake 再构建调整 .ui 布局后界面不变uic 未重新生成 ui_xxx.h删掉构建目录对应 ui_xxx.h/.obj重新构建修改 .qrc 资源文件后运行不变rcc 缓存未刷新删掉构建目录 qrc_xxx.cpp重新构建构建报 “dependent ‘..\..\qt\5.15.2\msvc2019_64\include\qtwidget…’ 不存在”构建目录被移动Makefile 里的相对包含路径失效删除构建目录重新执行 qmake 全量构建必要时在 .pro 里用绝对路径或 $$[QT_INSTALL_HEADERS]程序运行结果完全没变化但构建日志没有错误运行的 exe 不是当前构建产物多个 build 目录混乱在 Qt Creator 项目设置里查看当前构建目录清理多余旧目录AI 生成的代码明明已保存但构建结果不变头文件时间戳未更新依赖检测没触发重编手动删除涉及的 .obj/moc 文件强制重编或全量重建5.2 两个容易踩坑的真实案例案例一AI 优化表格大数据卡顿。我最初让 AI 把 QTableWidget 改成 QTableView 自定义 model它给了我完整的 model 类定义和设置代码。我复制进项目运行后表格依旧卡得要死。排查了半天发现我把新 model 类写进了 header却没写进 .pro 的 HEADERS 里qmake 的依赖规则里压根没有这个文件moc 也没跑——编译器甚至没编译这个新类。重新 qmake 并构建后优化才真正生效。后来我就养成了习惯AI 交付代码后第一件事检查 .pro 文件。案例二一个同事让 AI 帮忙优化绘制逻辑AI 把绘制分散到多个函数里结果每次启动程序画面表现都跟旧版一模一样。查到最后发现他改的是另一个分支的工作副本而 Qt Creator 构建的是 shadow build 目录指向的新分支源码。这种“代码在编辑器里是一套构建系统读的是另一套”的问题视觉上极具迷惑性构建日志里永远都是“编译完成”因为旧源码确实不需要重新编译。5.3 一个高效调试习惯看构建日志而不是看代码AI 时代大家容易把注意力全放在“代码有没有写对”上导致 AI 优化不生效时反复改代码、反复让 AI 重新优化陷入死循环。我的应对习惯是无论 AI 改了什么先不看 diff直接看构建日志。重点看三件事——qmake 有没有重新运行、moc 有没有重新生成关键头文件、相关 .obj 有没有重新编译。只要这三个信号里任何一个没有出现就不存在“代码改错了”的问题问题在构建系统。这一招基本能解决 80% 的“AI 优化没效果”情况剩下 20% 才需要回到代码逻辑排查。我甚至会把 AI 写代码的习惯调整为“让它列出改了哪些文件、涉及哪些构建环节”好让我快速判断需要做什么层面的清理。6. 最后想分享的几点经验我用 Qt 这些年最深的体会Qt 的构建系统是“可用但脆弱”的典型。它不像 CMake 那样对依赖关系做严格管理很多细节依赖时间戳、目录约定和 Makefile 的生成时机。正因如此它需要的不是“明白原理就够了”而是“形成一套固定操作流程”。我现在每次用 AI 改 Qt 代码流固定三步第一步看改动涉及的是 .cpp 还是头文件第二步判断是否涉及 Q_OBJECT/.ui/.qrc/.pro 变化第三步按需选择全量重建或局部强制重编。只要涉及头文件新增、信号槽变化、资源文件变化二话不说删掉构建目录重建时间和心情上其实最划算。最后送一个我再三强调的小技巧如果你的项目启用了 shadow build构建目录在项目设置里一眼能看到建议每次动手写代码前下意识记住这个目录路径。遇到“改了没生效”先去看那个目录里的可执行文件最后修改时间。如果 exe 的修改时间早于你改代码的时间那根本不用往下查构建系统压根没产出新程序重新构建就好。这套思路配合本文的清理规程不管是 AI 优化还是手写代码都能帮你少走很多弯路。

相关新闻

TIA Portal软件单元实战:编译隔离与多人协作优化指南

TIA Portal软件单元实战:编译隔离与多人协作优化指南

1. 软件单元到底是个什么东西如果你在 TIA Portal 里做过稍微大一点的项目,大概率遇到过这种场景:一个项目里塞了十几个功能块、七八个工艺对象、一堆 HMI 画面,编译一次要等好几分钟,几个人同时改还容易互相覆盖。更头疼的是&…

2026/10/9 12:15:25 阅读更多 →
t3code 深度拆解:代码生成与静态分析工具的设计与实现

t3code 深度拆解:代码生成与静态分析工具的设计与实现

1. 从“t3code”这个标题说起:它到底是什么第一次看到“t3code”这个词,我脑子里蹦出来的第一反应是——这大概率是一个技术项目代号,而且带着明显的版本或序列意味。“t3”这种命名方式在开发圈子里太常见了,要么是某个框架的第三…

2026/10/9 12:15:24 阅读更多 →
电池健康状态估计(二)

电池健康状态估计(二)

如果第一篇解决的是“为什么要估SOH、哪些参数代表SOH、滤波器能不能估参数”,详细的介绍在 电池健康状态估计(一)-CSDN博客 上个博客介绍。那么本篇集中解决一个更具体的问题:怎样在线估计电芯总容量Q。因为容量估计看似只是一…

2026/10/9 12:15:24 阅读更多 →

最新新闻

图书借阅系统课设:还书状态同步与超期计算核心实践

图书借阅系统课设:还书状态同步与超期计算核心实践

简介:本资源是面向高校数据库课程设计的完整实践项目——图书借阅管理系统,适用于计算机、信息管理等专业本科生开展数据库原理与应用综合实训。项目覆盖数据库设计、SQL编程、事务控制、权限管理及性能优化等核心知识点,可直接用于课设答辩、…

2026/10/9 12:53:28 阅读更多 →
使用MCP进行代码执行:构建更高效的智能体——TaoToken统一Key接入实战

使用MCP进行代码执行:构建更高效的智能体——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/9 12:53:28 阅读更多 →
杭州二手房数据采集与可视化:Python爬虫到选房模型全解析

杭州二手房数据采集与可视化:Python爬虫到选房模型全解析

简介:这是一份基于Python的杭州二手房数据采集与可视化分析完整源码,适合Python学习者、数据分析初学者及房产市场研究人员参考。项目围绕链家杭州二手房数据,划分为数据爬虫、数据清洗、数据可视化三个模块,涵盖URL管理、HTML解析…

2026/10/9 12:53:28 阅读更多 →
MySQL排序规则探秘:utf8mb4_general_ci与bin的差异与选型

MySQL排序规则探秘:utf8mb4_general_ci与bin的差异与选型

说实话,很多来看这个话题的人都是被标题里的“吃”字吸引过来的。我先把结论放在前面:utf8mb4_general_ci 和 utf8mb4_bin 最核心的区别,一句话就是“一个不区分大小写,一个区分大小写”。但如果你以为只有这一个区别,…

2026/10/9 12:53:28 阅读更多 →
HarmonyOS应用未上架如何调试更新功能:本地服务模拟分发实战

HarmonyOS应用未上架如何调试更新功能:本地服务模拟分发实战

上周陪一个团队排查HarmonyOS应用的更新问题,他们的应用还没上架,测试在“检查更新”上点了半天,页面纹丝不动。负责产品的同事问我:更新功能是不是必须上架才能调试?我说不是,更新链路拆开看,真…

2026/10/9 12:53:28 阅读更多 →
Cherry Studio本地AI知识库:免费Embedding与RAG实战

Cherry Studio本地AI知识库:免费Embedding与RAG实战

1. 为什么我要折腾一套私人AI知识库先说结论:我搭这套东西的起因特别朴素——受够了。受够了每次查自己攒了三年的技术笔记,还得靠CtrlF在几十个 Markdown 文件里翻;受够了把公司内部文档丢给在线 AI 时那种心里发毛的感觉;更受够…

2026/10/9 12:52:26 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

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/8 15:26:32 阅读更多 →
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/8 15:26:40 阅读更多 →
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/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26: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/9 6:17:20 阅读更多 →