Skip to content

Token 用量与成本

OpenClaw 追踪的是 token,而不是字符数。Token 数量与模型相关,但大多数 OpenAI 风格模型对英文文本平均每个 token 约 4 个字符。

系统提示词的构建方式

OpenClaw 在每次运行时自动组装自己的系统提示词,包含:

  • 工具列表 + 简短描述
  • Skills 列表(仅元数据;说明按需通过 read 加载)
  • 自更新指令
  • 工作区 + 启动文件(AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.md,新实例时含 BOOTSTRAP.md,有时含 MEMORY.md 或小写 memory.md 兜底)。大文件由 agents.defaults.bootstrapMaxChars(默认:20000)截断,引导注入总量由 agents.defaults.bootstrapTotalMaxChars(默认:150000)限制。memory/*.md 文件通过内存工具按需获取,不会自动注入。
  • 时间(UTC + 用户时区)
  • 回复标签 + 心跳行为
  • 运行时元数据(主机/操作系统/模型/思考)

完整细节见系统提示词

上下文窗口中计入什么

模型接收到的所有内容都计入上下文限制:

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

对于图像,OpenClaw 在调用提供商前会对转录/工具图像载荷进行降尺寸处理。 使用 agents.defaults.imageMaxDimensionPx(默认:1200)调整:

  • 较低的值通常减少视觉 token 用量和载荷大小。
  • 较高的值为 OCR/UI 密集型截图保留更多视觉细节。

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

如何查看当前 Token 用量

在聊天中使用这些命令:

  • /status表情符号丰富的状态卡片,显示会话模型、上下文用量、上次响应的输入/输出 token 数,以及估算费用(仅 API 密钥模式)。
  • /usage off|tokens|full → 在每次回复后附加每次响应的用量页脚
    • 每次会话持久化(存储为 responseUsage)。
    • OAuth 认证隐藏费用(仅显示 token 数)。
  • /usage cost → 从 OpenClaw 会话日志显示本地费用摘要。

其他界面:

  • TUI/Web TUI: 支持 /status + /usage
  • CLI: openclaw status --usageopenclaw channels list 显示提供商配额窗口(非每次响应费用)。

费用估算(显示时)

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

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

这些是 inputoutputcacheReadcacheWrite每百万 token 美元价格。如果缺少定价信息,OpenClaw 仅显示 token 数量。OAuth token 永不显示美元费用。

缓存 TTL 与剪枝影响

提供商提示词缓存仅在缓存 TTL 窗口内有效。OpenClaw 可以选择性地运行缓存 TTL 剪枝:在缓存 TTL 到期后剪枝会话,然后重置缓存窗口,以便后续请求可以重新利用新缓存的上下文,而不是重新缓存完整历史。当会话在 TTL 后进入空闲时,这样可以降低缓存写入成本。

网关配置中配置,行为细节见会话剪枝

心跳可以在空闲间隙保持缓存温热。如果你的模型缓存 TTL 是 1h,将心跳间隔设置为略低于该值(例如 55m)可以避免重新缓存完整提示词,降低缓存写入成本。

在多代理设置中,你可以保持一个共享模型配置,并通过 agents.list[].params.cacheRetention 为每个代理调整缓存行为。

完整的配置说明见提示词缓存

对于 Anthropic API 定价,缓存读取比输入 token 便宜得多,而缓存写入按较高倍数计费。最新费率和 TTL 倍数见 Anthropic 提示词缓存定价: https://docs.anthropic.com/docs/build-with-claude/prompt-caching

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

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

示例:混合流量下的每代理缓存策略

yaml
agents:
  defaults:
    model:
      primary: "anthropic/claude-opus-4-6"
    models:
      "anthropic/claude-opus-4-6":
        params:
          cacheRetention: "long" # 大多数代理的默认基线
  list:
    - id: "research"
      default: true
      heartbeat:
        every: "55m" # 为深度会话保持长缓存温热
    - id: "alerts"
      params:
        cacheRetention: "none" # 避免为突发通知写入缓存

agents.list[].params 叠加在所选模型的 params 之上,因此你只需覆盖 cacheRetention,其他模型默认值保持不变。

示例:启用 Anthropic 1M 上下文 Beta 标头

Anthropic 的 1M 上下文窗口目前处于 Beta 门控。当你在支持的 Opus 或 Sonnet 模型上启用 context1m 时,OpenClaw 可以注入所需的 anthropic-beta 值。

yaml
agents:
  defaults:
    models:
      "anthropic/claude-opus-4-6":
        params:
          context1m: true

这对应 Anthropic 的 context-1m-2025-08-07 Beta 标头。

仅当该模型条目上设置了 context1m: true 时才适用。

要求:凭据必须符合长上下文使用资格(API 密钥计费,或启用了额外用量的订阅)。否则 Anthropic 会返回 HTTP 429: rate_limit_error: Extra usage is required for long context requests

如果你使用 OAuth/订阅令牌(sk-ant-oat-*)对 Anthropic 进行认证,OpenClaw 会跳过 context-1m-* Beta 标头,因为 Anthropic 目前会以 HTTP 401 拒绝该组合。

降低 Token 压力的技巧

  • 使用 /compact 压缩长会话。
  • 精简工作流中的大型工具输出。
  • 对截图密集型会话降低 agents.defaults.imageMaxDimensionPx
  • 保持 Skill 描述简短(Skill 列表会注入到提示词中)。
  • 对冗长的探索性工作优先使用较小的模型。

养龙虾省钱技巧:给你的龙虾设置好心跳间隔,让它在空闲时保持缓存温热,能省下不少 API 费用。

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