Caveman Skill 实战指南:用六档“穴居人“强度压缩 Agent 输出,省下 Output Token
Caveman Skill 实战指南用六档穴居人强度压缩 Agent 输出省下 Output Token【免费下载链接】caveman why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman项目地址: https://gitcode.com/GitHub_Trending/caveman1/caveman本文基于仓库中skills/caveman/的文档与配套 Hook 源码完整讲解 Caveman 输出压缩技能的工作机制六档强度等级lite/full/ultra及三种文言文档位的取舍规则、/caveman切换命令的底层解析与模式持久化实现、Auto-Clarity 安全降级规则以及如何用诚实的数字评估该技能在你自己的工作负载上到底省不省 token。读完后你可以直接在自己的 Agent 会话中启用并配置该技能并理解它只压输出、不碰输入的边界。定位它压缩的是 Agent说的话不是读的东西Caveman 仓库同时提供两套产品Caveman Proxy在每次调用 provider 前压缩 Agent 读到的上下文带字节级恢复和本篇介绍的 skill让 Agent 用更短的输出作答。两者边界非常明确官方数字页 Honest Numbers 开宗明义The Caveman response skill makes model write shorter output. Skill itself does not compress input, context, files, or model thinking tokens.也就是说skills/caveman/是一个纯提示词技能它不修改任何 token 计数的输入链路而是通过一份穴居人风格指令集约束模型输出的语言风格——去掉冠词、填充词、客套话和含糊措辞同时逐字保留技术细节、代码块、错误字符串与符号。仓库 README 也强调技能自身每回合会向上下文注入约 1–1.5k 的输入 tokenSKILL.md 约 5 KB 加上技能清单条目因此它对输入 token 的影响是负优化收益只可能来自输出侧。安装与调用方式skill 本体位于 skills/caveman/SKILL.md随仓库分发。仓库 README 给出的安装方式Node.js 18npx skills add JuliusBrussee/caveman在 Claude Code、Codex、Gemini、Cursor 等 30 种 skills 兼容的 Agent 中完整安装矩阵见 INSTALL.md。安装后如果 Agent 没有自动激活直接输入/caveman即可。/caveman命令本身由 commands/caveman.toml 定义description Switch caveman intensity level (lite/full/ultra/wenyan-lite/wenyan-full/wenyan-ultra/off) prompt Switch to caveman {{args}} mode. If no level specified, use full. ...日常切换与退出/caveman # full 档默认 /caveman lite # 轻度压缩 /caveman ultra # 极端压缩 /caveman wenyan # 文言文wenyan-full 的存储别名 stop caveman # 退出回到普通行文 normal mode # 同样退出值得注意的是stop caveman / normal mode 这类自然语言停用不只是写给模型看的文案——Hook 系统会在每次用户输入时解析这些短语下文模式解析器一节有源码依据所以自然语言确实能切出该模式而不只是靠模型自觉。六档强度每一档到底改什么skills/caveman/README.md 给出了六档强度的官方定义SKILL.md 的 Intensity 表是其完整版本档位变化内容lite去填充/含糊措辞保留冠词与完整句子。专业但紧凑full默认档。去冠词允许片段句、短同义词。经典 caveman 风格无工具调用旁白、无装饰性表格/emoji不倾倒长原始错误日志ultra因果关系无歧义时去掉连词一个词能说清就一个词每个事实只说一次。禁止自造缩写cfg/impl/req/res/fn/auth、禁止因果箭头X → Y——SKILL.md 明确注明这是经过 tokenizer 实测零 token 节省的做法wenyan-lite半文言。去填充/含糊措辞但保留语法结构文言语域wenyan-full完全文言文。SKILL.md 标注约为 80–90% 的字符缩减chars, not tokens古典句式、动宾前置、常省略主语、使用文言虚词之/乃/為/其wenyan-ultra在保持文言质感前提下的极端缩略几个容易被忽略、但写在 SKILL.md Rules 节里的关键约束值得单独展开标准缩写可用自造缩写不行DB/API/HTTP 这类业界公认缩写可以保留但cfg、impl、req、res、fn这类自造缩写在 tokenizer 下与完整单词切出的 token 数相同零节省、读者还要解码所以被明令禁止。箭头→同理——它自己就是一个 token省不出任何东西。not/never/no/only/except永不省略SKILL.md 原话是flip meaning worse than any token saved——漏掉一个否定词造成的语义反转比省下任何 token 都更糟。数字与单位必须精确。不许为了像穴居人而加词压缩只减不增when it not 比 when not 多花一个 token 且表达相同正确动词形式与简写形式 token 数相同时sees 与 see 都是 1 token保留正确形式因为省不了还更难读。代码块原样不动错误引用精确到行技术术语、API 名、CLI 命令、commit 类型关键字feat/fix 等、精确错误字符串一律逐字保留除非用户明确要求翻译。语言只压风格不换语言用户用什么语言提问就回什么语言压缩的是风格不是语言。这一点同时适用于正文、工具调用前的状态行等所有输出行。官方示例对照README 与 SKILL.md 用同一个问题演示各档差异——为什么我的 React 组件会重新渲染Normal prose: Your component re-renders because you create a new object reference each render. Wrapping it inuseMemowill fix the issue.full: New object ref each render. Inline object prop new ref re-render. Wrap inuseMemo.ultra: Inline obj prop, new ref, re-render.useMemo.wenyan-full: 每繪新生對象參照故重繪以 useMemo 包之則免。wenyan-ultra: 新參照則重繪。useMemo 包之。SKILL.md 还给出了数据库连接池的对照示例并规定文言字符只出现在 wenyan 档位——在非 wenyan 档位下绝不把英文单词替换成汉字来省 token。Auto-Clarity该说人话时自动说人话压缩风格有一条内置的安全降级规则README 的 Auto-clarity rule 与 SKILL.md 的 Auto-Clarity 节一致。出现以下任一情形时临时切回普通行文讲清楚后再恢复 caveman 风格安全警告security warnings不可逆操作的确认irreversible action confirmations;多步序列中片段句或省略连词有被误读风险的例如migrate table drop column backup first这种没有冠词/连词时顺序不明的压缩压缩本身制造了技术歧义用户要求澄清或重复了同一个问题。SKILL.md 给出的破坏性操作示例注意警告正文用会话语言写示例只展示格式Warning:This will permanently delete all rows in theuserstable and cannot be undone.DROP TABLE users;Caveman resume. Verify backup exist first.模式持久化与默认档位配置README 声明mode persists until changed or stopped——档位在整个会话的每条回复中持续生效直到用户切换或停用。这个持久化在仓库中有真实的文件状态支撑而不是纯提示词约定。默认档位的解析顺序skills/caveman-help/SKILL.md 面向用户描述了配置方式src/hooks/caveman-config.js 的getDefaultMode()约 L118–L138是权威实现解析优先级为环境变量CAVEMAN_DEFAULT_MODE最高优先级export CAVEMAN_DEFAULT_MODEultra仓库级配置从process.cwd()向上查找至多 64 层命中即停repo/.caveman/config.jsonrepo/.caveman.json两者内容形如{ defaultMode: off }。这允许团队把项目的默认档位写进版本库而不污染每个贡献者的用户级配置off则表示项目整体退出 caveman 的自动激活。用户级配置的defaultMode字段$XDG_CONFIG_HOME/caveman/config.json任意平台若已设置~/.config/caveman/config.jsonmacOS / Linux 回退%APPDATA%\caveman\config.jsonWindows 回退兜底默认值full。所有取值都先经VALID_MODES白名单off, lite, full, ultra, wenyan-lite, wenyan, wenyan-full, wenyan-ultra, commit, review, compress见 caveman-config.js校验非法 JSON 或缺失文件直接跳过本级。会话状态文件与off的持久性从 caveman-config.js 的源码结构看状态存储经历了从全机单文件到按会话隔离的演进按会话状态存放在$CLAUDE_CONFIG_DIR/.caveman-sessions/session_id.mode另有.prev文件session id 经/^[A-Za-z0-9_-]{1,128}$/白名单校验后才参与路径拼接防止路径穿越传统全机标志文件~/.claude/.caveman-active保留为最后写入者镜像第三方 statusline 脚本仍在读它但永远不写入字面量off——停用时会直接删除该文件会话文件则相反停用时会写入字面量off见writeSessionMode()约 L487–L500。源码注释解释了原因会话中文件缺失无法区分从未开启与刻意关闭而 Claude Code 自动压缩后触发 SessionStart 时旧版逻辑会把刻意关闭误判为从未设置并重新武装 caveman。写入off让停用状态跨会话启动持久存在。所有状态读写都带符号链接防护lstatSync拒符号链接、O_NOFOLLOW、临时文件 rename 原子写、0600 权限读取还限制 64 字节并做白名单校验——防止本地攻击者把标志文件换成指向~/.ssh/id_rsa之类符号链接让 statusline 或模型上下文把秘密内容吞进去。模式解析器/caveman与自然语言共用一个真相源src/hooks/caveman-parse.js 的parseModeChange()是 Claude Code Hook 与 opencode 插件共享的模式变更解析器注释标注 #602 就是为消灭两者漂移而抽取的返回三值判定{action:set, mode}/{action:clear}/null。其解析行为包括停用意图最高优先级stop caveman、disable caveman、caveman off、turn off the caveman、以normal mode开头的命令式输入、或带 caveman 语境的 normal mode都解析为 clear。其中 normal mode 刻意要求出现在提示词开头可带 go back to / switch to 等引导词或句中含 caveman避免误伤 how do I exit vim normal mode 这类问题。引用文本不触发匹配前先清空...与...包裹的片段QUOTED_SPAN_REGEX。这是针对真实事故的修复——有用户粘贴的 bug 报告里引用了帮助卡自身的Say stop caveman or normal mode.一行结果把 caveman 关掉了#838。自然语言激活activate caveman、turn on caveman mode、talk like caveman以及简洁性请求less tokens、be brief、be terse、shorter answers、fewer tokens都会以配置的默认档激活但以疑问词开头的句子what is caveman mode?不算激活命令限定到单个片段的指令be brief in the summary也不算会话级切换。斜杠命令裸/caveman→ 按配置默认档激活/caveman level解析时容忍粘连标点/caveman ultra;也能识别为 ultrawenyan-full归一为存储值wenyan非法档位不静默回落到默认而是返回unresolved由 Hook 生成提示告知用户可用档位列表且故意不回显非法输入因为那是不受信任的文本。独立模式commit、review、compress三个模式属于INDEPENDENT_MODES见 caveman-parse.js各有专属命令/caveman-commit等不能通过/caveman arg选择若用户在/caveman后输入commitHook 会提示该模式用/caveman-commit设置而不是谎报不存在。每回合强化注入Claude Code 侧的实际入口是 src/hooks/caveman-mode-tracker.js一个注册在UserPromptSubmit上的 Hook。除解析模式变更、写状态文件外它还会在 caveman 处于激活态时向模型注入一行additionalContextCAVEMAN MODE ACTIVE (full) — session ruleset applies.源码注释解释了动机SessionStart 只在会话开始时注入一次完整规则集但其他插件每回合注入的竞争风格指令会把模型从 caveman 规则上拉走因此每回合都要把模式重新顶回模型的注意力里。两个细节值得一看若用户在前一条消息触发了独立模式如/caveman-commit本条普通消息到来时 Hook 会自动恢复之前的行文模式或恢复为停用——.prev文件就是为这个一次性切换的往返设计的#599检测到scheduled-task ...标记的无人值守任务会整体跳过既不改状态也不注入强化防止定时任务被 caveman 问候语劫持约 L137–L144。诚实数字什么时候省、什么时候亏docs/HONEST-NUMBERS.md 是本仓库对省多少这一问题最严肃的页面其结论应作为使用该技能的前提项数值说明相对默认冗长回复的输出缩减未发布仓库有评测 harness但没有提交经审查的原始结果README 中的基准表不应被当作聚合承诺技能带来的输入缩减0%它本质是输出风格指令技能额外增加的输入成本约 1–1.5k token/回合SKILL.md 约 5 KB 规则注入上下文加上技能清单条目/caveman-compress对记忆文件5 个 fixture 平均约 46% 输入缩减仅 fixture 数据不推广为质量等价声明明确的适用边界会赢的场景长而啰嗦的输出可删的散文多、冗长会话中每回合累积的输出缩减、以及回复更短所以读得更快的体验收益会输净负的场景本就简洁的编码问答——固定的规则注入开销可能超过输出缩减仓库引用了用户实测净亏的案例issue #145按请求次数/credit计费的 Agent如 Copilot premium requests——回答短不短不改变请求数以及工具侧计数器可能反向的案例某次 Cursor A/B 开 caveman 反而 4.3M 对 1M token结论是规则重注入、重试与上下文核算可能吞掉输出侧收益。自行度量Claude Code 里用/caveman-stats读会话日志的真实输出/缓存计数对同一任务做开/关 A/B 并对比 provider 账单仓库侧可用benchmarks/run.py需 Anthropic key与evals/measure.py离线快照复现数据评测提示集见 benchmarks/prompts.json。该页给出的经验法则Compare provider-billed totals on the same task with and without Caveman. If fixed prompt overhead exceeds output reduction, turn Caveman off for that workload.边界技能不越出聊天SKILL.md 的 Boundaries 节规定了风格的作用域一切持久化到聊天之外的产物——代码、注释、commit message、文档、issue/PR/MR/缺陷单正文、记忆文件、发给第三方的消息——一律写普通行文/caveman-compress是专门压缩 Markdown 记忆文件的例外。理由写得直白body go to other humans, so body normal English——缺陷单正文是要给其他人类读的。另外被问现在是什么模式时应直说不要输出caveman mode on之类的状态前缀也不要做普通答案 caveman 复述的双份输出。相关仓库路径技能文档与 LLM 指令skills/caveman/README.md、skills/caveman/SKILL.md帮助卡档位/命令速查skills/caveman-help/SKILL.md斜杠命令定义commands/caveman.toml、commands/caveman-stats.toml模式状态与默认档解析src/hooks/caveman-config.js模式变更解析器src/hooks/caveman-parse.jsClaude Code Hook模式跟踪/每回合强化src/hooks/caveman-mode-tracker.js诚实数字与自测方法docs/HONEST-NUMBERS.md安装矩阵INSTALL.md【免费下载链接】caveman why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman项目地址: https://gitcode.com/GitHub_Trending/caveman1/caveman创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →