快速判断
- 01这个 Skill 是干嘛的
- 用多角色分工和协作流程组织复杂编码任务。
- 02它能解决什么问题
- 解决单个 Agent 在长链路任务中上下文过载、职责混杂和质量失控的问题。
- 03它适合谁来用
- 适合可以拆成研究、实现、测试和审查等角色的大型开发任务。
caveman
用多角色协作与明确分工组织复杂编码任务,减少单 Agent 长链路失控。
主要能力
Decision guide for delegating to caveman-style subagents. Tells the main thread WHEN to spawn cavecrew-investigator (locate code), cavecrew-builder (1-2 file edit), or cavecrew-reviewer (diff review) instead of doing the work inline or using vanilla Explore. Subagent output is caveman-compressed so the tool-result injected back into main context is ~60% smaller — main context lasts longer across long sessions. Trigger: "delegate to subagent", "use cavecrew", "spawn investigator/builder/reviewer", "save context", "compressed agent output".
使用方式
仓库级安装会保留完整目录;本次核验的入口是 plugins/caveman/skills/cavecrew/SKILL.md。使用前先阅读英文 README 与原始 SKILL.md,并按当前 Agent 的目录规范安装。
适用边界
多 Agent 编排会增加成本与协调开销,小修复不值得启用。
许可与来源
来源:GitHub 公开仓库。核验许可:MIT。本页是贴近原仓库结构的中文导读,具体参数、依赖和更新记录以英文 README 为准。
<p align="center"> <img src="docs/assets/caveman-logo-banner.png" alt="Caveman" width="720"> </p>
<p align="center"> <strong>why use many token when few do trick</strong> </p>
<p align="center"> Make your AI coding agent talk like a caveman.<br> Same answers, <strong>65% fewer output tokens</strong>. Brain still big. Mouth small. </p>
<p align="center"> <a href="https://github.com/JuliusBrussee/caveman/stargazers"><img src="https://img.shields.io/github/stars/JuliusBrussee/caveman?style=flat&color=yellow" alt="Stars"></a> <a href="./INSTALL.md"><img src="https://img.shields.io/badge/works_with-30%2B_agents-orange?style=flat" alt="30+ agents"></a> <a href="https://github.com/JuliusBrussee/caveman/commits/main"><img src="https://img.shields.io/github/last-commit/JuliusBrussee/caveman?style=flat" alt="Last commit"></a> <a href="LICENSE"><img src="https://img.shields.io/github/license/JuliusBrussee/caveman?style=flat" alt="License"></a> </p>
<p align="center"> <a href="#before--after">See it</a> · <a href="#install">Install</a> · <a href="#pick-your-grunt">Levels</a> · <a href="#what-you-get">What you get</a> · <a href="#benchmarks">Benchmarks</a> · <a href="#the-whole-cave">Ecosystem</a> · <a href="#caveman-2">Caveman 2</a> </p>
---
Caveman is a skill/plugin for Claude Code, Codex, Gemini, Cursor, Windsurf, Cline, Copilot, and 30+ other agents. Install once. Agent drops the filler and answers in tight caveman-speak, keeping code, commands, and errors byte-for-byte exact. You save output tokens on every reply, forever.
Before / After
<table> <tr> <th width="50%">🗣️ Normal agent — 69 tokens</th> <th width="50%"><img src="docs/assets/dancing-rock.svg" width="18" height="18" alt=""> Caveman agent — 19 tokens</th> </tr> <tr> <td valign="top">
The reason your React component is re-rendering is likely because you're creating a new object reference on each render cycle. When you pass an inline object as a prop, React's shallow comparison sees it as a different object every time, which triggers a re-render. I'd recommend using useMemo to memoize the object.
</td> <td valign="top">
New object ref each render. Inline object prop = new ref = re-render. Wrap in
useMemo.
</td> </tr> <tr> <td valign="top">
Sure! I'd be happy to help you with that. The issue you're experiencing is most likely caused by your authentication middleware not properly validating the token expiry. Let me take a look and suggest a fix.
</td> <td valign="top">
Bug in auth middleware. Token expiry check use
<not<=. Fix:
</td> </tr> </table>
Same fix. Third of the words. Nothing technical lost.
┌────────────────────────────────────────────┐
│ output tokens saved █████████ 65% │
│ input tokens saved ░░░░░░░░░ 0% │
│ technical accuracy █████████ 100% │
│ vibes █████████ OOG │
└────────────────────────────────────────────┘
Caveman no make brain smaller. Caveman make mouth smaller. Shrinks what the agent says, not what it knows.
Install
One command. Finds every agent on your machine. Installs for each.
# macOS · Linux · WSL · Git Bash
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh | bash
# Windows · PowerShell 5.1+
irm https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.ps1 | iex
~30 seconds. Needs Node ≥18. Skips agents you no have. Safe to re-run.
[!TIP] Turn it on: type
/cavemanor say "talk like caveman". Turn it off: say "normal mode". On Claude Code, Codex, and Gemini it's already on from message one. No command needed.
<details> <summary><strong>Install for one agent, or any of 30+ others</strong></summary>
<br>
Every agent has its own path (plugin, extension, rule file, or npx skills add). The full per-agent matrix, all flags, dry-run, and uninstall live in INSTALL.md. A few common ones:
# Claude Code plugin
claude plugin marketplace add JuliusBrussee/caveman && claude plugin install caveman@caveman
# Gemini CLI extension
gemini extensions install https://github.com/JuliusBrussee/caveman
# Cursor / Windsurf / Cline / Codex / 30+ more, via the skills registry
npx skills add JuliusBrussee/caveman -a cursor
Install broke? Open your agent in this repo and say: "Read CLAUDE.md and INSTALL.md, install caveman for me." Agent read repo, agent fix own brain. Snake eat tail.
</details>
Pick your grunt
Six levels. Switch anytime with /caveman <level>. Level sticks until you change it or the session ends.
| Level | Same sentence, shrunk |
|---|---|
| normal agent | You should wrap the object in useMemo, since a new reference is created on every render. |
lite | Wrap object in useMemo. New ref created every render. |
full (default) | New ref each render. Wrap object in useMemo. |
ultra | New ref/render. useMemo it. |
wenyan | New ref every render, so wrap in useMemo — rendered in classical Chinese, shorter still. |
[!NOTE] Speak your tongue. Caveman keeps your language. Write Portuguese, caveman grunt Portuguese. Spanish, French, same. It compresses the style, never translates.
wenyanmode is the exception on purpose: classical Chinese packs the most meaning per token.
What you get
| Command | What it does | |||
|---|---|---|---|---|
| `/caveman [lite\ | full\ | ultra\ | wenyan]` | Compress every reply. Level sticks for the session. |
/caveman-commit | Conventional Commit messages, ≤50-char subject. Why over what. | |||
/caveman-review | One-line PR comments: L42: 🔴 bug: user null. Add guard. | |||
/caveman-stats | Real session token usage, lifetime savings, USD. Tweetable line with --share. | |||
/caveman-compress <file> | Rewrite a memory file (like CLAUDE.md) into caveman-speak. Cuts ~46% input tokens every session after. Code, URLs, paths byte-preserved. | |||
caveman-shrink | MCP middleware. Wraps any MCP server, compresses its tool descriptions. npm. | |||
cavecrew-* | Caveman subagents (investigator, builder, reviewer). ~60% fewer tokens than vanilla, so main context lasts longer. |
[!TIP] On Claude Code the statusline shows
[CAVEMAN] ⛏ 12.4k— that's your lifetime tokens saved, updated on every/caveman-stats. Silence it withCAVEMAN_STATUSLINE_SAVINGS=0.
Benchmarks
Real token counts from the Claude API. Average 65% output reduction across 10 prompts (range 22–87%), measured against default verbose replies. Output tokens only, committed and reproducible in benchmarks/ and evals/.
| Task | Normal | Caveman | Saved |
|---|---|---|---|
| Explain React re-render bug | 1180 | 159 | 87% |
| Fix auth middleware token expiry | 704 | 121 | 83% |
| Set up PostgreSQL connection pool | 2347 | 380 | 84% |
| Explain git rebase vs merge | 702 | 292 | 58% |
| Refactor callback to async/await | 387 | 301 | 22% |
| Architecture: microservices vs monolith | 446 | 310 | 30% |
| Review PR for security issues | 678 | 398 | 41% |
| Docker multi-stage build | 1042 | 290 | 72% |
| Debug PostgreSQL race condition | 1200 | 232 | 81% |
| Implement React error boundary | 3454 | 456 | 87% |
| Average | 1214 | 294 | 65% |
[!IMPORTANT] Honest number warning. Caveman only shrinks output tokens. Input and reasoning tokens are untouched, and the skill itself adds ~1–1.5k input tokens per turn. So whole-session savings run smaller than the output number, and on already-terse workloads they can go net-negative. The real win is readability and speed. Cost savings are the bonus. When caveman wins, when it loses, and how to measure it yourself: docs/HONEST-NUMBERS.md.
Turns out short isn't just cheaper. A March 2026 paper, Brevity Constraints Reverse Performance Hierarchies in Language Models, tested 31 models and found that constraining large models to brief answers improved accuracy by ~26 points on some benchmarks. Sometimes less word = more correct.
<details> <summary><strong>caveman-compress receipts</strong> — real memory files, cutting input tokens forever</summary>
<br>
| File | Original | Compressed | Saved |
|---|---|---|---|
claude-md-preferences.md | 706 | 285 | 59.6% |
project-notes.md | 1145 | 535 | 53.3% |
claude-md-project.md | 1122 | 636 | 43.3% |
todo-list.md | 627 | 388 | 38.1% |
mixed-with-code.md | 888 | 560 | 36.9% |
| Average | 898 | 481 | 46% |
Every session after, that file loads ~46% smaller. Input tokens saved forever, not just one reply.
</details>
The whole cave
<table> <tr><td>
<img src="docs/assets/dancing-rock.svg" width="20" height="20" alt=""> Want the whole agent, not just its mouth? → caveman-code
This skill shrinks what an agent says. caveman-code shrinks everything — a full terminal coding agent, caveman top to bottom. ~2× fewer tokens than Codex on identical tasks. 20+ providers, plan mode, autopilot goal loop, MIT.
npm install -g @juliusbrussee/caveman-code
</td></tr> </table>
Five tools, one idea: agent do more with less.
| Repo | What it shrinks |
|---|---|
| caveman (you here) | What the agent says |
| caveman-code | The whole agent, end to end |
| cavemem | What the agent remembers, across sessions |
| cavekit | The build loop — spec-driven, no guessing |
| cavegemma | The compression baked into weights (Gemma fine-tune) |
<details> <summary><strong>Also: five sibling skills, one install</strong></summary>
<br>
JuliusBrussee/skills — works in Claude Code, Cursor, Gemini, Cline, Copilot, 40+ agents:
| Skill | What |
|---|---|
| caveman | This one. Speak less, say more. |
| grill-me | Agent grills your plan before you build the wrong thing. |
| interface-kit | Build UI that looks good, loads fast, works for everyone. |
| junior-to-senior | Adversarial review pass. Junior output in, senior output out. |
| loop-factory | Spec-driven task loop — inbox → active → archive. |
npx skills@latest add JuliusBrussee/skills
</details>
<details> <summary><strong>🦞 Teach the lobster brevity — OpenClaw integration</strong></summary>
<br>
OpenClaw is a self-host gateway: one box, many agents inside, wired to Slack / Discord / iMessage / Telegram. Lobster strong. Lobster smart. Lobster also talk a lot.
Same installer, scoped to one agent:
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh | bash -s -- --only openclaw
Two things happen, no more: a caveman skill lands in the workspace, and a tiny marker-fenced block is appended to SOUL.md (OpenClaw injects it every turn, so the lobster is terse from message one — no /caveman per session). Custom path? OPENCLAW_WORKSPACE=/your/path. Uninstall with the same line plus --uninstall; your other workspace content stays untouched. Lobster claw still sharp. Lobster mouth now small.
</details>
Caveman 2
Caveman make token small. Caveman 2 make it _provable_.
Today's savings numbers (including /caveman-stats) are local estimates. Caveman 2 measures and verifies them across a whole team — real receipts, real dashboard, real proof the tokens went down. Building it now.
Join the waitlist → caveman.so
How it works
- Install drops a skill file into your agent.
- Skill tells agent: drop filler, keep substance, use fragments — but never touch code, commands, or errors.
- On Claude Code, a hook writes a tiny flag file each session, so the agent talks caveman from message one without
/caveman. /caveman-statsreads your session log, counts tokens saved, writes the number to your statusline./caveman-compressrewrites memory files (likeCLAUDE.md) so every future session starts with a smaller context. Save tokens forever, not just once.
Hook architecture, file ownership, and CI sync are documented for maintainers in CLAUDE.md.
Privacy
Caveman no phone home. No telemetry, no analytics, no accounts, no backend. After install, zero network calls — the skill is a prompt, the hooks are local scripts, and /caveman-stats reads a log already on your disk. Install-time fetches (GitHub plus your agents' own registries) are spelled out in SECURITY.md.
Sponsors
Caveman free forever. Sponsors keep the rock sharp.
<p align="center"> <a href="https://www.atlascloud.ai"> <picture> <source media="(prefers-color-scheme: dark)" srcset="docs/assets/atlas-cloud-dark.svg"> <img src="docs/assets/atlas-cloud.svg" alt="Atlas Cloud" height="32"> </picture> </a> </p>
<p align="center"> <a href="https://www.atlascloud.ai"><strong>Atlas Cloud</strong></a> — full-modal AI inference platform, one API. </p>
<p align="center"> <a href="https://github.com/sponsors/JuliusBrussee"><strong>Want your rock here? → Sponsor caveman</strong></a> </p>
Star this repo
Caveman save you token, save you money. Star cost zero. Fair trade. ⭐
---
<sub> <strong>Docs:</strong> <a href="./INSTALL.md">Install matrix</a> · <a href="./docs/HONEST-NUMBERS.md">Honest numbers</a> · <a href="./CONTRIBUTING.md">Contributing</a> · <a href="./CLAUDE.md">Maintainer guide</a> · <a href="https://github.com/JuliusBrussee/caveman/issues">Issues</a> <br> <strong>Also by Julius Brussee:</strong> <a href="https://github.com/JuliusBrussee/revu-swift">Revu</a> — local-first macOS study app with FSRS spaced repetition (<a href="https://revu.cards">revu.cards</a>) <br><br> MIT — free like mass mammoth on open plain. </sub>