暂无菜单项

一个汉字就让Claude代码高亮走慢路:Anthropic两周合并3000次改动,把网页整体提速3倍

发布于
67

非Latin-1字符会让V8把整段Markdown存成UTF-16,代码高亮正则因此走上较慢的双字节路径;20行修复只是这场由AI主攻、人类把关的性能冲刺之一。

先说预测:下一阶段AI编程真正拉开差距的,不是谁一天生成更多代码,而是谁能把性能指标、自动测试、真实遥测和灰度发布组成闭环。Anthropic这次两周冲刺的价值,不只是把Claude网页提速约3倍,而是展示了AI如何在明确指标和人类审核下,同时推进上百条工程线程。

但先把最容易误传的一点说清楚:这不是Claude故意限制中文用户,也不是服务器按语言限速。问题发生在浏览器端的代码高亮流程。只要一段Markdown里出现汉字、弯引号、长破折号等超出Latin-1范围的字符,V8就可能把整段字符串存为UTF-16双字节形式,让后续高亮正则走上更慢的路径。

一个非Latin-1字符就可能让整段回复进入V8双字节字符串路径
一个非Latin-1字符就可能让整段回复进入V8双字节字符串路径。点击查看大图。

01 / 两周、3000多项改动,13项指标平均快3.1倍

Anthropic工程团队把claude.ai和桌面端最常见的四条用户旅程拆开测量:打开新会话、开始输入、载入Claude Code会话,以及进入Cowork云端任务。这四条路径覆盖约95%的使用行为。

  • 新会话可输入时间:p75从3.1秒降到0.55秒,约快5.6倍。
  • Claude Code新会话:从0.8秒降到0.3秒。
  • Cowork云端载入:从2.6秒降到0.73秒。
  • 整体结果:13项测量的几何平均速度提高3.1倍。

冲刺期间合并了3000多项改动,高峰日超过200项。官方称整个过程没有造成面向用户的事故或回滚。这里的关键不是夸张的提交数量,而是每条改动都要被指标、测试和渐进发布约束。

Anthropic用内部Claude研究模型拆解并推进前端性能优化
Anthropic用内部Claude研究模型拆解并推进前端性能优化。点击查看大图。
13项核心指标的几何平均速度提高3.1倍
13项核心指标的几何平均速度提高3.1倍。点击查看大图。

02 / 为什么一个汉字能拖慢整段代码高亮?

V8为了节省内存,会根据字符串里的字符选择不同存储方式。只包含Latin-1范围字符时,可以使用每个字符1字节的表示;一旦出现中文、部分标点或其他超出该范围的字符,整个字符串就可能切换到每个字符2字节的UTF-16表示。

包含中文或其他非Latin-1字符的Markdown会改变底层字符串表示
包含中文或其他非Latin-1字符的Markdown会改变底层字符串表示。点击查看大图。
V8会根据字符范围选择单字节或双字节字符串存储
V8会根据字符范围选择单字节或双字节字符串存储。点击查看大图。

Claude回复通常先作为一整段Markdown进入前端处理。即使代码块本身全是ASCII,只要代码块外面有一个汉字,底层字符串也可能已经变成双字节。代码高亮器里的复杂正则在这条路径上执行更慢,长回复或大量代码块时,主线程阻塞就会被放大。

这也是为什么“中文用户全线中招”只能算抓眼球的说法:汉字确实容易触发双字节存储,但弯引号、长破折号以及许多其他语言字符也会触发同类情况。真正的根因是字符串表示与高亮算法的组合,而不是语言识别或账号限速。

03 / 20行修复:只把合适的代码块拉回单字节路径

团队的修复并不是把中文删掉,也不是强行把整段回复转码。做法更精细:在运行代码高亮前,单独检查代码块;如果代码块内容能够完整表示为Latin-1,就复制成单字节字符串,再交给高亮器处理。

修复只针对可安全表示为Latin-1的代码块建立单字节副本
修复只针对可安全表示为Latin-1的代码块建立单字节副本。点击查看大图。

官方案例中,第一个代码块的高亮耗时从约1.0秒降到0.35秒。这个优化有明确边界:如果代码块本身包含中文注释、中文字符串或其他非Latin-1字符,就不能无损走单字节副本,仍需保留正确的Unicode表示。

这类修复值得前端团队借鉴,因为它没有牺牲文字正确性,也没有粗暴更换整个高亮器,而是围绕真实热路径减少不必要的双字节处理。

04 / 本地复现说明了什么,又不能说明什么?

原始资料的本地复现实验,把同一段高亮内容分别放进纯Latin-1、包含中文、包含长破折号的Markdown中。后两者耗时明显增加,说明问题并非只绑定中文,任何让字符串进入双字节表示的字符都可能触发。

本地复现显示双字节字符串会显著拉长代码高亮耗时
本地复现显示双字节字符串会显著拉长代码高亮耗时。点击查看大图。

不过,本地微基准不等于每个用户都会感到同样幅度的卡顿。设备性能、回复长度、代码块数量、浏览器版本和其他页面任务都会影响最终体验。更准确的表述是:它找到了一个可稳定复现、在真实长回复中会放大的前端热点。

05 / 最明显的变化,是页面更早进入“可操作”状态

用户对速度的感知,并不只由网络返回首字节决定。脚本下载、React水合、历史消息恢复、编辑器初始化、代码高亮和主线程长任务,都会让页面看起来已经出现,却仍不能输入。

输入框从不可交互到可输入的等待时间明显缩短
输入框从不可交互到可输入的等待时间明显缩短。点击查看大图。

团队因此把“可输入时间”设为核心指标,而不只看页面是否绘制。新会话p75从3.1秒降至0.55秒,代表用户打开Claude后更快进入真正可工作的状态。对于每天反复新建会话的重度用户,这种提升比单次动画更流畅更有价值。

06 / AI主攻不等于AI自行上线:人类仍是变更负责人

Anthropic使用一款能力大致接近Claude Opus 5.5的内部研究模型推进优化,并通过Claude Tag测试版并行开出150多个线程,繁忙日处理200多项改动。AI负责定位热点、提出修复、补测试和准备变更,人类工程师负责设定目标、确认用户影响并批准面向用户的改动。

大量并行性能线程由工程师设定目标并审核结果
大量并行性能线程由工程师设定目标并审核结果。点击查看大图。

这套工作方式能扩展,是因为任务有明确的可验证终点:某项p75指标是否下降、视觉截图是否在容差内、主线程阻塞是否减少、灰度阶段是否出现异常。没有这些反馈,AI只会更快地产生难以审核的改动。

官方还提到,长回复流式渲染相关工作由约60个PR组成,主线程阻塞从约750毫秒降到约200毫秒,CPU消耗约降至原来的三分之一,并维持120fps。这个案例说明,大型性能优化通常不是一个“神奇补丁”,而是许多窄范围改动的累积。

07 / AI也会被10像素难住,直到浏览器差异被写进证据链

团队曾让模型把消息输入框改为静态组件,并用14种视口尺寸做像素级比对。大部分浏览器已经接近1像素误差,但Chrome仍出现约10像素位移。

Chrome预渲染与页脚状态差异曾造成约10像素的输入框位移
Chrome预渲染与页脚状态差异曾造成约10像素的输入框位移。点击查看大图。

最后发现,原因与Chrome预渲染以及页脚状态差异有关。这个细节很重要:AI不是靠“看起来差不多”完成任务,而是靠截图差异、浏览器状态和可复现条件逐步缩小问题范围。对影视后期工具、调色面板或复杂时间线界面来说,这种确定性视觉测试同样适用。

08 / 给前端团队和AI工程团队的五条启示

  1. 先定义用户旅程,再谈优化:把“页面快”拆成可输入、可滚动、会话载入和长回复流畅度。
  2. 优先看p75和真实遥测:平均值容易掩盖重度用户与慢设备的痛点。
  3. 让AI处理窄而可验的线程:一个指标、一个热路径、一组测试,比“全面优化前端”更容易得到可靠结果。
  4. 视觉与性能都要有确定性测试:截图容差、长任务、CPU时间和回归样例必须自动化。
  5. 保留人类审批与渐进发布:AI可以加速调查和编码,但用户影响、风险接受与上线节奏仍需要明确负责人。

我的观点:真正可复制的不是3000次改动,而是评测闭环

“两周合并3000多项改动”很容易成为传播标题,但如果只照搬速度,团队更可能得到审查积压和回归事故。真正值得复制的是:先用用户旅程定义指标,再让AI并行调查,把每条建议接入自动测试与遥测,最后由人类控制灰度和发布。

至于“中文让Claude变慢”,更应把它当作一次工程提醒:Unicode不是边缘情况。面向全球用户的编辑器、字幕工具、脚本软件和AI界面,都应把中文、Emoji、弯引号、破折号以及混合代码文本放进性能基准,而不是只测试英文ASCII。

官方资料与站内延伸

Anthropic工程博客: 查看Claude网页提速技术复盘

Claude站内导航:
https://www.zuoshipin.com/link/876.html

Anthropic站内导航:
https://www.zuoshipin.com/link/1191.html

Claude Opus 5.5站内文章:
https://www.zuoshipin.com/article/45454

Claude Opus 5.5站内导航:
https://www.zuoshipin.com/link/45453.html

更多AI资讯:
https://www.zuoshipin.com/archive/75

常见问题(FAQ)

Claude是否故意限制中文用户速度?
不是。公开技术复盘描述的是浏览器端字符串表示与代码高亮的性能问题。中文很容易触发UTF-16双字节路径,但弯引号、长破折号等非Latin-1字符同样可能触发。
为什么一个汉字会让代码高亮变慢?
V8可用单字节存储Latin-1字符串;出现超出该范围的字符后,整段Markdown可能转为UTF-16双字节表示,复杂高亮正则在该路径上耗时更长。
Anthropic的20行修复做了什么?
在代码块本身可完整表示为Latin-1时,先复制成单字节字符串再执行高亮;如果代码中确实含中文等字符,则保留正确的Unicode表示。
Claude网页这次到底快了多少?
官方称13项核心测量的几何平均速度提高3.1倍;新会话p75可输入时间从3.1秒降至0.55秒,Claude Code新会话从0.8秒降至0.3秒。
这3000多项改动都是AI自动上线的吗?
不是。AI负责并行调查、编码和测试,人类工程师设定目标、审核用户可见变化,并通过自动测试、真实遥测和渐进发布控制风险。
0 点赞
0 收藏
分享
0 讨论
反馈
热门资讯
相关素材

暂无数据