Sep 18, 2026

用 Ponytail Skill 阻止 Agent 过度写代码

一个 141k 星的 skill,让 agent 写代码前先爬一遍七级梯子——agentic 基准下代码量减少 54%,安全防护一条不少。

#tutorial#ai-agents#best-practices

你让 agent 做一个日期选择器,它安装一个库、写一个包装组件、加一份样式表,然后开了一场时区讨论会。Ponytail,一个 141k 星的 skill,只用一行作答。

为什么这个 Skill 重要

Ponytail 把一位「最懒的资深工程师」装进你的 agent——就是那种盯着五十行代码、然后一行搞定的人。写代码之前,agent 会在第一级成立的梯级停下:

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

梯子在 agent 理解问题之后运行,而不是替代理解:对方案懒惰,对阅读从不懒惰。懒惰也绝不等于马虎——校验、错误处理、安全性、可访问性永远不在裁剪范围内。

README 用真实工作负载做了基准:headless Claude Code 会话编辑一个真实的 FastAPI + React 仓库,12 个功能工单,同一个 agent 有无 skill 各跑一遍。Ponytail 少写 54% 的代码、少花 22% 的 token、省 20% 成本、快 27%,并通过全部安全检查——是唯一一项指标全面占优的方案。裸的「YAGNI + 一行流」提示词也能砍代码,但丢掉了一项安全检查。裁剪幅度在过度构建陷阱处最大(一个日期选择器从 404 行降到 23 行),在本来就精简的代码上则接近零。

安装

在 Claude Code 上,下面两条要分两次发送——README 说明只有这样才能安装成功:

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

插件会运行两个小型 Node.js 生命周期钩子,所以 node 必须在 PATH 上——使用 nvm 或 Nix 时,指的是非交互 shell 的 PATH。在 Codex 上,同样两步换成 shell 命令:

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

没有插件机制的宿主走纯指令路线:让它读取仓库的 AGENTS.md,能带上规则集,但没有那些命令。

实战:推送前审查一次改动

这些命令需要支持 skill 的宿主,比如 Claude Code 或 Codex。正常写完代码后,请求一次审查:

/ponytail-review

它会读取当前 diff 并交回一份删除清单:没人需要的包装层、只有一个调用方的配置项、只有一个实现的抽象。想扫得更广,/ponytail-audit 给整个仓库打分,而不只是本次改动。

实战:控制力度

四个级别控制梯子的力度:/ponytail lite、/ponytail full、/ponytail ultra、/ponytail off。不带参数则报告当前级别。默认是 full;用环境变量为每个新会话设置默认值:

export PONYTAIL_DEFAULT_MODE=full

可选的 ~/.config/ponytail/config.json 里写一个 defaultMode 字段,效果相同。生效期间,规则集也会注入 agent 派生的子代理;想让只读搜索类子代理保持原样,用 PONYTAIL_SUBAGENT_MATCHER 环境变量按类型收敛注入范围。

技巧

  • 从默认的 full 级别开始;代码库本来就足够精简时可以考虑 lite——这类代码库的收益本来就接近零。
  • 把 /ponytail-review 变成推送前的固定动作;趁 diff 还小的时候拦住过度构建,成本最低。
  • agent 用 ponytail: 快捷标记延后工作时,用 /ponytail-debt 把这些标记收进一本账,别让「以后」变成「永不」。
  • 想要对话也更简洁,可以搭配 caveman。README 的 FAQ 划清了边界:caveman 收缩 agent 说的话,ponytail 收缩 agent 写的代码,互不重叠。

何时不用这个 Skill

Ponytail 是一层约束,不是代码生成器;在本来就简洁的模型上,token 节省未必成立——README 提到 GPT-5.5 这类简洁推理模型可能会花更多 token 斟酌梯级,而不是更少。如果你确实需要那个 120 行的缓存类,坚持要它还是会建——慢且正确——但先做好被顶回来的准备。在纯指令宿主上,规则集能到位,但 review、audit 这些命令不会。


查看 排行榜 了解更多 skill。