Ponytail
让 AI agent 像屋里最懒的那个资深开发一样思考。他看完你五十行代码,什么也不说,换成一行。
它的本质是一份约 100 行的 prompt,加一大堆平台适配工程。数字经过一次公开翻车和重建——剩下的收益是真的,但只有宣传的四分之一到一半。
不是“少写点”,是写之前先爬一遍阶梯
装的时候,往 agent 的上下文里注入一段规则:写任何代码之前,必须依次回答六个问题,取第一个能完整解决问题的答案。
- 这功能真的需要存在吗不需要就跳过,用一句话说明你跳了什么。模糊需求(“给我做个 X”)只做能完成核心工作的最小版本。
- 代码库里已经有了吗复用现有的 helper、组件、服务、模式,并且按周围代码的写法用。
- 标准库或平台原生能力能做吗项目自己有实现时优先项目自己的。自己家的组件赢过原生控件。
- 已装的依赖能做吗能做就用。绝不为了几行代码新增一个依赖。
- 能写成一眼看懂的一行吗能就一行。但需要解码的一行不算短。
- 都不是:写能工作的最小代码不加没人要的抽象、wrapper、类型转换、配置和“以后可能用得上”。删除优于新增。
三条硬约束让它不至于退化成偷工减料:信任边界的校验、防数据丢失的异常处理、安全、无障碍,永不在削减范围里;带分支、循环、解析器、金钱或安全的新逻辑,必须留一个小测试;每个回复结尾必须交代一句“我跳过了什么、没检查什么、有什么风险”。
故意留下的捷径要写成 shortcut: <限制>, <何时升级>,/ponytail-debt 会把这些收成债务台账,免得“以后再说”变成“永远不说”。档位分 lite / full / ultra,ultra 会反过来质疑需求本身。
宣传 vs 独立实测:同一件事,四个数字
JetBrains 用 80 组配对任务、Claude Sonnet 5、自动评分基准,把 ponytail 和裸 agent 放在同一张桌子上跑了一遍。下面是 v4.8.4(他们测的版本)的宣传值,和实测中位数。
条形按同一比例尺绘制(满格 = 宣传的 54%)。成本这一项 p=0.004,是同类工具里少见的扎实信号;但 80 组任务的样本量只够排除“大的质量退化”,不等于证明质量没变。
真正决定收益大小的是任务类型:大改造任务代码降 31%,本来就精简的任务几乎纹丝不动。它砍的不是“代码”,是过度设计。同一个系列里,caveman 宣传 −65% 实测 −8.5%,rtk 宣传 −60~90% 实测 +7.6%(更贵)——对比之下 ponytail 已经算诚实。
七个英文词,打败了整个仓库
这段历史比它省的代码更值得看,因为它是这一类“prompt 型工具”的通用剧本。
-
2026-06-12发布,原始 benchmark 声称代码减少 80~94%四个月冲到十七万星,是这个夏天增长最快的仓库之一。
-
2026-07Scott Logic 的 CTO 把仓库拆开看6,232 行的仓库里,真正有内容的是约 100 行 markdown,在复述 1990 年代的 YAGNI 原则;其余是各家插件系统的样板。
-
同一周杀手实验:换成七个词,分数更高“Follow YAGNI principles, and one-liner solutions”——在原 benchmark 上直接打赢了整个 ponytail。原因是原对照组 agent 太啰嗦,把基线数据灌了水。
-
2026-08作者推倒重做 benchmark,公开认错换成真实 FastAPI + React 仓库里的 headless 会话,按 git diff 计分;承认“94% 是单任务上限被当成平均数报了”,还自己披露了 harness 里的污染 bug(对照组也被偷偷注入了规则)。现在仓库带行为测试框架和可复现路径。
-
2026-10v5 重新报数:−53% 代码 / −26% 成本同时补上“98% 高风险逻辑带测试”(不装只有 68%)这类过程指标,而不是只报省钱。
四个会让人白折腾的点
不装插件,等于没装
把 SKILL.md 丢进 skills 目录、让模型自己决定用不用——10 次试验里自激活 0 次。必须走 plugin + SessionStart hook 强制注入,才有可测量的效果。
它要求写的记录,模型不写
规则要求用 shortcut: 标注故意留下的技术债,80 次试验里只照做了 1 次。阶梯会被遵守,台账没人填。
23MB 的仓库,11MB 是图
45 个 JS 文件基本是各家 IDE/CLI 的 hook 适配层,真正的“思想”就是那 100 行。HN 上有人说这是“prompt 界的 leftpad”——不算冤枉,但适配层确实让它到处能用。
只从官方源装
README 自己声明:只在 GitHub DietrichGebert/ponytail 或 npm @dietrichgebert/ponytail 发布,从不带 .exe / .dll,带了就是假货。hook 每次会话跑 node 脚本,本地读写 ~/.config/ponytail/,无外连遥测。
当行为矫正器用,别当省钱神器
适合
- agent 动不动给你造抽象层、加依赖、写三百行你只要十行
- 多人共用同一个 agent,想统一“别过度设计”的口味
- 老项目、烂代码多,需要它先读现有实现再动手
不适合
- 代码库本来就很克制,收益接近零
- 你需要的是更保守、更啰嗦、更多兜底的输出——它就是反方向
- 只想省钱:真实折扣大约一两成,还要算上安装和维护成本
真正值钱的不是 YAGNI,是这三条
- 先读后写——阶梯强制它在动手前把调用方、测试、fixture、配置都数一遍。
- 不可削减清单——校验、防数据丢失、安全、无障碍被明确写进“永远不砍”,这比任何“写得简洁点”的嘱咐都管用。
- 结尾必须交代跳过了什么——直接对抗 agent 最坏的习惯:假装什么都做完了。
Claude Code / Codex 两条命令
# Claude Code /plugin marketplace add DietrichGebert/ponytail /plugin install ponytail@ponytail # Codex:装完打开 /hooks,信任它的两个生命周期钩子,再开新会话 codex plugin marketplace add DietrichGebert/ponytail codex plugin add ponytail@ponytail # 其它宿主(Cursor / Copilot / Gemini / OpenCode…): # 把 AGENTS.md(32 行精简版)拷进项目, # 或让 agent 把 skills/ponytail/SKILL.md 装成 skill
装完先跑一周再判断:看它砍掉的到底是过度设计,还是你其实需要的东西。