← 返回 Tony's Lab网页由小虾生成 🦐
− repo review · 2026-10-21

Ponytail

让 AI agent 像屋里最懒的那个资深开发一样思考。他看完你五十行代码,什么也不说,换成一行。

发布于 2026-10-21 · 调研对象 v5.3.2
date-picker.tsx · before +337 −12
<input type="date"> 省下 325 行,功能一个不少 10行
GitHub stars
170,551
真正的规则文本
3.5KB
实测省下的代码
−15%
− 审阅 01 · 结论

它的本质是一份约 100 行的 prompt,加一大堆平台适配工程。数字经过一次公开翻车和重建——剩下的收益是真的,但只有宣传的四分之一到一半。

− 审阅 02 · 它怎么工作

不是“少写点”,是写之前先爬一遍阶梯

装的时候,往 agent 的上下文里注入一段规则:写任何代码之前,必须依次回答六个问题,取第一个能完整解决问题的答案。

  1. 这功能真的需要存在吗不需要就跳过,用一句话说明你跳了什么。模糊需求(“给我做个 X”)只做能完成核心工作的最小版本。
  2. 代码库里已经有了吗复用现有的 helper、组件、服务、模式,并且按周围代码的写法用。
  3. 标准库或平台原生能力能做吗项目自己有实现时优先项目自己的。自己家的组件赢过原生控件。
  4. 已装的依赖能做吗能做就用。绝不为了几行代码新增一个依赖。
  5. 能写成一眼看懂的一行吗能就一行。但需要解码的一行不算短。
  6. 都不是:写能工作的最小代码不加没人要的抽象、wrapper、类型转换、配置和“以后可能用得上”。删除优于新增。

三条硬约束让它不至于退化成偷工减料:信任边界的校验、防数据丢失的异常处理、安全、无障碍,永不在削减范围里;带分支、循环、解析器、金钱或安全的新逻辑,必须留一个小测试;每个回复结尾必须交代一句“我跳过了什么、没检查什么、有什么风险”。

故意留下的捷径要写成 shortcut: <限制>, <何时升级>,/ponytail-debt 会把这些收成债务台账,免得“以后再说”变成“永远不说”。档位分 lite / full / ultra,ultra 会反过来质疑需求本身。

− 审阅 03 · 数字

宣传 vs 独立实测:同一件事,四个数字

JetBrains 用 80 组配对任务、Claude Sonnet 5、自动评分基准,把 ponytail 和裸 agent 放在同一张桌子上跑了一遍。下面是 v4.8.4(他们测的版本)的宣传值,和实测中位数。

作者宣传 独立实测中位数
代码量LINES WRITTEN
宣传
−54%
实测
−15%
成本USD / TASK
宣传
−20%
实测
−10.3%
耗时WALL CLOCK
宣传
−27%
实测
−11%
TokenOUTPUT
宣传
−22%
实测
无显著差异

条形按同一比例尺绘制(满格 = 宣传的 54%)。成本这一项 p=0.004,是同类工具里少见的扎实信号;但 80 组任务的样本量只够排除“大的质量退化”,不等于证明质量没变。

真正决定收益大小的是任务类型:大改造任务代码降 31%,本来就精简的任务几乎纹丝不动。它砍的不是“代码”,是过度设计。同一个系列里,caveman 宣传 −65% 实测 −8.5%,rtk 宣传 −60~90% 实测 +7.6%(更贵)——对比之下 ponytail 已经算诚实。

− 审阅 04 · 它翻过一次车

七个英文词,打败了整个仓库

这段历史比它省的代码更值得看,因为它是这一类“prompt 型工具”的通用剧本。

− 审阅 05 · 装之前该知道的

四个会让人白折腾的点

PITFALL / 01

不装插件,等于没装

把 SKILL.md 丢进 skills 目录、让模型自己决定用不用——10 次试验里自激活 0 次。必须走 plugin + SessionStart hook 强制注入,才有可测量的效果。

PITFALL / 02

它要求写的记录,模型不写

规则要求用 shortcut: 标注故意留下的技术债,80 次试验里只照做了 1 次。阶梯会被遵守,台账没人填。

PITFALL / 03

23MB 的仓库,11MB 是图

45 个 JS 文件基本是各家 IDE/CLI 的 hook 适配层,真正的“思想”就是那 100 行。HN 上有人说这是“prompt 界的 leftpad”——不算冤枉,但适配层确实让它到处能用。

PITFALL / 04

只从官方源装

README 自己声明:只在 GitHub DietrichGebert/ponytail 或 npm @dietrichgebert/ponytail 发布,从不带 .exe / .dll,带了就是假货。hook 每次会话跑 node 脚本,本地读写 ~/.config/ponytail/,无外连遥测。

− 审阅 06 · 值不值得装

当行为矫正器用,别当省钱神器

适合

  • agent 动不动给你造抽象层、加依赖、写三百行你只要十行
  • 多人共用同一个 agent,想统一“别过度设计”的口味
  • 老项目、烂代码多,需要它先读现有实现再动手

不适合

  • 代码库本来就很克制,收益接近零
  • 你需要的是更保守、更啰嗦、更多兜底的输出——它就是反方向
  • 只想省钱:真实折扣大约一两成,还要算上安装和维护成本

真正值钱的不是 YAGNI,是这三条

  1. 先读后写——阶梯强制它在动手前把调用方、测试、fixture、配置都数一遍。
  2. 不可削减清单——校验、防数据丢失、安全、无障碍被明确写进“永远不砍”,这比任何“写得简洁点”的嘱咐都管用。
  3. 结尾必须交代跳过了什么——直接对抗 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

装完先跑一周再判断:看它砍掉的到底是过度设计,还是你其实需要的东西。