自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

斯坦福等開源代碼定位AI Agent,極大提升開發(fā)、維護(hù)效率

發(fā)布于 2025-4-10 10:24
瀏覽
0收藏

斯坦福大學(xué)、耶魯大學(xué)、南加州大學(xué)等研究人員聯(lián)合開源了,專用于代碼定位的智能體LocAgent。


在軟件開發(fā)和維護(hù)領(lǐng)域,代碼定位是開發(fā)者日常工作中的核心任務(wù)之一,需要開發(fā)者根據(jù)問題描述,例如,錯(cuò)誤報(bào)告、功能請求或性能問題等,快速、準(zhǔn)確地找到需要修改的代碼片段。


但傳統(tǒng)代碼定位方法在處理復(fù)雜代碼庫時(shí),面臨復(fù)雜代碼庫導(dǎo)航困難,問題描述與代碼實(shí)體之間的語義鴻溝,多跳推理的困難等。而LocAgent可以有效解決這些難題,能自動(dòng)、快速精準(zhǔn)定、遍歷代碼。

斯坦福等開源代碼定位AI Agent,極大提升開發(fā)、維護(hù)效率-AI.x社區(qū)

開源地址:https://github.com/gersteinlab/LocAgent?tab=readme-ov-file


LocAgent的核心在于其“圖基代碼”表示,能將代碼庫解析為一個(gè)有向異構(gòu)圖,從而捕捉代碼的層次結(jié)構(gòu)和依賴關(guān)系。


在這個(gè)圖中,節(jié)點(diǎn)代表代碼庫中的實(shí)體,包括文件、類、函數(shù)等,而邊則表示這些實(shí)體之間的關(guān)系,例如文件之間的導(dǎo)入關(guān)系、函數(shù)之間的調(diào)用關(guān)系以及類之間的繼承關(guān)系,還能夠揭示出隱藏在代碼中的復(fù)雜依賴關(guān)系。

斯坦福等開源代碼定位AI Agent,極大提升開發(fā)、維護(hù)效率-AI.x社區(qū)

LocAgent首先會(huì)解析代碼庫中的每個(gè)文件,識(shí)別出其中的類、函數(shù)等代碼元素,并將它們作為節(jié)點(diǎn)加入到圖中。隨后,會(huì)分析這些代碼元素之間的關(guān)系,并將這些關(guān)系作為邊添加到圖中。


例如,如果一個(gè)函數(shù)調(diào)用了另一個(gè)函數(shù),那么在圖中就會(huì)有一條從調(diào)用函數(shù)指向被調(diào)用函數(shù)的邊。通過這種方式,LocAgent能夠構(gòu)建出一個(gè)全面且詳細(xì)的代碼庫圖表示,為后續(xù)的代碼定位任務(wù)提供了堅(jiān)實(shí)的基礎(chǔ)。


LocAgent還通過稀疏層次實(shí)體索引來增強(qiáng)其搜索能力。這種索引機(jī)制為圖中的每個(gè)節(jié)點(diǎn)創(chuàng)建了多個(gè)索引,包括基于實(shí)體ID的索引、基于實(shí)體名稱的索引以及基于BM25算法的倒排索引。


這些索引能幫助LocAgent在幾秒鐘內(nèi)快速定位到與問題描述相關(guān)的代碼實(shí)體,即使在大型代碼庫中也能保持高效的性能。


在構(gòu)建了圖基代碼表示之后,LocAgent框架的下一步是如何利用這一結(jié)構(gòu)化索引進(jìn)行高效的代碼搜索。為此,LocAgent引入了基于Agent的代碼搜索,可以通過一系列工具來探索代碼庫,并找到與問題描述相關(guān)的代碼片段。


LocAgent為Agent提供了三種主要的工具,這些工具共同支持Agent在代碼庫中的高效搜索和推理。首先是SearchEntity工具,允許Agent通過關(guān)鍵詞搜索代碼庫中的相關(guān)實(shí)體。

斯坦福等開源代碼定位AI Agent,極大提升開發(fā)、維護(hù)效率-AI.x社區(qū)

當(dāng)Agent接收到一個(gè)自然語言描述的問題時(shí),它會(huì)首先提取出問題中的關(guān)鍵詞,然后利用SearchEntity工具在代碼庫的索引中查找與這些關(guān)鍵詞相關(guān)的代碼實(shí)體。這不僅能夠處理精確匹配的關(guān)鍵詞搜索,還能通過模糊搜索找到與輸入關(guān)鍵詞相關(guān)的代碼片段,從而為Agent提供更廣泛的搜索范圍。


第二個(gè)工具是TraverseGraph,允許Agent從一個(gè)給定的實(shí)體出發(fā),沿著圖中的關(guān)系進(jìn)行多跳遍歷。這一工具的設(shè)計(jì)靈感來自于代碼庫中復(fù)雜的依賴關(guān)系,很多時(shí)候,問題的根源可能隱藏在與問題描述中提到的代碼片段相隔數(shù)層的其他代碼中。


通過TraverseGraph工具,Agent可以沿著調(diào)用鏈、繼承鏈等關(guān)系逐步深入代碼庫,探索問題的潛在源頭。TraverseGraph工具支持自定義遍歷方向和跳數(shù),使得Agent能夠靈活地探索代碼庫中的復(fù)雜依賴關(guān)系,從而更全面地理解問題的上下文。


第三個(gè)工具是RetrieveEntity,用于檢索指定實(shí)體的完整屬性。當(dāng)Agent通過SearchEntity和TraverseGraph工具定位到可能相關(guān)的代碼實(shí)體后,需要獲取這些實(shí)體的詳細(xì)信息,以便進(jìn)一步分析和判斷。RetrieveEntity能夠提供實(shí)體的完整代碼內(nèi)容、文件路徑、行號(hào)等關(guān)鍵信息,為Agent的推理提供了充分的依據(jù)。


本文轉(zhuǎn)自 AIGC開放社區(qū)  ,作者:AIGC開放社區(qū)


原文鏈接:??https://mp.weixin.qq.com/s/nQwYTXShMcsXFPLnMiRMvQ??


收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦