返回报告库

AI / Technology

Kimi K3开放前沿智能

原题:Kimi K3: Open Frontier Intelligence
Kimi Team,arXiv:2607.24653v1,2026-07-27
主来源:arXiv 摘要页 · 论文 PDF

Kimi K3 不是靠一个“神奇模块”把上下文拉到一百万 token。它同时扩大了序列长度、网络深度、模型宽度和任务时长,然后分别为四条轴设计信息通路。理解这篇论文的关键不是记住 KDA、AttnRes、MoE 三个名字,而是看清:每条通路保存什么、丢掉什么、付出什么代价,最后又怎样接到训练与运行系统上。

Kimi K3 同时扩了四条轴,不能压成一句“信息流更好”

先分清四种“变长”

一份一百万 token 的材料很长,这是序列长度;模型有 93 层,这是网络深度;模型拥有 2.78 万亿总参数,这是模型宽度;一个智能体跨越数千次工具调用,这是任务时长。它们看起来都叫“规模”,实际卡住的资源完全不同:序列会撑大注意力计算,深度会让早期表示越来越难直接取回,宽度会增加每个 token 的计算与通信,任务时长则会让缓存、文件和应用状态跨轮次丢失。

Kimi K3 给四条轴安排了不同机制。KDA 沿序列轴维护固定形状状态;AttnRes 沿深度轴选择先前层或块;Stable LatentMoE 沿宽度轴只激活少量专家;外部 KV cache 与可恢复沙箱沿时间轴保存运行现场。先把这四件事分开,后面才不会把“支持百万上下文”和“能够长期自主执行”误写成同一个因果关系。[论文 §1、§2、§5]

这代模型到底大在哪里

Kimi K3 有 93 层、2.78T 总参数、104.2B 激活参数、896 个路由专家,每个 token 选择 16 个专家,另有 2 个共享专家始终工作。注意力层不是清一色全局注意力,而是 69 层 KDA 与 24 层 MLA 混合;训练窗口从 Kimi K2 的 128K 提高到 1M。[论文表 1]

这些数字不是一串规格表。2.78T 表示模型能存放多大的参数容量,104.2B 才更接近一个 token 真正调用的计算规模;1M 表示窗口容量,不代表日常任务一定会有效使用全部历史;93 层表示变换次数更多,也意味着后层取回早期信息的路径更重要。

论文的总判断要放到最后

论文报告,相比 Kimi K2,新架构、数据和训练配方共同带来约 2.5× 的总体缩放效率提升。这里的“共同”很重要:论文没有给出一张消融表,把 2.5× 分别切给 KDA、AttnRes 或 LatentMoE。准确的说法是:Kimi K3 重新设计了四条扩展轴,并证明整套系统能工作;不能据此宣布某一个模块独自贡献了全部提升。[论文 §3.2、图 7]

KDA 不保存无限增长的注意力表,而是反复改写固定状态

普通注意力为什么会撞墙

全局注意力处理第 t 个 token 时,要让它与许多旧 token 比较。序列从 4K 拉到 1M 后,需要考虑的 token 对急剧增加;推理时还要长期保存旧 token 的键和值。问题不只是“模型会不会忘”,而是那张两两比较表和 KV cache 会不会先把计算与显存吃完。

KDA 换了问题。它不问“当前 token 应该逐一查看哪几个旧 token”,而是问“当前 token 应该怎样修改一份固定大小的工作状态”。无论前面读过一千还是一百万个 token,状态矩阵 S_t 的形状都不随序列长度增长。

一个新 token 到来时,状态发生四步变化

KDA 的核心更新可以写成:

St=(Iβtktkt)Diag(αt)St1+βtktvt,o~t=Stqt.S_t=(I-\beta_t k_tk_t^\top)\operatorname{Diag}(\alpha_t)S_{t-1}+\beta_t k_tv_t^\top,\qquad \tilde{o}_t=S_t^\top q_t.

输入是旧状态 S_{t-1},以及当前 token 生成的查询 q_t、键 k_t、值 v_t。第一步,α_t 分通道衰减旧状态:有些通道保留得多,有些忘得快。第二步,系统沿当前键 k_t 指向的方向修正旧关联,避免新旧内容只会无脑相加。第三步,β_t 控制当前值 v_t 写入多少。第四步,查询 q_t 从更新后的状态里读出结果。

把它想成一本按主题分栏的活页笔记。α 决定旧笔记保留多少,β 决定新材料改写多重,键决定改哪一栏,查询决定读哪一栏。这个比喻只解释动作顺序;真实状态是一组连续数字,不是一份可以逐句翻阅的摘要。

为什么叫 Delta Attention

关键不在“把新值写进去”,而在写入前先减掉当前键方向上的旧预测。若只累加,新信息会不断覆盖或放大旧信息;delta 更新更像先比较“当前状态已经认为这里是什么”,再写入差异。于是状态学习的是一次修正,而不是一份永远增长的历史清单。

这也解释了 KDA 的边界:压缩进状态的信息不再等价于保留每个旧 token 的完整身份和位置。它换来固定状态与线性递推,但牺牲了每一层都能逐 token 精确回看的自由度。

数值稳定不是实现小节,而是机制能否训练的前提

KDA 需要在小块内并行计算连续衰减。如果保留率无限接近 0,累计衰减的倒数可能溢出。论文把每个通道的对数衰减限制在 g_min=-5 到 0 之间,再取指数得到 α

gth=gminSigmoid(eAhzth),αth=exp(gth).g_t^h=g_{\min}\operatorname{Sigmoid}(e^{A^h}z_t^h),\qquad \alpha_t^h=\exp(g_t^h).

这样单步保留率不会低于 e^-5≈0.0067。对 16-token 小块,累计倒数仍处于 BF16 可表示范围,块内计算便可以继续使用高吞吐的 Tensor Core 矩阵乘法。代价是模型不能在单一步里无限激进地遗忘;收益是递推机制不只在数学上成立,也能在低精度硬件上稳定运行。[论文 §2.1.1、图 3]

三层 KDA 后补一层全局注意力:便宜接力与精确回看缺一不可

为什么不把 93 层全部换成 KDA

固定状态擅长把长历史压缩着往前带,但压缩必然丢掉一部分逐 token 细节。纯全局注意力保留精确回看,却会重新带回昂贵的两两比较与 KV cache。Kimi K3 没有押注其中一边,而是把二者排成周期结构:每个块先走 3 层 KDA,再走 1 层 Gated MLA;最后还有一个全局注意力层。[论文 §2.1、图 2、表 1]

前三层像连续整理笔记:每读一个 token,就更新固定状态。第四层则允许 token 重新直接与全局 token 表示交互,找回状态压缩可能模糊的细节。论文里的结构一共包含 69 层 KDA 和 24 层 MLA。KDA 负责让大部分长序列混合更便宜,MLA 负责周期性“重新对齐”。

Gated MLA 解决的是精确通道,不是免费通道

MLA 用低维潜变量压缩键和值,并由门控调节注意力输出,但它仍然属于 token-to-token 全局注意力。只要这条通路存在,系统就仍要承担相应计算与 KV cache。混合结构的含义不是“注意力成本消失”,而是把昂贵全局交互从每一层降为周期出现。

因此,看到 1M 时应先问两个问题:多少层保存完整 token 交互?其余层把历史压到了什么状态?Kimi K3 的答案是“多数层递推、少数层全局”。这比“用了线性注意力,所以可以无限长”准确得多。

算法要和并行系统一起改

百万 token 不可能只靠单卡顺序扫描。论文为 KDA 设计 Context Parallelism:不同设备先处理自己的序列块,再传递能代表该块状态变化的变换,使下一块接着更新。KDA 还配有融合内核和 state-aware prefix caching,避免把固定状态与 MLA 的 KV cache 当成同一种缓存处理。[论文 §5.1]

节省的资源主要是大部分层随序列增长的注意力计算与缓存;新增成本是 KDA 专用内核、跨设备状态传递、周期性 MLA 和两类缓存共存。KDA 的价值不是凭空创造无限记忆,而是把百万上下文从“每层都付全局成本”改造成“多数层用固定状态接力,少数层付精确回看的钱”。

AttnRes 改的不是序列记忆,而是第 80 层还能向谁取信息

普通残差连接只有一条累加主路

传统 Transformer 中,第 l 层通常接收第 l-1 层的状态,再加上本层变换。早期特征并没有消失,但它们已经和几十层结果揉在同一个向量里。第 80 层若需要第 5 层识别出的某种细节,不能直接选择第 5 层,只能依赖中间层一直把它保留下来。

这与长上下文是两个问题。KDA 处理的是 token 随时间进入时,历史怎样保留;AttnRes 处理的是网络越堆越深时,当前层从哪些早期表示取信息。把两者写成“多留几条信息通路”,虽然不算错,却没有说清通路位于哪条轴上。

当前层对先前来源做一次注意力选择

AttnRes 为当前层准备一个可学习查询 q_l,为输入嵌入和先前层表示准备键和值。它先算每个来源的权重,再做加权和:

αil=ϕ(ql,ki)j=0l1ϕ(ql,kj),hl=i=0l1αilvi.\alpha_{i\to l}=\frac{\phi(q_l,k_i)}{\sum_{j=0}^{l-1}\phi(q_l,k_j)},\qquad h_l=\sum_{i=0}^{l-1}\alpha_{i\to l}v_i.

若三个来源的权重是 0.6、0.3、0.1,当前层就更依赖第一份表示。一个权重上升时,其他权重必须相应下降。RMSNorm 先控制各来源的幅度,避免某层只因数值更大就被误判为更相关。这里发生的是深度方向上的内容选择,不是多保存一份序列 KV cache。[论文 §2.2,式 8–9]

逐层保存太贵,所以 K3 只长期保存块表示

若 93 层全部进入候选池,持久状态、流水线通信和推理合并成本都会随层数增长。Block AttnRes 把层分成约 8 个块:块内维持顺序累加,跨块只保存汇总表示。论文给出的状态开销从 O(Ld) 降到 O(Nd),其中 L 是层数,N 是块数;Kimi K3 使用 8 个 12 层块,加上嵌入来源后形成 9 个块级来源。[论文 §2.2、式 10]

这笔交换很直接:保存每层,回看更细但内存和通信更大;保存每块,成本更低但失去逐层选择粒度。论文引用先前 AttnRes 工作说明约 8 个块能保留大部分收益,但没有在 Kimi K3 的完整模型上给出一张“去掉 AttnRes 后最终基准下降多少”的独立消融。因此最稳妥的结论是:AttnRes 为 93 层网络增加了可学习的深度捷径,并控制了捷径的状态成本;它不是最终能力的单独解释。

2.78 万亿参数不是每个 token 都算:LatentMoE 只召集一小队专家

总参数与激活参数为什么差了二十多倍

Kimi K3 每层拥有 896 个路由专家,一个 token 只选择 16 个,另有 2 个共享专家处理所有 token。总参数 2.78T 表示整套专家能容纳的知识与函数容量;104.2B 激活参数表示一次 token 计算实际经过的参数规模。MoE 的基本经济学是:存得下很大的专家团队,但每次不必让全员同时开会。

LatentMoE 又把稀疏路径压到 3584 维,正好是主干隐藏维度 7168 的一半。输入 x 同时走两条路:共享专家直接处理完整宽度;路由路径先经 W↓ 压到潜在空间,选择 16 个专家,聚合后再经 W↑ 返回完整宽度,最后与共享路径相加。[论文表 1、§2.3、式 11]

极端稀疏先带来两个新故障

第一,路由路径连续经过降维、门控专家、聚合和升维,近似四次矩阵乘法串联。模型扩大到 2.8T 后,中间激活容易爆大。第二,896 个专家分布在不同设备上,若许多 token 同时选中同一专家,最忙设备会拖住整批;冷门专家则几乎学不到东西。

Stable LatentMoE 不是一个单独模块名,而是一组稳定化措施。RMSNorm 放在专家聚合与升维之间,控制不同专家组合造成的尺度波动;SiTU-GLU 对门控支路与值支路分别做平滑上限,避免 SwiGLU 两个无界因子相乘产生巨大激活;Quantile Balancing 调整路由偏置,让每个专家接近目标负载。

负载均衡不是“鼓励平均”,而是直接改下一批的门槛

论文用 8 个 token、4 个专家、每 token 选 1 个专家举例。普通 Top-k 可能得到 (4,3,1,0):第一个专家收 4 个 token,第四个一个也没有。QB 观察每个专家在全局 batch 上的分数边际,用相应分位数更新下一步偏置,使目标变成 (2,2,2,2)。偏置只作用于下一步,避免同一批数据一边产生统计量、一边被统计量改路由。[论文图 5、式 14]

真实训练中有数百万边际分散在不同设备,精确汇总分位数太贵。系统改用直方图:各设备只汇总每个区间的计数,一次 all-reduce 后近似恢复全局分位数。推理时偏置冻结。这里节省的是全量专家计算;付出的是路由、跨设备通信、负载统计和稳定化设计。

2.5× 仍然不能只写在 MoE 名下

MoonEP 用静态计算形状和零拷贝通信让专家执行保持平衡,训练配方还同时改了 Per-Head Muon、学习率搜索、数据和多模态路径。论文的缩放曲线比较的是整个 Kimi K3 模型族与 Kimi K2 模型族。它证明这些改变合起来更有效率,不证明 LatentMoE 单独值 2.5×。[论文 §2.5、§3.2、§5.2]

一百万 token 是训练课程、数据设计和缓存系统共同完成的

窗口不是一步从 8K 拉到 1M

Kimi K3 先在预训练阶段把窗口从 8K 延到 64K,再在 cooldown 阶段进入 256K 和 1M。最昂贵的长序列计算只占总训练预算的一小部分。这个课程先让模型学会基本语言与多模态能力,再逐级适应更长依赖,避免从训练第一天就为一百万 token 支付全部成本。[论文 §3.3–3.4]

KDA 本身不使用显式位置嵌入,而通过递归门控和衰减隐式编码顺序,因此延长到 1M 时不需要额外做 RoPE 插值或缩放。但“位置编码不用改”不等于“喂长文就会自动学会远距离检索”。

长数据必须让答案真的依赖远处信息

自然长文和长视频里有大量重复、截断、二进制垃圾、无效日志与低质量片段。论文先做精确与模糊去重、视频感知哈希、质量过滤和结构校验,再提高真实长文档的采样比例。由于高质量长材料仍然稀缺,团队还合成跨全文分散线索的任务:只有把相距很远的信息连起来才能解答,防止模型在一百万窗口里继续只看最近几页。[论文 §3.4]

因此,1M context 至少包含三层含义:架构能在这个长度上计算,训练见过需要远距离依赖的数据,评测或任务真的要求使用远处信息。只证明第一层,不能自动推出后两层。

训练窗口解决“装得下”,缓存系统解决“别重算”

长智能体轨迹会频繁暂停。最活跃的 KDA 状态与 MLA KV 块留在 GPU;暂时不用、但可能复用的前缀逐出到 CPU DRAM;沙箱文件与脏页可以进一步存到 NVMe。任务恢复前再预取所需状态。存储越往下容量越大、成本越低,但恢复越慢。

这套层级不是模型记忆本身。KDA 状态与 KV cache 保存的是模型计算现场;microVM 存档保存的是文件、进程和应用世界;二者缺一不可。模型即使“记得”自己刚才要改哪个文件,如果文件系统已经回滚,任务仍然续不上。

长时程执行靠 RL、验证器和可恢复世界,不是上下文窗口自动长出来的

先把会聊天的底座变成会行动的策略

后训练分三段。SFT 用经过验证和人工参与标注的复杂轨迹,建立工具调用与长任务的冷启动能力。RL 再跨三个领域训练:通用推理与知识、通用智能体、编码智能体;每个领域又分 low、high、max 三种推理强度,共得到 9 个专家策略。最后,Multi-Teacher On-Policy Distillation(MOPD)把这些领域与强度专家合并回一个统一模型。[论文 §4.1]

这里的“专家”不要和前面的 MoE 专家混淆。MoE 专家是模型内部每层被路由的小网络;RL 专家是整套模型在某个领域和推理强度下训练出的策略版本。一个发生在单次 token 的网络宽度里,一个发生在后训练策略之间。

一条长轨迹是怎样前进的

模型先推理并选择工具,工具改变外部环境;模型读取新观察,再决定下一步;验证器检查真实结果,而不是相信模型自称“完成”。这个“推理 → 行动 → 观察 → 验证 → 调整”的循环可以持续数百或数千次工具调用,累计上下文达到数百万 token。

训练系统允许 partial rollout:一次没有跑完的轨迹不必丢弃,可以跨训练迭代继续。困难在于策略参数已经更新,旧轨迹由较早策略产生,容易变成过时数据。论文用逐 token 正则约束策略变化,并通过外部缓存保留轨迹前缀,减少重新计算。[论文 §4.1.2、§5.3]

暂停的不只是一段文字,而是一个正在变化的世界

编码、网页和个人助理任务会创建文件、启动进程、修改数据库。microVM 沙箱必须随轨迹一起暂停和恢复。论文采用增量存档,只保存变化的内存页和环境状态;报告的最低存档与恢复延迟分别为 133 ms 和 49 ms。与此同时,GPU、CPU 与 NVMe 间继续管理模型缓存和前缀。[论文 §4.2.5–4.2.6、§5.3]

这条链路的准确因果关系是:KDA 和 1M 窗口让长历史更可承受;SFT 与 RL 教模型怎样行动;工具提供动作;验证器给出可检查反馈;KV cache 与沙箱让计算现场和外部世界跨暂停存活。架构支撑 长时程执行,但不能单独造成 长时程执行。

代价也很具体:更大的 CPU/NVMe 容量、预取带宽、缓存命中调度、microVM 存档、失败恢复和验证器工程。窗口越长,缓存未命中后从头 prefill 的损失越大,因此调度系统本身成为能力的一部分。

成绩已经进入前沿,但论文最重要的边界也写在成绩表里

强项集中在代码执行与可验证智能体任务

表 2 中,Kimi K3 在 ProgramBench 得到 77.8,略高于 GPT-5.6 Sol 的 77.6;SWE-Marathon 得到 42.0,高于该表中最高闭源对手 Opus 4.8 的 40.0;BrowseComp 得到 91.2,高于 GPT-5.6 Sol 的 90.4。Terminal-Bench 2.1 则是 88.388.8,已经非常接近。[论文表 2、§6.1.4]

这些任务与论文投入的训练和系统方向相吻合:代码执行、浏览、工具调用、可验证环境和长链路恢复都有清楚的反馈信号。它们证明 Kimi K3 的组合系统已经能在若干长程任务上进入最强一档。

研究级推理仍是明显缺口

同一张表中,CritPt 得分 23.4,低于 GPT-5.6 Sol 的 32.3;HLE-Full 加工具后为 56.0,低于 Fable 5 的 63.0 和 GPT-5.6 Sol 的 58.0。论文自己把 research-level reasoning 列为后续重点。换言之,大窗口、更多参数和更长工具轨迹并没有自动抹平最难研究推理任务上的差距。

总体位置也应照论文原话来读:Kimi K3 在作者评测套件中总体落后 Claude Fable 5 与 GPT-5.6 Sol,但持续领先其余被测开源与闭源模型。它是开放权重模型的新前沿,不等于所有任务上的绝对第一。

这不是纯模型裸跑对比

不同模型使用 Kimi Code、Claude Code 或 Codex 等不同 harness;Terminal-Bench 报告各模型多个 harness 中的最佳分数;Fable 5 可能触发 fallback,GPT-5.6 Sol 可能带 cyberguards;部分第三方榜单也为不同模型搭配不同工具框架。因此,表 2 支持“这些完整系统在指定设置下做到多少”,不支持“某个架构模块单独强多少”。[论文 §6.1.2–6.1.3]

最终判断

Kimi K3 真正有价值的地方不是堆出三个新名词,而是把四种扩展做成了一条能跑通的链:

  1. KDA 用固定状态承接多数长序列计算,周期性 MLA 保留精确全局交互。
  2. AttnRes 让深层网络按需取回早期块表示,同时控制深度状态成本。
  3. Stable LatentMoE 用潜在空间、激活上限和负载均衡扩大稀疏容量。
  4. 渐进长上下文训练、长程 RL、外部缓存与可恢复沙箱把架构变成可执行系统。

这套设计没有让资源约束消失,而是重新分配资源:少付逐 token 全局比较,多付状态压缩与专用内核;少算全部专家,多付路由和通信;少重算长前缀,多付分层缓存和恢复系统。论文最值得学习的不是“信息多留几条通路”,而是它明确回答了每条通路在哪里、传什么、何时更新,以及代价被搬到了哪里。

研究附录

证据账本

主张论文证据结论边界
模型规模2.78T 总参数;104.2B 激活;93 层总参数不等于每 token 计算量
混合注意力69 层 KDA + 24 层 MLA;基本块为 3 KDA + 1 Gated MLA固定状态与精确全局交互并存
深度通路Block AttnRes 从 O(Ld) 降到 O(Nd);约 8 个层块省状态,但丢逐层选择粒度
稀疏宽度896 个路由专家选 16 个;2 个共享专家省全专家计算,增加路由和通信
联合缩放相比 Kimi K2 约 2.5×架构、数据、训练配方的联合结果
长上下文8K→64K→256K→1M容量不等于有效使用全部历史
长轨迹数千工具调用、数百万累计 token;沙箱最低存档/恢复 133/49 ms依赖工具、验证器、缓存和沙箱
结果边界ProgramBench 77.8;BrowseComp 91.2;CritPt 23.4harness 不统一,仍有研究推理差距

五种容易混淆的“状态”

  • 模型参数:训练后长期保存的权重。
  • KDA 状态:沿 token 序列递推的固定形状工作状态。
  • MLA KV cache:全局注意力为了避免重复计算保存的 token 中间量。
  • AttnRes 块表示:沿网络深度供后层选择的早期表示。
  • 沙箱状态:文件、进程、数据库与应用环境,存在于模型之外。

论文关系

  • Kimi Linear / KDA:Kimi K3 将 KDA 扩展到更大规模,并做设备内、跨设备和跨请求系统协同。
  • Attention Residuals:Kimi K3 使用块级版本控制 93 层网络的状态与通信。
  • DeepSeek-V2 / MLA:Gated MLA 延续潜变量 KV 压缩思路,周期性保留全局交互。
  • DeepSeekMoE / LatentMoE:共享专家与路由专家组织被扩展到 896 专家,并加入稳定化设计。
  • MOPD:把领域与推理强度不同的策略蒸馏回统一模型。

复核这篇论文时最该追问什么

  1. KDA、AttnRes、Stable LatentMoE 各自贡献多少?需要完整组件消融,目前论文没有给出。
  2. 1M 窗口中,模型在多少任务上真的使用了远距离信息?需要位置敏感的长上下文评测,而不只是容量测试。
  3. 长轨迹成绩有多少来自模型,有多少来自 harness、验证器和恢复系统?需要统一工具框架下的受控比较。
  4. 分层缓存失效时,延迟和成本怎样恶化?需要命中率、逐出和恢复的生产分布。
  5. CritPt 与 HLE 的差距来自数据、奖励、推理搜索还是底座能力?现有表格不能区分。

来源定位

主要机制:论文 §2.1–2.3(PDF pp. 3–8);数据与缩放:§3.1–3.4(pp. 9–11);后训练:§4.1–4.2(pp. 11–16);系统:§5.1–5.4(pp. 16–24);评测:§6.1(pp. 24–27)。所有产品意义与因果判断均为本文解释;论文没有提供逐组件解释全部最终成绩的消融矩阵。

关于这篇论文的三个关键问题

Kimi K3:四条扩展轴怎样组成一套长任务系统 解决了什么问题?

Kimi K3 不是靠一个“神奇模块”把上下文拉到一百万 token。它同时扩大了序列长度、网络深度、模型宽度和任务时长,然后分别为四条轴设计信息通路。理解这篇论文的关键不是记住 KDA、AttnRes、MoE 三个名字,而是看清:每条通路保存什么、丢掉什么、付出什么代价,最后又怎样接到训练与运行系统上。

Kimi K3:四条扩展轴怎样组成一套长任务系统 的核心结论有哪些证据?

Kimi K3 有 93 层、2.78T 总参数、104.2B 激活参数、896 个路由专家,每个 token 选择 16 个专家,另有 2 个共享专家始终工作。注意力层不是清一色全局注意力,而是 69 层 KDA 与 24 层 MLA 混合;训练窗口从 Kimi K2 的 128K 提高到 1M。[论文表 1]

阅读 Kimi K3:四条扩展轴怎样组成一套长任务系统 时最需要注意什么局限?

Kimi K3 给四条轴安排了不同机制。KDA 沿序列轴维护固定形状状态;AttnRes 沿深度轴选择先前层或块;Stable LatentMoE 沿宽度轴只激活少量专家;外部 KV cache 与可恢复沙箱沿时间轴保存运行现场。先把这四件事分开,后面才不会把“支持百万上下文”和“能够长期自主执行”误写成同一个因果关系。[论文 §1、§2、§5]

今天还可免费读 2 篇新报告订阅 Pro 后无限阅读,并获得每月 10 篇新论文生成额度。升级 Pro