作者反思AI时代Vim技能退化,开发Standards linting工具将3年代码review经验凝练为100+规则,自动审查AI生成代码。
我曾经对自己的 Vim 技能引以为傲。我知道所有的快捷键、技巧和诀窍,写过宏命令,记住了寄存器映射,甚至涉猎过 Vim script。我的 Vim-Fu 很强大。
如今,我的 Vim 技能大多已经退化。我很少打开文本编辑器,我的 .vimrc 已经过时且凄凉。时代变了。没有人再手写代码了。取而代之的是,我们几乎用 AI 将代码"召唤"出来。
Claude!(或者更诚实地说,是 Codex——我们现在是一个 Codex 之家)给我搭建一个阿拉伯语语音 AI 平台!
虽然这让软件开发速度快了很多,但让阅读和审查软件变成了一场噩梦。好的代码审查是仔细的、有条理的、深思熟虑的。没有人有(也不应该有人有!)耐心每天仔细审查数千行 AI 生成的代码。
为了解决这个问题,我们开发了 Standards linting 工具。这个工具是三年代码审查经验(以及我软件职业生涯大部分学习的结晶),压缩成了 100 多条确定性 linting 规则。该 linter 作为我们 pre-commit 流程的一部分运行。每当 AI agent 写下一行代码并尝试提交时,linter 就会分析代码并自动标记违规行为。然后由 agent 修复这些问题,开发者无需操心。
其中一些规则是简单的语法惯用法。例如,在规则 SARJ109 中,我们强制使用 uuidv7 并禁止 uuidv4,因为 uuidv7 具有更好的性能优势。然而,其他规则(如 SARJ023)封装了更复杂的、基于判断的概念,比如 stepdown 规则。(作为参考,stepdown 规则是一个概念,它通过要求公共函数出现在源文件开头来促进代码的可读性。)新规则不断被创建,现有的规则也在不断发展和扩展。
我希望这个工具能让我们写出高质量、正确的代码,同时又不失去 AI 给我们的速度优势。我不知道编程的未来会是什么样子。但我确信,护栏、linter、验证层等将比以往任何时候都更加重要。
Standards 是开源的(MIT 协议)。我是 Sarj.ai 的 CTO。