关于 caveman-compress
Caveman Compress 是一项压缩 CLAUDE.md、偏好记录等自然语言文件以减少 token 用量的技能。它要求明确指定文件路径,将原文备份到源目录之外,并提醒文件文本会发送给配置的模型提供方。
主要功能
- 01压缩自然语言文件
- 02在源目录外备份原文
- 03拒绝读取疑似密钥文件
- 04验证输出并重试修正
- 05保留代码和技术标识符
适用场景
- 01减少 CLAUDE.md 的 token 用量
- 02压缩任务和偏好记录
- 03整理供 Agent 加载的记忆文件
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ juliusbrussee/ caveman --skill caveman-compress安装后在 Claude Code 中输入/caveman-compress确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
README.mdSECURITY.mdscripts/__init__.py__main__.pybenchmark.pycli.pycompress.pydetect.pyvalidate.py详细介绍
Caveman Compress
用途
数据会离开本机。 压缩会将文件的完整文本发送给
scripts/compress.py所配置的模型提供方:claudeCLI、Anthropic API 或 OpenAI 兼容端点。文件名看起来像密钥的文件(.env、credentials、secrets、.netrc等)会在读取前被拒绝。不要压缩不应让提供方看到的文件。
将自然语言文件(CLAUDE.md、待办事项、偏好设置)压缩成简略表达,以减少输入 token。压缩后的版本会覆盖原文件。人类可读的备份会保存为 <filename>.original.md,但不会放在源文件旁边,而是存放在树外的数据目录($XDG_DATA_HOME/caveman-compress/backups/<parent-dir-name>/,或 Windows 上的 %LOCALAPPDATA%\caveman-compress\backups\<parent-dir-name>\),以免技能自动加载器将其作为活动文件重新载入。
触发方式
/caveman-compress <filepath>,或用户要求压缩记忆文件时。
必须提供明确的文件路径。 如果用户粘贴原始文本而没有指定文件名,切勿自行尝试内联压缩——请询问要压缩的文件路径,或先提出将粘贴的文本保存到文件中。将你对请求的推理/评论写入压缩后的输出(例如“用户直接传入了文本,而不是文件路径……”)正是此规则要防止的问题——绝不要让这类内容泄漏到已保存的文件中。
流程
-
压缩脚本位于
scripts/中(与此 SKILL.md 同级)。如果无法立即找到该路径,请在此 SKILL.md 同级目录中查找scripts/__main__.py。 -
在包含此 SKILL.md 的目录中运行:
python3 -m scripts <absolute_filepath>
- CLI 将会:
- 检测文件类型(不消耗 token)
- 调用 Claude 进行压缩
- 验证输出(不消耗 token)
- 如果有错误:使用 Claude 挑选并修复问题(仅针对性修复,不重新压缩)
- 最多重试 2 次
- 如果重试 2 次后仍然失败:向用户报告错误,并保持原文件不变
- 将结果返回给用户
压缩规则
删除
- 冠词:a、an、the
- 填充词:just、really、basically、actually、simply、essentially、generally
- 客套语:“sure”“certainly”“of course”“happy to”“I'd recommend”
- 委婉措辞:“it might be worth”“you could consider”“it would be good to”
- 冗余表达:“in order to” → “to”,“make sure to” → “ensure”,“the reason is because” → “because”
- 多余的连接词:“however”“furthermore”“additionally”“in addition”
完全保留(绝不修改)
- 代码块(围栏式 ``` 和缩进式)
- 行内代码(
反引号中的内容) - URL 和链接(完整 URL、Markdown 链接)
- 文件路径(
/src/components/...、./config.yaml) - 命令(
npm install、git commit、docker build) - 技术术语(库名称、API 名称、协议、算法)
- 专有名词(项目名称、人物、公司)
- 日期、版本号、数值
- 环境变量(
$HOME、NODE_ENV)
保留结构
- 所有 Markdown 标题(标题文本保持原样,压缩下方正文)
- 项目符号层级(保持嵌套级别)
- 有序列表(保持编号)
- 表格(压缩单元格文本,保持结构)
- Markdown 文件中的 Frontmatter/YAML 标头
精简
- 使用简短同义词:“big”而非“extensive”,“fix”而非“implement a solution for”,“use”而非“utilize”
- 可使用短语:“提交前运行测试”,而非“你应该始终在提交前运行测试”
- 删除“you should”“make sure to”“remember to”——直接说明操作
- 合并表达相同内容的重复条目
- 多个示例展示相同模式时,只保留一个
关键规则:
... 中的所有内容都必须原样复制。
不要:
- 删除注释
- 删除空格
- 调整行顺序
- 缩短命令
- 简化任何内容
行内代码(...)必须原样保留。
不要修改反引号内的任何内容。
如果文件包含代码块:
- 将代码块视为只读区域
- 只精简代码块外的文本
- 不要合并代码块周围的章节
示例
原文:
在将任何更改推送到主分支之前,你应该始终确保运行测试套件。这很重要,因为它有助于及早发现错误,并防止有问题的构建部署到生产环境。
精简后:
推送到主分支前运行测试。及早发现错误,防止有问题的构建部署到生产环境。
原文:
应用采用微服务架构,包含以下组件。API 网关处理所有传入请求,并将其路由到相应服务。身份验证服务负责管理用户会话和 JWT 令牌。
精简后:
微服务架构。API 网关将所有请求路由到各服务。身份验证服务管理用户会话和 JWT 令牌。
范围
- 仅精简自然语言文件(.md、.txt、.typ、.typst、.tex、无扩展名文件)
- 绝不修改:.py、.js、.ts、.json、.yaml、.yml、.toml、.env、.lock、.css、.html、.xml、.sql、.sh
- 如果文件包含混合内容(散文 + 代码),只精简散文部分
- 如果不确定某段内容是代码还是散文,则保持原样
- 原始文件会备份为 FILE.original.md,存放在树外的备份数据目录中(参见“目的”),而非源文件旁边
- 绝不精简 FILE.original.md(跳过)