Appearance
Token 用量与成本
OpenClaw 追踪的是 token,而不是字符数。Token 数量与模型相关,但大多数 OpenAI 风格模型对英文文本平均每个 token 约 4 个字符。
系统提示词的构建方式
OpenClaw 在每次运行时自动组装自己的系统提示词,包含:
- 工具列表 + 简短描述
- Skills 列表(仅元数据;说明按需通过
read加载) - 自更新指令
- 工作区 + 启动文件(
AGENTS.md、SOUL.md、TOOLS.md、IDENTITY.md、USER.md、HEARTBEAT.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 --usage和openclaw channels list显示提供商配额窗口(非每次响应费用)。
费用估算(显示时)
费用根据你的模型定价配置估算:
models.providers.<provider>.models[].cost这些是 input、output、cacheRead 和 cacheWrite 的每百万 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。