Ponytail:让Claude Code少写代码的AI代理规则插件
给Claude Code和Codex用的精简编码插件,先复用原生能力,不牺牲安全校验。
GitHub DietrichGebert/ponytail 更新 2026-09-04 分支 main 星标 159.6K 分叉 8.6K
JavaScript Python Claude Code Codex AI代理 YAGNI FastAPI React

🧭 决策指南

适合,如果你

  • 你用Claude Code改动FastAPI+React仓库,常遇到日期选择器等过度实现。
    README“Numbers”称基准编辑full-stack-fastapi-template,日期选择器从404行降到23行。
  • 你使用Codex并希望用/ponytail-review检查当前diff。
    README“Commands”列出/ponytail-review;Codex中需用@ponytail-review调用。
  • 你需要保留安全、错误处理和可访问性,同时减少代理生成量。
    README“Numbers”报告ponytail安全率100%,并明确这些内容不在削减范围内。

不适合,如果你

  • 你的代理是GPT-5.5,并且成本和延迟对任务很敏感。
    README说明:GPT-5.5上,思考阶梯的模型可能反向增加成本和延迟。
  • 你只需要单次提示词生成,而不是Claude Code这类真实代理会话。
    README称旧版80–94%数字来自single-shot,且存在基线填充 prose 的偏差。
  • 你的运行环境没有Node,且要求Claude Code钩子每次都正常执行。
    README“Install”要求Node在PATH中;否则always-on activation会保持安静而不报错。

前置条件

  • {'text': 'Claude Code和Codex插件需要node在PATH中,且Nix/nvm用户需保证非交互shell可见。', 'text_en': 'Claude Code and Codex plugins need node on PATH; Nix/nvm users must expose it to the non-interactive shell.'}
  • {'text': 'Codex安装后运行codex,打开/hooks并审查、信任两个生命周期钩子。', 'text_en': 'After Codex installation, run codex, open /hooks, and review and trust the two lifecycle hooks.'}
  • {'text': '正确性基准会调用python3或python;CSV检查需要本地安装pandas。', 'text_en': 'The correctness benchmark invokes python3 or python; CSV checks require pandas installed locally.'}

第一步命令(README 原文)

/plugin marketplace add DietrichGebert/ponytail

要注意

  • Claude Code安装必须发送两条独立/plugin命令。
    README“Claude Code”明确写着“You have to send two separate prompts”。
  • 卸载前先运行node scripts/uninstall.js,否则插件删除后脚本也会消失。
    README“Uninstall”要求在host remove命令之前运行该脚本。
  • Codex需新建thread,桌面版安装后需重启应用。
    README“Codex”写明需start a new thread;桌面版需restart app。

替代方案

  • caveman:你要减少代理回复中的文字,而不是减少它实际构建的代码。
    README“FAQ”与“Numbers”
  • YAGNI + one-liners提示词:你不希望安装插件,只想用提示词获得部分精简效果。
    README“Numbers”

材料未说明

  • {'text': 'README未说明Claude Code、Codex及其他宿主的最低版本要求。', 'text_en': 'The README does not specify minimum versions for Claude Code, Codex, or other hosts.'}
  • {'text': 'README未提供不同模型和仓库规模下的完整基准结果。', 'text_en': 'The README does not provide complete benchmark results across models and repository sizes.'}
  • {'text': 'README未说明两个Node生命周期钩子的具体代码行为与权限范围。', 'text_en': 'The README does not describe the exact behavior or permission scope of the two Node lifecycle hooks.'}
  • {'text': 'README未给出124,088颗星对应的用户采用量或生产案例。', 'text_en': 'The README does not provide adoption figures or production cases corresponding to the 124,088 stars.'}

💡 深度解析

7
适合 我维护 JavaScript 规则源,同时要让 Claude Code、Codex、Cursor 和 OpenClaw 的规则保持一致;每次修改技能文本后,怎样避免规则副本漂移并让测试阻止发布过期技能?
适合读者: 维护 JavaScript 规则源、需要同时发布到六个 OpenClaw 技能包并支持多个 AI 宿主的项目维护者

适合,因为项目已经把多宿主同步、生成和测试纳入开发流程,而不是依赖维护者手工记忆。

  • README 要求修改 compact rule text 后运行 node scripts/check-rule-copies.js,用于保持不同 agent 副本一致。
  • OpenClaw 的 .openclaw/skills/ 是从 skills/ 生成的;修改技能后必须重新生成,测试套件会在产物过期时失败。
  • 项目还提供 npm test,并支持将六个 OpenClaw 技能发布到 ClawHub;发布命令使用 package.json 中的版本,也支持 --dry-run 预览。
  • 这种结构复用了共享规则内容和宿主适配层,适合需要同时支持插件型与规则文件型工具的维护者。

直接可执行的起点是先检查规则副本,再运行测试;若改动了技能,还必须补做 OpenClaw 生成步骤。

  • Development:修改 compact rule text 后运行 `node scripts/check-rule-copies.js` 和 `npm test`
  • Development:`.openclaw/skills/` 从 `skills/` 生成,技能修改后运行 `node scripts/build-openclaw-skills.js`
  • Development:测试套件会在 OpenClaw 产物过期时失败
  • Architecture:宿主适配层加共享规则内容,覆盖插件型和规则文件型工具
node scripts/check-rule-copies.js
材料未说明:README 没有说明各 AI 宿主规则冲突时的优先级;README 没有说明 ClawHub 发布失败后的回滚或已发布技能撤回流程
不适合 我维护高可靠性系统,代码包含复杂缓存、并发控制和可扩展基础设施;即使 AI 代理认为 120 行缓存类可以删减,我也要求保留明确的领域抽象。Ponytail 是否适合全局启用?
适合读者: 维护高可靠性系统、复杂缓存和并发控制代码的基础设施开发者,使用 AI 代理但不希望为追求少代码而削弱架构抽象

不适合全局启用,因为项目明确把高可靠性系统、复杂缓存、并发控制和可扩展基础设施列为不应把复杂度本身视为问题的场景。

  • Ponytail 的梯度确实保留安全校验、错误处理、数据完整性和无障碍要求,但它仍会推动代理优先寻找现有能力、原生能力或最小实现。
  • README FAQ 用 120 行缓存类说明:如果用户坚持需要,代理会“build it”,但默认立场是否定这类复杂度必要性的。
  • 使用限制进一步指出,项目不适合复杂缓存、并发控制、强审计、高可靠性和需要明确领域抽象的长期平台。
  • 它影响的是代理决策和生成行为,不是编译器、静态分析器或运行时安全系统,因此不能替代架构评审与质量控制。

可以把它限制在简单内部工具或常规 CRUD 目录,而不应让它成为这些基础设施模块的默认规则。

  • FAQ:`What if I really need the 120-line cache class?`
  • usage_limitations:不适合高可靠性系统、强审计系统、复杂缓存、并发控制、可扩展基础设施或需要明确领域抽象的长期平台
  • value_proposition:最小化不等于删除安全验证、错误处理、数据完整性和无障碍能力
  • usage_limitations:项目不是编译器、静态分析器或运行时安全系统
材料未说明:README 没有说明如何按目录或模块关闭规则;README 没有给出复杂基础设施场景下 Ponytail 对缺陷率、审查时间或架构变更的实测数据
适合 我需要复现 README 中 FastAPI + React 仓库、12 个功能任务、Haiku 4.5、n=4 的对比,并区分 Ponytail 减少生成代码与 caveman 压缩代理回复;应该从哪里开始?
适合读者: 想复现实验结果的评测工程师,使用 Promptfoo 比较无技能基线、Ponytail 和 caveman,并关注 Haiku 4.5 的代码量与安全评分

适合复现,但应把它当作特定条件下的基准,而不是普遍性能承诺。

  • README 的修正后 agentic benchmark 使用真实的 FastAPI + React 仓库、12 个功能 ticket、同一代理有无 skill 的对照、Haiku 4.5 和 n=4,并按留下的 git diff 评分。
  • 报告的 Ponytail 结果是 LOC -54%、token -22%、成本 -20%、耗时 -27%、安全 100%;README 同时明确旧版 80–94% 数字受单次生成中对话文本膨胀影响。
  • caveman 是“缩短代理说什么”,Ponytail 是“缩短代理构建什么”,两者作用对象不同,可以并列实验而不把代码字节变化误归因于 caveman。
  • README 给出了 Promptfoo 配置入口,但没有在提供内容中给出完整复现实验的环境锁定说明。

先执行 README 的原始命令,再确认模型、仓库提交、任务列表和评分脚本是否与报告一致。

  • Numbers:修正后的 agentic benchmark 使用 FastAPI + React、12 个任务、Haiku 4.5、n=4,并评分 `git diff`
  • Numbers:ponytail 的 LOC、tokens、cost、time、safe 指标分别为 -54%、-22%、-20%、-27%、100%
  • FAQ:caveman shrinks what the agent says;ponytail shrinks what it builds
  • Older single-shot numbers:复现命令为 `npx promptfoo eval -c benchmarks/promptfooconfig.yaml`
npx promptfoo eval -c benchmarks/promptfooconfig.yaml
材料未说明:README 未提供完整 agentic benchmark 的运行命令、依赖版本和硬件或 API 环境锁定方式;README 未说明 Promptfoo 单次评测命令是否直接复现修正后的 agentic benchmark,而非旧的 single-shot 实验
适合 我正在用 Claude Code 和 Haiku 4.5 维护一个 FastAPI + React 仓库,希望在处理 12 类常规功能需求时减少 diff、token 和调用成本;Ponytail 是否适合直接加入工作流?
适合读者: 在真实 FastAPI + React 仓库中使用 Claude Code Haiku 4.5、希望降低代理生成代码量和成本的开发者

适合,因为 README 的实测场景与我的模型、框架和任务类型高度接近,但这些数字不能直接视为保证。

  • 在真实 FastAPI + React 仓库的 12 个功能任务、Haiku 4.5、n=4 条件下,Ponytail 平均减少 54% LOC、22% token、20% 成本和 27% 耗时。
  • 它不是单纯要求模型输出短代码,而是先检查是否需要实现、仓库中是否已有能力,再依次考虑标准库、原生平台和已安装依赖。
  • 同一测试中安全评分为 100%,规则明确不删除信任边界校验、数据丢失处理、安全措施和无障碍能力。

README 也说明,已有代码很简洁的任务收益接近零,某些模型可能因额外思考而变慢,因此应把结果理解为该基准下的参考。

  • Numbers:真实 FastAPI + React 仓库、12 个功能任务、Haiku 4.5、n=4
  • Numbers:ponytail -54% LOC、-22% tokens、-20% cost、-27% time、100% safe
  • How it works:先判断是否需要存在,再复用现有代码、标准库、原生平台和已安装依赖
  • How it works:trust-boundary validation、data-loss handling、security、accessibility never on the chopping block
材料未说明:README 没有给出我的具体 Claude Code 版本、仓库规模或任务复杂度下的实际收益;README 没有说明 Ponytail 对我现有测试、静态分析和代码审查流程的兼容细节
适合 我用 Cursor、Windsurf 和 Cline 开发 React 内部工具,常见需求是日期选择器和颜色选择器;我希望代理不要安装 flatpickr 或编写包装组件,Ponytail 是否适合通过规则文件接入?
适合读者: 使用 Cursor、Windsurf 或 Cline 开发 React 内部工具、希望让代理优先使用原生 HTML 控件而不是新增组件依赖的前端开发者

适合,尤其是边界清晰的内部工具需求,因为 Ponytail 的规则文件适配和示例正好针对这类过度构建。

  • README 将 Cursor、Windsurf、Cline 列为通过复制规则文件接入的宿主,不要求修改被开发项目的运行时架构。
  • 日期选择器示例把“安装 flatpickr、包装组件、增加样式”收敛为原生 <input type="date">;颜色选择器也属于基准中减少最明显的过度构建任务。
  • 决策梯度要求代理先读取受影响代码、追踪真实流程,再优先复用仓库已有能力、标准库、原生平台和已安装依赖。
  • 这并不意味着所有 React 交互都应改成原生控件;README 明确指出浏览器一致性、设计系统、高级无障碍和国际化可能需要更复杂实现。

因此它适合作为规则层,而不是组件库替代品。

  • 覆盖多类 AI 编程宿主:Cursor、Windsurf、Cline 通过规则文件或 AGENTS.md 方式
  • Before / after:date picker 从 flatpickr、wrapper component 和 stylesheet 变为 `<input type="date">`
  • How it works:读取受影响代码并追踪真实流程后,依次优先复用、标准库、原生平台和已安装依赖
  • user_experience.common_pitfalls:原生控件可能牺牲复杂交互、浏览器一致性、设计系统和高级无障碍
材料未说明:README 没有说明复制规则文件时的具体目标路径和不同版本 Cursor、Windsurf、Cline 的优先级行为;README 没有给出我的设计系统、浏览器支持矩阵和国际化要求下的验证结果
视情况 我主要维护 JavaScript 代码,但 Ponytail 的正确性基准会调用 Python 做邮件和 CSV 检查;我的机器可能只有 `python3`,也可能没有 pandas,这会不会阻碍测试或技能使用?
适合读者: 在个人开发机上使用 Python 辅助检查、需要验证邮件和 CSV 逻辑的 JavaScript 项目维护者,并且本地可能没有 pandas

视情况,缺少 Python 或 pandas 主要影响相关正确性检查,不等于整个技能无法使用。

  • README 说明正确性基准会为邮件和 CSV 检查启动 Python,并优先尝试 python3,再尝试 python。
  • CSV 检查需要本地安装 pandas,因此只有 JavaScript 和 Shell 环境时,相关检查可能无法完整执行。
  • 项目主体语言是 JavaScript,但语言分布还包含 109292 行 Python;这表明辅助检查不是完全无关的外部步骤。
  • README 的限制说明,项目的代理技能本身不依赖配置文件即可运行;因此 Python 环境缺失不会据此推断为所有 Ponytail 功能失效。

如果你的目标是运行完整测试,应先确认 python3 或 python 可用,并确认 pandas 是否已安装;如果只是让代理使用规则,影响范围不同。

  • Development:correctness benchmark 为 email 和 CSV checks 启动 Python,`python3` 优先于 `python`
  • Development:CSV checks need `pandas` installed locally
  • 项目核心数据:主语言 JavaScript,Python 代码量 109292
  • FAQ:不需要 config file,nothing is required
npm test
材料未说明:README 没有给出 pandas 的最低版本或安装命令;README 没有说明缺少 pandas 时测试是失败、跳过还是降级
视情况 我用 Codex,并通过 nvm 或 Nix 提供 Node.js;由于 Codex 会运行两个 Node.js 生命周期钩子,我能否把 Ponytail 当作默认开启的代理治理插件?
适合读者: 在非交互 shell 中运行 Codex 插件、使用 nvm 或 Nix 管理 Node.js、并需要审查生命周期钩子的开发者

视情况,只有非交互 shell 能找到 Node.js 且你完成 Codex 钩子的信任审查时才适合默认启用。

  • README 说明 Claude Code 和 Codex 插件运行两个很小的 Node.js 生命周期钩子,node 必须位于非交互 shell 的 PATH 中;否则技能仍可用,但 always-on 激活会保持安静。
  • 项目通过插件、技能、命令和生命周期逻辑影响代理行为,不是运行时安全系统,因此不能把它当成钩子失效时仍然可靠的安全控制。
  • README 的卸载表提供 codex plugin remove ponytail,并提醒插件之外可能留下模式状态和配置文件;清理脚本应在移除插件前执行。

由于 README 省略了 Codex 安装章节,我无法从给定材料确认完整安装命令和钩子的默认权限。

  • Install:Claude Code 和 Codex 插件运行两个 Node.js lifecycle hooks,node 需要位于 non-interactive shell 的 PATH
  • Install:如果 node 不在 PATH,skills 仍工作,但 always-on activation 保持安静
  • Uninstall:Codex 使用 `codex plugin remove ponytail`
  • Usage limitations:项目不是编译器、静态分析器或运行时安全系统
材料未说明:给定 README 没有提供 Codex 插件的完整安装命令;给定 README 没有说明 Codex 钩子的具体权限、触发时机和失败处理策略

✨ 核心亮点

  • Claude Code基准平均少写54%代码
  • 12个FastAPI+React任务安全率100%
  • 支持Codex、Claude Code与Pi插件
  • GPT-5.5可能因思考反而变慢变贵

🔧 工程化

  • 用YAGNI阶梯让代理优先复用原生能力
  • 提供/ponytail-review审查diff并生成删除清单
  • Claude Code与Codex安装两个Node生命周期钩子

⚠️ 风险

  • 基准仅覆盖Haiku 4.5的12个任务
  • GPT-5.5上思考阶梯可能增加成本延迟
  • Codex需要审查并信任两个生命周期钩子
  • 卸载会留下config与Claude状态文件

👥 适合谁?

  • 使用Claude Code维护FastAPI+React项目的团队
  • 使用Codex、Pi或Devin CLI的代理开发者
  • 希望审查过度工程化diff的开源维护者