题图|字节跳动技术副总裁洪定坤在演讲现场
虎嗅注:
昨天的火山引擎 Force 原动力大会主论坛,是字节跳动技术副总裁洪定坤的首次公开露面,三十多分钟的演讲,主题全部围绕“AI Coding”和字节跳动自研AI IDE “TRAE”。
AI Coding,一直以来是大模型落地最具潜力的方向之一。伴随着底层模型编程能力的突飞猛进,AI Coding 已经开始在程序员的日常开发工作中产生了深刻影响。包括在字节跳动公司内部,超过 80% 的工程师都在使用 TRAE 这样的 AI Coding 产品辅助开发。值得一提的是,作为首个中文 AI IDE,TRAE 目前的月活用户数量已经超过了 100 万。
在演讲中,洪定坤还分享了自己用TRAE做AI Coding的一些实践,比如在三天时间里,如何“见缝插针”地开发一个英语学习应用。
对于洪定坤和TRAE幕后团队的所有人来说,他们希望软件开发能够 all in one,让 AI 成为调度者,更大幅度地降低开发的门槛,提升开发效率。AI Coding是可预见的未来,但“AI Development”是更高级的目标。
以下是演讲全文,在不改变原意的基础上,进行了整理。
大家好,我是洪定坤,字节跳动研发的负责人,也是一个研发工程师,最近在做 AI Coding 方面的探索。这是第一次跟大家见面,主要是想跟大家介绍一下我们在 AI Coding 方向的产品 TRAE。
其实做这方向的探索有一段时间了。GPT-3.5 出来的时候,我们就觉得编程可能是一个很好的应用方向。包括我们给这个产品起的名字“TRAE”,意思是“The Real AI Engineer”。我们觉得,AI 大模型确实会给 Coding 带来真正的变革。
不过最开始,因为模型能力的原因,很多想法还实现不了。但过去一年,国内外大模型的基础能力进步很快。包括今天字节发布的豆包大模型 1.6,在编程能力上也有很大的进步。
模型能力的进步,让 AI Coding 类产品,包括我们的 TRAE,真正开始有了落地的机会。我们也在今年年初发布了 TRAE。现在,不少工程师已经在工作中开始深度使用我们的产品。截至目前,TRAE 的月活用户已经超过了 100 万。这个数字也说明,AI Coding 已经在程序员的工作中切切实实地起到了重要的作用。
所以,今天借着火山引擎这个场合,和大家分享一下,我们为什么要做这个事情,以及对 AI Coding 的一些思考。
为什么要做 AI Coding?
技术普惠,AI 让人人都是开发者
作为计算机历史中的伟大发明,编程语言用简洁、优雅的语法和语义规则,定义清晰明确的指令,让计算机完成各种任务。而且,不管技术如何发展,我们都相信,代码仍然是未来最重要,或者说唯一的,能够让计算机完成各类复杂任务的工具和手段。代码是数字世界的基础生产力工具。
AI 的出现,则前所未有地降低了大众掌握代码能力的门槛。
随着 AI 代码能力的不断提升,今天,更多人可以通过 AI 掌握代码这个工具,专业的程序员也能更专注于工作中具有创造性的部分。这显然会极大地提高开发效率和代码质量,也使得更多不同背景的人成为开发者,通过代码来完成更多复杂的任务,极大地提高生产力。
我们的一位研发同事,就在用 TRAE 教他们家 11 岁的小朋友学习编程。这是小朋友最近完成的一个奥数竞赛题库网站:一个真实的网站,可以用来练习小学的奥数题。
奥数竞赛题库网站截图
可以看到,一个小朋友,在 AI 的帮助下,也能很快地为自己的学习完成一次开发、生成一个应用。我也相信,做好 AI Coding,能够实现技术普惠,让更多人掌握代码这一强大的生产力,未来真正有机会实现“人人都是开发者”。这也是我们希望做 AI Coding 的第一个原因。
提升研发效率
然后,作为一家技术比重及规模都很大的科技公司,研发效率一直是我们非常重视和关注的话题,在这方面,AI 带来了非常多的机会和提升。
认真做好开发工具,对公司和开发者个人,都有很大的意义,能够大幅度地提升工作效率。
实际工作中,过去一年我确实也看到了很大的变化。今天,在字节跳动内部,我们有超过 80% 的工程师,在使用 TRAE 这样的产品辅助开发。我们也有相当比例的代码是通过 AI 生成的。
追求智能上限
最后,字节做大模型工作,我们最重要的任务之一是追求智能上限。
Coding 作为一种高度结构化、逻辑严密的任务,对模型理解复杂的语义结构、逻辑推理、算法设计和精确表达都有很高的要求,能很好地助力模型智能上限的探索。
因此,帮助更多人掌握代码做更多复杂的任务、提升专业工程师工作效率和助力模型追求更好的智能上限,是我们决定认真做 AI Coding 这个事情的原因。
我的 AI Coding 实践:用自然语言写代码
接下来,我想和大家具体分享一下,我们的产品 TRAE。
最开始,这部分内容我是列出了一些产品核心能力,打算做成 PPT 来介绍。但写完后总感觉不是特别理想,不够生动、具体。我自己平时也会使用 TRAE 工作,做一些开发。我在想,也许作为一个开发者和用户,把自己使用 TRAE 的过程分享出来,会更生动、真实。
所以,上周端午节假期之后,我和两个同事一起开发了一个新的学习英语的应用“积流成江”(体验地址:https://sstr.trae.com.cn)。
今天,我想就着这个应用和开发过程,把 TRAE 的一些核心功能更好地呈现给大家。
您目前设备暂不支持播放
英语学习应用现场演示
可以看到,这是一个相对复杂且完成度已经比较高的英语学习应用。产品里包含和模型对话、单词管理&复习、用户登录以及其他一些复杂的交互。
而且这并不是一个 demo,产品在昨天晚上已经发布了。因为我和团队讨论了一下,觉得不能做一个 demo,应该直接发布,这样,大家如果有兴趣也可以直接体验一下。后面,我也会把整个代码放到我们的 Github,大家有兴趣可以下载,看看 TRAE 和我一起写的代码是什么样子。
过去开发这样一个产品,可能需要几周甚至一个月的时间。尤其是像我这样,有段时间没有在一线写代码了,在这次开发其实还有很多“重新捡起来”的过程。
不过这次,我在 3 天时间里就陆续完成了开发。接下来,我就把开发过程中的实践和大家分享一下,看看我是怎么通过 TRAE 来提升开发效率的。
首先,TRAE 的两个最基础的功能是“代码补全”和“局部代码生成”。
我们的 AI,会在工程师编写代码的过程中,根据上下文自动推测和补全代码,提高编程效率。
不过,典型的代码补全和局部代码生成,主要就是在当前用户光标所在位置,推测后面的代码。TRAE 在这个基础上更进一步。TRAE 能根据用户的编辑行为以及上下文,精准预测接下来要修改的地方,直接跳转对应位置,并持续进行代码补全和生成。
我们发现,用这样的方式,补全和生成的效率都会得到较为大幅的提升,并且更实用。
代码补全是很基础也很重要的能力。我们最早做的产品就是编程插件,叫 MarsCode。MarsCode 用插件的形式,帮助开发者在使用VS Code、jetbrains 等传统 IDE 中提效。这也是目前被开发者最广泛使用的 AI 能力。
直到今天,也还是有很多用户喜欢豆包 MarsCode 插件这类产品。但作为一个轻量级的形态,插件很难承载更完整的真正基于 AI Coding 的体验。尤其是随着模型能力快速提升,以及开发者群体的快速扩大,越来越多的用户、开发者,都期待 AI 能够承载更完整的开发流程,而不仅仅是补全代码。
所以,为了把 AI 能力与 IDE 更深入、自然的结合,我们研发了 TRAE IDE。TRAE IDE 是一个为 AI 编程量身打造的原生开发环境,不仅具备代码生成、项目导航、上下文感知等基本能力,也支持代码重构、批量修改、知识问答等复杂任务。这些能力,可以说占到了我的开发中用到的 80% 的场景。
那这次,在 TRAE 的帮助下,我使用了一种完全不同的方式来写代码。我自己把它称作用自然语言来编程。
这里的自然语言编程,并不是一般意义上理解的,产品经理把功能描述一下,然后让 AI 来开发。我的开发过程,仍然是典型意义上的工程师开发。我描述的,除去功能,更多是编码逻辑和技术方案本身。只是,这种逻辑是用自然语言,而非代码的方式呈现。
一个 300 行代码的功能,我可能只需要 200 字的方案描述。这有点像我给另外一个程序员说,咱们实现这样一个功能,技术方案是这样的,核心流程要这样这样。然后,AI 把这些方案变成真正的代码。
我统计了一下,这次开发,大概 85% 的代码是通过这种自然语言对话的方式让 AI 生产。得益于 TRAE 的帮助,我们最终用 2 天时间完成了超过 3000 行代码的开发和调试。而且两天里还有一些事情和会议,也不是很完整的时间,我也没有特别仔细地统计。但差不多就是从端午之后,大概到周五,我就基本把核心功能开发完了。
所以,整个过程,和传统的开发比起来,是非常非常不一样的,我正好录了一个真实的开发过程的视频,大家可以看一下。
您目前设备暂不支持播放
TRAE 开发过程演示过程
模型强大的代码能力,也是这次顺利开发的重要原因。我们这次在 TRAE 用的 doubao-dev 模型,就是基于今天发布的豆包 1.6 模型。TRAE 团队在豆包 1.6 基础上,也针对工程开发场景做了进一步的训练。对比现当前的 1.5 来说,我觉得还是有一个比较大的提升的。这两天我们就会把这个新模型推送给用户,相信可以使开发者的效率进一步提升。
不只是 AI Coding,更是 AI Development
TRAE 对整个编程的工作有很大的提升,但 Coding 只是软件开发的一个环节,并不是最终的目标。
做过软件开发的人应该都知道,你要写文档、做运维、做调试、发布,还要 Debug,最后你还要做压力测试,很多事情。一个典型的软件开发过程中,写代码可能大概占不到 40% 的工作,并且,越复杂的应用,代码工作的占比越少。
坦白说,这次除了我们 3 个人开发团队外,还有另外的同事,花了一些时间协助我们完成环境搭建、调试、运维等工作。特别是决定这个产品要直接放出来之后,我们又花了一个周末的时间在做各种工作,其实到昨天还在做一些压测。
这次开发,我们用到了 meego 管理需求,飞书多维表格记录问题、内部运维平台上线、trace 系统查 bug,还有代码提交和合并工具等等等等。其实在过程中来回切换上下文,都是非常复杂,也非常耗时间的。
我自己是非常相信在大模型这个时代,随着模型能力的进步, AI 是有机会把这些工作统筹起来的。AI 成为调度者,让软件开发 all in one,更大幅度地降低开发的门槛,提升开发效率。
这其实是一个蛮大的想象空间,我有时候想起来也会觉得很兴奋。举个例子。传统模式下,我调一个 bug,可能先要去找错误日志,然后可能要定位,定位完之后我可能要用 git 拉一个分支。我还要写代码,写完之后我还要部署发布,还要调试,没问题之后我再去上线,这个过程,可能调一个 bug,半天过去了。
未来有没有可能就是 AI 来做这个事情?它来帮我自动从日志里面定位,然后分析可能什么问题,和我一起确认。我觉得没问题的时候,我说你改吧,改完之后他帮我提交上线。
是这样一个未来的话,其实就是从软件开发(software development),到 AI 开发(AI Development)了。我们这次额外的好几天的这些工作,也许会降低成几个小时甚至更短的时间。那这些都是我们想下一步努力的方向,我们希望,TRAE 不只是 AI Coding,更是 AI Development。
现在,TRAE 也在做一些类似的尝试,比如引入了 Agent 能力,用户可以依据场景选择不同的 Agent 进行工作,并且允许用户自定义 Agent。用户可以自定义工具,然后来去做这种上下文切换,把工作串起来。大家可以看一下下面的 demo:
您目前设备暂不支持播放
TRAE 自定义 Agent 演示案例
AI Coding 离不开人的协作
当然,这个小的 demo 本身还是个演示,整个过程比较理想化,做的程序也比较简单,现在能使用的工具也还比较少。但它是一个雏形,未来,我相信随着 AI 能力的进步,它可以完成更多、复杂的应用。我们也会努力地往前去走。
另外,我也认为,不管 AI 如何进步,真正的 Real AI Engineer 也离不开人的协作。纯粹用 AI 做开发,自己只是提要求,点点按钮,做出来的程序是很难维护的,而且也没有把工程师很多的创造性和 AI 结合起来。
包括我这次的开发,虽然是自然语言,但也是代码逻辑的自然语言,是我提技术方案和流程,AI 写成代码。当然有一些我会和它探讨,我说你觉得怎么这样写更合适、更好,它也会给我一些建议。之后,我还会比较仔细的 review 代码。我可以随时接管,直接人工修改。
比如昨天晚上,我们突然发现了一个 bug,其实 debug 对模型还是一个挑战,昨天的 bug,AI 找起来也有点难度。最后还是我和它一起完成的。所以人是非常重要的。
现在很多人测 Coding 能力,经常让模型做一个贪吃蛇,或者做一个六边形小球游戏。但其实这种测试不全面。因为真实的开发场景是很复杂的,对模型和产品的逻辑能力,和幻觉控制都有很高的要求。而且人也需要仔细的 review 代码,这样做出来的程序才是可以持续维护的。
所以,哪怕85%的代码都是 AI 写的,但仍然是我在驱动整个过程。模型在不断进步,能做越来越多的事情,但编程仍然是离不开人的。而 AI 也只有做到“听得懂也理解人的想法”,也得“懂上下文”,并且能够很好的和人合作,才可能是真正的 Real AI Engineer,做到 AI Development。
TRAE 也会一直向这个方向努力,最后也欢迎大家体验我们的产品 TRAE,还有我新开发的英语学习应用“积流成江”,因为才开发了几天,可能还会有一些 bug,也欢迎大家多给我提建议,谢谢大家。
相关推荐
为何字节大力投入AI Coding?
百亿投入、万人团队,字节教育能否“大力出奇迹”?
字节TikTok算法负责人陈志杰或于近期离职,已开启AI Coding方向创业
AI Coding能撑起一个多大的叙事?
字节教育「大力」狂奔:团队已超万人,或独立融资上市
字节的教育,这次不能再“大力”了
“Vibe Coding”兴起,代码界的“瘟疫”?
字节跳动发布独立业务品牌「大力教育」,陈林出任CEO
“不倦课堂”与教师培训背后,字节教育真能“大力出奇迹”?
字节大力教育再次大裁员,将彻底放弃中小学业务
网址: 为何字节大力投入AI Coding? http://m.xishuta.com/newsview137355.html