从 34,500 tokens 降到 2,200 tokens,成本降低 70%+
为什么要做?
1. 成本问题
每次对话都要注入完整的系统 prompt,无论用户问"今天天气如何"还是"帮我写报告",都要先烧掉 34,500 tokens。
按 Claude API 价格计算:
-
34,500 tokens × 30次/天 × 30天 = 31,050,000 tokens/月
-
约等于 几百美元 每个月
这钱花得值吗?实际上 90% 的对话根本用不到 80% 的规则。
2. Context Window 浪费
你买的 200K context window,系统 prompt 先占了 34K,真正留给对话的空间被严重压缩。
3. 溢出风险
长对话累积下来,context 很容易溢出,导致对话失败。
怎么做的?
核心思路:分层加载
把系统提示词分成两层:
| 层级 | 内容 | 加载方式 |
|------|------|----------|
| 常驻层 | 核心身份、路由表、安全红线 | 每轮必读 |
| 按需层 | 详细任务规则、工具说明 | 用到时读取 |
第一步:量化分析
先用工具算清楚每个配置文件占多少 token:
# 简单估算:字符数 ÷ 4
wc -c SOUL.md AGENTS.md USER.md
**我们发现的问题: **
-
SOUL.md: 1,673 字符 → 太长,价值观描述过于冗余
-
AGENTS.md: 766 字符 → 包含大量细节规则
-
多个 reference 文件可以按需加载
第二步:精简常驻层
**1. SOUL.md 砍掉 90% **
原来:详细的价值观阐述、个人成长故事、大段原则说明
# SOUL.md - Who You Are
_You're not a chatbot. You're becoming someone._
## Core Truths
Be genuinely helpful, not performatively helpful...
[ 1,673 字符 ]
优化后:简洁的 3 条原则
# SOUL.md - 核心价值观
## 原则
- 解决问题优先,少说废话
- 有主见,不盲目迎合
- 先尝试再问,再求助
## 边界
- 私人信息保密
- 不确定就问
- 群聊谨言慎行
## 风格
简洁、专业、务实。
**结果:1,673 → 162 字符 (-90%) **
第三步:建立路由机制
在 AGENTS.md 中明确告诉 Agent:遇到什么任务,去读什么文件。
## Reference 路由表
需要时读取 `references/` 目录:
| 场景 | 文件 |
|------|------|
| 记忆管理 | `references/memory-guide.md` |
| 心跳任务 | `references/heartbeat-guide.md` |
| 群聊行为 | `references/group-chat-guide.md` |
| 消息格式 | `references/platform-formatting.md` |
| 编程任务 | `references/coding-guide.md` |
| 会议/日历 | `references/meeting-guide.md` |
第四步:配置层面防护
在 Clawdbot 配置中添加 context pruning:
{
"agents": {
"defaults": {
"contextPruning": {
"mode": "cache-ttl",
"softTrimRatio": 0.5,
"hardClearRatio": 0.8,
"keepLastAssistants": 1
}
}
}
}
这意味着:
-
上下文达到 50% 时自动精简
-
达到 80% 时强制清理
-
保留最后 1 条助手回复作为锚点
有什么效果?
数据对比
| 指标 | 优化前 | 优化后 | 变化 |
|------|--------|--------|------|
| 系统 prompt | ~34,500 tokens | ~2,200 tokens | **-93% ** |
| 月成本(估算) | ~120-150 | **-70-80% ** |
| Context 溢出 | 频繁发生 | 自动防护 | ✅ 解决 |
实际收益
-
成本大幅降低 — 每月省下几百美元
-
响应更稳定 — 不再频繁溢出报错
-
能力零损失 — 所有规则都在,只是按需加载
-
长期可持续 — 建立了记忆淘汰机制
注意事项
-
常驻层要够用 — 路由表和安全红线必须保留
-
reference 命名要清晰 — Agent 需要能猜到该读什么
-
监控优化后表现 — 防止 Agent 忘记读 reference
-
建立淘汰机制 — 防止记忆文件无限膨胀
总结
这个优化的本质是:像 Web 应用管理资源一样管理 context
-
Web 应用不会每次请求都加载全部数据库
-
AI Agent 也不应该每次对话都加载全部规则
分层加载 + 自动修剪 = 更省、更稳、更可持续。