本文作者:江波,TRAE 技术专家
TRAE cue 迎来月度最大更新,模型能力以及时延大幅优化:
-
更强大的 TRAE cue 模型以及 Context Engineering,更准确的开发意图推断以及代码编辑;
-
端到端时延 P50 从 1s 优化至 700ms 以内,大幅降低 300ms;
引言
自 6月12日 TRAE cue 上线以来,我们收获了大量真实用户的好评反馈,比如说更智能的代码块编辑、光标跳转,相比于基础补全而言,功能更丰富,体感更加智能。同时我们也收到很多改进建议,比如:
-
时延高
-
上下文感知能力有限
-
缺少 Auto-Import 以及跨文件跳转
近一个月我们保持 Tab-cue 功能的持续迭代,从延时、模型推荐质量等维度带来了较大的升级更新,为用户提供更极致的 Tab 体验。这次更新主要有以下几点:
-
更好更快的 cue-fusion 模型
-
更准确的 Context,新增 Symbol、保持时序的用户编辑以及浏览内容
-
端到端时延降低 300ms
-
支持 Python/TypeScript/Golang 语言的 Auto-Import、跨文件的智能改写跳转
主要更新
全新的 cue-fusion 模型
Tab-cue 是典型延时受限的场景,要求极低的时延返回给到用户推荐的内容。这就要求模型必须基于有限的上下文完成用户开发意图的推断并给出目标代码片段的改动。通过分析线上用户的真实开发场景,我们设计了全新的模型优化方案,并采用了推理更加高效的模型结构。
-
更贴合用户开发场景的 SFT 数据,比如说连续编辑的场景,往往前后逻辑强相关,在数据清洗环节我们针对性筛选强逻辑相关的数据,进而提升模型在推荐灵敏度以及推荐内容质量的表现;
-
MHA 替换成 GQA,通过实验发现 GQA 的网络结构可以有效的降低推理成本,同时保证相同的模型效果。
大幅降低端到端时延 300ms
之前写过一篇博客讨论过时延对于 Tab-cue 功能体验的重要性,端到端超过 1s 的时延将使得推荐的内容来不及展示就被取消掉,进而降低用户对于 Tab-cue 功能的感知度与信任度。在 6.12 cue 上线以来,受限于 GPU 资源的紧缺以及不成熟的工程链路、部署基建,P50 时延差不多 1s,这也是用户反馈延时较高的主要原因。通过设计更高效的推理部署方案、更严格的前后处理耗时控制,成功将端到端时延做到 700ms 以内。以下是时延大幅降低的几点主要动作:
-
高性能模型结构以及部署架构, GQA 的模型结构相比于同等参数量的 MHA,在同等窗口大小以及输出长度下,延时降低 100ms 到 120ms;通过更智能的模型服务调度算法,实现多集群负载的均衡;
-
高效的前后处理, 对 Context 采集、Prompt 拼接设计更高性能的算法,结合客户端渲染性能的优化,累计降低 80ms~100ms;
-
移除无效解码 token, cue-Fusion 模型由于融合代码续写以及代码块编辑能力,在输出 token 中包含一部分无需修改的代码行,通过引入自适应策略,更精准的待编辑代码块圈选,移除无效的解码 token,累计降低 80ms 左右。
端到端时延的优化不仅仅在于模型推理,往往在链路的其他部分也隐藏了魔鬼,更细粒度的链路埋点能够帮助我们高效的分析性能瓶颈。
更准确的 Context
Tab-cue 通过定义基于用户编辑历史推断当前代码片段编辑的建模方式,实现了代码续写以及代码片段改写两个主要的编码场景。在真实开发场景中,开发者接下来的编辑意图与近 5min 的行为强相关。在此之前,Context 主要以用户的编辑历史以及光标周边的上下文为主,存在两个主要问题:
-
编辑历史信息碎片化,围绕用户历史编辑点位为锚点圈选完整代码片段确保语义的完整;
-
缺少用户浏览历史以及语言服务器(LSP)的信息的引入;
以上两个问题会导致用户编辑意图推断难度增加,容易出现幻觉,比如推荐不存在的方法、API 等。通过保持用户编辑历史、浏览历史的时序信息,并引入 LSP 提供的 Symbol 信息,可以显著降低推荐幻觉并提高推荐内容质量。
Auto-Import 以及 Smart-Rename
实际补全或者编辑过程中,在需要引入额外的 API 或者库时,传统开发模式中用户为了避免打断编辑“心流”,会优先完成代码的编写,然后再根据 Linter Error 提示,完成依赖包的导入。Tab-cue 这一次更新在 Python、TypeScript 以及 Golang 语言优先支持 AutoImport 功能,在推荐内容中依赖新导入的包时,会自动推荐 Import 并完成导入,消除对应的 Linter Error。
除此之外,与 LSP 的深度结合,Tab-cue 支持了在代码重构场景经常涉及到的实体重命名能力,比如变量名、函数名或者类名,Tab-cue 能够自动识别待修改的位置并推荐修改内容,包括跨文件的跳转,大大提升用户在重复编辑场景的编码效率。
由于 AutoImport 以及实体重命名的智能改写、跳转功能依赖用户安装对应语言的标准 LSP,一旦 LSP 缺失或者进程异常,将导致这两个功能的不可用。未来 Tab-cue 将引入基于模型的跳转方案,提高大范围跳转预测的稳定性和智能感。
结语
cue 功能前身是代码补全 Tab,为用户推荐光标后内容的续写,一度为司内以及 TRAE 用户带来较大的研发效能提升,司内采纳率达到 30%+。随着基础模型能力的增强,Vibe Coding 的开发模式使得 95%以上的代码均有 Code Agent 生成,但真正带来高杠杆收益的 5%依然依赖人类程序员的投入。TRAE cue 功能作为 TRAE 产品核心功能之一,TRAE 团队将保持投入持续优化 cue 的产品体验以及更多功能的支持,实现对于专业开发者编码环节的效率提升。