慣性聚合 高效追蹤和閱讀你感興趣的部落格、新聞、科技資訊
閱讀原文 在慣性聚合中打開

推薦訂閱源

WordPress大学
WordPress大学
M
MIT News - Artificial intelligence
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tailwind CSS Blog
T
The Blog of Author Tim Ferriss
Engineering at Meta
Engineering at Meta
Jina AI
Jina AI
Last Week in AI
Last Week in AI
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
MongoDB | Blog
MongoDB | Blog
The Cloudflare Blog
月光博客
月光博客
爱范儿
爱范儿
D
Docker
罗磊的独立博客
博客园 - 叶小钗
博客园 - 司徒正美

掘金

Win 安装Claude Code FastAPI 的 CORSMiddleware 跨域中间件 Java 自研 ReAct Agent 半年后,我用 LangGraph 验证了这些设计取舍 🚀AI编程工作流终极形态:GitNexus!零Token消耗实现代码知识图谱化!让Claude Code和Codex拥有上帝视角彻底告别盲目改代码,复杂项目重 LeetCode 72. 编辑距离:动态规划经典题解 被The Graph的GraphQL查询坑了三天,我用一个真实DeFi项目把链上数据索引彻底搞懂了 (AI) 编写简单 AI 助手 (ds-agent) 别再让 pnpm 跟着 nvm 跑了!独立安装终极指南 Claude Code 为什么这么顺?Anthropic 最新复盘:真正撑住它的不是模型,而是缓存 从 /simplify 指令深挖 Claude Code 多 Agent 协同机制 Function-Calling与工具使用 新手上路(六):Claude code装上ECC全家桶:38 个子代理、156 个技能、生产级 Hooks 与 Rules 体系 我在 Claude、Kimi、opencode 三个 AI 之间搭了一条自动协作管道 【技能篇】OpenClaw Skill 详解:给 AI 装上"专业外挂" wagmi v2 多链钱包切换:一个 Uniswap 仿盘项目让我踩了三天坑 两周浅学 RAG 我把 Python re 模块比喻成摸金手套 新手上路(三):Claude Code Skills 装了一堆没用?20+ 个 Skill 横向对比 + 三套组合方案,按需抄 K2.6、DeepSeek V4、GPT-5.5 都来了,组合拳打起来 Claude Code 进阶之路:从记忆系统到子代理编排 [java] 编译之后的记录类(Record Classes)长什么样子(上) 国产大模型能力大比拼,社区有话说 我研读了 500 个 Spring Boot 生产级代码库,90% 都犯了这 7 个致命错误 JAVA重点难点 转发-中央网信办部署开展“清朗·整治AI应用乱象”专项行动 合同同步逻辑 【合并已排序数组的三种实现策略,哪一种更可取?】 30天减20斤挑战:少一斤发100红包(2) 我竟然被JavaScript的隐式类型转换坑了三天! 二十五.Electron 初体验与进阶 本地到生产,解决 AI 全栈最后一公里——构建&部署&运维 程序员创业半年:顺的事、不顺的事,和我一直没想清楚的事 UI组件库elementplus 像使用 Redis 一样操作 LocalStorage 向量检索的流程是怎样的?Embedding 和 Rerank 各自的作用? LangChain DeepAgents 速通指南(七)—— DeepAgents使用Agent Skill 为什么越来越多的大厂抛弃MCP,转向CLI? 【节点】[SquareRoot节点]原理解析与实际应用 juejin.cn juejin.cn 从 “存得下” 到 “算得快”:工业物联网需要新一代时序数据平台越来越多工业用户开始意识到一个问题:**数据是存下来了, - 掘金 放弃 Claude 订阅?我用 8 年前的服务器,强跑 Google 最强开源模型 Gemma 4 真实测评! Python开发者狂喜!200+课时FastAPI全栈实战合集,10大模块持续更新中🔥 从 Claw-Code 看 AI 驱动的大型项目开发:2 人 + 10 个自治 Agent 如何产出 48K 行 Rust 代码 秒级创建实例,火山引擎 Milvus Serverless 让 AI Agent 开发更快更省火山引擎MilvusSer MediaPlayer 播放器架构:NuPlayer 的 Source/Decoder/Renderer 三驾马车 juejin.cn juejin.cn juejin.cn juejin.cn
推行AI寫代碼一年後,Code Review變成了新的加班理由
kyriewen · 2026-05-27 · via 掘金

去年團隊開始用AI編程工具,大家都覺得寫代碼變快了。但一年下來我發現一個怪現象:寫代碼的時間確實少了,可Code Review的時間卻越來越長。以前review一個PR,掃一遍邏輯、提兩個問題就過了。現在每條改動我都要反覆確認:這段是AI寫的還是人寫的?邊界條件處理了嗎?有沒有隱藏的性能問題?review到後來,比我自己重寫一遍還累。

一、AI寫代碼快,但review起來慢

今年初,我接手了團隊的核心項目。組裡幾個同事都用Cursor和Copilot,產出確實高。但輪到我來review的時候,總覺得不對勁。

舉個例子,有個同事提交了一個功能模塊,代碼跑起來沒問題,但我逐行看的時候發現:一個組件裡掛了三個useEffect,其中兩個功能重疊。作者說他沒注意,是AI自動補全的。這類問題成了常態:AI生成的代碼往往能跑,但結構混亂、邏輯重複、缺少邊界判斷。

以前人工寫的代碼,你能感覺到作者的思路。AI寫的代碼像一鍋大雜燴,看起來什麼都有,但就是不舒服。review的時候,你不能只看邏輯對不對,還得幫作者刪冗餘、補缺失、理結構。這一套下來,時間不知不覺就翻倍了。

二、幾種AI代碼的“通病”

我總結了幾類經常在review時遇到的AI痕跡:

1. 邏輯正確,邊界全無

AI很擅長把主流程跑通,但空指針、超時、併發這些問題它不太會主動處理。比如一個查詢接口,AI會寫data.list.map(...),但不會判斷data是不是空。review時要幫它補上data?.list?.map,或者if (!data) return null

2. 過度設計,簡單問題複雜化

有時候AI會把一個很簡單的事搞得特別“高端”。比如加個防抖,它給你寫一個完整的自定義Hook,裡面用了useRefuseCallbackuseEffect,洋洋灑灑四五十行。但實際上只需要一個debounce函數。review這種代碼,你得先理解它的實現,再判斷是不是過度了。

3. 註釋和命名像“機器翻譯”

AI生成的變量名經常是dataitemsconfig,看不出具體含義。函數註釋要麼沒有,要麼是“獲取數據”這種廢話。review時要幫忙改成有意義的命名,或者補上必要的註釋,否則下一個人看不懂。

三、我的個人策略:怎麼讓review不那麼痛苦

經過大半年,我摸索出幾條還算管用的辦法:

  • 讓AI先審AI:提交PR前,要求作者把代碼再給AI(換一個模型)審一遍,根據建議改一輪。
  • 差異化對待:工具類、單元測試、文檔註釋可以放心讓AI寫;核心業務邏輯建議手寫或深度修改。
  • 建立小規範:比如“useEffect必須有清理函數”、“API調用必須有loading和error狀態”。AI不一定會遵守,但review時可以快速對照。

這些辦法不能根除問題,但至少能把review時間拉回到可接受的範圍。

四、反思

我現在對AI編程的態度很矛盾。一方面,它確實幫我省了不少重複勞動;另一方面,它又把負擔轉移到了review環節。以前一個人寫代碼,大家一起審;現在一個人寫AI代碼,另一個人替他審漏洞。

這不是AI的錯,也不是工具的錯,而是我們還沒學會怎麼和AI協作。也許未來會有更好的review流程,或者AI能自己審自己。但就目前而言,AI沒有讓我少加班,只是讓我加班的內容從“寫”變成了“審”

五、最後

如果你也在經歷類似的感受,點個贊讓我知道不是一個人。評論區聊聊:你的團隊有沒有因為AI代碼而review變慢?