英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
马尾辫
他什么也没说。他写了一行字。它有效。
代码量减少约54%(最高可达94%) · 成本降低约20% · 速度提升约27% · 100% 安全
在真实的 Claude Code 会话中编辑一个真实的开源仓库(FastAPI + React)时测量,与没有技能的相同代理相比。约54%为12个功能任务的平均值(Haiku 4.5, n=4);在代理过度构建(例如日期选择器)时可达到94%,在代码已最小化时接近零。ponytail 保留了所有安全防护,而单纯的“写一行代码”提示会丢失其中之一。(早期的单次基准测试报告了80-94%的固定数值;与公平的代理基线相比,这是每个任务的上限,而不是平均值。) 完整说明 · 复现方法
已使用马尾辫构建
你认识他。长马尾。椭圆眼镜。在公司待的时间比版本控制还久。你给他看五十行代码;他看了,不说话,然后用一行替换了它们。
马尾让他进入你的人工智能代理。
之前 / 之后
你要求一个日期选择器。你的代理安装了 flatpickr,编写了一个包装组件,添加了一个样式表,并开始讨论时区问题。
扎着马尾辫:
<!-- ponytail: browser has one -->
<input type="date">
在 examples/ 中有更多幸存者。
数字
诚实的衡量是一个真实的代理在做真实的工作:一个无头的 Claude Code 会话正在编辑 tiangolo 的 full-stack-fastapi-template(一个真实的 FastAPI React 仓库),根据它留下的 git diff 进行评分。十二个功能工单,相同的代理有技能和无技能的对比,n=4,Haiku 4.5。
| 与无技能基线 | LOC | 令牌 | 成本 | 时间 | 安全 |
|---|---|---|---|---|---|
| 马尾 | -54% | -22% | -20% | -27% | 100% |
| 原始人(简洁散文控制) | -20% | 7% | 3% | 2% | 100% |
| “YAGNI 单行” 提示 | -33% | -14% | -21% | -30% | 95% |
马尾是唯一在所有指标上都有削减的手臂,也是唯一在保持完全安全的情况下做到这一点的手臂。削减最大的位置是在存在真正过度构建陷阱的地方(日期选择器从404行到23行,颜色选择器从287行到23行,因为它使用原生 <input> 而不是组件)而在已经最小化的代码上几乎为零。完整方法、每个任务的表格及限制条件:benchmarks/results/2026-06-18-agentic.md。
较早的单次数据(单独生成)
规则从来不是“最少的令牌”。 它是:只写任务所需的内容,且绝不删减验证、错误处理、安全性或可访问性。代码之所以最终很小,是因为它必要,而不是为了缩短。对于遵循此原则的模型来说,降低成本和延迟是附带效果;而一个简洁的推理模型如果在思考每个步骤时花费令牌,情况可能相反(在 GPT-5.5 上就是如此)。
工作原理
在编写代码之前,代理会在第一个满足以下条件的阶梯停下:
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
梯子是在理解问题之后运行的,而不是代替理解问题运行:它读取更改触及的代码并追踪实际流程,然后再选择级别。对解决方案可以懒惰,但对阅读从不懒惰。
懒惰,但不疏忽:信任边界验证、数据丢失处理、安全性和可访问性从不被削减。
安装
马尾辫会要求你付出的最大努力:
Claude Code 和 Codex 插件(以及 Cursor 钩子)运行两个小的 Node.js 生命周期钩子,因此 node 需要在你的 PATH 中(Nix/nvm 用户注意:它必须在非交互式 shell 的 PATH 中)。如果没有,它们的技能仍然可以使用,只是始终运行的激活不会出错,而是在每个提示时保持安静。
克劳德代码
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
(你必须发送两个单独的提示以使安装工作)
在 Claude Code 桌面应用的代码标签中执行相同的步骤:在提示框中输入上面的两个 /plugin 命令,或者点击其旁边的 按钮,选择 插件 → 添加插件 来浏览你配置的市场,并从侧边栏的 自定义 管理市场。
法典
codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail
运行 codex 并打开 /hooks,查看并信任其两个生命周期钩子,然后启动一个新线程。
同一个安装也适用于 Codex 桌面应用:安装后重启应用,它会识别插件。
GitHub Copilot 命令行工具
copilot plugin marketplace add DietrichGebert/ponytail
copilot plugin install ponytail@ponytail
在交互式 Copilot CLI 会话中,使用斜杠等效命令:
/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail
Copilot CLI 按插件名称对插件命令进行命名空间归类。例如:
/ponytail:ponytail ultra
/ponytail:ponytail-review
Pi 代理器束
pi install git:github.com/DietrichGebert/ponytail
开源代码
添加到 opencode.json:
{ "plugin": ["@dietrichgebert/ponytail"] }
改为从结账运行(该插件会重用 hooks/ 和 skills/):
{ "plugin": ["./.opencode/plugins/ponytail.mjs"] }
在每回合的活动级别注入规则集;添加 /ponytail 命令(参见 Commands)。OpenCode 还会自动加载该仓库的 AGENTS.md,因此即使没有插件,规则仍然有效。该插件添加了 lite/full/ultra/off 级别。
./ 路径相对于你的项目的 opencode.json 解析;如果要在多个项目间共享一个 checkout,请将其指向 .mjs 的绝对路径(它会相对于自身文件查找 hooks/ 和 skills/)。
双子座命令行界面
gemini extensions install https://github.com/DietrichGebert/ponytail
将规则集作为每个会话中始终开启的上下文加载,并注册 /ponytail 命令;skills/ 也会随附,当任务需要时会激活。Gemini 适配器故意不提供根目录 hooks/hooks.json:Gemini 会自动加载该路径,而 Ponytail 的生命周期钩子使用 Claude/Codex 事件名称。
Qoder
Qoder 会自动从仓库根目录加载 AGENTS.md 作为始终开启的上下文,所以从检出仓库运行 ponytail 可以零配置运行。对于每个项目的规则,将 .qoder/rules/ponytail.md 复制到你的项目的 .qoder/rules/ 中。六个 ponytail 技能(/ponytail、/ponytail-review、/ponytail-audit、/ponytail-debt、/ponytail-gain、/ponytail-help)可通过 Qoder 的技能系统使用;插件清单 .qoder-plugin/plugin.json 指向 skills/ 目录。
For full plugin-tier support (automatic mode activation + ruleset injection on every prompt), add the hooks from hooks/qoder-hooks.json to your .qoder/settings.json. Replace PONYTAIL_DIR with the path to your ponytail checkout. Qoder's UserPromptSubmit hook activates the default mode on first prompt and injects the ruleset every turn; PreToolUse with task|Task matcher injects the ruleset into subagents. Level switches (/ponytail lite|full|ultra|off) work automatically.
反重力命令行界面
Google 正将 Gemini CLI 重命名为 Antigravity CLI(agy 二进制文件);相同的扩展可安装在那里:
agy plugin install https://github.com/DietrichGebert/ponytail
它重用了此仓库的 gemini-extension.json。一个区别是:Antigravity 会将 /ponytail 命令转换为技能,所以你可以在聊天中输入它们(例如,将 /ponytail-review 作为消息输入)而不是从斜杠菜单中选择。直到迁移完成(大约在 2026 年 6 月 18 日),gemini extensions install 仍然有效。要将其作为常驻规则运行,只需将规则集放入 .agents/rules/。
Hermes 代理
hermes plugins install DietrichGebert/ponytail --enable
安装后重启 Hermes。插件在每次 LLM 运行前注入活动的马尾模式,将捆绑的技能注册为 ponytail:<skill>,并添加 /ponytail、/ponytail-review、/ponytail-audit、/ponytail-debt、/ponytail-gain 和 /ponytail-help。在共享网关中,将 /ponytail 限制为具有 Hermes 斜杠命令访问控制的受信任用户;运行时模式为进程本地。
代码鲸
从项目根目录读取 AGENTS.md,零配置。将 AGENTS.md 复制到您的项目中,或从此仓库的检出目录运行 codewhale。就是这样。
旋转
先在您的库中暂存集合,然后添加您想要的技能:
swival skills add --global https://github.com/DietrichGebert/ponytail # stage into ~/.config/swival/library
swival skills add ponytail # install the collection into this project
swival skills add --global ponytail # or activate it in every project
Swival 还会从项目根目录读取 AGENTS.md,以及从 ~/.config/swival/AGENTS.md 全局读取,仅用于指令回退。
在命令行上,使用 $ 前缀来显式激活一个技能。例如:$ponytail-review。
Devin CLI
devin plugins install DietrichGebert/ponytail
将马尾辫安装为 Devin 插件;技能可使用 /ponytail:ponytail、/ponytail:ponytail-review 等。
开爪
clawhub install ponytail
将ponyTail作为OpenClaw技能从ClawHub安装;review、audit、debt、gain和help技能的安装方式相同(clawhub install ponytail-review,等等)。OpenClaw会在编码任务中应用它,并通过/ponytail命令提供访问。如果没有ClawHub,请将.openclaw/skills/ponytail复制到~/.openclaw/skills/。
Grok 构建
grok plugin install DietrichGebert/ponytail --trust
启用插件(默认关闭):/plugins → 插件 → 在 ponytail 上按空格,或在 ~/.grok/config.toml 中:
[plugins]
enabled = ["ponytail"]
启动新会话(或重新加载插件)。技能显示为 /ponytail、/ponytail-review、/ponytail-audit、/ponytail-debt、/ponytail-gain、/ponytail-help。使用 grok inspect 验证。Grok 可以根据其技能描述自动调用 ponytail 来处理编码任务;当需要显式激活时,请使用 /ponytail(或 /ponytail lite、/ponytail full、/ponytail ultra)。Grok 生命周期钩子未使用,因为它们的 SessionStart 输出无法注入指令。
即使没有插件,从检出中 AGENTS.md 仍然只适用于指令。
光标
git clone https://github.com/DietrichGebert/ponytail
node ponytail/scripts/cursor-hooks.js install
将两个本地钩子合并到 ~/.cursor/hooks.json(添加 --project 可改为写入 <project>/.cursor/hooks.json),并保留你已经存在的任何钩子。条目会从该检出路径运行 node,因此请将其保留在当前位置,或者在移动后重新运行安装。Cursor 在保存文件时会重新加载此文件;打开一个新聊天,默认级别的规则集会通过 sessionStart 到达。发送 /ponytail lite、/ponytail full、/ponytail ultra 或 /ponytail off 作为普通消息,可切换本次对话的级别;发送 /ponytail 可报告当前级别。Cursor 的 subagentStart 无法注入上下文,因此子代理在没有规则集的情况下运行,并且云代理永远不会触发 sessionStart。常驻规则(.cursor/rules/ponytail.mdc)和钩子是可替代的:当规则存在于工作区时,钩子不会注入任何内容,模式命令会给出提示,因此删除规则以让钩子管理级别。合同、验证记录和限制:docs/cursor-hooks.md。卸载:node ponytail/scripts/cursor-hooks.js uninstall。
就这些。他会为此感到自豪。他不会说出口。
每次会话都处于激活状态,并提供少量命令(参见 Commands)。/ponytail ultra 是在代码库个人伤害你时使用的命令。启动和模式切换文本会显示当前模式。
使用 PONYTAIL_DEFAULT_MODE 环境变量(lite/full/ultra/off)设置每个新会话的级别,或者在 ~/.config/ponytail/config.json(Windows 上为 %APPDATA%\ponytail\config.json)中使用 defaultMode 字段。默认值是 full。
激活时,规则集也会注入每个通过 Agent 工具生成的子代理。要将其作用范围限制在特定代理类型(例如,保持只读搜索代理关闭),请将 PONYTAIL_SUBAGENT_MATCHER 环境变量设置为对 agent_type 进行匹配的正则表达式。它是不加锚且不区分大小写:explore|general 匹配其一,^general$ 精确匹配,插件代理类型表现为 plugin:name。未设置意味着注入到每个子代理(默认);正则表达式无效或子代理类型平台未报告,也会回退为注入。
Cursor(仅规则替代 hooks install)、Windsurf、Cline、GitHub Copilot Chat(VS Code、JetBrains 和 Visual Studio 编辑器扩展,不包括独立的 Copilot CLI,详见 Install)、Aider、Kiro、Zed、CodeWhale、Swival、Qoder:从此仓库复制匹配规则文件(.cursor/rules/、.windsurf/rules/、.clinerules/、.github/copilot-instructions.md、AGENTS.md、.kiro/steering/、.qoder/rules/)。
Kiro:将 .kiro/steering/ponytail.md 复制到 ~/.kiro/steering/(全局)或项目中的 .kiro/steering/。
GitHub Copilot CLI 回退(仅指令模式):它会读取项目中的 AGENTS.md 和 .github/copilot-instructions.md,或者将规则复制到 ~/.copilot/copilot-instructions.md 以在每个项目中运行 ponytail。此路径保持始终开启的指导,但不会添加插件模式切换或钩子。
带有 Codex 扩展的 VS Code 会读取 AGENTS.md,这是这个仓库提供的,因此它可以从仓库根目录直接使用,无需设置(~/.codex/AGENTS.md 可使 Codex 全局可用)。
只要你在 设置 → 工具 → Junie → 项目设置 → 指南路径 中指向它,JetBrains Junie 就可以读取 AGENTS.md(目前还不是自动的)。这个仓库包含 AGENTS.md;.junie/guidelines.md 是 Junie 的旧路径。
Amp(Sourcegraph)从工作目录和父目录读取 AGENTS.md,直到 $HOME,该仓库随附该文件,因此无需设置即可使用(~/.config/amp/AGENTS.md 在全局有效)。
Jules(Google)从仓库根目录读取 AGENTS.md,这个仓库自带该文件,因此无需任何设置就能获取规则集。
哪些文件对应哪个代理:代理可移植性。
卸载
| 主持人 | 指挥部 |
|---|---|
| Claude 代码 | /plugin remove ponytail |
| Codex | codex plugin remove ponytail |
| Devin CLI | devin plugins remove ponytail |
| Grok Build | grok plugin uninstall ponytail |
| Pi 代理 | pi uninstall ponytail |
| Cursor hooks | node scripts/cursor-hooks.js uninstall(为项目级安装添加 --project);只删除 hooks.json 中 ponytail 的条目 |
| Cursor 规则 / Windsurf / Cline / Qoder / 等 | 删除复制的规则文件 |
These remove the plugin's own files. They leave behind a small amount of state ponytail writes outside the plugin folder: the mode flag (~/.claude/.ponytail-active, or ~/.cursor/.ponytail-active for Cursor), ~/.config/ponytail/config.json, ponytail's entries in ~/.cursor/hooks.json, and (if you accepted the setup nudge) a statusLine entry in ~/.claude/settings.json. Run node scripts/uninstall.js to clean those up too. Run it before the host remove command above — the script is itself a plugin file, so removing the plugin first deletes it (or run it from a separate clone of this repo). It only removes the statusLine entry if it points at ponytail's own script, so a statusline you set up yourself is left untouched.
命令
| 命令 | 它的作用 |
|---|---|
/ponytail [lite \| full \| ultra \| off] |
设置强度,或将其关闭。无参数时报告当前级别。 |
/ponytail-review |
审查当前差异是否存在过度设计,并返回删除列表。 |
/ponytail-audit |
审计整个仓库是否存在过度设计,而不仅仅是差异部分。 |
/ponytail-debt |
收集你已延期的 ponytail: 快捷方式到账本中,这样“以后”就不会变成“永不”。 |
/ponytail-gain |
显示基准测试中的测量影响得分板(代码更少,成本更低,速度更快)。 |
/ponytail-help |
上述命令的快速参考。 |
命令需要一个具备技能的主机(Claude Code、Codex、Devin CLI、OpenCode、Gemini、pi、Swival、Hermes Agent、Qoder、Grok Build)。在 Codex 中它们是技能,使用 @ 调用(@ponytail-review)。带有 hooks 的光标仅可进行 /ponytail 级别切换,以普通消息输入。仅指令适配器(Cursor 的规则文件、Windsurf、Cline、Copilot、Kiro、Antigravity)加载始终启用的规则集,无需命令。
开发
在更改紧凑规则文本时,保持代理副本一致:
node scripts/check-rule-copies.js
npm test
OpenClaw 技能包(.openclaw/skills/)是从 skills/ 生成的;在更改技能后重新运行 node scripts/build-openclaw-skills.js,如果过时,测试套件会失败。要将技能发布到 ClawHub,先运行一次 clawhub login,然后运行 node scripts/publish-openclaw-skills.js(它会以 package.json 的版本发布全部六个技能;传入 --dry-run 可以预览)。
正确性基准测试会生成 Python 进程用于邮件和 CSV 检查;会先尝试 python3,再尝试 python。CSV 检查需要本地安装 pandas。
常见问题
我可以和 caveman 一起使用它吗? 可以,而且你应该使用。Caveman 会压缩代理说的话;ponytail 会压缩它构建的内容。不同的部分,没有重叠:caveman 保留代码的每一个字节,ponytail 不介入文字描述。简短地讨论最小化代码。
它需要配置文件吗? 不需要。可选的 ~/.config/ponytail/config.json 或 PONYTAIL_DEFAULT_MODE 环境变量可以设置默认级别,但没有任何要求。
如果我真的需要 120 行的缓存类怎么办? 你不需要。即使坚持,他也会构建它。慢慢地。正确地。在看着你的时候。
它能扩展吗? 你从未写过的代码可以无限扩展。零漏洞,零 CVE,自有以来 100% 正常运行。
为什么叫“ponytail”? 你完全清楚原因。
许可证
MIT。最短有效的许可证。
收藏历史
- 本文标题:ponytail - 让你的 AI 代理像房间里最懒的高级开发一样思考
- 本文链接:https://cn121.com/llm/dietrichgebert-ponytail.html
- 原项目:DietrichGebert/ponytail 版权归原作者 DietrichGebert 及贡献者所有
- 收录信息:本站于 2026-09-21 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 DietrichGebert/ponytail。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。