一万八千颗星,四天。
前阵子我让 AI 帮我做个日期选择器。
就一个普普通通的日期框,用户点一下选个日期,仅此而已。
结果呢。它给我装了个第三方库,包了一个 React 组件,又加了一张样式表,写完还要回头跟我讨论时区怎么处理。整整三十行。为了让用户选一个日期。
你大概也碰到过。AI 写代码这毛病太普遍了,不是写不出来,是写太多。你要个小功能,它恨不得给你搭个工厂。
直到我装了一个叫 ponytail 的插件。同样这句话,它只回了我一行。

这玩意儿四天冲到 GitHub 一万八千颗星。作者给它起的定位特别损,说是把你团队里那个最懒的资深工程师塞进你的 AI 里。
你懂那种人。在公司待得比版本控制系统还久,扎个马尾,戴副圆眼镜。你拿着五十行代码去找他,他看一眼,啥也不说,删到只剩一行,还能跑。
ponytail 干的就是这件事,把这个人的脑子装进 AI。
一. ponytail 的六级 YAGNI 阶梯
它的原理朴素到有点好笑。
AI 每次准备动手写代码之前,被强制按顺序问自己六个问题,从上往下走,停在第一个能成立的台阶上。

第一个问题最狠,这东西真的需要存在吗。
不需要,直接跳过。这就是程序员天天挂嘴边的 YAGNI,你不会需要它。能过第一关的需求,再问标准库能不能做,平台原生能不能做,现成的依赖能不能复用,一行能不能搞定。
大半的活儿,问到第二句就被毙了。
坦率的讲,这套逻辑不新鲜。每个有经验的程序员脑子里都有类似的判断链。但问题是 AI 没有。AI 的本能是写代码,写多不写少,写新不复用。ponytail 做的事就是把这条判断链变成一个强制执行的流程,在 AI 动手之前先拦住它。
逼着它先想清楚不写什么,再去想写什么。顺序反过来,结果天差地别。
二. 实测,三十行变一行
回到我那个日期选择器。
没装 ponytail 的时候,AI 走的是第四条路,找个依赖装上。装了之后,它在第三关就停了,浏览器原生就有一个日期框,HTML 自己带,写一行就完事。

你以为这是个例?不是。
让它写邮件格式校验,它能给你整出一个二十多行的正则类。其实大多数场景判断一下有没有那个 at 符号就够了,真要较真,发封确认邮件比什么正则都靠谱。
手写一个一百多行的缓存?标准库的 lru_cache 三行解决。AI 连轮子都不用造,标准库就是轮子,你只需要知道它在哪。
还有一个我印象特别深的。让它写个倒计时器,它搞了一个 CountdownTimer 类,构造函数、start、pause、resume、reset、destroy,完整生命周期,六十多行。装了 ponytail 之后呢,setTimeout 套一个回调,完事。
你想想看,一个倒计时器你什么时候需要 pause 和 resume?你又不是做番茄钟 App。它在帮你写你根本不会用到的功能。
最夸张的一次,是错误处理。
我让 AI 帮我调一个第三方 API,拿个数据回来显示就完事了。裸跑的 AI 给我搞出来什么呢?try-catch 嵌套三层,一个自定义的 ApiError 类继承 Error,带 statusCode 带 retryable 标记,然后是指数退避重试逻辑,最大重试三次,每次间隔翻倍,再加一个超时控制器。八十多行。
哥们我就想拿个天气数据显示在页面上。你跟我聊什么指数退避?
装了 ponytail 之后,fetch 一下,.catch 打个 console.error,页面上显示个「加载失败」。三行。这是个原型啊,又不是给银行做支付接口,挂了重刷一下页面不就完了。
从日期选择器的三十行到错误处理的八十行,每一处它都在帮你做减法。而且是那种你看完会拍大腿的减法。原来这玩意儿根本不用写。
说到数据,我一开始也怕它是营销话术。但作者把 benchmark 全公开了。五个日常任务,三个模型各跑十轮,取中位数,跟没装插件的裸 AI 对比。而且对照组不是裸跑,还拉了另一个同类插件 caveman 一起测。

代码量最多砍掉九成四。花的钱省一半还多,速度快三到六倍,而且全部通过正确性检测。
对比组里还拉了一个叫 caveman 的同类插件。caveman 也是教 AI 少写代码的,思路差不多,但激进程度不如 ponytail。benchmark 里 caveman 的代码缩减率大概在百分之六十上下,ponytail 直接干到九成四。有意思的是两个都通过了正确性检测,说明砍得狠不等于砍得错。ponytail 只是更懒,不是更莽。
代码少了,token 就少,钱和时间跟着一起降。你让 AI 跑一个任务花的钱和花的秒数,基本上跟它输出的代码量成正比。砍九成代码,就是砍九成的 token 消耗。这笔账太直白了。
三. 会不会偷懒偷过头
少写代码听着爽,但我第一反应是发怵。
万一它图省事,把该做的安全校验、该处理的边界情况也一起砍了呢。那不是帮忙,是埋雷。
作者显然想过这事。ponytail 的原话是懒,但不马虎。安全、数据校验、无障碍这几样,一行都不许砍。它砍的只是那些为了显得专业而堆上去的废代码。
光听作者说不够,我自己试了。故意让它写一个用户登录接口,看它敢不敢把密码哈希砍掉,敢不敢把 SQL 参数化查询省了。
没有。一行安全代码都没动。
它砍掉的是什么呢?用户名长度校验写了三种不同的错误提示(6到20个字符、太短了请输入至少6位、用户名不符合要求),全换成一句话。密码强度检测的正则拆成了四个独立函数,合成一个。这些都是面子活。
更细的是,每一处走了捷径的地方,它都会留一句注释,标清楚以后想加回来该往哪改。不是偷偷删了跑掉,是告诉你「我先简化了,理由如下,想恢复的话改这里」。
这个分寸感,是我愿意把它留在工作流里的真正原因。它知道安全和简洁的边界在哪,它砍的是脂肪不是骨头。
写在最后
门槛低到没什么好讲的。下面这段提示词,长按复制,丢给你的 AI 编码工具(Claude Code、Codex、Cursor、Copilot 都行),它读完自己就会装、自己就会用。你不需要懂任何命令行。
长按下方灰色区域 → 全选 → 复制
## 任务:安装 ponytail 插件
### 什么是 ponytail
一个让你写代码前先问「这行需要存在吗」的插件。装完后你写的每一行代码都会先过一遍 YAGNI 六级阶梯,能用标准库的不装依赖,能一行解决的不写十行。
### 安装方式
GitHub 仓库:https://github.com/DietrichGebert/ponytail
如果你是 Claude Code,执行这两条:
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
如果你是 Cursor / Codex / Copilot 或其他工具,去上面的 GitHub 仓库看对应的安装方式,README 里写了 13 个工具的装法。
### 装完验证
装好后随便给我一个简单需求(比如「写一个日期选择器」),看我是不是会先问「这需要存在吗」再动手。如果是,说明 ponytail 已经生效了。

装完它就一直在后台盯着,你照常提需求,它照常先过一遍那六级阶梯。我自己用下来,最舒服的是那些一次性的小脚本和原型。以前 AI 动不动给我搭一套架子,现在干净多了。
要是你做的是那种逻辑极其复杂、每一行都得自己捏在手里的核心系统,那它的劲儿可能用不上,按需开关就行。想试的先收藏这篇,下次配环境的时候翻出来,一句命令的事。
用了几天我脑子里冒出来的其实不是技术问题,是一句老话。
写得多从来不等于写得好。
多出来的每一行,都是以后要读、要测、要维护、要排查的负担。资深工程师值钱,恰恰不在于他能写多少,而在于他知道什么不该写。
AI 时代,写代码这件事本身越来越不值钱了,按一下回车要多少有多少。真正值钱的,是判断什么东西压根不该存在的那个脑子。
ponytail 有意思的地方就在这。它没让 AI 变得更能写,反而让它学会了闭嘴。
下次你让 AI 做个日期选择器,它要是又开始给你装库、写组件、聊时区,你大概会想起来。
这事儿,一行就够了。
说说你被 AI 写过最离谱的一段废代码呗。是三十行的日期选择器,还是一百行的 Hello World?评论区比比谁的 AI 更能「卷」。
以上,觉得有用的话,点个「在看」让更多人看到,顺手赞、转发三连,想第一时间收到推送给我个星标~
谢谢你看我的文章,我们,下次再见。
/ 作者:AI实战派Leo
夜雨聆风