題圖|字節跳動技術副總裁洪定坤在演講現場
虎嗅注: 昨天的火山引擎 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,也歡迎大家多給我提建議,謝謝大家。
本內容為作者獨立觀點,不代表虎嗅立場。未經允許不得轉載,授權事宜請聯系 hezuo@huxiu.com
本文來自虎嗅,原文鏈接:https://www.huxiu.com/article/4458182.html?f=wyxwapp
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.