# DeepSeek-V4 CSA/HCA 与 DSA/QSA/MSA：中文交互讲解稿

配套网页：[中文交互讲义](attention-explainer.html)。

> **非官方教学稿。** 用于配合中文交互讲义讲解，不代表 DeepSeek、Qwen 或 MiniMax 官方表述或背书。机制与数字依据文末版本（MiniMax 使用与网页一致的 v2；用户最初提供的 v1 入口另列于来源）；示意图不是模型实测注意力。正常讲解约 **18 分钟**（含操作、停顿及三次短问答），可在 15–20 分钟内伸缩。末尾另附 5 分钟讲法。
>
> **统一口径：** token 是分词后的单位，不等于一个汉字；query 是当前位置发出的查询，key 用来匹配，value 提供被汇总的信息。KV 缓存是模型中间表示，不是把原文字符串原样存起来。“原始 token KV”指逐 token 的、未沿序列维压缩的表示，不否认 MLA 等沿特征维的压缩。
>
> **演示约定：** 下文按章节锚点定位。网页提供五机制按钮、“换一个 query”、MSA 组 A/B、图片点击放大、预算滑块（16K→1M）、讲解提示、宽屏讲解和理解题。可先开启“宽屏讲解”，按需展开“讲解提示”，结尾用理解题检查概念。64-token 演示只解释结构；真实配置必须口头报出，不能把教学缩比当实际预算。

## 讲者路线与计时

| 时间 | 网页锚点 | 本段任务 |
|---|---|---|
| 00:00–01:40 | `#overview` | 建立存储、计算两本账 |
| 01:40–03:20 | `#lab` | 同一段历史切换五种机制 |
| 03:20–05:00 | `#dsa` | token 检索；问答一 |
| 05:00–07:10 | `#qsa` | 压缩索引、不压缩主分支读取对象 |
| 07:10–09:30 | `#msa` | token 评分再块最大池化；问答二 |
| 09:30–12:30 | `#v4` | CSA 与 HCA 的存储、读取策略 |
| 12:30–15:20 | `#budget` | 百万长度预算、缓存与复杂度边界；问答三 |
| 15:20–16:40 | `#compare` | 总结矩阵，不做性能排行榜 |
| 16:40–18:00 | `#sources` | 原图、出处与收束 |

如需 15 分钟版本：互动各留一次切换，三个问答各压到 15 秒，来源段只报定位。20 分钟版本：在 `#lab` 多换一个 query，在 `#budget` 请听众自己算一次 1,048,576 ÷ 128。

## 00:00–01:40｜`#overview`：先分清两本账

**操作提示：** 定位 `#overview`，分别指“缓存/存储”和“读取/计算”两本账；历史 token 图在下一节 `#lab`，此时不要提前指图，也不要一开始就念缩写。

**讲解：**

“今天我们不比赛谁的缩写更多，而是回答一个具体问题：面对很长的历史，模型怎么既保留有用信息，又避免每一步都把所有细节重读一遍？我们用两本账来理解。

第一本是存储账：过去的 key、value 以什么形式留下来，留下多少？第二本是计算账：当前 query 真正进入主注意力运算时，会读哪些对象、读多少？‘这一轮只读两千个’不等于‘显存里只存两千个’。下一轮问题变了，可能又要从别处找，所以只做稀疏检索，通常还得保存整段可检索历史。

再加一个小角色：索引器。它像先翻目录，再决定精读哪些页。但翻目录也要花时间，目录也要占空间。以后只要我说‘预算’，大家都先问：是主分支读取预算，还是包括索引器的总成本？”

**指图说明：** 从“历史 → 缓存”画一条想象中的箭头，再从“query → 索引/选择 → 主分支”画第二条。前者是留下什么，后者是这一轮用什么，不混在一起数。

**转场：** “下面把历史固定住，只换检索方法，你会更容易看出差别。”

## 01:40–03:20｜`#lab`：同一历史，五种读法

**操作提示：** 定位 `#lab`；固定同一条 64-token 历史及同一 query，使用五机制按钮依次切换 DSA、QSA、MSA、CSA、HCA。先不要改 query；完成一轮后点击“换一个 query”，观察选择如何变化。

**讲解：**

“这些小格子是同一段历史。请特别注意：**64 token 只是教学缩比，不代表真实模型的上下文长度、Top-k 或压缩预算**。缩比图中的几个高亮格，也不是模型真实学出的相关性。

切到 DSA：主要看散落的单个 token，它挑的是细粒度位置。切到 QSA：先看四个一组的索引摘要，再看选中组展开回原来的 token。切到 MSA：看更大的连续块，而且一组注意力头的选择，不一定等于另一组。

现在切到 CSA：注意精读对象换了，不是把选中块全部展开，而是读压缩条目，并保留一小段局部细节。最后 HCA：更强地压缩，然后把所有已经因果可见的压缩条目都读一遍，不再做内容相关的 Top-k。

我们刚才换了五种机制，但没有换历史。这样才能区分：变化来自‘选哪些’，还是来自‘被存成了什么’。”

**指图说明：** 依次指单格、微块边框、大块边框、压缩条目、局部窗口。不要用“亮得少，所以一定更快”收尾；图没有包括头数、维度、内核和索引器成本。

**转场：** “先从最直观的单 token 检索讲起。”

## 03:20–05:00｜`#dsa`：DSA 是 token 级检索

**操作提示：** 定位 `#dsa`，沿索引分支到 Top-k，再沿主分支到被选中的 token KV。需要时回看 `#lab` 的 DSA 状态。

**讲解：**

“DSA，全称 DeepSeek Sparse Attention。这里讨论 DeepSeek-V3.2 的实现：轻量 lightning indexer 为当前 query 和历史 token 打相关性分数，再选 Top-k；主注意力只对选中的 token KV 做注意力运算。报告中的配置是每个 query 选 **2048 个 token KV**；历史不足时不可能凭空选满。

索引分数是导航信号，不是最终主注意力权重；真正加权汇总 value 的工作仍然在主分支。V3.2 把 DSA 实例化在 MLA 上，逐 token 保存的是 MLA 的潜在 KV 表示，选择结果供当前 query 的各主注意力头共享。别把它讲成每个头都独立在全历史里挑一套位置。

它主要省的是昂贵主注意力的读取和运算，不是因为只选 2048 个就能把其他历史 KV 全丢掉。下一次 query 仍可能选到它们。”

**指图说明：** 指向索引分数行：“这里决定候选”；再指主注意力：“这里才做最终汇总”。

**听众问题一（本段内约 25 秒）：**

- **问：只读 2048 个，是不是缓存也固定只有 2048 个？**
- **答：不是。** 这是本次主分支读取的上限；为后续 query 保留可检索能力，历史 token KV 及索引 key 仍随长度增长。读取少和保存少是两件事。

**转场：** “既然翻目录也有成本，能不能先把目录变短？QSA 就沿这个方向走。”

## 05:00–07:10｜`#qsa`：压缩的是索引 key，不是最终精读内容

**操作提示：** 定位 `#qsa`，按“投影 key → 四个平均 → RMSNorm → partial RoPE → 块打分 → 选择 → 展开”的顺序指图，最后指尾部未完成微块。

**讲解：**

“QSA 是 Qwen Sparse Attention。每四个 token 构成一个非重叠微块。它先把索引分支投影得到的四个 key 做平均，再做 RMSNorm，之后才加入部分旋转位置编码，也就是 partial RoPE。顺序请记住：**平均在前，归一化随后，位置编码在后**。不是先把四个带不同旋转相位的 key 混在一起平均。

这个摘要 key 使用微块起点作为位置；query 保留自己的 token 位置。索引器对已经完整可见的微块打分，再选最多 **512 个完整微块**。每块四个，所以展开后是 **2048 个原始 token KV**。主分支真正读的仍是这些原始 token，而不是只读 512 个摘要 value。

还要看最右端：当前前缀末尾如果还有没凑满四个的 token，这个未完成微块的可见尾部会直接纳入，所以预算写成 **2048 加 0 到 3 个 tail token**。这是因果边界处理，不是再奖励一个完整四-token 块。完整块数量不够时，主分支实际读取更少。

所以 QSA 与后面 CSA 的根本差别不是名字，而是压缩发生在哪里：QSA 缩短索引 key 序列，最终精读仍回到 token KV；CSA 连主分支长期保存和读取的对象也改成压缩条目。”

**指图说明：** 在“摘要 key”处停一下，再把指针移回四个原始格子：“目录变短，不等于正文被这个平均值取代。”训练中教师注意力分布的块级 max pooling 是另一件事，不要与这里索引 key 的平均池化混讲。

**转场：** “微块之外，还有一种更贴合块状 GPU 计算的选择：MSA。”

## 07:10–09:30｜`#msa`：先 token 评分，再 max pool，且每组不同

**操作提示：** 定位 `#msa`，先指 token 评分，再指块内最大值，再指 16 个选择槽位。固定 query，用 MSA 组 A/B 控件切换两组；随后指强制保留的局部块。

**讲解：**

“MSA 是 MiniMax Sparse Attention，建立在 GQA，也就是分组查询注意力之上。一个 KV 头服务一组 query 头；组内共享选择结果，但不同 GQA 组可以选不同的历史块。

这里最容易讲错的步骤是块评分。MSA **先对可见的历史 token 做索引评分，再在每个块里取最大分数，也就是 max pooling**。它不是先把整块 key 平均成一个向量再评分。通俗地说，一块里只要有一个 token 对这组 query 特别重要，就能把整个块的候选优先级抬起来。选中之后，主分支会读取块内所有因果可见的 token KV，而不是只读那个最高分 token。

实际配置是每块 **128 token**，每个 query、每个 GQA 组选 **16 块**，因此上限 **2048 token/组**。请把‘每组’一起读出来：这不是所有组总共共享两千零四十八个，也不是每组必然选择互不相交的内容。

再看局部块：包含当前 query 的那一块会被强制纳入，而且**占用 16 个名额中的一个**，不是先选 16 块再加第 17 块。当前块尚未完整可见时，未来 token 仍必须遮住，实际读取可以小于 2048。”

**指图说明：** 从块内最高评分 token 指向整块边框，再指块内其余 token。切组时说：“换的是这一组的索引 query，所以名单可以变”，不要说“每个头独立挑”。

**听众问题二（本段内约 25 秒）：**

- **问：QSA 和 MSA 都选块，差别只是四个和一百二十八个吗？**
- **答：不止。** QSA 平均压缩索引 key，再给微块评分；MSA 对 token 评分后取块最大值，并按 GQA 组独立选择。MSA 的局部块还占用一个既定名额。二者主分支都读取选中块的原始 token KV，但路由过程不同。

**转场：** “到这里，多数节省来自少读原始 token。DeepSeek-V4 进一步问：长期保存的内容本身能不能更紧凑？”

## 09:30–12:30｜`#v4`：CSA 先压缩再稀疏，HCA 重压缩后全读

### 09:30–11:20｜CSA：四倍是产出节奏，八 token 是实际窗口

**操作提示：** 指 CSA 压缩器，沿相邻压缩条目的覆盖范围移动指针，展示窗口重叠；然后指 Top-1024 与 128-token 局部窗口。

**讲解：**

“CSA 是 Compressed Sparse Attention。它先沿序列压缩 KV，再对压缩后的候选做稀疏检索。先缩短存储序列，再少读其中一部分，两本账都发生变化。

四倍压缩的意思是：长期压缩序列大致每四个原始 token 产出一个压缩条目。但 V4 的实际压缩器不是互不重叠地把四个求平均。它使用可学习、按特征维的加权压缩；在 m 等于四时，一个通常的压缩条目涉及当前四个与前一组四个，实际覆盖 **八个 token 的重叠窗口**。相邻窗口共享历史范围，步幅仍是四，所以产出密度还是原序列的四分之一，不是八分之一。序列最前端没有前一组时有专门的填充处理。

在这里使用的 **V4-Pro 配置**中，索引器在压缩 key 上打分，主分支读取 **Top-1024 个压缩 KV 条目，再加 128 个局部未压缩 token KV**。这些压缩条目同时承担 key 与 value 的角色。不要把 1024 说成 1024 个原始 token，也不要乘以四就说精确恢复了四千零九十六个原始 token；压缩摘要不是可逆解压，窗口还会重叠。

局部窗口像一张保留细节的小纸条，补足近期细粒度信息；它也帮助处理当前压缩块尚未完成、不能提前读取的情况。”

**指图说明：** 手势明确区分“八格覆盖范围”和“四格步幅”。指出主分支从压缩条目直接接线，不把条目展开成原始 token。

**小转场：** “如果愿意压得更狠，还需要选吗？”

### 11:20–12:30｜HCA：128 倍非重叠压缩，不做 Top-k

**操作提示：** 指 HCA 的 128-token 非重叠压缩块、所有可见压缩条目和独立的 128-token 局部窗口。

**讲解：**

“HCA 是 Heavily Compressed Attention。这里每 **128 个 token** 压成一个长期 KV 条目，采用**非重叠**压缩。它不做 CSA 那种内容相关的 Top-k，而是读取全部已经因果可见的压缩条目，同时加 **128 个局部未压缩 token KV**。

‘全读’指全读压缩后的序列，不是全读原始百万 token；‘局部 128’也不是把整个历史细节补回来。V4 把 CSA 和 HCA 按层混合使用，不能讲成每一个 query 在同一层同时跑完这五种机制。这五种是我们为了比较而摆在一起，不是一条五级流水线。”

**转场：** “现在把玩具图收起来，换成统一的百万长度量尺。数字会更清楚，但单位必须更小心。”

## 12:30–15:20｜`#budget`：百万历史下，主分支读多少，缓存留多少

**操作提示：** 定位 `#budget`，把预算滑块拖到 **1M（1,048,576）**。先指预算列，再指单位列，最后看缓存趋势，不能把读取条形图当显存条形图。

**讲解：**

“我们统一使用一百零四万八千五百七十六，也就是二的二十次方，方便整除。这是对齐长度的教学算例，不是宣称各模型官方上下文上限都精确等于这个数，也不是跨模型实测。

DSA 主分支最多 2048 个原始 token KV。QSA 最多 512 乘四，得到 2048，再加零到三个未完成尾部 token；在完整前缀长度恰好能被四整除的口径下，tail 就是零。MSA 是 16 乘 128，2048，必须附上‘每个 GQA 组’，且局部块已包含在 16 块里。

CSA 的数是 1024 个压缩条目加 128 个局部 token 条目；HCA 是一百零四万八千五百七十六除以 128，得到 8192 个压缩条目，再加 128 个局部 token 条目。条目之和可用于描述输入条目数量，不能当成等价原文长度、相同字节数或相同 FLOPs。

再看存储账：DSA、QSA、MSA 通常仍保存逐 token 主分支 KV，并保留各自需要的索引状态，所以稀疏不等于恒定缓存。CSA 的长期主分支压缩条目约 N 除以四；HCA 约 N 除以 128，另有有界局部窗口和压缩器状态。它们也不是随长度完全不增长的缓存。真实字节数还取决于头数、维度、MLA/MQA/GQA、量化格式、层数和混合比例。”

| 机制 | 对齐长度下每 query 的主分支预算 | 读取对象/边界提醒 | 长期缓存趋势（不是字节承诺） |
|---|---|---|---|
| DSA | 2048 | 原始 token KV；短前缀不足则少读 | 主 KV 与索引 key 随 N 增长 |
| QSA | 2048 + 0..3 tail | 512 个完整微块展开为 token KV；尾部直接加入 | QSA 层主 KV 仍逐 token；索引完整块 key 约 N/4 |
| MSA | 2048/组 | 16 × 128；局部块占一名额；块内因果遮罩 | GQA 主 KV 与 token 索引 key 随 N 增长 |
| CSA（V4-Pro） | 1024 + 128 | 1024 压缩 KV 条目 + 128 局部 token KV | 主压缩 KV 与压缩索引 key 约 N/4；另有局部/压缩器状态 |
| HCA | 8192 + 128 | 全读 N/128 个压缩 KV 条目 + 128 局部 token KV | 主压缩 KV 约 N/128；另有局部/压缩器状态；无 Top-k 索引器 |

**必须补充的复杂度说明：**

“最后加一条不能省掉的免责声明：固定 Top-k，只让主分支稀疏注意力在整段预填充时近似按 N 乘预算增长，不等于整个算法严格线性。DSA 的索引器仍扫描历史，整段成对打分仍有二次项。QSA、CSA 压缩候选序列，降低索引项的常数或系数，例如固定四倍压缩可写作 O(N²/4)，但固定除以四并没有把二次变线性。MSA 即使按块选择，也先做 token 评分，索引分支仍有二次项。HCA 全读压缩历史，固定 128 倍压缩后的整段主注意力也有 O(N²/128) 的成对项。

这里的 N² 是整段多 query 的尺度；单步 decode 是一个 query 对已有历史，索引扫描或 HCA 全读仍随历史长度增长。不要把单步读取预算与整段预填充复杂度混成一句话。”

**边界/因果简化说明（指表时用，不另加时段）：** 这是长序列稳态的教学预算，不含投影、归一化、选择、数据搬运和前馈网络成本；不把 learned sink logit 计成一个历史 token。当前 token 是否计入“历史”、query 位于块首还是块末、局部窗口是否含当前 token、未完成块和压缩器缓冲，都会影响端点精确计数。QSA 只把完整可见微块交给块索引，未完成尾部单独纳入；MSA 当前局部块只读可见部分；CSA/HCA 只读此前可见的已完成压缩块，不能让压缩摘要泄漏未来。本表不承诺任意边界位置都恰好读满，局部与压缩分支覆盖的原始信息也可能重叠。

**听众问题三（本段内约 25 秒）：**

- **问：HCA 的 8192 加 128 比 CSA 的 1024 加 128 多，所以 HCA 一定更慢、效果一定更好吗？**
- **答：不能这么推。** 两者索引开销、压缩粒度、实际维度和内核不同，读取对象包含的信息也不同。条目计数只说明这一个口径的访问量，不能推出延迟、质量或跨模型优劣排行。

**转场：** “最后把所有设计压成一张矩阵，但只总结机制，不宣布冠军。”

## 15:20–16:40｜`#compare`：一张机制矩阵，不是一张排行榜

**操作提示：** 定位 `#compare`，按“先评分什么—选什么—最后读什么—局部怎么处理”横向读，不逐格念数字。

| 机制 | 索引/路由依据 | 选择粒度与共享 | 主分支实际读取 | 局部信息 |
|---|---|---|---|---|
| DSA | 逐 token lightning indexer 分数 | token；V3.2 实例中各主 query 头共享选择 | 被选 token 的 MLA KV 潜在表示 | 此处不额外虚构固定局部窗口 |
| QSA | 四个索引 key 平均、RMSNorm、partial RoPE 后评分 | 4-token 微块；选中后展开 | 原始 token KV | 未完成微块的 0..3 尾部另纳入 |
| MSA | token 评分后，128-token 块内 max pool | 128-token 块；每 GQA 组独立、组内共享 | 选中块的原始 token KV | 当前局部块强制保留，占 16 块之一 |
| CSA | 学习式重叠压缩索引 key，再做检索 | 压缩条目；不是展开读原始块 | Top-1024 压缩 KV 条目（Pro） | 另加 128-token 未压缩窗口 |
| HCA | 无内容 Top-k 索引；128 倍非重叠压缩 | 不筛选，读取可见压缩序列 | 全部可见压缩 KV 条目 | 另加 128-token 未压缩窗口 |

**讲解：**

“如果只记五句话：DSA 挑 token；QSA 用微块目录挑回原始 token；MSA 先 token 评分、再整块挑，而且各组能不同；CSA 压缩后还要挑；HCA 压得更重就全读摘要。

它们不是谁天然碾压谁，而是把检索粒度、缓存形态、局部细节和执行效率安排在不同位置。质量要看训练和任务，速度要看包含索引在内的实现与硬件。看预算前先问单位，看效率前先问测量口径。”

**转场：** “如果希望把今天的简化补完整，可以从下面几张原图回到原文。”

## 16:40–18:00｜`#sources`：原图与一手来源

**操作提示：** 定位 `#sources`。来源区是出处索引；先指来源条目，再回到对应章节的官方原图，点击图片放大。按“互动示意 → 官方原图 → 原文定位”核对，不把教学重绘称为官方图。原图页码：Qwen 第 5 页 Figure 3；V4 第 9 页 CSA、第 11 页 HCA、第 6 页总架构；DSA 第 4 页；MSA 第 1 页。

**讲解：**

“互动图是理解的入口，论文和实现才是核对细节的出口。看 DSA，回到 V3.2 第 2.1 节和图 2；看 CSA/HCA，回到 V4 第 2.3 节、图 3 和图 4。MSA 的图 1 能把索引分支、主分支和按组选择放到一起看，第 3.1 节写清了先 token 评分再 max pool，第 3.2 节写清局部块占一个名额。QSA 看官方技术报告的 Qwen Sparse Attention 小节和图 3，顺着平均、归一化、位置编码、选择、展开去读。

这个网页式讲法借鉴 answer-me-with-html 的表达理念：把复杂问题组织成能指、能比较、能回看的页面，而不是只堆长段落。它提供的是呈现思路，不是这些注意力机制的技术来源。

最后用开头两本账自测：这项改动是在少保存，还是在少读取？索引器花了什么成本？只要能把这三个问题讲清楚，你就不会被相似缩写和表面相同的 2048 带跑。”

### 一手来源与指图定位

1. **DeepSeek-V4 官方报告**：[DeepSeek-V4: Towards Highly Efficient Million-Token Context Intelligence，指定 v1](https://arxiv.org/html/2606.19348v1)。重点：§2.3.1 CSA、§2.3.2 HCA、§2.3.3 因果/局部窗口细节、§2.3.4 效率讨论；[图 3：CSA](https://arxiv.org/html/2606.19348v1#S2.F3)、[图 4：HCA](https://arxiv.org/html/2606.19348v1#S2.F4)。实际压缩器用学习权重，不等同于平均池化；Pro 的 Top-1024 不能不加限定地推广为所有变体。
2. **MiniMax 官方论文**：[MiniMax Sparse Attention，v2（与网页本地报告一致）](https://arxiv.org/html/2606.13392v2)。原图为 PDF 第 1 页图 1；重点核对架构、Local Block、总计算量与 128-token/16-block 配置；[图 1：MSA 总览](https://arxiv.org/html/2606.13392v2#S0.F1)。块化没有免除 token 级索引打分。用户最初指定的 [v1 入口](https://arxiv.org/html/2606.13392v1) 保留供版本追溯；现场对照网页本地 v2 原图，不混用版本页码。
3. **DeepSeek-V3.2 官方报告**：[DeepSeek-V3.2: Pushing the Frontier of Open Large Language Models，指定 v1](https://arxiv.org/html/2512.02556v1)。重点：§2.1 DSA、§2.1.1 的 2048 配置、§2.3 索引器仍有二次项；[图 2：DSA/MLA 架构](https://arxiv.org/html/2512.02556v1#S2.F2)。
4. **Qwen 官方技术报告（指定入口）**：[Qwen3.8-Flash-Next tech_report.pdf](https://github.com/QwenLM/Qwen3.8-Flash-Next/blob/main/tech_report.pdf)。定位标题“Qwen Sparse Attention”、图 3 及公式中的 AvgPool → RMSNorm → PRoPE 顺序。为便于检索，补充同题报告的 [arXiv HTML §2.1.2](https://arxiv.org/html/2608.30320v1#S2.SS1.SSS2)，公式 (13)–(16)、(19) 和 Implementation Details 可核对四倍索引压缩、512 完整块与尾部；[官方模型卡](https://huggingface.co/Qwen/Qwen3.8-Flash-Next)可交叉核对预算。网页原图取自该 PDF 第 5 页 Figure 3，点击可放大。补充 HTML 用于检索公式；讲授以指定官方报告及网页对应原图为准。
5. **呈现理念来源（非机制证据）**：[QingYunA/answer-me-with-html](https://github.com/QingYunA/answer-me-with-html)，重点是把复杂回答组织成易读单页、图表和比较结构。这里只借鉴理念，不执行其安装、生成或改写 HTML 流程。

## 附：5 分钟压缩讲法（00:00–05:00）

以下为独立速讲路线，不把三次问答强行塞入；问答留到结束后。仍保留单位、因果及复杂度边界。

### 00:00–00:40｜`#overview` → `#lab`

**操作/指图：** 指两本账，在同一 64-token 历史上快速切五种状态。

“这是非官方教学讲解。长上下文要分两本账：缓存保存什么，当前 query 读取什么。64-token 动画只做缩比，不是模型真实预算。少读不等于少存；索引器也有成本。现在固定历史，只换机制。”

**转场：** “先看三种仍回到原始 token 精读的办法。”

### 00:40–01:40｜`#dsa` → `#qsa` → `#msa`

**操作/指图：** 各指一个关键动作：单 token、四个平均后展开、块内最大值及组标签。

“DSA 给历史 token 打索引分，挑 2048 个，再做主注意力。QSA 将每四个索引 key 先平均，再 RMSNorm、partial RoPE，挑 512 个完整微块，展开读 2048 个原始 token KV，另加零到三个未完成 tail token。MSA 是先 token 评分，再对 128-token 块取最大值；每个 GQA 组选 16 块，上限 2048 token/组。不同组可以不同，局部块强制保留且占一个名额，不是第十七块。”

**转场：** “V4 再进一步，改变长期保存的主 KV 对象。”

### 01:40–02:50｜`#v4`

**操作/指图：** CSA 指八-token 覆盖与四-token 步幅；HCA 指非重叠大块和全读连线。

“CSA 先压缩再稀疏。四倍压缩不是非重叠地平均四个：实际是每四个产出一个条目，通常覆盖八 token 的学习式重叠窗口。V4-Pro 主分支读 Top-1024 压缩条目，加 128 个局部 token KV，不把摘要展开回原文。HCA 每 128 token 非重叠压成一个条目，不做 Top-k，读所有可见压缩条目，也加 128 局部。两者按层混合，五种机制不是一条同时执行的流水线。”

**转场：** “把这件事放到百万长度上算一遍。”

### 02:50–04:10｜`#budget`

**操作/指图：** 指 N=1,048,576、主预算单位和缓存趋势三列。

“这是假定对齐长度的统一算例，不是各模型上下文上限声明。DSA 2048；QSA 2048 加零到三 tail；MSA 2048/组；CSA 1024 压缩条目加 128 局部；HCA 是 N 除以 128，即 8192 压缩条目加 128 局部。不同对象不能直接当同字节数、同 FLOPs 或速度排名。

DSA/QSA/MSA 仍要保留可检索的 token KV。CSA/HCA 的长期主 KV 条目约为 N/4 与 N/128，外加局部和实现状态，仍随 N 增长。短前缀、未完成块和因果掩码会让实际读取少于稳态预算，不能读取未来。

固定 Top-k 只固定主分支预算，不让整个算法变线性：索引器仍有全历史扫描；QSA/CSA 是压缩二次项的系数，MSA 也先评分 token。HCA 全读压缩历史，整段仍有二次成对项。单步 decode 与整段 prefill 要分开说。”

**转场：** “最后只记机制，不记冠军。”

### 04:10–05:00｜`#compare` → `#sources`

**操作/指图：** 横扫矩阵，再指官方原图入口。

“DSA 挑 token，QSA 缩短目录再回原始 token，MSA 按组挑大块，CSA 压缩后挑摘要，HCA 重压缩后全读摘要。谁更快、谁更准，要有一致硬件、实现、训练和任务，不能从这个教学图推出来。

原图回到 V3.2 图 2、Qwen 的 QSA 图 3、MSA 图 1、V4 图 3 和图 4。网页表达借鉴 answer-me-with-html，技术证据来自对应官方论文。收束三个检查问题：保存了什么，读取了什么，索引花了什么？”

## 讲前/交付校核清单

- [x] 明示非官方、教学缩比、非实测/非排行榜；完整路线 18 分钟，另有独立 5 分钟路线。
- [x] 九个网页锚点全部覆盖；每段有计时、操作、指图和转场；三组问题与回答已嵌入对应时段。
- [x] QSA 严格区分索引 key 平均压缩与主分支原始 token 读取；顺序是 AvgPool → RMSNorm → partial RoPE；512 × 4 + tail。
- [x] MSA 明确先 token 评分再 max pool、按 GQA 组独立、128 × 16、局部块占一个名额。
- [x] CSA 明确四倍产出密度与八-token 重叠窗口、学习式压缩、Pro Top-1024；HCA 明确 128 倍非重叠压缩及全读。
- [x] 百万算例区分 token/压缩条目/每组，不以读取数推缓存字节；明示因果边界与未完成块简化。
- [x] 未忽略索引分支，未宣称整个算法线性；区分单 query decode 与整段 prefill。
- [x] 提供四项指定官方来源、原图定位与 answer-me-with-html 理念出处；未改动 HTML。
- [x] 依据网页交付者反馈同步五机制按钮、query 切换、MSA 组 A/B、图片放大、预算滑块和来源索引定位；网页浏览器交互验收由网页交付者负责。
