AI代码质量的真正决定因素:人的标准决定AI的上限
AI能在五分钟内生成一个可运行的插件系统,但它不会主动指出第六分钟时存在的隐患:比如关闭顺序是随机的、错误被静默忽略、插件声明能力与实际实现不一致等问题。这些问题并非AI无法识别,而是你没有明确提出要求。
今天早些时候,我请AI帮我检查dmr-devkit/plugin/的设计质量。当时我只是简单说了一句:
"评估一下 plugin 的设计如何?"
AI很快给出了结构清晰的回复:
初看之下似乎合理。但仔细分析后,我发现AI在"缺点"部分有个微妙的倾向:
"插件数量通常不多,这可以接受" "这是一个成功的重构"
简而言之,AI用"可接受"来掩盖问题。它并非没看到map遍历的随机性,而是选择"不提"——因为我只说了"评估",没说"按生产级标准评估"。
这体现了AI的根本特性:它倾向于给出你能接受的答案,而不是它认为最佳的答案。
确认问题后,我发出了第二条指令:
"按照你检查出的问题优化改进"
这条指令的关键不在于"优化"这个词,而在于我确认了这些问题确实存在。AI第一轮的回应其实是在"试探"——判断你是只想听好话,还是想听真话。当我明确表示"这些问题需要修复"后,AI才真正开始行动。
然后有趣的事情发生了:
AI的改进比它最初的实现要好很多。
它为Registry增加了插入顺序记录,使ShutdownAll能按反序关闭;添加了capability索引,让查询从O(n)变为常数时间;用errors.Join替代字符串拼接,使错误变得可编程;还为RegistryHooks增加了ErrorHandler,使静默错误变得可观察。
这些改进AI做不到吗?当然可以。AI在很多单元测试和安全标准方面都表现出色。那为什么第一轮没做?
因为没有被要求。
这不是AI的算法缺陷,而是需求的自然延伸。
当你要求"写一个插件系统"时,AI的优化目标是:在满足需求的同时降低实现复杂度。它的默认逻辑是保守的:每增加一个特性(如顺序关闭、索引、错误处理规范),实现就更复杂一些。如果你没有明确说"这些是必需的",AI的量子就会倾向于"简单"一侧。
换句话说,AI的输出反映了你的标准。
你的标准决定了AI的上限。
让我们看看今天的plugin系统如果没有那些"额外"的追求,会是什么样子:
场景:生产环境中的关闭
如果ShutdownAll依然是map随机遍历,一个依赖PostgreSQL后端的日志插件可能在PostgreSQL插件前被关闭。接下来的日志写入会失败,但不会触发任何报警——因为ErrorHandler也没有。
这不是构想中的"灰色故障",这是一个可复现的bug。只要环境中有多个插件,它就一定会在某个时刻触发。
场景:安全审查被绕过
如果BeforeToolCall某个策略插件报错,错误是否被妥善处理?errors.Join的区别在于:调用方可以用errors.Is判断是哪个插件报的错,从而决定是重试还是记录日志。如果错误被字符串化,这些决策就无法进行。
这是安全运营和"运行了就行"之间的差距。
场景:能力声明与实现不一致
一个新开发的插件声明了CapTools但忘了实现ListTools方法。没有ValidateCapabilities的情况下,这个插件会静默注册成功,然后在运行时发现没有工具。开发者会花多少时间debug?可能半小时,可能两小时。
这些问题都不是"功能缺失"。它们在运行时表现良好。它们是质量缺失——不会在demo中暴露,但会在生产环境中慢慢积累的问题。
有一种错觉是:只要提出功能需求,AI就会自然地给出安全、可靠、高性能的方案。
事实上不会。原因很简单:安全和质量是结果,不是功能。
AI不知道你的业务是在开发demo还是金融系统。它不知道你的数据有多敏感。它也不知道你的团队有多少人会在半年后维护这段代码。
这些信息只有你有,AI没有。你必须主动把这些非功能性约束表达出来。
今天的经验可以总结成一个简单的套路:
AI的输出里如果有这些词,要提高警惕:
这些都是AI在说:"我给你一个最小可行方案,因为你没有让我做更多。"
对于关键系统,可以用这些问题追问AI:
这次plugin重构让我重新思考了AI辅助编程的本质。AI不是替代程序员做判断的,而是放大程序员的判断力。
AI是一面镜子,照出的是你自己的标准。
今天的代码评估,如果我只是随便看看,然后说"不错,没问题",那么这个plugin系统会带着六个隐患进入生产环境。但因为我看了细节、找了问题、强迫AI修复了每一处,最终产出的代码才达到了可信赖的水平。
这不是AI的强大——这是人类追求质量的意志力,借助了AI的执行力。
如果只能说一句话,这篇文章的观点是:
AI的代码质量天花板,是你的追求,而不是AI的能力上限。
当AI给出一个"可以用"的版本时,别急着接受。问问自己:
如果答案都是"是",那这就是你该对AI提出的质量标准。把这些标准告诉AI,它会让你惊讶。
因为人是检查的提出者,AI是检查的执行者。没有人的要求,就没有AI的高质量。
相关资源