App下載

AI Coding 深度解析:探索編程新范式與未來趨勢

來源: 豆包MarsCode 2025-01-18 14:13:02 瀏覽數(shù) (91)
反饋

“ AI Coding 是一個快速演進的領域,我們需要了解它當前的局限性,為未來的各種可能性做好準備,可能一個任務今天無法完成但是在明天模型升級后就可以實現(xiàn)了。唯一的應對辦法是刻意練習,刻意地用 LLM 完成一些日常的任務,感知模型能力的邊界和變化,并且嘗試用工程的手段去彌補模型的不足以投入使用”。

AI Coding 的發(fā)展與影響

?? 大語言模型的演進趨勢

AI Coding 的核心發(fā)展趨勢體現(xiàn)在 AI 自主性的飛速提升。從最初以代碼補全、代碼問答為主的 Copilot 形式(e.g GitHub Copilot)到目前以獨立完成任務的 Agent 形式(e.g Devin)演進。

代碼大模型的演進速度非常快,相較于去年同一時間的產(chǎn)品,如今的模型能力超乎預期。前沿模型在代碼生成任務上提升顯著,其成本和速度在持續(xù)優(yōu)化,尤其是從 0 到 1 生成小型項目上的表現(xiàn)。總之,前沿模型在變得更強更小,這意味著更好的體驗和更低的成本。

大語言模型的演進趨勢

此外,大家普遍認為 2025 年是屬于 Agent 應用的一年,大模型在這方面的能力達到了實現(xiàn)成熟應用的拐點并且其能力會持續(xù)加強,主要可以體現(xiàn)在以下四個方面:

?? 規(guī)劃(Planning):制定計劃、將計劃拆分成子任務、為子任務設定目標、基于反饋對計劃進行調整。

?? 記憶(Memory):記錄在 Agent 執(zhí)行過程中產(chǎn)生的歷史思考、行動和環(huán)境觀測。

?? 感知(Perception):接收來自環(huán)境的信息,可以是文本或多模態(tài)的形式。

?? 行動(Action):基于計劃和 LLM 的決策,和環(huán)境進行交互并對環(huán)境造成狀態(tài)的改變。對于行動而言一個重要的機制就是控制和使用外部工具

Agent 應用排行榜

?? AI Coding 帶來的改變與影響

每一個技術革新的過程都會經(jīng)歷若干個階段,我們現(xiàn)在正在跨越從早期市場到主流市場這個鴻溝。對于早期的采用者來說,他們看到了這項技術的巨大潛力并且為之興奮,盡管不成熟或者有時候效果不佳,但是 AI Coding 的使用體驗非常神奇。這個工具能猜到你的意圖并給出對應的代碼,并且在持續(xù)快速地提升,越來越穩(wěn)定,完成更難的任務。

正因為 AI Coding 是一個快速演進的領域,我們需要了解它當前的局限性,為未來的各種可能性做好準備,可能一個任務今天無法完成但是在明天模型升級后就可以實現(xiàn)了。唯一的應對辦法是刻意練習,刻意地用 LLM 完成一些日常的任務,感知模型能力的邊界和變化,并且嘗試用工程的手段去彌補模型能的不足以投入使用(比如用 RAG 去除幻覺)。一方面你會深化認知和技巧,另一方面一旦達到零界點你將是第一批的受益者。

AI Coding 帶來的改變與影響

?? 豆包MarsCode 與 AI Coding

豆包MarsCode 的判斷與思考

AI Coding 目前還處在早期的階段(盡管相對其它的應用場景要成熟很多,并且已經(jīng)在企業(yè)中大范圍應用),但是它的發(fā)展速度非??欤ㄟ^去兩年 LLM 性能快速地提升),功能形態(tài)、交互方式、應用場景都在隨之持續(xù)變化,總體向著更加自主、進一步解放生產(chǎn)力的方向發(fā)展。

在字節(jié)內部,豆包MarsCode 已經(jīng)覆蓋了 70% 以上的開發(fā)者,從編碼階段就開始為開發(fā)者貢獻代碼和技術解決方案。在代碼提交后,AI 也會參與代碼評審,自動生成測試用例提升覆蓋率,上線后也用于輔助線上問題的定位和解決等等。

新功能 Apply 的誕生與亮相

我們可以從一個公式去理解豆包MarsCode 在進行 Apply 產(chǎn)品功能設計時的思考:

p?(t + a)

其中 p 是 LLM 失敗的概率, t 是從用戶請求到響應的時間, a 是在失敗情況下造成的任何額外損失,這個公式得到的結果就是用戶在使用過程中感受到風險的大小。當用戶意識到某個功能存在風險(高延遲,低成功概率)時,他們會停止使用并且很難恢復信任,這種情況在 LLM 應用上更為明顯。

代碼問答側邊欄是一個風險非常低的功能。因為有流式傳輸,你可以立即開始閱讀,t 是很小的,但是 p 通常相對較高。在生成代碼時,即使 LLM 不完美,你也有一段新的代碼可以參考、構建和重新提示以改進方案,它不會馬上修改源代碼,因此 a 也是非常小的。于是,當代碼修改方案已經(jīng)被確認后,如何快速且準確的將這些修改更新到代碼中就非常重要。Apply 解決了這關鍵的最后一步,無需手動復制粘貼或者手動修改,直接通過智能分析實現(xiàn)在對應的位置修改代碼,讓整個代碼問答工作流變得更流暢。Apply 功能大大降低了代碼變更的成本。

高效利用 AI Coding 的方法與實踐

?? 優(yōu)化 AI 生成代碼的質量、可靠性和安全性

?? 高質量上下文:模糊不清的上下文容易導致大模型出現(xiàn)幻覺。完成一個任務時對人重要的信息大概率對 AI 也非常重要,你可以通過主動顯式地引入這些信息來幫助 AI。比如代碼補全打開相關的文件,問答的時候用 #Code/#File/#Folder 引入明確的代碼片段來實現(xiàn)。

?? 生成測試用例:讓 AI 在完成一段功能后添加對應的測試用例,可以提升任務的穩(wěn)定性,也可以避免后續(xù)的任務破壞已有的功能。

?? 項目實踐沉淀:每個項目都會有自己的編碼規(guī)范和最佳實踐,這些知識都值得沉淀。當前 LLM 的指令跟隨和上下文感知能力都非常強,加入這些規(guī)則和知識庫會對任務的完成效果和穩(wěn)定性有非常大的幫助。

?? 實現(xiàn) AI Coding 在大型項目的可行性探索

我們在大型工程中也要解決可行性的問題,在 LLM 時代之前我們會怎么做?我們會通過做抽象、做架構隔離、做分工、記錄文檔等等方式來解決。一個大工程如果在這些方面做的很好,那么對實踐 AI Coding 也大有幫助。

哪怕一個項目有幾十甚至幾百萬行代碼,但是解決一個具體問題時人們和 AI 所需要的上下文都是相對有限的。目前的 AI Coding 工具背后都會有一個代碼知識圖譜系統(tǒng)支持,用于召回與當前任務相關的上下文。隨著 Agent 的出現(xiàn),AI 會自己分析任務并調用 IDE 中的工具探索、獲取上下文,做到更加的精確。

未來已來:開發(fā)者的機遇與建議

?? 機遇

?? 降低開發(fā)門檻

軟件開發(fā)不再是技術門檻高的專屬領域,只要具備洞察力,個體即可利用 AI 構建工具,滿足長尾需求。AI Coding 讓更多人有機會參與到解決實際問題的創(chuàng)新之中,釋放了開發(fā)潛力。

?? 提升個體生產(chǎn)力

以CPU做類比,Copilot 相當于提升單核處理效率,而 Agent 則讓開發(fā)者擁有多核并行能力。未來可能會有很多小型但是極具戰(zhàn)斗力的團隊或者創(chuàng)業(yè)公司。

?? 建議

?? 學習能力

對于學生或者職場新人,成長是最重要的事情,在學校除了打好基礎,培養(yǎng)有效學習的能力也非常重要。

?? 好奇心

好奇心是一個優(yōu)秀程序員的的重要特征,它能驅動你對一個問題的持續(xù)深耕,也能驅動你去探索前沿的技術。

?? 駕馭 AI 的能力

除了好奇心,還要有滿足好奇心的能力。大模型的出現(xiàn)極大降低了這一能力的門檻,成長的效率會大幅提升。駕馭好這個工具也會成為日后在職場中的一個競爭優(yōu)勢。

啟智增效:高校學生如何用 AI 助力學習

?? 學習和鞏固計算機基礎知識

進入職場后,你會發(fā)現(xiàn)計算機科學基礎課程的重要性在職場中會愈發(fā)凸顯。無論是學習新技術、設計解決方案,還是定位線上疑難問題,都需要對計算機軟硬件體系有深刻理解。然而,學校的理論教學往往與實際應用場景脫節(jié),這時 AI 就可以成為你的得力助手:

?? 將理論落地實踐:學習一個知識點時,AI 可以提供相應的應用場景,解釋在實際工程中的實現(xiàn)方式,甚至提醒你可能遇到的異常情況。

?? 明確使用場景:以數(shù)據(jù)結構和算法為例,AI 不僅可以幫助你理解它的實現(xiàn),還能告訴你在何種場景下使用何種算法或數(shù)據(jù)結構,讓學習更加貼近真實項目需求。

?? 快速掌握語言、框架和工具的實踐操作

?? 優(yōu)化學習流程:AI 能幫你解決工具鏈安裝、工程創(chuàng)建、依賴配置等繁瑣任務,讓你快速進入核心知識點的學習,減少對技術門檻的畏懼。

?? 個性化指導:AI 會根據(jù)你的實際水平提供量身定制的解釋和幫助,耐心解答每一個問題,讓學習過程更加舒適、無壓力。

?? 引導工程最佳實踐:高校教育中對開發(fā)工具、編程規(guī)范等方面的內容常常不足,因此 MIT 也出了這樣的課程:The Missing Semester of Your CS Education。AI 已經(jīng)學習了大量實際項目的最佳實踐,可以在問答中直接指導你正確使用工具并遵循規(guī)范。

在編程獅學習下列課程的時候不妨試試借助 AI 試試吧~

分類 課程名稱 課程介紹 流行指數(shù) 適合人群
前端開發(fā) HTML入門課程(含HTML5) 從零開始學習HTML,掌握網(wǎng)頁結構搭建及HTML5的新特性和語義化標簽,為前端開發(fā)打下堅實基礎 ★★★★★ 初學者、前端開發(fā)者
前端開發(fā) CSS 入門課程 學習CSS選擇器、盒模型、布局方式等基礎知識,通過實戰(zhàn)項目掌握網(wǎng)頁樣式設計技巧,提升頁面美觀度 ★★★★★ 初學者、前端開發(fā)者
前端開發(fā) JavaScript 入門課程 掌握JavaScript語法、DOM操作、事件處理等核心知識,學會實現(xiàn)網(wǎng)頁的交互效果和動態(tài)功能 ★★★★★ 初學者、前端開發(fā)者
前端開發(fā) TypeScript 入門到進階課程 從TypeScript基礎語法講起,深入學習高級類型、接口、類等概念,助力開發(fā)者編寫高質量的前端代碼 ★★★★★ 初學者、前端開發(fā)者
前端開發(fā) Vue2入門課程 學習Vue2框架的響應式數(shù)據(jù)綁定、組件系統(tǒng)、路由管理等核心功能,通過項目實踐快速上手前端組件化開發(fā) ★★★★★ 初學者、前端開發(fā)者
后端開發(fā) Node.js 入門課程 了解Node.js的運行機制,學習使用Node.js搭建服務器、處理HTTP請求和響應,掌握常見的后端開發(fā)框架和模塊 ★★★★★ 初學者、后端開發(fā)者
后端開發(fā) PHP 入門課程 講解PHP語言基礎,包括語法、函數(shù)、數(shù)組等,以及如何使用PHP進行數(shù)據(jù)庫操作、會話管理等Web后端開發(fā)任務 ★★★★★ 初學者、后端開發(fā)者
后端開發(fā) C# 入門課程 學習C#語言的基本語法、面向對象編程思想,以及.NET框架下的Web開發(fā)、桌面應用開發(fā)等技術 ★★★★★ 初學者、后端開發(fā)者
后端開發(fā) C++ 入門課程 介紹C++語言的核心特性,如指針、引用、類和對象等,適合希望從事系統(tǒng)編程、游戲開發(fā)等領域的初學者 ★★★★★ 初學者、后端開發(fā)者
移動開發(fā) Android 零基礎入門課程 從Android開發(fā)環(huán)境搭建開始,學習Java/Kotlin語言在Android平臺的應用,掌握布局設計、事件處理、服務等開發(fā)要點 ★★★★★ 初學者、移動開發(fā)者
移動開發(fā) Swift 入門課程 學習Swift語言的語法和特性,了解iOS開發(fā)的基本框架和組件,能夠開發(fā)簡單的iOS應用 ★★★★★ 初學者、移動開發(fā)者
數(shù)據(jù)庫 SQL 入門課程 講解SQL語言的基本語法,包括數(shù)據(jù)查詢、插入、更新、刪除等操作,以及數(shù)據(jù)庫的設計和優(yōu)化原則 ★★★★★ 初學者、數(shù)據(jù)庫開發(fā)者
數(shù)據(jù)庫 MySQL 入門課程 詳細介紹MySQL數(shù)據(jù)庫的安裝、配置、管理,以及如何使用SQL語句進行高效的數(shù)據(jù)庫操作和數(shù)據(jù)處理 ★★★★★ 初學者、數(shù)據(jù)庫開發(fā)者
系統(tǒng)運維 Linux 入門課程 學習Linux操作系統(tǒng)的常用命令、文件系統(tǒng)管理、用戶權限控制等基礎知識,掌握服務器的基本運維操作 ★★★★★ 初學者、運維人員
系統(tǒng)運維 Git 基礎課程 從版本控制的概念講起,學習Git的基本操作,如克隆、提交、分支管理等,提高代碼協(xié)作和管理效率 ★★★★★ 初學者、開發(fā)者
網(wǎng)絡技術 基礎網(wǎng)絡協(xié)議入門課程 深入講解HTTP、TCP/IP等基礎網(wǎng)絡協(xié)議的工作原理和應用,幫助學員理解網(wǎng)絡通信的過程和機制 ★★★★★ 初學者、網(wǎng)絡工程師
其他 Python3 入門課程 學習Python3的語法基礎、數(shù)據(jù)類型、控制結構等,掌握其在數(shù)據(jù)分析、爬蟲開發(fā)、自動化腳本等領域的應用 ★★★★★ 初學者、多領域開發(fā)者
其他 Java入門課程 從Java語言基礎講起,涵蓋面向對象編程、集合框架、多線程等內容,為后續(xù)的Java Web開發(fā)或Android開發(fā)打基礎 ★★★★★ 初學者、多領域開發(fā)者
其他 C語言入門課程 學習C語言的基本語法、指針、數(shù)組、函數(shù)等核心概念,培養(yǎng)學員的編程思維和算法能力 ★★★★★ 初學者、多領域開發(fā)者
其他 Docker 入門課程 了解Docker容器技術的基本概念,學習如何使用Docker搭建開發(fā)環(huán)境、部署應用,實現(xiàn)應用的快速交付和部署 ★★★★★ 初學者、開發(fā)者
其他 微信小程序入門課程 學習微信小程序的開發(fā)框架和API,掌握頁面設計、數(shù)據(jù)綁定、網(wǎng)絡請求等開發(fā)技巧,能夠開發(fā)簡單的微信小程序 ★★★★★ 初學者、前端開發(fā)者

如果你還沒嘗試用 AI 輔助編程,現(xiàn)在,邁出探索 AI Coding 的第一步吧!

??立即下載豆包 MarsCode

0 人點贊