我给 Claude Code 装了 Ponytail,代码量直接砍了一半

上周要加个日期选择器,我的 prompt 就一句:"加个日期输入框"。 Claude Code 一顿操作:装了 flatpickr,写了个 wrapper 组件,附带一份样式文件,最后还贴心地问我要不要支持时区切换。我盯着那四十多行代码愣了一会儿------我想要的明明就是 <input type="date">,浏览器原生就支持。 这毛病后来我见得越来越多。让它加个颜色选择器,一百多行;让它加个缓存层,上来就写个 CacheManager 类。AI Agent 天然带着一种"向上取整"的冲动:能写类就不写函数,能抽接口就不写实现,能加依赖就不查标准库。 偶尔刷到了 Ponytail,GitHub 上 12 万星,就装了试试。

不是工具,是个"人格注入"

Ponytail 的 README 开头写了个人设:长马尾,椭圆框眼镜,在公司待得比版本控制系统还久的资深工程师。你给他看五十行代码,他什么都不说,换成一行。 我看到这儿第一反应是"又一个噱头"。但它跟我之前试过的那些 prompt 技巧不一样------不是简单跟 Agent 说"尽量简短",而是设计了一套决策流程,让 Agent 在动手前先判断"这活到底要不要干"。

markdown 复制代码
1. 这个功能真的需要存在吗?→ 不需要就跳过(YAGNI)
2. 代码库里已经有了吗?→ 复用,别重写
3. 标准库能搞定吗?→ 用标准库
4. 平台原生支持吗?→ 用原生
5. 已安装的依赖能解决吗?→ 用它,别加新的
6. 一行代码能搞定吗?→ 一行
7. 以上都不行:→ 写最小的、能跑的代码

这个阶梯是在 Agent 理解问题之后、写代码之前跑的。而且有个关键:安全相关的代码(校验、错误处理、无障碍)永远不在"可简化"范围内。我之前试过直接给 prompt 加"写短点",代码确实短了,但边界检查也没了。

装上去的效果

安装两条命令:

bash 复制代码
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail

装完多了几个斜杠命令。/ponytail lite|full|ultra|off 控制强度,/ponytail-review 审查当前 diff 的过度工程。 默认 full 模式,我直接切到 ultra,然后给它同样的需求:加个颜色选择器。 没装 Ponytail 的时候,它装 pickr 包、写 React 组件、处理 onChange 回调、加预览色块,一百多行。 装了之后,它停了大概三秒,然后:

scss 复制代码
// ponytail: native input covers this
<input type="color" value={color} onChange={e => setColor(e.target.value)} />

二十三行变一行。它甚至加了个 ponytail: 注释说明为什么这么写。 不过 ultra 模式确实激进。有次我让它重构一个表单模块,它直接砍了三分之一的代码。结果跑测试挂了------它把一段自定义校验逻辑也当"过度工程"跳过了,用的浏览器原生 required 属性。但那块业务要求的是异步校验用户名是否重复,原生根本干不了。

后来又发现几个坑。写原型或者 demo 的时候,ultra 模式会一直质疑需求------"这个功能真的需要吗""你确定不做成配置化的吗"。探索阶段本来就需要快速出东西,让它这么一搞反而慢。 还有个问题:Ponytail 依赖 Agent 能理解阶梯逻辑。我试过一次用 Haiku,判断就明显粗糙,有时候该跳的没跳,有时候跳过的是不该跳的。Sonnet 和 Opus 上表现稳定。

翻了翻它的测试数据

后来我翻了翻它项目页面上的基准测试,在 FastAPI + React 的真实仓库上跑的,12 个功能任务,装前装后对比:

指标 变化
代码行数 -54%
Token 消耗 -22%
成本 -20%
耗时 -27%
安全性 100% 保留

有个细节挺有意思:在极端场景(日期选择器、颜色选择器这种 Agent 容易过度设计的)能砍到 94%,但本身就是最小实现的代码上几乎不动。这说明阶梯逻辑确实在做判断,不是无脑删。 还有个设计我觉得挺聪明------当它跳过某个实现时,会在代码里留个 // ponytail: xxx 注释。后来我跑了 /ponytail-review,它把这些标记汇总成一份"延迟清单",可以定期看看哪些被跳过的地方确实不需要。

一周用下来的感受

我的使用场景主要是个中等规模的 React 项目,大概三万多行代码。说说体感。

好的地方:Agent 不再动不动就装新包了。以前让它加个功能,经常顺手带个新依赖;现在它会先看看代码库里有没有现成的,或者标准库能不能搞定。光这一点,我的 node_modules 就清净了不少。 成本也确实在降。我之前用 Opus,一天下来账单经常十几块;现在同样工作量大概八九块。模型还是那个模型,只是它生成的代码少了,token 自然就省了。

跨 Agent 倒是方便。规则文件在 AGENTS.md 里,Cursor、Windsurf、Cline 都能用,把对应的 rules 文件拷到项目里就行。我们团队有几个人用 Cursor,我把 .cursor/rules/ponytail.md 丢到项目根目录,他们打开就生效了。 用了一周,最大的变化不是代码量变少,是我自己写代码时也开始下意识问"这个真的需要吗"。这习惯是 Ponytail 传染给我的,虽然它有时候确实烦人。 想试试的话,GitHub 上搜 Ponytail 就行:github.com/DietrichGeb...

相关推荐
小虎AI生活12 小时前
WorkBuddy 自动化工作流实测:从分镜脚本到 MP4 成片的 18 步复盘
aigc·ai编程
段一凡-华北理工大学12 小时前
工业智能体:从Codex/Claude到项目实战~系列文章05:从“AI助手“到“工业智能体“:能力跃迁与落地范式
人工智能·python·claude·codex·工业智能体·高炉炼铁智能化
ZhengEnCi14 小时前
GUI Agent 打转死循环怎么解决:四个「防打转失效」根因与完整修复方案
agent
大大大大晴天15 小时前
ReAct Agent 从原理到实现:让大模型学会思考、行动与观察
大数据·agent
ZhengEnCi17 小时前
Agent 评测体系是什么:从三层评测到十一个维度的完整评估框架
agent
kennywu41117 小时前
AI 说“4 个测试全部通过”,其实它一个都没跑
ai编程
金銀銅鐵18 小时前
JDK 21 中 List.of 的实现细节:从 List12 到 ListN
java·后端·ai编程
狼爷19 小时前
别再只刷MMLU了:真正的AI能力评测,早已从“做题”走向“干活” —— 深度解读 Artificial Analysis 智能指数 v5.0 方法论
ai编程
武子康20 小时前
语音聊了十分钟,为什么不能拿转写分钟算费用?
人工智能·深度学习·agent
明月_清风21 小时前
Meta 开源了一个 AI Native 组件库:Astryx,150+ React 组件,专为 AI Agent 而设计
前端·人工智能·ai编程