小程序源码丢失?一文讲透Wedecode还原wxapkg线上包
做小程序开发这几年我踩过最大的坑就是“源码丢失”。不是代码被删而是项目经历过几轮外包交接最后的运行版本和仓库里的版本已经对不上了线上用户反馈的某个bug本地根本复现不了因为线上跑的那套代码根本不在自己手里。后来一位做安全测试的朋友给我指了条路——用Wedecode把线上小程序包还原成可读源码直接对着真机跑的代码去定位问题效率一下子翻了倍。这篇东西不是教你去扒别人的商业小程序而是把源码还原这件事的原理、完整流程、坑和边界一次讲透。无论你是遇到历史项目交接不清、想学习优秀小程序的代码组织方式还是做安全审计需要自查这套思路都适用。我会把从wxapkg定位、工具使用、分包合并到代码阅读的完整过程拆开讲每步都给你讲清楚为什么这么做。1. 为什么需要还原小程序源码以及Wedecode到底做了什么1.1 wxapkg文件到底是什么先搞清楚对象。微信小程序在发布上线时开发工具会把你的源码js、wxml、wxss、json做一次编译打包产出一个后缀为wxapkg的文件。这个包本质上是一个自定义格式的压缩归档体量从几十KB到几十MB不等里面装的就是小程序实际运行需要的全部代码和静态资源。很多人以为小程序是“纯前端网页”代码就放在服务器上这是误区。小程序运行分两层逻辑层跑在JavaScriptCore/V8这类引擎里视图层是原生渲染。但无论是逻辑代码还是视图描述文件在打包时都会被塞进这个wxapkg包里由客户端下载到本地再运行。换句话说只要你手机上跑过这个小程序本地就一定存在一份该小程序的完整wxapkg文件——这叫“本地缓存”。线上最新的代码就在你的手机缓存目录里躺着。所以“还原小程序源码”这个事第一步从来不是用什么高端工具去服务端抓包而是先能在本地找到这个包。一旦拿到wxapkg后面要做的就是解密新版本的小程序包做了编码处理、解包、还原工程结构。Wedecode这类工具的价值正是把“二进制包”翻译回“人可读的工程源码”让你能直接看到每个页面、每个组件、每段逻辑对应的代码。1.2 Wedecode这类工具的核心工作流程说白了Wedecode做的是一套“逆向复原”流程核心分四步识别wxapkg头部特征确认包版本和加密方式对包体进行解码还原出可读的二进制数据按小程序目录规范拆分app.js、app.json、pages下各页面的js/wxml/wxss等对编译产物做语法格式化把混淆压缩过的代码整理成接近开发源码的样子。这里面最容易被忽略的是编译后的代码已经不是你写的那份源码了。开发工具会把ES6编译成ES5会把变量名压缩重写会把多个文件合并。Wedecode做的是“尽量还原到可读状态”而非“逐字节复刻你硬盘里的原始工程”。这个预期要建立好还原出来的东西用于定位线上问题、梳理代码逻辑完全够用但别指望注释还在、变量名还和你写的一样。我用过几款工具Wedecode相对省心的地方在于它对新旧两种包格式都做了兼容而且还原后的目录层级基本能直接对照上微信开发者工具“导入项目”的路径结构。另外它的处理方式是本地化的不依赖远端服务输入包、输出目录干完活就走这对处理自己项目或授权项目来说隐私上更稳妥。2. 还原前的准备与合规前提2.1 硬性条件清单在动手之前先把工具链备齐。我自己常用的配置供你参考类别必备项说明开发环境微信开发者工具用于打开还原后的工程、验证代码是否可运行运行环境安卓模拟器或调试用安卓手机用来安装目标小程序并定位本地缓存目录辅助工具文件管理类工具查看应用私有目录需在调试模式下操作代码还原Wedecode脚本环境按官方说明装好依赖命令行即可运行代码阅读VS Code还原后的工程文件统一用编辑器打开方便跨文件搜这里强调一下苹果手机的沙盒机制让本地包提取麻烦得多建议优先用安卓环境来做这件事然后把还原出来的结果放到任何平台继续研究。真机也好模拟器也好本质上都是为了拿到那个wxapkg包哪个顺手用哪个。2.2 合规边界不是所有包都能拿来练手这段是红线务必看明白。还原小程序源码这个技术本身是中性的但用在谁身上、拿来干什么性质完全不同。我给自己定的规矩是三条你也要照着划第一只碰自己拥有或已获书面授权的小程序。自己开发过的小程序哪怕是外包留下的历史版本你拥有代码的处置权完全可以分析如果是别人做的小程序没有获得授权的情况下一律不碰。第二不以商业目的复制或再造他人产品。逆向出来的代码如果被用在抄袭、换皮、偷数据上这是侵权没有任何技术意义能洗白这个性质。第三分析过程中不传播、不分发还原出的完整源码。自己分析问题可以把别人整个项目的源码打包发到社区、群聊这不合适可能直接把授权这条路走死。在项目交接场景下如果对方不给源码我会先发一封正式邮件说明“我们需要对线上运行版本做代码级缺陷定位需要对线上包做还原分析”拿到确认后进行操作。这个动作既是给自己留依据也是把事做规范。2.3 获取wxapkg包的常见合法路径这一步很关键。根据小程序的运行机制包是下发到本地的所以路径一般有三个线上版本运行缓存手机/模拟器上正常打开一次目标小程序然后进入应用私有目录安卓路径一般是data/data/某应用包名/微型程序存储路径查找后缀为wxapkg的文件。开发者工具本地缓存使用微信开发者工具预览或上传过代码的机器上本地会自动保留一份编译后的包文件可以在工具的缓存目录里找到这种主要适用于自己的项目。分包下载小程序体量超过2MB主包限制时会有分包机制。每个分包也是独立wxapkg文件分布在同一个缓存目录下的不同子目录需要一并取出。实操中我的做法是先在模拟器里的微信中打开目标小程序等首页和常用页面都加载一遍确保分包已拉取到本地。然后用文件管理工具进入微信的私有数据目录开启“显示隐藏文件夹”按文件大小排序一般几十KB以上、名字不带明显随机特征的wxapkg就是目标包。把整个目录里的wxapkg文件都复制出来不要只拿大的那个——主包加分包一个都不能少后面合并才能还原出完整工程。3. 核心实操完整还原流程3.1 第一步拿到小程序包并做好备份假设你现在已经按上面的方法把wxapkg文件导出来了。动手之前先做两件事记录每个文件的大小、时间和来源目录防止后面分包搞混整体复制一份原包放在backup目录里后续操作都在副本上进行避免把原始包改坏导致无法重复分析。我习惯在工作目录下建这样一个结构miniapp_analysis/ ├── raw_pkg/ # 原始wxapkg只读不动 ├── backup_pkg/ # 防手滑备份 ├── decrypted/ # 解码后的中间文件 └── restored_src/ # Wedecode还原后的源码这一步没什么技术含量但非常值得养成习惯。逆向分析有时要来回试多种参数如果每次都在原始包上操作一旦搞坏就要重新导出浪费的时间远超建目录那两分钟。3.2 第二步用Wedecode解密并解包直接给一套能跑通的命令流程。假设你已按Wedecode的README装好依赖打开终端进到工具目录# 第一步先查看包的元信息确认格式类型 node wd.js -i ../raw_pkg/某小程序.wxapkg # 第二步解码并还原到目标目录 node wd.js -d ../raw_pkg/某小程序.wxapkg -o ../restored_src/执行完第一次解包后去restored_src目录看一眼。正常情况下会出现app.js、app.json、pages/、components/这些目录结构。如果只有一堆散乱的文件包名没有按标准目录组织多半是分包或者插件包混进来了先不要慌接着往下看。有一个重要细节新版基础库的小程序包默认是加密的直接解包出来会是一堆乱码或空壳文件。遇到这种情况Wedecode也会给出提示这时需要先执行解码步骤再走解包流程。更直接的做法是用工具提供的自动识别模式它会根据文件头自动判断是否需要先解码。3.3 第三步还原后的目录重建与代码检查解包后不能急着当源码直接看先花几分钟做一个完整性检查。对照清单app.json是否正常读取出页面路径注册表pages下每个页面的js/wxml/wxss/json是否一一对应app.js里是否有全局逻辑还是只是一个空壳是否存在sitemap.json、project.config.json等配置文件。我见过最多的情况是解包后所有文件都在但页面目录下少了.wxml或.wxss。这并不是解包失败而是原始编译过程里某些文件被合并进了一个公共文件。此时全局搜索相关资源引用从公共文件里把样式或模板拆出来即可。这一步做完就可以把整个restored_src目录拖进微信开发者工具选择“导入项目”看它能不能正常编译预览。如果编译直接报错先看错误信息是指向缺失文件还是语法问题。缺失文件按照上面的资源检查去补语法问题多半是压缩代码还原度不够需要配合格式化工具二次处理。3.4 第四步分包合并与资源校验有小程序是分包结构的主包还原后pages里只有一部分页面剩余页面在分包对应的wxapkg里。你需要把每个分包分别解包然后把分包代码合入主目录结构。具体做法每个分包解出来通常是一个独立根目录里面同样有pages和components等。把分包根目录下的内容整体复制到主工程根目录下遇同名目录则合并目录而非覆盖遇同名文件则对比内容决定保留哪个版本。合并后用编辑器的全局搜索验证一下关键页面文件是否存在pages/index/index.js pages/goods/list.js分包合并中容易踩的坑集中在绝对路径引用上。有些分包里的代码会以“/pages/xxx/xxx”这种绝对路径引用资源而主包里同样路径可能是另一个文件。合并前先搜一下所有引用路径是否冲突有冲突就调整分包内的引用为相对路径。这个我会在第4章常见问题里专门展开。合并完成后重新导入开发者工具再走一遍编译预览。这一步过了还原的基本功就到家了。4. 实践中的常见坑与排查4.1 高频问题速查表现象可能原因处理方向解包报错“invalid header”包体损坏或文件头不是wxapkg标准格式确认文件是否完整导出重新导出一次解包成功但文件全是乱码未先解码直接解的是加密包先执行解码步骤再解包页面缺wxml/wxss编译产物中样式和模板被合并进了公共文件全局搜索资源引用手动拆分app.json能读取但页面白屏分包未合并或路径引用不匹配合并分包并校验绝对路径还原后的代码无法编译部分语法还原度过低格式化工具二次处理或按报错手动修正包内找不到主包拿到的文件可能全是分包或插件包核对包里app.json是否存在无则继续找主包这张表来自我实操过程中真实的翻车记录不只是理论推断。最典型的是“解包成功但文件全是乱码”我第一次遇到时以为工具坏了反复重装依赖后来才意识到新版小程序包默认加密必须先解码。4.2 解密失败不是每个wxapkg都长一个样Wxapkg文件在不同版本基础库下的打包格式不一样。老版本包体头部会有固定的标识字段新版本改成了带加密和更复杂校验的结构。Wedecode大部分时候能自动识别但遇到非标准格式或经过第三方加固的包会直接失败。遇到这种情况我的排查顺序是先用二进制查看工具打开wxapkg的前64字节观察头部是否有可读ASCII字符串对比官方文档里提到的两类头部标识判断属于哪代格式确认属于加密格式后单独对包体执行解码指令输出到中间目录解码后的中间文件再走标准解包流程。通常走到第三步就能解决大部分问题。如果格式是完全未知的则大概率是包经过了加固方案处理这类包一般不透明也不建议硬磕。对开发者自己加密加固的产物分析价值有限问一下对应团队拿一份明文包更实际。4.3 还原代码的阅读技巧不是还原完就能看懂的把源码还原出来只是开始。要知道最终交付的js是被压缩合并过的和开发源码差距不小。阅读时我有几个习惯不要通读先读app.json搞清页面路由和全局配置再按用户路径去读对应页面js里遇到一串被压缩成A、b、c的变量名先不要逐个猜重点关注函数体逻辑和调用栈用编辑器的全局搜索功能搜索关键业务关键词比如接口地址前缀、存储键名反向定位逻辑片段还原后的wxml仍然保留了结构和绑定关系这是还原后最有价值的文件先看wxml再去看js理解速度会快很多。有一个很实用的操作还原后的js可以用Prettier格式化虽然改变不了变量名但代码结构清晰了不止一个档次。格式化后再用“折叠所有函数”的方式浏览整个模块的边界一目了然。5. 防护视角如何防止自己的小程序被轻易还原5.1 你能做的基础防护“看得懂别人的也要防得住别人看你的”。既然还原原理已经清楚了那针对性地做防护就有的放矢。这里说的都是平台允许范围内的常规加固手段按需组合把核心业务逻辑尽量放到服务端前端只保留调用层。就算整个包被还原看到的也只是接口调用拿不到真正的核心规则关键字符串接口地址、密钥、业务特征值不要明文写在代码里做一层简单的拆分拼接或加密存储避免搜字符串直接暴露代码压缩时开启更高级的混淆配置具体选项可以在开发者工具的“上传时压缩代码”里按文档调整有条件的情况下接入官方提供的加固能力这会提高整体破解门槛但别指望一劳永逸注意不要在前端存放高价值密钥凡是能通过抓接口拿到的数据就必须默认它控制不住。多说一句小程序技术栈是“半透明”的你写的每个规则都在用户设备上跑了一遍理论上就一定有办法被看到。所谓防护永远是提高门槛不是铸就铁桶。5.2 还原与防护的平衡思路真正重要的是一个心态小程序的前端不是藏秘密的地方。所有需要保密的逻辑都应该是后端逻辑前端只做展示和交互。那么防护的唯一目的是提高别人分析你代码的成本让他们去分析别家更“好欺负”的目标。在这个思路下花在防护上的精力要适可而止不要为了加密把自己维护成本搞到起飞。和做业务相比不如多花时间在设计好接口鉴权、风控规则和服务端核心策略上——这些才是真正的护城河。我见过有的团队把小程序包做了多重加固结果每次发版都要卡在平台审核和兼容性调整上开发效率大打折扣。最后还是回到“前端做基础混淆、核心逻辑放后端”的方案问题解决得干干净净。6. 从实操到扩展这套能力还能怎么用6.1 阅读源码之外的三个典型场景学会还原小程序代码后能做的事不止“找回丢失源码”这一件。我实际用到过三个方向顺便给你参考一是线上问题定位。当“本地复现不了”成为日常时还原线上包看真实逻辑是最快路径。曾经遇到过一个白屏问题本地项目怎么测都没问题线上用户反馈集中出现。后来把线上包拉下来一看才发现某个接口字段在线上版本里的写法已经变了而本地代码完全没跟上。这种场景下还原线上版本源码几乎是唯一手段。二是安全自查。公司要求对小程序的个人隐私声明做代码级自查确认没有在无声明的情况下采集额外数据。逐行读自己的源码可能遗漏线上真实逻辑但对照还原后的线上包做一遍收口审查结论就可靠得多。三是学习和参考。遇到交互效果或代码组织方式让自己眼前一亮的同行作品在授权允许的前提下拆解它的页面结构、数据流转、组件抽象方式是技术成长很直接的一条路。6.2 常见扩展操作跨形态还原还有一个高阶玩法是“跨形态还原”。如果小程序内嵌了H5、WebView或其他第三方渲染形态主包里的代码可能只是壳真正的逻辑在远程H5里。这种情况要对H5做单独分析另开一条链路。还原wxml和js只能看到壳内容区和事件逻辑都在远端页面里。我通常的做法是先把远程H5地址找出来然后对地址对应的前端资源做常规网页端的代码梳理。这和微信小程序本身的还原不是一回事但思路类似。掌握了主包分析、分包合并、跨端资源定位这套流程整个分析视角就立体起来了。6.3 给新手的建议如果你完全没接触过逆向分析建议的第一步不是直接上项目而是拿自己的历史小程序动手从“自己导出的包”开始跑通全流程。把这个流程跑熟比看十篇文章都有用。等你知道正常包解出来长什么样、哪个目录对应哪类代码后再遇到非标准包排查思路就会清晰很多。工具的使用没什么秘密秘密都在踩坑里。我个人在实际操作中最大的体会是还原代码这件事没有太多花哨的技巧关键就是心态稳、流程清晰、边界清楚。稳体现在遇到加密包、异常格式时不慌流程清晰体现在每步都有备份、有检查、有记录边界清楚体现在永远只分析自己有权处理的包。做到这三点这个技能能帮你解决很多实际问题和麻烦又不会让你掉进合规的坑里。最后再分享一个小技巧解包还原后第一件事不要急着看代码先看app.json里的页面清单和自己预期要分析的模块对照一下。如果关键页面不在清单里说明包没拿全赶紧回头去补包不要在一个不完整的源码上浪费时间。这个小检查只要一分钟但能避免你多走两小时弯路。

相关新闻

JEECG集成Flowable实战指南:从低代码到工作流引擎的落地之路

JEECG集成Flowable实战指南:从低代码到工作流引擎的落地之路

简介:面向需要在 JEECG 中引入 Flowable 工作流能力的 Java 开发者,这套源码包提供了一整套可落地的集成方案,覆盖后端与前端两条主线。后端包含新建子工程、数据库连接配置、权限设置以及覆盖 Flowable 获取当前用户逻辑的 Java 实现&#x…

2026/10/18 20:26:01 阅读更多 →
USB gadget自定义函数驱动开发:从描述符到configfs

USB gadget自定义函数驱动开发:从描述符到configfs

接手这个系列的时候,我原本计划第五篇写 UVC 或 UAC 这类复杂协议设备的完整解析。但后来跟几位读者聊了聊,发现大部分人卡住的点不在“用现成函数”,而在“想做一个协议很简单的自定义设备,却不知道该从哪儿下手”。比如有人要做…

2026/10/18 20:26:01 阅读更多 →
高通SNPE安装详解:环境配置、依赖避坑与推理验证全流程

高通SNPE安装详解:环境配置、依赖避坑与推理验证全流程

简介:高通SNPE安装包,专为在Android、嵌入式Linux及边缘设备上部署深度学习模型的高通平台开发者准备,解决神经网络推理环境配置复杂、依赖库版本匹配难等常见问题。压缩包内共1022个文件,整体约119MB,其中包含190个Py…

2026/10/18 20:25:00 阅读更多 →

最新新闻

增量索引实战:新文档怎么做到分钟级可检索

增量索引实战:新文档怎么做到分钟级可检索

个人主页&#xff1a;> for_ever_love__ <&#xff08;欢迎各位大佬莅临&#x1f60a;&#xff09; 其他栏目: > 大模型开发从0到1 < 其他栏目: > iOS项目总结大全 < 其他栏目: > 我想学python了 < 其他栏目: > iOS UI < 文章目录增量索引实战&a…

2026/10/18 21:45:10 阅读更多 →
Python多模态情感分析实战:CCA对齐+门控融合工程实现

Python多模态情感分析实战:CCA对齐+门控融合工程实现

简介&#xff1a;本资源是一套完整的多模态融合情感分析实战项目&#xff0c;面向计算机专业本科生及人工智能初学者&#xff0c;聚焦文本、语音、图像、视频四模态数据的情感联合建模与分析&#xff0c;适用于毕业设计、期末大作业及课程设计等高要求实践场景。压缩包共20个文…

2026/10/18 21:45:10 阅读更多 →
Onyx开源企业搜索深度解析:RAG与知识管理实践

Onyx开源企业搜索深度解析:RAG与知识管理实践

1. 为什么需要 Onyx&#xff1a;企业知识检索的三个死结1.1 知识分散&#xff1a;搜索引擎覆盖不到的角落先说我见过最多的场景。一个几十人的团队&#xff0c;文档其实不少&#xff1a;Wiki 里躺着架构设计、聊天工具里埋着半年前的决策、在线文档里散落着各种会议纪要和排期表…

2026/10/18 21:45:10 阅读更多 →
国产大模型对比:文心、豆包、通义...哪家最好?基于最公允大模型排行榜细致整理

国产大模型对比:文心、豆包、通义...哪家最好?基于最公允大模型排行榜细致整理

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

2026/10/18 21:45:10 阅读更多 →
协同过滤电影推荐系统毕设:Python实现核心算法与工程避坑全解析

协同过滤电影推荐系统毕设:Python实现核心算法与工程避坑全解析

简介&#xff1a;基于协同过滤推荐算法的电影推荐系统Python毕业设计项目&#xff0c;面向计算机相关专业毕业生、课程设计及期末大作业学生&#xff0c;也适合有Python基础、希望实战推荐系统开发的进阶学习者。整包共2000个文件&#xff0c;以py源码、html页面、css样式、js脚…

2026/10/18 21:45:10 阅读更多 →
大模型工具使用与函数调用:从原理到落地的完整指南

大模型工具使用与函数调用:从原理到落地的完整指南

1. 从"能聊天"到"能干活"&#xff1a;工具使用与函数调用到底在解决什么问题大模型刚火起来那阵子&#xff0c;大家最直观的体验就是"能聊"。你问它答&#xff0c;写诗写文案写代码&#xff0c;样样都行。但真把它扔进一个实际业务里&#xff0c…

2026/10/18 21:44:10 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →