Anthropic 令牌优化器
最小化 Anthropic API 成本而不牺牲质量。重点关注缓存读取减少——Opus 长会话的主要成本驱动因素。
Anthropic 定价参考模型
输入 缓存写入 缓存读取 输出
Haiku $0.80 $1.00 $0.08 $4
Sonnet $3 $3.75 $0.30 $15
Opus $15 $18.75 $1.50 $75
(每 MTok — 乘以数百万令牌)
关键见解:缓存读取 = 上下文大小 × 转数。200k 上下文 × 50 转 Opus = 大约 $15 只是缓存读取。
第一部分:配置优化(openclaw.json)
"压缩": {
"模式": "安全保障",
"模型": "anthropic/claude-sonnet-4-20250514"
}
Sonnet 总结比 Opus 少 5 倍的成本。质量可比拟。
"上下文修剪": {
"模式": "缓存-TTL",
"TTL": "1h"
}
TTL 行为 结论
1h 修剪后 1 小时 最佳平衡
30m 适度 适合活跃会话
5m 激进 丢失工具结果
"参数": {
"缓存保留": "长",
"上下文1m": true
}
“长” = 更少的缓存写入(Opus 上的 $18.75/MTok!)。不要切换到“默认”。
Anthropic 缓存在大约 1 小时空闲后过期。55 分钟的心跳保持它的活跃:
"心跳": {
"每": "55m"
}
防止代理在空闲后恢复时进行昂贵的缓存重写。
"引导最大字符": 8000,
"引导总最大字符": 30000
检查当前注入:/上下文列表。防止超大文件每次转换时膨胀。
第二部分:工作空间卫生(最大的长期收益)
文件预算 文件 目标 审查周期
AGENTS.md <500 令牌(约 2KB) 每月
SOUL.md <250 令牌(约 1KB) 很少
TOOLS.md <500 令牌(约 2KB) 工具更改时
MEMORY.md <400 令牌(约 1.5KB) 每周修剪
HEARTBEAT.md <400 令牌(约 1.5KB) 完成时
memory/YYYY-MM-DD.md <30 行 每日结算
总注入 <2,800 令牌
减少策略
合并冗余文件(IDENTITY.md + USER.md → SOUL.md)
将非必需文档移到子文件夹(docs/,notes/)— 不自动注入
将探索结果折叠成决策:保留“我们决定了什么”,删除“我们如何到达这里”
修剪幽灵上下文:旧路径、已删除工具、已修复错误的引用
去重复:SOUL.md 中的信息不应在 MEMORY.md 或 AGENTS.md 中重复
每日内存规则
写入:决策 + 为什么(1 行),新工具/配置,经验,用户首选项。
跳过:探索步骤,命令输出,已经在 MEMORY.md 中的内容,已交付内容。
格式:项目符号,而不是段落。每行一个事实。
第三部分:行为模式
- 每个主题之后 /compact (最有效的手动操作)
/compact 集中于 [主题总结]
上下文重置为 0。不要携带 200k 进入无关工作。
为代码库 grep、阅读 5+ 文件、研究/网络获取生成子代理(更便宜的模型)。
工具结果保持隔离。
截断:| head -20, | jq '.key'
仅从 API 请求所需字段。
不要粘贴完整的 JSON 当你只需要一个值时
输出 >50 行 → 总结,而不是引用
启动:仅加载今天 + 昨天的内存文件
仅在任务需要该技能时读取 SKILL.md
不要重新读取已经在上下文中的文件
第四部分:上下文预算
信息分区 预算 内容
10% 任务指令 + 约束
40% 最近 5-10 转对话
20% 决策日志(“尝试 X,失败,因为 Y”)
20% 高相关性 MEMORY.md 片段
10% 工具模式 + 系统提示
压缩生存
在压缩之前,必须捕获关键状态:
WAL 协议:在更正、决策、特定值时 → 在响应之前写入 SESSION-STATE.md
工作缓冲区:在 60%+ 上下文 → 将交换总结追加到 memory/working-buffer.md
恢复:在压缩后,先读取缓冲区 + 会话状态。
永远不要问“我们在哪里?”
会话生命周期
在 85% 上下文或 3+ 压缩后 → 使用 /new 从头开始。
良好的 MEMORY.md 意味着最小的上下文损失。
第五部分:代码库地图缓存(Atris 模式)
问题:每次代码审查或探索会话都会重新读取相同的文件,从而在重复的 grep/读取调用上浪费令牌。
一个 500 文件的项目可以仅仅因为导航就花费 50k+ 令牌。
解决方案:生成一个持久的代码库地图(atris/MAP.md),并在会话之间重用。
设置(每个项目一次)
# 安装 atris 技能
npx clawhub@latest install atris
# 或手动:在项目根目录中创建 atris/ 文件夹,然后扫描
rg "^(export|function|class|const|def |async def |router\.|app\.)" \
--line-number -g "!node_modules" -g "!.git" -g "!dist" -g "!.env*"
MAP.md 结构
# MAP.md — [项目] 导航指南 > 最后更新:YYYY-MM-DD
快速参考
src/index.ts:1 — 应用程序入口点
src/routes/auth.ts:15 — POST /login 处理程序
src/models/user.ts:8 — 用户模式
功能:身份验证
- 入口:
src/auth/login.ts:45-89 (handleLogin)
- 验证:
src/auth/validate.ts:12 (validateToken)
- 路由:
src/routes/auth.ts:15 (POST /login)