从形式主义到基础设施:开放式Code Review机制设计与落地

1. 先聊聊为什么很多团队的Code Review形同虚设

我参与过大大小小不下十个项目的评审流程改造,见过最典型的一个场景是:团队嘴上喊着"我们要做Code Review",GitHub仓库的PR也确实挂了一堆,但点进去一看,评论全是"LGTM"(Looks Good To Me)或者一个👍表情,代码照样带着明显的问题合并进了主干。等到线上出了故障,回滚、加补丁、复盘,一套流程走下来,所有人精疲力尽,最后结论往往是"下次评审要更认真一点"——然后下个迭代又重复一遍。

这不是某个团队的个例,而是一个普遍现象。问题出在哪?我后来想明白一件事:大多数团队把Code Review当成了一道"行政关卡",而不是一个"技术协作过程"。一旦它变成关卡,人的心态就会自动切换到"怎么尽快通过"模式,质量和效率自然顾不上了。

1.1 评审流于形式的三类典型表现

第一类是"点赞式评审"。评审人打开PR,扫一眼标题和描述,看到CI是绿的,随手点个通过。这种情况在新人多的团队特别常见——不是大家不想认真看,而是根本不知道要看什么,没有一张明确的检查清单,只能凭感觉扫一眼。

第二类是"马拉松式评审"。一个PR挂了两周没人理,提PR的人每天在群里催,最后在周五晚上十点,一个刚加完班的同事用半小时刷刷刷看完全部改动,甩出几条不痛不痒的评论然后通过。这种评审不仅没有质量,还在持续消耗团队的信任感——每个人心里都清楚这流程是走过场。

第三类是"站队式评审"。资深工程师觉得新手写的代码"太蠢",评论写得像法庭陈词;新手心里不服又不敢反驳,改了两次之后干脆什么都不说,反正你说怎么改我就怎么改。这种评审最终会消灭所有人的主动性,代码质量和团队氛围双双滑坡。

1.2 问题不在人,在机制

我见过太多团队把评审流于形式的锅甩给"大家态度不端正"或者"工程师太忙了",但实际拆解下来,问题几乎都出在机制设计上。没有明确的评审标准,没有合理的PR粒度约定,没有时限约束,没有争议升级机制,评审人全凭自觉发挥——结果当然取决于每个人的当天心情和空闲程度。

真正有效的Code Review,需要被当成一套有明确输入输出、有流程节点、有质量反馈闭环的协作系统来搭建。这就是我在这篇文章里想聊的核心:怎么围绕"开放代码评审"这个思路,从机制、流程、工具和团队文化四个层面,把评审从形式主义变成真正能拦截缺陷、传递经验、提升代码质量的基础设施。

下文所有内容都基于我过去几年的实际落地经验,你可以直接照着搭,也可以根据团队规模做裁剪——但核心的机制设计逻辑,建议不要省。

2. 开放式评审机制怎么设计:四个躲不开的核心要素

很多团队搭建Code Review流程时,第一件事是去选工具,第二件事是写一份团队规范文档。这个顺序其实是错的。工具和规范之前,必须先想清楚机制——也就是每个人的角色、每个环节的规则、每个产物的标准是什么。工具只是这些规则的载体。

2.1 把评审从"审批"变成"协作"

我在好几个团队里做的第一个机制调整,是把"评审必须由指定负责人审批通过"这个规则改成"任何人可以评论,作者必须逐条响应"。这两句话看起来差不多,实际效果差别巨大。

"审批制"意味着评审人是裁判,作者是考生,双方天然站在对立面。而开放式评审的规则是:评审人提供意见,作者决定是否采纳——但前提是每一条意见都必须有一个明确的处置结果:采纳、不采纳但说明理由、还是调整方案后再讨论。这样一来,评审就从"你审我"变成了"我们一起把这个改动打磨好"。

落地时我会在团队规范里写死几条规则:

  • 任何人对任何PR都有评论权,不限角色和职级。
  • 作者必须在24小时内对每条评论给出响应,即使是"这个建议我考虑一下,明天回复"也行。
  • 评论讨论超过三天且没有结论的,自动升级到技术负责人参与仲裁。

这几条规则看起来简单,但它保证了每一条意见都会进入闭环,不会出现"评论躺了三天,作者直接点了合并"的情况。

2.2 变更粒度控制在多少合适

评审失效的另一个重要原因是PR太大。我见过一个新人把一个功能从零写到上线,整个PR包含了40个文件、2000多行改动、前端后端数据库全都有——这种规模没有任何人有能力在合理时间内完成有效评审。评论者只能看看核心逻辑,边缘代码全靠运气。

我建议的约定是一个PR的改动量控制在200到400行之间,涉及文件不超过10个,耗时超过三天的开发任务,必须拆成多个阶段性PR,每一步合并后都保持主干可用。为什么定这个数?200行大概是30到40分钟能认真读完的量,再往上走,评审人的注意力会肉眼可见地下降;10个文件意味着改动边界清晰,跨模块的隐含影响在可控范围内。

这条规则的落地阻力很大,尤其是习惯了"开一个分支闷头开发两周"的团队。我的处理办法是先定规则,再提供拆分模板:每个功能先出一个接口定义PR,再出实现PR,再出测试补充PR,最后出联调修改PR。模板给到位,执行就顺很多。

2.3 评审时限与响应机制

评审卡在"没人看"是团队最常见的问题。我的观点是:不要把评审时限寄托在自觉上,要把它设计成刚性的SLA(服务等级协议)。

实际落地时我们团队约定的是:工作时间之内,首次响应不超过4小时,整体评审不超过24小时。首次响应不强制要求"审完",但必须有一条评论——可以是"收到,下午细看",也可以是"看完了,主要问题如下"。同时设置一个自动化的提醒机器人,超过2小时没有响应就在群里提醒一次,超过4小时直接提醒对应小组的技术负责人。

这里有个容易被忽视的细节:SLA要双向生效。不仅评审人要在时限内响应,作者也要在评审人发出评论后的24小时内回复。单向SLA会让评审人觉得"我积极响应了,结果对方晾了我两天"——这种不公平感会迅速杀死评审积极性。双向SLA才能形成良性循环。

2.4 定义清晰的完成标准

"什么叫一个PR可以合入?"这个问题,很多团队答不上来。没有清晰标准,评审就只能靠各人直觉。我整理过一份能直接抄作业的完成标准清单:

  • CI全部通过,包括单元测试、静态检查、覆盖率达标线。
  • 所有评审评论都有明确的处置结果,没有遗留的"待讨论"标签。
  • 涉及外部接口或数据结构的变更,必须同步更新相应文档。
  • 新增或修改的逻辑至少有对应的单元测试覆盖,关键分支不允许裸奔。
  • 变更描述里写清楚"改了什么、为什么改、怎么验证"三件事。

你可能注意到了,这些标准里没有"代码风格"这一项——因为风格问题应该交给格式化工具自动处理,人类评审员不应该把精力浪费在"这里该不该加个空格"这种噪音上。

3. 工具链落地:GitHub/GitLab与Gerrit的选型逻辑

机制定清楚了,下一步才是选工具。我常说一句话:工具决定不了评审质量,但工具可以放大机制的效力,也可以把机制毁掉。选型的关键不是看谁的功能多,而是看它和你们团队的协作方式是否匹配。

3.1 GitHub/GitLab的PR/MR评审流程

如果你的团队规模在50人以内、追求轻量高效的协作节奏,GitHub的Pull Request和GitLab的Merge Request是最自然的选择。这类工具的核心逻辑是**"分支 + 请求合并"**,评审记录天然和代码变更绑定在一起,每一条评论都能精确定位到具体的代码行。

我在GitHub上落地评审流程时,最常用的组合是:Branch protection规则 + CODEOWNERS文件 + 自动化机器人。Branch protection保证master分支不能直接推送,任何改动必须经过PR;CODEOWNERS把不同目录的负责人指定好,比如src/api/目录归后端组负责,前端组件目录归前端组负责,改动涉及哪个目录,对应的CODEOWNERS会自动被拉进评审;机器人则负责检查PR描述是否填写完整、是否有对应的issue编号、覆盖率是否达标等机械性检查项。

GitLab相比GitHub的一个优势是内置了Merge Request Approvals功能,可以配置一个MR必须经过几个指定角色的批准才能合并,并且可以针对不同分支设置不同的批准规则。对于需要满足审计要求的团队,这个功能比GitHub的默认分支保护更精细。

3.2 Gerrit的严格合入门禁

如果你的团队做的是基础组件、底层中间件,或者所在公司有较强的合规审计压力,Gerrit依然是一个值得认真考虑的选择。Gerrit的设计哲学和GitHub完全不同:它不采用"合并整个分支"的PR模型,而是每个commit单独评审,评审通过后才合入主干,并且高度依赖的Hook机制可以把非常多质量卡点前置到push阶段之前。

我在用Gerrit做开源基础库的评审时,最认可它的点是"补丁集"(Patch Set)机制。每个版本迭代都会生成一个新的Patch Set,评审人可以直观地对不同版本做diff对比——"这次修改到底改了什么"一目了然。这个能力在GitHub上需要通过第三方插件才能勉强实现,体验要差不少。

但必须坦率地说,Gerrit的上手门槛较高。它内置了独立的三方合流逻辑,权限模型也复杂,团队里得有一个愿意研究它的人才行。如果只是为了"评审通过才能合代码",GitLab的Approvals其实已经够用了,不必非上Gerrit。我的建议是:

维度GitHub PRGitLab MRGerrit
学习成本低低高
评审粒度变更整体变更整体单个Commit
版本对比体验一般,需插件一般原生强项
权限与审批控制中等较强最严格
适合场景中小团队、开源项目中大型团队、合规要求基础组件、审计严格、多人高频协作

3.3 机器人助手与自动化检查配置

不管选哪个平台,我都建议配置一套自动化辅助——能交给机器判断的,绝不占用评审人的时间和精力。我常用的组合是:CI跑测试和覆盖率,静态分析工具跑代码规范和安全扫描,再加上一个自定义机器人检查PR元信息。

以GitHub为例,我会用.github/workflows里的actions做三层检查。第一层是基础检查:PR标题是否符合约定格式、是否关联了issue、分支是否基于最新的master。第二层是质量检查:跑完整单测、增量代码覆盖率、ESLint或golangci-lint之类的静态检查。第三层是部署预检:如果有预览环境,自动生成一个预览链接,让产品和设计可以直接点开看效果。

这三层检查的意义不只是拦住问题代码,更重要的是把有效评审的上下文给评审人送过去——评审人打开PR时已经知道测试过了、风格没问题、预览地址有了,就可以集中精力看逻辑和设计,而不是从零开始检查基础项。

4. 评审意见怎么写才有效率:经验与话术

有了流程、工具、自动化,评审的一个核心环节——人怎么提意见——才真正浮出水面。这是最依赖个人经验的部分,也是决定评审体验与效果的一环。同样的一个Bug,不同表达方式带来的是完全不同的后续反应。

4.1 区分必要修改和建议优化

我在评审时会把评论分成三个明确的优先级:必须修改(Blocking)、建议优化(Non-blocking)、纯探讨(Nit)。这个分类不是随口说说的,它对应着不同的处置规则。

必须修改表示"这个问题不解决,这个改动不能合入",比如明显的逻辑错误、安全隐患、会导致线上故障的边界条件。建议优化表示"不改也能合,但改了会更好",比如可读性提升、性能优化点、设计模式选得不够优雅。纯探讨则是我个人对某个实现的兴趣讨论,作者可以不处理,回复一句"这个想法有意思"即可。

这个分类最大的好处是降低沟通成本。我见过太多评审人把意见写成模糊的句子:"这个函数感觉不太对,你再看一下。"——作者拿到这种评论只能一脸问号。而如果明确标注是"必须修改:这个循环在n为0时会死循环",讨论就能直接进入解决方案,而不是在"到底有没有问题"上扯皮。

4.2 用提问代替命令,保留对方的主人翁感

这是我从过去带团队踩过最多次坑换来的经验。直接命令式的评审意见("把这里改成XXX")会立刻把讨论变成防守和攻击,而提问式的意见("如果用XXX方式实现,会不会更简洁?")则会把讨论变成技术探索。

举个例子。一个同事用了一个复杂的嵌套循环处理数据映射,与其说"这个逻辑太绕了,重写",不如说:"我注意到这里有三层嵌套循环,在数据量大的情况下性能会有问题吗?我印象中可以用哈希表预索引一下,直接把查找从O(n)降到O(1)——你评估一下有没有必要?"

效果对比很明显。第一种表达方式,对方大概率会不服气地改完然后背后吐槽;第二种表达方式,对方会认真审视自己的实现,即使最后决定不优化,也会在回复里说明原因——这个过程本身就很有价值。

4.3 应对"抢着合代码"的冲突场景

最后一个关于人的问题是:当作者急着合代码、评审人还有疑问时,双方很容易起冲突。我现在的处理原则是:如果还有清楚指出的"必须修改"级别问题没有解决,该合并的审核就不能通过;如果只是建议优化级别,我不会阻塞合并,但会明确标注"这条意见记录在案,建议在后续迭代处理"。

在这个基础上,还有一个团队级的约定值得做:PR没有完成评审闭环之前,任何人不允许合并。哪怕是作者自己就是技术负责人也不例外。这条规则的执行需要一把"最后的闸门"——通常由CI或平台本身的保护机制来实现,而不靠人盯人,规则才能稳定执行。

5. 把评审数据变成团队改进的依据

评审流程跑顺了之后,团队会积累大量的数据:每个PR的评审时长、评论数、Bug发现数、一轮评审通过的占比等等。这些数据不只是给管理者看的报表,更是一个团队识别自身协作瓶颈的最重要依据。

5.1 评审数据看板上应该放什么

我见过有团队把评审数据做成一个巨大的Dashboard,上面几十个指标,结果没人看——因为大家不知道看什么,也不知道哪些指标值得关注。我的建议是只保留四个核心指标:

  • 平均首次响应时长:衡量评审响应速度的核心指标,超过4小时说明资源分配有问题。
  • 平均评审周期:从PR创建到合并的总时长,超过3天说明PR粒度偏大或者流程卡住。
  • 每PR平均评论数:评论过少(低于3条)通常说明评审流于形式,评论过多(高于15条)可能说明设计文档阶段沟通不足。
  • 一次通过率:没有"必须修改"意见就直接合并的PR占比,低于50%说明设计阶段问题较大,高于90%可能说明评审过于宽松。

这四个指标组合在一起,能快速定位流程的瓶颈环节。比如"首次响应很快,但评审周期很长",问题往往出在意见来回讨论的回合数太多;如果"评论数很大但一次通过率很高",说明评审人都在提小事,没抓到核心问题。

5.2 定期评审复盘怎么开

我建议团队每两周花30到45分钟做一次评审复盘,但复盘的重点不是"追责",而是"找机制漏洞"。流程很简单:从最近合并的PR中挑2到3个讨论质量最高或问题最多的,逐条回顾评审意见,看哪些意见是真正值得提的、哪些是在放空炮、哪些重要的问题当时没被提出来。

复盘会上最常暴露出的问题是:评审人之间对"什么算严重问题"的标准不一致——一个人觉得必须改的性能问题,另一个人觉得完全可以盲合。这种不一致会让作者非常困惑。每次复盘会上我会把这类争议拉出来公开讨论,让团队逐步收敛出一份"常见评审问题清单",后面的人照着清单看,评审质量会稳定很多。

5.3 让新人通过评审快速成长

开放式评审的隐藏价值是师徒传承。我在带新人时,会刻意安排核心模块的PR带上学徒评审人——不是让他独立审核,而是跟着有经验的工程师一起看,先自己写评论,再和师傅的评论对比,看漏了什么、抓偏了什么。

这个做法效果很惊人。新人通常在3到6个月内就能形成对代码质量的判断力,而且因为评审判定标准是公开讨论出来的,新人也会更快理解团队的技术价值取向。相比之下,那些让新人独立写代码、独立修Bug、只在评审时被动接受意见的团队,新人成长速度明显慢一大截。

6. 落地过程中的坑与对策:我踩过的和见过别人踩的

最后一部分聊聊实操中最容易踩的坑。我不会给你一份"完美指南"——那种东西现实中不存在。这里是我和身边团队真正遇到过的问题,以及最后摸索出的解决方案。

6.1 反对声最大时的过渡策略

改评审机制一定会有阻力,尤其是从"没人管"直接切到"严格门禁"的团队。我记得有一个团队在推行强制CODEOWNERS时,项目负责人当场提出激烈反对,理由是"这样会拖慢交付速度"。

我的应对方法是分阶段走:第1到2周,只把新规则用于非核心业务的新PR,老分支不纳入管理,让团队先体验"有评审"和"没评审"的差异;第3到4周扩大到核心业务;第5周之后全量铺开。同时用数据说话——对比机制变化前后的Bug率、返工时间,让对机制不满的人也看到实际的投入产出比。

6.2 评审文化执行中的意外情况处理

我遇到过的意外情况包括:评审人离职了,PR挂在那一拖就是两周;作者把评审意见原封不动循环回复了好几个来回;新来的外包同事完全不按分支规范直接往主干推代码。这类事情任何规则文档都覆盖不到。

我的经验是:不要试图把所有意外都预料到,而是要有一个兜底机制——在这类例外情况下有一个"负责人"可以拍板决定PR的处置,通常建议由技术负责人或架构师担任。这个兜底人不参与日常评审,只在流程无法收敛或出现平台级冲突时介入。

6.3 评审疲劳与参与感的维持

最后聊一个容易被忽视的隐患:评审疲劳。当团队规模大、PR数量多时,资深工程师每天可能要花两三个小时在评审上,很容易产生抵触情绪。对此我的做法是轮值评审:每个模块设置一轮值期,按周轮换,避免同一批人长期承担全部评审压力。同时明确要求:轮值期间可以把自己的开发任务排轻一点,给评审留出充足精力。

我还发现一个很有效的做法:评审也可以被"评审"。每季度让团队匿名给评审人的评审质量打分——有没有认真看代码?有没有无理取闹的意见?表达是帮助成长还是打击士气?这个反馈机制会让评审人意识到,他们的意见也是工作成果的一部分,值得好好对待——而不是随便敷衍了事。

相关新闻

自建代码审查基础设施:open-code-review设计部署与优化

自建代码审查基础设施:open-code-review设计部署与优化

去年我在主导一个中台服务重构,那阵子代码评审基本处于失控状态:PR平均合并时间从3小时拖到近3天,核心代码的评审意见大量集中在缩进和命名上,而真正的接口设计问题、事务边界问题反而经常放过去,等上了灰度环境才炸出…

2026/10/19 19:30:47 阅读更多 →
从零搭建开源代码评审框架:open-code-review的设计与落地实践

从零搭建开源代码评审框架:open-code-review的设计与落地实践

代码评审这件事,说简单真简单——拉上同事看一遍 diff,有问题就改,没问题就合。但凡是带过团队、或者在大项目里滚过几年的工程师,心里都清楚,它恰恰是最容易流于形式、最难坚持高质量的一环。Open-code-review 这个方…

2026/10/19 19:30:47 阅读更多 →
IETF 125深圳启航:揭开互联网标准制定背后的技术博弈

IETF 125深圳启航:揭开互联网标准制定背后的技术博弈

三年前我第一次参加技术标准会议时,坐了整整两天,听了一堆缩写词,回来后唯一的收获是一张印着会议Logo的胸卡。后来我才想明白:像IETF这种全球互联网技术盛会,真正的价值从来不在会场大屏幕,而在会前你读了…

2026/10/19 19:30:47 阅读更多 →

最新新闻

命令模式实战:从撤销重做到宏命令的行为型设计模式详解

命令模式实战:从撤销重做到宏命令的行为型设计模式详解

我先说个结论:命令模式是我个人最常用的行为型设计模式,没有之一。很多人觉得它不就是一个“把方法调用包一层对象”的小技巧嘛,但等你真正遇到需要撤销、排队、做宏、写操作日志的场景时,你会感谢这个“小技巧”的。我在一个模拟…

2026/10/19 20:14:57 阅读更多 →
存储型XSS实战:从靶场原理到Cookie窃取与防御

存储型XSS实战:从靶场原理到Cookie窃取与防御

没错,今天要聊的就是那台几乎每个Web安全学习者都装过的开源靶场——一个把常见漏洞都塞进同一个PHP项目里的测试环境。存储型XSS,是其中我最推荐新手反复练的模块:它需要你同时理解输入点、存储点、输出点这三件事,才能把漏洞真正…

2026/10/19 20:14:57 阅读更多 →
ArtCraft:工程化思维驱动的可控创意生产方法论

ArtCraft:工程化思维驱动的可控创意生产方法论

1. 项目概述:ArtCraft 不是“艺术手作”的简单拼贴,而是一套可落地的创意生产方法论ArtCraft 这个词乍看像英文直译——“艺术工艺”,但如果你最近刷过设计类社区、创意工作坊预告或高校跨学科课程表,会发现它频繁出现在项目命名、…

2026/10/19 20:13:53 阅读更多 →
BCGControlBar合规替代方案:Qt与wxWidgets工程实践指南

BCGControlBar合规替代方案:Qt与wxWidgets工程实践指南

简介:本资源是面向C桌面开发工程师与MFC高级学习者的BCGControlBar Pro 22.1专业版完整破解方案,专为解决VC6至VC2010多版本兼容性开发需求而设计,支持ANSI/Unicode双编码及Debug/Release双模式编译,可直接集成到各类MFC项目中快速…

2026/10/19 20:11:50 阅读更多 →
C++ GUI组件注册机制:用函数表映射替代if-else分支

C++ GUI组件注册机制:用函数表映射替代if-else分支

1. 为什么非要搞一套组件注册机制1.1 一次重构把我逼到墙角去年这时候,我在做一个面向内部使用的可视化配置工具。需求不复杂:左边是组件列表,右边是画布,点一下组件就能添加,选中之后右侧属性面板可以调参数。听起来平…

2026/10/19 20:11:50 阅读更多 →
Artcraft:数字时代的手艺逻辑与工艺知识体系

Artcraft:数字时代的手艺逻辑与工艺知识体系

1. “Artcraft”不是新词,而是被低估的创作方法论原点“Artcraft”这个词最近在设计、手作、数字内容社区里频繁冒头,但几乎没人说清楚它到底指什么。它既不是某个新出的AI绘画工具,也不是某家公司的产品代号,更不是某种加密艺术协…

2026/10/19 20:10:47 阅读更多 →

日新闻

频率跟踪型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 阅读更多 →