mcpField
C
caveman-compress

caveman-compress

github.com/rheinmirAgent 工作流10263 次安装2 周前更新
代码仓库

关于 caveman-compress

caveman-compress 是用于压缩 CLAUDE.md、待办事项和偏好等自然语言文件的 Agent 技能,以减少输入 token。它保留代码和技术细节,将原文备份,并在替换文件前验证压缩结果。

主要功能

  1. 01压缩自然语言文件
  2. 02保留代码与技术细节
  3. 03保存可读的原文备份
  4. 04验证结果并尝试定向修正

适用场景

  1. 01减少 CLAUDE.md 的 token 用量
  2. 02压缩待办事项和偏好文件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rheinmir/setup --skill caveman-compress

安装后在 Claude Code 中输入/caveman-compress确认已加载。

详细介绍

Caveman Compress

用途

将自然语言文件(CLAUDE.md、待办事项、偏好设置)压缩为洞穴人风格,以减少输入令牌数。压缩后的版本会覆盖原文件。人类可读的备份保存为 <filename>.original.md。

触发方式

/caveman-compress <filepath>,或用户要求压缩记忆文件时。

流程

  1. 压缩脚本位于 scripts/(与此 SKILL.md 同级)。如果无法直接找到路径,请在此 SKILL.md 同级目录中查找 scripts/__main__.py。

  2. 在包含此 SKILL.md 的目录中运行:

python3 -m scripts <absolute_filepath>

  1. CLI 将会:
  • 检测文件类型(不消耗令牌)
  • 调用 Claude 进行压缩
  • 验证输出(不消耗令牌)
  • 如果出现错误:使用 Claude 挑选并修复问题(仅针对性修复,不重新压缩)
  • 最多重试 2 次
  • 如果重试 2 次后仍失败:向用户报告错误,原文件保持不变
  1. 向用户返回结果

压缩规则

删除
  • 冠词: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"
  • 可使用片段:"Run tests before commit",而非 "You should always run tests before committing"
  • 删除 "you should"、"make sure to"、"remember to"——直接陈述操作
  • 合并含义相同的冗余项目
  • 多个示例说明同一模式时,只保留一个示例

关键规则: ... 内的所有内容必须原样复制。 不得:

  • 删除注释
  • 删除空格
  • 调整行顺序
  • 缩短命令
  • 简化任何内容

行内代码(...)必须原样保留。 不得修改反引号内的任何内容。

如果文件包含代码块:

  • 将代码块视为只读区域
  • 仅压缩代码块之外的文本
  • 不要合并代码块周围的章节

示例

原文:

在将任何更改推送到 main 分支之前,务必运行测试套件。这很重要,因为它有助于尽早发现错误,并防止有问题的构建部署到生产环境。

压缩后:

推送到 main 前运行测试。尽早发现错误,防止有问题的构建部署到生产环境。

原文:

应用采用微服务架构,包含以下组件。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(跳过该文件)

输出报告

完成所有主要技能任务后,将一份提案草稿写入 wiki。

步骤

1. 构建文件名:

  • 格式:DDMMYY-<ten>.md
  • DDMMYY = 今天的日期(例如,2026 年 6 月 2 日写作 020626)
  • <ten> = 用 2–4 个 kebab-case 单词概括完成的工作(例如,landing-page-coteccons、brand-kit-fintech、ingest-auth-spec)

2. 写入 llmwiki/wiki/draft/cave/DDMMYY-<ten>.md:

# DDMMYY-<ten>
**Type:** draft
**Status:** proposed
**Tags:** <skill-name>, output-report
**Proposed:** YYYY-MM-DD

## What
<One sentence — what this skill invocation produced or decided>

## Output
<Key artefacts, files created/modified, or decisions made>

## Files
| File | Action |
|------|--------|
| `path/to/file` | created / modified |

## Notes
- Invoked via: `/<skill-name>` skill

## Origin
- **Draft:** `wiki/draft/cave/DDMMYY-<ten>.md`
- **Commit:** _(filled by verify-before-commit)_
- **Date promoted:** _(filled by verify-before-commit)_

3. 更新 wiki 索引和日志:

  • llmwiki/wiki/index.md — 追加一行:| [DDMMYY-<ten>](draft/cave/DDMMYY-<ten>.md) | draft | YYYY-MM-DD |
  • llmwiki/wiki/log.md — 追加:## YYYY-MM-DD — <skill-name> — <ten>

仅当该技能没有产生任何产物且没有作出任何决策时才跳过(例如,纯展示模式 /caveman-stats)。

评论

支持 Markdown