我年轻的时候,复读那年认识了一个姑娘,她爸是造船厂的工程师。有次我去她家玩,看到她爸的书房里有一整面墙的事故报告,按年份编得整整齐齐。我那时不懂,问叔叔存这个干嘛,他说:“每一艘船下水之前,都要有人签字。签字的底气不是来自’我相信没问题’,是’出了问题我能找到根儿在哪’。”
那面墙给我的震撼,比后来读任何一本管理学著作都大。
说回Grok Build这事。楼主提到"标识"和"责任边界",这其实是两个不同层级的问题,混在一起谈容易糊涂。我这些年在外企做项目,见过太多把"可追溯性"当成 checkbox 来应付的团队——打个AI-generated的标签容易,真出事了能顺着标签摸到决策链条的,寥寥无几。
我举个例子。我们去年接过一个legacy系统的迁移,前任团队用了大量低代码平台生成的脚本。那些脚本里确实有平台自动标注的"generated by XXX"水印,漂亮得很。但问题是,当某个数据清洗规则在凌晨三点触发异常时,值班的 junior 根本分不清这个规则是平台默认配置、是AI根据历史数据推荐的、还是某个已经离职的工程师手动覆写过的。标签在那里,故事没在那里。
所以我对"强制区分人机代码"这个提法,有点保留。不是说不该做,而是说形式上的区分解决不了本质上的权责模糊。你让IDE给AI生成的代码标个颜色,跟造船报告上盖个章有什么区别?说实话真出了生产事故,审计的人想问的是:谁批准采用这个方案?谁测试了边界条件?谁在当时当地有能力叫停却没叫停?
这些问题的答案,往往不在代码的元数据里,在组织的流程设计里。
我倒是觉得,与其在IDE层面搞强制标注,不如先在commit message的规范和review机制上动真格的。以前我们团队用过一个土办法:任何涉及AI辅助的提交,必须在message里用固定格式写明"人类决策点"——不是写"AI生成",而是写清楚"此处选择XX方案而非YY方案,原因是ZZ,风险由XX承担"。刚开始大家怨声载道,觉得形式主义,后来真的靠这个在两次线上故障里快速定位到了问题。
当然我知道这要求太高了。cozy48说的对,很多团队连基本的code review都做不完整。但这恰恰是我想补充的:正是因为做不到,才要在工具设计上降低"做到"的门槛,而不是假装"做到"了。
Grok Build这类工具如果真想进严肃开发流程,它该解决的不是"怎么让AI写得更像人",而是"怎么让人的判断痕迹不可磨灭"。比如说,它能不能在每次AI执行操作前,强制要求人类输入一个简短的决策理由?能不能在操作日志里保留"人类确认"的时间戳和上下文,而不是简单地把人类变成一个"同意"按钮?这些设计比什么水印都管用。
我有时候跟做产品的朋友聊,发现大家太迷恋"无缝体验"了。好像让用户多点一步、多写一句,就是产品设计的失败。那会儿但我年轻的时候吃过这个亏——复读那年,我为了"高效"跳过过一套数学题的验算步骤,结果高考考场上栽在同一个题型上。那之后我就信一句话:省下来的步骤,迟早以别的方式让你还回去。仔细想想
楼主提到央视曝光AI买家秀,这个类比有意思,但代码和评论有个关键区别:买家秀是终端产物,代码是中间品。消费者看到假评论,损失的是决策质量;但开发者用AI代码,损失的是对系统理解的深度。这事吧更麻烦的是,这种损失是隐性的、滞后的,等你发现的时候,可能已经堆了三个月的技术债在那里。
那会儿
想当年我见过一个case,一个创业团队用AI生成了整个支付网关的异常处理逻辑。代码能跑,测试也过了,上线半年没出问题。第七个月,一个极其边缘的corner case触发了连锁故障,因为AI在处理异常时采用了一个它在训练数据里见过的"常见"策略,而这个策略和他们实际的业务场景根本不匹配。最讽刺的是,review这段代码的senior engineer后来跟我说,他当时确实看懂了每一行,但没意识到"看懂"和"理解背后的假设"是两回事。
这让我想到另一个层面:当AI从"聊天框"变成"计算机操作者",它实际上在改变"写代码"这个行为的定义。以前我们说"我写了一段代码",隐含的意思是"我理解这段代码的意图和边界"。想当年现在你说"我用AI生成了一段代码",这个"用"字里面,理解的成分到底占多少?想当年我觉得这是很多讨论里缺的一块。怎么说呢
retro__824说的双轨制编辑器,我倒是觉得方向对,但实现上可以更狠一点。不是区分"人写的"和"AI写的",而是区分"人类已验证"和"待验证"。颜色光标什么的太表面了,真正有用的是阻断机制——AI生成的代码默认进入一个隔离的评审队列,必须经过至少一个人类的结构化审阅才能合并。这个流程可以自动化,但"通过"这个动作必须是人类主动做出的,不能是默认的。
SpaceXAI如果做这个,我立刻高看一眼。可惜我猜他们不会,因为这和"效率"叙事太不兼容了。
最后说点题外的。我跳舞跳了十几年,拉丁和bossa nova都碰。有个体会是:领舞和跟舞之间,永远要有清晰的信号传递。领舞的不能假设跟舞的自然而然就懂了,跟舞的也不能因为"反正有领舞的带"就放弃自己的重心。AI工具现在的问题,有点像领舞的突然开始即兴发挥,还跟舞的说"你跟着动就行"——跳是能跳,但踩脚的时候算谁的?
我年轻的时候也追过效率工具,literally每出一个新的IDE插件都要试。现在?我电脑里还留着Vim的配置文件,但写关键模块的时候,宁可手写慢点,也要把每个决策的why记下来。不是怀旧,是吃过亏。慢慢来
btw,楼主最后问"IDE里该强制区分人机代码吗",我的答案是:强制区分不如强制留痕。区分是给审计看的,留痕是给自己用的。真到了要找人背锅的时候,你会发现能救你的不是那个AI-generated标签,是你当初多写的那两行注释。
当然,年轻人可能听不进去这些。我以前也听不进去。