上下文背包·基本

文档发表:2026-07-05 · 更新 37 次 · 最近更新:2026-10-27 · 阅读:185

建楼时(楼层建立中):

空闲时(楼层建完):

单位:所有 k 值 = 千 tokens。本地估算 = 字符数 ÷ 2.5(近似值);API prompt_tokens = 服务端返回的精确计费值(权威)。 规则:数值为 0 的项目不显示。以下为全部可能出现项目的穷举(标签随界面语言翻译,此处按中文界面书写)。

1. 顶层项目

UI 显示含义说明
Server guard服务端甲壳服务端网关注入在请求最前面的固定提示词(服务端动态维护,当前约 21.7K 字符 ≈ 8.7k tokens),客户端只拿得到字符数、看不见内容、不能修改
Tools definition JSON工具定义请求 body 中全部工具(当前 22 个)的 JSON 定义;随工具增减变化,22 个时约 7k tokens 量级
Client rules & docs客户端规则= 其下方缩进的 4 个子项之和 + 小节分隔符(4 块齐全时 3 处 --- 分隔行,共 21 字符)。这 4 块拼起来就是对话里那条永不变化的 msg[0]:Vision Context(AI 视口)、Global Rules(全局规则)、Project Rules(项目规则)、Reminder(目录提醒)
压缩 · 事实 (fx)记忆区域only facts 压缩(手动按钮,或全托管档自动提取)产出的任务事实清单。此处的 × N = 事实组数(历次提取的批次数 = ctx.json 里 facts 数组的条目数),不是消息条数——底层永远是 1 条 fx 消息,每次提取只把一段新的「═══ FACTS 时间 ═══」小节追加到它的尾部;没提取过就不存在。它排在压缩饼干之前:任何新增/追加都会让下一间 house 从这一行起的前缀缓存失效(命中率降一次,之后恢复)。重启后由 ctx.json 的 facts[].text 重建回对话(ctx.json 位于 家目录:_qqq 的任务目录)
压缩饼干 × N floors压缩饼干已完结楼层的历史压缩摘要。N = 已压缩楼层数(同样是楼层数、不是消息条数——底层永远只有 1 条 biscuit 消息,新楼层只往尾部追加、旧字节一字不变,前缀缓存因此能一直命中)。它往往是最重要滴背包重量来源,其下有多个子项,详情请看下方“子项目”表格
User × N用户消息当前「在建楼层」全部 user 角色消息滴总重量,N = 条数。通常必有 1 条用户消息(你的提问:文字 + 📎附件 + 图片路径提示 + 视觉预分析结果 + 时间戳全部拼进这一条,粘贴图片/图片识别不产生额外消息;「继续任务」恢复楼层则是恢复说明文本);可能另有系统注入(qqqide 内核机制):跨面板文件变更提醒(每间 house 至多 1 条)、迭代耗尽量用尽时滴工具上限提示、deferred 强制收尾、E-Flow 触发(不渲染 UI)。引导确认回合滴 [GUIDE] prompt 确认后即移除,不计入最终统计。排队消息不入当前楼层——楼层完成后作为独立新楼层逐条发送。当前楼层建完压入压缩饼干本项即消失
AI text × NAI 回复当前「在建楼层」滴 AI 正文回复滴总重量,N = 条数(assistant 消息中无工具调用、非错误标记、正文非空者)。通常 1 条 = 最终回复;可为 0(楼层中断尚未产出回复);引导确认回合滴 AI 确认回复保留在对话中会 +1;带 tool_calls 滴归 AI tool_calls、错误滴归 Error messages。楼层建完压入压缩饼干即消失
AI tool_calls × NAI 工具调用「在建楼层」带 tool_calls 的 assistant 消息:AI 滴工具调用指令,和上一条AI text一样:当前楼层建完后压入压缩饼干即消失。
AI reasoning × NAI 推理「在建楼层」assistant 消息携带的 reasoning_content(思维链,原样回传给上游,故真实进入请求体和计费),N = 带思维链的消息数。思考强度高的档位下单条可达数万 tokens,是最容易被忽略的一块重量。楼层建完压入压缩饼干即消失
Tool Results × N工具结果「在建楼层」上方 AI tool_calls 工具调用滴结果,N = 已执行工具次数,可上百,是背包重量另一个主要滴来源。同样,楼层建完则不再存在,压入压缩饼干
Error messages × N错误消息当前「在建楼层」标记为错误的 assistant 消息,归「当前楼层」大块。楼层异常时合成(停滞看门狗中止 / 上游错误 / 发送失败 / 致命错误恢复);工具失败不算——那是 Tool Results 滴内容。正常楼层完结随压缩消失;异常(fatal)楼层密封保留,供「继续任务」恢复
JSON overhead (N msgs)JSON 结构开销请求信封层(AI 不 可见,非对话内容,但真实计费)。每条消息序列化时 role / content / tool_call_id 等 JSON 键值包裹字符,随消息条数线性小幅增长(每条约 31 字符,工具消息另有附加),量级很小,通常可忽略
Body fields (stream, max_tokens, …)body 常量字段请求信封层,固定常量(stream / max_tokens 等 body 顶层字段,约 150 字符),AI 不 可见但真实计费,实际上小到可以忽略
Local sum本地估算总和以上全部项目的本地估算之和(字符 ÷ 2.5)。它是参考标尺,专门和服务端实报(下一行)对账——两者接近就说明估算口径没漏项
API prompt_tokensAPI 实际计费最近一次 API 调用服务端返回的精确 prompt tokens(权威值;ge 计费锚定见查看费用明细)。压缩完成 / 任务重新载入后会清零,要等下一次请求返回才有新值;可用 Local sum 来印证
Free剩余容量上下文上限(客户端常量 1,048,565 tokens)− 当前背包总尺寸。被减数与右下角按钮同口径:有服务端实报用实报,无实报回落 Local sum

2. 子项目(缩进,挂在父项目下)

UI 显示父项目含义
Vision ContextClient rules & docsAI 视口,告知 AI 当前滴工作空间
Global RulesClient rules & docs全局规则(用户全局规则)
Project RulesClient rules & docs项目规则(当前项目规则)
ReminderClient rules & docs默认工作目录提醒(DEFAULT WORKING DIRECTORY 块),次要
╔K run_command × N压缩饼干绝对包装盒行,统计 = 头行([A → run_command] …)+ ╔K…╚ 体部。仅显示饼干中实际存在的盒
╔K generate_image × N压缩饼干同上(绝对包装盒行)
╔K remove_background × N压缩饼干同上(绝对包装盒行)
╔K analyze_image × N压缩饼干同上(绝对包装盒行)
╔K get_vision_context × N压缩饼干同上(绝对包装盒行)
Q × N压缩饼干饼干内含问题行(Q: )的楼层数(正常 = 已压缩楼层数)
A × N压缩饼干饼干内楼层回答(A: 行)的数量(正常 = 已压缩楼层数;个别异常楼层可能使 Q/A 不等)
Gentle × N压缩饼干温柔包装盒工具行数(17 个可复现工具,饼干里仅一行头)
结构行压缩饼干= 压缩饼干总 − 以上子项之和(=== F 分隔 / 时间戳 / [S] / 空行等)。恒等式:压缩饼干 = ╔K 各行 + Q + A + Gentle + 结构行,子项之和永远等于饼干总量

另有防御行 System messages × N——裸 system 消息创建点为零,正常永不出现(仅异常兜底),故不列入上表。

回过头来看:什么是上下文背包?

每次请求实际发送给模型滴全部 token 滴构成(AI 可见滴上下文 + AI 不可见滴协议层),实际上也就是我们经常讲滴 “上下文空间”,只是在其他 IDE 里我们没有权利去定制他,qqqide 可以。另一方面,考虑到缓存命中率,在 qqqide 里它被分块、和指定了分块顺序,主要大块按顺序是:

  • 稳定前缀(Z 段):包括:Server guard、Tools definition、Client rules & docs——只要规则与工具定义不改,这一段一个字节都不变,是缓存命中率的地基(严格说「Z 消息」只指其中的 Client rules & docs,也就是 msg[0])
  • fx 事实:包括:压缩 · 事实 (fx)
  • 压缩饼干:包括:压缩饼干 × N floors
  • 当前楼层:包括:User × N、AI text × N、AI tool_calls × N、AI reasoning × N、Tool Results × N、Error messages × N(错误消息虽是系统合成,但它是对话消息、AI 可见可读——继续任务恢复正是靠它,故归当前楼层)
  • 请求信封层:包括:JSON overhead、Body fields——AI 不 可见、不承载语义、不 可压缩,但真实计费,Local sum 与 API prompt_tokens 对账须计入

下一步:qqqide 滴上下文背包操作