open-code-review:让代码评审从形式主义走向自动化体系
1. 这个项目到底在解决什么问题说实话代码评审这件事在绝大多数团队里都处于一种“人人都说重要但实际做得稀烂”的状态。不少团队用的是公司统一采购的GitLab或者GitHubMR/PR功能也开了但真正走到评审环节的时候要么是“哦我看过了没问题合并吧”要么是reviewer压根没看直接点了个approve。代码评审变成了一场形式主义的过场时间花了风险一点没降下来。我最早接触open-code-review这个项目标题时第一反应是“这又是一套评审工具链”。但真正把思路理清楚之后发现它的核心价值不在工具本身而在它把“评审”这个动作重新拆解成了一个可配置、可量化、可自动化的开放流程。项目名字里的“open”我理解有两层意思一是开源二是开放式流程——评审规则不再锁在某个管理者的脑子里而是以代码和文档的形式沉淀在仓库里全员可见、可讨论、可持续演进。用一句话概括这个项目解决的是“代码评审靠人盯”的问题。它把评审从“人与人之间的临时对话”变成了“流程 规则 自动化辅助 人工判断”四层结构。适合谁用适合那些已经有代码评审意识、但执行效果不稳定的中小型研发团队也适合想从零建立评审规范的独立开发者和小型工作室。后面我会把整个落地过程拆开讲从规则设计到CI接入再到团队推广的节奏全部基于真实可复现的实践来写。2. 整体架构与核心模块拆解2.1 传统代码评审的三个真实痛点先聊聊为什么那么多团队的评审流于形式。我做过的团队里评审效果差通常逃不出三个原因。第一个原因是评审范围太大。一个MR动辄几十个文件、上千行diffreviewer看到这种规模第一反应就是“看不过来随便看看算了”。人脑的工作记忆是有限的面对超过500行的diff注意力会急剧下降前100行还能认真看后面基本是在扫。这个问题不是态度问题是认知负担问题。第二个原因是评审没有标准。每个人review的侧重点完全不一样有人只盯着代码风格有人只看逻辑漏洞有人全程沉默。评审产出完全取决于当天哪个reviewer心情好、时间多、跟提交者关系怎么样。没有统一的检查清单评审质量就是随机的。第三个原因是评审意见没有闭环。就算有人认真提了comment也可能是一轮对话之后就没有下文了。没有门禁、没有规则、没有记录,comment提了就提了改不改全看提交者良心。时间一长认真提意见的人也会觉得没意思干脆不看了。2.2 “开放式”到底开在哪里open-code-review的核心思路是把这个无序、随机、靠自觉的过程改造成一个结构化的开放流程。具体来说它做了四件事。第一件事把评审标准变成可执行的检查清单以Markdown或YAML文件的形式存放在仓库的.code-review/目录下。每个团队可以按自己的技术栈、业务场景和维护习惯定制属于自己的检查项。第二件事把评审规则变成自动化的门禁通过GitHub Actions或GitLab CI在合并请求触发时自动跑一轮静态检查、规范校验和基础的安全扫描。机器能判定的问题不劳烦人肉reviewer。第三件事把人工评审集中在机器判不了的高价值环节比如业务逻辑合理性、架构设计一致性、异常处理完备性、未来的可维护性。人工不需要再浪费时间看缩进和分号了。第四件事把整个评审过程做成透明、可追踪的。谁提了什么意见、改没改、最后怎么处理的全部留痕形成团队的代码评审知识库。2.3 自动化与人工评审的边界划分这是整个方案里最需要认真思考的部分。自动化不是万能的人工评审也不应该被完全替代关键是划分清楚各自的职责边界。我通常用一张表来定义这个边界团队里开会讨论之后微调但大逻辑基本是通用的审查维度负责方判断方式代码风格与格式自动化Prettier、ESLint、Black、gofmt等基础静态缺陷自动化SonarQube、CodeQL、静态分析插件安全漏洞扫描自动化依赖扫描、密钥检测、SAST工具单测覆盖率变化自动化覆盖率阈值比较业务逻辑正确性人工关注边界条件、异常分支、并发场景架构一致性人工与现有模块的交互方式、扩展性命名与可读性人工为主工具辅助变量名、函数职责、上下文含义未来可维护性人工是否容易扩展、是否引入额外复杂度这个边界定下来之后评审效率会有一个质的提升。自动化负责拦截那些“一眼假”的问题人工就能把有限的时间聚焦在真正需要思考的地方。关键是要让团队认同一个观点自动检查通过不等于可以合并那只是第一步。2.4 一个可复用的仓库结构这个项目在落地时我推荐采用一个标准化的目录结构放在项目仓库的根目录下简单明了.code-review/ ├── rules/ │ ├── general.md # 通用评审规则 │ ├── frontend.md # 前端专项规则 │ ├── backend.md # 后端专项规则 │ └── security.md # 安全专项规则 ├── templates/ │ ├── pr-template.md # 合并请求描述模板 │ └── checklist.md # 人工评审检查清单 ├── scripts/ │ ├── run-static-check.sh # 静态检查入口 │ ├── check-coverage.py # 覆盖率校验脚本 │ └── lint-summary.py # 输出结构化检查报告 └── config.yml # 评审流程配置门禁规则、目录保护等这个结构的好处在于评审规则和代码放在同一个仓库里规则的变更跟着代码评审记录一起走谁改的、为什么改、什么时候改的用git log一查就清清楚楚。这也是“开放式”的含义落地——规则不再藏在不透明的制度文档里而是以代码的形式被全员维护、全员遵守。3. 从零落地配置、脚本与推行节奏3.1 第一步先把MR模板和评审清单做出来不要一上来就写脚本、接CI先把“人”的环节理顺。第一个要产出的是合并请求描述模板PR Template。这个模板的作用是强制提交者在发起评审之前先把背景信息说清楚降低reviewer的阅读理解成本。我常用的模板大概是这样的## 变更说明 - 这个MR解决了什么问题 - 为什么选择这种实现方式 ## 变更范围 - 涉及的核心模块 - 新增/修改文件列表 - 是否有数据库变更、接口变更、依赖变更 ## 测试情况 - 本地自测了哪些场景 - 新增了哪些单测/集成测试 - 是否有回归风险 ## 自查清单 - [ ] 已跑通本地全部测试 - [ ] 已检查方法命名和职责边界 - [ ] 已处理异常分支和边界条件 - [ ] 无遗留的调试代码和TODO - [ ] diff行数在合理范围内500行这个模板写得好不好直接决定reviewer拿到这个MR的第一印象。很多reviewer不愿意认真review是因为提交者给的信息太少连这个MR是干嘛的都要猜半天。模板把这个信息缺口补上之后评审的门槛就低了一大截。人工评审检查清单checklist是另一个核心文档。它按技术维度分成几组reviewer逐项确认每一项都给出明确的判断标准而不是笼统的“请认真评审”。我提炼过的通用清单核心部分长这样逻辑正确性是否覆盖了正常路径、异常路径和边界条件是否有明显的逻辑漏洞并发安全是否涉及共享状态是否有竞态条件锁的粒度和用法是否正确资源管理连接、句柄、内存是否释放是否考虑异常中断后的资源回收错误处理错误信息是否清晰是否吞掉了不该吞的异常是否泄露了内部细节依赖影响新增依赖是否必要有没有更轻量的替代方案版本是否冲突兼容性是否破坏了向下兼容接口变更是否同步更新了调用方可测试性代码是否容易写单测有没有为了测试而引入不必要的mock3.2 第二步接入CI门禁让机器先跑一轮人工环节跑通之后再开始接自动化。这一步是整个项目从“文档规范”走向“工程基建”的分水岭。先要把仓库的受保护分支main/master配置好强制要求合并前必须通过CI检查并获得至少一个reviewer的approve。GitHub和GitLab都支持这个配置路径分别是Settings - Branches和Settings - Repository - Protected Branches。然后要在仓库里写CI流水线。以GitHub Actions为例我用的核心配置逻辑是这样的name: code-review-gate on: pull_request: types: [opened, synchronize, reopened] jobs: static-check: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: 安装依赖 run: npm ci - name: 代码格式化检查 run: npx prettier --check . - name: Lint检查 run: npx eslint . --max-warnings0 - name: 单测与覆盖率 run: npm test -- --coverage - name: 覆盖率阈值校验 run: python .code-review/scripts/check-coverage.py --threshold 80配置的逻辑是让一组静态检查脚本跑在每一次MR更新时检查不通过就阻断合并。这一步的意义在于把机器能解决的问题全部提前拦截掉让人工reviewer把注意力集中在真正需要人脑判断的问题上。覆盖率校验脚本check-coverage.py的逻辑也很简单读取测试报告中的覆盖率数字低于阈值就直接以非零状态退出让CI失败import json import argparse def load_coverage(report_path): # 根据测试框架的report格式解析覆盖率 with open(report_path, r, encodingutf-8) as f: report json.load(f) return report.get(totals, {}).get(percent_covered, 0) def main(): parser argparse.ArgumentParser() parser.add_argument(--threshold, typefloat, default80) args parser.parse_args() coverage load_coverage(coverage/coverage-summary.json) print(f当前覆盖率: {coverage}%, 阈值: {args.threshold}%) if coverage args.threshold: raise SystemExit(1) if __name__ __main__: main()3.3 第三步用“小步提交”控制评审单元自动化接完之后要从流程上做一个最关键的调整限制单个MR的规模。这是我踩了很多坑之后得出的结论。一个MR的diff行数控制在400行以内超过就要拆分。这个数字不是什么科学定论而是基于实操经验得出的一个平衡点。超过这个规模reviewer的注意力会明显下降评审质量随之断崖式下跌。你可以这样跟团队解释一个MR就是一个“评审单元”单元太大评审就是一个摆设单元小评审才能成为真正的保障。拆分的办法也简单按功能切片一个功能一个MR。比如“用户登录”不应该是单个MR而是拆成“后端接口实现”“数据库表结构变更”“前端登录页面”“联调与测试”四个MR每个MR解决一个独立的小问题。这样的好处是每个MR的context都很小reviewer不需要重新加载整个业务背景直接看当前这个变更就够。这一步推行起来阻力最大因为不少开发者习惯把一堆改动攒在一起提交。我的解决方法是把它变成硬性要求CI里写一个小脚本检测PR的diff行数超过500行就在检查里报warning或直接fail。代码里加一个判断逻辑就行- name: 检查PR行数 run: | BASE$(git merge-base origin/main HEAD) DIFF_LINES$(git diff --numstat $BASE...HEAD | awk {sum $1} END {print sum}) echo 本次变更行数: ${DIFF_LINES} if [ ${DIFF_LINES} -gt 500 ]; then echo MR规模过大请拆分成小提交后再发起评审 exit 1 fi3.4 第四步跑通一个完整周期并复盘配置全部完成之后不要急着大规模推给全团队先拉着两三个核心开发跑一个完整周期从提MR、等CI、人工评审到合并全程走一遍。这个过程一定会暴露不少问题比如检查项太严格导致频繁误拦、模板字段和实际场景对不上、门禁规则挡了正常的热修流程等等。我建议用一周的时间做试点然后开一次复盘会只讨论三个问题哪些检查项真正拦住了问题哪些检查项是在浪费时间哪些应该自动化的环节现在还在靠人工根据讨论结果调整配置再放开给全团队。这个节奏很重要很多人推行这种流程时最大的失误就是一步到位结果团队被一堆规则搞得怨声载道第二天就有人私聊你“能不能把我这个合并跳过检查”。实际情况是规则要一步步加等团队习惯了再收紧远比一开始就上满所有规则要顺利得多。4. 常见问题与排查技巧实录4.1 规则太严导致团队抵触这是推行过程中遇到最频繁的问题。CI检查设了硬性门槛但老项目的历史包袱没清理干净一跑检查满屏都是error开发者当场就炸了。我的处理思路是分级渐进。给检查项分一个优先级P0级别的规则例如密钥泄露、明显的安全漏洞、会直接挂掉的语法错误立即阻塞合并P1级别的规则例如中等程度的代码规范问题、覆盖率略低先作为warning提醒设置一个Grace Period比如两周内逐步清零P2级别的规则例如风格偏好、非强制建议只做记录不参与门禁。实际配置的时候GitHub Action把max-warnings设成一个合理的渐进目标例如先允许200个warning每周降低50个六周内清零。这样团队不会觉得在被一座大山压着而是有一个清晰的改进路径。4.2 自动检查误报满天飞误报是自动化评审逃不开的问题。静态检查工具特别容易在一些合理的写法上瞎报警例如某些框架约定的方法名、边界情况的空值判断、性能敏感的循环里调用复杂表达式都会触发工具的报警。遇到这类问题千万别为了AI中介的检测规则强行改写正常代码。正确做法是把误报塞进白名单附带注释说明为什么这是误报并给出一条示例代码作为参考。例如ESLint里可以这样处理{ rules: { complexity: [error, { max: 10 }], no-console: [off] }, overrides: [ { files: [test/**/*.js], rules: { no-console: off, typescript-eslint/no-explicit-any: off } } ] }这里的关键技巧是白名单必须精确到文件和规则不能直接关掉整条规则。我见过有团队为了省事直接no-console: off一把梭结果生产代码里到处是console.log。白名单的原则是“最小豁免”能用单文件豁免就不开全局豁免能用单行注释豁免就不开文件豁免。4.3 评审流于形式评论少、合并快自动化门禁都跑通了但人工review环节还是经常出现“已读不回”。这个问题的本质是reviewer没有足够的context也不想花时间搭context。光靠自觉没用得从机制上让reviewer的参与变得有价值。我的做法是引入“指定reviewer 轮值制度”外加一个“评审记录表”。每个MR明确指定一到两个有相关经验的reviewer不是随机分配的而是根据代码变更的领域匹配最熟悉这块的人。同时轮值制度保证每个成员都定期体验“当reviewer被点名”的感觉避免永远是那两三个人在看代码。评审记录表则是把review意见沉淀下来的工具每次人工评审完之后reviewer在MR描述里贴一个简短的点评包含三个内容主要风险点、建议优化方向、是否同意合并。这样做的好处是即使某次评审没发现问题也留下了一个可追溯的“确实看过且认真看过”的证据。4.4 新人上手成本高还有一个普遍问题新人加入团队之后面对一堆评审规则和检查项根本不知道从哪下手提个MR被CI自动检查打回来好几次挫败感极强。这里有个很实用的落地技巧把手动检查清单checklist直接和git的prepare-commit-msg钩子、或仓库里的文档结合起来让新人在发起MR之前就自动走一遍自查流程。更直接的做法是写一个简单的自查脚本pre-push-check.sh在commit或push时自动运行一遍基础的本地检查提前把一些低级问题拦截在提交之前#!/bin/bash # 提交前快速检查减少CI阶段被拦截的概率 echo 运行提交前检查... npx eslint src/ --max-warnings0 if [ $? -ne 0 ]; then echo ESLint检查未通过请先修复代码格式和规范问题 exit 1 fi npx tsc --noEmit if [ $? -ne 0 ]; then echo TypeScript类型检查未通过 exit 1 fi echo 本地检查通过可以安心提交配合一份简明扼要的《新人评审流程速查表》新人基本上一天之内就能顺畅地走完整个流程。这个成本投入很值得因为新人一旦在评审流程上获得的是正向体验而不是挫败他们就会对代码质量这件事建立正确的认知。5. 一些配置细节与调优建议整个open-code-review方案跑起来之后会有一批配置细节值得持续打磨这些细节才是真正影响体验和效果的地方。第一个细节是覆盖率阈值的设定。不要天真地设置一个全局统一阈值例如一律90%。不同模块的覆盖率标准应该不一样核心交易模块可以要求85%以上工具类函数可以看情况放宽到60%。我用的方案是在config.yml里设置按目录区分的覆盖率规则脚本读取配置后按目录分别校验。第二个细节是评审计时。要让reviewer有充分时间做评审但也不能无限期地拖下去。GitHub和GitLab都支持设置“自动提醒reviewer”的时间我通常设置为24小时未评审自动在群里提醒一次48小时未评审自动升级通知。这个机制看似冷酷但能有效防止MR堆成积压山。第三个细节是评审意见的统计分析。定期统计每个开发者的MR被驳回率、平均评审响应时间、每个模块的缺陷密度用数据驱动流程持续优化。这些数据在GitHub API和GitLab API里都能拿到写个脚本定时拉取生成周报很能说明问题。我在跑这个流程时还会刻意跟踪“评审意见被采纳率”这个指标。有些团队reviewer提了一堆意见但提交方一个都不改这种评审就是纯浪费时间。采纳率低于60%就需要警惕了要么是reviewer提的问题不切实际要么是提交方在敷衍了事两种情况都需要介入沟通。如果要给一个最实用的调优建议那就是先稳定运行一个季度再根据数据做调整。不要被某一次评审中的个别极端案例带偏了节奏。所有的规则都应该有试用期试用期结束之后根据反馈决定转正还是废除这样规则本身才能保持活力和公信力。我个人在整个实践里体会最深的一点是代码评审这项工程工具只是靠山的一根拐杖真正难改变的是人的协作习惯。但反过来看只要把流程、规则和自动化三件事做到位人的习惯改变的阻力就会变得很小。这也正是open-code-review这类项目最有价值的地方它不要求你瞬间变成完美的团队而只是帮你把评审这件事从“靠运气”变成“靠体系”。

相关新闻

Windows 10 本地部署 OpenClaw 接入飞书,零基础搭建私人 AI 助理

Windows 10 本地部署 OpenClaw 接入飞书,零基础搭建私人 AI 助理

很多人把“私人 AI 助理”想得太复杂,觉得要么得买台 NAS,要么得租服务器,要么得精通代码。其实只要一台普通的 Windows 10 电脑,装一个开源的 AI 助理框架 OpenClaw,再把它接到你每天都会打开的飞书上,就能…

2026/10/19 14:03:13 阅读更多 →
三步走通Sora-2视频生成API集成:异步回调与成本控制实战

三步走通Sora-2视频生成API集成:异步回调与成本控制实战

做内容平台和自动化工具的同行,最近应该都被文本生成视频模型 Sora-2 的消息刷了屏。它把动态内容生产的门槛从“拍一条片子”压到了“写一段 prompt”,但当我们真正拿到接口权限之后,问题就从“能不能生成”变成了“怎么集成、怎么控成本”。…

2026/10/19 14:03:13 阅读更多 →
open-code-review:AI大模型辅助代码审查的CLI工具实战

open-code-review:AI大模型辅助代码审查的CLI工具实战

1. 为什么我会写 open-code-review 这个工具做代码审查(code review)这件事,开发团队里永远是“人人都知道重要,但推进起来各种难受”。我看过很多团队的状态:新人不敢说话,老人没空细看,代码合…

2026/10/19 14:03:13 阅读更多 →

最新新闻

基于iRTU和Air8000A的RS485环境监测系统:从协议栈开发到配置化上云

基于iRTU和Air8000A的RS485环境监测系统:从协议栈开发到配置化上云

做物联网数据采集最头疼的不是传感器选型,而是如何把数据稳定、可靠地传到云端。前段时间我把一套环境监测系统从“单片机裸跑串口转发”的旧路子,迁移到基于iRTU固件AirUI界面Air8000A硬件485传感器这套组合上,总算体会到什么叫“配置比写代…

2026/10/19 19:15:14 阅读更多 →
ACPI电源按钮S3唤醒到S0完整流程图解与排查指南

ACPI电源按钮S3唤醒到S0完整流程图解与排查指南

做底层固件和驱动调试的人,总有一天会被ACPI的睡眠唤醒折磨:笔记本明明进了S3,按下电源按钮却毫无反应,或者屏幕亮了但系统卡在半路,又或者唤醒后USB设备全部掉线。这些问题表面上都是“电源按钮”和“S3/S0切换”的锅…

2026/10/19 19:15:14 阅读更多 →
CNN猫狗分类实战:TensorFlow+Keras从数据到模型调参全解析

CNN猫狗分类实战:TensorFlow+Keras从数据到模型调参全解析

猫狗分类这个项目,我从 TensorFlow 和 Keras 入手做过不止一遍,每次带新人入门,也都拿它当第一块练手砖。它看着简单——不就是区分一张图里是猫还是狗吗,但真把数据预处理、卷积特征提取、训练调参这些环节走一遍,你对…

2026/10/19 19:15:14 阅读更多 →
从零搭建代码评审工具链:open-code-review 实践与踩坑

从零搭建代码评审工具链:open-code-review 实践与踩坑

1. 从零搭建一套代码评审工具链,我为什么盯上了 open-code-review第一次听到 open-code-review 这个词,是在一个做后端的朋友群里。有人吐槽说团队里代码评审全靠人肉盯,PR 一多就漏,评审意见散落在各种聊天记录里,过两…

2026/10/19 19:14:12 阅读更多 →
从零搭建 open-code-review 流程:自动化检查与评审人分配实战

从零搭建 open-code-review 流程:自动化检查与评审人分配实战

1. 为什么我要自己搭一套 open-code-review 流程第一次听到“open-code-review”这个词,很多人会以为它只是某个开源项目的名字。实际上,它更像是一类工程实践的统称:把代码评审这件事从“闭门会议”变成“开放、可追溯、可自动化”的流程。我…

2026/10/19 19:14:12 阅读更多 →
pandas数据合并全解析:merge、join、concat一文搞懂

pandas数据合并全解析:merge、join、concat一文搞懂

搞数据分析的兄弟,pandas 用久了,merge、join、concat 这三兄弟的分工你搞明白了吗?坦白说,我见过不少入门一两年的朋友,仍然在这三个方法之间来回试。逻辑上用对了,数据量小的时候无感,顶多多跑…

2026/10/19 19:13:10 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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 阅读更多 →