精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

解決真實GitHub Issue能力登頂,字節豆包MarsCode團隊分享背后工程實踐,踩過的坑也分享了

人工智能 新聞
SWE-Bench,一個由普林斯頓大學提出的極具挑戰性的Benchmark,近期受到工業界、學術界和創業團隊的廣泛關注。

解決真實GitHub Issue的基準測試,字節家的豆包MarsCode Agent悄悄登頂了。

圖片

SWE-Bench,一個由普林斯頓大學提出的極具挑戰性的Benchmark,近期受到工業界、學術界和創業團隊的廣泛關注。

在其子集SWE-Bench Lite排行榜上,豆包MarsCode Agent近期沖上第一。

雖然這是面向所有大模型解決方案的評測,但現在排名靠前的部分已基本被AI Agent占領。

AI Agent即能夠感知外部環境、操作工具并具有一定自主決策能力的智能體,受到了越來越多的研究關注。

現在,豆包MarsCode Agent團隊分享了在軟件工程領域進行了一系列關于AI Agent應用的探索和嘗試

通過構建Agent框架并為其提供代碼檢索、調試和編輯的交互接口和工具,使得Agent有可能接管部分軟件工程開發任務。

  • 在Agent框架方面,豆包MarsCode開發了多Agent協作框架,根據所要解決軟工問題類型,分配靜態或動態求解管道,從而靈活適配多樣的軟件工程問題;
  • 在代碼檢索能力方面,豆包MarsCode結合代碼知識圖譜和語言服務,為Agent提供全面的代碼實體召回、關系召回、定義與引用跳轉等能力,從而使Agent具備人類開發者類似的代碼瀏覽、分析過程;
  • 在代碼編輯方面,豆包MarsCode采用Conflict形式的代碼編輯描述和靜態語法檢查,能夠準確生成格式正確的代碼編輯補??;
  • 在軟件動態調試方面,豆包MarsCode基于Docker的容器化沙箱環境,讓Agent具備了人類開發者的調試能力,比如缺陷復現、添加日志和運行測試框架等。

01多Agent協作框架

開發者在日常的開發工作中常常會遇到各種問題,例如:

  • 運行測試用例報錯,有錯誤或異常堆棧等,這可能是由于代碼邏輯錯誤或測試斷言失敗導致的問題;
  • 代碼輸出結果不符合預期,沒有顯式的報錯信息,但有明確的輸出結果預期;
  • 需要對現有功能進行擴展或增加新功能,有明確的開發需求及預期結果,但不知道如何實現和在哪實現;
  • 需要進行簡單的缺陷修復,有大致的修復思路,但不熟悉語言特性需要協助。

上述多樣化的程序修復和開發任務通常無法用一種固定的模式來進行處理。

例如,一些簡單的缺陷修復或功能擴展僅需對代碼進行review即可完成;而較深的異常堆?;驈碗s的邏輯錯誤僅憑閱讀代碼往往很難發現問題所在,需要通過動態執行代碼并追蹤相關變量才能暴露出相關缺陷,從而對其進行修復。

因此,團隊采用了多Agent協作的框架來適應不同的開發場景。如下圖所示,多Agent協作框架中包含以下7類角色:

  • Searcher:利用CKG、LSP等代碼檢索工具收集與當前問題相關的repo內代碼片段;
  • Manager:根據收集到的相關代碼片段對問題進行定性和分流,將問題場景分為動態調試修復和靜態修復兩類;
  • Reproducer:在動態調試修復場景下,根據相關代碼和問題描述編寫復現腳本,并在沙箱中對腳本進行動態調試以確認復現成功;
  • Programmer:根據問題描述和相關代碼進行編輯代碼,并結合Tester的測試結果進行多輪迭代修改;
  • Tester:根據問題復現腳本,對當前代碼版本進行動態驗證,檢查問題是否得到解決;
  • Planner:在靜態修復場景下,根據問題和相關代碼,制定求解計劃,規劃需要修改哪些代碼片段及其修改方式;
  • SymbolEditor:根據修改計劃,對所負責的代碼Symbol進行修改,返回修改補丁。

圖片

團隊為不同的Agent配備了相應的工具集以支撐其完成指定任務,各Agent配備的工具集如下表所示。

值得注意的是,團隊并沒有令每個Agent都擁有所有工具的使用權,而是嘗試限制各個Agent的能力和職責范圍,從而降低單個Agent解決當前環節問題的難度,以提高任務執行的穩定性和輸出結果的質量。

圖片

在動態調試修復場景下,各Agent的協作求解流程如下:

  • 由Reproducer根據描述對問題進行復現,生成與問題描述相符的復現腳本;
  • 將復現腳本提供給Tester進行驗證,將復現腳本運行得到的異常堆棧和其他輸出信息提供給Programmer進行修復;
  • Programmer完成修復后向Tester提出測試請求;
  • Tester再基于復現腳本進行驗證,并判斷問題是否解決:
  • 若問題已解決,則通過diff工具獲取當前代碼變更作為該問題的修復方案,動態調試結束;
  • 若仍未解決,則再次將復現過程中異常堆棧和其他輸出信息返回給Programmer;
  • Programmer可根據Tester的報錯信息,選擇繼續修改,或重置repo放棄過往編輯,重新進行修改。直至提交測試給Tester驗證通過為止。

在動態過程中,團隊通過在Docker容器中搭建一個運行環境沙箱,以實現動態調試的問題復現和運行驗證。

在靜態修復場景下,由于無法直接對問題進行復現和動態驗證,需要制定針對該問題的靜態修復方案。過程如下:

  • 由Planner根據檢索到的相關代碼片段,收集更多代碼上下文,制定修改方案,修改方案以代碼符號(Symbol)為單位組成,每條修改意見包含需要修改代碼所在的Symbol名(類、函數、Top-Level變量等)、修改處所在文件、該Symbol的代碼行號范圍、修改描述;
  • 在生成修改方案的過程中,團隊采用了一些軌跡采樣和搜索的策略,使生成的plan有較高的準確性;
  • 針對修改方案中的每一個Symbol,實例化出一個Symbol Editor,用于完成改Symbol的修改計劃,每個Symbol Editor完成后通過git commit提交修改;
  • 完成所有Symbol的修改后,將當前代碼狀態與Base commit進行差異對照,生成最終補丁作為該問題的修復方案

02代碼檢索

團隊為豆包MarsCode Agent提供了多種可跨語言適配的代碼檢索工具,以適應各種軟件工程開發場景下的代碼檢索需求。

代碼知識圖譜(Code Knowledge Graph)

代碼知識圖譜是將代碼元素、屬性以及元素之間的關系表示為圖結構,從而幫助Agent更好地理解和管理大規模的代碼庫。

在這種圖結構中,頂點代表代碼的實體(如函數、變量、類等),邊則代表實體之間的關系(如函數調用、變量引用、類的繼承關系等)。通過這種方式,代碼知識圖譜可以為代碼庫提供更豐富且結構化的信息。

團隊通過程序分析的技術,將倉庫中的代碼,文檔信息進行分析組織,生成一個以變量,函數,類,文件等代碼語義節點為實體,文件結構關系、函數調用關系,符號索引關系為邊的多向圖。構成一張融合了代碼,文檔,倉庫信息等多數據源的代碼知識圖譜。

在給定的代碼庫中,每個節點和邊都通過唯一標識符進行標記,確保每個代碼實體在整個代碼庫中都是唯一的。

在這種設計中,代碼知識圖譜將使用圖屬性來存儲代碼實體及其依賴關系。每個節點記錄其在代碼庫中的位置、類型和名稱。每條邊標識兩個節點之間的關系類型,以及關系在代碼中的位置。

比如對下面這樣一段代碼:

// file: main/fileA.go
package main


import (
    "ckg-prompt/main/cmd/pkg_b"
    "fmt"
)


// StructA struct
type StructA struct{}


// FunctionA method for StructA
func (a *StructA) FunctionA() pkg_b.StructB {
    x := pkg_b.NewStructB() // Instantiate StructB
    return x
}


// XFunction function
func XFunction() {
    x := pkg_b.NewStructB() // Instantiate StructB
    x.FunctionB() // Calls FunctionB
}

它的代碼知識圖譜如下圖所示:

圖片圖1代碼知識圖譜元素構成

在構建完成代碼知識圖譜后,Agent的代碼檢索請求將通過下圖中的管道進行處理并實現召回。

  • 將Agent的問題與代碼語句(如有),通過模型進行實體識別,得到實體mention+類型,然后在知識圖譜中進行SQL搜索查詢,查詢結果標記為候選實體列表1;
  • 將Agent的問題與代碼語句(如有),進行embedding,在知識圖譜中進行embedding相似度匹配,取相似度最高的一批實體,為候選實體列表2;
  • 將Agent的問題直接通過關鍵詞識別構造查詢語句,在知識圖譜中進行SQL搜索查詢,查詢結果標記為候選實體列表3。

最后將候選實體列表1 & 2 & 3進行合并,通過精排模型,得到最終實體列表X,返回給Agent,完成代碼檢索。

圖片圖2代碼知識圖譜召回流程

在豆包MarsCode Agent中,代碼知識圖譜工具能夠實現廣泛、全面的代碼檢索,為Agent提供了repo內知識問答的能力。目前,代碼知識圖譜支持包含C、C#、CPP、Java、Kotlin、Javascript、Typescript、TSX、Rust、Golang、Python、Lua在內的12種常用編程語言。

語言服務器協議(LanguageServerProtocol)

代碼知識圖譜能夠應對大部分目標工程下的類、函數定義與引用的檢索需求,但仍存在以下盲區:

  • 代碼知識圖譜是對目標工程進行構建,而目標工程外(如標準庫、第三方庫等)的類、函數、變量的定義和引用是無法通過代碼知識圖譜被準確召回的;
  • 對于庫中存在多個重名實體的情況,LSP相比代碼知識圖譜能夠更準確地跳轉到相關類或函數定義,避免召回和Rerank過程帶來的遺漏或冗余;

為解決上述問題,豆包MarsCode Agent利用通用的語言服務協議(Language Server Protocol)實現用戶機器上全局、精確的代碼召回。

語言服務器協議是一種由Microsoft開發的協議,廣泛適配包含編程語言、標記語言、多種工具和框架在內的語法體系,在IDE場景下具有很好的通用性。豆包MarsCode Agent調用語言服務器協議實現代碼召回的過程如下圖所示:

圖片圖3語言服務的召回流程

Agent調用語言服務器進行代碼召回的過程與開發者在IDE中使用“Ctrl+左鍵”點擊某個標識符進行代碼跳轉的過程是一致的,但由于Agent的數字定位和計算能力較弱,團隊增加了模糊定位功能以進一步強化Agent使用LSP工具的能力:

  • 根據Agent的提供的文件名和行號,在該行內尋找標識符并計算列號,構成LSP請求;
  • 根據Agent的提供的文件名和行號,在該行附近尋找標識符并計算列號,構成LSP請求;
  • 根據Agent的提供的標識符和行號,在Agent打開和瀏覽過的文件中尋找標識符,并構成LSP請求;

這三個服務的優先級自上而下由高到低,使用第一個成功得到響應的LSP請求結果作為工具的輸出。

其他通用檢索能力

除LSP和CKG外,團隊將通用的項目內文件檢索(find file)、項目或文件內標識符檢索(grep)等能力在豆包MarsCode Agent框架下進行統一的封裝,從而為Agent提供調用風格一致的代碼檢索工具庫。

03代碼編輯

代碼編輯描述

在團隊對研發域AI Agent的長期探索過程中,嘗試了各種使用LLM進行代碼編輯描述的方式,發現目前LLM的代碼修改能力普遍較弱。如下是團隊曾經探索(失?。┻^的代碼編輯方案:

  • 要求Agent生成Unified diff格式的代碼變更描述;

Unified diff格式的變更是將原始文件和修改后文件以一種統一的方式展示出來,比如:

Unified diff的代碼編輯描述有著非常嚴格的格式要求,而且LLM很難正確計算變更的代碼行號增量,從而導致生成的Unified diff無法成功apply。

  • 要求Agent提供代碼變更的起始行號、終止行號和替換的代碼片段;

團隊在所有的代碼檢索的結果中都對代碼添加了行號,希望Agent能正確填寫修改范圍并完成修改,然而即便是GPT-4,也不能完全正確地提供需要修改的代碼范圍,時常會出現1~2行的偏移,從而導致修改后出現重復行或誤刪;

-對整個文件進行重寫;

為LLM提供整個文件的內容和修改描述,要求LLM輸出修改后的完整文件內容。這種方式能夠避免LLM進行行號的計算,但顯然每次代碼編輯都使用閉源模型生成整個文件是非常不經濟的,且在一些長文件中幾乎不可用。團隊也正在嘗試通過SFT獲取一個專門的代碼編輯模型實現全文重寫的能力,但這是一個長期計劃。

經過大量的探索和嘗試,團隊認為LLM的代碼編輯描述需要具備以下特點:

  • 不需要嚴格的格式校驗,編輯描述在經過處理和解析后能夠穩定apply;
  • 不需要提供行號范圍,或進行行號計算,LLM在這方面的能力很不穩定;
  • 出于token成本和時間成本的考慮,編輯描述要簡明,不包含冗余信息。

基于此,團隊注意到Aider的代碼變更方式,受此啟發并開發了團隊目前認為相對穩定的代碼編輯:豆包MarsCode AutoDiff。

(https://aider.chat/docs/benchmarks.html#the-benchmark)

AutoDiff的代碼編輯描述與git沖突的表現方式是類似的,Agent需要在Conflict標識柵欄中提供需要編輯的文件路徑、代碼原文、替換代碼。

AutoDiff會對該代碼編輯塊進行解析,嘗試在給定文件中匹配與LLM提供代碼原文片段相似度最高的片段,并用LLM提供的替換代碼進行替換操作,隨后結合修改文件的上下文對替換代碼的縮進進行自動調整。

最后修改前后的文件進行差異對照從而獲取Unified diff格式的變更文件。上述修改是模擬進行的,并未實際在用戶設備上落盤,只是為了獲取Unified diff格式的變更文件,最終代碼修改需要經過后續的靜態代碼診斷。

```diffs
/playground/swe_ws/testbed/matplotlib__matplotlib__3.6/lib/matplotlib/figure.py
<<<<<<< SEARCH
        elif constrained_layout is not None:
=======
        elif constrained_layout in [None, False]:
>>>>>>> REPLACE


<<<<<<< SEARCH
        else:
=======
        elif constrained_layout in [None, False]:
            self.set_layout_engine(layout='none')
>>>>>>> REPLACE

靜態代碼診斷

盡管AutoDiff能夠正確完成大部分的代碼編輯請求,但仍然會存在諸如類型錯誤、變量未定義、縮進調整錯誤、括號沒有正確閉合等LLM常見的代碼編輯語法問題,針對這些問題,團隊使用語言服務器協議對AutoDiff修改前后的文件進行靜態代碼診斷,過程如下:

圖片

△圖4代碼編輯過程中的靜態代碼診斷

  • 對AutoDiff生成的Unified diff格式的代碼編輯補丁在原文件上進行apply,得到修改后的文件內容;
  • 對原文件內容進行LSP靜態代碼診斷,保存診斷結果;
  • 對修改后文件內容進行LSP靜態代碼診斷,保存診斷結果;
  • 對兩次代碼診斷結果進行對照,檢查Agent的診斷結果是否引入新的靜態錯誤(只關注Fatal和Error級別的診斷結果);
  • 如果未引入新錯誤,則完成修改并向Agent返回修改成功的消息和相應的Unified diff描述;
  • 如果引入了新錯誤,則將相關診斷信息返回給Agent進行修改和調整。

04 實驗結果分析

團隊在SWE-bench Lite數據集上對豆包MarsCode Agent的性能進行了詳細評測。

SWE-bench是由普林斯頓大學提出了一個極具挑戰性的針對LLM解決程序邏輯bug的benchmark。該數據集整理了真實的來自Github的12個工業級Python代碼大倉中的2294個issue問題。

給定一個代碼庫以及對要解決issue問題描述,Agent需要從代碼倉中檢索并編輯代碼,最終提交能解決相關問題的代碼補丁。

在SWE-bench中解決問題通常需要同時理解和協調多個函數、類甚至文件之間的更改,要求模型與執行環境交互,處理極長的上下文并執行比傳統代碼生成更復雜的推理。作者評估表明,Claude 2和GPT-4僅能解決其中4.8%和1.7%的實例。

圖片

SWE-bench中測試實例在各repo中的分布

圖片不同代碼倉樣本的求解難度也參差不齊

由于SWE-bench的難度很大,在后續的研究中,開發者們發現在SWE-bench的2294個實例上進行評測是一個時間與Token投入巨大且令人沮喪的過程,無法驗證短期內的進展。

所以SWE-bench作者從原本的數據集中抽取了300個Issue描述完整、求解邏輯清晰、相對易于解決的300個實例,組成SWE-bench Lite數據集。目前,SWE-bench Lite數據集已經成為Agent解決軟件工程問題水平的評測標桿,已有20多家企業與研究組織參與了SWE-bench Lite評測和提交中。

豆包MarsCode Agent在最新的SWE-bench Lite評測實驗中,成功求解了其中的118個實例,求解率達到39.33%。

下表展示了評測實驗結果的詳細分析:

圖片

豆包MarsCode Agent的錯誤定位能力

團隊對目前SWE-bench Lite排行榜上排名前三的工具(CodeStory Aide,Honeycomb和AbanteAI MentaBot)進行了錯誤定位能力評估。對于一個patch,如果它修改的文件和gold patch所修改的文件相同,則認為錯誤定位正確,否則錯誤。分析結果如圖6所示:

豆包MarsCode Agent通過代碼知識圖譜、語言服務等代碼檢索工具,在300個實例中成功定位到了245個實例的待修改文件(成功率81.7%),而CodeStory Aide為221(成功率73.7%),Honeycomb為213(成功率71%),AbanteAIMentatBot為211(成功率70.3%)。從代碼檢索和錯誤定位能力看,豆包MarsCode Agent處于領先地位。

圖片

△圖6各方案在成功解決數量、成功定位上的對比

豆包MarsCode Agent動態靜態求解的實例分布

團隊分析了實驗中靜態和動態求解的實例分布,如下圖所示,在所有實例中,有104/300=34.67%的實例被PlannerAgent認為適合動態求解,196/300=65.3%的實例被認為適合進行靜態求解,通過動態方式成功求解53個實例,求解率為51%,靜態方式成功求解65個實例,求解率為33%。由于動態調試有缺陷復現和和驗證的過程,表現在求解率上略高于靜態修復。在被求解的118個實例中,有44.9%的實例是由動態方式修復,55.1%的實例由靜態方式修復。

圖片

△圖8豆包MarsCode Agent實驗中靜態與動態求解分布

05未來展望

豆包MarsCode Agent團隊致力于AI Agent方法在軟件工程領域的落地和應用。在未來將持續關注以下優化方向:

-降低大語言模型調用成本,推廣豆包MarsCode Agent在更多場景的落地,為更多用戶提供高質量智能軟件開發服務;
-加強用戶與Agent的協作和交互,提升用戶對Agent作業過程的掌控感;
-支持Agent對用戶工作區的動態調試,同時避免用戶環境污染等問題;
-進一步提升文件錯誤定位準確率和代碼修改正確率。

歡迎大家通過論文了解更多信息:
https://arxiv.org/abs/2409.00899

責任編輯:張燕妮 來源: 量子位
相關推薦

2024-12-12 09:02:35

2024-12-02 09:49:00

AI 編程助手AI CodingMarsCode

2024-04-01 08:05:27

Go開發Java

2022-09-17 23:46:47

vue前端

2017-07-17 15:46:20

Oracle并行機制

2022-02-28 14:54:48

openHarmon鴻蒙操作系統

2015-08-12 16:41:25

運維服務公共化

2018-12-19 13:45:56

Hive實踐存儲

2015-09-07 10:15:53

移動端開發

2018-01-10 13:40:03

數據庫MySQL表設計

2021-12-28 08:17:41

循環 forgo

2009-12-31 10:15:12

Silverlight

2020-12-22 09:34:20

JavaScript開發技術

2009-10-20 09:14:45

Windows 7中國

2023-04-10 09:31:00

路由技術廠商

2024-05-06 00:00:00

緩存高并發數據

2015-03-24 16:29:55

默認線程池java

2010-08-30 09:58:20

虛擬化整合案例

2010-08-26 09:49:57

虛擬化整合案例

2018-10-29 15:50:23

深度學習工程實踐技術
點贊
收藏

51CTO技術棧公眾號

亚洲精品激情视频| 国产亚洲成av人片在线观看桃| 在线一区亚洲| 国产口爆吞精一区二区| 亚洲色图网站| 精品欧美久久久| 99爱视频在线| 亚洲欧美日韩动漫| 麻豆免费看一区二区三区| 另类专区欧美制服同性| 亚洲图片欧美另类| 亚洲一二三四| 国产欧美精品在线观看| 高清不卡日本v二区在线| 国产午夜在线播放| 欧美一二区在线观看| 91精品国产免费| 99热自拍偷拍| 一色桃子av在线| 国产亚洲综合在线| 亚洲iv一区二区三区| 亚洲免费黄色网址| 99久久夜色精品国产亚洲96 | 青草网在线观看| 亚洲 欧美 精品| 久久国产精品第一页| 国自产精品手机在线观看视频| 天天干天天舔天天操| 青草伊人久久| 欧美一区二区三区啪啪| 中文亚洲视频在线| 一女二男3p波多野结衣| 国产盗摄在线视频网站| 国产精品每日更新在线播放网址 | 这里只有视频精品| 韩国av中国字幕| 国产福利一区二区三区在线播放| 亚洲成人av电影在线| 日韩中文字幕在线不卡| 第三区美女视频在线| av男人天堂一区| 91gao视频| 在线观看黄色网| 亚洲欧美日韩在线观看a三区 | 国产激情视频在线看| 亚洲欧洲日本在线| 相泽南亚洲一区二区在线播放| 五月天婷婷社区| 国产成人综合亚洲网站| 国产欧美精品va在线观看| 可以免费在线观看的av| 国产综合网站| 亚洲蜜臀av乱码久久精品| 在线看国产一区| 成人午夜精品久久久久久久蜜臀| 国产一二区在线观看| 久久精品无码一区二区三区| 久久99国产精品99久久| 天堂av2024| av在线不卡观看免费观看| 岛国视频一区免费观看| 中文字幕一区2区3区| 美女视频一区二区三区| 国产精品色悠悠| 欧美成人一区二区视频| 无码成人精品区在线观看| 巨胸喷奶水www久久久免费动漫| 午夜精彩视频在线观看不卡| www.一区二区.com| 污视频在线看网站| 一区二区免费在线播放| 欧美久久久久久久久久久久久久| av在线中文| 精品久久在线| 欧美日韩国产激情| 人妻互换免费中文字幕| 国产美女高潮在线观看| 精品国产精品自拍| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 蜜桃av在线| 在线精品亚洲一区二区不卡| 丁香啪啪综合成人亚洲| a成人v在线| 欧美妇女性影城| 一级黄色大片儿| 中文字幕av一区二区三区四区| 精品国产乱码久久久久久闺蜜| 中文视频在线观看| 精品av导航| 亚洲欧美另类人妖| 无套内谢大学处破女www小说| 国产欧美日韩影院| www.久久久久久.com| 欧美成人精品欧美一级| 9色精品在线| 国产精品视频免费观看www| 国产高清精品软件丝瓜软件| av电影天堂一区二区在线| 日韩欧美视频一区二区| 五月天激情在线| 色综合久久天天| 污污网站免费观看| 盗摄系列偷拍视频精品tp| 亚洲精品自产拍| www.黄色com| 残酷重口调教一区二区| 欧美极品美女视频网站在线观看免费 | 少妇真人直播免费视频| 欧美老女人另类| 久久亚洲国产精品| 青青草av在线播放| 蜜桃视频免费观看一区| 亚洲一区二区在线| 青青草手机在线| 亚洲精品欧美二区三区中文字幕| 日本久久高清视频| 蜜桃av在线| 91精品国产综合久久福利| 国产福利在线观看视频| 亚洲国产精品久久久天堂| 国外成人免费在线播放| 亚洲成熟少妇视频在线观看| 国产又黄又大久久| 欧美精品二区三区四区免费看视频| 97超碰人人在线| 午夜天堂影视香蕉久久| 91免费视频污| 欧美人与牛zoz0性行为| 欧美日本精品在线| 中文字幕视频一区二区| 91视视频在线直接观看在线看网页在线看| 亚洲一区二区三区精品视频| 在线天堂资源| 日韩免费高清av| www.涩涩爱| 美女久久一区| 国产精品国产三级欧美二区| 国产有码在线| 欧美午夜丰满在线18影院| 中文字幕乱妇无码av在线| 色综合狠狠操| 国产精品久久久久久久久久| 四虎在线视频免费观看| 亚洲综合视频在线观看| 伊人成人免费视频| 欧美h版在线| 国产精品视频yy9099| 久久国产精品高清一区二区三区| 亚洲一区电影777| 国产黄色一区二区三区| 97视频精品| 国产精品a久久久久久| 欧洲天堂在线观看| 婷婷丁香激情综合| 亚洲一级av无码毛片精品| 国产一区清纯| 豆国产97在线| 久草免费在线色站| 日韩欧美一二区| 91精品国产高清一区二区三蜜臀| 极品销魂美女一区二区三区| 丰满女人性猛交| 99亚洲男女激情在线观看| 国产亚洲精品成人av久久ww| 影音先锋在线国产| 91麻豆免费看| 精品久久久久久中文字幕2017| 国产一区二区三区四区五区传媒| 无码国产精品久久一区免费| 日韩视频1区| 久久国内精品一国内精品| 国产美女www爽爽爽| 国产亚洲va综合人人澡精品 | 偷拍自拍在线| 亚洲va欧美va天堂v国产综合| 成人影视免费观看| 免费在线看一区| a级片一区二区| 亚洲图区在线| 成人黄色短视频在线观看| 欧美videossex| 亚洲片在线资源| 国产免费高清视频| 欧美视频中文字幕在线| 日本一级特级毛片视频| www.成人在线| 99视频在线视频| 精品99视频| 先锋影音日韩| 国产精品zjzjzj在线观看| 国产成人高清激情视频在线观看 | 欧美精品少妇一区二区三区 | 在线免费观看欧美| 欧洲高清一区二区| 国产精品一区三区在线观看| 久久人人爽人人| 91社区在线高清| 日韩精品视频在线免费观看| 国产精品视频第一页| 色综合中文综合网| 欧美日韩三级在线观看 | 精品人在线二区三区| www.日韩一区| 亚洲成a天堂v人片| 娇小11一12╳yⅹ╳毛片| jlzzjlzz亚洲日本少妇| 欧洲在线免费视频| 爽好多水快深点欧美视频| 日韩激情视频一区二区| 日韩精品免费一区二区在线观看| 国产精品swag| 亚洲男人在线| 欧美综合激情网| 手机在线免费av| 在线精品国产欧美| 神马久久精品| 日韩久久久久久| 伊人免费在线观看高清版| 亚洲成av人片www| 色综合久久久久久中文网| 99在线观看免费| 在线观看亚洲精品| 国产成人在线免费观看视频| 中文字幕一区二区在线播放 | 国产亚洲高清在线观看| 国产福利精品av综合导导航| 俄罗斯一级**毛片在线播放| 日韩视频精品在线| 成黄免费在线| 亚洲毛片在线观看.| 黄色片网站免费在线观看| 91.成人天堂一区| 中文字幕视频二区| 在线精品国精品国产尤物884a| 好吊操这里只有精品| 一区二区三区日韩欧美| 91久久国产综合| 最新中文字幕一区二区三区 | 成人精品天堂一区二区三区| 久久国产精品一区二区三区四区| 亚洲精品午夜| 亚洲一区二区三区在线免费观看| 欧美综合影院| 国产中文字幕亚洲| 日韩电影精品| 国产乱人伦真实精品视频| 网友自拍亚洲| 青青久久aⅴ北条麻妃| 午夜激情在线播放| 97久久久久久| 亚洲黄色免费av| 国产精品18久久久久久麻辣| 欧美三区四区| 国产精品爽黄69| 亚瑟国产精品| 91蜜桃网站免费观看| 中文在线免费一区三区| 国产一区二区在线观看免费播放| 老汉色老汉首页av亚洲| 免费99视频| 日本不卡二三区| 欧洲xxxxx| 亚洲性图久久| 日韩中文字幕二区| 美国欧美日韩国产在线播放| 在线一区二区不卡| 99天天综合性| 精品人妻中文无码av在线 | 极品销魂美女一区二区三区| 亚洲天堂小视频| a美女胸又www黄视频久久| 精品国产一区在线| 久久嫩草精品久久久久| 成人做爰69片免网站| 中文字幕在线不卡一区| 九九热视频精品| 欧美日韩激情视频| 中文字幕欧美在线观看| 3d成人h动漫网站入口| www.亚洲黄色| 日韩美女av在线| 在线免费av网站| 欧美激情视频网址| 奇米777日韩| 成人久久久久久| 91蜜桃臀久久一区二区| 久久精品第九区免费观看| 精品久久不卡| 久久综合久久久久| 蜜桃av综合| 中文字幕人妻无码系列第三区| eeuss鲁片一区二区三区在线观看| 男女做爰猛烈刺激| 亚洲人成精品久久久久| wwwxxx亚洲| 51精品国自产在线| 黄网在线免费| 久久久亚洲影院| 成人午夜一级| 91影院未满十八岁禁止入内| 日韩在线麻豆| 男人的天堂成人| 亚洲综合欧美| 欧美一区二区三区影院| 久久久影院官网| 成人免费毛片东京热| 色女孩综合影院| 亚洲AV无码精品国产| 伊人久久久久久久久久| 好看的中文字幕在线播放| 国产精品小说在线| 欧美成人基地| 蜜臀精品一区二区| 九九国产精品视频| 亚洲自拍偷拍图| 欧美日韩国产在线播放| 亚洲av永久纯肉无码精品动漫| 自拍偷拍免费精品| 亚洲wwww| 蜜桃精品久久久久久久免费影院| 伊人久久大香线蕉综合热线| 亚洲欧美手机在线| 中文字幕av一区二区三区免费看| 台湾佬中文在线| 亚洲国产精品va在线| 欧美人与性动交α欧美精品济南到| 国产精品专区第二| 精品国产一区一区二区三亚瑟| 日本精品免费在线观看| a在线欧美一区| 精品在线播放视频| 亚洲精品一区二区三区影院| 青青青国内视频在线观看软件| 成人免费黄色网| 香港欧美日韩三级黄色一级电影网站| 天天操天天爱天天爽| 中文字幕欧美区| 亚洲天堂网视频| 久久九九有精品国产23| 欧美综合影院| 午夜久久久久久久久久久| 国精产品一区一区三区mba桃花| 99热在线观看精品| 欧美日韩亚洲综合一区| 在线看的av网站| 国产精品吴梦梦| 91精品一区二区三区综合| 日本高清久久久| 亚洲色图制服诱惑| www.黄色国产| 久久久亚洲精品视频| 久本草在线中文字幕亚洲| 内射国产内射夫妻免费频道| 91最新地址在线播放| 最新中文字幕一区| 一个色综合导航| 日韩成人精品一区二区三区| 91制片厂免费观看| 国产成人免费视频精品含羞草妖精 | 国产三区在线播放| 久久资源免费视频| 国产乱人伦精品一区| 日本三级免费网站| 欧美国产一区二区| 国产乱码精品一区二三区蜜臂 | 一本大道色婷婷在线| 欧美成熟毛茸茸复古| 日韩电影一二三区| 国产精品视频一区二区三| 精品久久久久一区| 中文字幕这里只有精品| 亚洲精品免费在线看| 国产一区二区在线观看免费| 国产精品1234区| 亚洲欧美日韩中文在线| 日韩免费大片| 久久成人福利视频| 国产日产亚洲精品系列| 国产精品久久久久毛片| 久久久久久久久久久免费| 尤物tv在线精品| 色婷婷一区二区三区在线观看| 亚洲第一成人在线| 国产区在线视频| 亚洲综合在线做性| 亚洲欧美日韩综合国产aⅴ| 在线观看黄网址| 日韩精品中文字幕在线| 亚洲不卡系列| 人体内射精一区二区三区| 国产精品色哟哟| 天堂在线观看av| 91网站在线免费观看| 销魂美女一区二区三区视频在线| 内射一区二区三区| 亚洲三级免费看| 91精品久久久久久综合五月天 | 粉嫩91精品久久久久久久99蜜桃| 三上悠亚免费在线观看| 久久精品一二三|