DietrichGebert/ponytail · 上手攻略
- 仓库:DietrichGebert/ponytail
- 链接:https://github.com/DietrichGebert/ponytail
- 分类:trending(agent / llm-infra)
- 作者:Tom
- 更新:2026-07-02
是什么
Ponytail 是一个给 AI 编码 agent 用的"少写代码" skill / plugin 集合。它把一句老程序员的潜规则——"先看代码再写,能用现成的就用现成的,最后只写能跑的那一行"——拆成一个 7 阶 ladder(YAGNI → 复用 → 标准库 → 平台原生 → 已有依赖 → 一行 → 最小可行实现),让 Claude Code、Codex、GitHub Copilot CLI、OpenCode、Gemini CLI、Antigravity CLI、Hermes Agent、Pi、CodeWhale、Swival、Devin CLI 等 16 个 agent 把它当作 always-on 规则集去执行。
它不是一个独立的 agent 框架,不是 IDE 插件,也不是语言模型,而是一组 agent skill + 两条 Node.js lifecycle hook(Claude / Codex 专用)。当前 release 是 v4.8.4(2026-07 发布),npm 包名 @dietrichgebert/ponytail,许可 MIT。最近一次提交 2026-07-01,仍在快速迭代。
解决什么问题
AI agent 写代码最常见的两种浪费:
- 过度工程:让 agent 写一个 date picker,它会装 flatpickr、写 wrapper 组件、加样式表、讨论时区。
- 早停于一句 prompt:"请写最少的代码" 这种 prompt 不带安全护栏,agent 砍掉了 input 校验、错误处理、可访问性。
ponytail 把"少写"和"不能省"明确分层:
- 永远在砍:多余的抽象、重复造轮子、为不存在的需求写扩展点、为不存在的用户写配置。
- 永远不砍:trust boundary 的输入校验、数据丢失处理、安全逻辑、可访问性。
官方在 12 个 feature ticket、Haiku 4.5、n=4 的 agentic 基准上跑出来的对比(vs 不装 skill 的 Claude Code baseline):
| 方案 | LOC | tokens | cost | time | safety |
|---|---|---|---|---|---|
| ponytail | -54% | -22% | -20% | -27% | 100% |
| caveman (terse prompt) | -20% | +7% | +3% | +2% | 100% |
| "YAGNI + 一行" prompt | -33% | -14% | -21% | -30% | 95% |
ponytail 是唯一在四个降本指标上同时压低、并且 safety 保持 100% 的方案。早期单轮生成基准里的 80–94% 已经被 #126 指出是 bare-model baseline 的伪差,agentic 数据才是可复现的真值。
快速安装
任何平台的 plugin 安装都来自 GitHub 仓库本身,没有第三方 marketplace;也没有可执行的服务端。Claude Code / Codex 依赖两条 Node.js 钩子,非交互式 shell 的
PATH里必须有node(Nix、nvm 用户最容易踩这个坑)。缺了 node 时 skill 还能用,但 always-on 激活会静默失败,不报错。
Claude Code(最常用)
分两条独立 prompt 发送(README 明确要求分两步,合并发送会失败):
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
桌面 app 没有 /plugin 命令,要在「Customize → + by personal plugins → Create plugin and add marketplace → Add from repository」里填仓库 URL。
Codex
codex plugin marketplace add DietrichGebert/ponytail
codex
进入 /plugins 选 Ponytail marketplace 安装,再开 /hooks 信任两条 lifecycle hook 并新开 thread。Codex 桌面 app 重启即生效。
GitHub Copilot CLI
copilot plugin marketplace add DietrichGebert/ponytail
copilot plugin install ponytail@ponytail
交互会话里用 /plugin 形式。命令 namespace 是 plugin 名前缀,例如 /ponytail:ponytail ultra、/ponytail:ponytail-review。
OpenCode
opencode.json:
{ "plugin": ["@dietrichgebert/ponytail"] }
或者从本地 checkout 引用:
{ "plugin": ["./.opencode/plugins/ponytail.mjs"] }
./ 相对当前项目的 opencode.json;要跨项目共享一个 checkout,把路径换成 .mjs 的绝对路径。
Gemini CLI
gemini extensions install https://github.com/DietrichGebert/ponytail
留意:Google 在 2026-06 把 Gemini CLI 改名 Antigravity CLI(
agy二进制),Antigravity 沿用同一份gemini-extension.json,但/ponytail命令被转成 skill,聊天里直接发消息触发即可。
Hermes Agent
hermes plugins install DietrichGebert/ponytail --enable
重启 Hermes 之后,规则在每个 LLM turn 前注入,命令变成 /ponytail、/ponytail-review、/ponytail-audit、/ponytail-debt、/ponytail-gain、/ponytail-help。共享 gateway 里要靠 Hermes 的 slash-command 权限控制把 /ponytail 限给可信用户——运行态模式是进程内的。
其余平台
- Pi:
pi install git:github.com/DietrichGebert/ponytail - CodeWhale:把仓库根目录的
AGENTS.md拷到项目根,零配置。 - Swival:
swival skills add --global https://github.com/DietrichGebert/ponytail先 stage,再swival skills add ponytail安装到当前项目(或加--global全局启用)。 - Devin CLI:v4.8.4 起通过
#318正式作为 Devin CLI plugin 分发。
更新:再跑一次 marketplace add + plugin install / 或在 IDE 里点更新。
核心用法
装上以后不需要记命令。ponytail 把规则做成 always-on context,agent 写代码前会自动跑 ladder:
1. Does this need to exist? → no: skip it (YAGNI)
2. Already in this codebase? → reuse it, don't rewrite
3. Stdlib does it? → use it
4. Native platform feature? → use it
5. Installed dependency? → use it
6. One line? → one line
7. Only then: the minimum that works
ladder 跑在读懂问题之后、写代码之前——agent 必须先 trace 真实流程再选 rung。"懒"是关于解法的,不关于阅读。
切档命令 / 触发词
ponytail 有四个内建档位(不同 agent 暴露的命令名略有差异):
- lite — 只想压 LOC,不改其他行为。
- full(默认)— 跑 ladder + 安全护栏。
- ultra — 极端节俭,仅适合 PoC。
- off — 临时关掉。
Claude Code:/ponytail:ponytail lite|full|ultra|off,或者聊天里说 ponytail ultra 之类。OpenCode 的 plugin 同样挂这四个档;Hermes 的 /ponytail-debt、/ponytail-gain 是分析用 skill(清债清单 / 评分板),不是改行为。
MCP 暴露(v4.8.0 起)
ponytail 自带 ponytail-mcp MCP server(PR #91),任何 MCP-capable agent(不只是 Claude / Codex)可以 mcp install .../ponytail-mcp 直接消费 ruleset,不必走 plugin 通道。
复现基准
单轮生成旧基准:
npx promptfoo eval -c benchmarks/promptfooconfig.yaml
agentic 12 任务基准:见 benchmarks/results/2026-06-18-agentic.md 完整方法学。
典型适用场景
- Claude Code / Codex 跑大型改动:ponytail 的 ladder 在跨文件改动里收益最大(压 54% LOC 是平均数,agent 过工程的局部能压到 94%)。
- 写前端组件时被 flatpickr / moment.js / lodash 一把梭:ponytail 会先选
<input type="date">、Intl.DateTimeFormat、原生 API。 - 生产代码 / 合规代码:需要 100% safety 的场景不能用"YAGNI + 一行"这种 hack prompt,ponytail 的"永不下刀清单"是结构化保证的。
- 多 agent 协同:v4.8.3 起 SubagentStart hook 注入到子 agent(#254),不只主线程节俭。
- 用 reasoning-heavy 模型(如 GPT-5.5):README 主动提示——这些模型会花 thinking tokens 推 ladder,cost / time 不一定降,但代码质量依然有 ladder 兜底。
不适用:
- 完全没有 codebase 的 from-scratch 脚本:ladder 第 2 步"复用现有"无意义。
- 一次性 PoC 想越少越好的:直接用
ultra或 caveman。 - 业务硬性要求抽象层 / 写满日志:ponytail 会让你少写,团队需要先对齐。
坑与注意
- PATH 里的 node:Claude Code / Codex 的 lifecycle hook 是 Node 脚本,nvm 用户得让 non-interactive shell 也能找到
node,否则 hook 静默失败、skill 看起来"装了但没生效"。 - 桌面 Claude Code 没有
/plugin命令:要在 GUI 里点选。 - Gemini → Antigravity 改名窗口期:
gemini extensions install仍能用,但/ponytail命令在 Antigravity 里被转成 skill 触发(聊天里直接发消息);要 always-on 规则,把规则集丢到.agents/rules/。 - Hermes 的
/ponytail是进程级模式:不同进程之间不共享状态。 - Cost/Time 在 reasoning 模型上可能反向:ladder 本身要思考;GPT-5.5 上 README 明确说可能出现 cost 上升。
- v4.8.0 → v4.8.1 的版本号 bug:4.8.0 的 plugin manifest 还写着 4.7.0,agent 会卡在旧版本,4.8.1+ 已经修了(#260),并加了 CI guard 防止再发。
- v4.8.2 起的 npm trusted publishing (OIDC):从 CI 发布到 npm,没有 token 留在 repo,安全姿态良好。
- CLI 切档是子命令 namespace 前缀:
/ponytail:ponytail lite,注意 plugin 名前缀和命令名都叫ponytail。
与同类对比
| 工具 | 定位 | 核心做法 | 与 ponytail 关系 |
|---|---|---|---|
| caveman(JuliusBrussee/caveman) | terse prompt pack | "why use many token when few token do trick" | 同方向但纯 prompt,cost/time 反而 +3/+2%,安全持平 100%,LOC -20%;ponytail 走"理解后 ladder",收益更大 |
| ECC(affaan-m/ECC) | agent harness 性能调优 | skills / instincts / memory | 是 agent harness 性能层,更大;ponytail 是单 skill,可以放进 ECC 用 |
| Taste-Skill / UI/UX Pro Max / graphify | 单一风格 / 设计 skill | 限定视觉/代码审美 | 解决不同维度(设计感 vs 简朴),不冲突,可同时装 |
| Cognee / OpenViking / Hermes memory 等 | 长期记忆 / 知识图谱 | 给 agent 记忆 | ponytail 解决"一次任务内少写",与记忆是不同问题 |
/compact / headroom |
上下文压缩 | 压缩工具输出 / 日志 / RAG chunk | 解决"上下文贵",ponytail 解决"代码贵",可叠加 |
| 手写 system prompt "写最少代码" | 自由发挥 | prompt hack | ponytail 把它结构化为 ladder + 安全永不下刀清单,且不污染项目 prompt |
ponytail 在公开基准里唯一让 LOC、tokens、cost、time 四个指标同时下降且 safety 100% 的方案——这是它和 caveman、YAGNI prompt 最大的差别。
一句话推荐结论
给"想偷懒但又怕 agent 砍错地方"的开发者:ponytail 是当下唯一把"少写代码"和"安全护栏"两边都做到位的 agent skill;Claude Code / Codex 用户 30 秒装好,README 里的 12 任务基准可复现,建议直接上 full 档,把 ultra 留给 PoC。