IT2026年7月18日

我们将 AI 编码代理从未拥有过的记忆开源了

作者:Andrea Borghi
我们将 AI 编码代理从未拥有过的记忆开源了

我们将 AI 编码代理从未拥有过的记忆开源了

想象一位患有失忆症的瑜伽老师。每一节课,他们都看着你折成前屈,然后提示“放松膝盖”。下一节课,同样的身体,同样的锁膝习惯——他们却改成提示“在关节处微微弯曲”,仿佛忘了自己曾经用过前一种说法。两种提示都没有错。可现在,你手里拿着针对一个习惯的两条指令,而房间里没有人能告诉你,它们其实是一回事。

这就是 AI 编码代理在你的代码库里每一次会话都会做的事。

没人去 diff 的问题

Claude、Kilo、Cursor、Copilot——它们都不记得上一次给某样东西起了什么名字。让代理在周一添加一个重试上限,它会写成 MAX_RETRIES。再让另一个会话在周三做一件相近的事,而它不记得周一发生过什么,于是它同样合理地写成 RETRY_LIMIT。这两个名字都没问题。放在一起,就成了一个等着别人修改其中一个、却忘了改另一个的 bug。

这不是凭感觉猜的。GitClear 的《The Maintainability Gap》追踪了 2023 到 2026 年间 6.23 亿行变更代码,发现重复代码块增加了 81%,而真正用于重构的提交占比则从 21% 暴跌到不到 4%。CodeRabbit 对 470 个 pull request 的审查发现,AI 编写的 PR 比人类编写的 PR 多出 1.7 倍的问题,其中命名不一致出现的频率大约是两倍。代理会写。没人去整合。而且它从不会在常规 diff 审查里显现出来,因为每一次单独的提交单看都完全合理——不一致只存在于会话之间,而那正是没人会去看的地方。

VarAlign 具体做了什么

VarAlign 是一个 hook,会监视 AI 代理写入的每一个变量,维护一个能跨会话保存的按仓库注册表,并将其与代码库实际内容进行比对——从而捕捉漂移、删除,以及用不同名称表示的重复概念。它是确定性的:没有 LLM 参与,不消耗 token,任何内容都不会离开你的机器。注册表以普通文件的形式保存在你自己的仓库里,因此可以在 git 中被 diff,并且任何工具都能读取,不会被数据库锁住。

检测还会感知语言,这一点比听起来更重要。Go 的首字母大写命名与 Python 的 CONST_CASE 含义不同;PowerShell 标识符不区分大小写;共享前缀但结尾不同的名称(HTTP_GET / HTTP_POST)是一组有意的家族,而不是重复项。如果判断错了,工具就会不断误报,直到没人再读它的报告——这本身也是一种失忆。

连贯性才是整个练习的核心

这一点对任何教课或上固定课程的人来说都会很熟悉:只有有东西能延续下去,练习才会积累成效。记得你右髋僵硬的老师,能把三个月的小修正累积成真正的改变。每次都重新开始的老师,只能一遍又一遍地重复自己,有时只是换个说法,而学生则只能自己去判断到底该信哪一个版本。

默认情况下,AI 编码代理就是那个失忆的老师。VarAlign 是老师本该一直记着的笔记本。它不会让代理更聪明。它只是确保第三次会话知道第一次会话已经做了什么决定,这样代码库积累下来的就只有一套词汇,而不是三套。

今天发布了什么

截至今天,VarAlign 已经是 v1.0.0,核心引擎和一个 Claude Code 插件已在 GitHub 上以 Apache-2.0 许可开源。安装它只需两个命令,无需本地克隆:

/plugin marketplace add greenyogainc/varalign
/plugin install varalign

由于检测基于文件,无论是哪种工具写入的变量,它都能捕捉到重复和漂移——Claude Code、Kilo、Cursor、Copilot,或者直接手写的人工修改。VS Code 扩展会额外提供带颜色标识的重复列表、单击覆盖和备注功能,它单独发布,并在 Marketplace 和 Open VSX 上保持免费。

真正的 dogfooding 是什么样子

我们不会发布那些自己都没验证过的说法。现在,VarAlign 正在我们自己 15 个仓库中实时监控超过 36,000 次变量赋值,目前已经通过它自己的审查流程分流处理了 1,390 个重复和漂移嫌疑。在仅仅围绕这次发布的 24 小时内,它就在更进一步发布之前抓到了三个真实问题:仪表盘里悄悄重复计算的逻辑、一个严重程度常量被重新定义而不是从共享来源导入,以及分散在多个脚本中的配置值本应统一从一个地方读取。上述问题在普通代码审查里都不会显现出来——每一次改动单看都没错。

VS Code 扩展的第一个正式版本在三天前发布,目前下载量已经超过 2,300 次。

这周只做一件事

如果你正在用 Claude Code、Kilo、Cursor 或 Copilot 操作一个有一定规模的仓库,这个问题你其实已经有了——只是还没看到报告而已。安装插件,让它扫描,然后在你忽略任何标记之前,先读一读它指出了什么。大多数出现的问题都会是一个很容易、五分钟就能完成的重命名。价值不在于某一次单独修复,而在于代码库开始为每个概念只保留一个名字,而不是每个 sprint 都积累出一种新方言。

这和垫子上持续数月的良好练习是同一件事:不是一次戏剧性的突破,而是一套不断自我累积、而不是从头开始的词汇。


VarAlign 的引擎和 Claude Code 插件已在 github.com/greenyogainc/varalign 开源。VS Code 扩展可在 Marketplace 和 Open VSX 上免费获取。如果你希望在更大的组织中推广使用,欢迎 联系我