博客 · 2026-11-07

caveman skill 实测:输出 token 少 38%,答案全对,单次提问反而更贵

我们在全新的 Claude Code 会话里,把 20 道开发问题分别在不装 skill、装 caveman、装 ponytail 三种情况下各问三遍:Haiku 上共 180 次,每个答案都自动判对错。caveman 让输出 token 少了 38%、字数少了 57%,60 个答案全对。ponytail 反而多写了 50%。单问题会话里,caveman 自己的说明让每次调用贵了 11%。

概述

想让 Claude Code 的回答短一些,caveman skill 做得到,而且不丢正确性。省下的输出 token 大约三分之一,不是四分之三;适合开着它干一整段活,不适合单次提问。

原因很简单:我们测过了。我们在 Haiku 上开全新的 Claude Code 会话,把 20 道开发问题在不装 skill、装 caveman、装 ponytail 三种情况下各问三遍,每个答案都自动判对错:

  • 更短,照样对。 caveman 让输出 token 总数少了 38%,回答中位字数从 128 个词降到 55 个。60 个答案全对,和不装 skill 一样。
  • 省三分之一,不是四分之三。 中位那道题省了 34%。最多的一道小编程题省了 76%,有一道 git 题反而多了 16%。caveman 旧版的说明写的是约省 75%。
  • 单次提问反而更贵。 每个新会话都要为 skill 自己的说明付钱,大约 1,800 个输入 token。回答这么短,省下的输出抵不过它:caveman 那 60 次调用比不装 skill 贵 11%。
  • ponytail 不是让回答变短的 skill。 它多写了 50% 的输出 token,因为每个回答结尾都要交代跳过了什么、要检查什么。不过它写的代码最少。

推荐

  1. 干一整段活时开 caveman,别为单个问题开。 在一个长会话里,skill 的说明第一轮之后就进了缓存,变短的回答却一直在累积。像我们这样每个问题开一个新会话,每次都要重新付说明的钱。
  2. 省得最多的是代码题。 六道编程题上 caveman 省了 55% 的输出。不装 skill 的 18 个回答里有 8 个附了 >>> 用法示例,caveman 一个都没加;它的代码回答中位 50 个词,不装 skill 是 126 个。解释题和命令题各省 25%。
  3. 有风险的内容照样读完整。 caveman 的规则在安全警告和不可逆操作时会改回完整句子,我们的 rm -rf 那题照样给了警告。这是有意的设计,别把它删掉。
  4. ponytail 用来改代码,别用来聊天。 它的规则追求最小的代码改动:代码行数中位从 5.5 行降到 3 行。但它要求的收尾说明,让短回答变长了。ponytail 自己的基准测试做的是多步编程任务,报告比不装 skill 少 16% 的 token;在我们的单个问题上,它多了 50%。
  5. 信一个百分比之前,先在自己的活上测。 我们测出中位省 34%,README 的例子是 68%,一篇 Reddit 评测说 65%。数字取决于不装 skill 时模型本来有多啰嗦。

你平时让 Claude Code 做的,主要是写给你读的解释,还是要粘贴的代码?前者 caveman 帮一点,后者帮很多。

怎么测的

  1. 问题。 20 道开发问题:8 道解释题(Python 可变默认参数、HTTP 401 和 403 的区别、React 闭包取到旧值),6 道命令题(撤销提交、找大文件),6 道 Python 小函数(解析 1h30m、校验 IPv4 地址)。
  2. 三组。 不装 skill;caveman:项目里放 JuliusBrussee/caveman 的 skills/caveman/SKILL.md,提示词以 /caveman 开头;ponytail:放 DietrichGebert/ponytail 的 skills/ponytail/SKILL.md,以 /ponytail 开头。两份文件都取自 2026 年 11 月 7 日的版本。
  3. 运行。 每道题每组三遍,每遍都是空文件夹里全新的 claude -p 会话:Claude Code 2.1.314,--model haiku,--setting-sources project,不加载任何用户设置和钩子,共 180 次。token、费用和耗时取自 Claude Code 的 JSON 输出。
  4. 判分。 解释题和命令题的答案必须包含关键事实,比如 SQL 那题要有 IS NULL,撤销提交那题要有 git reset --soft HEAD~1。代码题必须定义出那个函数并通过我们的测试。第一轮有两条规则判错了,已对三组同样修正:代码取第一个定义了该函数的代码块,因为不装 skill 的回答常附一段 >>> 示例;deps 也算提到了依赖数组。修正前,不装 skill 的代码题看起来只对了 50%;修正后三组都是 60 个全对。

测试结果

全部 20 道题,各三遍

不装 skillcavemanponytail
答对60 / 6060 / 6060 / 60
输出 token 总数38,06623,619(−38%)57,108(+50%)
回答中位128 词,439 token55 词,265 token126 词,763 token
代码行数中位5.533
每次输入 token 中位18,00119,82319,226
60 次总费用0.108 美元0.120 美元(+11%)0.136 美元(+25%)
每次耗时中位5.4 秒4.6 秒6.9 秒

按题型,输出 token 总数

不装 skillcavemanponytail
解释(8 道)17,09512,770(−25%)21,459(+26%)
命令(6 道)4,6123,480(−25%)8,527(+85%)
代码(6 道)16,3597,369(−55%)27,122(+66%)

caveman 省得最多和最少的题,三遍的中位数

问题不装 skillcaveman变化
列表分块 chunk39394−76%
查监听端口440125−72%
is_palindrome590172−71%
HTTP 401 和 403343169−51%
257 的 is 和 ==664756+14%
撤销上一次提交277321+16%

一个让输出变短的 skill,为什么让每次调用更贵?每个 Claude Code 会话开头都有大约 18,000 个输入 token 的系统提示词和工具定义,新会话要把其中大部分写进提示词缓存。用这 180 次调用倒推,不装 skill 时写缓存占一次调用费用的 75%,输出只占 18%。caveman 给这次写缓存加了约 1,700 个 token,每个回答省下约 240 个输出 token,而输出的单价只是写缓存的 2.5 倍。在长会话里,说明只写一次,之后按二十分之一的价格从缓存读取,账就倒过来了。

该忽略什么

  • 75% 这个数。 它来自 caveman 早先的描述。现在的 README 开头举的是一个例子,63 个 token 降到 20 个;整段会话省输入 token 的数字,说的是 caveman 的其他工具,不是这个 skill。
  • 速度。 caveman 在这里稍快,4.6 秒对 5.4 秒,但这些都是单个短回答,网络时间占了大头。
  • 把 ponytail 多出来的说明当缺点。 结尾交代跳过了什么,正是这个 skill 的用意。评价它要看改代码,这次测试没测。

局限

  • 只测了 Haiku。 我们的批量测试都用 Haiku。不装 skill 时回答更长的大模型,装 caveman 可能省得更多。
  • 新会话里的单个问题。 对任何 skill 来说,这都是说明成本最吃亏的情况。我们没有测带工具调用的长 agent 会话,caveman 关于状态行的规则也在那种场景才用得上。
  • **自动判分只查关键事实和测试,**不查细节。一个答案可能通过了,却漏掉读者想要的某个提醒。
  • skill 一直在改。 两个仓更新都很频繁;我们用的是 2026 年 11 月 7 日的文件,数据里写明了每一份。

自己复现

脚本是 caveman-skill-test-2026-11.py。下载两份 SKILL.md,在登录了 Claude Code 的机器上运行 python3 caveman-skill-test-2026-11.py run <文件夹> <caveman SKILL.md> <ponytail SKILL.md>,再运行 score <文件夹>。它输出 caveman-skill-test-2026-11.json:每次调用一行,含 token、费用、耗时、代码行数和答案对错,以及本文用到的全部汇总。两个 skill 都在我们的 skills 目录里,ponytail 的涨星情况见我们的涨星榜。

来源

  1. JuliusBrussee/caveman · official
  2. DietrichGebert/ponytail · official
  3. Claude Code 文档:Agent Skills · official
  4. AgentCraft:Claude Code skills 目录 · blog