Issue 04 | Four-level Shifting — From Lite to Ultra to Classical Chinese

⏱ Est. reading time: 10 min Updated on 5/7/2026

🎯 Learning Objectives

Upon completing this issue, you will master:

  1. Caveman's 7 intensity levels and their applicable scenarios
  2. How to smoothly switch levels within a conversation
  3. The unique advantages of Wenyan (Classical Chinese) mode
  4. Comparison of Token compression rates across levels

📖 Core Content

4.1 Intensity Levels Overview

graph LR
    subgraph English["English Mode"]
        direction LR
        L["🪶 lite
Mild Compression"] --> F["🪨 full
Standard Compression
(Default)"] --> U["🔥 ultra
Extreme Compression"] end subgraph Chinese["Wenyan Mode"] direction LR WL["📜 wenyan-lite
Vernacular Wenyan"] --> W["📜 wenyan
Standard Wenyan"] --> WU["📜 wenyan-ultra
Minimalist Wenyan"] end English -.->|"Shorter Chinese Tokens"| Chinese

4.2 Same Problem, Seven Answers

Problem: Why do React components frequently re-render?

🗣️ Normal Claude (No Caveman)

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 so 
that React can properly detect that the prop hasn't changed.

~69 tokens

🪶 Lite

Your component re-renders because you create a new object reference 
each render. Inline object props fail shallow comparison every time. 
Wrap it in useMemo.

~30 tokens (56% compression)

🪨 Full (Default)

New object ref each render. Inline object prop = new ref = re-render. 
Wrap in useMemo.

~19 tokens (72% compression)

🔥 Ultra

Inline obj prop → new ref → re-render. useMemo.

~10 tokens (86% compression)

📜 Wenyan-Lite

每渲染新建对象参照,行内对象属性每次皆判为新值,致使重绘。以 useMemo 缓存之。

📜 Wenyan

物出新參照,致重繪。useMemo 裹之。

📜 Wenyan-Ultra

行内物→新參→重繪。useMemo。

4.3 Token Compression Rate Comparison

Level Style Compression Rate Applicable Scenarios
Normal Complete polite sentences 0% (Baseline) No Caveman used
lite Complete sentences, no fluff ~50-55% Newbie adaptation period / Technical documentation writing
full Fragmented technical phrases ~70-75% Daily development (Recommended)
ultra Telegram style / Arrow chain ~82-87% Quick debugging / Familiar domains
wenyan-lite Mixed vernacular and classical ~60% Chinese projects / Readability requirements
wenyan Standard Wenyan ~75% Chinese projects / Extreme Token compression
wenyan-ultra Minimalist Wenyan ~85%+ Pushing limits / Pure Token saving

4.4 Switching Commands

In Claude Code:

/caveman          # Switch to full (default)
/caveman lite     # Switch to lite
/caveman full     # Switch to full
/caveman ultra    # Switch to ultra
/caveman wenyan-lite   # Switch to wenyan lite
/caveman wenyan        # Switch to wenyan full
/caveman wenyan-ultra  # Switch to wenyan ultra

In Antigravity:

> Please switch to caveman ultra mode
> switch to caveman lite
> Answer in Wenyan mode

In Gemini CLI:

/caveman ultra
/caveman wenyan
/caveman lite

4.5 Mode Persistence

stateDiagram-v2
    [*] --> Full: Automatically written by SessionStart Hook
    Full --> Lite: /caveman lite
    Full --> Ultra: /caveman ultra
    Full --> Wenyan: /caveman wenyan
    Lite --> Full: /caveman full
    Ultra --> Full: /caveman full
    Wenyan --> Full: /caveman full
    Full --> Normal: "stop caveman"
    Lite --> Normal: "stop caveman"
    Ultra --> Normal: "stop caveman"
    Wenyan --> Normal: "stop caveman"
    Normal --> Full: "caveman mode"
    Normal --> [*]: Session ends

Key Rules:

  • The mode remains unchanged throughout the session until you manually switch it
  • It will not automatically "revert" to normal mode due to an increase in conversation turns
  • The mode resets after the session ends (defaults to full on next startup)
  • Code blocks, commit messages, and PR descriptions always maintain normal formatting

4.6 Unique Advantages of Wenyan Mode

Why did Caveman implement Wenyan mode? Because Classical Chinese (Wenyan) is one of the most Token-efficient written languages in human history.

Modern Chinese (55 characters):
"由于每次渲染都会创建一个新的对象引用,当你将行内对象作为属性传递时,
React 的浅比较每次都会认为它是一个不同的对象,从而触发重新渲染。
建议使用 useMemo 来缓存这个对象。"

Wenyan (12 characters):
"物出新參照,致重繪。useMemo 裹之。"

Wenyan mode is particularly suitable for:

  • Developers whose primary working language is Chinese
  • Scenarios requiring extreme Token compression
  • Reducing visual fatigue when reading large amounts of Agent output

💻 Practical Exercises

Exercise 1: Experience Gear Switching

Execute the following operations sequentially in your Agent, comparing the answer style of each mode:

> /caveman lite
> Explain what a JavaScript closure is

> /caveman full
> Explain what a JavaScript closure is

> /caveman ultra  
> Explain what a JavaScript closure is

> /caveman wenyan
> Explain what a JavaScript closure is

Exercise 2: Find Your Optimal Gear

For your current project, complete the following tasks using lite, full, and ultra modes respectively, to feel which gear best suits your workflow:

  1. Debug a Bug (requires detailed diagnosis → lite or full might be suitable)
  2. Refactor a Function (clear objective → full or ultra might be suitable)
  3. Explain an Architectural Decision (requires some context → lite might be suitable)

📝 Key Takeaways from This Issue

  1. Caveman offers 7 intensity levels: 3 English + 3 Wenyan + 1 disabled
  2. full is the recommended daily gear, balancing readability and compression rate (~75%)
  3. ultra is suitable for quick debugging, with the highest compression rate (~87%) but requires strong contextual understanding
  4. Wenyan mode is a hidden gem for Chinese developers, saving more Tokens than Modern Chinese
  5. The mode persists within the session and will not automatically "degrade" back to normal mode

🔗 References