打开网易新闻 查看精彩图片

96%的开发者不信任AI生成的代码能跑通,但48%的人还在让AI裸奔——没配置、没规则、没质量门。

这是「State of Code」开发者调查报告里的数据。更讽刺的是,我翻了13个顶级开源项目,9个零AI配置。Django、Angular、Vue、Svelte、Tokio、Remix、Cal.com、Airflow、Tauri,全裸。

这些项目动辄几百个贡献者。它们都不配AI规则,你的项目大概率也没有。

问题比"没配置"更糟

问题比"没配置"更糟

剩下4个配了的,情况也没好到哪去。

Grafana有个CLAUDE.md,打开一看:一行字,@AGENTS.md。手写的AGENTS.md倒是157行,但漏了CI里的质量门。AI照着写,照样挂流水线。

Prisma更直接。166行的AGENTS.md里写着:

「你的训练数据里大量信息已经过时,不适用于Prisma 7。分析这个代码库时,请像分析一个你不熟悉的项目那样。」

Prisma自己的维护者都不信AI的训练数据,你凭什么信?

Supabase配了三套:Claude一套、Copilot一套、Cursor一套。三个工具,三份配置,零重叠。改一处,另外两处还是错的。

AI编程助手需要知道两件事:CI强制哪些质量门(lint、test、build、typecheck),以及你的架构和关键目录。

没有这些,AI就是在用过时的训练数据瞎写。代码能跑通?看运气。

一个叫crag的工具想终结这种混乱

一个叫crag的工具想终结这种混乱

思路很简单:让AI去读你的项目——CI工作流、包管理文件、配置、目录结构——然后生成一份governance.md,再编译成各工具的原生格式。

agents-md → AGENTS.md(Codex、Aider、Gemini CLI)

copilot → copilot-instructions.md(GitHub Copilot)

continue → .continuerules(Continue)

windsurf → .windsurf/rules/(Windsurf)

amazonq → .amazonq/rules/(Amazon Q)

github → gates.yml(GitHub Actions)

改一次governance.md,跑crag compile,12个格式全更新。

他们在50个重要开源项目上测过:1,809个质量门被推断出来,96.4%准确率(187/194个门经代码库验证),20种语言、7套CI系统、0崩溃。

Grafana/Go+React+Docker:67个门,原CLAUDE.md只有1行

Supabase/TS+React+Docker:43个门,原配置碎片化

Prisma/TypeScript+Rust:40个门,原配置警告数据过时

Django/Python:38个门,零配置

Angular/TypeScript:38个门,零配置

它怎么做到的

它怎么做到的

四步流水线。

Analyze。读CI工作流(GitHub Actions、GitLab、Jenkins等)、包管理文件、工具配置。25+语言检测器,11个CI提取器。

Generate。写governance.md,包含质量门、架构、测试画像、代码风格、反模式、框架约定。

Compile。转译成各工具格式——Cursor用MDC frontmatter,AGENTS.md用编号步骤,Windsurf用YAML触发器。

Audit。检测过期配置、缺失工具、配置漂移。

还能Hook进pre-commit,自动重编译。可选的漂移门能阻断提交。

没有LLM。没有网络请求。不要API key。500毫秒跑完。确定性输出。

Node.js 18+,零依赖,MIT协议。

但工具不是终点

但工具不是终点

crag的作者在文档里埋了一句话:「AI配置是活的文档,不是写一次就忘的墓碑。」

Grafana那157行手写配置,Prisma那166行警告,Supabase那三套分裂的规则——它们曾经都对过,然后项目演进,配置腐烂。

CI加了新检查,AI不知道。目录结构重构,AI还在旧地图里导航。训练数据过期,AI继续瞎编。

crag想解决的是同步问题:让AI配置跟代码库一起版本化、一起演进、一起被验证。

但这里有个悖论。crag本身也是工具链的一环,它生成的配置会不会也腐烂?作者给的答案是pre-commit hook和drift gate,强制每次提交前重编译、比对。

换句话说,用自动化对抗自动化产生的债务。

50个项目的测试数据里有个细节:96.4%的准确率,意味着还有3.6%的门被漏掉或误判。在194个被验证的门里,7个错了。

这7个是什么?文档没细说。可能是边缘的shell脚本检查,可能是自定义的lint规则,可能是多仓库联动测试。

AI编程的困境从来不是没有工具,而是工具链太长、太碎、太容易被忽略。crag砍掉的是重复劳动,但判断哪些门该进配置、哪些该让AI自己推断,还得人来做。

Prisma在AGENTS.md里写的那句警告,其实是个隐喻:AI不认识你的代码,除非你告诉它。而告诉它的方式,正在从「写文档」变成「让工具读你的基础设施」。

你的项目有AI配置吗?是手写的、自动生成的,还是——像那9个顶级仓库一样——根本没有?