国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

JoyCode:SWE-bench Verified打榜技術報告

京東云 ? 來源:jf_75140285 ? 作者:jf_75140285 ? 2025-11-03 17:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在權威SWE-Bench Verified基準測試中,JoyCode Agent憑借 74.6% 的高通過率

強勢登榜全球 Top3,并正式開源!

Github開源地址:https://github.com/jd-opensource/joycode-agent ?

Gitee開源地址:https://gitee.com/JD-opensource/joycode-agent?

JoyCode Agent 展現出了卓越的復雜編程問題解決能力。與榜單先進方案相比,JoyCode Agent 在實現相近性能表現的同時,將計算資源消耗降低了 30%-50%。這一成果不僅體現了 JoyCode Agent 高效應對復雜編碼挑戰的能力,更彰顯了其在實際應用中的高性價比和商業價值。

wKgZO2kIctmAUL20AAOJ6ioQw7Q888.png

?

摘要

SWE-bench 作為當前自動軟件工程修復領域的代表性基準,要求智能體具備高效的補丁生成與驗證能力。隨著大語言模型的發展,實際場景中的軟件工程任務已經能被進一步的解決了,但基于提示詞工程的方法已經不能很好的解決代碼倉庫級別的工程修復任務。基于上述的困境,本文提出了一種以“補丁–單測協同生成與迭代驗證”為核心的自動修復框架。

具體而言,我們首先在 Docker 隔離環境中針對具體代碼倉庫生成初始補丁,并同步生成 Fail2PassPass2Pass 兩類單元測試,對補丁效果進行全面驗證。當補丁通過所有自動生成的單測時,直接作為最終修復結果輸出;若測試未通過,則設計一套校驗流程判定問題源自補丁本身還是測試用例,并據此有針對性地重新生成補丁或單測,實現高效的錯誤定位與自適應迭代。最終,系統可獲得高質量的補丁池,為實際軟件倉庫問題的自動化修復提供有力支持。實驗結果表明,該方案在 SWE-bench 標準任務上能夠顯著提升補丁正確率與修復覆蓋率。

JoyCode京東云開發者社區: https://developer.jdcloud.com/article/4365

JoyCode算法文章集合:

1. JoyCode-CSR上下文引擎:深度理解倉庫代碼 2. 智能編程之道:什么樣的代碼才適合智能編程時代?【AI助力全員提效】 3. JoyCode-智能編碼質量管理方案【模型技術能力支撐方向】 4. 深入剖析:JoyCode-CSR上下文引擎的核心技術與實現 5. JoyCode在SWE-Bench Verified榜單的成績?

一、項目背景與目標

1.1 SWE-bench 任務簡介

SWE-bench Verified 是由普林斯頓大學等機構開發的軟件工程基準測試,專門用于評估AI系統解決真實軟件工程問題的能力。該基準測試收集了來自 scikit-learn、matplotlib、requests 等知名開源 Python 項目的真實 GitHub Issues,要求AI模型理解問題描述、分析現有代碼庫結構,并生成能夠修復 Bug 或實現新功能的代碼補丁。與傳統的代碼生成任務不同,SWE-bench Verified 測試的是 AI 在復雜真實環境下的綜合編程能力,包括多文件協調、上下文理解和業務邏輯把握等,評估標準主要基于生成的代碼是否能在Pass@1 就通過完整的測試套件驗證。

1.2 項目挑戰與得分概述

1.項目挑戰

?代碼庫級理解與跨文件推理:相比于函數級別的任務,SWE-bench 涉及真實項目中的復雜問題,通常需要對整個代碼庫有全局性的理解,能夠跨文件、跨模塊進行推理和修復。這要求模型不僅能生成語法正確的補丁,還要保證語義上的一致性與正確性。

?大規模解空間與候選方案管理:由于可能的修復路徑多樣,候選補丁空間巨大。如何高效生成、篩選、驗證和整合這些補丁,避免冗余和錯誤,是當前系統面臨的核心技術瓶頸。

?推理軌跡多樣性與進化:LLM 生成的解決方案往往趨同,缺乏真正多樣化的推理路徑,導致探索空間有限,難以發現創新性或邊緣性的正確修復。如何讓模型跳出高概率、慣性化的模式,挖掘潛在正確解,是提升成功率的關鍵。

?自動化驗證與反饋循環:修復補丁需要自動化測試和驗證機制,以確保補丁真的解決了問題且沒有引入新故障。高效的測試反饋機制和驗證策略仍有很大提升空間。

2.得分概述

?在 SWE-bench Verified 的 Pass@1 官方評測中,目前取得 74.6% 的通過率。該分數來自于“補丁–單測協同生成與迭代驗證”的完整流程:先生成 Pass2Pass 和 Fail2Pass 單測,再進行首輪 Patch 生成,并在 Docker 隔離環境中執行單測驗證,失敗樣例進入“軌跡壓縮 + CRS 檢索 + 二輪重試”的后處理流程。

二、業界現狀與優化思路

2.1 業界現狀與痛點

1.提示詞工程“一次性生成”在倉庫級任務上失效

?本質問題:單輪大模型推理難以覆蓋復雜倉庫的代碼依賴、跨文件語義與歷史上下文,容易出現“語義漂移”和“脆弱一致性”。

?典型癥狀:Patch通過少量樣例測試但在全量測試中失效;針對特定 Issue 的“過擬合式修復”;同一倉庫的類似問題難以遷移復用,還可能引入新問題。

?直接影響:成功率波動大、可復現性差,難以穩定提升 Pass@1。

2.失敗僅“報錯不歸因”,導致重試無方向

?本質問題:缺乏對失敗來源的系統性建模,無法區分“Patch邏輯錯誤”“工具定位錯誤”“環境/依賴異常”等根因,重試策略主要為盲目搜索。

?典型癥狀:重復觸發相同錯誤、無效重跑占比高;token 主要消耗在“錯誤分布內部”的局部探索;調參靠經驗,策略不可解釋。

?直接影響:重試效率低,導致整體吞吐和穩定性受限。

3.缺乏經驗復用,長尾難例收斂慢、覆蓋率受限

?本質問題:多數系統將每個實例當作“獨立樣本”,沒有構建可遷移的“成功策略表征”與“失敗模式畫像”,難以跨實例復用解決方案。

?典型癥狀:相似問題反復探索同類無效路徑;在復雜倉庫(如 django、scikit-learn)中對同類型 Bug 的“重復踩坑”;調度與提示詞無法受先驗知識指導。

?直接影響:對長尾問題的處理成本指數級上升,難以在固定預算內擴大覆蓋率或穩定提升上限。

4.Token 消耗爆炸,成本–收益比失衡

?本質問題:將“多次獨立運行 + 結果求并集 + 穩健投票”作為主路徑,而非建立“有方向的閉環迭代”,導致候選規模不受控。

?典型癥狀:海量候選采樣后,仍在錯誤分布內做“次優選擇”;投票只能在“整體質量一般”的集合里勉強挑選相對較好的方案。

?直接影響:token 使用量與延遲快速攀升;單位 token 的有效產出下降;系統工程復雜度提升但邊際收益遞減。

5.多輪代理的誤差累積與路徑依賴

?本質問題:倉庫級修復需要多輪工具調用與策略決策;早期的微小偏差(定位錯誤、解釋偏誤)會在后續步驟被放大,造成路徑依賴與誤差累積。

?典型癥狀:代理在錯誤上下文中越走越偏;最終Patch與問題無關或引入副作用;即便投票,也可能只是從“同一錯誤簇”中選一個“相對不差”的。

?直接影響:整體效率與質量被鏈路前段的誤差所綁架,后續再多的采樣與投票都難以扭轉結果。

2.2 我們的優化思路及優勢

1.針對“一次性生成失效”的問題

?現狀:單次大模型推理對倉庫級修復的覆蓋率不足,缺少驗證閉環,難以穩定提升 Pass@1。

?我們的思考:倉庫級修復是一個“生成–驗證–修正”的閉環問題,不能只依賴一次性生成。需要將“ Patch 生成”和“測試生成/預驗證”耦合,形成以測試為中心的工程反饋回路。

?我們的優化:將補丁生成與 Fail2Pass & Pass2Pass 單測協同設計,并在隔離環境下進行嚴格驗證;失敗樣例進入結構化后處理(歸因→指向性重試)。這使得系統從“單輪采樣”轉為“閉環迭代”,輸出具備可驗證證據的補丁。

?相比同類的優勢:許多方案要么只做補丁生成,要么只依賴現有測試。我們采用“動態測試協同生成 + 原倉預驗證”的策略,在問題前置階段就過濾掉“測試不成立”的噪聲,顯著提升整體的穩定性。

2.針對“失敗僅報錯不歸因”的問題

?現狀:失敗后難以判斷責任邊界(補丁邏輯 vs 測試設計 vs 環境/依賴),導致不可控的反復重試。

?我們的思考:精細化失敗歸因是提高重試效率的關鍵。只有明確問題來源,才能設計差異化的重試路徑,實現更低的 token 消耗與更快的收斂。

?我們的優化:引入“失敗歸因”機制,將失敗拆分為可執行的類別標簽;針對不同標簽,選擇“基礎重試/測試側修正/策略升級”等不同路徑,形成可解釋的再求解過程。

?相比同類方法的優勢:與“黑盒重跑”不同,我們通過歸因實現“有方向的迭代”,減少無效探索和隨機波動,穩定提升成功率。

3.針對“缺乏經驗復用”的問題

?現狀:大多數系統對于歷史成功案例“看過就忘”,在難例上重復走彎路。

?我們的思考:倉庫級修復常呈現模式可遷移的特性。同類問題在補丁類別、修改策略、測試構造上具有相似性;將成功經驗結構化并遷移到相似樣例,可顯著縮短探索路徑。

?我們的優化:基于軌跡壓縮與相似案例CSR檢索,將“策略摘要”引入下一輪重試的提示,使得“重試不是從零開始”,而是“從經驗啟航”。

?相比同類方法的優勢:與單純的多樣化采樣不同,“經驗遷移重試”機制具備方向性與可解釋性,對于難例的收斂更友好。

4.針對“Token 消耗爆炸”的問題

?現狀:多次獨立運行取并集、無效重試過多、無差別增加候選,都會導致 token 使用量激增,成本與時延不可控。

?我們的思考:降低 token 的關鍵在于“有針對性的重試”與“早期篩除無效路徑”。通過歸因與協同測試,把無效路徑擋在前面;通過經驗遷移與單測篩選,提高單位 token 的有效性。

?我們的優化:將“測試協同 + 失敗歸因 + 經驗遷移 + 投票仲裁”納入一個整體策略棧。投票只在必要時對候選進行“最后一跳”的穩健選擇,而不是以“海量并行采樣”替代系統性改進。

?相比同類方法的優勢:相比“海投 + 海選”的簡單并行,我們強調“質量優先的候選構造 + 適度投票兜底”,以更低 token 成本實現更高的成功率及穩定性。

?以下是JoyCode Agent調用LLM的次數分類及占比:

類別 Testing (次數) Patch (次數) 軌跡壓縮(次數) 根因決策(次數) 相似度檢索(次數) 投票決策(次數) 總次數
1 1 1 1 0 0 0 3
2 1 2 1 0 0 1 5
3 1 2 1 0 0 0 4
4 1 2 1 1 0 1 6
5 1 2 1 1 1 1 7
類別 數量 占比
1 351 70.2%
2 106 21.2%
3 16 3.2%
4 10 2%
5 17 3.4%

5. 針對“多輪代理誤差累積與候選選擇”的問題

?現狀:長鏈路代理容易誤差滾雪球;純投票可能只是在錯誤分布內做“次優”。

?我們的思考:需要在“多輪生成”的同時,構建強力的檢錯與糾偏機制,并明確投票的定位——用于最終仲裁,而非彌補缺乏驗證與歸因的欠賬。

?我們的優化:通過隔離環境的一致性驗證、失敗來源的精細化歸因、經驗遷移驅動的重試,將“誤差累積”分段打斷;在候選集構造已具備質量保證的前提下,再用投票進行穩健仲裁。

?相比同類方法的優勢:我們把投票放在“驗證-歸因-重試”之后,作為“穩定器”而非“主力軍”,使得候選質量更高、仲裁更有效,減少無謂的資源消耗。

總的來說,我們針對業界在“倉庫級自動修復”的關鍵短板進行了系統級工程優化:把補丁生成、單測生成與驗證、失敗歸因與經驗重試整合為一個可復現、可擴展、可觀測的閉環流水線。這些優化直接服務于 SWE-bench Verified 的打榜目標,既提升 Pass@1 的穩健性,也為后續的策略演進提供了堅實的工程基礎。

三、整體系統結構

wKgZPGkIctqAH6_xAAMDILyjAWQ778.jpg

?

3.1 系統簡介

本系統實現了“補丁–單測協同生成與迭代驗證”端到端pipeline,關鍵設計如下:

1.單測協同生成

?通過數據集中的 Issue,分析相應代碼倉中的問題來源,生成 Fail2Pass 和 Pass2Pass 單測樣本,并在原始代碼上進行預執行校驗,確保 Fail2Pass 單測在未修復前應當失敗,Pass2Pass 單測在未修復前應當成功,從而約束 Patch 生成方向。

2.首輪 Patch 生成與容器化驗證

?在 Docker 隔離環境中按實例啟動 SWE-bench 對應鏡像,初始化工作區與 Git 基線,通過 Patch-Agent 和 Issue 驅動生成 Patch。

?開啟驗證后,立即在容器內以 Pytest 執行生成的 Fail2Pass 和 Pass2Pass 單測,得到評測的結果作為首輪 Patch 的通過情況,指導后續的流程。

3.軌跡壓縮 + 相似案例檢索

?從首輪存儲的信息中讀取軌跡信息和 Patch 信息,使用 LLM 將執行軌跡壓縮為“策略/關鍵變更/要點”的結構化摘要,沉淀到軌跡池中。

?基于壓縮摘要對失敗的 Case 進行 CSR 檢索,即從成功案例庫中檢索最相似的實例,返回相似度分數、遷移理由與軌跡摘要,作為第二輪 Patch 生成的先驗知識。

4.二輪重試

?將首輪“補丁為空或單測未通過”的實例匯總為重試候選;為命中高質量相似案例的實例注入先驗知識(策略 + 關鍵變更 + 相似度/理由),在 Retry Agent 配置下并發重試生成新補丁。

?無相似案例時采用“無經驗”重試路徑,仍以并發方式生成候選補丁,最大化召回。

?將一輪、二輪生成的 Patch 通過 Decision Agent 決策出最優結果,得到最終用于提交官方的 Patch。

綜上,當前實現以“Fail2Pass與Pass2Pass的單測約束 → 首輪補丁生成與容器驗證 → 軌跡壓縮與 CRS 檢索 → 二輪重試”的閉環,形成了高質量的 Patch 池與可復現的工程 Pipeline。

3.2 交互策略與系統流程

該 Multi-Agent 系統通過一套自動化的流程,將自然語言描述的軟件問題(Issue)與代碼倉庫作為輸入,最終為每個問題實例生成一個可復現、可驗證且具備明確決策依據的最優代碼補?。≒atch)。此流程由四個核心智能體協同執行:Testing Agent 負責構建測試驗證套件,Patch Agent 負責實現修復,CSR Agent 在特定失敗場景中提供經驗檢索,Decision Agent 則對重試前后的兩個候選補丁進行最終的仲裁。

第一步,系統調用 Testing Agent 將問題描述轉化為可執行的測試基準。在實現層面,Testing Agent 可以通過 Bash 工具完成依賴安裝、環境檢測、測試文件的創建與寫入等,并最終生成包含兩個 PASS TO PASS 和一個 FAIL TO PASS 的測試矩陣。生成后會立即進行預驗證,以確保生成的測試用例滿足“一敗兩通”的結構規范。

第二步,系統調用 Patch Agent 生成初步修復補丁(Patch)。Patch Agent 采用以“規劃—實現—修訂”為主線的工程化策略,借助一系列工具進行代碼理解、錯誤復現與定位,并對目標代碼進行精確修改等。最終,此階段產出一個可運行的有效補丁,但是,生成的補丁也可能為空,或是未能通過第一步生成的測試套件。

第三步,系統根據前兩步的結果進入分支處理,通過不同策略保證流程收斂:

?測試用例生成失敗(為空),但補丁成功生成:由于缺乏有效的測試驗證基準,系統將啟動基礎重試(Base Retry),在相同的輸入條件下再次調用 Patch Agent 生成一個新的 Patch,隨后, Decision Agent 在兩個候選補丁間進行決斷,選出最優方案。

?初次補丁生成失敗(為空):系統同樣進行基礎重試以生成一個新 Patch,并將其直接采納為當前實例的最優解。

?測試用例合規生成(滿足“一敗兩通”),且初次補丁成功通過驗證:流程在此收斂,初次生成的 Patch 被直接確認為最優補丁。

?測試用例成功生成(不為空),但初次補丁未通過驗證:系統啟動失敗歸因流程:

?歸因于測試用例(Test):判定標準為測試用例本身不合規或未能準確反映 issue 意圖,之后,系統將觸發基礎重試,生成一個新補丁后進行投票決策。

?歸因于補?。≒atch):判定標準為補丁自身的邏輯錯誤、實現缺陷或考慮不周等情況,之后,系統則會激活經驗重試。首先將所有實例第一次生成 Patch 的軌跡信息(如工具調用策略等)進行壓縮,并納入軌跡池,然后調用 CSR Agent,以當前失敗實例的 issue 為檢索條件,從歷史成功案例庫中檢索出語義最相似的成功實例所對應的的壓縮軌跡,再將“失敗壓縮軌跡”與最相似的“成功壓縮軌跡”一并提供給 Patch Agent,要求其對比分析與糾偏學習,生成一個優化后的新補丁,最終由 Decision Agent 在初次補丁與優化補丁之間完成投票仲裁。

在整個 workflow 中,Decision Agent 扮演著統一的“仲裁者”角色:當面臨多個候選補丁時,它會基于對問題描述與變更意圖的深刻理解,從邏輯正確性、與 issue 的一致性、修改的最小性與風險控制、代碼質量與可維護性以及邊界條件覆蓋等維度進行綜合評估,形成明確且可追溯的投票結論。

綜上,該系統通過“建立標準(Testing Agent)→ 實施修復(Patch Agent)→ 決策重試(CSR Agent)→ 最終仲裁(Decision Agent)”的Agent交互設計,確保每個問題實例都能收斂至一個最優補丁。最終匯集而成的結果集,因其具備明確的測試基準、可復現的實驗路徑與透明的決策依據,可直接用于后續的官方評測與對比分析。

四、Agent 結構設計

4.1 Patch Agent

1. 功能介紹

Patch Agent 是基于響應式代理(React Agent)架構構建的核心智能體。它模擬人類開發者的工作模式,在一個持續的“觀察-思考-行動”閉環中運行,根據任務的實時進展和反饋,動態地調整其策略。

wKgZO2kIctuAeCKpAAk_2LU2mRk945.jpg

?觀察(Observe):從問題到洞察

?任務解析:工作流始于一個 GitHub Issue。Agent 利用大模型的語言能力,從自然語言描述、錯誤日志和用戶反饋中提煉出問題的核心。

?代碼勘探:隨后,它會深入代碼庫,借用 Bash 工具,通過 ls、grep、find 等終端命令實現代碼搜索、閱讀,甚至直接運行代碼以復現錯誤等方式,主動勘探和定位問題相關的代碼區域。

?思考(Think):從洞察到策略

?思維鏈:這是 Agent 的決策中樞,它構建一個適應性極強的行動計劃(即思維鏈)。例如:“首先,為 file.py 中的 calculate_total 函數添加 discount 參數;然后,更新所有調用點;最后,運行單元測試驗證?!?/p>

?動態規劃:這個計劃并非一成不變。Agent 采用“ 邊想邊做 ”的模式,可以在思考過程中穿插執行代碼編輯或 Bash 命令來獲取更多信息,并根據結果即時調整后續策略。

?行動(Action):從策略到解決問題

?執行與驗證:在行動階段,Agent 調用其工具箱將策略付諸實踐。它使用 Bash 工具來配置環境(如安裝依賴、運行構建腳本),并調用代碼編輯工具來精確地實現代碼的增、刪、改。

?迭代循環:每一步操作后都伴隨著即時驗證 。Agent 會立刻運行Codebase中原生測試套件來檢驗修改的正確性。如果驗證失敗,這并不會中止流程,而是被視為新的觀察輸入。Agent 會帶著失敗的日志信息,自動回到“觀察”階段,重新分析、思考并再次行動,形成一個高效、自主的迭代修復循環。

當 Patch Agent 成功完成所有修改并通過必要的驗證后,它會將所有變更整合成一個標準的代碼補丁(Patch)文件。這個補丁文件清晰地記錄了所有的代碼改動,可以直接被合并到主代碼庫中。

2. 工具設計

Patch Agent 的功能由一個模塊化的工具集實現,每個工具都在“觀察-思考-行動”循環中承擔特定職責。

?代碼編輯工具

?功能:提供對文件內容進行精確修改的接口,支持基于上下文的原子化操作,如插入、替換和刪除指定的代碼塊。

?用途:用于執行由推理過程確定的源代碼修改。其精確性確保了變更的最小化,從而生成清晰、易于審查的代碼補丁。

?Bash 工具

?功能:提供一個在項目工作空間內執行標準 Shell 命令的環境。

?用途:主要用于信息獲取(通過 grep , ls 等進行靜態分析)、環境準備(通過 pip 等安裝依賴)和動態驗證(通過運行 pytest 等測試套件獲取執行反饋)。

?思維鏈工具

?功能:一個結構化的內部推理組件,用于將高層任務目標分解為具體的行動序列。

?用途:負責制定行動計劃、根據工具執行的實時反饋進行動態調整,并協調其他工具的調用與參數傳遞。

3. 輸入輸出定義

?輸入信息如下:

?Issue

?定義:對軟件問題的詳細文字描述,其內容通常等同于一個 GitHub Issue 或 Pull Request。它包含了復現問題、理解背景和明確目標所需的所有信息,如錯誤報告、功能需求、堆棧跟蹤等。

?用途:這是 Agent 進行任務解析和構建初始計劃的原始信息源。Agent 通過自然語言理解的能力從該描述中提煉出具體的工程目標。

?Location

?定義:一個指向待修改代碼倉庫根目錄的路徑。此路徑通常指向一個隔離的、容器化的文件系統環境。

?用途:為 Agent 提供一個安全、封閉的工作沙箱。Agent 的所有操作,包括文件讀寫、編譯、測試等,都將在此目錄內進行,確保了操作的隔離性與環境的一致性。

?輸出信息如下:

?Patch

?定義:一個遵循標準 diff 格式的字符串。該補丁精確記錄了 Agent 為解決 Issue 中描述的問題而對 Location 內的代碼所做的全部修改。

?用途:這是 Agent 工作流程的最終交付成果。此補丁可直接被版本控制系統(如 Git)應用,提交至代碼審查平臺,無縫融入現有的開發工作流中。

4. 應用場景

Patch Agent 的核心價值在于其能夠根據任務的復雜度和初始嘗試的結果,動態調整其解決策略。其應用場景主要分為以下三種模式:

?首次Patch生成:Patch Agent 的標準工作流程始于首次patch生成 。接收任務后,Agent 會啟動其“觀察-思考-行動”循環,通過任務解析、代碼修改與測試驗證,迭代生成一個能通過預設驗證的初始補丁,或在達到嘗試上限后暫停。

?基礎重試:若首次生成失敗,或者因測試用例問題(測試用例生成失敗、測試用例錯誤等)則會觸發基礎重試,此模式下,會再一次通過標準的 Patch Agent 工作流程執行補丁的重新生成,之后通過決策機制選擇出兩次中最優的補丁。

?經驗驅動重試:若因 Patch 的問題導致沒有通過 Testing Agent 生成的測試用例,則會進入經驗驅動重試階段,該模式會為 Agent 注入兩種關鍵經驗,包括自身失敗的完整軌跡,以及通過 CSR Agent 檢索出的最相似問題的成功軌跡。Agent 會對這兩種經驗進行辯證分析,從失敗中吸取教訓,從成功中借鑒策略,形成一個全新的、更具魯棒性的行動計劃。

4.2 Testing Agent

1.功能介紹

Testing Agent 旨在為評估代碼補?。≒atch)自動生成有針對性的測試用例,它借助大語言模型,能夠深入理解錯誤報告(Issue)和代碼庫,并自動生成一套精準的測試用例,從而對每一個代碼補丁進行全面、可靠的評估。

wKgZPGkIctyADwS9AAWKwHL_s-w079.jpg

Testing Agent 會創建三種不同目的的測試用例,共同構成一個完整的驗證矩陣:

?錯誤復現測試(FAIL TO PASS):

?運行邏輯:此測試源于代碼倉中的原始 Bug,在原始的、有缺陷的代碼上要求失敗 ,但在應用補丁修復后的代碼上要求通過。

?核心價值:這是驗證補丁有效性的“黃金標準”,它直接證明了補丁確實解決了要修復的特定問題。

?回歸保護測試(PASS TO PASS):

?要求:此測試在修復前后的代碼上都必須通過。

?核心價值:保護現有功能不被破壞,確保補丁在修復 bug 的同時,沒有引入新的問題。

?邊緣檢測測試(PASS TO PASS):

?要求:此測試同樣在修復前后的代碼上都必須通過。

?作用:專注于檢驗與 Bug 相關的邊界條件和特殊輸入。這確保了修復方案是健壯的,不僅能處理已知的失敗場景,在各種極端的使用情況下也能保持穩定,不會產生意外的副作用。

生成的測試用例不會立即用于評估補丁,而是必須先通過一個“預驗證”關卡。在這個階段,所有三個測試用例都會在原始的、有缺陷的代碼上運行。只有當測試結果完全符合預期:FAIL TO PASS 失敗,另外兩個 PASS TO PASS 通過,這套測試用例才被確認為有效且校準精確。

在成功生成并校準測試用例后,系統將立即調用 Patch Agent 進入代碼修復階段,生成一個候選Patch。該 Patch 會立刻接受此前生成的測試用例的嚴格檢驗:如果能順利通過所有測試,它將被初步標記為成功;反之,無論是最初未能生成合規的測試用例,還是后續生成的Patch未能通過測試,系統都將啟動相應的重試策略,針對性地迭代優化,嘗試解決問題。

2. 工具調用

在 Testing Agent 的整個自動化流程中,通過 Bash 工具將大模型生成的抽象指令(如創建一個測試文件、運行測試等)轉化為操作系統能夠理解和執行的具體命令,可以說,Testing Agent 的所有計劃和調度最終都由 Bash 工具付諸實踐。其核心用途主要體現在以下三個方面:

?文件操作:創建與寫入測試用例

?核心價值:大模型并不會手動輸入代碼,而是通過執行 Bash 工具來精確地把構思好的測試代碼,準確無誤地生成為實體文件,存放于工作區中。

?實現方式:通過調用 mkdir 命令確保生成存放測試文件的目錄,利用 cat 組合指令,將包含復雜縮進和特殊字符的多行測試代碼原封不動地寫入到指定的 .py 文件中,為后續的測試執行做好準備。

?環境管理:安裝與檢查依賴

?核心價值:執行測試之前,自動確保 pytest 等所有必需的依賴庫都已安裝就緒,保證測試環境的一致性和可靠性。

?實現方式:采用條件邏輯,只有檢查環境的命令失?。ㄒ馕吨蕾嚾笔Вr,才會觸發 pip install 進行安裝,這種智能化的檢查機制避免了盲目安裝以及不必要的重復操作。

?測試執行:運行并反饋結果

?核心價值:自動執行生成的測試用例,并捕獲測試結果,為 Agent 的后續決策提供依據。

?實現方式:Bash 工具直接調用 pytest 命令來運行測試,執行完成會自動捕獲執行完畢后的退出碼(Exit Code),在該流程中,退出碼為 0 被視為成功,否則為失敗。

3. 設計目的

SWE-bench 旨在衡量一個 Agent 是否能像一名真正的軟件工程師那樣,完成理解、分析并最終解決一個復雜軟件問題的完整鏈路,Testing Agent 的設計正是這一理念的直接體現,是為了響應 SWE-bench 評測對 Agent 綜合問題解決能力的考驗,而不僅僅是為了評估其最終產出的 Patch。

1)將問題理解轉化為可執行的規范:面對一個 issue ,一個初級的方法是直接嘗試生成代碼補丁,但一個高級且更符合工程實踐的思路是首先深刻理解問題到底是什么以及修復的標準是什么。Testing Agent 構成的測試套件,就是 Agent 對“修復成功”這個目標的精確定義,它清晰地展示了 Agent 對問題分析與拆解能力。

2)為高級 Agent 策略奠定基礎:生成的測試套件并非一次性工具,而是整個修復流程中可被反復利用的核心。當 Patch Agent 首次生成的補丁未能通過測試用例時,可以直接嘗試判斷失敗的原因(測試用例問題 / Patch問題),然后針對性選擇不同的重試機制(基礎重試 / 經驗重試),最后進行投票,決策出最優的 Patch。

4. 輸入輸出定義:

?輸入信息——與 Patch Agent 的輸入信息一致:

?Issue:詳細描述軟件問題的文本

?Location:指向對應代碼倉庫的路徑

?輸出信息——三個獨立的測試代碼文件:

?Test Failure Scenario (錯誤復現測試)

?Test Happy Path (回歸保護測試)

?Test Edge Case (邊緣檢測測試)

這是 Testing Agent 的核心產物,該測試套件首先用于“預驗證”,確保其自身邏輯的準確性,通過后,它將作為評估后續代碼補丁的“黃金標準”,從有效性、安全性和健壯性三個維度對補丁進行自動化、全方位的質量檢驗。

4.3 CSR Agent

1.功能介紹

該 Agent 是系統在測試用例成功生成,但代碼補丁未能通過測試用例的情況下所激活的一套高級錯誤診斷與自我優化的調度 Agent。它通過軌跡壓縮、根因決策、CSR 相似度檢索和經驗重試,將第一次失敗的原因和過往相似的成功經驗作為第二次重試的先驗知識,旨在通過借鑒多維歷史經驗來指導并優化新Patch的生成。

wKgZO2kIcuCASmj_ABF9efwtCEw155.jpg

1)軌跡壓縮

在 Patch Agent 的第一次工作流程結束后,無論成功與否,其完整的執行軌跡都將被捕獲和處理。

?軌跡定義:一次完整的執行軌跡包含了 Patch Agent 從接收任務到生成最終Patch的全過程記錄,主要包括其內部的思考鏈、每一輪的工具調用(如代碼搜索、文件讀寫等)。

?壓縮目的:為了高效存儲和檢索,原始的冗長的軌跡會被壓縮為一個結構化、信息密集的摘要。這個摘要保留了解決問題的核心邏輯和關鍵步驟,去除了冗長信息。

?軌跡池:所有壓縮后的軌跡都會被存入一個統一的“軌跡池”中,這個池子構成了系統的知識庫,為后續的經驗檢索和學習提供了數據基礎。

2)根因決策

當一個由 Patch Agent 生成的補丁未能通過 Testing Agent 所生成的測試組合時,系統并不會直接判定補丁無效,而是啟動根因決策模塊進行失敗歸因。具體的決策邏輯為,大模型作為診斷引擎,分析并判斷導致測試失敗的根本原因。綜合分析原始的問題描述、Testing Agent 生成的測試用例、失敗的代碼補?。≒atch)、測試結果這四個維度的信息,進行歸因:

?歸因于測試用例:如果模型判斷 Patch 驗證失敗是由于測試用例本身存在缺陷(例如生成的測試用例未能準確反映 issue 的真實意圖),系統將觸發基礎重試流程。

?歸因于代碼補?。?strong>如果模型判斷測試用例是準確的,而失敗源于補丁自身的邏輯錯誤、實現缺陷或考慮不周等情況,系統將觸發經驗重試流程。

3)CSR 相似度檢索

在根因決策將失敗歸因于代碼補丁(Patch)后,CSR 相似度檢索機制會被激活,為經驗重試尋找可借鑒的“良師”。

?檢索目標:以當前失敗實例的問題描述(issue)作為查詢條件,進行CSR相似度檢索,檢索到與當前失敗實例問題最相似的一個成功實例。

?檢索范圍:歷史上所有成功解決(即其生成的補丁通過了對應的生成的測試用例)的實例軌跡。

?檢索結果:成功實例對應的壓縮軌跡,即“成功范式”。

4)經驗重試

Patch Agent 在此階段會接受到其自身上次生成失敗 Patch 的壓縮軌跡以及通過 CSR 檢索到的解決相似問題的成功軌跡。然后進行一次有指導的、基于反思的學習與再生成。

?揚長:分析并借鑒成功軌跡中的優點,理解其解決問題的思路、關鍵代碼實現和工具調用策略。

?避短:反思并規劃自己失敗軌跡中的缺陷,找出導致錯誤的關鍵節點。

在完成上述分析后,Patch Agent 生成一個經過深度優化的新補丁,最后與原始的失敗補丁一起被提交給 Decision Agent 進行最終投票,以確保選出最優的補丁方案。

2. 輸入輸出信息

?軌跡壓縮:

?輸入信息——Raw Trajectory:第一次 Patch Agent 執行過程的完整、原始日志。其中包含了 Agent 的思維鏈、工具調用詳情等信息。

?輸出信息——Compressed Trajectory:一個結構化的、信息密集的摘要,提煉了 raw trajectory 中的核心邏輯和關鍵步驟。

?根因決策:

?輸入信息:

?Issue:原始的問題描述

?Test Cases:用于驗證的代碼測試用例

?Patch A:第一次生成的未能通過測試的代碼補丁

?Test Results:測試驗證結果

?輸出信息:

?Failure_Cause:一個明確標識失敗根源的分類標簽,其值為 “PATCH”(歸因于補?。?或 “TEST”(歸因于測試用例)

?CSR 相似度檢索

?輸入信息:

?Issue:當前失敗案例的問題描述。

?Trajectory Pool:一個包含所有歷史上成功解決問題的壓縮軌跡的集合。

?輸出信息:

?Original Trajectory:當前失敗實例所對應的生成 Patch 的壓縮軌跡。

?Similar Trajectory:與當前失敗實例語義最相似的成功實例所對應的生成 Patch 的壓縮軌跡。

?經驗重試

?輸入信息:

?Issue:原始的問題描述。

?Location:代碼倉庫的根目錄路徑。

?Original Trajectory:第一次生成的失敗補丁的壓縮軌跡。

?Similar Trajectory:通過 CSR Agent 檢索到的最相似的成功軌跡。

?輸出信息:

?Patch:經過辯證分析與經驗學習后重試生成的新補丁。

4.4 Decision Agent

1.功能介紹

Decision Agent 在整個工作流中扮演著關鍵的“仲裁者”角色,其核心職責是在系統通過重試機制產生兩個候選補?。≒atch)時,通過比較投票,從中選擇最優的解決方案。Decision Agent 的功能主要圍繞以下兩種核心重試場景展開:

?基礎重試(Base Retry)場景:在這種場景下,問題出在測試用例生成階段,導致 Patch Agent 的工作缺乏有效驗證。

?觸發條件:

?Testing Agent 達到交互輪次限制,未能生成任何測試用例。

?Testing Agent 生成的測試用例不符合規范,例如不滿足 1 個 FAIL TO PASS,2 個 PASS TO PASS 的要求,或經大模型判定失敗根源是測試用例未能準確表達問題意圖,而非補丁本身存在缺陷。

?執行流程:

?由于缺乏有效的測試基準,Patch Agent 的初次生成結果 Patch A 即便已完成也無法被驗證。因此,系統啟動基礎重試,在完全相同的輸入條件下,重新執行一次 Patch Agent,產生一個全新的 Patch B。

?此時,Decision Agent 會基于其對原始問題的理解,從代碼質量、邏輯清晰度、實現思路等方面綜合分析并比較這兩個補丁,最終票選出它認為更有可能解決問題的最優版本。

?經驗重試(Experience Retry):在這種場景下,測試用例本身是合格的,但 Patch Agent 的初次實現未能通過測試,暴露出邏輯缺陷。

?觸發條件:

?Testing Agent 成功生成了合規且有效的測試用例。

?Patch Agent 初次生成的補丁在執行這些測試用例時失敗。

?執行流程:

?首先,調用 CSR Agent,它會在知識庫中檢索與當前問題最相似且已經成功通過生成的測試套件的歷史案例。

?對應著提取出其 Patch Agent 生成 Patch 的壓縮軌跡(即關鍵的思考鏈與代碼實現步驟)。

?將獲取到的經驗信息與上次失?。ㄎ茨芡ㄟ^生成的測試套件)的 Patch 的壓縮軌跡傳遞給 Patch Agent 進行經驗重試。

?Patch Agent 被要求進行“辯證學習”:一方面反思并規避自己生成失敗補丁中的缺陷;另一方面分析并借鑒成功軌跡中的優點,從而生成一個經過深度優化的新補丁。

?Decision Agent 最終投票決定哪個補丁是最優的解決方案。

Decision Agent 通過對不同策略生成的候選方案進行嚴謹的比較與投票,確保了系統在面對挑戰時,能夠通過自我反思和外部經驗學習,不斷迭代出更優質的解決方案。

2. 輸入輸出定義

?輸入信息:

?issue(String):詳細描述軟件問題的文本

?Patch A(String):第一次調用 Patch Agent 生成的補丁

?Patch B (String):重試調用 Patch Agent 生成的補丁

?輸出信息:

?solution_index (String):被選中的補丁對應的索引

?basis_of_reasoning (String):一段對選擇該方案的推理和理由的簡明摘要,旨在體現一個嚴謹的投票分析過程

五、典型流程示例

如下圖,我們以 django-16454 實例為例詳細闡述一個完整的工作流程,整個過程通過四個核心階段,完成了真實代碼倉庫級問題的理解與解決。

?第一階段:自動化生成測試用例

?環境初始化:流程啟動后,首先從數據集中獲取指定實例( django-16454 )的詳細問題描述。隨即,系統在一個隔離的 Docker 容器中準備代碼倉庫,并自動檢測和安裝所有必需的測試依賴包,確保了一個純凈且一致的執行環境。

?測試策略規劃:基于問題描述,系統會深入分析代碼,定位潛在的錯誤根源,并檢索項目中是否已存在相關的測試代碼。此步驟旨在為后續生成結構化的測試用例提供充分的上下文信息。

?測試用例生成與預驗證:接下來,系統調用大語言模型,根據分析結果成功生成了 3 個測試用例:錯誤復現測試、回歸測試、邊緣場景測試。之后執行預驗證程序,該實例生成的測試用例符合兩個 PASS TO PASS,一個 FAIL TO PASS 的結構要求,成功通過了預驗證程序。

?第二階段:代碼補丁生成與驗證

?代碼勘察與錯誤重現 :系統利用 Bash 工具深入代碼庫,理解其整體架構,并再次確認錯誤的具體表現,為制定修復策略提供依據。

?通過深度分析,系統會借助 Sequential Thinking 等工具規劃出具體的修復方案。一旦方案確立,系統將利用 String Replace 工具精確地修改相關代碼,生成一個初始的代碼補?。≒atch)。

?測試驗證:該步驟使用第一階段生成的測試用例來檢驗該補丁的有效性。在此 django-16454 實例中,測試驗證宣告失敗:該補丁不僅未能解決核心問題,反而還導致了回歸測試失敗。

?第三階段:重試策略選擇與執行

?軌跡壓縮:首先會利用大模型對所有實例的 Patch 初次生成的軌跡進行壓縮,構建軌跡池作為后續流程的前置條件,區分哪些實例是可參考的成功的案例,哪些是失敗的案例。

?失敗歸因:分析失敗是因為測試用例的設計不當還是代碼補丁本身存在缺陷。在此案例中,系統判定第一階段生成的測試用例是準確的,但是生成的代碼補丁未能有效解決問題。

?相似案例檢索:由于確定是補丁的問題,系統會啟動 CSR 檢索機制,尋找一個與當前失敗案例高度相似,并且已經成功的補丁,并且獲取到其生成補丁的過程對應的壓縮軌跡。

?經驗重試:系統將檢索到的成功案例的解決策略與上次失敗的經驗進行整合,構建出一個信息更豐富、指導性更強的新提示,然后進行經驗重試,再次嘗試生成一個新的代碼補丁。

?第四階段:投票決策最優補丁

?系統對兩次生成的補丁進行評估和投票,在此案例中,第二次重試后的補丁被認為質量更優,因此被選定為最終的解決方案。

wKgZPGkIcuOAESlwABNDHE_eTHA319.jpg

結束語

本次技術報告系統梳理了JoyCode Agent在自動化軟件修復領域的核心架構、創新算法及工程優化路徑。從倉庫級別的深層代碼理解,到“補丁–單測協同生成與迭代驗證”閉環,再到多智能體協作、高效經驗遷移與精細化失敗歸因,JoyCode Agent在SWE-bench Verified全球測評中實現了高通過率與顯著的資源節約,充分展現了JoyCode團隊對AI軟件工程的深度思考與技術積累。

展望未來,我們將持續迭代JoyCode Agent的能力邊界,不斷優化多Agent協同、經驗復用機制和倉庫級修復方案,推動自動化修復的智能化與工程化落地。下階段,我們將進一步開源核心技術(目前正在走外部開源代碼審批流程),深化與社區開發者的交流合作,拓展更多真實場景下的應用實踐,助力企業和開發者以更低成本、更高質量應對復雜編碼挑戰。此外,我們還將陸續發布相關專利,持續提升技術創新能力,為行業發展注入更多動力。

當前時代,技術變革正在重塑軟件開發的每一個環節,選擇JoyCode,意味著選擇一個能夠與用戶共同成長、不斷進化的智能工具。我們始終堅持以用戶需求為導向,致力于打造高效、可靠的AI編程引擎,與廣大開發者攜手邁向智能編程時代的新高峰。

開源鏈接,歡迎收藏支持!

?https://github.com/jd-opensource/joycode-agent?

?https://gitee.com/JD-opensource/joycode-agent?

?審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    90

    文章

    3716

    瀏覽量

    97178
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    聞泰科技斬獲2026 IC風云年度車規芯片技術突破獎

    近日,2026半導體投資年會暨IC風云頒獎典禮舉行,聞泰科技憑借研發創新實力斬獲“年度車規芯片技術突破獎”,旗下1200V車規級碳化硅(SiC)MOSFET產品的核心競爭力獲行業權威認可。
    的頭像 發表于 01-14 15:38 ?484次閱讀

    汽車軟件質量躍遷的系統性路徑:基于ISO 26262標準的單元測試體系重構與中日實踐深度對比(2026學術研究報告

    約束 條款 核心要求 ASIL等級 認證機制 SWE.4.3 ASIL-D模塊需100% MC/DC覆蓋率 D(最高) DO-330工具認證報告 SWE.4.4 測試用例需追溯至需求ID與設計元素
    發表于 01-05 14:58

    pcb板最少幾塊?

    在電子制造領域,PCB(印刷電路板)板是產品從設計到量產的關鍵環節。其最小板數量、工藝流程、配套服務以及供應鏈整合能力,直接影響著研發效率與成本控制。本文將圍繞PCB板的最小數量要求展開,結合
    的頭像 發表于 12-26 17:57 ?108次閱讀
    pcb<b class='flag-5'>打</b>板最少幾塊?

    探索MOTIX? Motor Bench:電機控制評估的得力助手

    探索MOTIX? Motor Bench:電機控制評估的得力助手 在電子工程師的日常工作中,電機控制評估是一個重要的環節,而合適的工具能極大提升工作效率和準確性。今天,我們就來深入了解一款出色的電機
    的頭像 發表于 12-20 15:40 ?882次閱讀

    Joycode 無法跨項目讀取源碼怎么辦?MCP Easy Code Reader 幫你解決!

    本篇文章主要介紹 MCP Server Easy Code Reader ,它可以幫助你在使用 Joycode 編寫代碼時,根據調用鏈路將多個項目或 Jar 包中相關的代碼讀取到上下文中,供
    的頭像 發表于 11-19 15:50 ?1049次閱讀
    <b class='flag-5'>Joycode</b> 無法跨項目讀取源碼怎么辦?MCP Easy Code Reader 幫你解決!

    潤和軟件連續五年榮登IDC全球金融科技百強

    近日,2025 IDC全球金融科技排行(IDC FinTech Rankings Top 100)正式揭曉。江蘇潤和軟件股份有限公司(以下簡稱“潤和軟件”)憑借其深厚的金融行業積淀、領先的技術能力
    的頭像 發表于 09-22 10:24 ?811次閱讀

    開疆智能Profinet轉EtherCAT網關連接SWE減速機配置案例

    該案例是西門子PLC通過Profinet轉EtherCAT網關對SWE減速機進行操控。網關數據通過Profinet網絡發送到作為從站的網關,經轉換后作為EtherCAT主站發送到減速機。
    的頭像 發表于 08-29 17:44 ?797次閱讀
    開疆智能Profinet轉EtherCAT網關連接<b class='flag-5'>SWE</b>減速機配置案例

    華邦電子發布2024年可持續發展報告

    高溫霸熱搜,人們對氣候變化的關注也不斷升溫。而你知道嗎?小小的芯片也可能是「隱形加熱器」!根據 Greenpeace 發布的報告,預計到 2030 年,全球半導體制造業的電力消耗量將達到 237 太瓦時(TWh),幾乎相當于澳大利亞 2021 年的電力消耗總量!
    的頭像 發表于 08-13 10:36 ?996次閱讀

    委托測試報告和型式檢驗報告什么區別

    機構進行的測試,報告結果證明設備符合特定的技術標準或安全要求。通常,委托測試報告是在產品設計、開發、驗證階段,或為了符合某些認證(如CE認證、UL認證、RoHS合
    的頭像 發表于 07-03 11:43 ?2175次閱讀
    委托測試<b class='flag-5'>報告</b>和型式檢驗<b class='flag-5'>報告</b>什么區別

    網絡電話配線架怎么

    網絡電話配線架的線方法主要取決于所使用的配線架類型,常見的有110配線架和網絡配線架,以下是具體的線步驟和注意事項: 一、110配線架線方法 固定配線架:將110配線架用螺絲釘固定在機架
    的頭像 發表于 06-10 10:13 ?1411次閱讀

    網絡配線架線操作的技術要點

    網絡配線架線操作是網絡布線工程中的關鍵環節,直接影響網絡的穩定性和傳輸質量。以下是線操作的技術要點,涵蓋前期準備、線流程、質量檢查及維護注意事項,以邏輯清晰、重點突出的方式呈現:
    的頭像 發表于 06-06 10:28 ?1619次閱讀
    網絡配線架<b class='flag-5'>打</b>線操作的<b class='flag-5'>技術</b>要點

    傳音控股入選2025品牌全球傳播力

    近日,2025品牌全球傳播力大會在上海舉行,新華社在會上發布了《品牌全球傳播力研究報告(2025)》。傳音控股憑借突出的全球品牌影響力和本地化戰略成功入選“2025品牌全球傳播力總”,排名第22位。
    的頭像 發表于 05-21 11:34 ?944次閱讀

    奇瑞汽車入選2025年《財富》中國ESG影響力

    近日,在《財富》發布的“2025年中國ESG影響力”中,奇瑞汽車股份有限公司作為中國汽車制造行業的代表性企業,憑借自身ESG領域的卓越表現入,這也是奇瑞汽車連續第二年入《財富》中國ESG影響力
    的頭像 發表于 05-20 14:40 ?848次閱讀

    配線架好還是模塊好

    配線架和模塊化配線架各有優劣,選擇需根據具體需求和場景決定。以下是對兩者的詳細比較: 免配線架的優勢 操作便捷:免配線架無需使用網線鉗壓接,操作快捷方便。即使打錯線,也可以移除重新
    的頭像 發表于 05-12 10:19 ?979次閱讀

    什么是MSDS報告 來看最全指南

    什么是MSDS報告? MSDS(Material Safety Data Sheet)即化學品安全技術說明書,也叫物質安全數據表,是一份關于化學品燃爆、毒性和環境危害等特性的綜合性文件。它不僅是企業
    發表于 04-27 09:25