# caveman

> 来源：[GitHub](https://github.com/JuliusBrussee/caveman) · ⭐ 4403 stars

## 项目简介

在人工智能领域，特别是大型语言模型（LLM）的应用中，上下文窗口（Context Window）和令牌（Token）数量是决定成本和性能的关键瓶颈。无论是使用 OpenAI 的 GPT 系列还是 Anthropic 的 Claude，用户都需要为输入和输出的令牌付费，并且过长的上下文可能影响模型的响应速度与准确性。正是在这种背景下，一个名为 **caveman** 的开源项目应运而生，它以一种看似“原始”却极其聪明的方式，巧妙地解决了令牌消耗过高的问题。

caveman 的核心价值在于其“返璞归真”的理念。它并非一个复杂的模型优化框架，而是一个极其轻量级的 Claude 代码技能（Skill）。其核心思想是：**通过模仿“穴居人”式的简化、直接、省略语法结构的语言风格来与 Claude 对话，从而在不影响任务完成质量的前提下，大幅减少对话中使用的令牌数量**。根据项目作者的测试，这种方法平均可以节省高达 65% 的令牌消耗。对于需要频繁调用 API 进行代码生成、问题解答或文档分析的开发者而言，这意味着直接的成本削减和效率提升。

## 核心特性

*   **极致的令牌节省**：项目的核心目标就是减少令牌使用。通过其独特的“穴居人语”（Caveman Speak）沟通方式，能够将冗长的自然语言指令压缩为极其精炼的短语，从而在输入（Prompt）环节就实现大幅度的令牌削减。
*   **轻量级与无侵入性**：caveman 本身不修改 Claude 模型，也不依赖复杂的中间件。它仅仅定义了一种更高效的“提问方式”。用户无需部署服务或集成 SDK，只需在对话中模仿这种风格，即可获得收益，学习成本几乎为零。
*   **专注于代码场景**：该项目最初和最主要的优化场景是编程任务。例如，将“请帮我写一个 Python 函数，它接收一个列表并返回去重后的新列表”这样的指令，简化为“python make list unique”。Claude 经过特定训练，能够准确理解这种简略指令并生成高质量代码。
*   **双向通信优化**：caveman 风格不仅适用于用户提问，也鼓励模型以简练的方式回复。模型会模仿用户的简略风格进行回应，从而在输出环节也节省了令牌，形成了高效的“极简对话”循环。

## 技术实现

caveman 的技术实现非常直接，其“技术栈”的核心是 **Prompt Engineering（提示词工程）** 和 **Claude Code Skill 的定制**，而非复杂的代码架构。

1.  **��示词工程的艺术**：项目的本质是发现并固化了一种对 Claude（特别是 Claude 3 系列模型）极其高效的提示模式。作者通过实验发现，Claude 在理解精简的、类似电报或命令行指令的“破碎英语”方面表现出色。这种语言省略了冠词（a, the）、介词、复杂的从句结构，只保留核心的名词、动词和关键词。例如，“解释代码”变成“explain code”，“修复错误”变成“fix error”。这大幅降低了语言的熵，减少了令牌化后的 token 数量。

2.  **Claude Code Skill 机制**：为了将这种风格固化并方便使用，作者将其创建为一个官方的 **Claude Code Skill**。在 Claude 的代码编辑器中，用户可以“启用”这个 Skill。启用后，Claude 会进入一个特定的模式，它会：
    *   **识别并适应输入**：自动识别用户使用的“穴居人语”，并理解其意图。
    *   **调整输出风格**：在回复时，也采用类似的简练风格，比如用更少的解释性文字，直接给出代码块或关键点列表。
    这个 Skill 相当于一个轻量级的“行为契约”，对齐了用户和模型的通信协议。

3.  **项目仓库内容**：GitHub 仓库中的 Python 代码主要用于 **效果验证和基准测试**。例如，`benchmark.py` 脚本会使用标准英语和穴居人英语分别向 Claude API 发送同一系列编程任务，并统计、比较消耗的令牌数，用数据证明节省效果。其技术栈就是简单的 `python` + `anthropic` SDK。

## 快速上手

使用 caveman 有两种主要方式，都非常简单。

**方式一：在 Claude Web 界面或桌面应用中启用 Skill（最简单）**
1.  在 Claude 的代码编辑器或聊天界面中，找到并点击“添加技能”（Add Skill）或类似的按钮。
2.  在技能商店中搜索 “caveman”。
3.  找到 “🪨 Caveman” 技能并启用它。
4.  启用后，直接开始用简化的“穴居人语”和 Claude 对话即可。

**方式二：在 API 调用中模仿其风格**
如果你通过 Anthropic API 调用 Claude，只需在你的系统提示（System Prompt）或用户消息中模仿这种风格。

标准指令 vs Caveman 风格指令对比：

```python
# 标准英语指令 (Token 较多)
user_message_standard = """
Please write a Python function named `read_json_file`. It should take a single argument `file_path`. The function needs to open the file, parse it as JSON, handle potential exceptions like FileNotFoundError and JSONDecodeError gracefully, and return the parsed data.
"""

# Caveman 风格指令 (Token 极少)
user_message_caveman = "python function read_json_file(file_path). open file, parse json. handle FileNotFoundError, JSONDecodeError. return data."
```

通过 API 调用的代码示例：

```python
import anthropic
from dotenv import load_dotenv
import os

load_dotenv()
client = anthropic.Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))

# 使用 Caveman 风格提问
response = client.messages.create(
    model="claude-3-sonnet-20240229",
    max_tokens=1000,
    messages=[{
        "role": "user",
        "content": "python make fastapi endpoint /health. return {'status': 'ok'}"
    }]
)
print(response.content[0].text)
```
模型很可能会回复一个简洁的 FastAPI 健康检查端点代码，而不会有过多的解释性文字。

## 应用场景

1.  **批量代码生成与重构**：当开发者需要快速生成大量样板代码、工具函数或进行简单的代码转换（如将 CSV 读取改为 JSON 读取）时，使用 caveman 风格可以极大提高交互效率。例如，连续输入“python pandas read csv sort by column”、“now save to parquet”、“add error logging”等指令，可以快速完成一个小脚本的迭代构建，且每次交互的令牌成本极低。

2.  **代码审查与解释**：在分析不熟悉的代码库时，可以用简短的指令让 Claude 快速提取关键信息���例如，将一段复杂代码粘贴后，直接输入“explain logic”、“find bug”、“suggest improvement”或“list all functions”。模型会给出直击要点的回答，避免了在冗长的自然语言解释上消耗令牌。

3.  **自动化脚本与 CI/CD 任务**：在需要将 Claude API 集成到自动化流程（如自动生成文档、为提交信息生成建议、审查 PR 描述）的场景中，使用精炼的指令能显著降低每次 API 调用的成本。这对于高频、自动化的任务尤为重要，长期下来成本节省效果显著。

## 总结

caveman 项目是一个将“少即是多”（Less is More）哲学发挥到极致的典范。它没有采用复杂的技术架构，而是通过深刻的洞察和巧妙的提示词设计，直击 LLM 应用成本的核心痛点。它特别适合那些需要高频、高效与 Claude（尤其是进行编程任务）交互的开发者、技术写作者和自动化工程师。虽然其“穴居人语”风格在需要复杂逻辑推理或细致入微讨论的场景下可能不适用，但在其擅长的领域内，它无疑是一把削减成本、提升通信效率的利刃。这个项目也提醒我们，在追求更强大模型的同时，优化我们与模型的“对话方式”同样蕴含着巨大的价值。