模板代码生成工具:从元数据到可用接口的完整实现
1. 为什么需要模板代码生成工具一大半重复代码其实不该手写做后端开发的朋友应该都有过这种体验新项目启动建表、写实体、写Mapper、写Service接口和实现、写Controller然后前端再把列表页、表单页、弹窗、状态标签挨个撸一遍。一个中等规模的业务模块跑下来真正需要动脑子的业务逻辑可能只占三成剩下七成全是结构高度相似的模板代码——换个表名、换批字段、换套校验规则骨架几乎一模一样。我最早参与的一个某订单管理系统就是这样。订单、用户、商品、支付流水四张核心表每张表都要配套增删改查接口、分页查询、批量操作、导入导出前后端加起来二十多个文件。那时团队规模不大我和另外一位后端工程师硬是靠人肉复制粘贴扛了两周结果测试阶段光是把订单状态字段从整数改成枚举就改了十来个文件还漏改了一个会导致列表页筛选失效。从那之后我开始认真思考这类代码能不能让工具去生成而不是靠人去抄。于是这个模板代码生成工具就诞生了。简单说它就是一套以元数据定义为核心以模板引擎为渲染手段以合并策略保证增量安全的代码工厂。你只需要把表结构、字段含义、展示规则说清楚工具自动生成后端接口、数据库访问层、前端页面甚至连枚举字典、错误码、路由注册表都能一起带出来。这类工具和现在流行的大模型生成代码有本质区别。大模型是概率推理你没法保证它两次生成同一段代码结果完全一致而模板代码生成工具是确定性渲染同样的输入必然产出同样的输出。这个特性在生产环境里极其重要——生成结果必须可审查、可复现、可回滚而不是每次靠抽卡。适合使用这套方案的人群也很明确中小型研发团队、内部管理系统密集的业务线、需要快速交付MVP的创业项目以及所有被重复CRUD拖累的开发者。如果你所在的团队已经上了低代码平台那么模板生成工具可以作为平台底层的一部分如果还没有它本身就足以把新项目的启动成本压缩一个数量级。2. 模板代码生成工具的四层架构从模型定义到收尾清理的完整链路我自己最初把这个工具想得很简单以为就是模板加数据、渲染出字符串、写进文件三步走。真正动手之后才发现只要牵扯到增量修改现有代码、处理命名规范、清理无用依赖这类细节事情就会迅速膨胀。折腾到第二版我把整体架构固定成了四层每一层各管一件事。2.1 元数据定义层一切生成的源头元数据层是整个工具的业务真相所在。它描述的是你要生成的系统长什么样而不是代码长什么样。一张表有哪些字段、每个字段什么类型、谁可以编辑、谁只在列表展示、哪几个字段组成唯一索引、状态字段有哪些可选值这些全部以结构化的方式写在元数据配置里。我用的元数据格式是自定义的YAML结构。举个例子订单表里的 status 字段在元数据里长这样fields: - name: status title: 订单状态 type: enum enum: pending: 待支付 paid: 已支付 shipped: 已发货 finished: 已完成 cancelled: 已取消 defaultValue: pending listVisible: true filterable: true之所以不用JSON而用YAML纯粹是出于可读性考虑。表结构多的时候一份元数据文件可能会有三四百行YAML的缩进和注释能力能让团队成员在没有文档的情况下也看得懂字段含义。任何一个字段的含义不清都可以直接在当前行写注释这比单独维护一份字段说明书要高效得多。为了让新成员能快速上手我后来还加了一个元数据校验器它在生成前检查每个字段的配置完整性必须有 name 和 title枚举类型必须有 enum 映射关联字段必须存在对应的目标实体。校验器报错的优先级高于渲染避免元数据错了、结果生成出一堆坏代码、大家还以为是模板的锅这种乌龙。2.2 模板渲染层模板引擎选型与片段复用策略渲染层负责把元数据变成代码文本。我对比过主流模板引擎之后最终选了代码生成场景下比较成熟的一类引擎支持继承、宏、条件判断和循环。选它的核心原因是模板可以复用能抽公共布局。这一点在前后端代码里都非常好用。例如前端列表页几乎每个列表都是搜索区 表格区 分页器的结构。我把这三块抽成了三个宏然后在具体页面的模板里按顺序调用// 模板片段示意 layout.page title${entity.title}管理 list.searchBar fields${entity.searchableFields}/ list.dataTable columns${entity.listColumns} actions${entity.rowActions}/ list.pagination total${${total}}/ /layout.page渲染得到的输出和手写代码几乎无法区分。这里有一个非常关键的细节模板引擎里的变量和最终生成代码里的运行时变量是两套体系。比如分页控件需要读取后端返回的 total 字段模板里必须用转义方式把这个变量写成生成后代码里的实际引用而不能让模板引擎自己把它替换掉。这个区分是新手最容易踩的坑我见过有人把运行时变量写进模板占位符结果生成的代码里全是空字符串。2.3 代码合并层全量覆盖与增量编辑的边界渲染层输出的是完整文件内容但完整文件不代表可以直接覆盖磁盘上的同名文件。因为很多情况下你要生成的目录里已经有一些手写的代码——比如某个Service实现类里已经有人额外加了一段自定义逻辑如果生成器直接覆盖这段逻辑就无声无息地蒸发了。代码合并层存在的意义就是处理生成代码和已有代码之间的交集。我的策略是三种模式并存全量覆盖模式适用于完全由工具生成、备注了请勿手动编辑的文件比如实体类、Mapper接口、前端API定义文件。增量插入模式适用于在已有文件中插入代码块典型场景是往路由注册表里追加一条路由。需要在已有文件中找到锚点位置在锚点后追加。区块保护模式适用于既由工具生成、又允许人工微调的文件。模板会预留一段专门的用户自定义区块区块内的内容在重新生成时原样保留。第三种模式最实用。比如Service实现类生成器默认生成事务包裹的增删改查方法但某个方法内部需要嵌入一段价格计算逻辑那就把这块逻辑放进区块保护区内。下次重新生成时工具看到保护区的标记就直接跳过不碰里面的内容。2.4 后处理层格式化、依赖清理与一致性校验我刚做第一版时生成的代码能跑但不太好看。缩进不统一、idea 一打开全是黄色警告、Java文件里残留着没用的 import。于是后处理层成了救命稻草它专门做收尾的脏活累活。后处理层包括四件事。第一格式化——Java代码走Google Java Format前端代码走Prettier保证和团队现有风格一致。第二无用引用清理——生成器不管三七二十一会把所有可能用到的类都 import 进来后处理层根据实际使用情况删掉多余的。第三探测日志与注释的规范统一比如自动在文件头加上生成时间与生成器版本号方便事后追溯。第四一致性校验——检查生成出的Controller是否每个方法都映射到了Service接口前端API文件名是否和后端路由一一对应发现对不上就直接报错。加上后处理层之后整个生成过程才真正变得像工程师写出来的代码而不是像程序拼出来的代码。这一步也让我意识到模板代码生成工具的上限取决于模板质量而下限取决于后处理层的细致程度。3. 落地实战从元数据到可用接口一天工作压到四十分钟原理说了这么多不如直接看一遍我在某订单管理系统里完整跑通的示例。这个项目我选的是订单管理模块四张核心表里它是关联关系最多、字段最杂的。搞定它其他模块的套路就都一样了。3.1 从数据库表结构到YAML元数据的转换订单表在数据库里有近二十个字段包括主订单编号、用户ID、商品快照、下单时间、支付时间、配送地址、优惠信息、多个价格字段、状态字段和备注。不能直接用数据库表结构作为元数据来源因为数据库的字段类型表达不出业务展示规则——比如 price 字段在数据库里是 decimal但在前端列表需要格式化成12.00。我当时的做法是把字段整理成四类分别标注用途主键字段、列表展示字段、搜索筛选字段、表单编辑字段。然后每个字段根据类型附加展示规则。这步我花了大约十五分钟是整个过程中最耗时的一步但这十五分钟决定了后面生成的所有代码是否贴合实际需求。3.2 配置生成参数并执行生成命令元数据文件就位之后我配置了一个生成描述文件里面声明模块名、基础包名、前端路由前缀、数据库表名映射等module: name: order title: 订单管理 basePackage: com.demo.module.order tableName: t_order pagePath: /order apiPrefix: /api/order createBy: qingqing然后执行生成命令。工具按依赖顺序依次产出后端实体类、Mapper接口与XML映射、Service接口与实现、Controller、前端API封装、前端列表页与表单页、枚举定义。整个过程在本地机器上跑完不到三秒。3.3 检查生成结果真实可用的页面与接口生成完第一时间看代码质量。Controller里每个接口都有参数校验注解Service里的事务边界正确Mapper XML里的字段映射和数据库列名对得上。前端列表页自带搜索条件、分页器和状态标签渲染表单页在编辑模式下自动填充已有值。把服务启动起来打开页面把新增、编辑、删除、分页查询整条链路点了一遍全部正常。这里有个指标值得分享手工实现同样一套模块估算下来要八个小时左右用生成工具做从整理元数据到检查完功能四十分钟搞定。而且因为模板是固定的两个不同模块生成出来的代码风格完全一致后来接手项目的同事说好像一个人在写。这种一致性带来的维护成本下降比省下的那几个小时更值钱。3.4 一次生成多个模块时的批量策略订单模块跑通之后我把用户、商品、支付流水三个模块也顺手生了。批量生成时我加了一个关键配置——模块间依赖关系。用户模块的实体被订单模块的关联查询引用所以必须先生成用户模块再生成订单模块否则后者的关联类型会找不到类。这个依赖顺序用拓扑排序自动解算配置里只需要声明order.dependsOn: [user, product]工具就会按正确顺序执行。批量模式下还可以统一生成数据库初始化脚本和菜单权限SQL。订单、用户、商品、支付流水四个模块每张表一页每个页面对应一套权限标识全部从元数据自动推导出来。这一步让我后来又省了一个下午——之前手工维护权限脚本新增一个接口就要同步改四五处地方。4. 哪些代码适合模板化、哪些不适合我踩过的选型边界任何工具都有适用边界。模板代码生成工具不是万能妙药我一开始也走过弯路什么都想塞给生成器去干结果在复杂项目上吃了几次亏。现在我对哪些代码适合生成哪些不适合有了一套自己的判断标准。4.1 适合生成的代码类型CRUD、骨架、接口层与枚举字典最适合生成器发挥的是那些结构稳定、变动规律、语义简单的代码。我按收益从高到低列一下我实际做过的数据库访问层实体类、Mapper接口、XML映射文件。表结构定了这一层几乎是机械翻译生成器可以做到零人工修改。Service增删改查骨架分页查询、按ID查询、插入、更新、删除这些方法的事务边界和参数校验模式高度一致非常适合模板化。业务定制逻辑放进保护区就好。Controller与前端API封装路由定义、参数接收、Swagger注解、前端请求函数规则简单明确生成出来就能直接用。枚举字典与错误码定义数据库里的数字状态值生成成Java枚举和前端常量可以保证前后端对状态的理解完全一致杜绝魔法数字。项目脚手架文件启动类、配置文件、统一返回体、全局异常处理器、跨域配置。新项目拉起来先跑一遍脚手架模板省去一切初始化琐事。这些代码有一个共同特点它们的正确性可以由输入确定不需要依赖复杂的运行时判断。换句话说你给生成器多少信息它就能给你产出多少正确代码不会出现上下文不够所以瞎猜的情况。4.2 不适合生成的代码类型复杂业务与状态流转不推荐生成的是这样几类强业务规则逻辑、复杂状态机流转、交互密集的专用页面。我之前试图生成一个订单退款审批流多个审批节点、条件分支、超时自动处理、金额校验规则复杂到模板里全是if else嵌套写出来的模板比直接手写代码还长。而且这种业务规则几乎伴随产品迭代持续变化每改一次规则就要改一次模板相当于一个项目养了两份代码在同步演化维护成本直接翻倍。前端复杂表单也一样。联动的级联选择器、动态增删的行项目、依赖接口实时计算的金额汇总这类交互逻辑的模板表达式会复杂到无法阅读。到最后写模板的人必须同时懂业务、懂前端框架、懂模板引擎语法门槛陡然抬高。这种情况我建议保留手写让生成器只负责最外层页面的骨架部分。一个比较稳妥的参考标准是如果你发现自己要在模板里写上超过十行的条件判断逻辑先停下来想想这块适不适合生成。模板是给重复度高的例行工作用的不是给业务规则多变的核心逻辑用的。生成了不该生成的代码等于把简单问题复杂化。4.3 维护生成能力与人工改动的边界约定还有一个非常容易被忽略的问题生成器和手写代码的边界如果不清团队协作就会失控。我见过最混乱的场景是——生成器生成实体类某位同事为了加一个临时字段直接改了实体类源码结果下次生成直接覆盖字段丢失现场只剩一句谁把我代码删了。所以项目里必须有一条铁律由生成器管理三元组元数据、模板、生成配置就能产出的文件一律标注由工具生成请勿直接修改需要人工调整逻辑的优先考虑放进区块保护区一旦业务发展到区块保护区都无法承载的复杂度就应该把这个文件移出生成范围变成完全由人维护的普通源码。生成范围是一个动态收缩的过程不存在文件生成之后就可以不管了的说法。5. 代码合并的增量更新策略如何保证重新生成不丢东西模板代码生成工具用得久了最常被问到的其实是同一个问题业务改了、表加了字段重新生成的时候之前的人工修改会不会丢这个问题的答案取决于合并策略设计得是否靠谱。5.1 覆盖新增字段与保留自定义代码的平衡术先说最简单的情况仅仅在表里加了一个字段。这个场景的预期是——新字段的代码能被加到所有相关文件里同时已有文件里的人工改动原样保留。我的实现思路是把所有生成覆盖的文件按自定义比例分档。实体类这种几乎不会有手动逻辑的直接全量覆盖并且把新增字段拼到元数据配置中即可。Service实现类这种大概率有人工逻辑的走区块保护机制。模板在方法体里预留了自定义区// custom_area:calculate_amount // 此处代码在重新生成时会被保留请勿删除标记 BigDecimal finalAmount originAmount.subtract(discount); // custom_area:calculate_amount生成的代码每次只更新方法签名、参数校验和固定调用链而两个标记之间的内容原样保留。如果你的模板里忘了预留保护区那合并就必然变成破坏性操作这时候只能在机器层做旧文件对比新文件、手工合并的提示效率会低很多。5.2 基于AST的局部注入处理路由和依赖声明区块保护适合一个文件里固定的几个位置可能有人工代码的情况。但路由注册表这种文件很特殊——它没有固定的自定义区而是每次生成可能新增一条路由同时旧的条目可能被删除或改名。这时候用字符串模板直接覆盖整个文件是最容易出问题的。我的做法是基于抽象语法树做局部注入。先生成出一个参考全文然后解析旧文件定位路由注册函数所在的函数体把这个函数体整体替换成新版本其他部分全部保留。这样即使旧文件里有人额外手动加了一个不在生成范围内的临时路由也不会被误删。这其实也对前端路由文件起作用。前端页面路由表在新增模块时变得很拥挤AST局部注入后能保持其他模块的路由条目纹丝不动非常利于多模块并行开发时减少冲突。5.3 生成变更对比报告把默默修改变成显式审阅最后一条经验可能看起来和代码生成无关但它对团队协作帮助最大——每次重新生成后工具会自动产出一份变更报告列出所有被覆盖的文件路径、变更类型和关键差异摘要。刚开始我以为这功能是多余的直到有一次生成后发现某个文件被意外格式化几百行代码的diff里全是空白符变化人工根本看不过来。加了变更报告后每次生成就像做一次Code Review可以看到哪个文件新增了字段哪个文件被删除了旧方法。特别重要的文件还能配置成变更必须二次确认如果有生成器覆盖了保护区外的内容工具会直接报错。这个机制把一个默默执行、事后难查的工具变成了一个每次变更都显式可审计的平台能力。6. 模板代码生成工具的团队化运营把它当作产品而不是脚本工具做出来只是第一步真正让它产生持续价值的是把它当作一个内部产品来维护。我吃过一个很大的教训第一版工具只有我一个人在用模板有什么问题直接改本地文件没有任何版本管理。后来另一个模块的同事也想用跑起来才发现模板和元数据格式对不上我改了一半的字段命名规则把他那边的配置全部带崩了。从那以后我把模板、元数据格式、生成器代码分开管理而且都纳入版本控制。模板仓库和元数据仓库单独建库生成器代码作为一个公共依赖被项目引入。任何模板变更必须走统一提交流程提交信息里写明变更原因和影响范围方便回溯。在团队落地时我还定了一条原则生成的代码是构建产物而不是源代码。这意味着生成的代码不需要列入Code Review的范围——需要审查的是元数据配置和模板本身。成员改业务只改元数据和保护区改模板需要专门经过验证用例的回归测试新成员上手只要学会写YAML元数据就能独立完成一个新模块的八成工作。这个工具内聚了元数据管理、模板渲染、合并策略和版本追溯四个部分越往后运营价值越明显。我也设想过继续扩展的方向把OpenAPI规范文档作为元数据来源直接对接外部接口文档生成调用代码或者做成系统内置的低代码构建引擎让前端页面在后端渲染层直接输出可运行的交互页面。不过当前这套元数据定义 模板渲染 增量合并 后处理的架构已经足够稳定新需求的接入基本不需要动核心层只需要不断丰富模板库和校验规则。如果你所在的团队也天天被重复CRUD压得喘不过气我建议你从最小的场景开始尝试挑一个结构最稳定的模块定义元数据、写三个模板跑通一次生成。只要这一步走通了后面就是纯收益。但记住一定先把备份策略和变更报告做好再推广出去否则一次覆盖事故就足以让团队对这个工具失去全部信任。

相关新闻

桶排序全解析:原理、复杂度与工程实践

桶排序全解析:原理、复杂度与工程实践

1. 从"把数据扔进格子里"说起:桶排序的第一性原理如果你接触排序算法有一阵子,大概率听说过这句话:"桶排序在数据分布均匀的时候能做到接近O(n)"。但很多人学完快排、归并之后,对桶排序的印象只剩下一个模糊的…

2026/10/15 4:45:53 阅读更多 →
ET 200MP模拟量输出模块AQ 4xU/I ST选型接线调试指南

ET 200MP模拟量输出模块AQ 4xU/I ST选型接线调试指南

简介:西门子SIMATIC S7-1500/ET 200MP模拟量输出模块AQ 4xU/I ST设备手册,面向工业自动化领域的工程技术人员、系统集成商与运维人员。内容聚焦模拟量输出模块在制造、能源、交通等场景下的选型、接线、参数设置与调试问题,帮助用户实现精准的…

2026/10/15 4:45:53 阅读更多 →
Windows开机自启全攻略:启动文件夹、注册表、任务计划与服务详解

Windows开机自启全攻略:启动文件夹、注册表、任务计划与服务详解

1. 开机自启这件事,远不止把快捷方式拖进启动文件夹那么简单很多人第一次接触开机自启,都是因为某个小工具每次重启后都要手动打开,烦得不行。于是上网一搜,看到最多的答案就是“把快捷方式拖进启动文件夹”,照做之后确…

2026/10/15 4:45:53 阅读更多 →

最新新闻

Vue项目实现Office文档在线预览:DOCX、XLSX、PPT一次搞定

Vue项目实现Office文档在线预览:DOCX、XLSX、PPT一次搞定

做前端这几年,被文档预览折磨的次数真不算少。之前接一个合同管理需求,用户提了个特别朴素的要求:附件里的Word合同不要下载到本地再打开,在网页里直接能看就行。我一开始也心想,这有什么难的?不就是嵌一个…

2026/10/15 5:37:22 阅读更多 →
C00系统PLC梯形图维修指南:钻攻中心信号排查与修改实战

C00系统PLC梯形图维修指南:钻攻中心信号排查与修改实战

简介:面向日本兄弟钻攻中心C00系统的操作与维护人员,这是一份系统讲解PLC(可编程逻辑控制器)应用的官方技术手册,内容由浅入深,特别适合现场工程师和培训学员快速掌握设备控制逻辑。手册从PLC基础概念与系统…

2026/10/15 5:37:22 阅读更多 →
PyTorch核心机制与实战:动态图、自动微分、显存优化及多卡训练

PyTorch核心机制与实战:动态图、自动微分、显存优化及多卡训练

1. 从一次模型训练卡死说起:为什么值得重新认识PyTorch很多人第一次接触深度学习框架,都是从一行import torch开始的。但真正让PyTorch在众多框架中站稳脚跟的,不是它简洁的API,而是它背后那套"动态图自动微分"的组合拳…

2026/10/15 5:37:22 阅读更多 →
PyTorch深度学习实战:从张量到分布式训练与部署全链路指南

PyTorch深度学习实战:从张量到分布式训练与部署全链路指南

1. 从一张显卡到一套完整训练链路:我为什么把PyTorch当作深度学习的主力框架如果你刚接触深度学习,或者已经用过其他框架但总觉得“跑得起来却调不明白”,那PyTorch大概率是你绕不开的一站。它不是一个“点一下就能出结果”的黑盒工具&#x…

2026/10/15 5:37:22 阅读更多 →
兄弟钻攻中心C00系统PLC手册:地址、梯形图与维修实战

兄弟钻攻中心C00系统PLC手册:地址、梯形图与维修实战

简介:日本兄弟钻攻中心C00系统PLC系统手册是针对S500X1/S700X1机型的技术文档,专供经过认证或培训的操作与维护人员使用,用于掌握钻攻中心PLC程序编辑、调试与故障排查。内容从PLC基础概念、系统连接示意图讲起,再进入PLC功能操作…

2026/10/15 5:37:21 阅读更多 →
LLM request timed out排查指南:OpenClaw接入第三方API超时解决方案

LLM request timed out排查指南:OpenClaw接入第三方API超时解决方案

LLM request timed out 这个报错,接第三方 API 的朋友应该不陌生。OpenClaw 本身是个开源智能体框架,跑起来很轻,但一旦把模型源切到第三方兼容接口,超时就像定时炸弹一样时不时爆一下。这篇文章把我自己调通的全过程写出来&#…

2026/10/15 5:36:21 阅读更多 →

日新闻

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/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/14 7:53:34 阅读更多 →