Skip to content

Latest commit

 

History

History
208 lines (146 loc) · 13 KB

File metadata and controls

208 lines (146 loc) · 13 KB

Ponytail,偷懒的资深开发者

Ponytail

他一言不发。他写一行。它能跑。

DietrichGebert%2Fponytail | Trendshift

Stars Release npm Works with 20 agents MIT license

DietrichGebert/ponytail | Trendshift DietrichGebert/ponytail | Trendshift DietrichGebert%2Fponytail | Trendshift monthly ranking

Ponytail 5,从头重建:代码 -53%,时间 -41%,成本 -26%,token -45%。即便如此,98% 的高风险逻辑交付时都带着测试,没有 Ponytail 时是 68%。

Ponytail 5:从头重建。
代码 -53% · 时间 -41% · 成本 -26% · token -45%
即便如此:98% 的高风险逻辑交付时都带着测试。没有 Ponytail:68%。
在 Claude Code 中测得,同一个智能体分别在启用和不启用该 skill 时运行:39 个任务,其中包括一个真实的 FastAPI + React 仓库,Opus 5.5,每个任务运行 5 次。详情。

English · Español · 한국어 · 简体中文 · 日本語
本文译自英文 README。如有出入,以英文版为准。


新东西即将到来,加入等候名单

已用 Ponytail 构建

Retriever

你认识他。长马尾。椭圆眼镜。他在公司待的时间比版本控制系统还长。你给他看五十行代码;他看了看,一言不发,把它们换成了一行。

Ponytail 把他放进你的 AI 智能体里。

数据

相对于无 skill 基线的比例。代码行数:Ponytail v4.13 为 52%,Ponytail 5 为 47%。输出 token:57% 和 55%。成本:84% 和 74%。时间:62% 和 59%。

代码少了一半,却更好:98% 的高风险逻辑交付时带着测试(无 skill 时 68%);智能体自己写的测试能抓到 66% 的注入 bug(无 skill 时 46%)。

图表里没有体现的两点:在盲测对比中,Ponytail 5 的回复以 110 比 67 胜过上一版 Ponytail。另外,在 6 个安全任务上(SQL 注入、路径穿越、伪造 token、限流、格式错误的 CSV 行、缓存),它全部 30 次运行都通过了:代码更少,安全一点不少。方法、逐任务表格和局限性:benchmarks/results/2026-10-07-agentic.md。

**规则从来不是"token 最少"。**规则是:只写任务需要的东西,永远不砍校验、错误处理、安全和无障碍访问。代码最后变小,是因为只留下了必要的部分,而不是被硬压缩出来的。成本和延迟的降低只是副作用。

之前 / 之后

给前端加一个日期选择器。没有 skill:335 行,手写了一个日历和一个日期选择器。Ponytail 5:一个 10 行的文件,复用仓库里的 Input 并设置 type date,日历由浏览器提供。

你要一个日期选择器。没有 Ponytail,智能体会安装一个日期选择器库,或者干脆手写一整个日历:335 行。Ponytail 5 会先看看已经有什么:仓库里有一个 Input 组件,而每个浏览器都自带日期选择器。它把这两样组合起来。10 行。

更多幸存的例子见 examples/。

审查,从头重建

审查,从头重建。基准测试中一条真实的 /ponytail-review 发现:这次改动重命名了一个字段,结果一个没被改动的文件 src/routes/feed.js 现在会崩溃。必须修复:Atom feed 现在每次请求都会崩溃,并写明这是什么、问题在哪、怎么修、不修会怎样。预先埋入的问题 100% 被找到,无 skill 时 87%。diff 之外的问题 100% 被找到,无 skill 时 78%。

/ponytail-review 以前只找可以删掉的代码。现在它像出了故障会被叫醒的资深开发者那样审查:它会读你的改动涉及的代码,而不只是 diff,并检查 bug、安全、真实负载、缺失的测试、速度,以及可以删掉的东西。每条发现都写清这段代码做什么、哪里出错、怎么修、不修会怎样。

审计,从头重建

整个仓库,按优先级排好。先修这个。基准测试中在一个仓储库存项目上真实运行的 /ponytail-audit:1 必须修复,数量写成 1,200 的办公室批次会完全失败;2 必须修复,导入时会悄悄跳过有问题的行;3 必须修复,办公室批次里打错的 SKU 会被悄悄忽略;4 应该修复,高风险的代码路径没有测试;5 锦上添花,请求体不是对象时 API 会崩溃。结论:先修 1。

/ponytail-audit 对整个仓库做同样的检查。它先摸清代码的全貌:入口在哪、数据怎么流动、项目预计要承受多大负载。然后给发现的问题排好优先级,告诉你先修哪个。旧版审计只会列出可以删掉的东西。

工作原理

在写代码之前,停在第一个成立的台阶上:1 这东西需要存在吗,2 代码库里已经有了吗,3 标准库能做吗,4 平台原生功能,5 已安装的依赖,6 一行能搞定吗,7 只有到这一步才写能跑的最少代码,如果有逻辑,再加一个小测试。

这个阶梯在理解问题之后才运行,而不是代替理解:它会先读改动涉及的代码,追踪真实的执行流程,再选择台阶。对方案偷懒,对阅读从不偷懒。

偷懒,但不失职:信任边界上的输入校验、防止数据丢失的处理、安全和无障碍访问,永远不会被砍掉。

带分支、循环、解析器,或涉及金钱、安全的逻辑,会留下一个小测试。每条回复结尾都会写明跳过了什么、没检查什么,以及你应该知道的风险。

提示词

Ponytail 就是一段提示词:skills/ponytail/SKILL.md。给读取规则文件的智能体用的精简版是 AGENTS.md。仓库里的其他东西都只是为了把这段提示词装进不同的智能体。

安装

Claude Code,分成两条提示:

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

Codex:

codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail

然后在 Codex 里打开 /hooks,信任它的两个生命周期 hook,再开一个新线程。

其他任何智能体:把 AGENTS.md 复制到你的项目里,或者让你的智能体把 skills/ponytail/SKILL.md 安装为 skill。Copilot、Cursor、OpenCode、Gemini 等的分步安装说明(英文):INSTALL.md。

就这些。他会很满意。但他不会说出来。

每个会话都会启用,另外有几个命令(见命令)。/ponytail ultra 是为代码库把你个人惹毛了的时候准备的。启动和切换模式时会显示当前模式。

只从 GitHub 上的 DietrichGebert/ponytail 或 npm 上的 @dietrichgebert/ponytail 安装 ponytail。它从不包含 .exe 或 .dll 文件;包含这些文件的副本不是我的。

命令

命令 作用
/ponytail [lite | full | ultra | off] 设置强度或关闭。不带参数时:如果已关闭,就以默认级别打开;否则显示当前级别。
/ponytail-review 像出了故障会被叫醒的资深开发者那样审查当前 diff:bug、安全、真实负载、没有测试的高风险代码、慢的地方,以及可以删掉的东西。每条发现都写清这段代码做什么、哪里出错、怎么修、不修会怎样。用普通的话指定目标来缩小或扩大范围:uncommitted、staged、branch,或一个 PR 链接。
/ponytail-audit 对整个仓库做同样的检查,最重要的排在前面。
/ponytail-debt 把你推迟处理的 shortcut: 捷径收集成一份清单,免得"以后再说"变成"永远不做"。
/ponytail-gain 以计分板形式显示基准测试测得的效果(更少代码、更低成本、更快速度)。
/ponytail-help 上述命令的速查表。

命令需要支持 skill 的宿主(Claude Code、Codex、Devin CLI、OpenCode、Gemini、pi、Hermes Agent、Qoder、Grok Build)。在 Codex CLI 和 IDE 扩展中,它们是插件命名空间下的 skill,用 $ponytail:ponytail-review 调用。使用 hooks 的 Cursor 只支持 /ponytail 级别切换,以普通消息输入。只有指令的适配器(Cursor 的规则文件、Windsurf、Cline、Copilot、Kiro、Antigravity)会加载始终生效的规则,但没有这些命令。

常见问题

需要配置文件吗? 不需要。可选的 ~/.config/ponytail/config.json 或环境变量 PONYTAIL_DEFAULT_MODE 可以设置默认级别,但什么都不是必需的。

为什么它会写 shortcut: 注释? 它标记一个有意的捷径以及何时该回头处理,/ponytail-debt 会把它们收集成一份清单。想换个词,或者完全不要?在项目的 CLAUDE.md 或 AGENTS.md 里写明,然后运行 /ponytail-debt <你的词>。

如果我真的需要那个 120 行的缓存类呢? 你不需要。非要的话,他也会写。慢慢地。正确地。一边看着你。

它能扩展吗? 你从没写过的代码可以无限扩展。零 bug,零 CVE,开天辟地以来 100% 在线。

为什么叫 "ponytail"? 你心里很清楚为什么。

赞助商

GreenPT

许可证

MIT。能用的最短许可证。

Star 历史

Star History Chart