
Ponytail 基准测试全解三组实验、两套指标体系可复现地度量「少写代码」的真实收益【免费下载链接】ponytailMakes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.项目地址: https://gitcode.com/GitHub_Trending/po/ponytail本文以 Ponytail 仓库的benchmarks/README.md为主体完整还原其基准测试的实验设计三组对照 arm × 三个 Claude 模型 × 五个日常任务每格 10 次取中位数、两条复现路径promptfoo 云端跑法与 Ollama 本地跑法并深入loc.js、correctness.js的指标实现源码最后梳理成本复核、Agentic 修正版与独立第三方基准帮助读者既能一键复现全部数字也能判断这些数字的适用边界。实验设计三组 arm、三个模型、五个任务Ponytail 的核心命题是「让 AI agent 像最懒的资深工程师一样思考最好的代码是你根本没写的那些代码」。benchmarks/目录就是为这个命题设立的对照组三组 armbaseline不带任何 skill 的裸模型、caveman第三方散文压缩 skill代码风格保持正常、ponytail本仓库自身的 skill三个模型Claude Haiku、Sonnet、Opus对应 benchmarks/promptfooconfig.yaml 中的三个 providerclaude-haiku-4-5-20251001、claude-sonnet-4-6、claude-opus-4-8均配置max_tokens: 8192, temperature: 1即单次补全、默认温度五个日常任务邮箱校验函数、原生 JS debounce、CSV 求和、React 倒计时组件、FastAPI 限流完整提示词见promptfooconfig.yaml的tests列表统计口径每个单元格arm × 模型 × 任务跑 10 次报告中位数代码行数LOC从模型输出的围栏代码块中计数token 数、成本、延迟直接取自 API 遥测数据。三组 arm 的提示词装配方式在源码中一目了然。以 benchmarks/arms/ponytail.js 为例它把 skills/ponytail/SKILL.md 全文作为 system prompt用户消息仅为任务本身——注释明确写着 Single source of truth单一事实来源保证基准测的就是仓库里实际分发的 skill 内容benchmarks/arms/caveman.js 同构加载的是 vendored 在 benchmarks/arms/caveman-SKILL.md 的第三方 skill而 benchmarks/arms/baseline.js 只有一行vars.task直接作为用户消息不带任何 system prompt。复现路径一promptfoo 跑 Claude 系列前置要求Anthropic API key、Node.js ≥ 22.22.0promptfoo 引擎的版本约束用node --version检查不够就升级以及Python 3 pandasCSV 任务的正确性检查会调用 pandas 场景的 Python 运行环境。cp ../.env.example .env # 添加你的 ANTHROPIC_API_KEY npx promptfoolatest eval -c promptfooconfig.yaml --env-file ../.env --repeat 10 npx promptfoolatest view有两个细节值得注意--env-file ../.env是必需的。因为 promptfoo 从当前目录即benchmarks/读取.env而密钥文件放在仓库根目录不显式指定路径会读不到--repeat 10对应每格 10 次、取中位数的统计口径view子命令随后可以打开 promptfoo 的交互式报告核对逐条输出。复现路径二Ollama 本地模型不需要 API key也不需要 promptfoo。benchmarks/benchmark-local.py 是一个纯标准库的脚本对任意 Ollama 服务上的模型跑同样的五任务、三 arm 对照ollama pull llama3.2 # 或任何其他模型 python benchmarks/benchmark-local.py --model llama3.2 --repeat 3可选参数来自脚本的argparse定义--modelOllama 模型名默认llama3.2--repeat每格运行次数报告中位数默认 1--ollama-urlOllama 基地址默认http://localhost:11434仅接受 http/https 协议且必须带 host脚本内做了 URL 校验非法会直接报错退出。脚本内部对五任务 × 三 arm × N 次逐格调用 Ollama 的/api/chat接口temperature 0.7、非流式、180 秒超时用与loc.js同口径的规则统计 LOC最终以表格打印每任务中位 LOC 与中位耗时并把完整响应落盘到benchmarks/benchmark-local-results.json供离线复核。指标体系loc是测量correct是闸门README 的 Metrics 一节把两个断言文件的职责划分得很清楚这里结合源码展开文件指标性质benchmarks/loc.jsloc注册为code_loc测量型——永远通过只记录行数benchmarks/correctness.jscorrect闸门型——生成的代码跑不过就失败两者都通过promptfooconfig.yaml的defaultTest.assert挂到每个任务上type: javascript指向对应文件。loc.js只数代码行不数注释benchmarks/loc.js 的逻辑用正则抽取全部围栏代码块包裹若模型没写围栏而是直接裸输代码则把整个响应当作代码先剔除/* ... */块注释否则普通块注释会被误计为代码再按行过滤掉空行、//与#开头行、/*、*开头行与孤立的*/。返回{ pass: true, score: loc }——它永远是 pass纯粹是一个测量值。correctness.js让短代码过不了坏代码这一关benchmarks/correctness.js 是整个基准里最关键的设计一个 LOC 分数漂亮但跑不起来的聪明的一行必须被拦下。它的入口先根据context.vars.task做关键词识别email/debounce/csv/countdown/ratelimit再把模型输出的围栏代码块抽出来按任务分派到五个检查器真实执行型三个任务spawn 子进程跑代码email在生成的 Python 代码后追加测试 harness——先按常见命名validate_email、is_valid_email等找校验函数找不到就退而扫描所有单参函数然后用 5 个用例断言userexample.com、ab.co必须通过no-at-sign、空串、missing-local.com必须拒绝。任何一条不满足即FAIL退出。debounce生成代码后连续调用 3 次 debounced 函数断言delay内callCount必须为 0不能立即触发120ms 后再断言恰好触发 1 次。csv生成一个含三行数据100.5 200.0 50.5的临时 CSV把生成代码中的sales.csv文件名 patch 成临时路径包裹在 stdout 重定向里执行最后用正则(?!\d)351(?:\.0)?(?!\d)校验输出里出现独立数字 351。结构检查型两个任务仅正则验证结构不执行countdownReact 组件无法在裸 Node 里运行代码必须同时具备状态管理useState/useReducer/this.state、定时器设置useEffect/componentDidMount/setInterval/setTimeout、递减逻辑- 1/- 1/prev - 1等模式。ratelimit必须含限流逻辑limit/429/HTTPException/RateLimiter等与 FastAPI 使用特征fastapi/app.等。README 对这两类检查做了明确的诚实声明React 与 FastAPI 的检查是关键词/结构级的验证的是结构合理而非完整正确性email、debounce、CSV 三项才是真正执行代码。实现上还有几个工程细节值得注意裸代码兜底extractBlocks在抽不到围栏代码块但响应非空时把整个响应当作单个代码块——因为精简风格的模型经常直接裸输代码否则闸门会误报 no block超时可调exec用PONYTAIL_CORRECTNESS_TIMEOUT_MS环境变量控制子进程超时默认 30 秒python 探测加载时探测一次python3/python哪个可用macOS 与许多 Linux 镜像只带python3结果缓存测试benchmarks/correctness.test.js 与 benchmarks/loc.test.js 为这两套指标提供回归测试。中位数结果10 次/格2026-06-13成本于 2026-06-17 用 30 次复核代码行数5 任务合计中位数armHaikuSonnetOpusbaseline (no skill)518693256caveman11612067ponytail394451成本USD5 任务30 次2026-06-17armHaikuSonnetOpusbaseline (no skill)0.0300.1370.137caveman0.0140.0460.072ponytail0.0110.0350.079延迟秒5 任务armHaikuSonnetOpusbaseline (no skill)37.7124.158.7caveman14.934.723.1ponytail9.920.118.0相对 baselineponytail 在全部三个 Claude 模型上少写80–94% 的代码、便宜42–75%、快3–6 倍。必须诚实读到的修正README 自己用一段 Read this number honestly2026-06-18 更新给上面的数字降了权单轮对照的 baseline 是一个回答会附带多个方案加评论的裸模型所以被数进去的是散文而不只是代码80–94% 这个数字高估了收益。对此仓库用 benchmarks/agentic/ 下的 Agentic 基准做了直接回应让每个单元格都变成一次真实的无头 Claude Code 会话、在真实的公开仓库fastapi full-stack 模板固定 commit上编辑代码LOC 以git diff计。结论是在有过度构建陷阱的功能上如用自定义组件 vs 原生input typedateponytail 削减60–94%在本来就够精简的代码上打平从不写多且安全性保持100%而裸的写一行代码提示词反而丢掉过一次路径遍历守卫。完整版数据与逐项分析见 benchmarks/results/2026-06-18-agentic.md。独立基准别人机器上的旁证README 的 Independent benchmarks 一节列出了由其他人、用自己的 harness 和机器跑出的结果仅列出以插件形式安装的运行把SKILL.md粘贴进 prompt 只是对full档的粗糙近似会扭曲结果来源方法结论日期KuldeepB19插件安装24 任务no-skill vs Lite/Full/Ultra各 5 次480 次构建Opus 4.8靠执行代码打分代码约少 44%语句少 53%无正确性或安全退化5/24 任务上削减了日常坏输入处理2026-06-24RicardoCostaGitCursor SDK 多轮 agentic 运行隔离 git worktree每次运行切换规则文件输出更精简但在大型完成强迫任务上过程成本更高更多工具调用/token节省出现在受阻/易滚雪球的任务上2026-06-16两项独立结果与上面的诚实声明落在同一结论ponytail 稳定地少写代码但省不省钱取决于工作负载——在过度构建和受阻任务上是大赢在大型完成强迫的 agentic 运行上反而可能更贵。成本复核跨模型家族的收益并不普适成本表是 30 次重跑的复核结果详细报告在 benchmarks/results/2026-06-17-cost-verification.md。其方法Claude 上三次 10 次运行合并为每格 30 次另加 OpenAI 与 Gemini 臂检验结论的可迁移性。核心发现Claude 三模型上 ponytail 便宜42–75%合并 30 次口径与 README 表一致延迟快3.1–5.8 倍落在3–6x区间内正确性全程无损ponytail 在所有被测 Claude 与 OpenAI 模型上100%而无 skill 的 baseline 在 Sonnet 上掉到 76%一次真实的过度工程 bug——返回 dict 而非 bool成本优势是 Claude 专属的OpenAI 侧 gpt-4.1-mini 便宜 40%但推理模型 gpt-5.4-mini 贵 26%、最新的 gpt-5.5 贵 39% 且更慢——规则集每次调用都要重新发送为输入叠加额外推理 token开销盖过了省下的行数Gemini 运行撞了免费额度 600 次/天上限而搁置。结论的边界很清楚这是在 Claude 上生成代码的成本数字不是跨厂商承诺。本地模型的边界llama3.2 上没有迁移README 在本地模型一节指向 benchmarks/results/2026-06-15-llama3.2-local.md在 Ollama 上跑 3.2B 量化 llama3.2n5 中位数三个 arm 的总 LOC 为 baseline 109 / caveman 133 / ponytail 137——ponytail 不但没少写反而略多且每次运行在 baseline 的 17% 以下到 50% 以上之间摆动信号淹没在噪声里时间上 ponytail 因 system prompt 变长还慢了 10–15%。报告给出的解释该 skill 是按 Claude 模型的指令跟随能力校准的小模型只部分吸收规则、还会加解释性散文付了指令跟随的成本却没有换来更少的代码。收益要等到指令跟随能力达到 Claude Haiku 量级的模型才显现。其他必须知道的口径说明README 的 Notes 一节补充了三点适用前提caveman 的定位它是散文压缩 skill代码保持正常所以代码行数落在 baseline 与 ponytail 之间主要赢在散文 token 上——它同时充当了对照组如果 ponytail 的效果只是说话简短caveman 应该追平它但 agentic 基准里 caveman 在功能任务上 token 还 7%说明 ponytail 的效应是懒代码纪律而非短话术成本是单轮生成口径一次提示一次补全不是真实多轮会话。会话中规则集每轮重注入、决策阶梯每轮斟酌实际成本可能更高或更低prompt 缓存能抵消一部分重注入但 agentic A/B 也发现完成强迫任务上 ponytail 会抬高工具调用数。这些数字应视为生成成本不是会话成本承诺任务是日常型针对生产级规格、无约束 agent 会膨胀得更严重的场景见results/目录下的各篇报告含 robustness 审计、correctness 闸门修复记录 等。关键文件索引文件作用benchmarks/README.md本基准的总入口本文主体benchmarks/promptfooconfig.yamlClaude 三模型 × 三 arm × 五任务的完整评测配置benchmarks/promptfooconfig.gpt-newest.yaml / benchmarks/promptfooconfig.gemini.yamlOpenAI / Gemini 复核臂配置benchmarks/arms/baseline.js / benchmarks/arms/caveman.js / benchmarks/arms/ponytail.js三组 arm 的提示词装配benchmarks/loc.jsLOC 测量器永远通过benchmarks/correctness.js正确性闸门执行型 结构型检查benchmarks/benchmark-local.pyOllama 本地模型复现脚本benchmarks/agentic/README.mdAgentic 基准真实 Claude Code 会话 安全对抗输入benchmarks/results/历次复核与专题报告复现这套基准只需要记住两句话云端路径npx promptfoolatest eval -c promptfooconfig.yaml --env-file ../.env --repeat 10Node ≥ 22.22.0 API key本地路径python benchmarks/benchmark-local.py --model llama3.2 --repeat 3Ollama 已拉取模型。而读数字时先问一句这是单轮生成口径还是会话口径——仓库自己已经替你把这道题答过了。【免费下载链接】ponytailMakes your AI agent think like the laziest senior dev in the room. The best code is the code you never wrote.项目地址: https://gitcode.com/GitHub_Trending/po/ponytail创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考