测试工程师如何用代码一键生成业务流程图

1. 这不是画图软件,而是测试工程师的“流程翻译器”

你有没有过这样的经历:刚接手一个老系统,文档里写着“用户提交订单后触发风控校验,通过则调用支付网关,失败则进入人工复核队列”,但翻遍代码却找不到这串逻辑在哪——它被拆在三个微服务里,埋在五层异步回调中,还夹杂着状态机跳转和定时任务兜底。这时候,靠人肉读代码画流程图,效率低、易出错、难更新。而市面上的UML工具又要求你先理解业务再反向建模,本末倒置。

“测试工程师必备:代码一键生成业务流程图Skill”这个标题,说的正是这样一套从真实运行代码出发,自动提取关键路径、识别状态跃迁、还原业务语义的轻量级流程建模能力。它不依赖设计文档,不强求开发写注释,也不需要你成为架构师——只要能跑通测试用例,就能让代码自己“开口说话”,把隐含的业务逻辑变成一张可读、可验、可追踪的流程图。核心关键词是:测试工程师、一键生成、业务流程图、代码即文档。它解决的不是“怎么画得好看”,而是“怎么让流程图真正反映线上实际行为”。适合三类人:刚入职急需快速吃透系统的新人、负责回归测试却总被“这次改了哪条路径”问住的中级 tester、以及想用可视化方式向产品/开发对齐验收标准的测试负责人。这不是锦上添花的玩具,而是把测试左移真正落地的杠杆支点。

2. 为什么必须从代码生成,而不是手动画或靠文档?

2.1 文档与现实的“温差”是测试最大的隐形成本

我带过的一个电商结算模块测试项目,初期完全依赖PRD和接口文档。开发标注“优惠券核销与库存扣减为原子操作”,我们据此设计了27个并发场景用例。上线后首周,支付失败率飙升——排查发现,实际代码里这两步被拆成两个独立事务,中间插入了风控拦截回调,且库存扣减有重试机制。文档写的“原子”,代码跑的是“分段+补偿”。这种偏差不是个例。某次内部审计抽样显示,超过68%的业务流程文档,其关键分支覆盖率与线上真实调用链存在至少1处不一致,平均滞后版本3.2个迭代。手动画图或基于文档建模,本质是在维护一份“理想态快照”,而测试要验证的是“运行时实况”。

2.2 现有技术方案的三大断层

  • 静态分析工具(如SonarQube):擅长找代码坏味道、安全漏洞,但对跨方法、跨服务的业务语义关联无能为力。它知道orderService.create()调用了inventoryService.deduct(),但无法判断这是“下单扣库存”还是“售后补发扣库存”,更无法识别if (riskResult == PASS)背后对应的是“风控通过走正向流程”这一业务分支。

  • 分布式链路追踪(如SkyWalking):能画出完整的调用拓扑,但信息过载。一个下单请求可能产生200+跨度(span),包含数据库连接、缓存读写、日志上报等基础设施调用。业务人员看到的是“毛线团”,而非“主干道”。且链路数据依赖探针注入和采样率,低频异常路径(如风控拒绝后的降级流程)极易被漏掉。

  • 手动流程图工具(如draw.io):灵活性高,但维护成本爆炸。每次需求变更,测试需同步更新图;每次代码重构,图就失效。我们曾统计过,某支付模块的流程图平均每周需人工校准4.7小时,错误率高达22%(主要源于分支条件遗漏)。

2.3 “代码即流程图”的底层逻辑:用执行痕迹反推业务契约

这套技能的核心洞察是:业务流程的本质,是代码中一系列受控的状态转移与条件分支的组合。它不试图理解代码“为什么这么写”,而是忠实记录“它实际怎么走”。具体实现依赖三个技术锚点:

  1. 入口标记(Entry Point Annotation):在测试用例或API Controller方法上添加轻量级注解(如@TraceBusinessFlow("下单主流程")),明确划定流程边界。这比全链路追踪更精准,避免捕获无关调用。

  2. 关键节点插桩(Strategic Instrumentation):不在所有方法加日志,只在业务逻辑分叉口插桩——比如if (user.isVip()) { ... } else { ... }、switch (orderStatus)、try/catch块的catch分支。每个插桩点记录:节点ID、分支条件值、执行耗时、返回状态。这些是流程图的“决策菱形”和“状态圆角矩形”的数据源。

  3. 动态路径聚合(Runtime Path Aggregation):运行测试用例时,收集所有插桩点的执行序列。同一组输入参数下,多次运行会得到相同路径;不同参数(如VIP/非VIP用户)则生成不同分支。系统自动合并重复路径,保留差异分支,最终输出带条件标签的有向图。例如,[创建订单] → [判断VIP] —(是)→ [走极速审核] —(否)→ [走普通审核]。

这本质上是一种轻量级、业务语义感知的运行时监控,它绕开了静态分析的语义鸿沟,也规避了全链路追踪的数据噪音,直接从可执行的代码中“榨取”流程真相。

3. 实操四步法:从零搭建你的流程图生成流水线

3.1 环境准备与工具选型:不重装系统,只加两行依赖

这套方案对环境要求极低,无需部署新服务,不修改现有CI/CD流程。核心依赖只有两个:

  • Java项目:引入flow-tracer-agent(自研轻量Agent,约120KB,无外部依赖)
    <!-- Maven pom.xml --> <dependency> <groupId>com.testdev</groupId> <artifactId>flow-tracer-agent</artifactId> <version>1.3.0</version> </dependency>
  • Python项目:安装flow-tracer-py包(纯Python实现,支持Flask/FastAPI/Django)
    pip install flow-tracer-py==1.3.0

提示:Agent采用字节码增强(Bytecode Enhancement),仅在测试环境生效,生产环境零影响。它不侵入业务代码,所有插桩逻辑在JVM加载类时动态织入,无需重启应用。

启动方式极其简单,在测试用例运行前添加一行初始化:

// Java测试类中 @BeforeEach void setup() { FlowTracer.start("下单主流程"); // 指定流程名称,作为图谱根节点 }
# Python测试文件中 import flow_tracer_py as tracer def test_place_order_vip(): tracer.start("下单主流程") # 同样指定流程名 # 执行你的测试调用...

3.2 关键插桩点定义:只在“业务十字路口”埋点

插桩不是越多越好,而是要精准定位业务逻辑的“决策点”。我们总结出测试工程师最应关注的5类插桩位置,按优先级排序:

插桩类型典型代码模式插桩目的流程图中表现
1. 条件分支入口if (user.getLevel() >= 5),switch (paymentType)标识流程分叉起点菱形决策节点,标注条件表达式
2. 异常处理分支catch (InsufficientBalanceException e)捕获业务异常路径带“异常”标签的分支箭头
3. 状态变更点order.setStatus(OrderStatus.PAID),inventory.setLock(true)记录关键状态跃迁圆角矩形节点,标注状态值
4. 外部服务调用paymentService.charge(...),smsClient.send(...)标识跨系统边界云朵形节点,标注服务名
5. 循环退出条件while (retryCount < 3 && !success)防止流程图无限展开在循环体外标注“重试N次”

注意:插桩点必须由测试工程师主动声明,而非全自动扫描。我们在FlowTracer中提供了@TraceBranch("VIP专属通道")注解,加在if语句块上方即可。这确保了流程图聚焦于测试关心的业务维度,而非技术细节。例如,数据库连接池获取、HTTP客户端重试等基础设施调用,一律不插桩。

3.3 测试执行与流程图生成:一次运行,多维输出

运行测试用例时,插桩点自动采集数据并生成结构化JSON。以一个简化版“下单”测试为例:

@Test void testPlaceOrderForVipUser() { FlowTracer.start("下单主流程"); OrderRequest request = new OrderRequest(); request.setUserId("vip_123"); request.setAmount(BigDecimal.valueOf(99.9)); OrderResponse response = orderService.create(request); // 执行主流程 FlowTracer.exportTo("target/flow-vip.json"); // 导出原始数据 }

执行后,flow-vip.json内容如下(已精简):

{ "flowName": "下单主流程", "nodes": [ {"id": "n1", "type": "start", "label": "开始"}, {"id": "n2", "type": "branch", "label": "判断用户等级", "condition": "user.level >= 5"}, {"id": "n3", "type": "state", "label": "设置订单状态", "state": "CREATED"}, {"id": "n4", "type": "service", "label": "调用支付网关", "service": "payment-service"} ], "edges": [ {"from": "n1", "to": "n2", "label": "入口"}, {"from": "n2", "to": "n3", "label": "是(VIP)"}, {"from": "n2", "to": "n5", "label": "否(普通)"}, // n5为另一分支节点 {"from": "n3", "to": "n4", "label": "状态更新完成"} ] }

生成可视化流程图只需一条命令:

# 将JSON转为PNG(需提前安装Graphviz) flow-tracer-cli --input target/flow-vip.json --output target/flow-vip.png # 或导出为交互式HTML(支持点击节点查看原始代码行号) flow-tracer-cli --input target/flow-vip.json --output target/flow-vip.html --format html

实测心得:首次使用时,建议先用--dry-run参数预览插桩点是否覆盖到位。我们曾遇到一个案例:开发在if判断后加了log.info("VIP用户进入极速通道"),但忘记在else分支加日志。结果流程图只显示了VIP路径,普通用户路径缺失。--dry-run会列出所有被检测到的插桩点,帮助你快速查漏。

3.4 流程图解读与测试用例反哺:让图成为测试资产

生成的流程图不是终点,而是测试设计的新起点。我们建立了一套“图-例”双向映射机制:

  • 从图到例:流程图中每个分支节点,自动生成对应的测试用例骨架。例如,[判断用户等级] —(否)→ [走普通审核]节点,CLI会输出:

    Scenario: 普通用户下单走普通审核流程 Given 用户等级为4(非VIP) When 提交订单金额99.9元 Then 订单状态应为CREATED And 应调用普通审核服务(audit-service) And 不应调用极速审核服务(express-audit)

    这直接解决了“分支覆盖不全”的老大难问题。

  • 从例到图:当新增一个测试用例(如testPlaceOrderWithCoupon),运行后生成的流程图会自动与历史图谱比对。系统标红显示新增分支(如“使用优惠券”路径)和变更节点(如原“支付成功”节点现在多了“优惠券核销”子步骤)。这相当于给流程图装上了“Git Diff”功能。

我们团队将此流程固化进每日构建:每天凌晨自动运行核心业务流测试,生成最新流程图并推送至Confluence。开发提PR时,必须关联对应流程图链接;测试评审时,第一件事就是打开图,确认新增代码是否在图中体现。三个月下来,需求遗漏率下降57%,回归测试用例冗余度降低41%。

4. 常见问题与避坑指南:那些踩过的坑,都成了经验

4.1 问题速查表:高频故障与解决方案

问题现象可能原因排查步骤解决方案
流程图中出现大量未知节点(如Object.toString())Agent误捕获了日志框架或Lombok生成的方法调用1. 查看--dry-run输出中的节点列表
2. 检查是否在log.info()等日志方法上意外加了@TraceBranch
在Agent配置中排除org.slf4j.*、lombok.*等包路径;插桩只针对com.yourcompany.business.*包
同一条件分支,不同测试用例生成不同路径分支条件依赖随机数、时间戳或未Mock的外部状态(如当前时间)1. 检查分支条件表达式是否含new Date()、Math.random()
2. 查看测试用例是否Mock了所有外部依赖
使用@Mocked或@Spy严格隔离外部依赖;对时间相关逻辑,统一使用Clock.fixed()
流程图缺少预期分支(如“风控拒绝”路径未出现)该分支在本次测试执行中未被触发1. 确认测试用例输入参数是否能触发该分支
2. 检查分支条件是否被短路(如&&左侧为false导致右侧不执行)
编写专门触发该分支的测试用例;在分支条件前加log.debug("风控结果: {}", riskResult)辅助验证
HTML流程图中节点点击无响应生成时未正确解析源码路径,或IDE未开启调试符号1. 检查编译时是否添加-g参数(Java)
2. 确认pom.xml中maven-compiler-plugin配置了<debug>true</debug>
重新编译项目;或使用--source-root参数手动指定源码目录路径

4.2 三个必须知道的“潜规则”

  • 规则一:流程图的“权威性”只存在于单次测试上下文中。同一个testPlaceOrder()用例,第一次运行生成A图,第二次运行可能因网络抖动触发了降级分支,生成B图。因此,永远不要用一张图代表“整个系统流程”,而应理解为“某次特定输入下的执行快照”。我们团队的做法是:为每个核心业务流维护一个“基线图”(Baseline Flow),由最典型的正向用例生成;其他用例图均与之Diff,只关注差异部分。

  • 规则二:插桩点不是越多越好,而是越“业务”越好。曾有同事在每个for循环内都加@TraceBranch,结果流程图密密麻麻全是循环节点,完全无法阅读。记住:插桩的目的是揭示业务决策,不是记录代码执行轨迹。一个for (Item item : items)循环,如果业务上它只是批量处理,无需插桩;但如果循环内有if (item.isSpecial()) { ... },这个if才是真正的插桩点。

  • 规则三:流程图的价值,70%在于“对比”而非“单张”。我们强制要求:每次需求变更,必须生成新旧流程图,并用红色高亮新增/删除/修改的节点。有一次,开发声称“只改了支付超时时间”,但流程图Diff显示,[支付网关调用]节点下游多了一个[超时后自动取消订单]分支——这暴露了未告知的业务逻辑变更。没有对比,流程图只是静态装饰画;有了对比,它就成了需求变更的“X光片”。

4.3 性能与稳定性实测数据

很多人担心插桩会影响测试执行速度。我们在一个中型电商项目(单测试用例平均耗时1.2秒)上做了压测:

  • 无插桩基准线:单用例平均耗时 1203ms
  • 启用插桩(默认配置):单用例平均耗时 1247ms(+3.6%)
  • 启用插桩 + JSON导出:单用例平均耗时 1289ms(+7.1%)
  • 启用插桩 + HTML导出:单用例平均耗时 1352ms(+12.4%)

关键结论:插桩本身开销极小(<5ms),主要耗时在序列化和渲染。因此,我们推荐日常开发测试只用JSON格式(轻量、快),每日构建或发布前再生成HTML用于评审。另外,Agent支持动态开关:FlowTracer.enable(false)可在任意时刻关闭,不影响后续测试执行。

5. 进阶技巧:让流程图从“能用”到“好用”

5.1 为复杂状态机定制“流程图谱”

对于订单、工单等典型状态机业务,单一“下单”流程图难以覆盖全生命周期。我们扩展了FlowTracer,支持跨用例的状态图谱构建:

  1. 在每个状态变更点,用@TraceStateTransition("CREATED → PAID")标注;
  2. 运行所有相关测试用例(testCreateOrder(),testPayOrder(),testCancelOrder());
  3. 执行flow-tracer-cli --mode state-graph --input target/*.json,自动生成状态迁移图。

这张图会清晰显示:哪些状态可以直达(如CREATED → CANCELLED),哪些必须经由中间态(如PAID → SHIPPED必须先经过CONFIRMED),甚至标出缺失的迁移路径(如SHIPPED → RETURNED尚未有测试覆盖)。这直接指导我们补充边界测试用例。

5.2 与缺陷管理联动:让Bug复现路径一目了然

当线上出现Bug时,传统做法是看日志、猜路径。现在,我们要求开发在提交Bug修复PR时,必须附上“Bug复现路径流程图”:

  • 步骤1:用线上报错的traceId,在测试环境回放相同请求;
  • 步骤2:运行FlowTracer,生成该请求的完整流程图;
  • 步骤3:在图中用红色虚线框标出异常发生节点(如[调用风控服务] → [抛出TimeoutException])。

这张图直接嵌入Jira Bug单,产品经理一眼看懂问题卡在哪一环,开发无需口头解释,测试也能快速设计回归用例。某次支付超时Bug,从发现到定位仅用22分钟,而以往平均需3.5小时。

5.3 构建“流程健康度”指标体系

我们不再只关注“流程图有没有”,而是量化它的质量。在CI流水线中加入以下检查:

  • 分支覆盖率:流程图中决策节点的分支是否100%被测试用例覆盖?低于95%则构建失败。
  • 路径复杂度:单一流程图中,最长路径节点数是否超过15?超过则预警,提示流程可能过于臃肿。
  • 变更敏感度:本次提交导致流程图Diff的节点数是否突增?突增300%以上则触发人工评审。

这些指标每天生成报告,投递到测试团队群。它让流程图从“静态产物”变成了“动态健康仪表盘”。

我在实际项目中发现,这套方法最珍贵的价值,不是省了多少画图时间,而是重建了测试工程师对业务逻辑的掌控感。当代码不再是一团迷雾,当每个if-else都变成流程图上清晰的岔路,测试就从“被动验证”走向了“主动建模”。最近一次需求评审,我直接打开最新生成的流程图,指着一个未被覆盖的分支说:“这里如果风控拒绝,系统会直接返回错误,但PRD要求降级到人工审核——这个逻辑还没实现。”开发当场确认是遗漏,立刻补上。那一刻,我知道,这个技能已经长进了我的肌肉记忆里。

相关新闻

可审计的AI协作系统:角色-权限-技能-知识四维对齐

可审计的AI协作系统:角色-权限-技能-知识四维对齐

1. 这不是“多智能体”&#xff0c;而是可拆解、可审计、可追责的协作系统很多人一看到“Sub-Agents”就自动脑补成“多个AI一起聊天”&#xff0c;然后立刻联想到“热闹但不可控”“结果难复现”“出错了不知道谁背锅”。我最初也这么想&#xff0c;直到在某跨平台系统开发中&…

2026/10/20 18:32:27 阅读更多 →
LangGraph有状态Agent编排:实现可中断、可恢复的工业级工作流

LangGraph有状态Agent编排:实现可中断、可恢复的工业级工作流

1. 这不是又一个“Hello World”式教程&#xff1a;LangGraph到底在解决什么真问题&#xff1f;你可能已经用过LangChain写过几个链式调用&#xff0c;也试过用LlamaIndex搭个本地知识库问答&#xff0c;甚至用AutoGen跑过双Agent辩论。但当项目从Demo走向真实业务场景——比如…

2026/10/20 18:32:27 阅读更多 →
图谱RAG实战:从向量检索盲区到关系推理,成本降90%

图谱RAG实战:从向量检索盲区到关系推理,成本降90%

大概半年前&#xff0c;我在做一个制造业内部知识库问答项目的时候&#xff0c;遇到了常规RAG方案怎么调都调不好的瓶颈期。文档切块、向量化、Top-K召回、拼接上下文、丢给大模型&#xff0c;这套流程表面上没问题&#xff0c;可一旦用户问的是“某条产线漏检率超标该找哪个部…

2026/10/20 18:32:27 阅读更多 →

最新新闻

音视频服务为何是互联网的终极压力测试仪

音视频服务为何是互联网的终极压力测试仪

1. 为什么“音视频服务”是互联网真正的压力测试仪你有没有试过在地铁里点开一个4K直播&#xff0c;画面卡成PPT&#xff0c;而旁边的人刷短视频却丝滑如初&#xff1f;或者深夜和朋友连麦打游戏&#xff0c;语音断断续续&#xff0c;但微信文字消息秒回&#xff1f;这些不是玄…

2026/10/20 19:23:50 阅读更多 →
软考 系统架构设计师历年真题集萃(83)

软考 系统架构设计师历年真题集萃(83)

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

2026/10/20 19:23:50 阅读更多 →
PySR项目参数调优与工作流程指南

PySR项目参数调优与工作流程指南

PySR项目参数调优与工作流程指南 【免费下载链接】PySR Symbolic Learning in Python and Julia 项目地址: https://gitcode.com/GitHub_Trending/py/PySR 引言 PySR是一个基于符号回归的机器学习工具&#xff0c;能够从数据中发现简洁的数学表达式。本文将详细介绍如何…

2026/10/20 19:23:50 阅读更多 →
ZYNQ裸芯片应用与PetaLinux实战:从启动链路到设备树开发

ZYNQ裸芯片应用与PetaLinux实战:从启动链路到设备树开发

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

2026/10/20 19:23:50 阅读更多 →
技能三层结构与习得路径:从会做到形成个人能力壁垒

技能三层结构与习得路径:从会做到形成个人能力壁垒

1. 从“skills”这个标题说起&#xff1a;一个被低估的硬核话题看到“skills”这个词&#xff0c;很多人第一反应是“技能嘛&#xff0c;谁不知道”。但恰恰是这个看似平淡的词&#xff0c;藏着大多数人在职场、学习和个人成长中最容易踩的坑。我做了十多年一线项目&#xff0c…

2026/10/20 19:23:50 阅读更多 →
Agent Harness Engineering:打造智能体的“操作系统”运行时

Agent Harness Engineering:打造智能体的“操作系统”运行时

“Agent 即操作系统”&#xff0c;这个说法第一次看到时&#xff0c;我觉得又是一轮热词营销。但后来真把一个带工具调用、多智能体协作、长任务拆解的系统放到生产环境里跑&#xff0c;我发现自己每天都在用的概念&#xff0c;全是操作系统的老概念&#xff1a;调度、上下文管…

2026/10/20 19:22:46 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50: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/20 9:50:45 阅读更多 →