用 coding agent 的人都撞过同一堵墙:你要一个日期输入框,它还你一整个日期选择器组件——时区处理、国际化、键盘无障碍,一样不少。
每一行都对。合起来全是负债。
模型不是不会写代码,是太会写了。你要个门把手,它给你造一扇智能门,还附赠说明书。这两年我做 Agent 产品,看各家模型一代比一代强,这个毛病没跟着好转,反而更重——能力越强,越忍不住多写。
GitHub 上有个项目专治这个病,叫 ponytail。78k star,MIT 协议,一句话说完它干的事:给你的 AI agent 装一个"全公司最懒的高级工程师"人格。
就是那种老工程师——扎马尾,戴椭圆眼镜,比版本控制系统入职还早,什么过度设计的烂摊子都见过。他的哲学只有一条:最好的代码,是你从来没写的那些。
README 的原话更狠:"He says nothing. He writes one line. It works."
他什么都不说。他写一行。能跑。
Claude Code 里分两次发:
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
Codex、Copilot CLI、Gemini CLI 各有对应的一条命令。Cursor、Windsurf、Cline 这类没有插件机制的,把仓库里现成的规则文件拷进项目就行。总共适配了 16 个 agent——基本等于"你在用的那个,它都管"。
装完不用配置,默认就是 full 档。想调,/ponytail lite、/ponytail ultra、/ponytail off 随时换。档位的差别就是管得多严:lite 客气,full 正常,ultra 最不留情面。
它的核心机制是一架"YAGNI 阶梯"。agent 每次动手写代码之前,强制先爬七级:
注意顺序。先把问题彻底读懂,再开始懒。它不是让模型少想,是让模型把力气花在"能不能不写"上。
还有一条底线我很认:安全、输入校验、错误处理、无障碍,永远不砍。懒的是代码量,不是质量。少写代码最怕的就是顺手把校验也懒掉——它在规则里把这条焊死了。
数据我去翻了它的 benchmark 说明,方法不糊弄:12 个真实功能任务,跑在 tiangolo 那个几万 star 的 FastAPI + React 模板仓库上,模型用 Haiku 4.5,每个任务跑 4 遍,按 git diff 打分。
结果:代码量平均少 54%,token 少 22%,账单少 20%,速度快 27%。
平均数后面的分布更有意思。本来就该极简的任务,降幅接近零——没肥肉可砍。"过度构建陷阱"型的任务,比如前面说的日期输入框,降幅冲到 94%。
它专砍你最该砍的地方。
安全评分是满分。同类方案有掉到 95% 的——别小看这 5 个点,放到生产环境里,就是有事故和没事故的差别。
/ponytail-review,扫当前 diff 里的过度工程,直接给删除建议。提交前跑一遍,相当于先请懒高工过目。
/ponytail-audit,全仓库扫。这个杀伤力大——它不看你这次改了什么,它看你整个项目里堆了多少"以后可能用得上"的东西。
/ponytail-gain,看它到目前为止帮你省了多少。
偶尔用得上的还有 /ponytail-debt:代码里标过 ponytail: 记号的那些"以后再说",它统一收进一本欠账台账,免得散在注释里烂掉。
audit 我暂时没舍得在自己最老的仓库上跑。谁都知道会扫出什么——自己写的过度工程,比 AI 写的难承认多了。
三个场景,建议关掉,或者至少降到 lite 档。
原型期要发散的时候。你自己都还不知道要什么,agent 多铺一点反而是帮你探路。这时候开 ultra,等于拉一个只会说"不用做"的人来陪你头脑风暴。
代码库本来就极简的时候。benchmark 里降幅接近零的那批任务就是证据——鞭子再紧,抽在骨头上也没肉掉。
还有一种最隐蔽:把它当能力增强器。它不是。弱模型装完还是弱模型,它改的是品味,不是智商。指望一个插件让小模型写出大模型的架构判断,方向从头就错了。
"代码是负债,不是资产"——这话行业里讲了二十年,全靠工程师自觉,从来没真正执行成过。人管不住自己,评审也管不住。
现在它变成了一个装进 agent 的强制检查点。每写一行之前先过七个问题,过不了就不许写。二十年的工程格言,头一回有了执行器。
这种"往 agent 里装人格"的路子能走多远,我不好说。品味到底能不能靠一份规则文件注入,我也存疑。
但账单少两成,是当月就能看见的数字。
先装上。别的以后再说。