这个 Claude Code 插件竟能少写 94% 的代码 (ponytail)

BBetter Stack
Computing/SoftwareSmall Business/StartupsManagement

Transcript

00:00:00你一定认识他。留着长马尾,戴着椭圆眼镜,在公司待的时间比版本控制系统还要久。
00:00:06你给他看 50 行代码,他看了一眼,什么也没说,然后把它们简化成了一行。
00:00:11这就是这款名为 Ponytail 的新库的史诗级描述,我想这大概挺
00:00:17让人产生共鸣的。我们都认识那种完美符合这一描述的 10 倍速开发者。但 Ponytail
00:00:23实际上是一个非常酷的工具。它能让你的 AI 编码助手像房间里最懒的资深开发一样思考
00:00:29。而且这其实是句恭维话。所以在这期视频中,我们将深入了解 Ponytail,
00:00:35看看它是如何工作的,并做一些有趣的演示,看看这家伙是不是真有两把刷子。
00:00:41这会很有趣,让我们开始吧。
00:00:48Ponytail 的使命很简单:保持一切超级简洁,消除 AI 助手通常会产生的冗余,
00:00:55并试图找出它所能找到的最精简的问题解决方案。
00:01:00它有点类似于 Caveman,那个让 AI 编码助手少说话、
00:01:06从而节省 Token 的库,James 也曾为此做过精彩的视频。所以背后的
00:01:12核心理念是践行 YAGNI 原则,即 “你根本不需要它”。这实际上是
00:01:1890 年代的软件工程理念。其核心思想是:除非真正需要,否则不要去构建它。
00:01:25不要添加抽象层,不要安装库,不要写类。
00:01:31如果问题不用这些也能解决,那就直接解决它。Ponytail 将这一原则直接
00:01:37融入到了你的助手中,给它制定了一个在编写任何内容前必须爬过的决策阶梯。这东西有必要存在吗?
00:01:43标准库能处理吗?有原生的平台功能吗?是否
00:01:50已经安装了可以实现此功能的依赖项?能写成一行代码吗?只有当所有这些问题的
00:01:57答案都是“否”时,它才会编写新代码。即便如此,它也会将其限制在完成工作所需的最低限度。
00:02:05如果看看他们的示例,特别是模态对话框示例,我们就能清楚地看到
00:02:11这种方法论。普通的助手在被要求为删除确认添加模态对话框时,
00:02:18会立刻去安装像 React Dialog 这样的 Radix UI 库,并给你加上
00:02:25依赖项、传送门、遮罩层、根节点、触发器、内容包装器,仅仅是为了显示一个带有两个按钮的框。
00:02:34但 Ponytail 看到这一点会说,嘿,浏览器已经有了 dialog 元素。它会自动锁定
00:02:41焦点。并且它在按下 Esc 键时关闭,用单个 CSS 选择器渲染背景,
00:02:49而且自 2022 年起在所有主流浏览器中都受支持。所以,与其使用 NPM 包中的 30 行代码,
00:02:58你只需八行代码且零依赖。而这个小小的 Ponytail 注释就在这里
00:03:04告诉你它跳过了什么以及为什么这样做。所以,如果你哪天真的决定把它升级到
00:03:11Radix 版本或其他更花哨的版本,你就会知道去哪里修改以及它当初被延后处理的原因。
00:03:16所以它很懒,但并非不负责任。通过拥抱这种懒惰,Ponytail 声称能够
00:03:22将你的成本降低 47% 到 77%。他们实际上提供了支持这一主张的基准测试。让我们
00:03:29先看看它们。这里有三种方法:无技能、使用 Caveman、以及使用 Ponytail。
00:03:36还有三种模型和五项日常任务。每个单元运行十次,并取中位数。而且
00:03:43至关重要的是,他们还检查了正确性。一个代码行数极少但出错的单行代码会在正确性上失败。
00:03:50所以它不仅仅是少写代码,它还得真正起作用。还有一个值得注意的
00:03:56告诫。成本反映的是每次都重新发送技能的单次调用。换句话说,
00:04:03基准测试的工作方式是为每个测试发送一个新的 API 调用。而每次这样做时,它都包括了
00:04:10提示词中完整的 Ponytail 规则集。所以在基准测试中,Ponytail 在每个测试中都因为其自身的指令成本而受到了惩罚。
00:04:16在现实生活中,你大约每个会话只为这些指令支付一次费用。
00:04:22之后它们会被缓存。这意味着 47% 到 77% 更便宜的数字实际上
00:04:29是保守估计。在跨越多个提示词的实际工作会话中,成本优势会更大,
00:04:36因为技能注入成本会被摊销到整个对话中。话虽如此,有一个
00:04:42值得一提的合法批评。Colin Eberhardt 最近发表的一篇博文指出,
00:04:48如果你用三个简单的词(遵循 YAGNI 原则)来替代 Ponytail,其结果
00:04:55几乎完全匹配 Ponytail 的基准测试得分。而在扩展到七个词时(遵循 YAGNI
00:05:03原则和单行解决方案),它实际上超过了基准测试得分。那么 Ponytail 是魔法,还是只是一个精心包装的
00:05:11提示词?老实说,这是一个公平的问题。但我认为包装本身就是产品。你会得到
00:05:18通过命令、审计工具和顶部的深度账本自动跨不同代理注入的正确规则。此外,
00:05:25Ponytail 还有其他很酷的功能。在系统提示词中“遵循 YAGNI”并不能给你
00:05:31Ponytail 的审计功能或 Ponytail 的审查功能。但现在让我们用一个简单的例子测试一下。
00:05:37在这里我打开了两个 Cloud Code 实例,在其中一个实例上,我将仅为本地范围安装 Ponytail 插件。
00:05:44而另一个将是一个简单的默认 Cloud Code 实例,没有
00:05:49激活任何插件。我将给它们同样的提示词:构建一个可以检测用户
00:05:56位置并显示当前天气状况以及其他一些功能的天气仪表板应用程序。我将在两个实例上运行相同的
00:06:02提示词,唯一的区别是,在 Ponytail 的实例上,我还将要求
00:06:08它使用 Ponytail 技能,因为有时它不会自动识别它。所以片刻之后,
00:06:12我们看到 Ponytail 版本已经在不到一分钟内完成了任务,而
00:06:18默认版本仍在运行中。而且我们看到它构建内容的非常简洁的概览,以及 Ponytail
00:06:25为了最大效率而选择放弃的操作。正如我们在这里看到的,它选择了将所有内容放在一个 HTML 文件中。
00:06:34与此同时,在默认窗口中,任务在两分三十秒内完成。我们已经可以看出这个
00:06:41版本更加臃肿。我们有三个单独的文件,这个版本是使用 Python 服务器运行的。
00:06:48虽然这绝不是一个糟糕的结果,但它比第一个版本过度设计了许多。
00:06:54但让我们实际看看它们是如何运作的。首先,这是没有 Ponytail 的版本。
00:07:00虽然应用程序看起来不错,UI 很漂亮,API 也按预期检索了信息,
00:07:07但我非常失望的是,它没有像我要求的那样自动检测我的位置。
00:07:12相反,它向我显示了伦敦作为默认的首选结果。但现在如果我们切换到 Ponytail 版本,
00:07:19在这里我们可以清楚地看到,打开它后,它会请求获取我的当前位置,然后输出匹配该位置的天气
00:07:25信息。所以,虽然 UI 可能没那么花哨,应用程序也可能更简陋,
00:07:33但它比默认版本更精确地遵循了指令,老实说这很令人惊讶。
00:07:39最后,让我们看看使用情况。在这里我们可以看到,确实,使用 Ponytail 的版本
00:07:45最终比默认版本便宜了 50%。而且它产生的代码行数也少得多。
00:07:52正如我们刚才看到的,它在功能上也比默认版本更好。
00:07:58所以这证明了 Ponytail 确实按预期工作,并且它确实产生了更精简的代码。
00:08:04由于这次测试非常成功,我决定做一些更有趣的事情。
00:08:09如果我将 Caveman 和 Ponytail 结合起来以实现最大效率会怎样?那会给我们带来什么?
00:08:17所以这次我在一个新的目录中激活了这两个插件,并再次运行了相同的提示词。
00:08:22再一次,任务在不到一分钟内完成,输出也相当类似。
00:08:28我拥有了所有相同的功能。所以它按预期工作了。
00:08:32但如果我们观察输出,它与 Ponytail 版本并没有太大区别,而 Caveman
00:08:37加 Ponytail 的组合最终比独立的 Ponytail 版本甚至稍微更昂贵一些。
00:08:44所以这表明结合使用它们并不能带来任何重大的改进。
00:08:49所以你可以坚持只使用 Caveman,或者更好的是选择使用 Ponytail。
00:08:54如果我们相信他们的基准测试,认为它确实比 Caveman 更好。
00:08:58好了,朋友们。这就是 Ponytail 的简单介绍。
00:09:02我真诚地对 Claude 通过 Ponytail 技能产生的高质量输出印象深刻,
00:09:07同时减少了臃肿并保持了质量。
00:09:13我想这恰恰证明了我们许多编码解决方案可能都是过度设计的,
00:09:19如果使用得当,有时候少即是多。
00:09:23所以我肯定会保留 Ponytail 作为我 Claude Code 设置中的一个插件,
00:09:29并可能在未来的项目中使用它。
00:09:31但你对 Ponytail 有什么看法?你尝试过吗?
00:09:34你会使用它吗?在下方的评论区告诉我们。
00:09:37朋友们,如果你喜欢这类技术解析,
00:09:40请通过猛击视频下方的点赞按钮告诉我们。
00:09:44也别忘了订阅我们的频道。
00:09:47我是来自 BetterStack 的 Andrus,我们在下一期视频再见。

Key Takeaway

Ponytail 通过强制 AI 遵循 YAGNI 软件工程准则,能在维持或提升功能正确性的前提下,实现最高 77% 的代码冗余消除与成本节约。

Highlights

  • Ponytail 通过遵循 YAGNI 原则,能将 AI 编码助手的生成成本降低 47% 到 77%。

  • 该工具强制 AI 在编写新代码前,优先通过标准库、原生功能或现有依赖项解决问题。

  • 在实际测试中,使用 Ponytail 的 Claude Code 在不到一分钟内完成了任务,且代码更精简、功能更符合指令。

  • Ponytail 并不只是简单的提示词,它还包含自动审计功能、命令工具和跨代理的指令注入机制。

  • 结合 Caveman 与 Ponytail 使用并未带来显著的性能提升,且增加了额外的成本。

Timeline

Ponytail 的核心理念与运作逻辑

  • Ponytail 的目标是消除 AI 产生的冗余代码,并寻求最精简的解决方案。
  • 该工具严格践行 90 年代的 YAGNI(你根本不需要它)原则。
  • AI 助手在编写代码前需通过预设的决策阶梯,仅在无法利用原生功能或现有依赖时才编写新代码。

Ponytail 类似于开发者群体中那种极其精简、不写多余代码的资深工程师。它为 AI 助手制定了一套严格的筛选逻辑:询问问题是否确实存在、标准库或原生功能是否足以处理、是否有现有依赖项。只有在所有选项都无法满足需求时,才会编写最少限度的必要代码。

实证分析:性能对比与成本效益

  • 在模态对话框示例中,Ponytail 使用浏览器原生 dialog 元素替代了外部 UI 库,代码量从 30 行减少至 8 行。
  • 基准测试显示 Ponytail 可降低 47% 到 77% 的 API 调用成本。
  • 虽然有人质疑其仅是经过包装的提示词,但其集成的审计功能和自动注入规则构成了其核心价值。

通过对模态对话框的改造,Ponytail 移除了对外部组件库的依赖,体现了其在保持功能完备的同时降低复杂度的能力。虽然测试成本包含了指令注入费用,但在实际长会话中,由于指令被缓存,成本优势会进一步扩大。即便将核心理念归结为 YAGNI,其自动化审计功能仍提供了超出简单提示词的工具价值。

实际测试对比与效果评估

  • Ponytail 版本在天气仪表板任务中不仅运行速度更快,且成功实现了自动地理位置检测。
  • 默认 Claude Code 版本生成了臃肿的三个文件结构,且未完全遵循位置检测指令。
  • Caveman 与 Ponytail 组合使用并未显著改进结果,甚至导致成本小幅增加。

实战演示对比了使用 Ponytail 和默认 Claude Code 的效果。Ponytail 实例仅用一个 HTML 文件完成了任务,且比未插件化的版本更精确地响应了用户需求。测试最终确认,通过减少过度设计的架构,Ponytail 在功能表现和资源消耗上均表现出明显优势。

Community Posts

View all posts