
Caveman 压缩会话模式六档强度的 Token 精简规则设计与 Hook 实现剖析【免费下载链接】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在 Claude Code 会话中模型输出的每一句寒暄、冠词和套话都在消耗 output token。本文围绕 caveman 仓库中的核心技能定义文件 SKILL.md 展开完整解析它的六档压缩强度lite/full/ultra 及三个 wenyan 文言文档位、压缩规则的每一条例外与禁令、Auto-Clarity 安全回退机制与会话边界并结合 caveman-activate.js、caveman-parse.js 等 Hook 源码说明这套规则如何被加载、按档位过滤、持久化与逐轮强化。读完后你将能够完整掌握 caveman 模式的启用/切换/退出方法并理解压缩风格、不压缩语言背后的工程实现。SKILL.md一份写给模型的会话规则集plugins/caveman/skills/caveman/SKILL.md 是 caveman 压缩模式的唯一事实来源single source of truth。它的 YAML frontmatter 声明了技能的触发面name: caveman description: Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, caveman mode, talk like caveman, be brief or less tokens.正文只有一句话点明设计哲学Respond terse like smart caveman. All technical substance stay. Only fluff die. 像聪明的原始人一样简洁地回答。所有技术实质保留只有虚词去死。值得强调的是这不是一个翻译腔段子而是一份可直接注入模型上下文的完整行为规则集——Hook 会在每个会话开始时把它作为隐藏上下文注入下文第三节会给出源码证据。仓库根 README.md 中平均 1214 → 294 tokens约 65% 的 output 缩减的示例表即针对此类对话风格且 README 在 docs/HONEST-NUMBERS.md 中诚实声明技能只缩减 output tokeninput 与推理 token 不受影响技能本身每轮还会增加约 1–1.5k 的 input token。持久性Persistence默认档位与会话级生效原文档 Persistence 一节的完整规则如下激活后成为整个会话每一轮回复的默认风格直到用户说 stop caveman 或 normal mode 才退出长会话中必须保持简洁不允许填充词漂移filler drift——即聊得越久越啰嗦默认档位为full切换命令/caveman lite|full|ultra|wenyan-lite|wenyan-full|wenyan-ultra|off。这个会话级持久的承诺在源码中是真实兑现的。从 caveman-mode-tracker.js 可以看到每个 Claude Code 窗口拥有自己的模式状态文件$CLAUDE_CONFIG_DIR/.caveman-sessions/session_id.mode~/.claude/.caveman-active只是最后写入者胜出的镜像供第三方 statusline 读取src/hooks/README.md 进一步说明该镜像永远不包含字面量off——退出模式即删除文件避免旧版工具把off误当作激活档位渲染成[CAVEMAN:OFF]。压缩规则Rules删什么、禁什么、保留什么这是 SKILL.md 中信息密度最高的部分。规则原文全部为英文这本身也是刻意的规则文本会被原样注入模型上下文下面逐条拆解。删除清单冠词a/an/the、填充词just/really/basically/actually/simply、客套话sure/certainly/of course/happy to、模糊限定hedging允许使用句子片段Fragments OK使用短同义词big 而不是 extensivefix 而不是 implement a solution for不叙述工具调用no tool-call narration、不使用装饰性表格和 emoji非经要求不倾倒长原始错误日志只引用最短的决定性一行。三条看似省 token 实则不省的禁令文档里最值得注意的是几条反直觉规则其背后都有 tokenizer 层面的量化理由禁止自造缩写cfg/impl/req/res/fn。理由tokenizer 会把这些缩写拆成和完整单词相同的 token 序列——零节省读者还要额外解码。标准技术缩写DB/API/HTTP可以因为它们是高频词、tokenizer 有现成编码。禁止因果箭头→。箭头本身独占一个 token并不比文字短还牺牲可读性。禁止为像原始人而加词。例如 when it not 比 when not 多花一个 token 且语义相同sees 和 see 都是单 token破坏动词形式没有任何收益。原文的判据一句话讲透if caveman phrasing not shorter than plain phrasing, use plain若原始人句式不比平实句式短就用平实的。文档中 skills/caveman/README.md 与插件版 SKILL.md 存在一处刻意的演进差异README 的 ultra 档示例还保留了 Inline obj prop → new ref → re-render 的箭头写法而 SKILL.md当前事实来源已明确将箭头和自造缩写从 ultra 档中移除并标注 measured zero token saving under tokenizer实测在 tokenizer 下零节省。这说明规则集是随 tokenizer 实测结果迭代收紧的。保真红线永不删除not/never/no/only/except——丢失否定词导致的语义反转比省下的任何 token 都更糟数字与单位必须精确技术术语精确、代码块原封不动、错误信息原样引用语言保真严格按用户的主流语言回复压缩的是风格不是语言Compress the style, not the language技术术语、代码、API 名、CLI 命令、commit 类型关键字feat/fix/...与精确错误串逐字保留除非用户明确要求翻译删冠词只适用于有冠词的语言日语、泰语等靠小品词/后置助词承载格与角色的语言要保留这些语法标记压缩的是礼貌语和填充语。输出模式Pattern回复模板固定为[thing] [action] [reason]. [next step].文档给出正误对照Not: Sure! Id be happy to help you with that. The issue youre experiencing is likely caused by...Yes: Bug in auth middleware. Token expiry check usenot. Fix:同时禁止双答案正常回答 原始人版本重复一遍、禁止 caveman mode on、Caveman: 前缀或与回复本身冗余的复述用户询问当前模式时直接平实回答。工具调用则要求直接发射调用前后不加开场白、计划或进度说明调用之间的文字只允许用于澄清、安全/不可逆警告或消歧。六档强度Intensity与对照示例SKILL.md 的 Intensity 表是档位定义的唯一权威plugins/caveman/skills/caveman/SKILL.md 第 40–47 行档位变化内容lite去填充词/模糊限定。保留冠词 完整句子。专业但紧凑full默认档。删冠词、片段 OK、短同义词。经典原始人。无工具调用叙述、无装饰表格/emoji标准缩写可用禁止自造缩写ultra因果链不产生歧义时剥除连词一词能表达就不多词每个事实只说一次。禁止 prose 缩写cfg/impl/req/res/fn/auth禁止箭头X → Y代码符号、函数名、API 名、错误串永不触碰wenyan-lite半文言。去填充/模糊但保留语法结构文言腔调wenyan-full文言最大化简洁。全文言文80–90%字符非 token压缩。古典句式、动词先于宾语、主语常省略、文言虚词之/乃/為/其wenyan-ultra保持文言文感下的极限缩略极致短促文档随后给出两组六个档位的完整对照示例这是理解各档差异最直观的部分示例一Why React component re-render?为什么 React 组件会重渲染lite: Your component re-renders because you create a new object reference each render. Wrap it inuseMemo.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-lite: 組件頻重繪以每繪新生對象參照故。以 useMemo 包之。wenyan-full: 每繪新生對象參照故重繪以 useMemo 包之則免。wenyan-ultra: 新參照則重繪。useMemo 包之。示例二Explain database connection pooling.解释数据库连接池lite: Connection pooling reuses open connections instead of creating new ones per request. Avoids repeated handshake overhead.full: Pool reuse open DB connections. No new connection per request. Skip handshake overhead.ultra: Pool reuse open DB connections. No per-request handshake.wenyan-full: 池蓄已開之連不逐請而新開省握手之費。wenyan-ultra: 池蓄連免逐請新開省握手。最后有一条范围禁令文言字仅出现在 wenyan 档位在非 wenyan 档位上不得为缩句把普通词换成文言字。Auto-Clarity安全回退机制压缩风格在以下五类场景中自动切回正常散文安全警告Security warnings不可逆操作的确认Irreversible action confirmations片段顺序或省略连词可能造成误读的多步操作序列压缩本身制造技术歧义时原文举例migrate table drop column backup first在没有冠词/连词时步骤顺序不明用户要求澄清或重复提问。清晰部分讲完后恢复 caveman 风格。文档给出一条破坏性操作的格式示范并注明示例只展示格式警告正文要用会话语言写Warning:This will permanently delete all rows in theuserstable and cannot be undone.DROP TABLE users;Caveman resume. Verify backup exist first.这段设计解决了压缩省 token与关键操作必须零歧义的冲突风格可以省语义不能省。Boundaries压缩止步于聊天之外Boundaries 一节划定了压缩的作用域边界原文规则为聊天之外一律正常书写代码、注释、commit message、文档、issue/PR/MR/缺陷/工单/bug report 正文、memory 文件、第三方消息/caveman-compress单独豁免Open a defect / file a bug 与 open issue 同义正文是写给其他人类看的必须用正常英文stop caveman 或 normal mode 立即恢复正常风格档位持续生效直到被修改或会话结束。实现纵深SKILL.md 如何进入模型上下文规则写得再好若不进入模型上下文就是空文。src/hooks/caveman-activate.js 是 SessionStart Hook它在每次会话事件startup/resume/clear/compact/fork触发时执行三件事解析并持久化本会话模式、注入规则集、检测 statusline 配置缺失并提示。关键在规则注入的运行时读取逻辑caveman-activate.js 第 356–404 行按候选路径读 SKILL.md优先$CLAUDE_PLUGIN_ROOT/skills/caveman/SKILL.mdClaude Code 调用插件 Hook 时设置该环境变量其次../../skills/caveman/SKILL.md插件或仓库检出布局再次../skills/caveman/SKILL.md独立安装布局。全部落空才退回一段硬编码的最小规则集——注释明确说明运行时读取是为了SKILL.md 的修改自动传播没有会过期的硬编码副本。按档位过滤剥离 YAML frontmatter 后逐行处理——强度表只保留表头 当前激活档那一行匹配| **level** |格式示例行只保留- level:与当前档匹配的行wenyan会先归一化为wenyan-full标签见第 343 行。这意味着模型每轮看到的规则集是公共规则 当前档专属定义与示例六个档位的互斥示例不会互相干扰。逐轮强化caveman-mode-tracker.js 作为 UserPromptSubmit Hook在每条用户消息后注入一行CAVEMAN MODE ACTIVE (mode) — session ruleset applies.。注释解释了必要性SessionStart 只注入一次而上下文压缩compaction会剪掉规则、其他插件可能每轮注入竞争风格逐轮提醒让 caveman 保持在模型注意力里。模式解析/caveman 与自然语言触发模式切换由 caveman-parse.js 统一解析——注释说明它被抽出来作为单一事实来源使 Claude Code Hook 与 opencode 插件不可能解析漂移。核心行为resolveModeArg第 90–114 行裸/caveman激活为配置的默认档off/stop/disable清除模式wenyan-full归一化为存储别名wenyan配置层存储的是wenyan展示层标签是wenyan-full拼写错误的档位不会静默回退到默认值而是返回unresolved由 caveman-mode-tracker.js 第 224–242 行 生成提示告知用户档位未变 合法档位列表且拒绝的输入绝不回显进模型上下文。自然语言触发第 150–206 行退出意图优先于激活意图计算turn caveman mode off 不会被激活模式误吞识别 stop/disable/deactivate caveman、normal mode仅在命令位或带 caveman 语境时匹配避免误伤 vim normal mode 的讨论、talk like caveman、less tokens / be brief / fewer tokens 等短语。引用免疫提示词中被...或...包裹的片段在匹配前会被置空QUOTED_SPAN_REGEX这样在 bug report 里引用文档原句 Say stop caveman 不会真的把模式关掉问句what/how/why 开头不触发激活以/开头的命令文本不参与自然语言匹配防止别的斜杠命令的参数误触 caveman 触发器。完整的合法模式列表含独立档commit/review/compress定义在 caveman-activate.js 的 FALLBACK_VALID_MODES第 71–75 行独立档有各自的技能文件与命令通过/caveman-commit等独立命令设置且 caveman-mode-tracker.js 第 248–304 行 会记住被独立档顶替前的 prose 档位在下一条普通提示词上自动恢复——这正是 SKILL.md 承诺的 Level persist until changed or session end 在一过性技能场景下的工程兑现。会话状态与降级设计SKILL.md 承诺的持久性依赖可靠的状态文件读写。实现上有两处值得一提的健壮性设计按会话隔离 镜像兼容状态存于$CLAUDE_CONFIG_DIR/.caveman-sessions/session_id.modesession_id缺失或畸形时回退到旧的全局标志文件行为等价于升级前caveman-mode-tracker.js 第 128–131 行降级不翻转用户意图caveman-config.js缺失或导出形状不对时Hook 用内联的降级桩代替而不是抛MODULE_NOT_FOUND。降级桩的getDefaultMode会按真实解析顺序环境变量CAVEMAN_DEFAULT_MODE→ 仓库内.caveman.json/.caveman/config.json向上遍历 → 用户配置 → 内置默认full重新推导caveman-activate.js 第 77–123 行 的注释点明原因若降级忽略团队检查入库的defaultMode: off会把项目选择退出 caveman反转成强制注入。配置解析还支持仓库级.caveman.json设defaultMode: off让整个项目退出 cavemancaveman-mode-tracker.js 第 306–314 行 的getDefaultMode(data.cwd) ! off门控。实操速查操作方式激活默认档full/caveman切换档位/caveman lite、/caveman ultra、/caveman wenyan-lite等退出/caveman off或说 stop caveman / normal mode自然语言激活talk like caveman、be brief、less tokens项目级退出仓库内.caveman.json或.caveman/config.json设defaultMode: off当前模式显示statusline 徽章[CAVEMAN]/[CAVEMAN:ULTRA]/[CAVEMAN:WENYAN]配置见 src/hooks/README.md会话 token 用量/caveman-stats命令侧的实现载体是 commands/caveman.toml其 prompt 模板把档位参数与 SKILL.md 规则摘要一起下发src/rules/caveman-activate.md 则是注入其他宿主如 OpenClaw时的精简规则副本二者均派生自 SKILL.md 这一事实来源。小结caveman 技能文件是一份以 tokenizer 实测为依据、以语义保真为红线的输出压缩规则集六个强度档位覆盖从去填充词到极限文言的压缩光谱Auto-Clarity 保证安全警告与不可逆操作永远零歧义Boundaries 把压缩严格限制在聊天范围内代码、提交、工单正文一律正常书写。配套的 SessionStart 与 UserPromptSubmit Hook 负责把规则按当前档位过滤后注入上下文、逐轮强化、按会话持久化并以降级桩和引用免疫等防御性设计保证规则在残缺安装、多窗口、跨 compaction 场景下依然可靠。对想进一步核实的读者建议按 SKILL.md → caveman-activate.js → caveman-parse.js → tests/test_caveman_parse.js 的顺序阅读源码与测试。【免费下载链接】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),仅供参考