6月11日,火山引擎 Force 原动力大会在北京隆重召开。在会前一周,字节跳动的技术副总裁洪定坤决定,利用字节的 AI 编程工具 TRAE,花费三天时间,开发一个英语学习应用,并借此分享他对 AI 编程的见解。
目前,TRAE 的月活跃用户已超过 100 万。在字节跳动内部,超过 80% 的工程师都在使用 TRAE 这样的产品来辅助他们的开发工作。
以下是演讲的完整内容,经过适度编辑和整理,保持原意:
洪定坤在演讲现场
大家好,我是洪定坤,负责字节跳动的研发工作,同时也是一名研发工程师,近期我在 AI 编程领域进行了探索。这是我第一次与大家见面,想借此机会介绍我们在 AI 编程方面的产品 TRAE。
其实,我们在这个领域的探索已经持续了一段时间。自从 GPT-3.5 发布以来,我们就认为编程是一个非常合适的应用方向。我们为这个产品命名为“TRAE”,寓意是“The Real AI Engineer”。我们坚信,AI 大模型将会为编程带来实质性的变革。
不过,最初由于模型能力的限制,许多设想未能实现。然而,过去一年里,无论国内外,模型的基础能力发展迅速。比如,今天字节发布的豆包大模型 1.6,在编程能力方面也取得了显著进展。
随着模型能力的提升,AI 编程类产品,包括我们的 TRAE,终于迎来了落地的机会。今年年初,我们正式推出了 TRAE,目前许多工程师在实际工作中已经深入使用我们的产品。截至目前,TRAE 的月活跃用户数已突破 100 万。这一数据表明,AI 编程在程序员的工作中已发挥了重要作用。
因此,今天借着火山引擎的场合,我想与大家分享我们开展这一项目的初衷,以及对 AI 编程的一些思考。
为何要开展 AI 编程?
· 技术普及,AI 让每个人都能成为开发者
编程语言作为计算机历史上的一项伟大发明,凭借其简洁而优雅的语法和明确的语义规则,清晰地定义了指令,从而使计算机完成不同的任务。无论技术如何演变,我们始终相信,代码将是未来完成各类复杂任务的最重要工具。代码是数字世界的基础生产力工具。
AI 的出现前所未有地降低了掌握编程的门槛。
随着 AI 编码能力的不断增强,越来越多的人能够借助 AI 学会使用代码这一工具,而专业程序员也可以更专注于创造性的工作。这无疑将大幅提升开发效率和代码质量,同时也使得更多不同背景的人能够成为开发者,通过编写代码来完成更多复杂的任务,极大地提高生产效率。
我们有一位研发同事,正利用 TRAE 教他的 11 岁小朋友学习编程。小朋友最近完成了一个奥数竞赛题库网站:这是一个真实的网站,可以用来练习小学的奥数题。
我们可以看到,在人工智能的支持下,孩子们能够迅速完成学习上的开发任务,甚至创造出应用程序。相信通过AI编程,技术的普及将使更多人学会编写代码,最终实现“人人都是开发者”的梦想。这正是我们致力于AI编程的初衷。
· 提升研发效率
作为一家在科技领域占据重要地位的公司,研发效率一直是我们关注的重点。人工智能的引入,带来了许多机遇与提升。
开发工具的优化,对公司以及每位开发者而言,意义重大,能够显著提高工作效率。
在过去的一年里,我切实感受到这种变化的巨大。如今,在字节跳动内部,超过80%的工程师都在使用像TRAE这样的产品来辅助开发,AI生成的代码也占据了相当大的比例。
· 追求智能上限
在字节跳动,我们的大模型研究工作中,追求智能的极限是重要的任务之一。
编程作为一种高度结构化且逻辑严谨的活动,要求模型能够理解复杂的语义结构、进行逻辑推理、设计算法并精确表达,这些要求对推动模型智能的提升具有重要意义。
因此,我们希望通过帮助更多人掌握编程技能,完成复杂任务,同时提升专业开发者的工作效率,以推动模型智能的不断攀升,这也是我们专注于AI编程的原因。
我的AI编程实践:用自然语言编写代码
接下来,我想与大家分享我们的产品TRAE。
起初,我打算通过列出产品的核心功能来制作PPT进行介绍,但完成后感觉不够生动,缺乏具体细节。作为一名开发者,我决定将自己使用TRAE的实际过程分享给大家,这样会更真实、更有趣。
因此,在上周端午节假期后,我和两位同事共同开发了一个新的英语学习应用“积流成江”(体验地址:点击这里)。今天,我将以这个应用及其开发过程为例,向大家展示TRAE的一些核心功能。
在现场演示中,可以看到这是一个相对复杂且功能完善的英语学习应用。它包括与模型的对话、单词管理与复习、用户登录以及其他复杂的交互。
这并不是一个简单的演示版本,产品已于昨晚正式发布。经过团队讨论,我们认为不应仅仅做一个演示,而是直接发布,让大家可以真实体验。之后,我也会将整体代码上传至我们的Github,感兴趣的朋友可以下载并查看我与TRAE一起编写的代码。
过去,开发如此一个产品可能需要几周甚至一个月的时间,尤其是像我这样已经有段时间未在一线编码的开发者,这次开发过程也包含了许多“重新适应”的内容。
不过,这次我仅用三天时间便完成了开发。接下来,我将分享我的开发过程,展示我是如何利用TRAE提升开发效率的。
首先,TRAE的两个基本功能是“代码补全”和“局部代码生成”。
我们的AI在工程师编写代码时,会根据上下文自动推测和补全代码,从而提升编程效率。
然而,传统的代码补全和局部代码生成主要是在用户光标所在位置进行后续代码的推测。TRAE在此基础上更进一步,能够根据用户的编辑行为和上下文,精准预测接下来需要修改的部分,直接跳转到相应位置并持续进行代码补全与生成。
我们发现,这种方式显著提升了补全和生成的效率,并且更加实用。
代码补全是一项基础而重要的功能。我们最早开发的产品名为MarsCode,旨在通过插件形式帮助开发者提高在VS Code、Jetbrains等传统IDE中的工作效率。这也是目前被开发者广泛使用的AI能力之一。
至今仍有许多用户偏爱像MarsCode这样的插件,但作为一种轻量级的形式,插件难以支撑完整的基于AI编程的体验。随着模型能力的快速提升和开发者群体的不断扩大,越来越多的用户期望AI能够支持更为完整的开发流程,而不止于代码补全。
因此,我们开发了TRAE IDE,这是一款专为AI编程设计的原生开发环境。它不仅具备代码生成、项目导航和上下文感知等基本能力,还支持代码重构、批量修改、知识问答等复杂任务,这些功能占据了我开发中使用的80%的场景。
在TRAE的帮助下,我采用了一种全新的方式来编写代码,我称之为“用自然语言编程”。
这里的自然语言编程并不是简单的功能描述后让AI开发,而是我作为工程师仍然在进行传统的开发方式。我描述的内容除了功能外,更侧重于编码逻辑和技术方案本身,只不过这种逻辑是以自然语言而非代码的形式呈现。
例如,一个300行代码的功能,我可能只需用200字的方案进行描述。这就像我和另一位程序员讨论实现某个功能时,给出技术方案和核心流程的描述,然后由AI将这些方案转化为实际代码。
探索技术方案与代码之间的桥梁
在现代编程中,技术方案的表达不再局限于繁杂的代码行。举例来说,一个复杂的功能实现,可能仅需用简洁的语言简述,便能传达其核心意图。想象一下,当我与另一位开发者交流时,我们可能会讨论如何高效地实现一个功能。在这个过程中,我会用简明的方案和流程描述来概括其技术要点,而后由人工智能工具将这些描述转化为实际的代码。这种方式不仅提升了沟通效率,也使得技术实现变得更加直观可懂。
探索AI开发新境界:从编码到全面协作
经过统计,这次开发中,约有85%的代码是通过自然语言的交流方式,由AI生成的。在TRAE的支持下,我们仅用两天时间就完成了超过3000行代码的编写和调试。值得一提的是,这两天的时间并不完全用于开发,因为我们还参与了一些会议和其他事务,实际上并没有进行详细的时间记录。不过,从端午节后到周五期间,我基本上完成了核心功能的开发。
总的来看,这一过程与传统开发方式有着显著的差异。我录制了一个真实的开发过程视频,大家可以观看一下。
在TRAE的开发过程中,强大的模型能力也是我们顺利完成开发的重要因素。这次使用的doubao-dev模型,正是基于最新发布的豆包1.6模型。TRAE团队在豆包1.6的基础上,针对工程开发场景进行了进一步的训练。与当前的1.5版本相比,我认为提升幅度相当可观。我们计划在接下来的两天内将新模型推送给用户,期待能够进一步提高开发者的效率。
不止是AI编码,
更是AI开发
TRAE在整个编程工作中带来了显著的提升,但编码只是软件开发的一部分,并非最终目标。
对从事过软件开发的人来说,文档编写、运维、调试、发布以及压力测试等环节都是必不可少的。实际上,在典型的软件开发流程中,编码所占的比例通常不到40%,而随着应用的复杂性增加,代码工作的比重会更小。
坦白而言,除了我们三人组成的开发团队外,还有其他同事协助我们完成环境搭建、调试和运维等工作。尤其是在决定将产品直接发布后,我们又花了一个周末进行各种准备,直到昨天仍在进行压力测试。
在此次开发中,我们使用了meego来管理需求,利用飞书多维表格记录问题,上线内部运维平台,使用trace系统查找bug,以及进行代码的提交与合并等多种工具。在此过程中频繁的上下文切换,确实增加了复杂度和时间成本。
我深信在大模型时代,随着模型能力的不断增强,AI有潜力将这些工作整合起来,成为调度者,让软件开发成为一个“全能型”的过程,大幅降低开发门槛并提升效率。
这一前景充满了想象力,想起这些我都不禁感到兴奋。例如,在传统开发模式中,调试一个bug可能需要先查找错误日志,再进行定位,完成后还需用git拉取分支,编写代码并发布,整个过程可能耗费半天的时间。
未来,或许AI可以自动从日志中定位问题并进行分析,与我共同确认。当我认为没有问题时,可以指示AI进行修改,修改完成后再帮助我提交上线。
如果真是如此,那将是从软件开发向AI开发的重大转变。我们在此次开发中所花费的几天时间,或许会缩短至几个小时,甚至更短。这正是我们下一步努力的方向,我们希望TRAE不仅仅是AI编码,更是AI开发。
目前,TRAE也在进行类似的尝试,比如引入Agent能力,用户可以根据不同场景选择合适的Agent进行工作,并且支持用户自定义Agent。用户可以创建自定义工具,以便在工作中进行上下文切换。请大家看一下下面的演示:
TRAE自定义Agent演示案例
AI编码离不开人类的协作
不过,这个小演示依然是个初步的展示,整个过程比较理想化,所做的程序也相对简单,而目前可用的工具数量也较少。尽管如此,它展现了一个雏形,未来随着AI能力的提升,将能够处理更多复杂的应用。我们也会不断努力向前迈进。
我还认为,无论AI如何进步,真正的AI工程师依然需要与人类协作。单纯依靠AI进行开发,仅仅是提出需求并点击按钮,最终生成的程序往往难以维护,也无法充分发挥工程师的创造力与AI的结合。
在我这次的开发中,虽然是通过自然语言进行交流,但其实也是将技术方案与流程以自然语言的方式转化为代码。当然,我会与AI讨论,询问它觉得如何书写更合理或更好的建议。完成后,我会仔细审查代码,并随时接管进行人工修改。
例如,昨晚我们突然发现了一个bug,实际上调试对模型来说仍然是一项挑战,AI在寻找昨天的bug时也面临了一定困难。最终还是我与它一起完成了调试。因此,人类的作用至关重要。
目前,很多人在测试编码能力时,常常让模型制作一个贪吃蛇游戏或六边形小球游戏。然而,这种测试并不全面。真实的开发场景复杂多变,对模型的逻辑能力和幻觉控制都有极高的要求。同时,人类也需要仔细审查代码,确保生成的程序能够得到持续维护。
因此,即便有85%的代码是由AI编写的,整个过程依然是由我来主导。模型在不断进步,能够完成越来越多的任务,但编程始终离不开人类的参与。而AI只有做到“听懂并理解人类的想法”,同时能够很好地与人类合作,才能成为真正的AI工程师,实现AI开发。
TRAE也将持续朝这个方向努力,最后欢迎大家体验我们的产品TRAE,以及我新开发的英语学习应用“积流成江”。由于刚开发了几天,可能还会存在一些bug,期待大家提出宝贵建议,谢谢大家。
Please specify source if reproduced字节跳动副总裁洪定坤:TRAE 努力打造未来 AI 开发新标杆 | AI工具导航

