本文由 莫潇羽@无忆研习社(www.wuyi.wiki)撰写,转载请注明出处。
快速摘要(30 秒看完)
核心结论先放这儿:GLM-5.2 这一次的升级,真正值得记住的就三件事——1M 上下文真的能跑、Coding 能力继续坐稳国产开源第一、长程任务不容易跑偏。 它把上一代的 200K 直接拉到 1M,是工程上"打过磨"的 1M,不是参数表凑数。注意力结构做了组合拳改造,长序列下的效果衰减和推理成本同时被压下来。SWE-Bench、Code Arena、Design Arena 这几个真正贴近"开发者用得爽不爽"的榜单上,GLM-5.2 在全球可用模型里排到了第一,对标的是 Claude Opus 4.8 这种级别。
它解决了什么实际痛点? 用过 Agent 工具的人都懂——上下文窗口一过 70%,模型就开始"降智",对话越长越爱忘事,长任务做到一半跑偏。这套问题的根,是上下文长度和推理质量之间的拉扯。GLM-5.2 这次的工程意义,就是把这条线往上抬了一截。
想看完整拆解、性能原理、实测案例、接入方式和上手避坑指南,往下翻。
一、先说人话:GLM-5.2 这次到底改了什么
最近一个月,国产大模型圈最热闹的事不是某个新闭源模型上线,而是 GLM-5.2 正式开源了,并且把上下文窗口推到了 1M。我在 GLM-5.1-HighSpeed 出来的时候就说过一句话:希望快点看到 1M 的版本。没想到不到一个月,这个版本真的来了。
1.1 一句话总结这次升级
如果你只想要一个版本号到版本号的对照表,看这张就够了:
|
维度 |
GLM-5.1 |
GLM-5.2 |
|
上下文窗口 |
约 200K tokens |
1M tokens(约 100 万) |
|
长上下文有效性 |
标榜支持,但接近上限明显降智 |
1M 长度下检索/推理衰减明显小于同类 |
|
Coding 综合能力 |
国产开源第一梯队 |
国产开源第一、对标 Claude Opus 4.8 |
|
长程任务稳定性 |
中等 |
排名最高的开源模型 |
|
直出页面审美 |
偏"AI 味儿",紫调较重 |
Design Arena 全球第一档 |
|
工具调用稳定性 |
较稳 |
在真实场景测试中保持高通过率 |
|
开源协议 |
开源 |
MIT 协议全面开源 |
1.2 它真正动手的地方
很多人看到 "1M 上下文" 这几个字,第一反应是:又来一个号称支持 1M、其实用不动的模型。这种判断在过去两年里基本都是对的。但这一次,我自己用下来的体感是不一样的。
GLM-5.2 在三件事上做了非常硬核的工程:
GLM-5.2 升级三件套
├── 1M 上下文(注意力结构重构)
│ ├── KV8 分组扩展
│ ├── LayerSplit 分层稀疏
│ ├── IndexShare 4 索引共享
│ └── HiSparse 层级稀疏
├── Coding 能力(持续打榜)
│ ├── SWE-Bench 开源 SOTA
│ ├── Code Arena 全球可用模型第一
│ └── 与 Claude Opus 4.8 同档可比
└── 长程任务(Long-horizon Tasks)
├── 长程任务基准排名最高的开源模型
├── 表现处于 Opus 4.7 与 4.8 之间
└── 复杂任务能持续推进,不容易跑偏
这一节先把结论摆出来,下面几个章节会一节一节展开讲:1M 上下文为什么这么难做、GLM-5.2 是怎么把它做成的、Coding 能力榜单背后的真实使用体感、长程任务到底意味着什么,以及我自己跑了哪些案例。
1.3 为什么我把这次升级看得比较重
我自己折腾过国内国外一大圈模型。坦白讲,过去国产模型在"主力级别"这条线前面,总是差那么一口气。差在哪?不是单点的指标弱,而是长任务一拖就漏气。
举个最常见的场景:你让一个 Agent 帮你重构一个中等规模的代码库,前面几轮看起来都挺好,等上下文用到 60% 以上,模型开始重复犯之前已经修过的错、开始遗忘前面的约束、开始把刚写好的接口签名又改回旧版本。这种"做着做着就傻了"的体感,是国产模型过去最容易让人放弃的地方。
GLM-5.2 这次的工程升级,等于是把这条短板补到了"主力级别"。 这不是我一个人这么说,社区里的反馈也是类似的——有开发者直言这是国内第一款在他工作流上真正能打 Opus 的模型。
这个玩笑的味道挺微妙。它实际说明的是:国产开源模型第一次真的越过了那条"主力级"的线。不是榜单意义上越过,是日常使用体感上越过。
1.4 这篇文章我想跟你聊什么
我不是要做一个"官方通稿翻译"的活儿。这篇文章会做三件事:
- 把 1M 上下文这件事讲透:为什么它这么难做,为什么很多模型号称支持但你用不起,GLM-5.2 是怎么把它做"真正能用"的,原理我尽量用大白话讲清楚。
- 把 Coding 能力背后的体感说清楚:榜单数字大家自己看就行,我更想讲的是——在真实的项目里,1M 的窗口和 Coding 能力组合起来之后,到底改变了哪些以前你做不了的事。
- 把上手路径和接入方法整理出来:从 Coding Plan 到 API、再到本地部署 / 在线体验,怎么用最快、怎么避坑、配置怎么改,我都列清楚。
整个体系跑下来差不多一万三千字,我自己写得也算尽兴。新手能从中拿到接入方法和基本原理,老手可以挑长上下文那一节看注意力结构改造的工程思路。 莫潇羽@无忆研习社后续也会继续跟进这条产品线。
二、1M 上下文为什么重要:从"上下文降智"说起
讲 GLM-5.2 之前,先讲清楚一个被大多数文章忽略的前置问题——为什么我们对"长上下文"这件事这么执念? 这事不讲透,1M 这个数字就是空的。
2.1 你可能没意识到,上下文是 Agent 的第一资源
如果你重度用 Claude Code、Cursor 这类 AI 编程助手,应该见过这种场景:
$ /context
─────────────────────────────────────
Context window usage: 73%
System prompts: 12K tokens
Tool definitions: 8K tokens
Conversation history: 142K tokens
File contents: 24K tokens
─────────────────────────────────────
⚠ Approaching auto-compact threshold
或者你装了 status line 插件,状态栏右下角一个百分比数字。一到 70% 上下,整个助手就开始变傻——回答开始走神、刚说过的约束转头就忘、修过的 bug 又改回去。
这不是错觉,是上下文衰退(context rot)真实发生了。官方对这个问题有过非常直白的描述:上下文窗口是这类编程助手最重要的资源,随着上下文填满,模型性能会逐渐下降,因为注意力被分散到更多 token 上,旧的、不相关的内容开始干扰当前任务。
2.2 上下文衰退的具体症状
我自己整理了一份"上下文污染症状表",给你对照看:
|
上下文占用 |
你会感受到的症状 |
|
< 40% |
一切正常,模型反应快、记性好、产出稳 |
|
40% ~ 60% |
偶尔需要你提醒一两句之前定的规则,整体可控 |
|
60% ~ 75% |
开始有"前后矛盾"的小问题,决策容易摇摆 |
|
75% ~ 85% |
显著降智:遗忘约束、重复犯错、走偏 |
|
> 85% |
接近瘫痪,强烈建议立即压缩或清空 |
2.3 工具方的应对:压缩,但压缩是有损的
主流的 AI 编程助手都有一套自己的应对方案,核心思路其实只有两条路:截断 和 压缩。
┌──────────────────────────┐
│ 上下文窗口快满了,怎么办? │
└──────────────┬───────────┘
│
┌──────────────┴───────────┐
│ │
【截断派】 【压缩派】
滑动窗口 总结摘要
简单粗暴 有损但可控
│ │
丢历史细节 丢工具结果细节
约束容易消失 决策链路容易扁平
不同工具的选择差异挺大:
- 有的工具非常激进,上下文用到 92% 才触发压缩,逻辑是"榨干每一个 token"。
- 有的工具非常保守,70% 就开始压缩,宁可频繁一点也要保证质量。
- 还有的方案是把工具调用结果"外部化存储",只保留能够重新获取的最小信息集,比如网页只留 URL、文档只留路径。
不管哪种策略,核心问题都没解决:压缩本身是有损的。压缩时模型处于上下文最满、能力最弱的状态,这时候让它自己写一份"我之前都干了什么"的总结,本身就容易丢东西。最常见的丢失是这几类:
- 需求漂移:用户在中途改过口、补过约束,但压缩时只记住了最初目标,模型继续沿旧路线跑。
- 验收口径丢失:用户明确说过"不许动这段代码""输出必须用这种格式",没被压进摘要,相当于失效。
- 代码库状态丢失:哪些文件改过、改了什么、为什么改,这些信息一旦丢失,后面的决策就会失去根据。
2.4 真正的解法:把窗口拉大,让它真的能用
讲到这儿,结论就比较清楚了:压缩是被迫的次优解,真正的解法是把窗口本身做大,并且做到接近上限的时候依然好用。
这听起来很自然——上下文窗口的边界拉到 1M,你 200K 的项目随便装、500K 的对话历史也不必频繁压缩、长程任务可以从头跑到尾。但实现起来,每一步都是工程难题。
下面这张图把整件事说得比较清楚:
长上下文这件事,难在三个维度
─────────────────────────
计算量 KV 缓存 有效性衰减
(复杂度) (内存压力) (注意力发散)
│ │ │
平方级膨胀 线性叠加 长度越长越快
128K 还扛得住 每多一个 token 模型"注意力"
1M 直接跑不动 缓存就涨一截 被稀释
│ │ │
▼ ▼ ▼
推理慢、贵 显存吃满、爆 号称 1M
实测 200K 凑合
简单说:不是把数字写到 1M 就完了。如果你不在注意力结构、KV 缓存管理、稀疏策略上做硬骨头的改造,1M 就只是一个"参数表上的胜利"。用户最终的体感,依然是 "上 200K 就够用了,再多没意义"。
2.5 1M 上下文真的有意义吗?我的判断
我先给一个结论:有意义,而且很大。 但前提是它要"真正可用"。
举几个我自己经常遇到的场景,过去 200K 怎么都不够,1M 一上来就豁然开朗:
- 整库代码分析:稍微大一点的开源项目,源码加文档随便就 50 万 token 起步。200K 你只能给它喂关键文件,让它自己脑补;1M 直接把整个项目读完再开始干活,理解深度完全不在一个量级。
- Agentic Coding 长任务:从需求拆解、到设计文档、到分模块实现、再到联调测试,一条完整链路下来,几万 token 起步。中途如果还有工具调用、错误回滚,200K 一两个小时就用完了。
- 巨型代码库重构:跨多个模块调整接口,需要模型一边记着旧接口的所有调用点、一边写新接口。200K 撑不住,1M 是低保。
- 一键网站翻新:把一个老网站的全部源码(HTML/CSS/JS/后端模板)丢进去,让模型一次生成现代化的新版本。这种场景过去你要拆成几十个小任务才能做,1M 直接一把过。
- 超长文档场景:法律合同、专利说明书、PRD 这种动辄几万字的文档,处理起来很容易就突破 200K。
- 跨多文件审阅:一次性看 100 份合同找冲突条款、一次性看 50 个 PR 找模式相似的问题。
这些场景的共同点你应该看出来了:上下文必须一次到位,压缩就是损失。
而 GLM-5.2 的解题思路,不是去做更聪明的压缩,而是从根上把"长序列下的注意力"重新设计了一遍。下面一章我们就掰开揉碎讲讲这套结构。
三、1M 不只是数字,难在"真正能用"
很多人对长上下文的认知停留在"参数表上的一个数字"。但 1M 上下文如果做不好,本质上是一个反向陷阱——你以为窗口大了模型就更聪明,结果反而更慢、更贵、更糊涂。
这一章我想把"为什么 1M 这么难"这件事讲透,让你看到 GLM-5.2 这次工程突破的真正含金量。
3.1 第一道坎:注意力的"平方魔咒"
Transformer 模型的注意力机制有一个特别恶心的特性:计算复杂度随序列长度的平方增长。
序列长度 注意力计算量倍数(相对于 1K)
─────────────────────────────────────
1K 1× (基准)
4K 16× (短文档)
32K 1024× (中等代码文件)
128K 16,384× (一个项目)
512K 262,144× (大型代码库)
1M 1,048,576×(整个仓库 + 文档)
这张表里的数字看着抽象,换算成人话就是:从 128K 涨到 1M,注意力的计算量直接翻了 64 倍。如果你把 128K 想成"我跑一次推理要 1 秒",那原始稠密注意力跑一次 1M 推理要 64 秒。这显然不能用。
这就是为什么过去很多模型 128K 都还跑得动,到 1M 就直接拉胯。不是模型不行,是注意力机制的数学规律决定了它跑不动。
3.2 第二道坎:KV 缓存的"内存大胃王"
第二道坎是 KV 缓存(Key-Value Cache)。
简单解释一下,这玩意儿是 Transformer 在推理时为了避免重复计算搞的优化——把每个 token 在每一层算出来的 Key 和 Value 张量存起来,下一个 token 用的时候直接读。听起来很美好,但问题是这个缓存会一直增长。
# 一个非常简化的 KV 缓存大小估算公式
def kv_cache_size_gb(
seq_len: int, # 序列长度
num_layers: int, # 层数
num_heads: int, # 注意力头数
head_dim: int, # 每个头的维度
dtype_bytes: int = 2, # FP16 是 2 字节
):
# 每个 token 在每一层有 K 和 V 两份
bytes_per_token = 2 * num_layers * num_heads * head_dim * dtype_bytes
total_bytes = seq_len * bytes_per_token
return total_bytes / (1024 ** 3)
# 一个中等规模 MoE 模型在 1M 序列下的估算
# 假设 64 层 × 64 头 × 128 维 × FP16
size = kv_cache_size_gb(
seq_len=1_000_000,
num_layers=64,
num_heads=64,
head_dim=128,
dtype_bytes=2,
)
# 结果大约是 130+ GB —— 这只是一个会话的 KV 缓存
130+ GB 是什么概念? H100 单卡显存 80GB,A100 单卡显存 40/80GB。你光是为了塞下一个会话的 KV 缓存,就要占掉几张顶配 GPU 的全部显存。这还没算模型权重本身、激活值、batch 里的其他请求。
所以你看到很多"号称支持 1M"的模型,实际背后的成本和延迟根本撑不起常规使用。结果是:官方支持 1M,用户默认还是用 200K 凑合。这件事就僵在这儿了。
3.3 第三道坎:长程下的"注意力发散"
第三道坎更隐蔽,也更难解决——就算你硬件堆得起、推理跑得动,模型在长序列下的有效性也会衰减。
这个问题学术界叫 "long-context degradation" 或者 "context rot",本质上是 Transformer 的一个内禀缺陷:
- 注意力机制是一个 softmax 归一化的操作,所有 token 的注意力权重加起来等于 1。
- 序列越长,每个 token 平均能分到的权重就越小。
- 模型在长序列里寻找关键信息的能力,会随着无关 token 越来越多而下降。
研究里有一个挺经典的实验——在一段 128K 的上下文里,模型实际"关注到"的 KV 大约只占总量的 3% ~ 4%。也就是说,96% 以上的 KV 缓存在被加载、被计算、被存储,但模型几乎没在用它们。
这就引出了一个非常自然的优化方向:既然大部分 KV 是冗余的,那能不能不全算?
3.4 主流的解法:稀疏注意力 + KV 压缩
学术界和工业界这几年在长上下文上的攻防战,基本就是绕着"如何聪明地丢掉冗余 KV"打的。常见的几条路:
|
方法 |
核心思路 |
典型问题 |
|
滑动窗口注意力 |
只关注最近的 N 个 token |
早期约束容易丢 |
|
StreamingLLM |
保留首部 sink token + 滑动窗口 |
中段信息丢失严重 |
|
H2O / Heavy-Hitter |
保留注意力分数高的 token |
动态选择开销大 |
|
KV 量化 |
KV 用 4bit/2bit 存储 |
量化损失需要细调 |
|
分块稀疏注意力 |
把 KV 分块,块级稀疏 |
块的边界处理复杂 |
|
动态稀疏注意力 |
推理时实时选择重要 KV |
工程实现门槛高 |
这些技术每一个单独看都能解决一部分问题,但都有局限。真正的工程实践不是"用哪一种",而是"怎么组合"。组合得好,长度可以拉到 1M 还保持精度;组合得不好,1M 就只是个数字。
3.5 一句话总结这一章
1M 上下文这件事,难就难在"三道坎要一起跨过去"——计算量、KV 缓存、有效性衰减,任何一个没解决,1M 就跑不动、跑不起、跑不准。
下面这一章,我们看 GLM-5.2 是怎么用一套组合拳,把这三道坎一起跨过去的。
四、GLM-5.2 的注意力黑科技:KV8 / LayerSplit / IndexShare / HiSparse
这一章是全文最硬核的一节。我会尽量用大白话讲清楚 GLM-5.2 的注意力结构升级,但有些技术名词没法避开。新手可以重点看"这是干嘛的""带来什么好处"的部分,工程同学可以扣细节。
4.1 GLM-5.2 的基础架构盘点
先把模型本身的家底亮一下:
GLM-5.2 模型规格
─────────────────────────────────
架构 MoE 稀疏混合专家
总参数量 ~744B
激活参数 ~40B
模态 纯文本 + 代码(无多模态)
训练数据截止 2025 年 11 月
上下文窗口 1M tokens
开源协议 MIT
为什么强调是 MoE? 因为 MoE 架构能在保证总参数大、能力强的同时,每次推理只激活其中一小部分专家,让推理成本接近一个 40B 模型。但 MoE 本身不解决长上下文问题,长上下文问题是注意力结构层面的事。
4.2 注意力结构升级总览:四套组合拳
GLM-5.2 在注意力结构上做了四件事:
┌────────────────────────────────────────────────────────┐
│ GLM-5.2 注意力结构改造 │
├────────────────────────────────────────────────────────┤
│ │
│ ① KV8 —— 把 KV 分组从标准的几组扩到 8 组 │
│ 解决:注意力分流粒度太粗 │
│ │
│ ② LayerSplit —— 不同层用不同的稀疏策略 │
│ 解决:一刀切的稀疏丢信息 │
│ │
│ ③ IndexShare 4 —— 相邻 token 共享索引 │
│ 解决:索引开销随长度爆炸 │
│ │
│ ④ HiSparse —— 层级稀疏 │
│ 解决:稀疏率和精度的拉扯 │
│ │
└────────────────────────────────────────────────────────┘
这四个东西不是各自为战,它们是一套配合的"工程套装"。下面一个一个拆开讲。
4.3 KV8:把注意力分流做得更细
要讲 KV8,得先知道 GQA(Grouped Query Attention,分组查询注意力)。
普通的多头注意力(MHA)里,每个注意力头都有自己独立的 K 和 V。比如 64 个头就意味着 64 套 K/V,KV 缓存就要大 64 倍。这显然很贵。
GQA 的做法是:多个查询头共享同一组 K/V。比如 64 个查询头分成 8 组,每组共用一套 K/V,KV 缓存直接降到原来的 1/8。绝大多数现代大模型都用 GQA。
|
注意力机制 |
KV 头数 |
KV 缓存大小(相对) |
表达能力 |
|
MHA(多头注意力) |
与查询头相同 |
100% |
最强 |
|
GQA-8(8 组) |
查询头 / 8 |
12.5% |
略弱 |
|
GQA-2(2 组) |
查询头 / 2 |
50% |
较强 |
|
MQA(多查询) |
1 |
1 / 查询头数 |
较弱 |
那 KV8 是什么? 简单说,GLM-5.2 在 GQA 的基础上把 KV 分组数从标准的几组扩展到了 8 组,让注意力分流的粒度更细。这件事的意义在于:
- 分组越细,KV 缓存的压缩比越大,长上下文下的显存压力越小。
- 但分组太细容易丢表达能力,所以是个权衡。智谱选了 8 这个挡位,是工程实测下来精度和成本平衡得最好的。
给新手的直白解释:原来一群头一起共享一份"记忆",现在分成 8 个小组,每组共享一份。记忆变得更精细、储存更省。
4.4 LayerSplit:不同的层做不同的事
这个名字看起来玄乎,意思其实很朴素:Transformer 模型的不同层,承担的功能是不一样的,所以不应该用同一种稀疏策略一刀切。
研究发现,Transformer 的层有明显的分工:
Transformer 模型的层级分工
─────────────────────────
┌──────────────────────┐
高层 │ 抽象推理 / 跨段落整合 │ ← 需要全局视野,不能太稀疏
├──────────────────────┤
中层 │ 语义理解 / 句子关系 │ ← 适度稀疏,关注关键 token
├──────────────────────┤
低层 │ 词法 / 局部模式识别 │ ← 可以高度稀疏,主要看邻居
└──────────────────────┘
如果用一刀切的稀疏策略(比如所有层都只看最近 1K token),低层没问题,但高层做不了跨段落整合,长任务里的"全局信息回溯"就废了。
LayerSplit 的做法是:根据每一层的功能,分别配置稀疏策略。低层用激进稀疏,节省成本;高层用保守稀疏甚至稠密,保住跨距离的信息流通。这样整体稀疏率上去了,关键的全局能力没有丢。
给新手的直白解释:原来全公司所有员工都在执行同一套打卡制度,现在按部门分工:仓库的可以打卡走,研发部要 996,行政部弹性工作。整体效率上去了,关键岗位没耽误。
4.5 IndexShare 4:让相邻 token 共享索引
要讲 IndexShare,要先理解动态稀疏注意力是怎么"选 KV"的。
在动态稀疏注意力里,每个 token 在算注意力之前,要先从所有 KV 里"挑出"它要关注的那一小部分。这个"挑"的过程靠的是索引——给每个 KV 算一个分数,按分数排序,取 top-k。
传统动态稀疏:每个 token 独立挑选
─────────────────────────────────
token_1 → 独立计算所有 KV 的分数 → 挑 top-k
token_2 → 独立计算所有 KV 的分数 → 挑 top-k
token_3 → 独立计算所有 KV 的分数 → 挑 top-k
...
token_N → 独立计算所有 KV 的分数 → 挑 top-k
问题:索引开销随 token 数 × KV 数 增长 → 长序列下爆炸
GLM-5.2 的 IndexShare 4 做法是:相邻的 4 个 token 共享同一份索引选择结果。
IndexShare 4:相邻 4 个 token 共用索引
─────────────────────────────────
token_1 ─┐
token_2 ─┼─→ 共用一份索引(挑一次 top-k)
token_3 ─┤
token_4 ─┘
token_5 ─┐
token_6 ─┼─→ 共用一份索引
token_7 ─┤
token_8 ─┘
为什么这样可以?因为相邻 token 在语义上高度相关,它们要关注的"重要 KV"也基本一样。让它们各自独立挑一遍,纯属浪费算力。
这个 trick 直接把索引开销降到原来的 1/4 左右,对长序列下的吞吐提升非常显著。
给新手的直白解释:原来每个员工都要单独跑去图书馆查同一本资料,现在 4 个人共享一份查阅结果。每个人手里拿到的还是一样的资料,但总查阅次数少了 75%。
4.6 HiSparse:层级稀疏
最后一招 HiSparse,是把稀疏注意力做成了"分层级"的结构。
普通的稀疏注意力只有一层稀疏:要么关注,要么不关注。HiSparse 把它变成了多层级:
HiSparse 的层级稀疏结构(示意)
─────────────────────────────────
Level 0:粗粒度看整个序列 (超稀疏,几乎只采样关键位置)
↓ 找出值得深入的"区块"
Level 1:在选中的区块内细看 (中等稀疏,块内 top-k)
↓ 找出最相关的 token
Level 2:对关键 token 做精细注意力(稠密关注,保证精度)
这种"从粗到细"的层级结构,让稀疏率可以做得很高(节省成本),同时关键 token 上的注意力质量不会丢。
打个比方,这就像你在一个图书馆里找一本书:先看楼层指示牌(粗粒度),定位到某一层;再看书架分类(中粒度),定位到某一架;最后扫一眼书架(细粒度),找到那本书。你不会"挨本翻整个图书馆",你也不会"只看楼层指示牌就猜书在哪儿"。
4.7 这套组合拳的效果
讲到这儿,可以总结一下这四套技术合在一起带来了什么:
|
指标 |
改造前(GLM-5.1) |
改造后(GLM-5.2) |
|
上下文上限 |
200K |
1M |
|
长序列吞吐 |
基础水平 |
大幅提升 |
|
KV 缓存占用 |
基础水平 |
大幅下降 |
|
MRCR 长文基准 |
良好 |
SOTA |
|
GraphWalk 长程基准 |
良好 |
SOTA |
|
1024K 处衰减 |
— |
明显可控 |
注意"明显可控"这四个字。很多模型在长度上限附近会出现"断崖式衰减"——刚到 70% 还能用,到 90% 就完全不能看了。GLM-5.2 这套组合的目标就是让衰减曲线更平滑,让用户在 1M 这个尺度上有真实的可用窗口,而不是"参数表上的 1M"。
跟一些纯粹依赖 DSA(Dynamic Sparse Attention)的方案对比,这套组合在成本上还有进一步压缩空间——也就是说后续可能还能再降本。莫潇羽@无忆研习社会持续关注这个方向。
4.8 一段总结这一章
KV8 + LayerSplit + IndexShare 4 + HiSparse 这四个东西放在一起,等于把"1M 上下文"从一个营销数字,变成了一个工程上扎实可用的能力。这件事没那么花哨,但它是 GLM-5.2 这次升级最有含金量的部分。
下一章我们换个角度——从开发者最关心的 Coding 能力切入,看这套底层升级在实际工作流里带来了什么。
五、Coding 能力实测:为什么说它达到了 Opus 级别
讲完了底层结构,这一章回到开发者最关心的事——Coding 能力到底打不打。
榜单数据大家随便就能搜到,我更想讲的是榜单背后我自己的使用体感。我这两天大概用掉了 38M 的 token,跑了不少真实任务,包括代码库分析、跨文件重构、需求文档转代码、长程 Agent 任务。我把感受按维度拆开讲。
5.1 榜单先看一眼
简单列一下几个有代表性的榜单成绩:
┌─────────────────────────────────────────────────────────┐
│ GLM-5.2 关键榜单成绩 │
├─────────────────────────────────────────────────────────┤
│ Code Arena(全球百万用户盲测) │
│ └─ 1595 分,总榜第 2,全球可用模型第 1 │
│ │
│ Design Arena(评测模型品味 taste) │
│ └─ 全球第一档 │
│ │
│ SWE-Bench │
│ └─ 开源 SOTA,与 Claude Opus 4.8 同档可比 │
│ │
│ FrontierSWE(超长程、开放式、高难度软件工程任务) │
│ └─ 仅次于 Opus 4.8 和暂时不可用的 Fable 5 │
│ │
│ 工具调用(真实场景测试) │
│ └─ 正确率、JSON 格式合法性接近满分 │
└─────────────────────────────────────────────────────────┘
注意一个细节:Code Arena 全球总榜第二、第一是 Fable 5。但 Fable 5 被下架了,所以在全球可用的模型里,GLM-5.2 实际上就是第一。这个语境很重要——"国产模型超过 Opus"和"国产模型超过暂时无法使用的 Fable 5",传播效果不一样,但对开发者来说意义是一样的:你今天能用上的最强模型之一,是它。
5.2 体感维度一:项目级理解能力
我用同一个开源项目做了一组对比:让 GLM-5.1 和 GLM-5.2 分别对仓库做一次深度的源码阅读 + 分析报告输出。
任务设定:
- 输入:一个完整的中型开源项目(源码 + README + docs)
- 要求:输出一份"项目深度分析报告",包括架构、核心原理、关键模块、设计取舍、潜在改进点
- 评测方式:两份报告我自己看一遍,再让另一个模型做盲评
结果对比:
|
维度 |
GLM-5.1 |
GLM-5.2 |
|
全面性 |
关键模块有遗漏 |
几乎覆盖所有重要模块 |
|
深度 |
多停留在 API 层 |
深入到设计动机和取舍 |
|
准确性 |
偶有理解偏差 |
高度准确,没有明显错误 |
|
一致性 |
不同章节偶有矛盾 |
整体逻辑一致 |
|
上下文占用 |
~60% |
~12% |
最让我惊讶的是最后一行:GLM-5.1 光是"读完项目"这一步就把上下文占了将近 60%,意味着后续根本没多少余地做迭代开发。GLM-5.2 才占 12%,留下了 88% 的窗口给后续的修改、调试、问答。
这个数字差异比"报告质量提升了多少"更有实战意义。前者是"能不能用"的差距,后者只是"用得好不好"的差距。
5.3 体感维度二:复杂任务的"持续力"
Coding 工作里最折磨人的不是写一段难的代码,而是做一个长链条的任务能不能不跑偏。
我做了一个测试:让 GLM-5.2 完成一个端到端的需求——
给定一个万字 PRD 文档,要求一次性生成约 100 个 App 页面的原型代码(HTML + Tailwind + 必要的交互),每个页面遵循统一的设计规范,关键交互必须可点。
这个任务过去基本不可能让单个会话搞定,必须人工拆成几十个小任务。这次 GLM-5.2 一把过,中途没有要求我做任何中间确认、没有需要我重新喂上下文,最终输出的 100 多个页面在设计规范上保持了高度一致。
更值得说的是另一组测试:让模型一次性学习 100 多份合同文件,输出一份系统的"审批意见"。这种任务过去要么靠人工分组、要么靠 RAG 拆向量库。GLM-5.2 把全部合同一次性读完,输出的意见在条款冲突识别上的表现非常专业。智谱官方在真实场景测试里也跑过类似的场景——成功处理了 74 万条服务器日志的根因分析,单次会话完成跨四份合同文档的条款冲突识别。
5.4 体感维度三:工具调用的稳定性
Coding Agent 的另一个老大难是工具调用的格式稳定性。模型偶尔在 JSON 里少个引号、漏个字段、把字符串当数字传,整个 Agent 链路就崩了。
GLM-5.2 在这方面做得很扎实。我跑了几百次工具调用,没有遇到过 JSON 格式错误。在真实压测里,正确率和 JSON 合法性都接近满分。这种稳定性在做生产级 Agent 的时候,价值远超榜单数字。
5.5 体感维度四:长程 Agent 任务
智谱官方提供了一组长程任务的对比数据:
长程任务基准成绩对比(示意范围)
─────────────────────────────────
Claude Opus 4.8 ▰▰▰▰▰▰▰▰▰▰▰▰▰▰▰ ★顶级
GLM-5.2 ▰▰▰▰▰▰▰▰▰▰▰▰▰▰ ★开源最强
Claude Opus 4.7 ▰▰▰▰▰▰▰▰▰▰▰▰▰ ★非常强
其他开源模型 ▰▰▰▰▰▰▰▰▰ ★差距明显
也就是说,GLM-5.2 的长程任务能力,已经被夹在了 Opus 4.7 和 4.8 之间,而且是排名最高的开源模型。这条数据线对于做 Agent 应用的团队来说,含金量非常高。
5.6 一个真实案例:跨多文件的重构
我跑了一个稍微复杂的实战——把一个老项目(约 8 万行 TypeScript + Python 混合)里的鉴权模块从 JWT 单签换成多因子认证。这是个典型的"动一处影响全身"的需求:
- 鉴权中间件要重写
- 数据库 schema 要加字段
- 前端登录流程要改
- 几十个调用
getCurrentUser()的地方可能要适配 - 单测要更新
用 GLM-5.2 怎么干?
# 把整个项目读进上下文
$ cc-tool load --recursive --include="*.ts,*.py,*.sql"
✓ Loaded 487 files, 156K tokens (15.6% context)
# 让模型生成完整的修改计划
> 把鉴权模块从 JWT 单签换成多因子认证,列出全部需要修改的文件、改动点、风险、测试用例
# 模型给出 6 个阶段、52 个改动点的完整方案
# 然后让它分阶段执行,每个阶段完后我 review
# 全程上下文占用从 15.6% 涨到 67%,没有触发任何压缩
# 总耗时约 45 分钟,输出代码一次通过 80% 的现有测试
这种"全项目装进一个上下文窗口"的能力,才是 1M 真正的杀手锏。如果窗口只有 200K,光读项目就用掉一半,后面根本没法做这么复杂的事。
5.7 不吹的部分:还有什么没那么完美
我也得说几个用下来感觉还可以再打磨的地方,这样这篇文章才算诚实:
- 首 token 延迟:1M 上下文下,第一个 token 出来的等待时间还是不短的(毕竟要 prefill 那么多 token)。对于交互式编程场景,需要心理预期。
- 超复杂 UI 设计:偶尔会在非常复杂的 UI 设计任务里出现"风格漂移"——比如一个长任务后期生成的页面,配色和前期略有偏差。这个问题在用专门的 Skill 控制后能缓解。
- 少数小众语言:在主流语言(Python/TS/Go/Rust/Java)上表现极稳,但一些非常小众的语言(比如 Erlang、Elixir)我自己跑下来感觉还能再好一点。
整体来说,没有完美的模型,但 GLM-5.2 已经是目前国产开源里最接近"主力级"的存在。
六、长程任务不忘事:Agent 工作流的真正瓶颈被解了
这一章想单独把"长程任务"拎出来讲,因为它是 Agent 这条赛道上最关键、也最被低估的指标。
6.1 什么是长程任务?
简单定义:长程任务(Lo