![]()
新智元報(bào)道
![]()
【新智元導(dǎo)讀】DeNovoSWE是一個(gè)用于訓(xùn)練代碼智能體從零生成完整倉(cāng)庫(kù)的數(shù)據(jù)集,包含4818個(gè)真實(shí)任務(wù)實(shí)例。它通過(guò)結(jié)構(gòu)化文檔和嚴(yán)格驗(yàn)證機(jī)制,幫助智能體掌握復(fù)雜系統(tǒng)構(gòu)建能力,而不僅僅是修復(fù)代碼。這為代碼智能體邁向更高階的軟件工程任務(wù)提供了關(guān)鍵支持。
隨著LLM Code Agent能力的不斷提升,越來(lái)越多的研究者意識(shí)到現(xiàn)在是時(shí)候邁向下一個(gè)階段更接近真實(shí)場(chǎng)景需求的長(zhǎng)程任務(wù)了。于是涌現(xiàn)出了一些長(zhǎng)程任務(wù)評(píng)測(cè)的Benchmark比如NL2RepoBench以及BeyondSWE等等。大家對(duì)Code Agent預(yù)期承擔(dān)的角色逐漸從倉(cāng)庫(kù)維護(hù)者變成了架構(gòu)師,能夠做規(guī)劃完成整個(gè)倉(cāng)庫(kù)的代碼的長(zhǎng)程任務(wù)。
近日,中國(guó)人民大學(xué)高瓴人工智能學(xué)院完成相關(guān)研究,重磅發(fā)布DeNovoSWE數(shù)據(jù)集,專(zhuān)注于長(zhǎng)程軟件工程任務(wù),尤其是倉(cāng)庫(kù)級(jí)別代碼從零生成任務(wù)。
![]()
論文鏈接:https://arxiv.org/pdf/2606.10728
倉(cāng)庫(kù)鏈接:https://github.com/AweAI-Team/DeNovoSWE
數(shù)據(jù)鏈接:https://huggingface.co/collections/AweAI-Team/denovoswe
通過(guò)Divide & Conquer與Critic & Repair機(jī)制構(gòu)造高質(zhì)量數(shù)據(jù)集,并且成功實(shí)現(xiàn)長(zhǎng)程SWE任務(wù)的Scaling,構(gòu)建起包含4,818真實(shí)數(shù)據(jù)的開(kāi)源高質(zhì)量長(zhǎng)程SWE任務(wù)數(shù)據(jù)集——這一成果為 Code Agent 長(zhǎng)程能力訓(xùn)練提供了大規(guī)模數(shù)據(jù),大幅提升Code Agent長(zhǎng)程任務(wù)能力。
![]()
論文中也提供了根據(jù)題目難度打分過(guò)濾的手段,有效緩解了困難題目比例與軌跡質(zhì)量的權(quán)衡問(wèn)題。
![]()
實(shí)驗(yàn)顯示,基于DeNovoSWE訓(xùn)練的Qwen3-30B-A3B-Instruct在BeyondSWE-Doc2Repo上從5.8%提升到47.2%,在 NL2RepoBench 上從 4.3% 提升到 23.0%,展示了長(zhǎng)程數(shù)據(jù)對(duì)倉(cāng)庫(kù)級(jí)代碼生成能力的顯著提升。
從一份文檔開(kāi)始
重建整個(gè)倉(cāng)庫(kù)
過(guò)去一年,隨著像Scale-SWE等工作的大規(guī)模SWE數(shù)據(jù)的scaling,代碼智能體在 SWE-bench 這類(lèi)真實(shí)軟件工程任務(wù)上快速進(jìn)步。但當(dāng)模型越來(lái)越擅長(zhǎng)「修一個(gè) issue」「改幾行 bug」之后,一個(gè)更關(guān)鍵的問(wèn)題開(kāi)始浮現(xiàn):智能體真的具備長(zhǎng)程軟件工程能力了嗎?從BeyondSWE-Doc2Repo以及NL2RepoBench前沿模型的效果來(lái)看,效果并不理想。
真實(shí)世界的軟件開(kāi)發(fā),往往不是改一個(gè)函數(shù)、補(bǔ)一個(gè)條件判斷,而是理解需求、規(guī)劃架構(gòu)、創(chuàng)建文件、設(shè)計(jì) API、處理依賴(lài)、打通模塊,并最終讓整個(gè)倉(cāng)庫(kù)在測(cè)試中跑通。
換句話說(shuō),困難的是 long-horizon repository-level generation:從一份任務(wù)文檔出發(fā),生成一個(gè)完整、可執(zhí)行、可驗(yàn)證的軟件倉(cāng)庫(kù)。這正是 DeNovoSWE 想要解決的問(wèn)題。
高質(zhì)量的「從頭生成倉(cāng)庫(kù)」任務(wù)文檔
在document-to-repository generation中,文檔不只是README,也不是簡(jiǎn)單的API列表。它本質(zhì)上是智能體重建整個(gè)倉(cāng)庫(kù)的唯一任務(wù)入口。
一份高質(zhì)量的任務(wù)文檔,至少需要滿足兩個(gè)核心標(biāo)準(zhǔn)。
第一,它必須是well-organized的。
倉(cāng)庫(kù)級(jí)任務(wù)天然復(fù)雜,包含多個(gè)模塊、接口、配置、數(shù)據(jù)結(jié)構(gòu)和交互流程。如果文檔只是把函數(shù)說(shuō)明堆在一起,智能體很容易迷失在碎片信息中。因此,文檔應(yīng)該先給出清晰的倉(cāng)庫(kù)總覽,再按照能力或工作流拆分章節(jié),讓每一部分都對(duì)應(yīng)明確的功能邊界。
第二,它必須從可靠evaluation的角度出發(fā)。
文檔既不能太少,否則任務(wù)變成欠定義問(wèn)題,可能使得模型需要靠漫無(wú)邊際猜才能通過(guò)evaluation;也不能太多,否則直接泄漏實(shí)現(xiàn)細(xì)節(jié),讓任務(wù)失去挑戰(zhàn)。
真正高質(zhì)量的文檔應(yīng)該描述evaluation所依賴(lài)的關(guān)鍵行為:包括import path、公開(kāi) API、輸入輸出、默認(rèn)參數(shù)、異常行為、配置項(xiàng)、模式字符串、返回字段等,也描述出大致需要完成的功能。也就是說(shuō),文檔要足以讓智能體復(fù)現(xiàn)可測(cè)試行為,但不能變成實(shí)現(xiàn)代碼的拷貝。
這也是DeNovoSWE的核心思想:讓文檔既可讀、可實(shí)現(xiàn),又可驗(yàn)證。
DeNovoSWE方法
DeNovoSWE 將「從文檔生成完整倉(cāng)庫(kù)」構(gòu)造成一個(gè)大規(guī)模、可驗(yàn)證的長(zhǎng)程軟件工程任務(wù)。它不是人工手寫(xiě)文檔,而是通過(guò)一個(gè)sandboxed multi-agent workflow 自動(dòng)構(gòu)建高質(zhì)量實(shí)例。整個(gè)方法可以概括為兩步:Divide和Conquer。
在Divide階段,系統(tǒng)首先分析目標(biāo)倉(cāng)庫(kù),將其拆解為多個(gè)repository capabilities。
每個(gè)capability對(duì)應(yīng)倉(cāng)庫(kù)中的一個(gè)核心能力或工作流,例如認(rèn)證與連接、數(shù)據(jù)讀寫(xiě)、批處理、導(dǎo)出流程等。這樣,原本龐大的倉(cāng)庫(kù)生成問(wèn)題被拆成若干結(jié)構(gòu)清晰的文檔章節(jié)。
同時(shí),DeNovoSWE會(huì)運(yùn)行原始單元測(cè)試并收集執(zhí)行trace,識(shí)別哪些函數(shù)、類(lèi)和接口真正影響 evaluation,進(jìn)一步區(qū)分direct components、core indirect components和non-core indirect components:直接被測(cè)試調(diào)用的接口必須詳細(xì)記錄;會(huì)影響可觀察行為的核心間接組件也需要覆蓋;而非核心內(nèi)部實(shí)現(xiàn)則可以留給智能體自由發(fā)揮。
在Conquer階段,DeNovoSWE 使用 Draft-Critic-Repair 機(jī)制逐能力生成文檔。Draft agent 先寫(xiě)出初稿;Critic agent檢查文檔是否遺漏關(guān)鍵 API、行為契約或結(jié)構(gòu)信息;Repair agent 再根據(jù)反饋修復(fù)文檔。這個(gè)循環(huán)不斷迭代,直到每個(gè)能力章節(jié)足夠清晰、完整、與 evaluation 對(duì)齊。
最終,不同能力文檔會(huì)被合并成一份完整的任務(wù)文檔,作為智能體從零生成倉(cāng)庫(kù)的唯一依據(jù)。
難度:為什么這是長(zhǎng)程任務(wù)?
DeNovoSWE的任務(wù)難度來(lái)自一個(gè)根本變化:它不再是issue-level fixing,而是whole-repository generation。
在傳統(tǒng) SWE 任務(wù)中,智能體通常面對(duì)的是一個(gè)已有倉(cāng)庫(kù),只需要定位 bug、修改局部代碼、通過(guò)測(cè)試即可。
在 DeNovoSWE 中,智能體面對(duì)的是一個(gè)被清理后的環(huán)境:原始源碼和測(cè)試被移除,git 歷史被重置,緩存、site-packages 殘留、pip wheel、臨時(shí)編譯產(chǎn)物等潛在泄漏渠道也會(huì)被清除。這意味著智能體必須真正依賴(lài)文檔來(lái)完成整個(gè)倉(cāng)庫(kù)的重建。它需要規(guī)劃項(xiàng)目結(jié)構(gòu),創(chuàng)建模塊文件,定義公開(kāi)接口,實(shí)現(xiàn)跨文件交互,處理依賴(lài)和配置,并在多輪編輯與測(cè)試反饋中不斷修復(fù)錯(cuò)誤。
任何一個(gè) API 簽名、返回字段、異常類(lèi)型或默認(rèn)行為的偏差,都可能導(dǎo)致測(cè)試失敗。錯(cuò)誤還會(huì)在長(zhǎng)程過(guò)程中累積:一個(gè)早期設(shè)計(jì)不合理的模塊,可能影響后續(xù)多個(gè)文件和調(diào)用鏈。
為了進(jìn)一步處理不同倉(cāng)庫(kù)難度差異,DeNovoSWE 還提出了 difficulty-aware trajectory filtering。簡(jiǎn)單地說(shuō),容易任務(wù)應(yīng)該要求更高通過(guò)率,困難任務(wù)則不能因?yàn)闆](méi)有達(dá)到完美分?jǐn)?shù)就被全部丟棄。DeNovoSWE 根據(jù)結(jié)構(gòu)復(fù)雜度和 LLM 難度判斷,為不同難度區(qū)間設(shè)置不同過(guò)濾閾值,從而在質(zhì)量和多樣性之間取得平衡。
這對(duì)于長(zhǎng)程任務(wù)尤其重要:越復(fù)雜的倉(cāng)庫(kù),越難一次性完全通過(guò)所有測(cè)試,但其中的困難倉(cāng)庫(kù)、低分、部分成功的軌跡仍然包含寶貴的長(zhǎng)程規(guī)劃與實(shí)現(xiàn)能力。
![]()
實(shí)驗(yàn)結(jié)果
DeNovoSWE最終構(gòu)建了4818個(gè)高質(zhì)量document-to-repository任務(wù)實(shí)例。是可執(zhí)行、可評(píng)估、可訓(xùn)練的長(zhǎng)程軟件工程環(huán)境。
![]()
![]()
實(shí)驗(yàn)結(jié)果顯示,DeNovoSWE對(duì)模型的長(zhǎng)程倉(cāng)庫(kù)生成能力帶來(lái)了顯著提升。在Qwen3-30B-A3B-Instruct上,原始模型在BeyondSWE-Doc2Repo上只有5.8%,在NL2RepoBench上只有4.3%。使用常規(guī)issue-level SWE數(shù)據(jù)訓(xùn)練的Scale-SWE-Agent可以提升到29.2%和18.3%,說(shuō)明普通 SWE 數(shù)據(jù)確實(shí)有遷移效果。但當(dāng)模型使用 DeNovoSWE 訓(xùn)練后,性能進(jìn)一步提升到 47.2% 和 23.0%。
這說(shuō)明,面向「修 bug」的數(shù)據(jù)并不能完全替代面向「生成完整倉(cāng)庫(kù)」的長(zhǎng)程數(shù)據(jù)。想讓智能體真正學(xué)會(huì)repository-level engineering,需要專(zhuān)門(mén)面向長(zhǎng)程任務(wù)構(gòu)建訓(xùn)練環(huán)境。
在更強(qiáng)的Qwen3.5-35B-A3B backbone上,DeNovoSWE同樣帶來(lái)穩(wěn)定收益:BeyondSWE-Doc2Repo從43.8%提升到50.0%,NL2RepoBench從23.5%提升到27.1%。這進(jìn)一步說(shuō)明DeNovoSWE的收益不是偶然適配某一個(gè)模型,而是來(lái)自高質(zhì)量長(zhǎng)程數(shù)據(jù)本身。
結(jié)語(yǔ)
代碼智能體的下一階段,不只是更快地修復(fù)單個(gè) issue,而是能夠理解文檔、規(guī)劃架構(gòu)、組織模塊、實(shí)現(xiàn)接口,并最終生成一個(gè)完整可運(yùn)行的軟件倉(cāng)庫(kù)。
DeNovoSWE 將這個(gè)目標(biāo)系統(tǒng)化地構(gòu)造成了可訓(xùn)練、可驗(yàn)證、可擴(kuò)展的數(shù)據(jù)集。它回答了一個(gè)關(guān)鍵問(wèn)題:什么樣的數(shù)據(jù),才能真正訓(xùn)練出具備長(zhǎng)程軟件工程能力的智能體?
答案不是更多碎片化代碼,也不是更簡(jiǎn)單的題目,而是高質(zhì)量、結(jié)構(gòu)化、evaluation-aligned、anti-leakage 的全倉(cāng)庫(kù)生成任務(wù)。
從一份文檔開(kāi)始,重建整個(gè)repository。這是長(zhǎng)程代碼智能體需要跨越的門(mén)檻。
參考資料:
https://arxiv.org/pdf/2606.10728
編輯:LRST
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
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.