ponytail - 编码效率技能集与多 Agent 适配
ponytail — 编码效率技能集与多 Agent 适配
数据采集时间:2026-08-07(API 直抓,数据采集当时项目处于活跃维护,最近代码推送 2026-07-15) 仓库:https://github.com/DietrichGebert/ponytail 主页
.dev · 协议:MIT · 当前发布版:v4.8.4 安装:20+ 平台,Claude Code / OpenCode 走 plugin marketplace;Codex 用@ponytail;Cursor / Gemini CLI / Kiro / Cline / Copilot / Devin / Qoder / Windsurf / Pi 各走适配壳
项目总览
| 维度 | 评价 |
|---|---|
| 项目类型 | Prompt-engineered 规则集 + 多 Agent 适配包(单一 lazy senior dev 人格,6 skills + 6 slash commands + 11 hooks) |
| 技术壁垒 | 中-高 — 内容难在”何时不写”的方法论 + 自带 4-arm 公开 benchmark,不在工具链本身 |
| 学习价值 | 极高 — 一份完整的”如何让 AI agent 少写代码”工程化样本,含 9 份 benchmark 报告 |
| 商业价值 | 高 — 97K stars、4 周冲到 50k+,本质是”AI 编码效率”赛道的差异化产品 |
| 适合人群 | AI 编码 agent 重度用户,被”agent 老爱堆抽象/加依赖”的过度工程反复折磨者;团队想统一编码规范并量化 |
| 核心创新 | ”省”被工程化:7 层 ladder + 三档强度(lite/full/ultra)+ ponytail: 注释 + debt ledger 回收,而不是朴素的”少写” |
核心理念(一句话)
“代码不写才是最好。—— 一位头发长、眼镜椭圆、资历比版本控制还老的资深工程师,把 7 层 ladder 凿进你 AI agent 的 reflex:不要建 → 仓库内是否已有 → stdlib 是否能做 → 平台原生 → 已装依赖 → 是否能 1 行 → 然后才开始。”
与 Superpowers 的本质区别(已在 [[Superpowers-AI编码工程师方法论与Skills框架|Superpowers]] 文档对比表里覆盖):
| ponytail | Superpowers | spec-kit | Trellis | |
|---|---|---|---|---|
| 哲学 | ”少写”为核心(YAGNI→stdlib→native) | “完整工程师”为核心(TDD/review/verification 强约束) | “spec 是可执行的”(规范先行) | “harness/spec 学习闭环”(runtime + 自我改进) |
| 形式 | 6 skills + 11 hooks + 20+ agent 适配 | 13+ skills 自动触发 + plugin marketplace | 5 slash command CLI | 跨平台 harness + 17 适配器 |
| Benchmark | 自带(4-arm 公开报告 + 安全独立打分) | 无公开 benchmark | 无 | 案例化对比文档 |
| 立场 | 优化”省代码量” | 优化”工程严谨性” | 优化”规范驱动” | 优化”执行一致性 + spec 自演进” |
详见 [[Superpowers-AI编码工程师方法论与Skills框架]] 的”三强对决”与 [[Trellis-AI编码工程框架]] 的横向对比。
核心机制(How it works)
1. AGENTS.md 注入 + SessionStart hook
每个 session 启动时通过 SessionStart hook 把 AGENTS.md 的 ladder 注入进 agent 的 system context。当前默认 full 强度(/ponytail lite|full|ultra 可切换);自动激活,“stop ponytail” 才退出。
2. 7 层 ladder(停止在第一个能 hold 的梯级)
- 这件事需要建吗?(YAGNI,可疑需求 → 跳过,一行说理由)
- 这仓库已经有吗?(helper/util/pattern,先 reuse 再写)
- stdlib 能做吗?(用 stdlib)
- 平台原生支持吗?(
<input type="date">替代日期选择库) - 已装依赖能解吗?(永远不为”几行能做的事”加新依赖)
- 能 1 行吗?(那就 1 行)
- 只有走到这里 — 才写能跑的最少代码
ladder 跑在”理解问题”之后,而不是替代它:先读完整需求 + trace 真实控制流,再爬梯。两层都过 → 取更高的那一层。
3. 故意”省”的部分 + ponytail: 注释
不省:理解问题(含端到端 trace)/ 信任边界输入校验 / 防数据丢失的错处理 / 安全 / 可访问性 / 硬件校准(平台不等于规格,a clock drifts,a sensor reads off)
非平凡逻辑硬性要求留 一个最小可运行自检(assert 自检或最小测试文件,无框架无 fixture);trivial 单行不需要。故意简化处必须标 ponytail: <ceiling>, <upgrade path> 注释,被另一个 skill ponytail-debt 统一收割成 ledger,避免悄悄烂掉。
4. Bug 修复 = 根因,不是症状
报告只是症状,grep 所有被你动的函数的 call site,在被共享的函数里修一次守卫;只动 ticket 里提到的那条路径 → 同胞 caller 还在带病。Skill 文件里把这条作为独立约束写明。
6 个 Skills 清单(完整组件)
| Skill | Trigger | 功能 |
|---|---|---|
ponytail | /ponytail | lazy 主模式,默认 full 持续生效;lite / full / ultra 三档 |
ponytail-review | /ponytail-review | diff 视角过度工程审查,每条标注 Ldelete: / stdlib: / native: / yagni: / shrink:) |
ponytail-audit | /ponytail-audit | 整仓扫描,输出”可删行/依赖”净数排行 |
ponytail-debt | /ponytail-debt | grep 所有 ponytail: 注释做”技术债 ledger”,无触发条件的打 no-trigger |
ponytail-gain | /ponytail-gain | 渲染已测基准得分板;明确拒绝打印”本仓省了多少”(无真实 baseline) |
ponytail-help | /ponytail-help | 三档强度切换 + 配置方式速查卡 |
所有 4 个工具型 skill 都只标记,不自动改 —— 与 Superpowers 那种”subagent 自动 + 两阶段 review”的强自动化风格形成对照。
20+ Agent 适配(平台覆盖)
| 平台 | 适配层 |
|---|---|
| Claude Code / OpenCode / Cursor | 一档(plugin / slash command / rules) |
| Codex | 用 @ponytail 调用名 |
| Gemini CLI | 走 gemini-extension.json,contextFileName=AGENTS.md |
| Kiro / Cline / Copilot / Devin / Qoder / Windsurf / Pi | 各一个适配壳 |
| 大多平台”plugin marketplace”可一键安装 | (banner 说 “works with 20 agents”,README 语焉不详,具体清单需查各自 marketplace) |
Benchmark(本项目最大的差异化)
9 份报告里最关键的是 benchmarks/results/2026-06-18-agentic.md(12 KB),完整方法学:
- 引擎:真实 Claude Code 2.1.177 headless 模式,不是裸 API;模型 Haiku 4.5
- 仓库:
tiangolo/full-stack-fastapi-template @ cd83fc1(公开带 commit 号,任何人可复现) - 4 个 arm:
baseline(无 skill)/ponytail(整包加载)/caveman(词简但正常构建的对照组)/yagni-oneliner(Issue #126 中 Colin Eberhardt 直接挑战的 7 字 prompt — “Follow YAGNI principles, and prefer one-liner solutions”) - 隔离:每格 fresh repo + 全新进程,n=4;LOC 按
git diffadded lines 计算(含注释) - 自查的污染 bug:早一轮结果只差 4%,差点放出 — 因为 SessionStart hook 在 baseline 也被触发,污染了对照组;最终用
--plugin-dir单独装载每个 plugin 才隔离干净。这种”自查发现的污染”本身就是方法学可信度的证据
代表性数据:
| 工单 | baseline | ponytail | 减幅 |
|---|---|---|---|
| date picker | 404 行 | 23 行 | -94%(用 <input type="date"> 替代手搓组件) |
| color picker | 287 | 23 | -92% |
| file dropzone | 251 | 95 | -62% |
| 多步向导 | 571 | 312 | -45% |
| command palette | 268 | 233 | -13% |
| 后端 CRUD 平均 | 30 左右 | 27 左右 | -10% 持平(已接近不可压缩) |
汇总:LOC -54% / tokens -22% / 成本 -20% / 时间 -27%
安全独立打分: 对四项 adversarial 输入(脆弱边界、字符处理、空输入、超大输入)实测,baseline / ponytail / caveman 全部 100%,yagni-oneliner 95% — 即”那一句 7 字 prompt 真的会牺牲安全”。这是诚实承认”对照组之一不达标”。
作者主动 show 出的失败轮
Issue #126 (ColinEberhardt, “Benchmark issues - baseline scores are ~7 times better”) 是公开挂着的批评,针对原版基准 4 点攻击 — 单回合不是 agent workflow、baseline 太水、可能牺牲安全、7 字 prompt 是否能替代。ponytail 没解释,而是重做了 v2(2026-06-18-agentic.md)来回应。这种”公开失败 + 回炉重做”在同类项目中少见。
潜在问题 / 坑
- 7 层 ladder 偶尔与”先做点能看的”冲突 — “先 reuse 再 write” 在陌生 codebase 里需要先做 mapping,首轮响应时延可能比 naive 写法高
- debt ledger 依赖团队约定 —
ponytail:注释需要遵守,否则 audit/debt 模块抓不到东西;该约定还没看到跨项目 check 工具 - platinum 级别平台覆盖的同时,适配质量参差 — Claude Code / OpenCode / Cursor 第一档,其余各家各一个适配壳;某些平台下 hooks 行为是否等同,README 没承诺
- release 节奏不稳定 — 当前 v4.8.4,最近 push 距今约 3 周,Weekly/Hourly 级别发版,边界还在调整,先小范围试验再上关键仓
/ponytail-gain明确拒绝打印”本仓省了多少” — 这是对的(没有真实 unbuilt baseline),但用户可能想要那个数;/ponytail-debtledger 里的”已记录债务行数”是唯一真值
总结与建议
- [值得用 / 试装] 任何用 Claude Code / OpenCode / Cursor 的开发者;尤其被 “agent 老爱堆抽象” 反复折磨的团队
- 一句话总结 = “把’少写代码’工程化的 AI agent skill”,自带 4-arm 公开 benchmark + 公开承认的失败轮 + 安全独立打分,在同赛道里方法学透明度立得住
- 适合:想要少 token 少成本、单一人格持续生效、benchmark 数据可见、有 debt ledger 兜底的非玩具项目
- 不适合:重流程纪律的团队(Superpowers 更对位)、要 spec 自动演进的(Trellis)、要 GitHub 官方背书线性 5 步的(spec-kit)、不混用 superpowers——两者都强观点地定义工作流,混用冲突
备查数据
- 仓库/ponytail
- 描述 your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.
- 创建:2026-06-12(约 8 周冲顶)
- 最近代码推送:2026-07-15(约 3 周前)
- 最近元数据更新:2026-08-07
- 主语言(OpenCode plugin hooks 主导)
- Stars:97,461 / Forks:5,354 / Open issues:157
- License:MIT
- 主页:https://ponytail.dev
- 体积:~2.2 MB(size=2253 KB)
- 发布版:v4.8.4(gen version 字段)
- Node package:
@dietrichgebert/ponytail - 工作目录:6 skills + 6 slash commands + 11 hooks + 9 份 benchmark 报告 + benchmark 脚本 + promptfoo config + 一组 adversarial 安全测试
- 自述对比数字(README 头):“-54% 代码,平均; -94% 上限(在 agent over-build 处); -20% 成本; -27% 时间; safety 100%”
- 安全独立打分(对照 4 个 arm 各自跑 adversarial 4 项)/caveman/ponytail 100%;yagni-oneliner 95%
参考
- [[Superpowers-AI编码工程师方法论与Skills框架]] — 同赛道顶流(257K Stars),“完整工程师”人格;ponytail 与它在哲学上对立(少写 vs 强约束),在 skill 形态上同源
- [[Trellis-AI编码工程框架]] — 跨平台 AI Coding Agent Harness + spec 学习闭环,与 ponytail 互补(规范层 vs 效率层)
- [[spec-kit-GitHub官方规范驱动开发]] — GitHub 官方 spec-driven,线性 5 步,122K Stars,GitHub Copilot 生态首选
- [[Ralph-Autonomous-AI-Coding-Loop]] — PRD 拆 story + 每轮 fresh context,自主循环方向
- [[AI/Agent/概览]] — Agent / MCP / Tool Use / 工作流 / 记忆总览
- [[AI/LLM-应用/概览]] — RAG / Prompt / Function Calling / Embedding / Memory 总览