关键词:OpenClaw Token优化、AI Agent成本控制、Prompt Caching、上下文压缩、模型路由


前言:你付的钱比你以为的多得多

用 AI Agent 一段时间,很多人发现账单比预期高,却不知道钱花在哪。

本文基于 2026 年 3 月的实测数据,系统分析 OpenClaw 的 Token 消耗机制,给出完整的降本方案。

核心公式:Token 花费 = 上下文体积 × 对话轮数

实测结果:每轮固定开销从 ~11,500 token 降到 ~6,500 token,降幅 43%,折算年省约 $162(Claude Sonnet,每日 30 轮)。


一、Token 消耗模型

1.1 单次请求的完整成本构成

用户输入(你打的字)        ← 你以为这是全部,实际只占约 0.1%
├── 系统提示词(人格固件)  ← 每轮重复发送,10,000-50,000+ tokens
├── 对话历史(全量重发)    ← 随轮数线性增长,第30轮可超 200,000 tokens
├── 工作区文件注入         ← 核心配置文件,最高 35,600 tokens
├── 工具调用输出(永驻)   ← 读文件/搜索的结果,永久留在历史
└── 后台隐式任务           ← 标题生成、标签分类等,4-5 个不可见请求

1.2 对话轮数的雪球效应

实测数据(含工具调用膨胀):

轮次 实测消耗
第 1 轮 ~2,100 tokens
第 5 轮 ~22,000 tokens
第 20 轮 ~102,000 tokens
第 30 轮 ~200,000+ tokens

第 30 轮的消耗是第 1 轮的 100 倍——这是最容易被忽视的成本来源。

1.3 七大吞金点

编号 消耗项 占比 特点
1 对话历史累积 ~40-50% 随轮数增长,最大单项
2 系统提示词(SOUL/AGENTS/USER.md) ~15% 每轮固定重发
3 后台隐式任务(标题/标签/建议) ~10% 用户不可见
4 工具调用输出永驻 ~10-20% 读文件后永久留存
5 工作区文件注入 ~5-10% 每条消息都携带
6 心跳任务 可变 频率越高越贵
7 系统提示词重复 Bug 可变 某些版本会重复发送

二、实测优化方案(五台手术)

手术一:合并重复规则

坑:多个 Rule 文件内容高度重叠,每轮都被加载多次

为什么踩:分开写的时候觉得各有侧重,后来内容越来越重叠,也没有主动合并。

# 诊断:检查是否有重复的 Rule 文件
ls -la ~/.openclaw/workspace/

# 操作:合并内容相近的文件
cat ~/.openclaw/workspace/rule-a.md >> ~/.openclaw/workspace/SOUL.md
rm ~/.openclaw/workspace/rule-a.md

解决方案:检查 Rule 文件,找到高度重叠的,合并成一个,删掉冗余。

节省:~800 tokens/轮


手术二:Rules 降级为按需加载

坑:6 条规则全部 always-on,大多数时候用不上

为什么踩:想着「万一用到呢」,就全部设成常驻。但其中 3 条(企微通知、双写同步、产出归档)只在特定场景才需要。

// openclaw.json 配置示例
{
  "rules": [
    {
      "file": "SOUL.md",
      "load": "always"        // 核心规则,始终加载
    },
    {
      "file": "wechat-push.md",
      "load": "on_demand",    // 只在需要时加载
      "trigger": ["企微", "推送", "通知"]
    },
    {
      "file": "archive.md",
      "load": "on_demand",
      "trigger": ["归档", "保存", "存档"]
    }
  ]
}

解决方案:核心规则 always-on,其余改为按需加载,靠关键词触发。出门不需要同时带护照驾照身份证,日常只带身份证就够了。

节省:~1,200 tokens/轮


手术三:Memory 瘦身

坑:20+ 条记忆,一半已过时还每轮都在加载

为什么踩:每次添加记忆,但很少清理。记忆越堆越多,过时的信息一直在跑。

# 查看当前记忆条目数量
grep "^- " ~/.openclaw/workspace/MEMORY.md | wc -l

# 删除标准:
# 1. 超过 30 天未被引用的信息
# 2. 与当前项目无关的历史信息
# 3. 已经写入专项文件的重复信息
# 4. 已经过时的规则或结论

解决方案:从 20+ 条精简到 13 条,定期维护,不让记忆无限膨胀。

节省:~1,500 tokens/轮


手术四:知识地图两级架构

坑:863 行的知识索引文件每次全量加载

为什么踩:一个文件装所有知识,「以防万一」每次都全量带上。

<!-- 优化前:KNOWLEDGE-MAP.md 863 行,全量加载 -->

<!-- 优化后:分为两层 -->

<!-- L1:精简路由表(~200 行,始终加载) -->
# Knowledge Map

## 快速索引
- AI Agent 相关 → ./knowledge/ai-agent/README.md
- 产品设计相关 → ./knowledge/product/README.md
- 技术实现相关 → ./knowledge/tech/README.md

<!-- L2:各域详细内容(仅在需要时读取) -->

解决方案:拆成路由表 + 域文件。不需要把整本黄页带在身上,带个索引页,用到哪页再翻。

节省:~1,500 tokens/轮


手术五:Rules 内容精简

坑:always-on 的规则文件本身也有赘肉

为什么踩:写规则的时候追求表达完整,用了很多说明性文字,实际很多是冗余的。

<!-- 优化前(冗长版本,约 50 字) -->
## 输出格式规则
当用户要求输出内容时,你需要确保输出的内容格式清晰、
结构合理、层次分明,并且符合相应场景的要求。
在技术文档场景下,应该使用 Markdown 格式...

<!-- 优化后(精简版本,约 15 字) -->
## 输出格式
- 技术文档:Markdown
- 分析报告:结论先行,数据支撑
- 代码:带注释,语言标注

解决方案:346 行 → 261 行,把废话删掉,只保留指令本体。

节省:~600 tokens/轮


优化汇总

优化项目              | 节省 (token/轮)
---------------------|----------------
合并重复规则          | ~800
Rules 降级按需        | ~1,200
Memory 瘦身           | ~1,500
知识地图两级架构      | ~1,500
Rules 内容精简        | ~600
---------------------|----------------
合计                  | ~5,600

优化前: ~11,500 tokens/轮
优化后: ~6,500 tokens/轮
降幅: 43%

三、六大通用省钱技巧

技巧一:/compact 上下文压缩

# 在对话中输入
/compact 保留关于数据库设计的讨论

# 效果:对话历史从完整内容压缩为摘要
# 节省:30-50%
# 最佳时机:对话超过10轮,或准备切换到新话题

技巧二:任务分解

# 错误示范:在一个对话里完成所有事
# "帮我做一个完整的用户认证系统"
# → 50轮对话 → ~300万 token

# 正确示范:拆成独立对话
subtasks = [
    "实现用户注册接口",           # ~10轮 → ~15万 token
    "实现用户登录和 JWT",         # ~8轮  → ~12万 token
    "实现密码重置流程",           # ~8轮  → ~12万 token
    "集成 OAuth2.0 第三方登录",   # ~12轮 → ~20万 token
]
# 合计:~59万 token,节省 80%

技巧三:精准提问模板

## 低效提问(~300 tokens)
"我在做一个 React TypeScript 项目,
 有个组件叫 UserProfile,里面有个 bug,
 就是头像那里,加载失败的时候会白屏,
 你能帮我看看是什么问题吗?"

## 高效提问(~50 tokens)
"修复 src/components/UserProfile.tsx 中:
 头像加载失败时显示白屏(应显示默认头像)"

精准提问三原则

  1. 先说文件路径
  2. 先说结论(问题是什么),再说背景
  3. 一次只问一件事

技巧四:LSP 集成

# VSCode 安装 LSP 插件示例
# Python:
code --install-extension ms-python.python

# Go:
code --install-extension golang.go

# 效果对比
# 无 LSP:搜索函数定义 → 读取多个文件 → ~15,000 tokens
# 有 LSP:精确跳转到定义 → ~500 tokens
# 节省:30-40%(被动优化,无需任何操作)

技巧五:Prompt Caching 配置

# Anthropic SDK 手动配置缓存(如果需要精细控制)
import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "你的系统提示词...",
            "cache_control": {"type": "ephemeral"}  # 启用缓存
        }
    ],
    messages=[{"role": "user", "content": "用户输入"}]
)

# 查看缓存命中情况
print(response.usage.cache_read_input_tokens)     # 命中缓存的 tokens
print(response.usage.cache_creation_input_tokens) # 创建缓存的 tokens

各平台折扣率

平台 缓存命中价格 正常价格 折扣
Claude $0.30/M $3.00/M 90% off
OpenAI $0.75/M $1.50/M 50% off
DeepSeek $0.035/M $0.14/M 75% off

技巧六:模型路由策略

# 根据任务类型选择模型的决策逻辑
def select_model(task_type: str) -> str:
    routing = {
        "architecture_design": "claude-opus-4-5",   # $15/M tokens
        "complex_coding": "claude-sonnet-4-5",       # $3/M tokens
        "simple_coding": "claude-haiku-3-5",         # $0.25/M tokens
        "text_formatting": "claude-haiku-3-5",       # $0.25/M tokens
        "data_processing": "deepseek-chat",          # ¥1/M tokens
    }
    return routing.get(task_type, "claude-sonnet-4-5")

# 价格对比(100万 tokens)
# Claude Opus:   $15.00
# Claude Sonnet: $3.00
# Claude Haiku:  $0.25
# DeepSeek V3:   ¥1.33 (~$0.18)

四、监控与预算设置

设置每日 Token 预算

// ~/.openclaw/openclaw.json
{
  "budget": {
    "daily_token_limit": 500000,
    "alert_threshold": 0.8,
    "hard_stop": true
  }
}

Token 使用监控

# 查看今日消耗
openclaw stats --today

# 查看各对话消耗排名
openclaw stats --top-conversations --limit 10

# 查看按模型分类的消耗
openclaw stats --by-model --since "7 days ago"

五、优化效果参考

优化措施 节省比例 实现难度 建议优先级
模型路由 50-80% 最高
/compact 习惯 30-50%
任务分解 40-60% ⭐⭐
Prompt Caching 60-90% ⭐ (自动)
精准提问 20-30% ⭐⭐
LSP 集成 30-40% ⭐ (被动)
Memory 瘦身 10-20% ⭐⭐⭐
Rules 按需加载 10-15% ⭐⭐⭐

常见问题 Q&A

Q:这些优化都做完需要多久?

A:六大技巧(/compact、任务拆分、精准提问、LSP、Caching、模型路由)今天就能用,不需要任何配置。五台手术(合并规则、按需加载、Memory 瘦身、知识地图拆分、内容精简)一次性做完约 1-2 小时,之后维护成本很低。

Q:Memory 清理会不会把重要信息删掉?

A:清理之前先做备份。清理标准:超过 30 天未被引用、与当前项目无关、已经写入专项文件的重复信息。保守一点,只删明显过时的,其余保留。

Q:心跳频率怎么设置比较合理?

A:30 分钟到 60 分钟一次是比较常见的配置。如果不需要实时监控,60 分钟比 30 分钟能省约一半的心跳开销。


更多内容请关注公众号【一深思AI】
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐