一个 GitHub 上的开源 Skill,专门治 AI 编程的"过度建设"病。装进 Claude Code 之后,代码量实测降 54%,成本降 20%,而且一分安全性都不打折。
你肯定见过这个场景:让 AI 加个日期选择功能,它先装 flatpickr,再写一层封装组件,加一个样式表,顺手还跟你讨论起时区问题。忙活半天,几百行代码进去了。
装了 Ponytail 之后,同一个需求,输出是这样:
<!-- ponytail: browser has one --> <input type="date">一行。浏览器自己就有日期选择器。
这就是 Ponytail 干的事:它是给 AI 编程 Agent 装的一个"工程纪律" Skill,目前在 GitHub 拿了 10.4 万星,MIT 协议,作者 Dietrich Gebert。项目的口号很有画面感——"他不说话。他写一行。它能跑。"

同一个需求:404 行 vs 23 行
它治什么病
AI 写代码有个通病:过度建设。你问一句,它给你一座小城。仓库里凭空多出的配置文件、防御性检查、抽象层,大部分这辈子不会被走到。
Ponytail 的思路不是让 AI 闭嘴少说(那是另一个项目 caveman 干的事),而是让 AI 少建不该建的东西。两个可以叠加用,互不冲突。

Ponytail 项目全景:数据与卖点
实测数据,以及一段诚实的修正

四种方案实测对照
作者做了个挺较真的 benchmark:让无头 Claude Code 在真实开源仓库(FastAPI + React 全栈模板)上做 12 个功能任务,同一 Agent 分别裸跑、装 caveman、装"YAGNI 一行流"提示词、装 ponytail,各跑 4 次,拿 git diff 打分。
结果(Haiku 4.5):
三个细节值得说:
ponytail 是 唯一一个所有指标全部下降的方案,而且安全性保持 100%——裸写"给我写一行流"的提示词会丢安全检查,ponytail 不会 砍得最狠的场景:日期选择器 404 行 → 23 行,颜色选择器 287 行 → 23 行,都是因为直接用了原生 <input>对本来就精简的代码,几乎不砍——它不是无脑删
还有个插曲。项目早期宣传"省 80-94% 代码",后来有人开 issue 指出那个基线里混进了 AI 啰嗦的废话,数据虚高。作者重新做了上面这套对照实验,把 README 改成了平均值 54%,94% 只在过度建设严重的场景出现。这种被质疑后认账重测的做派,反而让我更信它的数据。
核心机制:七级懒惰阶梯

七级懒惰阶梯与安全底线
Ponytail 的规则集,本质是让 Agent 在写代码前停下来,从上往下问:
1. 这东西需要存在吗? → 不需要,跳过(YAGNI) 2. 代码库里已经有了吗? → 复用,别重写 3. 标准库能干吗? → 用标准库 4. 平台原生功能支持吗? → 用原生 5. 已装的依赖里有吗? → 用现有依赖 6. 一行能搞定吗? → 就一行 7. 以上都不行,才写"能跑的最少代码"注意两点。
第一,这个阶梯是在 Agent 读懂问题之后才跑的,不是代替理解——它会先读改动涉及的代码、追踪真实调用链,再选哪一级。用作者的原话说:"对方案懒惰,对读码永远不懒。"
第二,有些东西永远不上砍刀:信任边界的输入校验、防数据丢失的处理、安全逻辑、无障碍支持。代码最后是小的,因为必要,不是被硬塞小的。
安装教程
官方宣称适配 20 个 Agent。挑几个主流的:
Claude Code(注意要分两条消息发):
/plugin marketplace add DietrichGebert/ponytail/plugin install ponytail@ponytailCodex:
codex plugin marketplace add DietrichGebert/ponytail codex plugin add ponytail@ponytail装完运行 codex,打开 /hooks 审核并信任它的两个生命周期钩子,开个新线程生效。
GitHub Copilot CLI:
copilot plugin marketplace add DietrichGebert/ponytail copilot plugin install ponytail@ponytailGemini CLI:
gemini extensions install https://github.com/DietrichGebert/ponytailOpenClaw(没错,就是我家用的这套):
clawhub install ponytailCursor、Windsurf、Cline、Aider、Zed 这类没有插件体系的,直接复制仓库里对应的规则文件(如 .cursor/rules/)进项目就行。
一个前置条件:Claude Code 和 Codex 插件跑两个 Node.js 生命周期钩子,PATH 里得有 node。没有的话 skill 照样能用,只是不会每个会话自动激活。
使用示例

安装与命令速查
装好后每个会话自动生效,不用你操心。真要用命令微调,有六个:
三档强度的官方吐槽很到位:/ponytail ultra 是"当这个代码库对你个人造成过伤害时用的"。
一个真实的工作流
开发中途想看看 AI 最近有没有瞎建东西:
你:/ponytail-reviewAgent 扫当前 diff,返回类似这样的清单:哪个抽象类只有一个实现、哪段防御代码对应的输入不可能为空、哪个配置项从来没人读。你确认,它删。每条删减都给理由,不是闷头清理。
不想让它管某些子 Agent(比如只读搜索型),设 PONYTAIL_SUBAGENT_MATCHER 环境变量按类型过滤。默认档位用 PONYTAIL_DEFAULT_MODE 环境变量设,默认 full,不需要任何配置文件。
常见疑问
真需要那个 120 行的缓存类怎么办? README 的回答:你不需要。但你要是坚持,他会建——慢慢地,正确地,一边看着你。
能跟 caveman 一起用吗? 能,而且建议一起用:caveman 管 AI 说的废话,ponytail 管 AI 建的废件,互补不打架。
写在最后
Ponytail 的 FAQ 里有一问:"它能扩展吗?"答:"你没写的代码扩展性无限。零 bug,零 CVE,上线至今 100% 可用。"
玩笑归玩笑,背后的判断是认真的:AI 编程眼下最大的浪费不是写错,而是写得太多。Token 花了,review 负担重了,维护面宽了,全是隐性成本。一个把"最小必要"制度化成阶梯、还死守安全底线的 Skill,10 万星不冤。
Claude Code 用户两条命令的事,装一个试试。
项目地址:
https://github.com/DietrichGebert/ponytail
夜雨聆风