大模型 活跃维护

ponytail

DietrichGebert/ponytail

让你的 AI 代理像房间里最懒的高级开发一样思考。最好的代码是你从未写过的代码。

143159
Stars 标星
7677
Forks 分支
352
Watchers 关注
288
Open Issues
JavaScript
主要语言
MIT
开源协议
2.6 MB
仓库大小
6 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:DietrichGebert/ponytail
git clone https://github.com/DietrichGebert/ponytail.git
git clone git@github.com:DietrichGebert/ponytail.git
README.md main

英文原文正文为项目原始 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

较早的单次数据(单独生成)

五个日常任务,三种模型,三种手臂(无技能, 原始人, 马尾),进行十次运行,报告中位数。一个提示,一个完成,计算答案的行数:

这显示了减少了80-94%的代码#126 公平地指出,裸模型基线会用文本和选项来填充其回答,因此这一差距部分是对话基线的一个现象。上面的智能体数据是经过修正、可辩护的版本。使用 npx promptfoo eval -c benchmarks/promptfooconfig.yaml 可以重现单次运行。

规则从来不是“最少的令牌”。 它是:只写任务所需的内容,且绝不删减验证、错误处理、安全性或可访问性。代码之所以最终很小,是因为它必要,而不是为了缩短。对于遵循此原则的模型来说,降低成本和延迟是附带效果;而一个简洁的推理模型如果在思考每个步骤时花费令牌,情况可能相反(在 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.mdAGENTS.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.jsonPONYTAIL_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 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。