今天 GitHub Trending 上,DietrichGebert/ponytail 的页面写着今日新增 1,007 星。同一时刻按 GitHub API 读回来:168,827★、9,175 个 fork,主语言 JavaScript,许可 MIT,建仓 2026 年 6 月 12 日,最近一次推送就在几小时前。仓库里 41 个未关 issue。
四个月冲到 16.8 万星,靠的不是新模型,也不是新框架。它只有一句话的野心:让 AI 编码助手闭嘴,少写代码。
一句话定位:它卖的不是工具,是一段插进会话的纪律
读完仓库你会发现,它跟常见的“Agent 平台”完全不是一类东西。
- 主体是一份 3,496 字节的提示词。仓库根目录的
skills/ponytail/SKILL.md就是全部规则,README 自己写着“Ponytail is one prompt”。其余几万个字节全是把它塞进不同宿主的适配层:hooks、插件清单、安装脚本、测试。 - npm 包很轻:
@dietrichgebert/ponytail最新 5.3.2,46 个文件、解包 278,669 字节,零运行时依赖。没有常驻进程,不代理你的 API 请求,不碰密钥。 - 它约束的是“怎么写”,不是“能不能做”。装上以后每次会话开头,宿主会往上下文里注入一份规则集。我们实测这一份是 3,846 字节(full 档),差不多一千字英文。
- 为什么这个月又冲上来:5.3 系列在 10 月 16 日一天连发三版——5.3.0、5.3.1、5.3.2 的发布时间戳分别是 UTC 07:52、13:40、23:15。新增的是 Claude Code 提示框上方那条成本带、一个本地统计面板,以及把历史会话导入面板的功能。
说白了,它把“团队里那个扎马尾、戴椭圆眼镜、工龄比版本控制还长的资深工程师”做成了一段可复制的行为约束:你说五十行,他看一眼,不说话,换成一行。
核心一:六级阶梯,先问“这东西要不要存在”
规则的主体是六条按顺序取第一个能成立的做法,官方叫它 ladder。它要求 Agent 先读代码、先摸清改动会波及哪些调用方和测试,再动笔;阶梯用在“选方案”这一步,不是用来跳读代码的。
| 顺序 | 判据 | 具体做法 |
|---|---|---|
| 1 | 这东西需要存在吗 | 没人要的功能、选项、扩展性直接跳过,并用一行说明跳了什么 |
| 2 | 代码库里已经有了吗 | 有就按周围代码的用法复用,别另起一套 |
| 3 | 标准库或平台原生功能能做吗 | 能用就用;但项目自己有组件时,家门口的组件优先于浏览器原生控件 |
| 4 | 已经装好的依赖能做吗 | 能做就用,绝不为了几行代码新增依赖 |
| 5 | 能不能一行写完 | 一行,且读者一眼能看懂;需要解码的一行不算短 |
| 6 | 以上都不成立 | 才写能跑通的最小代码 |
配套的几条硬约束比阶梯更值得抄进你自己的规则文件。
- 懒的是方案,不是改动本身。改动波及的调用方、测试、fixture 必须一起改完,“最小”不等于“只改一半”。
- 四样东西永不砍:信任边界的校验、防数据丢失的错误处理、安全、无障碍。README 里专门写了一句话回应误解:“规则从来不是‘token 最少’。”
- 有分支、循环、解析器、钱或安全的逻辑,必须留一条小测试或 assert 自检;琐碎改动不用。留下的捷径要写成
shortcut: <限制>, <什么时候该升级>注释,后面用/ponytail-debt收账。 - 每条回复结尾必须用一两行交代:跳过了什么、没检查什么、有什么风险。
最后这条看着小,其实是整篇最锋利的设计。大多数 Agent 的通病不是写错,是写完不说自己没看什么,让人误以为全都验过了。
核心二:三个档位共用一套规则,不是三套提示词
/ponytail lite|full|ultra|off 切换强度,默认 full。很多人会以为三档是三份不同的规则,我们把三份注入内容都抓下来做了 diff:
| 档位 | 注入字节 | 与 full 的差异 |
|---|---|---|
| lite | 3,901 | 仅状态行和档位表格里那一行 |
| full | 3,846 | 基准 |
| ultra | 3,917 | 仅状态行和档位表格里那一行 |
三份输出的差别总共两行:一行是“PONYTAIL MODE ACTIVE — level: xxx”,另一行是档位表里描述当前档的那句。换句话说,ultra 不会给你更严的规则,它只多授权一件事:动手之前先反问需求里哪些部分站不住;lite 则是照做,只在末尾提一句更小的方案让你选。
这个发现对使用方式有直接影响:如果你期待“开 ultra 就自动更省代码”,会失望;它的收益在完整规则里,档位只决定语气和是否允许反驳需求。
核心三:八个命令里,真正有分量的是 review 和 audit
| 命令 | 做什么 | 限制 |
|---|---|---|
/ponytail [lite|full|ultra|off] | 换档,不带参数则报告当前档位 | 支持技能的宿主才有 |
/ponytail band [on|off] | 在 Claude Code 提示框上方显示成本、token、agent 时间、复用率、测试是否通过 | 需要 Claude Code 2.1.290 以上;VS Code 聊天面板、云端会话和 claude -p 里不显示 |
/ponytail band import | 把历史 Claude Code 会话导入本地面板,带花费与用时 | 只读一次,数据留在本机 |
/ponytail-review | 按“半夜会被叫起来修的那位资深工程师”的方式评审:读改动波及的代码,不只看 diff | 可指定 uncommitted、staged、branch 或 PR 链接 |
/ponytail-audit | 同一套检查跑整个仓库,按“先修哪个”排序 | 大仓库耗时长 |
/ponytail-debt | 把散落的 shortcut: 注释收成一张欠账清单 | 依赖注释格式 |
/ponytail-gain | 显示基准成绩单 | 是作者自己的测量结果 |
/ponytail-help | 命令速查 | — |
/ponytail-review 的产出格式值得单独说:每条发现必须写清四件事——这段代码在干什么、哪里会坏、怎么修、不修会怎样。README 里那张评审实测卡片写着:植入的问题 100% 找到(不装技能 87%),diff 之外的问题 100% 找到(不装技能 78%)。
官方数字:砍掉一半代码,但有三项它自己没赢
仓库里那份 2026-10-07 的实测报告写得比多数商业白皮书老实:Opus 5.5、默认推理强度、Claude Code CLI 2.1.288、39 个任务、每个任务每个分组跑 5 次,共 585 次会话;三组轮换执行,给出 95% 自助法区间;为了只测“写出什么”,所有分组都关了 Bash。
| 对比“不装技能” | Ponytail 旧版 v4.13 | Ponytail 5 |
|---|---|---|
| 代码行数 | -48% | -53% [-63..-41] |
| 代码信息量(gzip) | -34% | -41% |
| 输出 token | -43% | -45% |
| 成本 | -16% | -26% [-36..-16] |
| 耗时 | -38% | -41% |
| 轮数 | -21% | -22% |
| 更便宜的任务数 | 25 / 38 | 30 / 38 |
单次会话均价从 $0.200 降到 $0.142。真正需要逻辑的任务里,该留测试的比例从 68% 升到 98%;用它的测试去撞人为注入的小 bug,命中率从 46% 升到 66%。
然后是它没赢的部分,这些同样写在报告里。
- 盲评回复质量,它输给了“不装技能”:82 比 106(p=0.09),不显著,但方向是不装更好。回复平均短 30%,评委的原话是短回复常常省掉了交代。
- 正确性只是持平,不是提升:带隐藏检查的 18 个任务上,通过率 96.7% 对 95.6%,差一个用例。少写代码没有换来更安全,也没换来更不安全。
- 不需要测试的地方它更容易多写测试:45% 对 36%。规则写着“琐碎改动不用测”,执行时仍有近一半冒出来。
- 隐私类任务三组全趴:把一封邮件发给多个订阅者又不暴露彼此地址,每组 5 次里只有 2 次通过。
- 样本是一个模型、一个宿主:39 个任务、Opus 5.5、Claude Code CLI,Bash 关闭。它证明的是这个组合下的写作行为,不能外推成“任何模型都省 26% 的钱”。
怎么装起来:17 种宿主,深浅差得远
安装文档逐个列了 17 个一级章节,README 徽章写的是“works with 20 agents”,差的几个(CodeBuddy、Kilo Code、Qwen Code)挂在别的宿主章节里。常用几条:
| 宿主 | 命令 | 额外动作 |
|---|---|---|
| Claude Code | /plugin marketplace add DietrichGebert/ponytail 再 /plugin install ponytail@ponytail | 必须分两次发送,合会不会生效 |
| Codex | codex plugin marketplace add … 再 codex plugin add ponytail@ponytail | 打开 /hooks 信任两个钩子,再开新线程 |
| Hermes Agent | hermes plugins install DietrichGebert/ponytail --enable | 若报插件清单 schema 不支持,手工 clone 到 ~/.hermes/plugins/ponytail 再 hermes plugins enable ponytail,然后重启 |
| OpenCode | opencode plugin add @dietrichgebert/ponytail | 也自动读 AGENTS.md |
| Gemini CLI | gemini extensions install https://github.com/DietrichGebert/ponytail | 档位不跨会话保持 |
| Cursor | node ponytail/scripts/cursor-hooks.js install | 子代理注入不进去,云端会话不触发;规则文件与钩子二选一 |
| 其它 | 把 AGENTS.md 拷进项目,或让 Agent 把 SKILL.md 装成技能 | 只有常驻规则,没有命令 |
国内读者要提前知道三件事。
- Node 必须在 PATH 里,而且要在非交互 shell 的 PATH 里(nvm、Nix 用户最常踩)。缺了不会坏,但每次钩子调用都会打印一行
node: command not found。 - 模型额度得自己有。ponytail 不含任何模型,Claude Code、Codex、Cursor 的订阅或 API 额度用你自己的;它省的是你的额度,不是替你付。
- 作者在 README 里专门写了供应链警告:只从 GitHub 仓库或 npm 包安装,这个项目从不发布
.exe、.dll,出现这类文件就不是他的。提示词类项目的仿冒成本极低,这条不是客套。
我们实际跑了一下
把仓库 clone 到临时目录(23MB),做三件事。
- 跑它自己的测试:
node --test tests/*.test.js,144 条里 143 过、1 红。红的那条是“pandas 求和的正确写法应该判通过”,原因是这台机器没装 pandas,不是规则本身错了——顺手也说明它的自测确实会真跑代码。 - 抓注入内容:模拟会话启动钩子,full 档输出 3,846 字节,首行是
PONYTAIL MODE ACTIVE — level: full,后面就是那份阶梯规则。 - 验档位差异:lite、full、ultra 三份输出做 diff,只有状态行和档位表格那一行不同;发
/ponytail ultra过去,钩子返回PONYTAIL MODE CHANGED — level: ultra并写进模式标记文件。
跑完已把目录、伪造的配置目录和标记文件删干净,没有留下任何进程。这次验证的是安装包和钩子这一层,不构成对它省多少成本的独立复核——成本数字仍然只有作者那份 585 次会话的报告。
我的判断:谁该上,谁再等等,谁别碰
这三类人值得今天就装。
- 长期让 Agent 写业务代码、按 token 付费的人。单次会话从 $0.200 到 $0.142 是 29% 的绝对降幅,一天几十次会话就是真金白银;而且省下来的主要不是 token,是你要读的 diff。
- 被“335 行手搓日期选择器”坑过的人。报告里有现成对照:同一个需求,不装技能交付 335 行,装上之后 10 行复用仓库已有的 Input。这类“重复造轮子”的浪费,靠人盯 review 很难根治。
- 团队里 review 靠自觉的人。
/ponytail-review强制每条发现写清四件事,比“这段代码有点问题”有用得多。
这三类可以先等等。
- 主要在 Cursor 里用子代理、或跑云端会话的人:注入到不了子代理,规则等于半失效。
- 代码库很小、或者你本来就只写几十行脚本的人:阶梯前三级的收益在你这里几乎为零,反而多一层“先反问需求”的摩擦。
- 把 AI 当探索工具的人。写原型阶段你要的是多方案铺开,不是“最小可用”;这时候装 full 甚至 ultra,只会让它替你砍掉你想看的东西。
这三类别碰。
- 想让提示词当安全边界的人。这套规则约束的是写作风格,不是权限:它不会阻止 Agent 删库、外联、装包。要边界请用沙箱,站内我们拆过这类做法,可以参考 NVIDIA OpenShell 的内核级沙箱。
- 从非官方渠道拿“打包版”的人。见上面那条供应链警告。
- 拿 26% 当 SLA 的人。单模型、单宿主、39 个任务的实验,换个模型、换种任务结构,数字都会变;它的价值是行为约束,不是性能承诺。
最后一个判断更个人一点:这个项目最值得抄的,其实不是那六级阶梯,而是“回复结尾必须写明跳过了什么”和“捷径要写成带升级条件的注释”这两条。前者治的是 Agent 的过度自信,后者治的是人的健忘。你甚至不用装它,把这两句写进项目的 AGENTS.md 或 CLAUDE.md,今天就能生效——想系统看技能类项目怎么组织,可以接着读 affaan-m/ECC 的 311 个技能,以及我们之前实测过的 context-mode 怎么把原始数据挡在上下文之外,三条路子拼起来才是完整的上下文与成本账。
本文由拾光札记编辑部整理,勘误请联系我们