Appearance
OpenClaw 用 token 而非字符计费,通过 /status 或 /usage 命令查看当前会话 token 消耗和估算费用。系统提示词自动组装,包含工具列表、技能元数据、启动文件等;缓存 TTL 剪切和心跳可以降低缓存写入成本,配置见网关配置。对于 Anthropic 模型,启用 context1m: true 可获得 1M 上下文窗口,但 OAuth 令牌不支持该功能。预算较低的场景可调低图片最大尺寸、压缩长对话。
Token 用量与成本
OpenClaw 追踪的是 token,而不是字符数。Token 数量与模型相关,但大多数 OpenAI 风格模型对英文文本平均每个 token 约 4 个字符。
系统提示词的构建方式
OpenClaw 在每次运行时自动组装自己的系统提示词,包含:
- 工具列表 + 简短描述
- Skills 列表(仅元数据;说明按需通过
read加载)。Skills 块的大小受skills.limits.maxSkillsPromptChars限制,可在智能体级别用agents.list[].skillsLimits.maxSkillsPromptChars覆写。 - 自更新指令
- 工作区 + 启动文件(
AGENTS.md、SOUL.md、TOOLS.md、IDENTITY.md、USER.md、HEARTBEAT.md,新实例时含BOOTSTRAP.md,以及已有的MEMORY.md)。小写memory.md不会注入(仅作旧版修复输入,由openclaw doctor --fix在已存在MEMORY.md时使用)。大文件由agents.defaults.bootstrapMaxChars(默认:12000)截断,总启动注入量由agents.defaults.bootstrapTotalMaxChars(默认:60000)限制。memory/*.md每日文件不属于正常的启动型提示词;它们通过 memory 工具按需获取,但重置/启动模型运行可以附加一个一次性启动上下文块(startupContext)包含最近的 daily memory。纯粹的/new和/reset命令在确认后不调用模型。 - 时间(UTC + 用户时区)
- 回复标签 + 心跳行为
- 运行时元数据(主机/操作系统/模型/思考)
完整细节见系统提示词。
上下文窗口中计入什么
模型接收到的所有内容都计入上下文限制:
- 系统提示词(上述所有部分)
- 对话历史(用户 + 助手消息)
- 工具调用和工具结果
- 附件/转录(图像、音频、文件)
- 压缩摘要和剪枝产物
- 提供商包装或安全标头(不可见,但仍计入)
部分运行时重量级表面有独立上限:
agents.defaults.contextLimits.memoryGetMaxCharsagents.defaults.contextLimits.memoryGetDefaultLinesagents.defaults.contextLimits.toolResultMaxCharsagents.defaults.contextLimits.postCompactionMaxChars
智能体级别覆写在 agents.list[].contextLimits 下。这些参数仅限运行时摘要和运行时自有块,与启动限制、启动上下文限制和 Skills 提示限制分开。
对于图像,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显示规范化后的提供商配额窗口(X% left,非每次响应费用)。当前支持配额窗口的提供商:Anthropic、GitHub Copilot、Gemini CLI、OpenAI Codex、MiniMax、Xiaomi、z.ai。
用量展示会标准化不同提供商的字段别名。对于 OpenAI-family Responses 流量,兼容 input_tokens / output_tokens 和 prompt_tokens / completion_tokens,因此不会因传输字段名不同而影响 /status、/usage 或会话摘要。Gemini CLI JSON 用量同样标准化:回复文本来自 response,stats.cached 映射为 cacheRead,当 CLI 缺少显式 stats.input 字段时使用 stats.input_tokens - stats.cached。对于原生 OpenAI-family Responses 流量,WebSocket/SSE 用量别名同样标准化,当 total_tokens 缺失或为 0 时,回退到标准化后的 input + output。
当前会话快照稀疏时,/status 和 session_status 还可以从最近一次的转录用量日志中恢复 token/cache 计数器和活动运行时模型标签。已存在的非零实时值优先于转录回退值,当存储的总数缺失或较小时,较大的面向提示的转录总数也会胜出。
提供商配额窗口的用量认证由提供商特定钩子处理;否则 OpenClaw 回退到从 auth profiles、环境变量或配置中匹配 OAuth/API-key 凭据。
助手转录条目持久化相同的标准化用量结构,包括 usage.cost(当活动模型配置了定价且提供商返回用量元数据时)。这为 /usage cost 和基于转录的会话状态提供了稳定来源,即使运行时状态已消失。
OpenClaw 将提供商用量核算与当前上下文快照分开。提供商的 usage.total 可以包含缓存输入、输出和多次工具循环模型调用,因此对成本和遥测有用,但可能高估实时上下文窗口。上下文显示和诊断使用最新的提示快照(promptTokens,或没有提示快照时取最后一次模型调用)作为 context.used。
费用估算(显示时)
费用根据你的模型定价配置估算:
models.providers.<provider>.models[].cost这些是 input、output、cacheRead 和 cacheWrite 的每百万 token 美元价格。如果缺少定价信息,OpenClaw 仅显示 token 数量。OAuth token 永不显示美元费用。
在 Sidecars 和渠道到达 Gateway 就绪路径后,OpenClaw 会为尚未有本地定价的已配置模型引用启动一个可选的后台定价引导程序。该引导程序会获取远程 OpenRouter 和 LiteLLM 定价目录。设置 models.pricing.enabled: false 可跳过离线或受限网络下的目录获取;显式配置的 models.providers.*.models[].cost 条目继续驱动本地费用估算。
缓存 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 时才适用。
要求:凭据必须符合长上下文使用资格。否则,Anthropic 会针对该请求返回提供商侧的速率限制错误。
如果你使用 OAuth/订阅令牌(sk-ant-oat-*)对 Anthropic 进行认证,OpenClaw 会跳过 context-1m-* Beta 标头,因为 Anthropic 目前会以 HTTP 401 拒绝该组合。
降低 Token 压力的技巧
- 使用
/compact压缩长会话。 - 精简工作流中的大型工具输出。
- 对截图密集型会话降低
agents.defaults.imageMaxDimensionPx。 - 保持 Skill 描述简短(Skill 列表会注入到提示词中)。
- 对冗长的探索性工作优先使用较小的模型。
Skills 列表开销的精确公式见 Skills。
常见问题
如何查看当前会话的 token 用量和费用?
在聊天中使用 /status 命令获取状态卡片,显示模型、上下文用量、输入/输出 token 和估算费用(仅 API 密钥模式)。使用 /usage off|tokens|full 在每次回复后追加用量页脚,该设置持久化到会话。用量页脚在 OAuth 认证下不显示费用。命令行下使用 openclaw status --usage 查看配额窗口。
如何配置 Anthropic 1M 上下文窗口?
在模型配置中设置 params.context1m: true,例如:
yaml
agents:
defaults:
models:
"anthropic/claude-opus-4-6":
params:
context1m: true仅适用于 Opus 或 Sonnet 模型。需使用 API 密钥且具备长上下文使用资格;OAuth 订阅令牌(sk-ant-oat-*)不支持,OpenClaw 会自动跳过相关标头。
缓存 TTL 剪枝和心跳如何降低成本?
OpenClaw 可在缓存 TTL 到期后自动剪枝会话并重置缓存窗口,避免重新缓存完整历史。设置心跳间隔略低于缓存 TTL(如 TTL=1h,心跳设为 55m)可在空闲间隙保持缓存温热,减少缓存写入次数。配置见 Gateway 配置中的缓存 TTL 剪枝和 heartbeat.every。