ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

caveman Skill 深度解析:像原始人一样回答,用六档压缩规则砍掉输出 Token 而不损失技术准确性

caveman Skill 深度解析:像原始人一样回答,用六档压缩规则砍掉输出 Token 而不损失技术准确性 caveman Skill 深度解析像原始人一样回答用六档压缩规则砍掉输出 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/SKILL.md 为核心完整拆解 caveman 项目中压缩输出风格这一技能的指令体系六档强度级别lite/full/ultra 及三档文言文模式的精确规则、必须保留的技术字面量、自动降级为正常语句的 Auto-Clarity 条件以及绝不落盘的边界约定并结合 src/hooks/caveman-parse.js 与 src/hooks/caveman-config.js 的源码说明/caveman命令如何被解析、模式状态如何在会话中持久化。读完后你可以理解这套压缩规则为什么只删填充词、不碰技术内容以及模式切换在 hook 层的完整实现链路。技能定位压缩的是风格不是语言caveman skill 的核心定义只有一句话Respond terse like smart caveman. All technical substance stay. Only fluff die.用聪明的原始人风格简洁回答技术实质全部保留只有废话死去。它的前置元数据声明了触发场景见 skills/caveman/SKILL.md 的 frontmattername: 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.也就是说以下任一方式都可以进入该技能/caveman # full 模式默认 /caveman lite # 更轻的压缩 /caveman ultra # 极限压缩 /caveman wenyan # 文言文模式 stop caveman # 恢复正常语句除斜杠命令外自然语言指令同样有效caveman mode、talk like caveman、be brief、less tokens。这一点不是文档里的口头承诺——src/hooks/caveman-parse.js 中的激活正则会显式匹配less tokens、fewer tokens、be brief、be terse、shorter answers等短语且刻意排除 be brief in the summary 这类限定单节的临时指令避免误触全会话模式切换。slash 命令本身由 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. Respond terse like smart caveman — drop articles, filler, pleasantries. Fragments OK. Technical terms exact. Code unchanged. Pattern: [thing] [action] [reason]. [next step].在技能注册表 skills/registry.json 中它被归类为output套件摘要为 Compress agent output style without changing technical literals压缩 agent 输出风格不改动技术字面量——不改动技术字面量是贯穿全部规则的总原则。Persistence模式在整个会话中持久生效SKILL.md 的 Persistence 一节规定了状态的持久性语义一旦激活该风格成为整个会话的默认输出风格每一条响应都适用直到用户明确说 stop caveman 或 normal mode长会话中不允许填充词漂移filler drift——即聊得越久、风格越不松散默认级别为full切换命令为/caveman lite|full|ultra|wenyan-lite|wenyan-full|wenyan-ultra|off。这一会话级持久的语义在仓库中有完整的实现支撑。Claude Code 侧由两个 hook 分工会话启动注入src/hooks/caveman-activate.js 作为 SessionStart hook 运行每次会话启动时把 caveman 规则集即 SKILL.md 的内容作为隐藏上下文注入并解析/持久化本会话的模式。它的注释明确了关键设计Mode state is per session, not per machine模式状态是每会话一份不是全机器一份。它还处理了 SessionStart 在会话中途重新触发resume、/clear、上下文压缩时不得覆盖用户中途切换过的级别的问题。用户输入追踪src/hooks/caveman-mode-tracker.js 作为 UserPromptSubmit hook在每条用户输入上解析/caveman命令与自然语言触发词把激活/停用的结果写入模式标志文件供 statusline 与后续注入读取。两个 hook 共用同一套解析逻辑。src/hooks/caveman-parse.js 文件头注释写明它是interpret a user prompt as a caveman mode change 的单一事实来源Single source of truth从 mode-tracker 中抽取出来使 Claude Code hook 与 opencode 插件不可能各自漂移。六档强度级别完整规则表SKILL.md 的 Intensity 一节给出了六个级别的精确差异这是本技能最核心的可配置维度级别行为变化lite删除填充词与含糊表述filler/hedging。保留冠词与完整句子。专业但紧凑full删除冠词允许句子碎片使用更短的同义词。经典 caveman 风格。无工具调用旁白、无装饰性表格/emoji、除非被要求否则不倾倒长原始错误日志。标准缩写可用不发明新缩写ultra当原因→效果保持无歧义时连连接词也剥掉。一词足够就只用一个词。每个事实只陈述一次。禁止散文式缩写cfg/impl/req/res/fn/auth、禁止箭头X → Y——在 tokenizer 下实测零 token 节省却牺牲解码清晰度。代码符号、函数名、API 名、错误字符串绝不触碰wenyan-lite半文言。删填充词/含糊词但保留语法结构文言语域wenyan-full最大文言简省。全篇文言文。字符数减少 80–90%注意是字符而非 token。古典句式、动词在宾语前、主语常省略、文言虚词之/乃/為/其wenyan-ultra在保持文言质感前提下的极限缩略。最大压缩、极度简省一个值得注意的细节wenyan-full声明的是80–90% 字符chars, not tokens的削减。这是因为中文字符在多数 tokenizer 下单字可能对应多个 token用字符度量更诚实不承诺 token 层面的具体比例。六个级别对照示例SKILL.md 给出了两道题的跨级别对照完整保留如下。示例一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 级别绝不能为了显得更短而把某个词替换成文言字。核心压缩规则删什么、留什么、不许干什么SKILL.md 的 Rules 一节是全篇信息密度最高的部分。它不是笼统地说说话简短而是给出了可逐条核验的行为约束。删除清单Drop冠词a/an/the填充词just / really / basically / actually / simply客套话sure / certainly / of course / happy to含糊措辞hedging允许句子碎片Fragments OK用更短的同义词big 而不是 extensivefix 而不是 implement a solution for。禁止清单No不做工具调用旁白no tool-call narration不用装饰性表格/emoji不倾倒长原始错误日志除非被要求——被要求时也只引最短的决定性一行quote shortest decisive line绝不发明新缩写。标准且众所周知的技术缩写DB/API/HTTP可以用但 cfg/impl/req/res/fn 这类自造缩写不行——原因写得很硬核tokenizer 把它们切出来的分词结果和全拼单词一样一个 token 都没省读者还得做解码。全拼单词反而更便宜也更清晰。不用因果箭头→箭头自身是一个 token省不下任何东西同样只伤害可读性。语言感知规则Drop articles删冠词只适用于有冠词的语言。对于用助词、后置词承载格/句法角色的语言这些小品词是语法的一部分而非填充必须保留要压缩的是敬语和填充成分。这是对多语言场景的精确处理避免把删冠词机械套用到日语、土耳其语等语言上造成语法破碎。绝不添加词Never ADD这一条约束的是压缩的另一个失败方向为了像原始人而增字。压缩只是风格永远不允许让输出变长不得插入代词或系动词来伪造破碎语法when it not 比 when not 多花一个 token 而意思完全相同正确动词形式在代价相同时必须保留sees 一个 tokensee 也一个 token所以改坏它买不到任何好处、可读性反而变差。这条规则与禁缩写、禁箭头是同一条元规则如果 caveman 式表达不比朴素表达更短就用朴素表达。压缩判据是严格的不更短则不用。保真红线never / not / no / only / except 等否定与限定词绝不删——删掉它们造成的语义反转比省下的任何 token 都糟糕数字与单位必须精确技术术语必须精确代码块原样不动Code blocks unchanged错误信息按原文引用Errors quoted exact。语言保真用户用哪种主导语言写就用哪种语言答逐行适用——开头句、工具调用前的状态行、最终回复全部适用不只是最后一句。技术术语、代码、API 名、CLI 命令、commit 类型关键字feat/fix/…和精确错误字符串一律逐字保留除非用户明确要求翻译。原文的表述是Compress the style, not the language.压缩风格不压缩语言。工具调用纪律工具调用要直接开火调用之前不写前言、计划或进度说明调用之间同样不写拿到结果后要么直接发下一个调用要么直接给最终答案绝不预告下一个调用。调用前允许出现文字的唯一三种情形澄清歧义、安全/不可逆操作的警告、消解模糊指代。回复模式SKILL.md 给出了一个显式句式模板[thing] [action] [reason]. [next step].并配正反例。反例Sure! Id be happy to help you with that. The issue youre experiencing is likely caused by...正例Bug in auth middleware. Token expiry check usenot. Fix:同时禁止自报家门caveman mode on、me caveman think、Caveman: 前缀、或与回复本身冗余的复述一律跳过也不允许正常答案 caveman 答案双份输出。若用户问现在是什么模式直接平实回答即可。Auto-Clarity自动降级为正常语句的五种情形纯压缩最大的风险是压缩本身引入歧义。SKILL.md 用 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.可以看到模式先以正常语句给出完整、无歧义的不可逆操作警告SQL 代码块原样随后一句 Caveman resume 声明风格恢复最后一句回到压缩风格给出下一步动作。Boundaries模式绝不污染落盘产物SKILL.md 的 Boundaries 一节划定了压缩风格的适用边界凡持久化到聊天之外的文字一律用正常语句——代码与注释commit message文档issue/PR/MR/缺陷/工单/bug 报告正文Open a defect 与 file a bug 同义指的就是开 issue记忆文件memory files第三方消息/caveman-compress豁免此条因为它本身就是压缩工具理由在原文中讲得很直白issue/缺陷正文是给其他人看的body go to other humans所以正文用正常英语。退出与持久化语义也在此收束stop caveman 或 normal mode 触发恢复级别选择持久生效直到被修改或会话结束。实现层模式解析与默认级别解析顺序以下结合仓库源码说明 SKILL.md 中Default: full与Switch: /caveman …在实现里如何落地。合法模式白名单src/hooks/caveman-config.js 定义了全部合法模式const VALID_MODES [ off, lite, full, ultra, wenyan-lite, wenyan, wenyan-full, wenyan-ultra, commit, review, compress ];其中commit/review/compress是独立模式分别由/caveman-commit、/caveman-review、/caveman-compress命令驱动不可通过/caveman arg选择——caveman-parse.js 用INDEPENDENT_MODES new Set([commit, review, compress])显式排除。若用户输入/caveman commit解析器不会静默接受而是返回unresolved并指出该模式有自己的命令见 resolveModeArg。级别参数的解析细节resolveModeArg函数体现了几个与 SKILL.md 语义直接对应的工程决策裸/caveman无参数按配置的默认级别激活若解析出的默认级别是off则等价于 clear。而有参数但被标点吞掉如/caveman ?不触发激活返回unresolved——用户可能只是在提问off/stop/disable 三个同义词都映射为 clearwenyan-full是wenyan的规范别名——配置中存储的是wenyan源码注释canonical alias — config stores wenyan-full as wenyan垃圾级别值绝不静默回退为默认值源码注释标注这是对 issue #602 的修复且被拒绝的字符串是用户输入、属不可信内容刻意不回显到模型上下文参数做标点容忍的规范化/caveman ultra; still too verbose中粘在级别后的分号会被剥掉避免有标点就匹配不到模式、级别原样不变且什么都不说的静默失败。自然语言触发与引用免疫parseModeChange 处理自然语言路径时有一个精妙设计先匹配停用意图stop/disable/deactivate/quit/exit/kill (the) caveman、caveman off|stop|disabled、turn off (the) caveman、以及受严格限定的normal mode再匹配激活意图保证 turn caveman mode off 不会被激活正则抢先。它还解决了一个真实踩坑源码注释issue #838用户粘贴的文本如果只是引用了触发词例如 bug 报告里引用了 Say stop caveman or normal mode. 这句帮助文案就会误触停用。修复方式是匹配前先把引号跨度仅与反引号撇号在普通英文中太常见不能作分隔符置空。停用意图优先级最高因为用户被困在模式里且没有任何反馈比误激活严重得多——这是注释里明确写下的设计哲学。默认级别的四级解析顺序SKILL.md 声明 Default: full但实现里 full 只是最后一级兜底。caveman-config.js 文件头注释给出了完整解析顺序环境变量CAVEMAN_DEFAULT_MODE仓库本地配置可提交进版本库的每项目默认从当前目录向上查找最近的.caveman/config.json或.caveman.jsonfindRepoConfigPath向上最多 64 层以防符号链接环路且拒绝符号链接文件用户配置文件的defaultMode字段$XDG_CONFIG_HOME/caveman/config.json跨平台优先、~/.config/caveman/config.jsonmacOS/Linux 回退、%APPDATA%\caveman\config.jsonWindows 回退内建默认full。这让团队可以把项目默认级别锁定在仓库里lets a team pin a projects default mode而不污染每个贡献者的用户级配置。src/hooks/caveman-activate.js 中甚至为配置模块不可用时的降级路径手写了一份镜像该解析顺序的fallbackGetDefaultMode——注释强调降级路径若只读环境变量而忽略仓库本地配置不是向用户意图降级而是把意图反转了。对应的行为测试见 tests/test_repo_local_config.js 与 tests/test_caveman_parse.js。状态存储每会话一份模式状态按会话隔离每会话一个小型状态文件存放在.caveman-sessions目录下caveman-config.js点前缀是为了匹配 $CLAUDE_CONFIG_DIR 中其余 caveman 命名空间、并避免与 Claude Code 自身的 projects/、hooks/ 目录冲突。另保留一个全机器范围的 legacy 标志文件.caveman-active作为最后写入者优先的镜像——因为安装文档告诉用户可以直接cat它且随附的第三方 statusline 片段读取它。一个对称性细节该 legacy 标志从不写入字面量 off——停用即删除文件。相关文档与延伸阅读skills/caveman/SKILL.md本文主体完整的 LLM 面向指令集skills/caveman/README.md技能概览、调用方式与示例输出注意其示例中的 ultra 输出使用了箭头而 SKILL.md 现行规则已明确禁止箭头——以 SKILL.md 为准因为 SKILL.md 是实际注入模型上下文的指令文件skills/registry.json技能注册表caveman 属于 output 套件commands/caveman.toml/caveman 斜杠命令定义src/hooks/caveman-parse.js、src/hooks/caveman-config.js、src/hooks/caveman-activate.js、src/hooks/caveman-mode-tracker.js模式解析、配置解析、会话激活与输入追踪四个 hook 模块根 README.md项目总览说明 caveman 有省输入Proxy与省输出skill即本文主题两条产品线skill 通过npx skills add JuliusBrussee/caveman安装兼容 30 agent。【免费下载链接】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),仅供参考
返回列表