分享嘉宾:江波 TRAE Cue 功能技术负责人
大家好,我是江波,在 TRAE 团队负责 Cue 功能的研发。很高兴今天有机会和大家深入分享我们在智能编码辅助方面的探索与实践。
首先,我想针对前面讨论中大家关心的几个问题做些补充。
关于任务执行的干预与控制
有同学提到任务执行过程中容易出错且难以干预,我们正在开发一个类似 Todo List 的功能,它会在执行前展示完整任务计划,并在关键节点设置还原点,方便大家实时编辑和调整,从而增强对整个工作流程的控制力。
关于模型重复与差异问题
另一个被多次提到的问题是模型容易陷入死循环或重复模式。这本质上是模型在推理环节需要优化的问题。目前从 Agent 架构层面我们可以进行一些强制干预,但根本解决还需要依靠模型训练阶段的改进,特别是在长任务、多轮推理方面的持续优化。
这也引申出为什么不同模型在 TRAE 中的表现差异较大。不同模型在训练过程中存在不同的价值权衡。例如,OpenAI 和 Gemini 的模型更倾向于调用命令行工具,这与他们强化学习仿真环境的设置有关。而 Claude 的环境则复杂得多,最近 Kimi K2 的技术报告也提到,他们的仿真环境更贴合真实软件开发流程。因此不同模型的行为模式存在天然差异。在 TRAE 中,我们对调用量大的主流模型做了针对性适配,但对于发布较快的新模型,适配和特性摸索需要一定时间,我们会根据大家的反馈尽快优化。
Cue 功能的核心价值
现在我来介绍一下我主要负责的 Cue 功能。Cue 的全称是 Context Understanding Engine,它是 TRAE 提供的智能编程工具集。早期它主要提供代码补全能力,但现在已远不止于此,涵盖了超级补全、已有代码编辑、编辑点位预测等一系列功能。
Cue 的核心价值主张体现在五个方面:提升开发效率,为可预测、重复性的代码提供实时推荐;保持用户控制权,确保代码逻辑和质量由开发者主导;减轻认知负担,处理低层次细节;实现仓库级上下文感知;保障代码一致性,适应团队编码模式和风格。
六大核心功能
目前 Cue 主要提供六大功能:光标后代码续写与补全、基于编辑历史的多点编辑、结合上下文的智能代码改写、编辑位置预测(支持单文件内跳转和仓库级跨文件跳转)、智能导入(Auto-Import)和智能重命名(Smart-Rename)。特别是在重构场景中,后两个功能可以自动检测未导入的包或需要重命名的地方,一键完成全仓库相关内容的修改,大幅减少低效的基建操作。
我们还发展了仓库级跨文件跳转能力。例如,修改一个类名时,Cue 可以预测并跳转到所有相关文件的需要修改的位置,省去开发者手动查找的成本,保持编码心流。
三大技术挑战与突破
在 Cue 的研发过程中,我们主要面临三大核心挑战。
用户意图理解
开发者的编辑行为是非线性的,包括复制粘贴、跨文件跳转、编写后删除等,形成混乱的修改轨迹,这给推断真实意图带来很大困难。编辑历史的粒度把控不当可能导致意图偏移或幻觉,即模型推荐与用户最近编辑不相关的内容。
修改位置识别
我们需要设计一个可扩展的定位机制(Locator),能高效处理大型代码库,在极短时间内高准确率地召回所有需要修改的位置,既要避免遗漏,也不要用不必要的建议淹没用户。
高效编辑执行
现有模型擅长逐 Token 生成(续写),但对多行编辑和 Diff 格式处理能力较弱。我们需要设计专门的 Diff 建模方式,以最小化生成延迟,并确保推荐内容符合项目规范、正确使用自定义 API,这需要模型深入理解整个代码库上下文。
针对这些挑战,我们采取了多项措施:通过分析 Git Commit 信息仿真用户真实编码轨迹来改进意图理解;设计专门的 Locator 模型进行高速高准召的位置召回;创新 Diff 建模方式,将延迟优化到几百毫秒;结合 IDE 的 LSP 获取 Symbol 信息,辅助检索最相关的代码内容,减少推荐不存在的 API 等幻觉问题。
近期重大更新与优化
近期,Cue 迎来了一次重大更新。
性能大幅提升
最显著的提升是将端到端延迟从 1 秒优化到了 500 毫秒以内。这得益于高性能的融合模型架构(采用 MoE 等技术)、高效的工程实现、前后处理优化,以及移除了无效的解码 Token。
融合模型架构
我们上线了全新的融合模型,将代码续写和已有代码编辑这两个原本独立的任务融合到单一模型中。这与很多竞品仍采用双模型的方案不同,能提供更统一的体验。我们使用了更贴合真实开发场景的 SFT 数据,并优化了连续编辑场景下的推荐质量,在频繁推荐造成干扰和过于保守错失机会之间找到了更好的平衡。
智能上下文增强
智能上下文管理也得到了增强。我们保持了用户编辑历史和浏览历史的时序信息,更准确地理解开发者意图;引入 LSP 提供的 Symbol 信息,增强对代码结构和依赖的理解,避免幻觉;围绕编辑历史点圈选更完整的代码片段,解决语义碎片化问题。
功能持续完善
Auto-Import 和 Smart-Rename 功能已支持 Python/TypeScript/Golang 等语言,能自动处理 import 语句和跨文件的智能重命名,显著提升重构效率,让开发者保持心流状态。
未来发展规划
回顾 Cue 的发展,它始于早期的代码补全,对标 GitHub Copilot。在 2024 年 9 月上线了多点编辑能力,支持单文件内跳转。今年 6 月,我们将续写和编辑模型融合,实现了基于大范围重写的编辑点位预测。接下来,我们将引入独立的 Locator 模块,以实现更强大的仓库级跨文件编辑位置预测。
Cue 作为 TRAE 的核心功能,其价值已在内部和外部用户中得到验证,通过低延迟响应和精准推荐显著提升了专业开发者的效率。即使在 AI 生成整块代码越来越流行的今天,Cue 仍专注于在开发者编写过程中提供协同辅助,为那 5% 需要人类深度参与的高杠杆代码提供价值。
未来,我们将持续投入 Cue 的体验优化,降低延迟,提高准确性。计划引入基于模型的跳转方案,减少对特定 LSP 的依赖,提高智能跳转的稳定性。我们也会针对重点语言和场景进行定向优化,增强 Cue 的表现。
总之,当你在编码中遇到那些明确、低层级的场景,不希望中断心流去手动处理时,Cue 一下!它的方向是让大家用得越多,推荐越准,编码越快。
最后,欢迎大家在实际开发中多多体验 TRAE 的 Cue 功能。谢谢大家!