《李明宇-CodeGraphRAG:基于LLM的大規模代碼分析.pdf》由會員分享,可在線閱讀,更多相關《李明宇-CodeGraphRAG:基于LLM的大規模代碼分析.pdf(23頁珍藏版)》請在三個皮匠報告上搜索。
1、 代碼問題,就問 Eagle!CodeGraphRAG:基于LLM的大規模代碼分析 及在 Eagle DevAgent 中的應用李明宇|中科院計算所-京兆人公司 聯合研發團隊 代碼問題,就問 Eagle!李明宇 中科院計算所高級工程師/Eagle DevAgent 作者中科院計算所高級工程師,近20年軟件研發與產業化工作經歷。歷任國家重點實驗室課題組負責人、創業公司CTO、上市公司事業群技術總監和首席技術專家。榮獲中國軟件協會“優秀CTO”等多項榮譽,任中國新一代IT產業聯盟分委會秘書長、全國高校人工智能與大數據創新聯盟專家委員、北京開源創新委員會委員、中國開源軟件創新大賽總決賽評委。演講嘉賓
2、 代碼問題,就問 Eagle!你在面向ChatGPT編程嗎? 代碼問題,就問 Eagle!你在面向 編程嗎?代碼問題,就問 Eagle!有了 Copilot(s)我們還是需要它們,為什么?它們的表現,你滿意嗎?面向Google編程面向Stack Overflow編程面向Github編程面向ChatGPT編程面向微信編程 代碼問題,就問 Eagle!你的課題是基于某個已發表的開源項目進行改進,但是怎么也捋不清楚這個開源項目代碼的邏輯。而且隱隱覺得跟論文寫的不太對得上?還記得這些時刻嗎?代碼問題,就問 Eagle!熟悉公司的“祖傳代碼”成為了職業生涯的第一個挑戰,看也看不懂,改也不敢改公司的新產品
3、,是基于開源項目改?還是完全自研?需要迅速讀懂幾個典型開源項目,做出選型決定乙方的代碼如何驗收?是否真正掌握?一年前的項目要做二期,有的同事已經離職了,是繼續開發還是推倒重來?每天要處理各種會議、流程,還要清楚掌握團隊開發工作具體情況。組會聽完匯報總還覺得有些地方沒搞清楚,想看看大家寫的代碼但時間又不夠用。我們系統里以前不可避免地引入了很多舶來的開源代碼,是否都能做到可控?我們的已經投入的研發成本得到的代碼,是否能夠保值增值?還是隨著人員流動存在較高損耗?當學生做論文升職為架構師 公司/部門的技術主管畢業了剛加入一個團隊開始帶一個團隊 作為一個CIO 代碼問題,就問 Eagle!1 1大模型上
4、下文長度:10萬行代碼 1M+tokens代碼-自然語言理解的問題:Embedding計算向量距離不適用增量處理:代碼可能每天都在變(增、改、刪)跨項目:前后端、微服務跨語言:Python、java、js.(所謂“主流”編程語言,有幾十種)代碼和文檔的結合從代碼生成UML圖指定“版本”(Branch、Release、Tag、Commit)2 23 34 45 56 67 78 8項目級代碼分析的難點代碼問題,就問 Eagle! 代碼問題,就問 Eagle!CodeGraphRAG讓 AI 理解項目級代碼 代碼問題,就問 Eagle!整體架構與邏輯*該圖由 Eagle DevAgent 繪制需要
5、兩次遍歷:第一次從逐個文件提取信息;第二次構建跨文件的索引代碼問題,就問 Eagle! 代碼問題,就問 Eagle!索引構成代碼問題,就問 Eagle!邊類型-*CONTAINS*-表示層次結構-*EXTENDS*-表示繼承或接口實現關系,屬性kind區分-*DEPENDS_ON*-表示文件、模塊、類型、函數之間的依賴關系-*CALLS*-表示函數或方法之間的調用關系圖節點屬性-id:唯一標識符-name:名稱-type:節點類型(File、Class、Function、Var)-file_path:文件路徑-language:編程語言-full_name:全限定名-line_number:行
6、號,便于定位-description:描述(LLM生成) 代碼問題,就問 Eagle!Incremental Indexing對修改的文件重新構建索引,并遞歸修改索引圖中的相關部分。識別新增、修改、刪除的代碼元素開發者修改添加或刪除代碼文件文件系統監控器檢測到文件變化獲取變更的文件列表版本控制檢測器獲取變更的文件列表變更文件列表非空從變更文件列表中取出一個文件增量代碼解析器解析該文件從圖數據庫獲取該文件舊的代碼結構比較新舊代碼結構有需要更新的代碼元素開始事務無需更新圖數據庫更新圖數據庫中的節點和關系提交事務檢查受影響的跨文件關系存在受影響的關系存在新的受影響關系更新受影響的節點和關系檢查是否有
7、新的受影響關系變更文件列表不為空記錄操作日志是等待下一次變更否是否是否是否是否*該圖由 Eagle DevAgent 繪制代碼問題,就問 Eagle! 代碼問題,就問 Eagle!Lazy Indexing建立項目基本信息文件和目錄結構主要入口點解析未索引的代碼部分提取代碼結構和關系用戶請求解析新項目代碼部分已被索引是否初始化最小化索引用戶提出查詢觸發即時解析和索引更新索引添加節點和邊需要解析依賴項遞歸解析依賴的代碼部分更新索引依賴項的節點和邊從更新后的索引中獲取數據返回查詢結果給用戶從索引中獲取數據返回查詢結果給用戶是輸入查詢內容解析查詢識別涉及的代碼部分否延遲索引以最快的速度響應用戶提問代
8、碼問題,就問 Eagle!*該圖由 Eagle DevAgent 繪制 代碼問題,就問 Eagle!Eagle DevAgent及應用 代碼問題,就問 Eagle!代碼問題,就問 Eagle! 代碼問題,就問 Eagle!代碼問題,就問 Eagle!代碼問題,就問 Eagle!并不是簡單把 RAG 結果返回給用戶。而是通過智能體推動一個分析過程,以解決較為復雜的問題。 代碼問題,就問 Eagle!Eagle DevAgent 的功能企業版功能代碼問題,就問 Eagle!十萬到百萬行量級的全項目和跨項目程序代碼理解01支持多語種自然語言對代碼庫進行快速搜索和答疑02從代碼一鍵生成架構圖、類圖、流
9、程圖、思維導圖03深度解讀Github項目,掌握開源項目不再困難04廣泛適用幾十種主流編程語言,跨編程語言項目解讀無障礙05企業研發環境接入(Gitlab、BitBucket、Jira )06代碼質量效率評估 07Issue 分析與修復建議08融合企業的開發文檔和知識庫 代碼問題,就問 Eagle!典型應用場景 典型場景一:新項目接手當團隊接手一個二次開發項目,或者開發者進入一個新的項目時,幫助開發者快速分析項目的代碼結構和邏輯,減少閱讀文檔和梳理代碼的時間,迅速融入新項目,實現高效的開發對接,降低工作中錯誤幾率。典型場景二:國外開源代碼自主可控對開源項目進行深度分析,幫助企業自主掌控開源代碼
10、的應用和二次開發。通過 Eagle,企業和開發者能夠全面了解開源項目的代碼邏輯,確保在關鍵場景下實現自主可控。代碼問題,就問 Eagle! 代碼問題,就問 Eagle!典型應用場景 典型場景三:研發質量和進度風險預警通過對代碼的智能審查,識別代碼中的潛在問題,發出質量警示,給出改進建議。Eagle還可以對不同技術點和人員的研發進度進行評估,識別項目進展中的關鍵瓶頸。幫助研發主管有效預測研發風險并做出預防措施。典型場景四:軟件代碼審計與驗收可用于支持各種高要求的代碼審計與驗收場景,包括融資盡調、代碼資產化、軟件委托開發項目的驗收及獲獎評審等。Eagle協助評審專家進行深度代碼分析,評估代碼的先進
11、性、原創性和潛在風險,提供詳盡的代碼評估報告。代碼問題,就問 Eagle! 代碼問題,就問 Eagle!未來展望 代碼問題,就問 Eagle!1940+20222030數據來源Eagle Workspace未來展望真正使開發者擺脫代碼的束縛,專注于更高層次的創造性工作,讓人人都能成為開發者。思維驅動開發:通過自然語言提示和思維導圖,AI能夠幫開發者實現從概念構思到代碼實現的全過程。實時反饋和自動優化:不僅能生成代碼,還能根據實時需求自動檢測和優化代碼,無需開發者手動調整性能和質量問題。代碼封裝與高層次設計:開發者可以專注于產品設計和提出問題,AI負責代碼實現部分,降低對代碼細節的關注。面向企業
12、和研發團隊的AI驅動的全自動軟件制造平臺:自動化項目管理和決策支持:通過AI分析企業需求、進度和市場變化,自動規劃項目路線圖和任務分配。項目經理和研發主管的角色更偏向于監督和校準,而非手動管理。工業化的軟件生產線:無需大量人工干預的自動化開發平臺,幫助企業大規模、高效地“制造”軟件,像制造工廠一樣高效地實現從設計、開發、測試到交付的整個過程。自適應的代碼工廠:系統能夠自動優化和重構企業的代碼庫,確保代碼始終符合最新技術標準,并根據性能需求和技術債務調整代碼架構。Eagle Factory代碼問題,就問 Eagle! 代碼問題,就問 Eagle!代碼問題,就問 Eagle! 代碼問題,就問 Eagle!利用AI技術深化計算機對現實世界的理解推動研發進入智能化時代