9月23日凌晨,Anthropic放出了一篇硬核工程复盘文章,曝光了一场为期两周的性能冲刺:他们让一个内部研究版Claude驻场优化,硬生生把claude.ai网页版和桌面端的整体速度拉高了3倍,而排查出的瓶颈一个比一个离谱。

“AI味”破折号,竟成卡顿元凶

这次性能优化的起点,是团队全站排查CPU卡顿时发现的诡异现象:部分带代码的回复刚输出完毕,页面启动语法高亮(给代码关键字、注释分色)时,整个网页会直接“冻死”近1秒,鼠标点不动、文字也敲不了。

顺着链路一路排查,团队找到的最终元凶让所有人都没想到——就是网友天天吐槽、写手为了降AI检测率必须手动删掉的破折号。

背后的原理和浏览器JavaScript核心V8引擎的字符串存储规则有关:

  • V8有两种字符串存储格式:单字节格式运算速度快,但仅支持英文字母、数字和少量西欧Latin-1字符;双字节格式支持所有字符,但处理速度明显更慢
  • 规则是“一颗老鼠屎坏一锅粥”:整段文本里只要混进一个单字节装不下的字符,整段文本都会自动按双字节存储

Claude生成内容时高频使用破折号,而破折号恰好不在Latin-1字符集中,只要回复里出现一个破折号,整篇内容都会被切到慢通道,后续代码高亮的正则运算全部要降速运行。

而修复方案简单到只用20行代码:在启动语法高亮前,先把每个代码块单独拷贝出来,强制转成单字节字符串再运算。改动落地后,页面首个代码块的高亮耗时直接从1.0秒降到0.35秒。

【编辑观察】吐槽了这么久的“AI标配破折号”,之前只觉得是文风辣眼睛,没想到还能实打实拖垮网页性能,也算“AI味”第一次有了可量化的实际危害。不止破折号,弯引号、特殊格式的撇号也会触发同样的问题。

中文用户全线中招:有汉字就减速

这次排查里最冤的当属中文用户:英文用户只有碰到破折号等特殊字符才会踩坑,而中文用户不需要任何特殊符号,只要回复里出现一个汉字,带代码的回复就会直接被限速。

为了验证结论,测试团队对照claude.ai的线上前端配置做了复现测试:

  • 纯英文回复时,首个代码块高亮仅需188毫秒
  • 英文回复加1个破折号/弯引号,耗时直接涨到456/458毫秒
  • 哪怕代码全是纯英文,只要回复是中文,耗时就高达462毫秒,比纯英文慢了约2.5倍

好在官方的20行修复方案解决了核心问题:只要代码本身是纯英文内容,哪怕正文回复带中文,高亮速度也能恢复正常。但如果代码注释里有中文,还是会触发双字节限速。

【编辑观察】以前只觉得不同语言的AI回复内容有差异,没想到浏览器底层规则直接给全体中文用户加了“集体减速Debuff”,这种无差别攻击真的防不胜防。

AI当主力:两周3000次改动,零事故提速3倍

破折号的问题只是这次性能冲刺的小插曲,整场优化的过程本身更有话题性:Anthropic直接让AI当了优化主力。

今年8月,团队专门开了名为#claude-apps-perf的Slack频道,拉了一个能力接近Opus 5.5的内部研究版Claude当“驻场工头”。Claude入场就定了13项提速目标,人类原本预估至少要干两周,结果第三天就完成了12项,“页面没加载完就能提前打字”的功能就是这时候落地的。

提前完成初版目标后,团队干脆放开权限让Claude自己找优化点,巅峰时期频道里同时跑着150多个优化线程,单线程就能提50到100个代码合并请求(PR),最肝的一天Claude自己就合入了200多个改动。

所有改动都遵循严格的验证规则:提速达标就锁死性能上限不允许退步,没达成就直接回滚重来。最终成绩相当夸张:

  • 网页从打开到可输入的时间从3.1秒缩短到0.55秒,提速5.6倍
  • 13项性能指标平均提速3.1倍
  • 前后落地3000多个底层改动,没有出现一次用户可感知的事故,零回滚

人类踩油门:保守AI?催到它敢干活

整场优化里人和AI的分工完全反转:脏活累活全是Claude干,但AI天生带着流程化的“死板”,发现问题先开工单、评估工期还会留足冗余,反而要人类在旁边催进度。

最经典的对话来自工程师Raymond:Claude原本说一个性能监控的改动这周内提交,算上合并、部署、攒基线数据要等好几天,Raymond直接在频道里怼回去:“你现在提,我现在就给你合。我们什么权限都有,拜托你勇敢一点!”一分钟后Claude就改口,承诺一小时内提交PR。

当然最终的审核刹车权始终握在人类手里:所有用户能感知到的改动,Claude都必须附上前后对比录屏,等人类拍板才能上线。

优化中还出现过一个精度拉满的10像素bug:团队要求提前输入框在14种屏幕尺寸下,静态版和真实React渲染版的误差不能超过1像素,内部上线4小时就被发现新标签页打开时输入框会往下抖一下。Claude排查后精准定位到Chrome的问题: Chrome预渲染时会带56像素的底部提示栏,页面跳转后提示栏消失,高度瞬间拉长,而输入框刚好放在页面18%高度的位置,0.18×56≈10像素的偏移量,和录屏里的实测结果分毫不差。

最后还有个有意思的小彩蛋:Anthropic官宣这次优化的推文本身就藏着双字节坑——为了防止claude.ai被自动识别成链接,推文里加了零宽空格,还用了弯撇号。要是没做这次优化,Claude回复里引用这条推文再带段代码,照样会触发限速。