技术1 阅读

最好的代码是没写的那行:聊聊开源插件 ponytail

现在大家都在用 AI 写代码,但一个很现实的问题是:AI 写得太多了

同样一个小需求,一不小心就变成几十上百行,各种抽象、各种封装,评审和维护成本反而被抬高了。

有没有可能,让 AI 像那个“公司里最懒但最稳的老前辈”一样,只写刚刚够用的最小实现?

ponytail 就是为此而生的一个开源规则集(skill/plugin)。它的 Slogan 非常简单粗暴:

He says nothing. He writes one line. It works.

你给 50 行,它看一眼,默默删到 1 行,还能跑通。

ponytail 是什么?

用一句话总结:ponytail 把一个“极度懒惰的资深工程师”塞进了你的 AI 代码助手里。

它不是一个新的大模型,也不是一套框架,而是一组可以装进各类 AI coding agent 的「规则 + 技能」:

在官方基准测试里,开启 ponytail 后,AI 在常见任务上的表现大概是这样:

而安全、边界检查、可访问性这些东西,是明确禁止“抠门”的,不会为了偷懒牺牲关键防线。

一个经典例子:日期选择器

ponytail README 里举了一个非常典型的例子——“我要一个日期选择器”。

默认情况下,很多 AI 的做法是:

而有了 ponytail 之后,它会先走一遍“懒惰阶梯”(下面一节会讲),然后得出一个极简解法:

html
<!-- ponytail: browser has one -->
<input type="date">

就这一行。

如果你未来真的需要换成自定义组件,这个 ponytail: 注释也帮你标好了升级路径。

它是怎么让 AI 变“懒”的?

ponytail 的核心是一座 6 级“决策阶梯”,在 AI 写下任何一行代码之前,都必须按顺序自问自答:

text
1. 这东西真的需要存在吗?→ 不需要:直接跳过(YAGNI)
2. 标准库已经提供了吗?→ 有:用它
3. 语言 / 平台有原生特性吗?→ 有:用它
4. 项目里已经安装的依赖能解决吗?→ 能:用它
5. 能用一行解决吗?→ 能:写一行
6. 以上都不行 → 写一份“刚好能用”的最小实现

只要在某一层找到了够用的方案,就停止往下走,不再继续造轮子

这背后其实是把我们平时嘴上经常说的几条工程原则(YAGNI、KISS、优先用标准库)写成了硬规则,并且“注入”到 AI 的系统提示和插件逻辑里。

值得注意的是: 像信任边界校验、数据丢失风险、安全性、可访问性这些事项,pony tail 明确标记为永远不能偷懒的区域,不会为了少几行代码把它们砍掉。

实际效果:更少的代码,更快的反馈

在作者给出的基准实验里,他们用三个不同模型(Haiku、Sonnet、Opus),做了五类日常任务(邮箱校验、防抖、CSV 求和、倒计时计时器、限流器),对比了三种模式:

结论是:ponytail 在所有模型上都稳定实现了 80–94% 的代码行数削减,同时加快生成速度并降低成本,而且任务依然通过相同的安全与并发测试。

更重要的是,它不是简单“少写点”,而是尽可能保留:

对有代码洁癖的开发者来说,这更像是一个“自动帮你删冗余”的搭档,而不是一个只会胡乱删代码的 minifier。

支持哪些 AI 工具?怎么用?

目前 ponytail 已经适配了不少主流 AI coding agent 和工具链,你大概率在用的几个都能直接装:

典型的安装方式非常“懒”,比如在 Claude Code 里只需要两步(在命令输入框里执行):

text
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail

Copilot CLI 里也有类似的 marketplace 命令;而像 Cursor / Windsurf 这类,则是把仓库里的规则文件拷贝到对应位置即可。

安装完成后,你可以通过命令调整“懒惰等级”:

另外还有几个很实用的命令:

如果你想全局打开某个默认模式,也可以通过环境变量或配置文件设置 PONYTAIL_DEFAULT_MODE,例如设为 fullultra

适合谁?一些实践建议

从 ponytail 的设计来看,它特别适合下面几类场景:

结合我自己的经验,比较推荐的使用方式是:

如果你也在用 Claude Code、Cursor 之类的 AI IDE,不妨装上 ponytail 在一个真实项目里跑一周,你会非常直观地感受到:AI 不啰嗦了,代码也瘦身了。

SHARE

分享

分享这篇文章。