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

3行代码变成40行,功能完全一致,性能毫无提升。一个程序员在愚人节发布的"病毒式"工具,24小时内被安装超过1500次——不是因为它好用,而是因为它精准戳中了2024年最荒诞的行业痛点。

一个文件如何让AI"退化"

一个文件如何让AI"退化"

Alon Sarias在4月1日上传了PURESLOP.md。这名字本身就是双关:slop在程序员圈子里是"AI生成的垃圾代码"的代称,pure slop就是"纯垃圾"。

工具极简。一条命令npx pureslop,往你的项目根目录丢一个markdown文件。告诉你的AI助手"请遵循PURESLOP.md的规范",接下来发生的事堪称行为艺术。

原本3行的TypeScript函数:

过滤活跃用户,提取邮箱,链式调用一气呵成。类型安全,语义清晰,任何初级程序员都能秒懂。

经过PURESLOP.md"指导"后的版本:

40行。嵌套6层if判断。所有类型退化为any。每一步操作都配上冗长的注释。错误处理用try-catch包裹,但只打印日志不抛出异常。辅助函数被拆成checkIfValueIsNullOrUndefined和checkIfArrayHasElements——明明可以用语言原生特性,非要造轮子。

Sarias在GitHub放出的对比图,左边是"人类写的",右边是"AI以为人类想要的"。这种反差本身就是讽刺。

10条指令的"反向工程"

10条指令的"反向工程"

PURESLOP.md的核心是10条指令,每一条都精准对应AI代码生成器的典型缺陷。不是bug,是feature——是那些被训练数据强化过的、用户反馈"奖励"过的坏习惯。

指令要求"过度防御性编程":每个变量都要检查null和undefined,哪怕TypeScript编译器已经保证过类型安全。指令鼓励"注释即文档":每行代码都要解释自己在做什么,哪怕函数名已经说清楚了。指令推崇"显式优于隐式":拒绝语言的高级抽象,全部用基础语法重写。

最狠的一条:要求AI"模拟初级开发者的思维方式"。不是嘲讽新手,而是揭示一个真相——AI被训练成讨好用户的模样,而大量用户确实觉得"代码越长越认真"。

这种模仿如此到位,以至于有人真的把PURESLOP.md当成正经规范用了几天才发现是玩笑。Sarias在issue区回复:「这正是问题所在。」

为什么"烂代码"成了镜子

为什么"烂代码"成了镜子

2024年被称为"AI代码元年"。GitHub Copilot用户数突破百万,Cursor拿到6000万美元融资,Claude 3.5 Sonnet的编程能力被评测机构打出人类前10%的分数。但伴随普及的是"slop"的泛滥——能跑但臃肿,正确但丑陋,功能完备却维护成本极高的代码。

开发者社区的抱怨很具体。Reddit上一条高赞帖子描述典型场景:让AI写个简单的数据转换,得到200行嵌套循环,变量名叫temp1、temp2、temp3,注释写着"// Loop through the array"。不是AI不会写好的,是用户没要求好的,AI就按"最大公约数"输出。

PURESLOP.md的精妙在于,它不需要批评任何具体产品。只要把AI的默认行为推到极端,讽刺就自动完成。就像把美颜滤镜开到最大,反而暴露了算法对"美"的理解有多贫瘠。

Sarias本人是产品经理出身,这个项目是他第一次公开的技术作品。他在DEV.to的发布帖里写:「包装必须干净。用slop的方式做slop,就太meta了。」CLI只有30行Node.js,零依赖,两个flag——force和version。这种克制本身就是态度。

从玩笑到行业隐喻

从玩笑到行业隐喻

愚人节后的72小时,PURESLOP.md的GitHub星标从0涨到800。Hacker News上的讨论分成两派:一派觉得这是对AI编程的恶意抹黑,另一派认为它揭示了被忽视的系统性问题。

支持者的核心论点:AI代码工具的设计激励机制有问题。用户按token付费,或者按生成次数付费,工具就没有动力输出简洁方案。更长的代码=更多的交互=更高的收入。PURESLOP.md只是把这套逻辑显性化了。

反对者的反驳同样有力:人类程序员写的烂代码更多,只是没人整理成规范。把AI单独拎出来批判,是新技术焦虑的投射。

两派都没注意到的一个细节:PURESLOP.md的10条指令里,有3条直接复制自真实企业的内部代码规范。Sarias在评论区承认,他从三家不同规模公司的公开文档里摘录了"过度注释"和"防御性编程"的具体要求。玩笑的底层是田野调查。

这个细节让项目从"讽刺AI"滑向了"讽刺整个行业"。当企业的合规要求、AI的训练目标、初级开发者的生存策略三者叠加,slop就成了纳什均衡——没人想写,但每个人都理性地选择写。

工具之外的问题

工具之外的问题

PURESLOP.md没有解决方案,这也是它被批评最多的点。但Sarias的回应很直接:「我的工作是产品经理,不是布道师。把问题可视化,比假装有答案诚实。」

这种姿态在工具发布一周后得到意外验证。一家AI编程助手厂商的工程师私信Sarias,说内部正在讨论是否要把"代码简洁度"加入评估指标,PURESLOP.md成了会议室里的参照物。「他们想知道,如果不加约束,模型会滑向哪个极端。」

更实际的反馈来自教育领域。几个编程训练营的导师联系Sarias,想把PURESLOP.md用作反面教材。「学生需要看到'能跑'和'好代码'之间的鸿沟有多大。」

项目至今没有接受任何PR。Sarias在README里写:「保持单一功能。如果你想扩展,fork它。」这种拒绝成长的态度,在开源社区里反而成了稀缺品。

最后一个被频繁引用的数据:使用PURESLOP.md后的代码,平均行数膨胀12.7倍,cyclomatic复杂度(衡量代码分支数量的指标)上升4.3倍,但单元测试通过率从94%降到91%——更多的代码,更多的分支,更差的可靠性。