ponytail 是给 AI coding agent 的一个行为补丁。它不加能力,不接工具,不跑模型。它只装进去一条规则:写代码之前,先停在第一个已经能解决问题的选项上,然后写能跑的最少代码。它的吉祥物是那个资深开发,看你那五十行,什么都不说,换成一行。

它针对的问题

放任不管,coding agent 会过度构建。你要一个日期选择器,它装一个库、写包装组件、加样式表、再讨论起时区。原生的 <input type="date"> 就在那儿。这正是 ponytail 围着打的失效模式:agent 优化的是”看起来周全”,不是”最小的正确改动”,代价以 token、延迟,以及你以后要维护的代码落到你头上。

这个项目 2026 年 6 月中旬出现,几乎立刻爬上 GitHub trending,创建几天内就过了一万一千星(截至 2026-06)。这个尖峰说明过度设计的问题被广泛感受到,不说明这个解法已经被证明。它的年龄要照此看待。

它怎么工作

整套机制就是 agent 在生成代码前跑的一个短决策梯子:

1. 这东西需要存在吗?     → 不:跳过(YAGNI)
2. 标准库能做吗?         → 用它
3. 平台原生特性覆盖吗?   → 用它
4. 已装的依赖能解决吗?   → 用它
5. 一行能搞定吗?         → 一行
6. 实在不行:写能跑的最小代码

有意思的设计是那道豁口。ponytail 懒,但不失职。信任边界上的输入校验、防数据丢失的错误处理、安全、无障碍,这几样明确永远不上砧板。当它确实走了一条有已知天花板的捷径,比如一把全局锁或者一次 O(n²) 扫描,它会留一条 ponytail: 注释,写明这个天花板和升级路径,让被推迟的工作可见,而不是悄悄丢掉。

你实际装进去的是什么

在支持 skill 的宿主上,装的是一个插件:一份每轮注入的常驻规则集、一组 skills、两个很小的 Node.js 生命周期 hook、几个斜杠命令。命令是 README 埋得比较深、但值得知道的部分:

  • /ponytail [lite | full | ultra | off] 设强度。ultra 是最克制的模式;off 不卸载就停用。
  • /ponytail-review 扫当前 diff 里的过度设计,回给你一份待删清单。
  • /ponytail-audit 把同一遍扫过整个仓库,不只是 diff。
  • /ponytail-debt 把推迟掉的那些 ponytail: 捷径收进一本账,让”以后”别悄悄变成”永远不”。

这本欠债账对安全论证很关键:一个鼓励走捷径的 skill,需要一个办法追踪这些捷径,这就是它。

安装

读你宿主那一行。插件形态(hook 加模式开关加命令)在 Claude Code、Codex、GitHub Copilot CLI、Pi 框架、OpenCode 和 Gemini CLI 上都能用。Claude Code 和 Codex 的 hook 需要 node 在 PATH 上。

Claude Code:

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

GitHub Copilot CLI:

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

Pi agent harness:

pi install git:github.com/DietrichGebert/ponytail

Gemini CLI:

gemini extensions install https://github.com/DietrichGebert/ponytail

Codex 用 codex plugin marketplace add DietrichGebert/ponytail 添加 marketplace,再到 /hooks 里信任它的两个生命周期 hook。不跑 skill 的编辑器(Cursor、Windsurf、Cline、Kiro、Antigravity、Aider、VS Code 的 Codex 扩展)走纯指令路径:把仓库里对应的规则文件复制过去,比如 .cursor/rules/.windsurf/rules/.clinerules/,或者随仓发的 AGENTS.md。这条路保留常驻规则集,但放弃命令、hook 和模式开关。docs/agent-portability.md 里有哪份文件喂哪个 agent 的对照表。

这份基准,诚实地读

ponytail 自带一份基准,这一点比这个品类里大多数 skill 做得多。五个日常任务(邮箱校验器、防抖、CSV 求和、倒计时、限流器),跑在三个模型上(Haiku、Sonnet、Opus),三组对照:无 skill、caveman skill、ponytail。每格十次取中位数。头条数字:在每个模型上,比无 skill 基线少写 80% 到 94% 代码、便宜 47% 到 77%、快三到六倍。你可以用 npx promptfoo eval -c benchmarks/promptfooconfig.yaml 复现。

诚实的保留。这些是作者自己的数,五个核心任务按设计就很小,所以这些夸张的比值反映的是无约束 agent 膨胀得最厉害的情况。仓库里 benchmarks/results/ 下有生产级的写作记录,那才是更有用的一读。这里真正的强项是可复现:harness 是公开的,所以这个声称是可核查的,不是空口断言。

适合与不适合

agent 反射性地加依赖、加抽象时,token 成本或评审负担成了痛点时,或者你要维护它的产出、希望它更少时,用 ponytail。模式开关有用:新项目跑 lite,正在缩减的代码库跑 ultra

需求经常写不全时要当心。一个 YAGNI 优先的 agent 可能把”我以后也许要缓存”读成”别做缓存”,缓解办法是 ponytail: 注释加那本欠债账,而不是这个风险不存在。评审还是要做。这个 skill 偏向更少的代码,碰到你确实需要长版本的任务,你得说出来。那几道豁口护住正确性和安全,但护不住一个你没明说的需求。

它怎么比

ponytail 落在 agent 行为类 skill 这个新品类里。star 数截至 2026-06。

仓库Stars语言切入点
ponytail~11.7kJavaScriptYAGNI 梯子、多宿主插件、公开基准
caveman~73kJavaScript极简 skill,ponytail 的直接基准对手
taste-skill~44kShell阻止通用货色,瞄的是质量不是行数
agent-skills~60kShell宽口径的生产工程 skill 集

这张表装着 README 留白的最有用语境:ponytail 是这里的新人。它登顶了一周的 trending,而它拿来做基准的 caveman,总 star 是它的好几倍。trending 排名衡量的是这一周的注意力,star 总数衡量的是谁经过时间被信任。

star 曲线

曲线是 2026 年 6 月一条几乎垂直的发射,之前没有历史,这是一个 skill 爆红的样子,不是稳步采用的样子。等有了第二个月可比,曲线才会告诉你更多。

相关仓库

FAQ

ponytail 的基准真实可复现吗? 是。harness 在 benchmarks/ 里,通过 npx promptfoo eval 跑,报的是三个模型每个用例十次的中位数。数字是作者自己的,所以自己复现,别把头条比值当作独立结果。

ponytail 能配 Cursor 和 Windsurf 吗? 能,但是纯指令模式。你把规则文件(.cursor/rules/.windsurf/rules/)复制进项目,保留常驻规则集,但没有斜杠命令、hook 和模式开关。完整插件功能需要支持 skill 的宿主,比如 Claude Code、Codex、OpenCode、Gemini CLI 或 Pi。

它会不会把我真正需要的代码跳掉? 会,如果你没把需求说出来。ponytail 偏向最小可行解,把没要求的抽象当作范围外。它按设计护住校验、防数据丢失、安全和无障碍,也用 ponytail: 注释加 /ponytail-debt 账本标记捷径,但它不会读心。硬需求要明说。

它和 caveman、taste-skill 有什么不同? 三个都是 agent 行为 skill。caveman 是 ponytail 的直接基准对照,同样追求极简;taste-skill 瞄的是通用、无聊的产出,不是行数。ponytail 的区分点是那道显式的 YAGNI 梯子、lite/full/ultra/off 几个模式、横跨 13 个 agent 的多宿主可移植性,以及一份公开可复现的基准。

它免费吗? 免费,MIT 许可。它跑在你已经付费的 agent 里,自己不加任何服务。