夜雨聆风学习资料网

ARTICLE · 1326788

AI改代码总爱“加戏”?这个开源插件,专门治它的手欠

AI改代码总爱“加戏”?这个开源插件,专门治它的手欠

用 AI 写代码,最怕它“手欠”。

明明只是让它加个日期筛选,结果它自己新搓了一套控件,顺手 npm 装了个新库,甚至还把你旁边跑得好好的老代码给重构了。功能确实能跑起来,但留下一堆需要重新看懂、后期维护的债。

最近看到的开源项目 Ponytail,就是冲着这个问题来的:逼着 AI 动手写代码前,先翻翻项目里有没有现成的。

它本质上是一套开源的编程规则(Prompt)加配套插件,直接挂载到你现有的 AI 编程工具里用。平时经常拿 AI 维护老项目、改存量代码的朋友,可以重点看看。

核心逻辑:先找现成的,实在没有再写

Ponytail 给 AI 立了个死规矩,严格按优先级办事:

  1. 先确认需求,翻项目里的现有实现;
  2. 能用系统或浏览器原生能力解决的,别急着引第三方库;
  3. 现有依赖能凑合用的,绝不另起炉灶。

拿最常见的日期输入框来说,如果项目里本来就有基础输入组件,浏览器原生也支持日期选择,那就先把这两者接起来用。只有现成方案确实顶不住了,才允许写新代码。

当然,像复杂的排期表、多日期跨度选择或者重度自定义交互,该上专门的组件库还是得上。Ponytail 的目的不是为了省代码而阉割功能,而是少造重复的轮子——像表单校验、异常处理、单元测试这些该有的底线,一点不能少。

拿个小页面实测一下

光看规则不够直观,我专门拉了个小页面做对照测试。

这是一个现成的订单列表页,里面已经写好了客户搜索、基础输入组件和金额汇总,塞了 6 笔测试订单。需求给得很明确:加一个起止日期筛选,支持只填单边日期,要能和原有的客户搜索联动;如果结束日期早于开始日期得报错提示,点重置能恢复全部订单。

同一份代码底座、同一个模型配置,分两组各跑一次:一组裸跑(不加规则),另一组加载 Ponytail v5.3.3 的核心规则。为了单看规则本身对代码生成的约束效果,这次我只加载了核心规则,没挂载它的完整插件和统计面板。

注:上图是我整理的两组运行数据对比,非插件自带界面;业务代码行数已剔除测试文件。

先说结论:功能两边都交差了,9 项浏览器自动化检查全部通过。 而且两边都比较克制,复用了原有的输入组件,没有乱装新依赖。

真正的差距在改动范围上:

  • 新增业务代码直接从 110 行压到了 60 行,砍掉近一半。
  • 不加规则的那组改动了 4 个文件;加了 Ponytail 规则的只动了 3 个文件,原有的基础输入组件连一行都没碰。

Ponytail 表现出了极强的“少动老代码”的倾向。

实际跑出来的效果:筛选 11 月 2 日至 3 日,过滤出 3 笔测试订单,合计 970 元。

Token 消耗方面,两组总计分别是 8279 和 8509,挂规则几乎没有带来额外的上下文负担。当然,这只是一个小体量页面的单次测试,放到复杂工程里能省多少代码,还得看项目的具体底座。

怎么装到自己的工具里?

如果你主力用 Claude Code,按作者目前的文档,直接在终端里先后发这两条命令就能装好:

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

装好之后,建议先切到轻量模式探探路:

/ponytail lite 

Ponytail 分了几个档位:lite 模式比较温和,会先给出改动更小的方案让你挑;默认的 full 模式会严格按规则直接执行;而最激进的 ultra 模式甚至会反过来质疑你——“你提的这个需求真的有必要做吗?”

刚上手的时候,我建议从 lite 开始。还没摸清它的脾气前,别让它管太宽,免得影响干活节奏。

如果你用的是 Qoder、CodeBuddy 这类工具,仓库里也给了对应的配置说明(这部分我这次没逐个装一遍,大家按需对着文档配就行)。需要注意两点:完整插件的 hooks 依赖本地 Node 环境;不同 IDE 工具对斜杠命令和面板的支持程度也有些出入。

如果你跟老刘一样,不想装一堆插件依赖,只想白嫖它的核心规则,其实有个更简单的办法:

直接去仓库里把 skills/ponytail/SKILL.md 这个文件扒下来,塞进你正在用的 AI 编程工具的规则配置里(比如 .cursorrules、Claude 的项目说明或系统的 Custom Instructions)。如果项目里本来就有团队规范,记得合并进去,别直接把老规矩覆盖了。这种方式虽然没有完整插件的统计面板和模式切换,但核心的“防手欠”约束是完全生效的。

配好之后,直接拿手头项目里的一个小需求试试水——比如给现有表格加个筛选框,看看它是不是老老实实先找现有组件、不乱加依赖。

老刘的使用建议

如果你平时主要是让 AI 从零写点独立小脚本、一次性工具,那其实用不上这么多条条框框,让它自由发挥反而更快。

但只要你是在已有的项目工程里修修补补,最头疼的一定是 AI 破坏原有的代码风格,为了一个小功能在项目里留下两套半死不活的同类实现。这种场景下,Ponytail 的思路非常对路。

不过话也说回来,它归根结底只是一套给模型的“紧箍咒”,没法替你做最终的 Code Review;如果你自己项目的架构规范本来就写得极其清晰、组件边界很死,也没必要再叠床架屋套一层规则。

这个项目采用 MIT 协议开源,插件本身免费,日常消耗的还是你自己的模型订阅或 API 额度。

项目地址:https://github.com/DietrichGebert/ponytail

安装说明:https://github.com/DietrichGebert/ponytail/blob/main/INSTALL.md

关注「玩AI的老刘」,一起把 AI 用到实处。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料