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 写代码最常见的两种浪费:

  1. 过度工程:让 agent 写一个 date picker,它会装 flatpickr、写 wrapper 组件、加样式表、讨论时区。
  2. 早停于一句 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 限给可信用户——运行态模式是进程内的。

其余平台

  • Pipi install git:github.com/DietrichGebert/ponytail
  • CodeWhale:把仓库根目录的 AGENTS.md 拷到项目根,零配置。
  • Swivalswival 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 会让你少写,团队需要先对齐。

坑与注意

  1. PATH 里的 node:Claude Code / Codex 的 lifecycle hook 是 Node 脚本,nvm 用户得让 non-interactive shell 也能找到 node,否则 hook 静默失败、skill 看起来"装了但没生效"。
  2. 桌面 Claude Code 没有 /plugin 命令:要在 GUI 里点选。
  3. Gemini → Antigravity 改名窗口期gemini extensions install 仍能用,但 /ponytail 命令在 Antigravity 里被转成 skill 触发(聊天里直接发消息);要 always-on 规则,把规则集丢到 .agents/rules/
  4. Hermes 的 /ponytail 是进程级模式:不同进程之间不共享状态。
  5. Cost/Time 在 reasoning 模型上可能反向:ladder 本身要思考;GPT-5.5 上 README 明确说可能出现 cost 上升。
  6. v4.8.0 → v4.8.1 的版本号 bug:4.8.0 的 plugin manifest 还写着 4.7.0,agent 会卡在旧版本,4.8.1+ 已经修了(#260),并加了 CI guard 防止再发。
  7. v4.8.2 起的 npm trusted publishing (OIDC):从 CI 发布到 npm,没有 token 留在 repo,安全姿态良好。
  8. 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。