清晰策略节省API令牌 | AI生成和翻译

Home 2026.05

问题: 频繁使用 /clear(开启新会话)是使用 Claude/Hermes 代理时节省 token 的策略之一吗?

答案:

是的,完全正确。在代理式 CLI 工作流中,/clear 是最直接的节省 token 的手段之一。以下是其核心逻辑:

为什么上下文长度 = token 成本

会话中的每条消息都会追加到上下文窗口中,该窗口会在 每次后续 API 调用 时被发送。因此,一个 50 轮对话的成本不是 50 ×(最后一轮消息的 token 数),而是 50 ×(累积历史 token 数)。这在实际中呈二次方增长。

第 1 轮:发送 100 token
第 5 轮:发送 500 token
第 20 轮:发送 2000 token  ← 即使每条消息都很小

/clear 作为精准工具

当你执行 /clear 时:

关键在于:大多数任务并不需要完整的历史记录——它们只需要最近 1-3 轮的上下文。因此,在不同子任务之间使用 /clear 几乎总是正确的选择。

何时激进地使用 /clear

场景 是否清除?
从调试切换到编写 ✅ 是
新建文件/新功能 ✅ 是
长时间多工具探索后 ✅ 是
在调试单个 bug 的中途 ❌ 否——上下文是关键支撑
继续执行多步骤计划 ❌ 否

/clear 配合的其他节省 token 策略

既然你正在构建 CLI 代理(wwzz 等),你可能已经了解其中一些,但完整情况如下:

  1. 频繁使用 /clear——主要手段
  2. 精简系统提示——不要在每个会话中塞满 2000 token 的指令
  3. 工具输出截断——如果你的代理读取文件/运行 bash,在注入上下文之前主动截断标准输出
  4. 先总结再清除——让 Claude 总结当前状态 → /clear → 将总结作为第一条消息注入。有损但低成本
  5. 任务分解——将大型代理任务拆分为独立的子任务,每个子任务使用新的会话
  6. 避免重新读取未更改的文件——在客户端缓存文件内容,不要每轮都重新注入

先总结再清除的代码模式

def compress_session(client, history):
    summary = client.messages.create(
        model="claude-sonnet-4-20250514",
        max_tokens=500,
        messages=history + [{
            "role": "user",
            "content": "用不到200字总结当前任务状态。包括:已完成事项、下一步计划、任何关键变量/路径/决策。"
        }]
    )
    # 现在清除历史,只注入总结
    return [{
        "role": "user",
        "content": f"[会话恢复] 上下文:{summary.content[0].text}"
    }]

这就是 Claude Code 的 “compact” 功能在内部所做的——本质上就是先总结再清除。

结论

是的,/clear 是一级策略。需要养成的思维习惯是:将每次 /clear 视为一次 git 提交边界——完成一个连贯的工作单元,清除,重新开始。不要仅仅因为方便就让上下文跨不相关任务累积。


Back Donate