嵌入式AI代码文档化:Doxygen从安装到落地全攻略
搞嵌入式AI的同学应该都有同感代码量不算小模型推理、图像预处理、算子封装、外设驱动堆在一起C/C为主还夹杂着大量条件编译和第三方依赖。最痛苦的不是算法看不懂而是想梳理“这个函数到底在哪定义、被谁调用、依赖哪些头文件”的时候只能一个个文件翻半天时间就没了。后来我在项目里引入了 Doxygen情况好了很多。它不是那种花里胡哨的文档平台而是一个能从源码注释里自动提取信息、生成带索引和跳转关系的 HTML 站点工具。只要注释写得规范它就能把函数、结构体、宏定义、模块关系全部整理成一份“活文档”省掉大量人肉检索的时间。这篇文章把 Doxygen 的下载安装、核心配置、注释写法以及嵌入式AI场景下的落地经验完整过一遍。文中涉及的安装包我也打包了一份省得你在下载页面干等需要的话评论区说一声就行。1. 先说清楚嵌入式AI代码为什么需要Doxygen这样的“信息整理器”1.1 嵌入式AI代码的典型痛点嵌入式AI项目尤其是模型部署方向的工程基本逃不开这几类代码模型推理与算子封装卷积、量化、反量化、池化、检测后处理这类代码往往做了高度优化C/C里可能还混着SIMD指令或内嵌汇编。外设驱动与数据采集摄像头传感器驱动、DMA搬运、环形缓冲区、GPIO中断每一块都依赖底层寄存器操作。跨平台条件编译同一份代码要跑在Linux板卡、裸机MCU、RTOS上一大半头文件被#ifdef包着不同平台看到的代码结构完全不一样。第三方依赖推理引擎、图像算法库、基础SDK层层嵌套目录深、文件多很多还带着自动生成的代码通读一遍根本不现实。这种情况下团队成员拿到的往往是一个“代码能跑但没人讲得清全局”的工程。新人上手靠猜老人交接靠讲时间一长文档和代码就分家了。更现实的问题是嵌入式AI项目的排期紧、改动快公共接口的参数、返回值、依赖关系几乎每周都在变靠人肉维护设计文档根本追不上。1.2 Doxygen在这个场景里的真实作用Doxygen做的事情其实很朴素从源码注释中提取结构化信息生成HTML文档。但它的几个特性正好打在嵌入式AI的痛点上自动提取所有结构体、函数、宏定义、枚举、全局变量形成全局索引相当于给整个代码仓库建了一张目录表。注释统一格式后函数说明、参数含义、返回值、作者日期都变成可点击跳转的对象。配合Graphviz可以生成调用关系图直接看到“谁调用了谁”排查依赖关系非常方便。支持按业务模块分组把分散在不同目录的代码逻辑归拢到一张导航树里。一句话总结Doxygen不是帮你写文档的工具而是帮你把“已经存在于代码里的信息”整理成别人容易读的形式。这一点区别很重要——如果代码注释本身是空的Doxygen也只能提取个函数名录所以注释规范和使用工具需要一起推动。2. 下载与安装三个平台的实测记录以及我打包好的安装包2.1 版本怎么选Doxygen目前主要活跃的是1.8.x和1.9.x两条线。1.9.x是持续更新的主线对C17/20支持更好默认HTML界面也更现代中文和UTF-8路径的处理比老版本强不少。1.8.x则更老胜在稳定一些老嵌入式Linux发行版里apt默认装的就是它。我的建议新项目直接上1.9.x有老工程需要和第三方SDK自带文档保持风格一致时再考虑1.8.x。这篇文章后面所有配置都以1.9.x为例我打包的也是这一版。2.2 Windows下的安装步骤Windows最简单下载exe安装包双击一路Next就行。有两个点需要特别注意安装界面里会有“Add the directory to the PATH”选项一定勾上否则命令行里找不到doxygen命令。默认组件里如果问要不要装Graphviz相关组件建议一并勾上省得后面单独装。装完在cmd里验证doxygen --version能打印出版本号说明PATH没问题。2.3 Linux下的安装步骤Ubuntu/Debian系列最省事的方式是直接用包管理器sudo apt update sudo apt install doxygen graphviz但apt仓库里的版本通常偏旧。想用1.9.x的话源码编译也不复杂wget 项目主页源码包 tar xzf doxygen-1.9.8.src.tar.gz cd doxygen-1.9.8 mkdir build cd build cmake -G Unix Makefiles .. make -j$(nproc) sudo make install编译前需要装cmake、flex、bison。缺依赖时会直接报错提示补齐就行sudo apt install flex bison cmake2.4 macOS下的安装步骤macOS用户有Homebrew的话是最快的brew install doxygen graphvizbrew会一次性把Doxygen和Graphviz都装好后面调用图直接可用。平台推荐方式需要额外安装Windowsexe安装包勾选PATHGraphvizLinuxapt装或源码编译graphviz、cmake、flex、bisonmacOSbrew installgraphviz同命令2.5 配套安装Graphviz这步别跳过Graphviz是Doxygen生成调用图、继承图的渲染引擎靠它的dot命令出图。没装Graphviz就算配置里开了CALL_GRAPH最终文档里也看不到调用关系图只会有一段文字列表或者是根本没有图。装完后命令行验证dot -version能打印版本信息就说明Graphviz就绪。这也是我为什么强调“附安装包”一定要连Graphviz一起装的原因——只装Doxygen图相关的功能等于白配。3. 装好之后的第一道坎Graphviz、中文路径和版本兼容3.1 “dot not found”初次失败十有八九是它很多人第一天接触Doxygen照着配置开了一堆图选项跑doxygen Doxyfile时直接报错error: dot not found原因很简单HAVE_DOT YES开了但Graphviz没装或者装了但没把bin目录加进PATH。Windows下Graphviz默认装到C:\Program Files\Graphviz\bin装的时候如果没有自动加PATH打开cmd执行dot -version也是提示找不到命令。解决办法重新安装Graphviz并确认PATH或者直接在Doxyfile里写死dot路径DOT_PATH C:/Program Files/Graphviz/bin3.2 中文路径与编码问题嵌入式工程师经常遇到的场景工程放在D:\我的项目\xxx用户名带中文或者代码文件本身是GBK编码的老工程。Doxygen对这些情况的容忍度不算高轻则打印一堆警告重则生成出来的文档里中文全是乱码甚至中途报错。我的经验是项目目录统一用纯英文路径跑Doxygen代码文件统一保存为UTF-8无BOM格式。如果用UTF-8带BOM部分版本在解析文件头时会把BOM字符带进标识符小则注释错位大则符号解析异常。3.3 老版本Windows上多出来的坑如果你用的是1.8.x老版本并且无意中开了GENERATE_HTMLHELPDoxygen会尝试调用HTML Help Workshop的hhc.exe来生成CHM帮助文件。很多开发机上根本没装这个组件结果就是Doxygen卡在那儿日志里反复出现和htmlhelp相关的报错。新用户直接跳过这个选项即可。需要CHM的团队也建议先在普通HTML格式上跑通再考虑单独配置。4. Doxyfile配置第一次跑通文档只需要关注这十几项4.1 配置文件从哪来向导和命令行都可以在项目目录下执行doxygen -g会生成一份默认的Doxyfile里面几百项配置看着吓人其实大部分保持默认就行。图形界面用户也可以先跑doxywizard或doxygen-gui把所有选项可视化点上按钮点Run就能生成适合初次上手。我更习惯直接改Doxyfile文本因为嵌入式AI项目经常要在CI里跑脚本化的配置文件更好维护。4.2 路径相关这四项决定“扫哪些代码”PROJECT_NAME 嵌入式AI推理模块 OUTPUT_DIRECTORY ./doc_output INPUT ./src ./include RECURSIVE YES FILE_PATTERNS *.c *.h *.cpp *.hppPROJECT_NAME显示在文档首页的标题。OUTPUT_DIRECTORY生成的HTML等产物放哪。INPUT要扫描的源码目录可以写多个空格分隔。RECURSIVE YES递归扫描所有子目录不开的话只扫一层。FILE_PATTERNS只收C/C相关文件避免把Makefile、脚本文件也扫进来。4.3 提取策略让文档多露一些信息EXTRACT_ALL YES EXTRACT_STATIC YES EXTRACT_PRIVATE YES EXTRACT_LOCAL_CLASSES YESEXTRACT_ALL YES意味着即使代码里没有一行Doxygen注释Doxygen也会把所有函数名、结构体名提取出来。新接手历史代码时这个选项是救命的能在没有注释的情况下先得到一份“骨架名录”。嵌入式C代码里static函数特别多很多是工具函数我建议EXTRACT_STATIC YES否则这些函数根本不会出现在索引里。EXTRACT_PRIVATE则看情况类比较多时再开防止私有成员把文档刷得太杂乱。4.4 图的开关让调用关系看得见HAVE_DOT YES CLASS_DIAGRAMS YES CALL_GRAPH YES CALLER_GRAPH YES GRAPHICAL_HIERARCHY YES DOT_GRAPH_MAX_NODES 100HAVE_DOT YES是总开关必须配合Graphviz。CALL_GRAPH显示一个函数调用了谁CALLER_GRAPH显示谁调用了这个函数两个都开排查依赖就非常直观。DOT_GRAPH_MAX_NODES我建议设到100左右太大图会拥成一团看不太出层次。4.5 纯C项目必开项OPTIMIZE_OUTPUT_FOR_C YES GENERATE_HTML YES GENERATE_LATEX NO SOURCE_BROWSER YES WARN_LOGFILE ./doxygen_warnings.txtOPTIMIZE_OUTPUT_FOR_C YES会在输出里更强调函数、宏、结构体这些C语言的元素而不是类继承体系纯C嵌入式项目强烈建议开。GENERATE_LATEX NO是为了省时间不做PDF的话别开LaTeX输出。SOURCE_BROWSER YES让文档里能直接跳转到源码行函数引用可以直接点。WARN_LOGFILE会把警告写到文件里方便定期检查哪些函数缺注释。配置保存后执行doxygen Doxyfile看到日志输出Doxygen version used和正常的编译信息最后没有大面积error基本就成了。这时再打开doc_output/html/index.html应该能看到完整的项目文档。5. 注释写对了文档才真正有价值常用写法与嵌入式AI实例5.1 两种主流注释风格Doxygen支持多种注释风格最常用的两种JavaDoc风格/** * brief 图像预处理 * param src 输入图像指针 * param dst 输出图像指针 * param width 图像宽度 * param height 图像高度 * return 0成功-1失败 */ int preprocess_image(uint8_t* src, uint8_t* dst, int width, int height);Qt风格/*! * \brief 初始化模型句柄 * \param path 模型文件路径 * \return model_handle_t */行注释也有两种/// 输入图像缓存区 uint8_t* input_buffer; //! 模型推理超时时间 int timeout_ms;选哪种风格不重要重要的是团队统一。嵌入式AI项目里如果已经是C和C混编建议统一使用JavaDoc风格因为它在跨文件、跨语言时最通用。5.2 高频标签记住了文档就够用标签用途brief一句话简介函数列表页靠它生成details详细说明复杂逻辑放这里param参数含义带参数名return返回值说明file文件级说明写在头文件顶部author、date、version作者、日期、版本see参考其他函数或文件note注意事项defgroup、ingroup定义模块组、加入模块组这里有个常见误区很多开发者只写 brief不写 details。函数逻辑复杂时文档里只有一行简介跟没写差别不大。至少把输入输出约束、调用时机、内存谁负责释放这些信息写清楚。5.3 一个完整的嵌入式AI注释样例以环形缓冲区和推理函数为例/** * file ring_buffer.h * brief 无锁环形缓冲区用于图像帧数据缓存 * author code_engineer * date 2025-02-10 */ /** * brief 环形缓冲区结构体 * note 所有访问操作都基于单生产者单消费者模型 */ typedef struct { uint8_t* buffer; /// 底层存储指针 uint32_t size; /// 缓冲区大小字节数 uint32_t head; /// 写指针 uint32_t tail; /// 读指针 uint8_t full; /// 满标志 } RingBuffer; /** * brief 初始化环形缓冲区 * param rb 缓冲区结构体指针 * param buf 底层存储指针需调用方预先分配 * param size 存储区大小 * return 0 成功-1 参数错误 * note 必须在调用前确保 buf 指向有效内存 */ int ring_buffer_init(RingBuffer* rb, uint8_t* buf, uint32_t size);这样写完之后Doxygen生成的文件页里结构体成员、函数参数、返回值、注意事项都会分门别类展示。团队新人看文档就能明白谁分配内存、谁负责释放不用再翻调用代码猜。5.4 注释写在哪声明处还是定义处对于嵌入式项目头文件和源文件往往分开。函数注释建议写在头文件的声明处因为Doxygen默认扫描INPUT下所有文件头文件里的注释会被完整索引。实现处的复杂逻辑如果需要详细说明可以在 .c 文件里再补一段块注释。如果注释同时出现在声明和定义处Doxygen会合并或警告重复反而更乱。我的习惯是声明处写公共接口说明定义处只写实现细节公共描述放一头。6. 嵌入式AI工程落地时最值钱的四个进阶配置6.1 用 PREDEFINED 把条件编译里的隐藏代码找出来嵌入式AI代码里最常见的现象#ifdef RTOS_ENABLE task_create(task, inference_task, ...); #endif #ifdef USE_NEON neon_conv2d(...); #else c_conv2d(...); #endif如果Doxygen预处理时没有定义这些宏它默认只走#else分支被#ifdef包住的部分会直接从索引里消失。很多人生成文档后发现函数数量不对原因就在这里。解决办法是在Doxyfile里手动喂宏ENABLE_PREPROCESSING YES PREDEFINED RTOS_ENABLE1 \ USE_NEON1 \ BOARD_TYPEimx8这样Doxygen在扫描代码时就会进入对应分支把隐藏的代码也提取出来。这里要注意定义的值要与真实编译时一致不然可能出现“文档里有的函数实际代码里根本没编进去”的情况。6.2 用 EXCLUDE_PATTERNS 把第三方代码挡在门外许多嵌入式AI仓库会把推理引擎、SDK、OS内核源码一起放进依赖目录。如果Doxygen全收生成的文档会被几千个第三方符号淹没自家代码反而找不到。建议在配置里加EXCLUDE_PATTERNS */third_party/* \ */build/* \ */bsp_sdk/* \ */tests/*EXCLUDE_PATTERNS按目录模式匹配比EXCLUDE更灵活。加了之后文档索引保持干净搜索自己代码时不会被无关符号干扰。6.3 用 \defgroup 按业务模块组织导航按目录扫描出来的文档结构是“文件→函数”这对大型嵌入式AI工程并不友好因为一个业务模块可能横跨多个目录。在模块核心头文件里这样写/** * defgroup inference 推理引擎模块 * brief 负责模型加载、前向推理与结果解析 * { */ /** * brief 执行一次模型推理 * param model 模型句柄 * param input 输入图像数据 * param result 输出结果结构 * return 0成功负值为错误码 * see model_load model_free */ int inference_run(model_handle_t model, const uint8_t* input, output_t* result); /** } */其他文件想加入这个模块只需在注释里写/** * ingroup inference * brief 解析模型输出框 */ int parse_output_boxes(...);生成之后文档左侧会出现“模块”导航按业务模块逛代码比按目录逛高效得多。实测下来这套方法对带队接手旧项目特别有用。6.4 多目录输入与输出隔离有些项目源码和脚本混在同一个仓库里Doxygen默认全收会导致文档里出现大量无关页。可以在INPUT里精确控制INPUT ./src \ ./include \ ./boards/linux EXCLUDE ./src/test同时把输出目录单独放在doc_output不进版本控制或只在发布时拷贝一份。这样既不会污染工程目录也方便CI打包。7. 生成之后产物怎么用怎么让文档持续保鲜7.1 看懂HTML产物目录默认生成后OUTPUT_DIRECTORY/html下核心文件就那几个index.html项目主页包含项目简介、模块入口。annotated.html结构体/类列表按字母排序。functions.html函数索引带全部函数名。files.html文件列表点进去能看到每个文件的源码和注释。modules.html如果用了\defgroup模块导航在这里。第一次跑通后先把index.html发给同事看一眼确认PROJECT_NAME、模块页面是否正常再逐步优化配置。7.2 调用关系图怎么读打开某个函数页面如果配置了CALL_GRAPH能看到一张函数调用图。入口在被分析函数本体箭头指向它调用的子函数如果开了CALLER_GRAPH则能看到反向调用者。读图时注意节点颜色和线型。拿不准就点开图例页graph_legend.html它会对默认节点、隐藏节点、受保护成员等样式做出说明。我第一次跑项目时没看图例把灰色节点当成了无效调用后来才发现那是“未被本次提取范围覆盖”的符号。7.3 和Git/CI协作让文档不过期Doxygen这类工具最大的敌人不是配置而是“生成一次再也不跑”。我见过太多团队刚引入时文档很漂亮三个月后代码改了文档还在旧版本上挂着最终无人问津。让文档持续有效需要一点流程配合在CI脚本里增加一步代码变更后执行doxygen Doxyfile有error直接让流水线失败。把生成的html目录发布到内网文档站点或打成一个后台任务每晚更新。代码评审时要求改公共接口必须同步更新注释违反的直接打回。定期看WARN_LOGFILE里的警告重点关注warning: Member ... is not documented这类信息这直接反映注释覆盖率。把文档生成纳入自动化流程后它的价值才会稳定存在。代码评审里多花两分钟催注释比月底熬一宿补文档划算得多。我个人实际使用中的体感是Doxygen并不能自动写出高质量注释但它能把注释和代码的一致性变成一种“看得见”的东西。注释缺失、参数名对不上、模块归属混乱这些问题会直接显示在文档里逼着团队去修正。用过一段时间后新同事上手速度明显加快代码评审时关于“这个函数是不是废弃了”“这个参数传空会怎样”的追问少了很多。嵌入式AI项目的坑本来就多文档这块能省一点是一点。

相关新闻

Jupyter内核注册原理与Anaconda环境精准切换指南

Jupyter内核注册原理与Anaconda环境精准切换指南

1. 为什么在Jupyter里切环境比在命令行里还容易“翻车”刚接手一个图像处理项目时,我需要同时跑两个版本的PyTorch:一个用1.12做模型微调,另一个用2.0.1跑新出的编译器特性。本以为只是conda activate env1→jupyter notebook→ 再conda acti…

2026/10/15 13:35:06 阅读更多 →
Windows下LaTeX安装避坑指南:TeX Live 2020 + CTEX深度配置

Windows下LaTeX安装避坑指南:TeX Live 2020 + CTEX深度配置

1. 这不是“装个软件”那么简单:为什么Win系统下的LaTeX安装至今仍是新手第一道高墙你点开这个标题,大概率正卡在某个环节:下载了CTEX套装却提示“找不到主文件”,双击texworks.exe打开一片空白,或者好不容易编译出PDF…

2026/10/15 13:34:05 阅读更多 →
openrig工作台:Claude Code与Codex多工具环境搭建指南

openrig工作台:Claude Code与Codex多工具环境搭建指南

1. 从“openrig”说起:一个把终端 AI 编码工具串起来的轻量方案第一次看到openrig这个名字,我下意识把它拆成了 “open” 和 “rig” 两部分。rig 在工程语境里常指“把一堆零散部件搭成一套能干活的工作台”,比如矿机机架、测试台架。放到 A…

2026/10/15 13:34:05 阅读更多 →

最新新闻

STM32编码器测速代码实战:正交解码、M/T法与溢出处理

STM32编码器测速代码实战:正交解码、M/T法与溢出处理

简介:这份STM32编码器测速代码面向嵌入式初学者、电赛控制类参赛者及电机控制开发者,围绕STM32定时器的编码器模式,解决增量编码器信号采集与电机转速精确测量问题。资源包共184个文件,以34个c源文件、35个h头文件、34个o目标文件…

2026/10/15 15:45:01 阅读更多 →
ibaAnalyzer_v7.3.5 实战:产线数据回溯与信号处理避坑指南

ibaAnalyzer_v7.3.5 实战:产线数据回溯与信号处理避坑指南

简介:ibaAnalyzer_v7.3.5 是一款面向工业数据分析与设备信号处理场景的分析工具安装包,适合从事自动化测试、性能监控与故障排查的工程师及技术人员使用。压缩包共收录 5 个文件,以 2 个 exe 安装程序、2 个 pdf 说明文档和 1 个 htm 版本记录…

2026/10/15 15:45:01 阅读更多 →
网页实时监控怎么做,轻量本地方案也能很稳

网页实时监控怎么做,轻量本地方案也能很稳

做网站和运维的人,常会遇到一种尴尬:网站并不是彻底崩溃,而是悄悄变了。首页标题被改了,某个页面返回 404,接口响应变慢,SSL 证书快到期没人注意,甚至服务器 IP 已经变化,但平时没人…

2026/10/15 15:45:01 阅读更多 →
监控网页变化:低成本本地化方案实践分享

监控网页变化:低成本本地化方案实践分享

很多站长和运维人员对网站监控的理解,还停留在“网站能不能打开”这个层面。只要首页能正常访问,就觉得一切正常。但实际运维中,真正让人头疼的问题往往不是宕机,而是网页内容在不知不觉中发生了变化。比如标题被改动、页面被插入…

2026/10/15 15:45:01 阅读更多 →
Hexagon DSP开发全流程:从FastRPC接口定义到交叉编译与真机调试

Hexagon DSP开发全流程:从FastRPC接口定义到交叉编译与真机调试

1. 写Hexagon DSP程序之前,先把定位和整体链路想明白说到Hexagon DSP,很多人的第一反应可能是“这是那个带HVX向量扩展的DSP”。但真正动手写程序之前,我建议你先想清楚一件事:你这次要写的,到底是一个跑在DSP上的独立…

2026/10/15 15:45:01 阅读更多 →
酒店管理系统PHP源码:从课设到生产部署的完整改造指南

酒店管理系统PHP源码:从课设到生产部署的完整改造指南

简介:一套面向酒店日常运营的信息化管理PHP源码,适合PHP开发者、酒店信息技术人员以及Web应用方向学习者参考。系统基于PHP与Access数据库构建,按接待、餐饮、采购、经理四个核心部门划分业务模块,覆盖客户预订、入住退房、菜单点…

2026/10/15 15:43:46 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/15 9:49:14 阅读更多 →