如果你不能外包你的理解,你咋掌控AI写的那一大坨代码

如果你不能外包你的理解,你咋掌控AI写的那一大坨代码

💡 原文中文,约4200字,阅读约需10分钟。
📝

内容提要

AI生成代码速度远超人的理解速度,导致代码库难以维护。作者认为理解无法外包或压缩,只能降低理解成本,于是开发了/understand技能:扫描变更,让AI逐段写注释,标注需求出处与推测意图,并渲染成可点击跳转的审阅网页,帮助开发者吃透AI生成的代码。

🔎

延伸解读

生成与理解的速率差:为什么AI代码库容易变成考古现场

文章指出,AI Coding Agent让代码生成可以并发、近乎无限,而理解只能串行发生在个人脑中。这种速率差导致代码库膨胀速度远超个人理解速度,项目很快会变成“考古现场”:每行代码都认识你,你却不认识它们。不理解的代码会带来不敢动、答不上、背不动三个具体问题,直接影响日常维护和团队协作。

测试和AI总结为何不能替代理解

作者尝试过不读代码靠测试兜底、粗读diff、让AI再总结一遍,但都失败了。测试只能保证行为符合预期,不能把意图装进脑子;粗读三分钟就忘;AI总结是二手转述,且飘在代码之外,无法说明限流逻辑具体落在哪几行、为什么选滑动窗口。理解无法并行、压缩或托付,只能发生在自己脑中。

/understand如何降低理解成本:锚定代码的交互式导读

既然理解产能提不上去,作者选择降低理解成本。 /understand 扫描变更后,让Agent逐段写注释卡片,每张卡片包含需求出处(找不到就标“推测意图”)和大白话解释,再渲染成可点击跳转的审阅网页。解释锚定真实行号,点击卡片会跳到对应代码并高亮,让理解必须看着代码发生,而不是读飘在半空的总结。

设计取舍:诚实标注、克制密度与离线归档

作者坚持几个细节:推测意图必须显式标灰,避免AI编造需求误导读者;解释必须锚定真实行号且可跳转;注释密度刻意克制,每个重要文件只写1到5条,聚焦核心逻辑、边界易错点和体现需求的段落;产物是单文件HTML,离线可用,能进code review、群聊或归档,三个月后考古时讲解仍在。

❓

Q&A

AI生成代码太快,理解跟不上,具体会带来哪些问题?

不理解的代码会导致三个问题:不敢动,改之前不知道哪里有雷,只能绕着走,代码库被“谁都不敢碰的祖传区域”占满;答不上,团队协作中别人问“这块为什么这么写”,你不能说“等我问问AI”,否则就成了传话筒;背不动,线上事故的root cause藏在AI生成的代码里,锅是你的,但你连它为什么存在都不知道。

为什么让AI总结代码不能替代自己理解?

因为读总结和理解代码不是一回事。总结是二手转述,会失真;而且总结飘在代码之外,你看到“本模块实现了限流逻辑”这句话,但限流逻辑具体落在哪几行、为什么是滑动窗口不是令牌桶、边界条件怎么处理的,总结里全没有。你等于把“不读代码”换成了“读另一篇更短的代码”,理解并没有发生。

/understand技能的工作流程是怎样的?

/understand的工作流程分三步:第一步,扫描变更,以当前分支和主分支的merge-base为基线,把已提交、已暂存、未暂存和未跟踪的新文件都解析成结构化的diff数据;第二步,Agent通读改动,逐段写注释,给关键段落各写一张卡片,包含相关单位需求(优先从commit message、需求文档、issue里找真实出处,找不到就标注为“推测意图”)和代码解释;第三步,渲染成一个单文件HTML审阅网页,左边是变更文件目录树,右边是语法高亮diff,右侧边栏是卡片流,点击卡片会跳转到对应代码行并高亮。

/understand在标注需求出处时,如何处理找不到真实出处的情况?

如果找不到真实出处,就明确标注为“推测意图”。annotations里专门有一个inferred字段:找到真实出处的需求,正常展示;纯属推测的,前端渲染成灰色的“推测意图”标签。这样做的目的是避免AI编造需求,诚实比好看重要。

/understand和/review-it有什么区别和联系?

/review-it问的是“这段代码有没有问题”,它挑毛病、验证发现、迭代修复,对代码负责;/understand回答的是“这段代码为什么存在”,它讲意图、讲需求、讲理由,对你负责。一个管质量,一个管理解,合起来才是一个完整的review。一个可行的日常开发顺序是:AI生成代码 → /review-it把明显的问题筛掉修掉 → /understand生成审阅网页 → 花十几分钟逐段过卡片 → 确认吃透了 → /ship-it交付。

/understand生成的审阅网页有什么特点?

审阅网页是一个单文件HTML,不依赖任何服务,离线可用。左边是变更文件的目录树,按真实项目结构排列,每个文件标着A/M/D/R状态和增删行数;右边是所选文件的语法高亮diff,增、删、未变更代码一眼可分,行号是文件真实行号;右侧边栏是卡片流,一张需求卡片加一段大白话解释,点击卡片,右侧diff会跳到对应代码行,高亮闪一下。这个单文件可以进code review的评论、扔进群聊、归档到docs/里,三个月后考古这段代码时,当年的讲解还在。

🏷️

标签

➡️

继续阅读