Skip to content

上下文用量与费用 ​

模型的上下文窗口有上限。对话越长,每次请求发送的内容越多,费用也越高。本页介绍怎样查看用量,以及接近上限时怎么办。

接近上限的提示 ​

剩余预算不足 20% 时,输入框下方会出现提示,措辞与 Claude Code 一致:

情况提示
开启了自动压缩12% until auto-compact
没有开启自动压缩Context low (5% remaining) · Run /compact to compact & continue
  • 预算的计算:开启自动压缩时,预算是自动压缩阈值;没有开启时,预算是整个上下文窗口。
  • 用量的估算:按最近一次压缩之后的消息和工具输出估算。
  • 何时显示:模型配置或默认能力提供上下文窗口时出现。DeepSeek(1048576 tokens)、Claude(200000 tokens)和 GPT-6-Astra(256000 tokens,即 256K)都有默认值。显式配置的窗口优先于默认值。

相关命令 ​

命令作用
/context和 Claude Code 一样画出上下文窗口:10×10 的方格按系统提示、工具定义、消息着色,旁边列出各部分的估算、剩余空间和自动压缩预留;数据来自最近一次请求;第一次请求之前,系统提示和工具定义取自其他会话最近一次请求的测量,消息取自本会话,作为估算
/compact把之前的对话压缩成摘要,完整记录仍保留在存档中。和 Claude Code 一样显示 ⎿ Compacted (ctrl+o to see full summary);按 Ctrl+O 打开的详细记录里,✻ Conversation compacted 下面就是摘要全文
/autocompact自动压缩默认开启,阈值和 Claude Code 一样是上下文窗口减去 33k tokens(预留给输出和摘要)。/autocompact 80% 改为窗口的 80%,/autocompact off 关闭,/autocompact default 恢复默认阈值
/usage 或 /cost打开设置对话框的 Usage 页:总费用、API 耗时、实际耗时、代码改动行数和 token 数;/usage local 输出 JSON

/cost 是 Claude Code 中对应命令的名字,显示的内容与 /usage 相同。/status 在空闲与运行中均打开可滚动的独立状态页;/config、/cost 不带参数时打开设置对话框(Status、Config、Usage、Stats 四页,←/→ 切换)。Stats 页和 Claude Code 一样显示一年内每天的使用热力图,以及全部时间、最近 7 天或 30 天(按 r 切换)的常用模型、总 token、会话数、最长会话、活跃天数、连续使用天数、最活跃的一天、各类 token 合计和各模型的用量:Config 页列出模型、权限模式、effort、自动压缩、主题、编辑模式(Editor mode)等设置的当前值,输入文字筛选;和 Claude Code 一样,按 Enter 或空格把选中的设置原地切换到下一个值,模型、提供商和状态行打开各自的选择界面。输入框上方右侧的 ● medium · /effort 显示当前使用的 effort。

Responses 原生压缩 ​

当模型配置的协议为 openai-responses 时,手动 /compact、轮次开始前的自动压缩以及执行中的上下文压缩使用当前提供商的 /responses/compact。客户端只访问配置的代理地址,认证、上游路由和原生接口适配由代理处理;不会另外读取 Codex 登录凭据或绕过代理请求 OpenAI。

压缩返回的完整 output 数组作为不透明上下文使用,其中的加密内容不转成文字、不删减、不改写。手动和轮次开始前的自动压缩把该结果与压缩边界一起保存,恢复、重启和分支会话后可以继续使用。执行中的压缩更新当前请求上下文,原始消息和工具记录仍保存在会话中。

这种压缩也会返回 token 用量,不是零 token 操作。请求最多等待 600 秒,不会因为普通短文本生成的时限而提前结束;失败或取消不保存半成品,也不会暗中改用普通摘要接口。输入仍需符合上游的上下文限制。

加密窗口绑定生成时的提供商、接口地址和模型。切换到不兼容配置时会提示恢复原配置或从压缩前分支,避免把不透明状态当作普通文字丢弃。局部文字摘要应选择压缩边界之后的消息。

其他协议的超长上下文摘要 ​

自动摘要会按所选模型的上下文窗口安排请求,并为摘要输出、协议开销和估算差异预留空间。历史超过单次请求预算时,按原始顺序分批摘要,再合并为一份续接摘要;单条消息或工具结果过长时也能继续分段处理。窗口判断复用 token 估算,不直接把 UTF-8 字节数当作 token 数。

所有分段与合并请求完成后,才保存新的压缩边界。中途失败、取消或会话同时发生变化时,不会写入半成品摘要,原始历史保留。重新加载后,模型从已保存的摘要继续,完整记录仍可通过历史查看。自动压缩、手动 /compact 和回退时的局部摘要共用这套能力;超长历史可能需要多次摘要请求。

自动压缩和手动 /compact 会把已完成的摘要请求保存在会话数据中。失败或取消后重试,只要完整历史、摘要指令、提供商和模型配置保持一致,就能复用这些结果;重启后同样有效。界面会显示正在处理的分段、最终合并或复用进度。最终摘要与压缩边界在同一事务中保存,同时清理中间结果。

分段摘要最多使用 4096 个输出 tokens,最终合并最多使用 8192 个;模型配置的输出上限更低时,遵循配置。摘要请求使用传输层每次尝试 300 秒的超时与有限重试,适应较慢的模型响应,不再受普通短文本生成的 120 秒总时限约束。完整压缩可能包含多个请求,总耗时可以超过单次超时。

这里的分段摘要使用所选提供商的普通模型生成接口,会产生输入和输出 token 用量。它与前述 Responses 原生压缩是两条明确区分的处理路径。

恢复会话后的第一轮和工具执行后的后续请求都会检查历史大小。估算包含文本、工具参数与结构化工具结果,图片编码不会直接按普通文字计数。压缩保留最近一轮的工具调用与结果配对,基础提示和已有系统指令保持完整,原始会话记录仍可回看;如果最新一轮本身很长,压缩后的历史仍可能较大,不能把摘要存在当作必然满足服务端窗口限制。

除了按阈值自动压缩,dcl 和 Claude Code 一样还有两层保护:

  • 清理较早的大工具结果:一次请求超过上下文窗口的一半时,最近 10 条消息之前的大块工具结果在发给模型时换成占位文字。清理的位置只在再次越过阈值时才往后移,并按会话保存,中间的请求前缀保持不变,可以命中缓存。完整压缩后重新计算。存档里的记录不会被修改。
  • 超出窗口时压缩重试:请求仍然超出模型的上下文窗口(提供商返回 prompt is too long、context_length_exceeded 等错误)时,dcl 显示 Context limit reached; compacting the conversation and retrying…,丢弃失败的这次请求,像自动压缩一样压缩之前的对话,再重新发送这条提示词。只重试一次;没有可以压缩的历史时照常报错。

发给模型的工具结果 ​

工具定义和调用参数仍使用 JSON。Bash 的模型可见结果使用退出码、必要状态和原样命令输出组成的文本,省去空 stderr、默认 false 等包装;命令自己打印的 JSON 不会被解析或重排。Read 直接提供带行号的文本,并保留后续行提示、诊断等信息。工具存档、Hooks 和界面仍使用原有结果。

新执行和历史恢复在模型消息构建时使用同一转换规则。Read 已按请求选择范围,不再套用 16000 字节预览限制。MCP 纯文本结果共享预览预算;带图片或不透明字段的内容块保留原有结构。

大输出按 UTF-8 字节预算保留开头和结尾,并标明省略。Bash 的 stdout、stderr 分别获得预览空间,避免大量标准输出挤掉错误信息;退出码、超时和截断状态放在前面。命令采集仍有每个流 1 MiB 的内存上限,工具层还有默认 100 KiB 限制,两层都会保留头尾,并准确设置截断标记。

超过模型预览预算时,已有工具结果保存到数据目录的 tool-outputs,模型获得可用 Read 回读的路径。同一结果复用同一路径。这只是当前工具结果的副本,不保证包含进程产生的全部原始日志:采集或工具层已省略的中间内容无法恢复。保存失败时保留现有正文,不丢弃唯一副本。需要完整构建日志时,可让命令自行写入明确的日志文件,再分段读取。

这些优化减少包装和重复读取,但字节数减少比例不等于 token 节省比例;实际用量以供应商返回的数据为准。

费用估算 ​

费用按每次请求分别计算,依次使用:

  1. 服务商在响应中报告的费用。
  2. 你在服务商配置中为模型填写的每千 token 价格(请求命中缓存时不使用)。
  3. 内置的 DeepSeek 官方价格:deepseek-flash(含旧名 deepseek-v4-flash、deepseek-v4.1-flash)和 deepseek-v4-pro。缓存命中、缓存未命中和输出 token 分别计价;北京时间工作日 09:00–12:00 和 14:00–18:00(UTC 01:00–04:00、06:00–10:00)按高峰价,其它时间按半价。中国法定节假日也是半价,但估算时按普通日期处理,可能略高于账单。

三者都没有的请求记为"未计价",会话总价显示为未知,不会当作 0。非交互模式和 SDK 的 result.total_cost_usd 是已计价部分的合计。估算不等于账单,以服务商后台为准。

相关文档 ​

独立文档站 · Desktop(Tauri 2)与 CLI(Rust)