Code Review最佳实践:从流程设计到自动化工具与工程落地
1. 为什么“开放”这件事恰恰是Code Review的灵魂我在接手团队技术管理之后有一件事让我特别矛盾——我从入职第一天就强调Code Review周会也讲、考核也挂钩但代码质量并没有明显改善。后来我把所有人提的Review意见导出来看了一遍发现问题根本不在“有没有做CR”而在于大家的Review都是关起门来凭感觉今天这个人心情好就多写两句明天另一个人赶版本就点个“通过”完事。没有统一标准、没有节奏、没有沉淀Review变成仪式问题代码照样合入主干。那阵子我正好在整理团队内部的开源项目顺手把Code Review这一套流程也开源了出去名字就叫open-code-review。这个项目本身不复杂但它把“代码审查”从个人经验变成了团队可复用的资产。今天想围绕这个东西把我踩过的坑、总结出来的方法、以及最终沉淀出的实操流程一次性聊透。先解释一下为什么标题里要强调“open”。很多团队把Code Review当成开发流程里的一个“关卡”只有合代码的时候才打开一下。而open-code-review的思路正好反过来审查规则是公开的、模板是公开的、常见问题库是公开的、工具链配置也是公开的。任何新的成员加入不需要反复口传心授直接看这套东西就知道“我们团队怎么Review代码”。这才是“开放”二字的真正价值——它不是把代码公开而是把审查这件事本身做成透明的、可复制的标准动作。这个方案适合谁如果你是技术团队的负责人或者开源项目的维护者又或者你只是一个人写项目但想提前建立起良好的代码审查习惯那么这篇文章里的流程和模板都可以直接拿来用。后面我讲的每一条都是我在实际工程里试过、踩过坑、最后确认有效才写下来的。2. 一次完整的Code Review流程应该怎么设计很多团队说“我们做Review”实际上就是PR挂上去之后等人留言有时挂三四天没人理有时五六个Reviewer每人丢一句“LGTM”就合了。这种流程我称之为“被动式Review”效率低而且审查质量完全取决于当天谁有空、谁心情好。要让Code Review真正有效流程必须在提交代码之前就已经设计好。2.1 变更规模控制别让Reviewer硬啃一千行我发现几乎所有撑不过三个月的Review制度死因都是PR太大。五百行的小重构可能还有人愿意看一千行以上的功能分支Reviewer翻开Diff看到十几个文件绝大多数人第一反应就是“这怎么审”然后草草看两眼就点了通过。这不是态度问题是认知负荷超载人脑一次能处理的上下文就是有限。open-code-review里把这条定成了硬性规范单个PR建议不超过400行变更逻辑上无法拆分的重构除外。超过这个量级的改动必须提前在PR描述里写清楚“为什么这次变更无法拆小”并且拆出对应的审阅计划。实操下来我见过最极端的一次是一个同事为了赶需求提交了1800行的PR我在下面没有直接给代码意见而是让他先拆成主题提交第一笔交接数据模型变更第二笔核心逻辑第三笔测试第四笔文档和配置。拆完以后每个PR大概三百行上下四个人轮流审两天就全部合完了合入质量反而比猛啃一个大PR要高很多。这里有个跟直觉相反的经验拆PR不是把一次变更的时间拉长了反而是压缩了总时间。因为大PR的Review等待时间和返工成本是指数增长的拆小了以后并行度上来了人的注意力也能保持在线。2.2 检查清单要具体到能打勾没有清单的Code Review本质上就是在靠Reviewer临时发挥。每个人的知识结构不同、关注点不同写Java的人可能对SQL注入无感写前端的人对一个死锁问题可能完全无感。这种靠个人能力摊大饼式的Review结果必然是不稳定的。open-code-review里维护了一份团队通用检查清单我把它按维度拆成以下六类功能正确性这段代码真的解决了PR描述里的问题吗有没有遗漏分支核心逻辑有没有覆盖三种以上边界情况错误处理失败路径有没有被妥善处理外部依赖超时、断连、空值、非法参数每种情况是否有明确回应性能与并发这个循环能不能不写进事务里加锁的范围是不是太大了这个缓存有没有考虑失效策略安全隐患有没有未经验证的输入拼接进SQL或Shell敏感日志有没有打印token和密钥文件上传有没有限制类型和大小可测试性这段逻辑有没有直接new了一个依赖导致单测无法Mock是不是所有公共方法都有对应的测试覆盖可维护性三个月后的新同事能不能不看设计文档就理解这段代码变量命名是否表意函数是不是只做了一件事这个清单不是拿来逐条回复的而是给Reviewer一个内部checklist让他审查的时候不要只盯着“这段逻辑对不对”就完事了。我见过太多Review意见只停留在“这里少了个分号”“这个变量名不好”的层面不是说这些不能提而是如果整个Review只提了这些说明审得不够深没有进入逻辑层面和架构层面。2.3 自动化工具先跑第一层静态检查与CI人脑的资源是稀缺品所以不应该用来处理机器就能发现的问题。open-code-review里我一开始就把自动化检查放在整个人工Review之前——所有PR在创建的同时CI会跑完编译、单元测试、Lint、静态扫描有任何一项红掉Reviewer不需要开始人工审查。一句话所有人类Reviewer的时间只花在机器判断不了的事情上。这个原则听起来理所当然但实际团队执行起来特别容易走样。最常见的场景是CI跑了二十分钟挂了开发在群里喊“帮忙先看一眼就是测试挂了代码逻辑没问题”。一开始可能还好但破窗效应一旦出现以后大家就默认“红着也可以审”。我后来在open-code-review里加了一条规则任何状态下CI失败超过两小时且未处理的PR自动从Review队列移出优先级降到最低。宁可晚合一会儿也不要让团队养成“带病审查”的习惯。3. 工具选型与实现细节从轻量到重量级Code Review的工具链非常成熟不用自己造轮子但很多人不知道怎么选。open-code-review里我整理了三档方案分别对应不同规模的团队你可以按需取用。3.1 GitHub / GitLab 自带审查功能怎么用到位如果你的团队代码托管在GitHub或者GitLab上那最基本的能力已经具备了——PR/MR的Diff查看、行内评论、审查通过/请求修改的状态、多人Approval规则这些原生功能完全够用。很多人没有用到位的是分支保护规则Branch Protection和审批人数策略。我建议至少这样配置主干分支禁止直接推送所有变更必须通过PR/MR合入至少一个非作者本人的Approval才能合入过期的Approval在代码更新后自动失效防止“先approve后改代码”的老油条行为。第3条是最容易被忽略但最重要的。我印象很深的一次事故是一个同事在凌晨三点提交了一个PR自动测试都过了他给自己点了Approval作者本人居然有权限approve然后直接合入把生产环境搞挂了。原因就是分支保护规则没配好Allow specified actors to bypass pull request requirements这个选项被错误打开了。GitHub上所有保护规则建议全部保持默认的严格模式哪怕是团队Owner也要走审批流程。3.2 Reviewdog与代码注释机器人第二档方案是引入自动化审查机器人这里我强烈推荐Reviewdog。它的核心能力是把Lint工具和静态检查工具的输出直接以行内评论的形式贴到PR对应代码行上Reviewer打开PR就能看到“这一行有问题”“那一行有潜在bug”不用自己对照日志去猜。open-code-review里给一套Java/Spring技术栈配过一组组合命令实测下来效果很好。核心配置大致长这样name: reviewdog on: pull_request: types: [opened, synchronize] jobs: eslint: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - uses: reviewdog/action-eslintv1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-review level: warning这里最关键的是reporter: github-pr-review它表示审查结果以PR review评论的形式出现而不是简单的commit status提示。还有level: warning意思是错误级别以下的提示不会以error形式阻塞PR给开发留出处理空间。真正需要阻断合入的问题建议升到error级别。还有一类工具叫“自动分配Reviewer”比如GitHub的CODEOWNERS文件。这个文件可以指定每个目录、每个模块的负责人当PR涉及对应路径时系统会自动把Reviewer指派给负责人。这比每次在群里喊“谁有空看下这个PR”要靠谱得多责任到人。3.3 SonarQube等平台与质量门禁如果团队规模到了二三十人以上或者你们对代码质量有合规性要求那么可以考虑引入SonarQube这一类的代码质量平台。它跟Reviewdog的思路不太一样Reviewdog有点像一个严厉的注释机器人而SonarQube更像是把代码扫描结果做成了一套看板系统它的Quality Gate可以设定“新增代码不可引入任何Blocker级别问题”“测试覆盖率不得低于80%”这类硬性门槛。在open-code-review里我把SonarQube定位成“守住底线”的工具它不太适合用来做精细的人工审查替代品——因为它的误报率在高版本上虽然降了很多但依然存在如果让机器人一报错就锁死合入开发一定会想方设法绕过它。我见过有人为了过覆盖率门禁写了一堆只执行不断言的空测试那比不写测试还恶心。所以我的建议是把SonarQube这类平台设置为“报告级”而不是“阻塞级”。也就是扫描结果不看质量分看固定几个安全高危项和重复率超过阈值的告警只有这些才挂到PR状态上。剩余的中低级问题进入月度技术债务清单慢慢还。工具/能力定位适用规模建议策略GitHub/GitLab原生审查人工Review的基础设施任何规模强制启用分支保护与审批人数Reviewdog自动行内评论机器人5~50人接入CI结果进PR评论区SonarQube代码质量看板与扫描平台20人以上或合规要求质量门禁只卡高危项其余进债务池4. 实操过程与核心环节实现看完选型以后接下来就是真刀真枪跑起来。这一章我拿一个真实的PR场景来走一遍完整流程从提交到合入看看每个环节具体怎么做。4.1 用GitHub Actions搭一个自动审查流水线先来一个可以直接抄作业的GitHub Actions配置。这个workflow会在每次新PR提交时同时跑三件事单元测试、Lint、Reviewdog扫描。整个流程控制在五分钟以内。name: auto-review on: pull_request: types: [opened, synchronize] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - uses: actions/setup-nodev3 with: node-version: 18 - run: npm ci - run: npm test lint: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - uses: actions/setup-nodev3 with: node-version: 18 - run: npm ci - run: npm run lint reviewdog: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - uses: reviewdog/action-eslintv1 with: github_token: ${{ secrets.GITHUB_TOKEN }} reporter: github-pr-review level: warning三个job是并行执行的理论上总耗时基本等于最慢的那个job。on.pull_request.types这里选了opened和synchronize意思是新PR创建和代码更新时各触发一次。这里有一个细节synchronize事件在force push后也会触发如果是那种一直在force push修改的PR可能会连续跑很多次CI建议团队约定不要用force push往已有PR上铺代码。4.2 人工Reviewer的检查顺序机器检查全部通过之后才轮到人工上阵。但人工Review也不是一上来就逐行读代码。我给自己定了一个固定顺序分享出来第一步先看PR描述和任务关联。要是PR描述里只说“fix bugs”三个字我根本不会点开代码先让作者把“改了什么、为什么改、怎么验证”写清楚。open-code-review的PR模板里固定有“变更背景”“实现方案”“验证步骤”“风险点”四个段落。没有这四个段落的PRReviewer可以直接打回这是有依据的。第二步看测试代码。对不是先看实现代码而是先看测试。因为测试代码能够最真实地反映作者对自己代码的理解程度。如果测试只覆盖了Happy Path说明边界情况没想清楚如果测试覆盖了大量异常场景和边界值那实现代码大概率是有经过深思的。第三步才是看实现代码按主流程走一遍对照测试验证作者是不是真的在测他写的东西。最后一步回到PR整体看这个变更是否影响了其他模块有没有同步更新文档、配置、数据库脚本。这一步最容易漏因为这已经超出“代码”的范畴了但对上线成功率影响最大。4.3 异步评审与同步评审的取舍Review的形式有两种一种是异步的——也就是PR上留言大家有空了来看另一种是同步的——会议室里拉一群人投屏过代码。open-code-review里我强烈推荐异步评审为主同步评审只用于特定场景。为什么因为同步评审的效率实在太低了。四个人围在一起花一小时过一屏代码真正有效讨论的时间可能不到十五分钟其他人都在扮演人形占位符。而且同步评审有个心理问题当技术负责人或者资深工程师在场时其他人很容易陷入“大佬都点头了那我也没意见”的从众状态整个评审演变成一种表演。异步Review才是常态化的主力。每个人在自己精力最好的时段打开PR深思熟虑后给出意见作者看到后逐条回复。这个过程本身带有一股异步协作的纪录片质感——每个评论都是被认真思考过的每条回复都清晰可见。而同步评审我只在三种情况下使用架构级的大方向决策跨团队接口联调前的对齐线上事故后的复盘代码走查。其他时候别开会直接在PR上聊。5. 常见问题与排查技巧实录代码审查制度推行过程中一定会遇到各种阻力。很多团队不是没有工具也不是没有流程而是制度在执行层面变形了。这一节我把这些年遇到的高频问题集中整理一下对应的解法都是经过验证的。5.1 审查意见太多导致互相敷衍这个问题几乎每个推行过严格CR的团队都会遇到。Reviewer非常认真每条都提作者一看四五十条评论当场头皮发麻回着回着就累了最后变成“OK, done”再往后Reviwer也懒得提了因为提了也没人认真改。我的解决方案是给意见分级。在open-code-review的文档里我规定所有Review意见必须带前缀分为P0、P1、P2三档P0会导致功能错误、安全隐患、数据丢失的问题必须修复后才能合入P1不会导致功能性错误但会影响可维护性、可测试性、性能的问题建议合入前修复P2风格、命名、重构建议等优化项可以记录为后续优化不阻塞合入。这个分级看起来很简单但它解决了两个很重要的心理问题。第一作者不再因为一堆P2评论感到被冒犯他知道真正的关键项是那两三个P0。第二Reviewer在提意见的时候自己也会思考“这个真值得花作者五分钟去改吗”提的意见质量立马上来了。5.2 Reviewer不响应怎么办有规则但没人执行同样等于没有。团队里最让人抓狂的不是代码质量差而是PR挂了一个礼拜没人Review。我见过有团队为这个搞了复杂的积分制度实际上最简单的办法就是轮值超时升级。具体的做法是每两周排一个Review值班表每天安排一个人负责当天所有的Review兜底。如果某个PR超过12小时没有拿到任何Review意见值班者有义务第一时间审完或者协调其他人来审。如果值班者也忙不过来那就按紧急程度升级到技术负责人。我在open-code-review里配合了这个规则还在CI脚本里加了一个定时检测的workflow每小时扫一次所有打开超过24小时的PR自动在群里发一条提醒这条PR已经晾了多久、作者等得多焦虑。不要低估这种自动提醒的价值它把“没人在意”变成了“系统在盯”人性就是这样一个公开的催促远比私聊有效。5.3 重构PR爆炸式增长怎么拆先给结论如果一段旧代码需要彻底推翻重建不要尝试在PR里做混合式重构。我自己的经验是拆分重构PR要按“行为保持不变”和“行为发生变化”两个方向切。第一步先做一个纯结构迁移的PR只调整模块位置、类名、函数签名不改变任何外部行为用现有的测试来保障正确性。这类PR基本是编译器帮你兜底的Reviewer审起来轻松风险低。第二步再做行为变更的PR把新的需求或修复逻辑加进去。到了这一步因为结构已经整洁了改起来清楚了很多Review也能聚焦在真正的业务逻辑上。最怕的就是有人图省事把结构迁移和行为变更塞在一个PR里Reviewer看到一千行Diff有一半是纯移动代码另一半是新逻辑两件事搅在一起审完头都是大的。如果你发现PR里出现大量的“move code”和“change logic”交错分布那基本可以判定这个PR需要拆分了。6. 关于节奏、心态与一点额外的建议前面讲的都是方法和工具最后我想聊聊更偏软性、但同样重要的东西。关于Review节奏我的体会是一次Review最好控制在三十分钟以内。超过三十分钟人的注意力会急剧下降再看下去要么漏掉问题要么开始无意义地抠字眼。所以如果PR大到看不完先不要硬看完回到PR描述里要求开发者拆分这比硬着头皮看完更负责任。关于Review心态我想给新手Reviewer一个建议不要把自己当成裁判要把自己当成“第一个使用者”和“未来的维护者”。你提出的每一条意见本质上是在替三个月后会读到这段代码的同事发声。所以与其说“你这里写得不对”不如试试“这个逻辑我理解起来有点费力能不能换个表达方式让下一个维护者更好上手”。同样一个意思换种说法抵触感会小很多。关于被review的人我也有一句话想说不要把Review意见当成对你的指责。我见过太多开发者在评论区跟Reviewer来回拉扯十几个回合最后就为了证明自己的写法没错。实际上的很多时候Reviewer的“疑问”并不代表你的代码是错的它只说明这段代码的表达没有达到“自解释”的程度。这恰恰是成长的机会。最后再分享一个小技巧。我在open-code-review里给每个Reviewer加了一条隐性标准假设这个项目明天就交给一个完全不了解历史背景的新人他能否仅仅通过PR描述、代码注释和测试用例就理解这次变更的来龙去脉如果能这个PR的质量就是合格的。这是我的个人经验你可以拿去试试。如果这篇文章对你有帮助或者你也在做类似的代码审查流程建设欢迎交流。工具和流程会过时但“让每一次代码变更都被认真对待”这件事在任何团队里都是值得投入的。

相关新闻

开放式代码评审实践:从Git分支到CI质量门禁的完整工具链

开放式代码评审实践:从Git分支到CI质量门禁的完整工具链

前一阵我给团队搭了一套开放式代码评审流程,前前后后花了两三周配置,又跑了将近两个月才逐步稳定下来。今天把整套实践整理出来,名字就叫 open-code-review 吧。核心理念很简单:把代码评审从“一个人的门槛”变成“一群人的协作”…

2026/10/19 5:10:12 阅读更多 →
内核驱动开发核心要点:字符设备、设备树与中断并发管理

内核驱动开发核心要点:字符设备、设备树与中断并发管理

做Linux内核驱动开发这件事,很多从应用层转过来的开发者第一个月基本都在跟“为什么我的模块一加载就死机”较劲。说实话,内核开发和普通应用开发是完全不同的两种思维方式:应用层写崩了顶多报个段错误,在内核里写崩了直接整机宕机…

2026/10/19 5:10:12 阅读更多 →
字节开源Agent手册:可pip安装的可运行源码工程

字节开源Agent手册:可pip安装的可运行源码工程

简介:本资源是字节跳动开源的《Agent实践手册》配套可运行源码包,面向企业AI工程团队、算法工程师与智能体开发初学者,解决AI智能体从理论到落地的关键断层问题——如何在飞书会议、抖音电商、教育备课等真实业务场景中快速构建、部署与优化A…

2026/10/19 5:09:12 阅读更多 →

最新新闻

STM32通过IIC驱动MPU6050六轴传感器:从时序到姿态解算实战指南

STM32通过IIC驱动MPU6050六轴传感器:从时序到姿态解算实战指南

做嵌入式这几年,被问到最多的传感器大概就是 MPU6050。这颗六轴芯片配合 STM32 的 IIC 接口,几乎是所有姿态相关项目的标准开局:两轮自平衡、云台增稳、手势遥控、跌倒检测……不管你是刚入门的新手,还是在做毕业设计的同学&#…

2026/10/19 5:55:34 阅读更多 →
Oracle数据泵单实例迁移全流程详解:从expdp到impdp

Oracle数据泵单实例迁移全流程详解:从expdp到impdp

搞Oracle数据库搬迁,绕不开的一个词就是数据泵(Data Pump)。单实例环境来回同步数据,expdp导出、impdp导入这套组合我这些年用了不下几十次,说它是最皮实的逻辑迁移方案不为过。别看这个标题“单实例环境使用数据泵&am…

2026/10/19 5:55:34 阅读更多 →
物联网设备WiFi配网实战:ESP32/ESP8266 SoftAP与SmartConfig详解

物联网设备WiFi配网实战:ESP32/ESP8266 SoftAP与SmartConfig详解

上个月帮朋友调一块 ESP32 开发板,设备本身跑得好好的,最后却卡在“怎么让设备连上他家的 WiFi”这一步。我说你直接把 SSID 和密码写在代码里不就行了?他说你自己调试当然没问题,可这个设备是要交给一个完全不会用串口、不会看代…

2026/10/19 5:55:34 阅读更多 →
artcraft:基于WebGL的轻量级创意合成工具实战

artcraft:基于WebGL的轻量级创意合成工具实战

1. 项目缘起与整体设计思路1.1 为什么会有 artcraft 这个想法做创意工具这些年,我最大的感受就是:灵感来得快,工具跟不上。脑子里冒出一个画面,想快速拼贴、调色、加纹理,结果打开专业软件要等半分钟加载,图…

2026/10/19 5:55:34 阅读更多 →
VS2017 64位下OSGQT整合实战:从编译到渲染的避坑指南

VS2017 64位下OSGQT整合实战:从编译到渲染的避坑指南

简介:这是一份面向Qt与OpenSceneGraph(OSG)三维渲染开发者的整合示例工程,基于Github上口碑较好的OSGtree项目整理而来,已在VS2017搭配64位OSG环境下完成调试,可直接运行,适合正在学习OSG与Qt混…

2026/10/19 5:55:34 阅读更多 →
CSerialPort串口类2017修正版:稳定嵌入工业控制的Win32封装

CSerialPort串口类2017修正版:稳定嵌入工业控制的Win32封装

简介:这是一份面向C开发者,特别是Windows平台串口通信初学者与中级工程师的轻量级串口类封装资源。CSerialPort类经2017年最新修正,显著降低MFC依赖性,新增_AFX宏适配MFC环境,并提供纯Win32验证程序,使非MF…

2026/10/19 5:54:34 阅读更多 →

日新闻

频率跟踪型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/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

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

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

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

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

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在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/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 阅读更多 →