Token 使用与成本

Token 使用与成本

OpenClaw 跟踪的是 token,而不是字符。Token 是模型特定的,但大多数 OpenAI 风格的模型对于英文文本平均约 4 个字符为一个 token。

系统提示词如何构建

OpenClaw 每次运行都会组装自己的系统提示词。它包括:

  • 工具列表 + 简短描述
  • Skills 列表(只有元数据;指令按需通过 read 加载)
  • 自更新指令
  • 工作区 + 启动文件(AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(新建时),以及存在时的 MEMORY.md 和/或 memory.md)。大文件会被 agents.defaults.bootstrapMaxChars(默认:20000)截断,总启动注入也会被 agents.defaults.bootstrapTotalMaxChars(默认:150000)封顶。memory/*.md 文件通过记忆工具按需加载,不会自动注入。
  • 时间(UTC + 用户时区)
  • 回复标签 + 心跳行为
  • 运行时元数据(主机/系统/模型/thinking)

完整分解参见系统提示词

上下文窗口里算什么

模型接收到的一切都会计入上下文限制:

  • 系统提示词(以上列出的所有部分)
  • 对话历史(用户 + 助手消息)
  • 工具调用与工具结果
  • 附件/转录(图片、音频、文件)
  • 压缩摘要与修剪产物
  • 提供商包装层或安全头(不可见,但仍计入)

有关实际分解(每个注入文件、工具、Skills 和系统提示词大小),使用 /context list/context detail。参见上下文

如何查看当前 token 使用

在聊天中使用:

  • /statusemoji 丰富的状态卡片,展示会话模型、上下文使用情况、上一条回复的输入/输出 token,以及(仅 API key)预估成本
  • /usage off|tokens|full → 给每条回复追加逐回复 usage 页脚
    • 按会话持久化(存储为 responseUsage)。
    • OAuth 授权隐藏费用(只显示 tokens)。
  • /usage cost → 从 OpenClaw 会话日志中展示本地费用汇总。

其它入口:

  • **TUI/Web TUI:**支持 /status + /usage
  • CLI:openclaw status --usageopenclaw channels list 显示提供商用量窗口(配额快照,不是逐消息费用)。

成本估算(显示时)

费用根据你的模型定价配置估算:

models.providers.<provider>.models[].cost

这些是 inputoutputcacheReadcacheWrite每 100 万 tokens 的 USD。如果缺少定价,OpenClaw 只显示 tokens。OAuth 令牌从不显示美元费用。

Cache TTL 与修剪影响

提供商提示词缓存只在 cache TTL 窗口内生效。OpenClaw 可选运行 cache-ttl 修剪:当 cache TTL 到期后,它会修剪会话,然后重置 cache 窗口,使后续请求可以复用新鲜缓存的上下文,而不是对完整历史重新缓存。这能在会话闲置超过 TTL 时降低 cache 写入成本。

Gateway 网关配置 中配置它,并在 会话修剪 中查看行为详情。

心跳可以在闲置间隙让缓存保持温热。如果你的模型 cache TTL 是 1h,将心跳间隔设置得略低于 TTL(例如 55m)可以避免对完整提示词重新缓存,从而减少 cache 写入成本。

对于 Anthropic API 定价,cache reads 通常比 input tokens 便宜得多,而 cache writes 会以更高的倍率计费。关于最新费率、TTL 和倍率,请参阅 Anthropic 的 prompt caching 定价: https://docs.anthropic.com/docs/build-with-claude/prompt-caching

示例:用心跳保持 1 小时缓存温热

agents:
  defaults:
    model:
      primary: "anthropic/claude-opus-4-6"
    models:
      "anthropic/claude-opus-4-6":
        params:
          cacheRetention: "long"
    heartbeat:
      every: "55m"

降低 token 压力的小技巧

  • 使用 /compact 总结长会话。
  • 在你的工作流里裁剪过大的工具输出。
  • 保持 skill 描述短小(skill 列表会注入提示词)。
  • 做探索性、冗长任务时优先用小模型。

精确的 skill 列表开销公式参见 Skills