免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Agent-Reach:多智能體協(xié)作的通信底座與消息路由實踐

Agent-Reach:多智能體協(xié)作的通信底座與消息路由實踐 多智能體這塊最近兩年被炒得很熱但真正在項目里把多個Agent拉到同一張桌子上協(xié)作的時候你會發(fā)現(xiàn)一個很尷尬的問題各個Agent之間根本夠不著對方。它們各自封裝在自己的框架里跑在自己的進程里用的是各自的工具調(diào)用協(xié)議消息格式各說各話。我這個項目Agent-Reach就是沖著這個痛點去的——它解決的核心問題是Agent觸達(dá)讓一個Agent能夠發(fā)現(xiàn)另一個Agent的存在、了解它能干什么、然后把任務(wù)和結(jié)果可靠地遞過去。這不是一個華而不實的框架而是一套輕量的、可以直接嵌進現(xiàn)有系統(tǒng)的Agent間通信與發(fā)現(xiàn)基礎(chǔ)設(shè)施。下面我把整個項目的設(shè)計思路、核心實現(xiàn)、踩坑過程都展開聊聊尤其是那些只在真實流量下才會暴露的問題。1. 多智能體協(xié)作的圈地困境Agent成了孤島協(xié)作成了妄想先回顧一下我為什么要做這件事。在做Agent-Reach之前我參與過一個電商客服場景的項目里面有三個Agent一個負(fù)責(zé)售前咨詢的、一個負(fù)責(zé)訂單狀態(tài)查詢的、一個負(fù)責(zé)售后處理建議的。三個Agent分別基于不同的框架搭出來的售前的用了LangChain訂單查詢的是自己寫的一套意圖識別加工具調(diào)用售后那個直接調(diào)外部RPA接口。最開始的設(shè)計是三個Agent串行跑用戶問一句售前Agent判斷該不該轉(zhuǎn)給訂單Agent然后由售前Agent的代碼里寫死一個調(diào)用訂單Agent的函數(shù)。這個方案看似沒毛病跑起來之后全是麻煩。比如訂單Agent換了個部署地址售前Agent的代碼就得跟著改比如想新增一個物流咨詢Agent售前Agent的代碼要重新發(fā)布一版。更頭疼的是三個Agent之間傳消息完全沒有統(tǒng)一格式售前傳過去的是幫我查一下訂單訂單Agent那邊需要的是結(jié)構(gòu)化JSON中間還得套一層轉(zhuǎn)換邏輯。這些小問題疊加在一起就是典型的硬編碼集成之痛。我當(dāng)時理想中的形態(tài)是這樣的Agent之間不直接握手而是通過一個公共的通訊錄互相發(fā)現(xiàn)消息格式統(tǒng)一某個Agent掛掉或者升級的時候不影響其他Agent的整體運行。這就是Agent-Reach立項的最初動機。所以Agent-Reach的第一層價值是解耦第二層價值是標(biāo)準(zhǔn)化。它做的事情不是一個Agent框架而是一個中間層。打個比方Agent-Reach不負(fù)責(zé)教你怎么做Agent它負(fù)責(zé)的是給Agent們發(fā)名片和信箱。從技術(shù)選型上看當(dāng)時有幾個現(xiàn)成方案可以選比如消息隊列Kafka、RabbitMQ加一個服務(wù)注冊中心Consul、Etcd。但我試過之后發(fā)現(xiàn)太重了——Kafka解決的是大數(shù)據(jù)量消息的吞吐問題而我這個場景的消息量一天也就幾萬條而且大部分是短小的一問一答為這個上Kafka有點殺雞用牛刀。Consul那套偏向微服務(wù)治理健康檢查、KV存儲確實都有但Agent之間的消息路由語義——這個任務(wù)該發(fā)給哪個Agent、怎么回傳結(jié)果——它是不懂的我還是得自己在上層寫一套路由邏輯。思來想去與其拼裝兩個輪子不如自己做一個正好合適的輪子。Agent-Reach的本質(zhì)就是一個帶語義能力的Agent注冊與消息路由服務(wù)底層用輕量的消息通道承載通信上層實現(xiàn)了Agent能力描述、發(fā)現(xiàn)、定向投遞和結(jié)果回傳。接下來我會把每一塊設(shè)計拿出來細(xì)講。2. Agent-Reach的定位與總體架構(gòu)不造Agent只疏通Agent之間的路先說清楚架構(gòu)邊界這是后面所有細(xì)節(jié)討論的前提。Agent-Reach包含四個核心模塊Agent注冊表Agent Registry、能力目錄Capability Catalog、消息路由層Message Router、以及客戶端SDKAgent-Reach Client。2.1 注冊表設(shè)計每個Agent都要有一張實名名片注冊表是整個系統(tǒng)的地基。每個Agent接入時向注冊表登記一份元數(shù)據(jù)內(nèi)容包括Agent的全局唯一ID、名稱、描述、能力標(biāo)簽、通信地址比如WebSocket的URL或者消息隊列的主題名、當(dāng)前狀態(tài)、負(fù)載指標(biāo)。這張名片會帶一個版本號Agent每次變更能力或者地址名片版本遞增。這里有個很關(guān)鍵的設(shè)計決策注冊表不要做成AP可用性優(yōu)先模型而要傾向CP一致性優(yōu)先模型。為什么不學(xué)Eureka那套因為Agent發(fā)現(xiàn)一旦讀到過期數(shù)據(jù)消息就會發(fā)到一個已經(jīng)不存在的實例上直接導(dǎo)致任務(wù)失敗。相比之下寧可短暫地發(fā)現(xiàn)不到某個Agent也不要發(fā)現(xiàn)到一個幽靈Agent所以Agent-Reach的注冊表內(nèi)部用了Raft協(xié)議做多節(jié)點同步保證三個副本之間的數(shù)據(jù)強一致。實測下來幾個節(jié)點之間的同步延遲在毫秒級別對Agent發(fā)現(xiàn)這種低頻操作完全夠用。名片信息的具體結(jié)構(gòu)是這樣定義的{ agent_id: order-agent-01, name: 訂單狀態(tài)查詢Agent, version: 3, capabilities: [ { name: query_order, description: 根據(jù)訂單號查詢訂單當(dāng)前狀態(tài), input_schema: { type: object, properties: { order_id: {type: string} }, required: [order_id] }, output_schema: { type: object, properties: { status: {type: string}, eta: {type: string} } } } ], transport: { type: ws, endpoint: ws://10.0.1.12:9201/agent }, status: online, heartbeat_interval_sec: 15, max_concurrent_tasks: 10 }這份JSON就是Agent的名片。消費者也就是其他Agent拿到名片后不需要提前知道調(diào)用細(xì)節(jié)只靠名片里的capabilities就能判斷這個Agent能不能幫我干活、該怎么傳參數(shù)。接口契約的問題在這里就解決了以前是代碼里硬寫函數(shù)調(diào)用現(xiàn)在是數(shù)據(jù)驅(qū)動的動態(tài)路由。2.2 能力目錄與匹配邏輯讓誰該處理這件事變成可計算的注冊表只是存儲能力目錄才是智能的地方。能力目錄負(fù)責(zé)維護能力名到Agent集合的映射并對外提供匹配服務(wù)。比如調(diào)用方傳一個自然語言描述或者結(jié)構(gòu)化的任務(wù)標(biāo)簽?zāi)夸浄?wù)返回能處理這個任務(wù)的Agent列表按匹配度排序。最開始我直接用關(guān)鍵詞匹配能力名后來發(fā)現(xiàn)根本不夠用。同樣是查訂單這件事A Agent管的是B2C訂單B Agent管的是B2B訂單光看能力名query_order分不出來。所以我把匹配升級成了兩層第一層是硬匹配基于能力標(biāo)簽的精確匹配速度快適合已知明確標(biāo)簽的調(diào)用第二層是軟匹配用Embedding做語義相似度計算調(diào)用方發(fā)來的任務(wù)描述和已有Agent能力描述算余弦相似度大于一個閾值才進入候選集。軟匹配的引入讓Agent-Reach對上層應(yīng)用非常友好——調(diào)用方不需要記住每個Agent的能力名只要用一句人話描述任務(wù)系統(tǒng)幫他找Agent。這一步當(dāng)時落地的時候花了不少功夫踩過Embedding模型選型的坑后面會詳細(xì)講。2.3 消息路由層設(shè)計請求/響應(yīng)和異步任務(wù)兩條腿走路消息路由是第三個模塊也是通信語義的核心。Agent之間協(xié)作的模式其實就兩種一種是同步的請求/響應(yīng)比如幫我查一下訂單12345的狀態(tài)立刻要結(jié)果另一種是異步任務(wù)投遞比如幫我把這批1000個訂單做異常回訪不用立刻出結(jié)果完成后通知我。Agent-Reach對兩種模式分別做了通道設(shè)計。同步通道直接走WebSocket長連接實現(xiàn)上類似一個輕量RPC異步通道則持久化到內(nèi)嵌的消息存儲里Agent上線后拉取積壓任務(wù)。之所以不用外部隊列是因為異步任務(wù)數(shù)量和Agent會話狀態(tài)有強關(guān)聯(lián)存到注冊表同一套存儲里反而簡單——Agent斷線期間的任務(wù)會在它恢復(fù)心跳后自動補發(fā)。路由決策本身也不復(fù)雜按照這個優(yōu)先級處理調(diào)用方顯式指定了agent_id直接定向投遞調(diào)用方傳了能力名路由層查能力目錄取匹配度最高的在線Agent調(diào)用方什么都沒傳只有一段任務(wù)描述路由層走語義匹配如果候選Agent都在忙達(dá)到max_concurrent_tasks上限任務(wù)進入等待隊列而不是直接失敗。前三條都好理解第四條值得多說一句。Agent-Reach默認(rèn)不丟任務(wù)有背壓機制。調(diào)用方發(fā)來一個任務(wù)如果目標(biāo)Agent繁忙這個任務(wù)會在路由層排隊由調(diào)用方?jīng)Q定等待超時時間。實際項目里我會建議調(diào)用方設(shè)置一個合理的超時默認(rèn)30秒超過就返回繁忙請稍后再試由上層Agent決定是換個Agent還是告訴用戶稍等。2.4 客戶端SDK的邊界只做三件事絕不多做客戶端SDK的設(shè)計初衷是接進去簡單拿到別的Agent的能力簡單發(fā)消息簡單。所以SDK只封裝了三類能力注冊與心跳、發(fā)現(xiàn)與訂閱拿到名片、監(jiān)聽Agent上下線事件、消息發(fā)送與接收同步和異步兩種模式。有個很刻意的設(shè)計SDK不做Agent能力編排不做多步流程控制也不內(nèi)置提示詞模板。這些交給上層Agent框架或者業(yè)務(wù)流程去處理。Agent-Reach是一個路由器而不是大腦大腦應(yīng)該屬于每個Agent自己這也是我堅持的原則。如果SDK越界做了編排Agent的自主性就被架空了那就跟傳統(tǒng)ESB服務(wù)總線沒有本質(zhì)區(qū)別了。3. 核心模塊逐行拆解注冊表、心跳與路由的實現(xiàn)細(xì)節(jié)這一節(jié)直接上實現(xiàn)。Agent-Reach服務(wù)端我用Go寫的原因很簡單單機并發(fā)吞吐高、部署就是一個二進制文件、內(nèi)存占用小。客戶端SDK先做了Python版本因為接Agent的團隊主力語言就是Python后來補了TypeScript版本給前端低代碼平臺用。3.1 注冊表存儲結(jié)構(gòu)一張表搞定所有元數(shù)據(jù)注冊表底層用SQLite單機模式或TiKV集群模式存儲但對外暴露的是內(nèi)存視圖。Agent的元數(shù)據(jù)維護在內(nèi)存里的一個并發(fā)安全Map里key是agent_idvalue是完整的元數(shù)據(jù)對象。每次寫入或者更新時同時寫持久化存儲并廣播變更事件。Go語言里這個結(jié)構(gòu)大致是這樣type Registry struct { mu sync.RWMutex agents map[string]*AgentMeta byCaps map[string]map[string]struct{} // capability - set of agent_id watchers map[string][]chan AgentEvent } type AgentMeta struct { AgentID string json:agent_id Name string json:name Version int json:version Capabilities []Capability json:capabilities Transport TransportInfo json:transport Status AgentStatus json:status LastHeartbeat time.Time json:last_heartbeat } type AgentEvent struct { Type string // registered, updated, offline, online AgentID string Meta *AgentMeta }byCaps這個反向索引是匹配性能的關(guān)鍵。能力匹配的請求一來先按能力名取Agent集合再逐個看狀態(tài)和負(fù)載避免了全表掃描。注冊、更新、心跳都通過mu.Lock()保護這個鎖在低并發(fā)下毫無壓力但到了Agent數(shù)量上百、心跳頻率高的場景單把大鎖會成為瓶頸。我后來做了分片鎖優(yōu)化按Agent ID哈希分成32個分片各自獨立加鎖吞吐量提升明顯。3.2 心跳機制與僵尸Agent清理心跳的設(shè)計要回答兩個問題多久算超時超時了誰負(fù)責(zé)清理我的做法是Agent默認(rèn)每15秒發(fā)一次心跳注冊表在3個心跳周期45秒沒收到就標(biāo)記為offline再過2個周期75秒還沒恢復(fù)就把Agent從活躍列表里移除并廣播下線事件。這個時間窗口不是拍腦袋定的跟Agent的業(yè)務(wù)類型有關(guān)系——客服Agent 45秒沒心跳基本就是進程掛了但如果是有長耗時任務(wù)的Agent比如批量處理回訪進程活著但主線程被阻塞心跳發(fā)不出去也是常事。所以我在心跳API之外還加了一個獨立的/ping探活接口路由層的健康檢查用這個接口注冊表的離線判定用心跳兩者分離。僵尸Agent的清理邏輯我建議做成軟刪除。不直接從agents里抹掉元數(shù)據(jù)而是只在byCaps活躍索引里摘除元數(shù)據(jù)保留24小時方便排查問題。線上問題排查時你會感激這個設(shè)計——Agent崩潰后你想查它崩潰前的元數(shù)據(jù)版本如果被物理刪了就得從頭查日志。3.3 消息路由的投遞語義At-Least-Once與去重Agent之間消息投遞的語義我直接定成了At-Least-Once至少一次。這不是偷懶是成本權(quán)衡下的理性選擇。Exactly-Once在高吞吐消息系統(tǒng)里要靠事務(wù)消息或冪等消費來逼近對Agent協(xié)作這個場景來說成本太高。At-Least-Once配合消息里的全局唯一ID讓接收方做冪等去重效果足夠。每個消息的骨架長這樣{ message_id: uuid-v7-xxxx, trace_id: trace-abc-123, task: { type: sync, capability: query_order, input: { order_id: 20250101001 }, timeout_ms: 30000 }, source: { agent_id: pre-sale-agent-01, session_ref: chat-session-7788 }, target: { agent_id: order-agent-01 } }message_id是全局去重的依據(jù)UUID v7自帶時間排序?qū)懭氪鎯Φ臅r候?qū)λ饕押谩race_id用來串起一次跨Agent協(xié)作的完整鏈路——用戶的一個問題可能觸發(fā)三個Agent先后處理靠trace_id能把整個鏈路的行為日志撈出來。這個字段特別值得重視沒有它排障就是大海撈針。路由層接收到消息后按如下流程處理校驗target.agent_id是否在線在線則通過WebSocket把消息推送過去等待接收方ACKACK不代表任務(wù)完成只代表消息被Agent進程收到了如果30秒內(nèi)沒有ACK標(biāo)記為投遞失敗重試最多3次重試仍失敗消息進入死信表同時給調(diào)用方返回一個投遞超時響應(yīng)。這里有個小坑WebSocket連接本身可能假死。TCP連接還在但Agent進程已經(jīng)卡死消息發(fā)過去沒有響應(yīng)。所以ACK超時機制必須存在不能只靠TCP層面的連通性判斷。3.4 Python SDK的接入代碼三行登記一行發(fā)消息Python SDK的目標(biāo)是讓接入成本降到最低。Agent上線時的注冊代碼from agent_reach import AgentReachClient, SyncCall client AgentReachClient(registry_urlws://reach-server:8800/registry) # 聲明能力完成注冊 client.register( agent_idorder-agent-01, name訂單狀態(tài)查詢Agent, capabilities[ { name: query_order, description: 根據(jù)訂單號查詢訂單當(dāng)前狀態(tài), input_schema: {...}, output_schema: {...} } ] ) # 處理入站請求 client.on_capability(query_order) def handle_query_order(input_data: dict) - dict: order_id input_data[order_id] status query_order_db(order_id) return {status: status, eta: 2025-02-01 14:00} # 啟動監(jiān)聽開始接收消息 client.start()再看出站調(diào)用一個Agent想調(diào)用另一個Agent的能力時result client.call_sync( capabilityquery_order, input{order_id: 20250101001}, timeout_ms30000 ) # Business 語義錯誤 if result.get(error_code): fallback_to_another_agent(capabilityquery_order_v2) print(result[data][status])call_sync內(nèi)部封裝了能力發(fā)現(xiàn)、路由請求、等待響應(yīng)、超時重試這幾件事。對上層調(diào)用方來說就是一行函數(shù)調(diào)用完全不用感知對方Agent到底在哪臺機器上、用的是什么框架、內(nèi)部怎么實現(xiàn)的。這種動態(tài)發(fā)現(xiàn)統(tǒng)一契約的體驗比自己在代碼里寫死HTTP調(diào)用要舒服得多改一個Agent的部署位置系統(tǒng)里的其他Agent什么都不用動。4. 接入真實業(yè)務(wù)三類Agent跨框架協(xié)作的完整通路設(shè)計講完了來看實際接入效果。當(dāng)時我們在測試環(huán)境搭了三類AgentA跑在LangChain上B是CrewAI里定義的角色型AgentC是一套完全自研的規(guī)則加LLM混合Agent。三個框架各走各的唯一共性就是都裝了Agent-Reach的Python SDK。4.1 LangChain Agent接入用Tool封裝打通最省事LangChain Agent本身有一套Tool機制它把外部功能抽象成Tool來調(diào)用。我做的事很簡單把Agent-Reach的call_sync封裝成一個LangChain的BaseTool。from langchain.tools import BaseTool from agent_reach import AgentReachClient class ReachTool(BaseTool): name: str agent_reach_query description: str ( 當(dāng)用戶需要查詢訂單狀態(tài)時使用。 輸入為訂單號字符串輸出為訂單狀態(tài)與預(yù)計送達(dá)時間。 ) def _run(self, order_id: str) - str: client AgentReachClient(...) result client.call_sync( capabilityquery_order, input{order_id: order_id}, timeout_ms20000 ) return json.dumps(result, ensure_asciiFalse)這樣LangChain的Agent在推理時如果判斷需要查詢訂單就會自動調(diào)用這個ToolTool內(nèi)部走Agent-Reach把任務(wù)路由到訂單Agent。整個過程對LangChain是無感知的——它只覺得自己調(diào)用了一個普通Tool實際上背后的目標(biāo)Agent跑在另一個框架里。4.2 CrewAI角色Agent接入同步轉(zhuǎn)異步避免阻塞CrewAI的多Agent是角色扮演式協(xié)作Agent之間通過Task傳遞工作。這里遇到一個實際問題CrewAI的Agent執(zhí)行任務(wù)時如果卡在一個同步調(diào)用上很久整個流程會變慢。所以我給CrewAI的Agent封裝的是Agent-Reach的異步調(diào)用模式。具體做法是CrewAI的Agent啟動時注冊進Agent-Reach并聲明自己的角色能力當(dāng)CrewAI內(nèi)的Agent遇到需要外部協(xié)作的任務(wù)通過call_async發(fā)出消息不等結(jié)果立刻返回任務(wù)已提交。CrewAI流程繼續(xù)推進外部Agent完成后再通過回調(diào)通知結(jié)果把結(jié)果喂回對應(yīng)的session。這條路跑通之后效果很好CrewAI的內(nèi)部流程沒有被跨框架通信阻塞住整個協(xié)作節(jié)奏更接近真實的團隊工作方式。4.3 自研Agent接入最大的阻力是對話輪次的傳遞自研Agent接入時遇到一個有意思的問題那套規(guī)則加LLM混合Agent里每次對話都要攜帶上下文輪次。一開始我把整個對話歷史塞進消息input里結(jié)果消息體積動不動就幾十KB路由和存儲的壓力都上來了。后來我調(diào)整了消息契約input里只傳必要字段和會話指針真正完整的對話歷史存在Agent自己的持久層里。Agent-Reach的消息體里只帶一個session_ref字段接收方拿到引用后自己去共享存儲里撈上下文。這么一改消息體積降到幾KB幾乎不影響路由性能業(yè)務(wù)側(cè)也更清爽。這個經(jīng)驗很重要消息通道不是數(shù)據(jù)倉庫別把該存庫的東西塞進消息里。跨Agent的消息應(yīng)該是任務(wù)指令必要的參數(shù)引用而不是整包的數(shù)據(jù)搬運。4.4 前端低代碼平臺的TypeScript SDK后來低代碼平臺也要接Agent所以補了TypeScript SDK。瀏覽器的WebSocket客戶端和服務(wù)端交互能力發(fā)現(xiàn)API、消息發(fā)送API都支持。前端腳本里可以這樣寫import { AgentReachClient } from agent-reach/sdk; const client new AgentReachClient({ registryUrl: wss://reach-server/registry, }); await client.connect(); const availableAgents await client.listOnlineAgentsByCapability(query_order); const res await client.callSync({ capability: query_order, input: { order_id: 20250101001 }, timeoutMs: 30000, });低代碼平臺做一個拖拽流程編排每個節(jié)點綁定一個能力調(diào)用幾十種業(yè)務(wù)流程都能拖著拖著就配完不用再為每種流程寫專門的集成代碼。5. 上線前必須面對的五個坑從超時風(fēng)暴到消息亂序上面聽起來一切順利但生產(chǎn)環(huán)境跑起來之后問題一個接一個。我按踩坑的時間順序梳理了五個最典型的問題每個都有實際的思考過程和解決路徑。5.1 坑一注冊表讀寫鎖引發(fā)的超時風(fēng)暴系統(tǒng)上線第一周就出事。某個中午流量高峰突然大量調(diào)用方報超時。查日志發(fā)現(xiàn)注冊表的API響應(yīng)時間從正常2毫秒飆升到800毫秒再一看注冊表的鎖等待嚴(yán)重。根因是這樣的我當(dāng)時byCaps反向索引和agents主Map共用一把大鎖mu。Agent心跳每15秒一次幾十個Agent的心跳本來沒壓力但有個Agent在頻繁更新元數(shù)據(jù)——它的調(diào)用方每次調(diào)完就更新一次最近調(diào)用統(tǒng)計這個統(tǒng)計寫在元數(shù)據(jù)里。高峰期每秒鐘幾十次更新跟心跳的寫鎖、調(diào)用的讀鎖互相排隊鎖競爭直接拖垮了API。解決方式分兩步。第一步把最近調(diào)用統(tǒng)計從Agent元數(shù)據(jù)里拆出去單獨放到Redis里跟注冊表完全解耦第二步把大鎖拆成32個分片鎖按Agent ID哈希分片不同分片的讀寫互不阻塞。改完后單機壓測從原先的每秒約2000次注冊表操作提升到約1.6萬次后續(xù)再也沒在這個位置出過問題。這個坑給了一個教訓(xùn)別把高頻率的統(tǒng)計信息跟低頻的元數(shù)據(jù)放在同一個存儲結(jié)構(gòu)里讀多寫多互相攪和遲早出事。5.2 坑二語義匹配的Embedding模型選型失誤能力目錄的軟匹配最初用的是本地部署的一個通用中文Embedding模型當(dāng)時貪它體積小、部署簡單。上線后發(fā)現(xiàn)匹配效果很差售后退款流程和查詢訂單狀態(tài)明明在業(yè)務(wù)上是強相關(guān)的模型算出來的相似度才0.35低于我設(shè)的0.65閾值導(dǎo)致Agent匹配失敗率高調(diào)用方經(jīng)常收到找不到可用Agent的錯誤。后來做了個對照實驗同一批測試樣本換成當(dāng)前主流的商用Embedding接口相似度直接跳到0.7以上效果好了不止一個檔次。差距主要在于模型的語料覆蓋和訓(xùn)練規(guī)模通用小模型對行業(yè)術(shù)語和業(yè)務(wù)流程的理解深度遠(yuǎn)不夠。最后我采用了雙模型策略離線場景批量任務(wù)、異步分析用本地小模型因為對實時性要求不高、又不依賴外部服務(wù)在線場景同步Agent調(diào)用用小模型先快速粗篩再用大模型精排。粗篩閾值放低到0.5精排閾值0.7這樣既保實時性又保準(zhǔn)確率。5.3 坑三Agent重啟后的狀態(tài)錯亂這個坑很隱蔽。某次訂單Agent發(fā)布新版本重啟后進程起來了SDK自動重新注冊狀態(tài)很快變成online。但老版本進程還沒完全退出它還持有一個舊的WebSocket連接路由層手上的Agent地址是新的老連接也沒斷干凈。于是老進程在半死狀態(tài)下偶爾還能收到新連接建立之前就在途的消息處理完往回發(fā)結(jié)果時結(jié)果發(fā)到了已失效的舊連接上調(diào)用方就丟了響應(yīng)。后來我在SDK里加了一個優(yōu)雅退出流程Agent進程收到SIGTERM信號后先發(fā)一個deregistering事件給注冊表注冊表把該Agent標(biāo)記為draining路由層不再給它發(fā)新任務(wù)只等已有任務(wù)跑完最后SDK再關(guān)閉連接。整個過程強制要求在10秒內(nèi)完成超時就強殺。加上這個機制后發(fā)布期間的丟消息問題基本絕跡。5.4 坑四消息亂序引發(fā)的臟數(shù)據(jù)異步任務(wù)場景下調(diào)用方給目標(biāo)Agent連發(fā)了多條消息——比如批量更新多個訂單狀態(tài)。到了目標(biāo)Agent那邊處理線程是并發(fā)跑的兩條消息的處理完成順序和發(fā)送順序不一致導(dǎo)致先發(fā)起的更新反而后落地最終數(shù)據(jù)庫里的狀態(tài)成了舊的。這個問題在單機單線程的Agent內(nèi)部不會出現(xiàn)但Agent內(nèi)部一旦用線程池并發(fā)處理就必然出現(xiàn)。解決方式在消息語義上做了兩件事一是支持給消息加sequence序號接收方按序處理同一session內(nèi)的消息二是提供一個同步屏障選項——發(fā)送方可以要求只有前一條消息處理完成才允許投遞下一條。這兩種方式實際上把并發(fā)還是順序的選擇權(quán)交還給業(yè)務(wù)方對順序敏感的消息走同步屏障對順序不敏感的批量任務(wù)繼續(xù)保持并發(fā)提升吞吐。5.5 坑五WebSocket連接的半開問題WebSocket連接假死是分布式系統(tǒng)的老熟人。某一端進程還活著但事件循環(huán)卡死了TCP層面看起來連接還在實際上消息已經(jīng)發(fā)不過去。排查這類問題特別費勁因為撥測連通性沒問題但業(yè)務(wù)消息就是石沉大海。我在Agent-Reach里加了心跳Ping/Pong機制路由層每隔30秒給每個Agent連接發(fā)PingAgent收到后必須回Pong。如果連續(xù)3次Pong沒回來路由層就主動斷開連接并標(biāo)記離線。同時Agent側(cè)SDK也加了空閑連接探活——如果Agent覺得自己空閑超過60秒主動發(fā)一個輕量探活消息確保連接不只是看起來活著。這套雙端探活機制上線后假死連接不用再靠人工重啟解決。6. 結(jié)合真實負(fù)載的調(diào)優(yōu)經(jīng)驗從配置參數(shù)到架構(gòu)演進項目跑到第二個月系統(tǒng)漸漸穩(wěn)定了。這時候我回頭看有些參數(shù)和架構(gòu)選擇如果在一開始就能明確能少走不少彎路。6.1 關(guān)鍵參數(shù)清單與建議值很多同學(xué)拿到手第一句話就是參數(shù)該怎么配我總結(jié)了一張常用表都是實測下來比較穩(wěn)的值參數(shù)建議值說明心跳間隔15秒太短會放大無效請求太長導(dǎo)致離線感知過慢離線判定45秒3個周期保證在漏判和誤判之間取平衡同步調(diào)用超時30秒低于這個值慢Agent容易被誤殺高于這個值調(diào)用方體驗差投遞重試次數(shù)3次一次投遞失敗大概率是目標(biāo)Agent抖動3次足夠覆蓋能力匹配TopN3匹配度排名前3的Agent里挑一個可用性最高的消息體大小上限1MB大于1MB的應(yīng)該走共享存儲而不是塞消息體這些參數(shù)不是死的每個業(yè)務(wù)場景要根據(jù)Agent的響應(yīng)耗時和可用性預(yù)期調(diào)整。核心原則是超時時間不要低于Agent的P99響應(yīng)時間否則你會經(jīng)常殺掉那些只是慢但沒壞的Agent。6.2 單機部署到集群部署的平滑過渡Agent-Reach服務(wù)端支持從單機到三節(jié)點的平滑演進。單機模式下所有模塊跑在一個進程里配置一個node_rolestandalone集群模式下節(jié)點分為registry-leader和registry-followerRaft協(xié)議負(fù)責(zé)選主和數(shù)據(jù)同步消息路由層則完全無狀態(tài)可以水平擴展。路由層是無狀態(tài)的這點很重要——它不保存任何會話數(shù)據(jù)所有狀態(tài)都在注冊表里所以水平擴容就是在前面加負(fù)載均衡器后面起新節(jié)點不需要遷移任何數(shù)據(jù)。如果未來想進一步擴展可以把消息的可靠存儲拆到獨立的消息隊列里路由層進一步瘦身成純粹的轉(zhuǎn)發(fā)邏輯。但就目前這個項目的負(fù)載來看日均消息量幾萬條峰值幾十條/秒單機加一個從節(jié)點做故障切換完全夠用沒有必要為了高級感上重型基礎(chǔ)設(shè)施。6.3 可觀測性trace_id是排障的生命線最后強調(diào)一下可觀測性。Agent-Reach給Agent-Reach自己加了一整套鏈路追蹤每次跨Agent調(diào)用都生成一個trace_id從調(diào)用方發(fā)出、路由層接收、目標(biāo)Agent處理、結(jié)果回傳全鏈路日志都打上這個trace_id。排查問題時一條trace_id就能把整條鏈路的時間線拉出來。我強烈建議任何Agent協(xié)作系統(tǒng)都要把鏈路追蹤作為第一優(yōu)先級能力而不是可有可無的錦上添花。Agent協(xié)作的排障難度和單體應(yīng)用完全不同單體應(yīng)用一行堆棧就能定位Agent協(xié)作要跨三四個進程如果沒有貫穿全鏈路的trace_id一個用戶說響應(yīng)慢的問題你可能要花半天時間才能定位到是哪個環(huán)節(jié)慢。加上trace_id后三分鐘就能定位。7. 關(guān)于Agent-Reach后續(xù)演進的一些個人思考項目到現(xiàn)在已經(jīng)跑了幾個月Agent-Reach的價值已經(jīng)驗證過了三個不同框架的Agent通過它實現(xiàn)了互相調(diào)用、動態(tài)發(fā)現(xiàn)、統(tǒng)一契約團隊不再為Agent之間的接口變更和部署位置變更做無休止的聯(lián)調(diào)。我自己在維護過程中總結(jié)了幾件下一步值得做的事。第一是把動態(tài)編排能力加進來。現(xiàn)在系統(tǒng)只解決發(fā)現(xiàn)和路由但Agent之間的協(xié)作流程還是寫死的。如果引入簡單的編排描述語言比如一份JSON定義先調(diào)用A Agent再根據(jù)A的結(jié)果決定調(diào)B還是C那么業(yè)務(wù)流程的變化就不需要改代碼只改編排配置。這個方向我看好但對正確性的要求會高很多得處理好編排流程和業(yè)務(wù)狀態(tài)的一致性問題。第二是多租戶隔離?,F(xiàn)在所有Agent在同一個注冊表里。如果業(yè)務(wù)線多了不同團隊的Agent天然應(yīng)該隔離——A團隊的Agent不能用B團隊的能力。方向是引入租戶概念注冊表按租戶分域能力目錄和消息路由按租戶權(quán)限做校驗。這塊做起來不復(fù)雜但涉及權(quán)限模型設(shè)計得想清楚跨租戶協(xié)作這種邊界情況怎么處理。第三是Agent質(zhì)量度量。系統(tǒng)跑著跑著注冊表里會有大量歷史數(shù)據(jù)——哪些Agent被調(diào)用得多、哪些Agent經(jīng)常超時、哪些能力匹配總是失敗。這些數(shù)據(jù)可以加工成Agent可用性報告、質(zhì)量評分。如果能做出來對上層做Agent調(diào)度決策會是很好的數(shù)據(jù)支撐。最后說說對Agent生態(tài)的一點個人體會。Agent-Reach這類基礎(chǔ)設(shè)施的價值不在于讓單個Agent變聰明而在于讓多個Agent能夠像同一個團隊一樣協(xié)作——各自有專長、知道隊友能干什么、消息能可靠送達(dá)。單Agent的能力天花板終究有限真正的質(zhì)變發(fā)生在協(xié)作層。這個項目讓我比較欣慰的地方是它沒有跟任何具體Agent框架綁定是一個獨立的中間層。等以后Agent框架之間的邊界越來越模糊類似Agent-Reach這樣的通信底座可能會成為Agent架構(gòu)里不可或缺的一塊。如果你手上也有幾套割裂的Agent在跑試試把發(fā)現(xiàn)、路由、契約這三件事抽出來做成一個獨立服務(wù)你會明顯感受到集成成本和變更成本同時降下來。這就是Agent-Reach最核心的一句話總結(jié)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日本在线观看99| 日本wwww在线| 激情五月天小说网| 26UUU一区二区| www.久久| 久久A区B区| 五月五月婷婷| 国产精品天天狠天天看| 性视频久久| 热久久77777| 九九色video| 超碰99热精品| 九九精品网| 久久久久婷婷| 国产.亚洲.欧洲视频在线| 大香蕉520| 狠狠色无码| 影音先锋男人资源站一区二区| 五月丁香天堂网| 亚洲色婷婷激情| 玖玖综合玖玖| 婷婷在线中文字幕| 婷婷综合网站| 日日夜夜天天综合| 97好吊操| 激情六月五月婷婷综合网| 青青日韩| 青青日韩| 成人丁香五月婷| 国产肥白大熟妇BBBB视频| 女高怪谈在线观看| 99er精品视频| 美英法精品无码免费视频| 九九综合九九| 国产日韩av片| 久久刺激网| 婷婷丁香久久网| 99久久玖玖| 狠狠狠人妻| 色婷婷综合综合网| 99久热在线精品99re6热| 日本色五月| 四色五月婷婷| 久久综合激情婷婷激情| 亚洲五月天婷婷在线| WWW色五月天| 久久五月激情| 六月丁香久久| 五月婷婷色播视频| 蜜乳.comcom| 成人视屏在线观看| 精品在线| 另类图片 五月激情| 色婷婷色五月另类综合| 日韩抽插操逼| 天天檫天天爽| 九九免费精品| 五月丁香六月| 日韩操人| 成人必爱视| 色五月婷婷基地| 大香蕉七区| 大香蕉伊然在亚洲90| 国精产品一区一区三区免费视频| 97干干干丁香| 亚洲a片免费观看| 久久久国产精品黄毛片| 婷婷黄色网| 92久操视频| 亚洲激情Av| 日本wwww在线| 婷婷五月综合网| 免费啪啪亚州视频| 国产色丁香| 色色热99| 久久精品亚洲一级牲爱综合| 久久这里有| 精a品a| 天天檫天天爽| 91日视频| 国产精品第一国产精品| 久久99久久久久久久噜噜| 天天射色五月天| 777久久久| 9精品一区| 中文字幕激情综合| 99爱免费在线观看| 青青草成人网| 欧美在线干| 色婷婷影视| 国产欧美日韩综合精品一区二区| 色综合九九| 天天婷婷综合| 人人爱国产| 久久九九热视频| 9久热免费视频99| 丁香六月啪啪啪| 九九这里只有精品| 任你搞在线观看视频| 大香蕉人人人| 五六月丁香激情视频| 五月开心激情网| 五月天婷婷激情综合| 日日夜夜天天| 色色亚洲99com| 天堂久久大香蕉| 538任你爽| 丁香五月欧美成人| 久久丁香五月| 欧美日韩精品人妻狠狠躁免费视频| 婷婷激情五月呦呦| 精品视频这里只有精品| 狠狠干夜夜干| 国产精产国品一二三在观看| 网色99| 激情久久久| 天天高潮夜夜爽| av九九| 色色色欧美色色| 九九色大香蕉| 91日本在线免费| 激情综合啪啪啪| 99亚洲无码| 91操碰| www.色多多婷| WWW丁香五月| www.成人婷婷综合| 色色欧美。| 五月激情网站| 激情综合一| 无码激情AAAAA片-区区| 99热欧美在线观看| 亚洲婷婷免费| 99在线热| 91九色精品| 国产精品A片在线| 亚洲婷婷五月天综合| 月婷婷婷婷五月| 五月天激情小说| 99久re热| 日本99在线视频| www.色欲丁香婷婷| 激情网综合| 九九精品热| www.com亚洲网站在线免费| 婷婷五月情天| 99re熱| 开心五月激情婷婷| 欧美色激情四射| 五月色亭丁香| 午夜少妇在线观看视频| 噜噜噜噜噜日本视频| 人妻久久婷婷| 婷婷丁香熟妇综合网| 几激情五月婷婷色五月色天堂| 日本猛少妇色XXXXX猛叫| 亚洲在线操| 丁香五月天之婷婷影院| 182TV大香蕉| 淫荡综合网| 日日日日日| 午夜婷婷丁香| 激情五月天婷婷| 97人人做| 182TV大香蕉| 色综合久久综合| 日本va欧美va欧美va| 最近免费中文字幕大全高清大全1 色狠狠色噜噜AV天堂五区 | www久久久| 色情五月婷| 高清无码入口| 狠狠久久婷五月| 五月婷婷亚洲| 婷婷在线观看五月天在线视频| 中文无码婷婷| 日韩成人五月天| 五月丁香影院| 五月丁香龟婷婷| 久久人人添人人爽添人人片αV| 亚洲精品久久久久久久久久吃药| 去色色五月天| 日韩九九| 26uuu亚洲欧美| 91fuliwang| 婷婷六月综合基地| 日日噜狠狠色综| 婷婷中文字幕| 99在线亚洲| 久久hd| 黄色五月婷婷| 综合网五月天123| 精品五月花| 色婷婷亚洲精品天天综| 91五月天| 在线成人国产| 激情亚洲网| 婷婷午夜精品久久久| www.婷婷五月| 热99只有精品| 九月婷婷| 丁香五月激情欧美| 丰满老熟妇BBBBB搡BBB| 久久这里有精品| 7超碰自拍| 婷婷五月天av| 日韩啊啊啊| 97久久人人| 丁香婷婷啪啪| 婷婷五月色| 国产韩日亚洲美州欧亚综合在线| 丁香五月婷婷操逼| 五月丁香啪啪| 婷婷五月天成人综合网| 婷婷五月天成人网| 亚洲成人av在线观看| 91婷婷丁香五月| 久月丁香爱婷婷综合| www。五月,com| 欧美日韩成人免费在线| 五月天婷婷视频30| 激情精品久久| 婷婷五月天AV| 偷拍91九色| 丁香啪啪| 亚洲欧洲另类| 亚洲综合无码| 色婷婷亚洲六月婷婷中文字幕| 婷婷久久18| 俺去也五月| 激情五月六月婷婷| 国内婷婷丁香社区在线播放| 久久久性爱网| 婷婷丁香综合| 久草嫩草在线观看| 久久婷婷五月综合色丁香花| 丁香六月啪啪| 九九热在线观看视频| 五月天国产婷婷精品视频在线| 色婷婷XXXXX| 日韩成人电影av| 玖玖在线视频| 五月天成人免费视频| www.狠狠| www.99热| 怡红院院久久| 五月丁香婷婷久久| 日日色五月天| 色色综合日韩| 婷婷五六月丁香| 婷婷七月丁香色色| 婷婷五月美女直播| 婷婷五月天无码熟女| 天堂爱啪啪| 激情婷婷激情在线不卡| 依人大香蕉在钱1| 婷婷色五月激情| 激情五月天小说| 丁香婷婷射| 欧美日韩成人在线| 色很很96| 色综合爱综合| 五月婷婷免费在线观看| 五月色欧美| caopeng超碰| 深爱激情中文五月天av| 丁香婷婷人妻| 婷婷五月天成人动漫 | 丁香色五月AV在线| www. 五月. com| 久久全意婷婷| 丁香五月激情啪啪啪| 91性交在线播放| 天天日天天爽| 牛牛澡牛牛爽| 国内在线99视频| 99情色五月天| 超碰色色综合| 26uuu.| 天天做综合| 热九九精品| 超碰大香蕉网| 丁香五月婷婷88在线| 色播播之激情五月婷婷| 婷婷激情5月| 欧美爆乳一区二区三区| 天天做天天爱天天爽| 天天舔天天爽| 9999久久久久| 九九精品视频在线6| 中文字幕乱轮| 色婷婷亚洲| 97婷婷色| Aaa久久| 色婷婷在线视频观看| 久久这里只有精品视频15| 色综合网页| 人人操人人妻| 人人操97| 插插五月天| 五月丁香在线综合| 丁香五月成人网| 白人荫道BBWBBB大荫道| 91色干| 九九Av| 成人小说 五月天 婷婷| 五月天六月婷婷| 欧日韩成人| 天天综合精品| 激情婷婷九月| 开心亚洲久久开心| 五月天com| 天天干天干| 婷婷色情 | 青青999| 91九色视频| 激情五月综合色婷婷| 超碰97久久| 大香蕉手机视频| 五月丁香六月婷婷中文版| 色色色色色网站| 婷婷五月丁香六月| 久久这里只有精品视频15 | 开心五月婷婷激情网| 月婷婷亚洲| 久久久久丁香婷婷五月天| 六月丁香综合| 国产特黄色精品一区二区三区精品无广告| 丁香五月天在线视频| 五月激情网综合| 日韩99视频| 欧美人与性动交CCOO| 丁香五月很很肏| 欧美人人操| 天天日日爽| 婷婷综合精品| www99xxxx五月丁| 91精品久久久久久77777| 99热这里只有精品 搜| 婷婷操逼| 五月婷婷婷综合网| 五月婷婷在线免费| 丁香五月伊人| 五月丁香六月婷婷中文版| 可以免费观看的av| 色色婷婷综合| 六月色色婷婷| 免费看欧美成人A片无码| a在线免费v| 婷婷爱五月天人人爱| 99热97| 国产精品操| 婷婷中文字暮| 夜夜穞天天穞狠狠穞AV美女按摩| 婷婷综合另类小说| 天天弄天天操| 五月婷婷综合激情| 99er6免费视频热播| 99久久久| 91操黄| 婷婷丁香五月激情图片| 日本狠狠干| 九九色影院| 天天日天天操心| 99久久婷婷综合| 玖玖福利视频资源| 九九热最新| 色婷精品91| 婷婷久久免费| AV在线大香蕉| 色五月天电影| 日本熟女三区| 伊人久久大香线蕉精品| 五月婷婷乱| 日韩成人影片网站| 综合欧美五月婷婷| 国产精品18久久久| 婷婷五月丁香成人| 三日本无码| 婷婷五月六月激情| 99热99| 26uuu精品一区二区| 极品五月天| 激情小说五月欧美亚洲丁香| 日本免费91| 九九精品综合| 色之综合网| 97操碰碰无码视频| 五月婷婷综合激情| 亚洲在线网站| 大香蕉99| 婷婷99综合| 激情五月com| 久久精彩视频| 天天爱天天做天天爽| AV中文网| 色五月五月天色婷婷色五月| 色五月天影视| ..真实国产乱子伦毛片| 玖玖五月丁香| 日韩砖区| 伊人九九九久| 99操视频| 五月丁香六月婷婷手机无线| 97se视频在线| 色婷婷激情| w婷婷五月婷婷w| 五月婷婷综合天天操| 丁香五月亚综合图片| 人人综合91网| 婷婷五月在线视频| 国产午夜精品久久久观看| 99视频91| 婷婷久草| 婷婷六月色开 | 色婷婷激情五月天| 91爱啪啪| 久热伊人| 五月天色婷婷小说| 国产AV成人精品| 久热这里精品免费| www.色色com| 99久久久| 午夜不卡久久精品无码免费| 涩涩网五月天| 五月亭大香蕉| 亚洲国产精品二二三三区| 99日这里只有精品| 狠狠色婷婷7777久| 亚洲在线免费成人| 东京热免费视频| 天天摸日日舔狠狠添婷婷婷| 熟女91九色| 日本猛少妇色XXXXX猛叫| 丁香五月天社区| 丁香五月婷婷成人色区| 99re久热只有精品6在线直播.com| 九九香蕉网| 亚洲操B| 午夜 外网 精品 在线| 五月婷婷婷| 国产伦亲子伦亲子视频观看| 色色网站在线| 色播五月综合网| 五月丁香婷婷人体| 亚洲婷婷五月天综合| 开心五月婷婷综合在线精品素人| 国产欧美日韩综合精品一区二区| 丁香婷婷基地| 六月份天丁香婷婷| 色婷婷丁香香香蕉视频| 我爱婷婷五月天综合88| 婷婷五月蜜桃成人桃色丁香| 91精品久久久久久77777| A片天天| 伊人99热| 日本久久天堂| 色婷婷亚洲| 五月天涩涩| 色情激情五月| 激情小说五月天中文字幕| 亚洲最大在线| 99色在线视频观看| 99re视频在线精品| 伊人五月婷| 北京熟妇搡BBBB搡BBBB| 久久伊人五月天| 色色色综合网| 色色99| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 伍月婷丁香婷| 婷婷 久综合| 国产成人综合在线| 婷婷五月天堂| 综合激情伊人影视在线| 99久久婷婷国产综合精品青桔| 超碰在线中文字幕| 五月丁香六月成人| 婷婷五月天性爱视频| 一本大道伊人AV久久综合| 99免费视频| 99爱视频在线观看这里只有精品| 亚洲综合五月| 成人无码髙潮喷水A片| 天天爽天天操| 五月天色婷婷综合| 免费视频WWW在线观看网站| 久久大香蕉| 99啪啪| 熟女人妻一区二区三区免费看| 五月丁香婷婷综合| 新激情婷婷| 丁香五月瑟瑟| 丁香五月网| 99热e| 激情五月婷婷丁香六月| 99热这里只有精品1998| 伊人网碰碰| 五月天综合视频| 国产肥白大熟妇BBBB视频| 99色综合久久| 五月婷婷黄色| 五月婷婷福利| 婷婷久久综合久| 五月婷在线| 青草青草视频2免费观看| 韩国中文字幕91| 激情国产五月| 天堂资源欧日浪女在线播放| 久久99激情| 五月丁香婷婷婷婷综合网| 亚洲色色色色| 色五月天丁香婷婷| 另类少妇人与禽zOZZ0性伦| 少妇伦子伦精品无吗| 五月天婷婷青青草| 激情五月天视频| 99热这里只有精品13| 99九九精品视频| 99久热| www五月| 九月丁香网婷婷| 五月丁香久久综合色| 天天狠狠婷婷在线| 丁香五月婷婷影院| 天天操天天操天天操天天操天天操 | 丁香操逼| 五月天亚洲图片婷婷| 色婷婷丁香五月丁香| 五月婷婷六月婷| 激情婷婷五月| 99视频这里有精品| 人操综合| 色人久夂| 亚洲mm色| 五月天久久婷婷| 成人做爰A片免费看网站找不到了 国产露脸150部国语对白 | 婷婷新网址| 永久无码色| 色XX综合网| 99无码| 一二线视频 另类| 99热最新精品| 色婷亚洲| 亚洲电影在线观看| 四川BBB搡BBB搡多人乱亂| 婷丁香五月天| 五月婷婷丁香五月婷婷丁香| 五月天婷婷青青草| 五月丁香久久激情网| 狠狠搞狠狠操| 99在线精品观看99| 久久久中文| 亚洲免费观看高清完整版AV线| 国产色五月| 在线理论片| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 国产熟妇乱子伦hd| 丁香五月老师| 久久五月婷天天干| 综合图区激情| 国产精品24r| 日逼免费视频| 热久综合| 丁香五月激情在线| 久久亭亭电影| 天天人人人人人人人人人人人| 六月婷婷天堂| 日本色色色| 五月天婷婷色色首页| 亚洲热久久| 丁香六月天婷婷| 丁香成人色情五月天| 无毒黄色网址| 婷婷的色色五月天| 婷婷91| 99这里只有精品| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 99精品在线观看视频| 99热99美国在线观看| 天天做天天爱天天玩| 香蕉乱插| 伊人91| 亚洲va日| 综合网精品99| 视频一二区| 丁香五月综合| 色www久视频| av人人操| 五月天婷婷社区久久综合| 99re热在线视频观看| 婷婷综合视频| 激情综合久久| 天天干天天射综合网| 丁香五月玖玖| 97资源碰碰| anquye伊人| 丰满少妇猛烈A片免费看观看| 久热这里只有精品99re,久热这里只有精品7| 激情人妻蜜夜系列区| 欧美色色网| 五月天激情久久| 综合五月婷婷| 九九热视| 蜜桃婷婷五月| 免费啪啪啪网站| 超碰免费99| 桃色伊人在线| 超碰在线国产9| 五月天激情国产综合婷婷婷| 天天婷婷| 欧美婷婷五月激情| 九色无码| 国内一级片| 99a级片| 少妇口诉沐足视频播放器网址| 丁香六月婷婷社区| 久久久中文| 99久久网站| 操人妻90p| 成年视频免费观看| 亚洲最大成人综合网720P| 思思久久99| 色五月av伊人| 婷婷永久在线| 五月天色色色色色| 色伦专区97中文字幕| www.狠狠| 97韩国久久电影院| 丁香五月自拍| 久99综合婷婷| 激情啪啪五月天| 99∨VTV| 日本三久久| www色五月天| 激情五月天婷婷久久久久久久久久久| 午夜丁香六月婷| 久久久一级AAA| 色爱五月天| 激情综合网五月天| 五月婷婷五月天亚洲无码| 午夜色色色极品视频| 国产精品日日躁夜夜躁| 日日噜狠狠色| 久久开心五月婷婷| 日韩av大全| 他改变了拜占庭| 婷婷激情视频| cao久久| 抽插特写| 九月丁香久久网| 亚洲精品99| 日韩色色视频| 99热综合| 夜夜撸天天操| 丁香六月五月天| 六月丁香色色| 婷婷丁香花五月天| 五月婷婷深深爱| 亚洲色优| 色色色色色色网站| 成人精品亚洲性爱| 激情色色色| 强伦轩人妻一区二区电影| 精品三区影院| 毛片色五月| 五月婷婷说| 美英法精品无码免费视频| 夜夜夜夜做天天天做无码视频| wWwCom夜操wwW| 日本99视频| 久久婷婷精品| 五月天婷婷综合久久| 9久热| 五月婷婷干干干| 我爱大香蕉| 丁香六月婷婷综情欧美| 开心 五月 综合| 婷婷丁香六月五月天| 99久久久国产大片| 色婷婷五月天天天做| 综合在线丁香五月| 久久激情五月网| 亚洲无码AV片| xxxx久| 深夜男女福利刺激影院一区完整| aaaaa黄色| 久久只有精品| 婷婷五月久久| 六月婷婷色综合| 五月丁香91| 99在线观看精品视频| 五月婷婷六月丁香| 久综合4| 色色影院黄大片| 久久色天堂| www.91.com处女在线直播| 亚洲AAA| 亚洲av骚货| 狼人婷婷久久| 五月婷婷五月天| 色99久草在线| 亚洲视频二区| 丁香六月婷婷高清| 天天操婷婷| 99色在线| 一区二区你懂的| 欧日韩成人| 婷婷五月天无码视频| 蜜臀嫩草| 综合久久婷婷| 精品国婬伦V无码久久久| 丁香五月欧美色综合| Xx色综合| 99热都是精品| 国产午夜精品一区二区三区嫩草| 国产黄色av| 天天操夜夜爽天天操| 99爱视频免费看| 色婷| 欧美,日韩成人在线| www.婷婷六月天| 五月天激情婷婷丁香| 色综合久久中文| 香蕉AV777XXX色综合一区| 777久久久| 99高级会所久久| 天天综合色| 狠狠精品干练久久久无码中文字幕| ady狠狠入| 天天色爽| 亚洲人妻av| 久久日曰| 五月综合影院| 天天日日夜夜| 中美月韩免费A片| 无月播播激情在线观看视频| 色综合久久888| 成人毛片在线免费观看| 五月亭亭综合五码| 亚洲精品无码一区二区| 婷婷色情网| 久久亭亭电影| 深爱激情小说五月婷婷| 色色五月婷| 狠狠色综合网站久久久久| 色婷婷五月天天天天天天天天天| 婷婷五月天堂| 丁香五月天婷婷91| 五月天色婷婷伊人网| 99操| 97色色色色| 久久资源网五月婷| 日本三级毛片| 99热a片免| 激情98色婷婷五| 久久国产精品乱子伦_靑青草…| 日韩在线9| 伊人9草在线观看| 五月婷婷开心丁香| 综合久久五| 5月色亭亭视频| 五月开心网| 丁香五月成人| 日日操日日撸| 99久久免费性爱视频`| 天天射综合网站| 日韩在线视频网站| xx久久| 婷婷99狠狠躁天天躁中文| 激情深爱五月| 久久女人九九| 51国精产品自偷自偷综合| 香蕉五月婷婷| 舔色婷婷| 丁香六月婷| 丁香 亚洲 久久| 亚洲碰碰碰| www.henhenl| 国产白丝在线一区| 色婷五月| 亚洲色婷婷色| 久久er99热精品一区二区| 丁香五月婷婷少妇| 亚洲日韩乱码一区二区三区四区 | 色情婷| 91人人操人人爱| 婷婷性爱影院| 丁香六月啪| 五月丁香六月婷婷中合网| 精品欧美一区二区三区久久久| 6080av| 丁香六月婷婷激情| 五月天综合色| 婷婷久久五月| 北京熟妇搡BBBB搡BBBB| 五月天婷婷永久免费视频| 婷婷五月丁香四射| 色婷另类| 成人做爰A片免费看视频| 夜夜夜夜做天天天做无码视频| 99久久九九视频| 亚洲第一精品成人999久久精品| 97丁香视频| 爱久综合| 九九九午夜影院成人| 亚洲区在线| 九色无码| 色婷婷欧美在线| 99草在线免费观看视频| 色热久| 激情婷婷五月天网址| 久久激情四射| av在线免费播放| 千人斩操逼| 久久青青日本视频| 五月开心激情| 五月激情五月婷婷五月天在线| 六月婷婷九月丁香| 在线只有精品| 亚洲综合色色色| 99操| 另类亚洲电影| 国内外色色色色色成人视频| 思思热99在线视频| av在线资源| 人操综合| 五月色综合| 狠狠色噜噜狠狠| 国产亚洲99久久精品| 精品久9| 婷色五月| 色情五月停停丁香| 免费视频舔| 丁香婷婷五月人体| 色一情一乱一伦一区二区三区| 丁香五月天之婷婷影院| 天天操天天操综合| aaa久久| 色青青电影色五月| 综合色播| 97碰人人操| 久久精彩视频99| 婷婷久久网| 97超碰99热99| 国产精品人成A片一区二区| 天天爽天天| 激情美女五月天激情在线| 日韩黄黄| 婷婷色中文| 啪啪日热| 亚洲视频在线观看| 91久操| 丁香五月六月| 丁香五月激情视频| 亚色网站小视频| 超碰97人人操| 久热丁香| 九色视频入口91| 成人做爰高潮A片免费视频| 日韩综合久久| 五月婷婷丁香六月| 亚洲色模骚货| 人人干AV| 日韩五月天婷婷| 婷婷五月综合婷婷| 午夜色婷婷| 操人久久| 偷拍91九色| 99热在线爱| 婷婷酒色网| 色日本颜射| 伊人久久婷婷| 色五月 五月婷婷| 99精品久久| 亚洲精品99| 亚洲天堂热| 婷婷五月电影院| 婷婷丁香久久| 亚洲另类电影| 成人丁香五月| 久久综合爱| 99ri在线视频| 九九Av| 丁香六月婷婷久久综合| 五月丁香影院| 狠狠干五月天婷婷网| 大香蕉人妻| 97自拍视频在线| 五月天色色激情综合| 美日韩成人| 国产精品久久99| 人妻射精AV| 欧美丁香六月在线观看视频| 亚洲婷婷月丁香五月| 婷婷亚洲五月丁香综合在线| 婷婷色香六月综合激情| 激情纯色婷婷五月天在线不卡视频| 婷婷综合五月天激情| 甈吧vv| 色婷婷五月天在线| 99re热视频这里只精品| 婷婷五月六月丁香| 久久五月网| 天天弄天天操| 国产精品第一国产精品| 91色综合久久| 少妇婷婷五月天| 成年人夜夜喷水| 99惹在线精品免费观看| 色天天综合色| 99热无码| 国产avapp 网| 这里有精品| 精品成人在线| 丁香五月大香蕉AV| 欧美日韩999| 嫩草综合网| 六月久久狠狠| 久热69| 五月香婷婷| 北条麻妃伊人 | 五月天激情站| 婷婷五月天干干| 色七七九九| 天天爽天天| 依人大香蕉在钱1| 成人AV中文字幕| 激情五月深爱五月| 婷婷情色激情| 综合久久影院| 欧美69久成人做爰视频| 丁香五月97视频| www.久久99| 欧洲亚洲激情五月天在线| 五月天成人在线播放| 夜夜撸日日操| 五月婷av| 五月丁香六月婷婷,婷| 久久久精品色色色| www色婷婷久久综合久色| 亚洲 五月 婷婷 成人| 91avse| 人妻第九页| 色婷婷狠| 可以直接看的AV网站| 亚洲啪啪视频| 欧美十二区| 婷婷丁香六月| 五月婷婷,六月丁香| 九九aV| 99热色婷婷| 婷婷爱综合| 色五月婷婷91| av免费在线看不卡无毒| 久久精品视频99| 五月丁香龟婷婷| 激情综合网五月婷婷| 超级碰碰碰久久网站| www,8050,午夜三级| 亚洲视色| 人妻熟女一区二区AV| 九色自拍| 丁香五月香蕉| 久久婷婷青青草| 久er免费视频| 天天肏天天肏天天肏| 九九色婷| wwxx日本| 99久久久久| 婷婷玖玖丁香| 特级片神马电影| 色九九综合| 五月伊人网| 激情综合五月婷婷丁香| 婷婷五月丁香基| 热热久久精品视频| 五月丁香福利| 色九九七七| 99爱在线观看视频| 国产看真人毛片爱做A片| 五月婷婷xxx| 狠狠爱婷婷| 色色综合院| 综合伊人狠狠| www.丁香六月婷婷久久天堂影院.con| 99 热| 激情综合啪啪| 色九月欧美| 色综合色色色| 一区操| 久久精品视频9| 超碰在线免费观看日韩| 一区二区三区四区五区| 日日爽日日| 97久久人人| 五月综合激情| 婷婷九色| 狠狠五月天| 亚洲成人无码片| 激情五月丁香六月| 久久免费干| 九九久热| 五月婷婷,六月婷婷| 日日夜夜天天综合| 韩日AV片| 天天爱天天吃狠天天透| 99热久久日本| 天天天干夜夜夜操| 五月间天堂综合| 可以免费观看的AV| 久久九九国产| 综激情网| 亚洲久热| 激情五月婷婷综合| 我爱宗和色| www婷婷色| 噜噜久| 六月丁香成人| 九九大香视频| 99久久九九| 久久五月综合| 丁香五月激情六月综合| 99热色精品| 婷婷射图| 极品人妻VideOssS人妻| 亚洲中文无码成人| 9久久狠狠的| 开心五月激情婷婷| 99精品女人天堂| 99人碰碰碰| AV伊人青草丁香六月| CHINESE熟女老女人HD视频 | 丁香六月在线| 色色网站在线免费观看视频| 牛色色碰| 狠狠色综合精品视频在线| 亚洲色婷婷五月天| 色五月激情婷婷| 婷婷五月天亚洲天堂| 婷婷综合国产| 91丨九色丨熟女|新版| 久久五月天精品视频| 97在线观看| 久久五月天婷婷| 久久99网站| 九九综合九| 狠狠色大香蕉| 熟女激情网| 五月色情精品| 婷婷综合色色| 五月丁香六月婷婷综合伊人| 激情婷婷九月| 欧美久热| 亚洲另类视频| 久久五月天激情美女| 婷婷五月丁香基| 4438激情网| 91热er| 啪啪色区| 国产毛多水多女人A片| 色情婷婷五月天| site:xmssd.com| 色色色色色日韩午夜激情 | 在线观看996精品| 五月开心网| 久久这里只有精品热在99| 天天爱天天做天天日| 91综合网| 99精彩视频| 色爱综合网| 精品无码人妻一区| 99日精品视频| 日本操天堂| 色999五月色| 思思热精品在线观看| 五月丁香婷婷爱激情综合网| 丁香五月婷婷亚洲天堂| 97在线视频观看| 五月丁香色综合| 囯产精品一品二区三区| 久久99婷婷| 色站9/| 又大又粗九一在线| 四色五月婷婷| 日韩综合久| 亚洲色综合性| 六月激情婷婷色| 婷婷五月综合社区| 超碰人人妻| 青青草免费公开视频| 色爱综合网| 亚洲国产99| 婷婷丁香五月天中文字幕| 精品无码av丁香五月激情| 欧美日本黄色| 五月丁香888| 色综合视频在线| 99热久久这里只有精品| 另类视频综合| 久热免费视频| 欧洲激情精品婷婷| 婷婷色五月情| 五月天婷婷爱丁香中文字幕| AV在线资源| 欧美性爱一区| 色综合久久综合| 丁香五月色激情| 91打屁股免费看| 色激情五月天| 日本天天色| 99ri在线视频| 色玖玖爱| 丁香五月手机在线| 97欧美在线| 婷婷五月天成人网| 亚洲五月停停| 五月天天堂久久| 色月丁| 激情丁香久久| 六月丁香婷婷综合影院| 在线日韩av| 丁香六月综合| 九九伦子片| 韩国不卡AC视频| 99@久久@99精品视频| 97色干在线观看| 丁香六月婷婷色XXXX| 久热在线中文字幕色999舞| 日本猛少妇色XXXXX猛叫| 色婷婷狠狠| 蜜桃成语时李时珍 免费| 激情五月综合| 欧美S码亚洲码精品M码| 天天射影院| 1024国产在线| 国模九区| 狠狠色婷婷色| 婷婷综合一二三| 久久99精品日本| 久婷婷婷| 如何安全看伊人婷婷| 激情婷婷内射| 五月天全国最大成人网| 五月天电影网| 五月婷婷婷婷| 欧美久久网| 超碰av在线| 天天综合色| 九九爱激情| 综合九九久久| 色色激情网| 五月天天丁香婷婷在线中| 狠狠干2007| 常久最新免费的色吊丝| 婷婷中文字幕| AV大香蕉| 97caop| 婷婷丁香色性爱| 色婷婷操逼| 六月婷婷无码观看| 深爱激情网综合| 啪啪婷婷五月天激情| 日日干天天| 欧美A级成人婬片免费看理论| 啪啪色激情五月天| 久操综合| 亚洲丁香五月深爱五月| 丁香六月激情综合啪啪| 色五月天丁香婷婷| www色色com| 91操女| 操97| 激情五月天婷婷视频| 超碰99热精品| 99在线精品视频| 亚洲激情六月丁香| 婷婷五月天色色| 91小黄书网址在线观看| 婷婷五月丁香欧洲| 99久热| 99视频极品在线香蕉| av九九| 亚洲激情97五月天| AV九九| 九一九九黄色| site:901-07.com| 九九色综合九九色| 日日夜夜干| 丁香五月婷婷99| 日日色五月天| 九九99热久久精品66中文字幕| 色噜噜综合网| 一起草av在线观看| \\五月天婷婷激情| 99操无码视频观看| 婷婷香蕉精品| 99久久9| 99热无码首页| 天天日天天色| 丁香五月情| 五月丁香激情在线| 999热这里只有精品| 久久久色情| 人人干天天操五月丁香| 91精品久久久久久久久| www,婷婷,com| 久久只有精| 久久天堂| 一区二区无码视频| 青青热久精品视频在线观看| 久久98热re| 亚洲中文字幕在线电影| 99极品视频| 超碰99热| 五月天久久网站| 丁香婷婷成人在线播放| 91婷婷| 91热久久| 亚洲综合另类| www.婷婷久久五月天| 综合逼五月激情婷婷| 五月婷婷大香蕉| 夜夜躁婷婷AV| 亚洲热热视频| 中文字幕操比影片| 伊人超碰| 97香蕉碰碰人妻国产欧美| 99热亚洲| 婷婷五月天国产在线播放| 欧美三级视频| 婷婷激情鹿城五月天| 五月婷久久| a网站免费观看| 久热综合| 久久婷婷五月综合伊人| 久草热在线视频| 在线综合91| 99无吗| 婷婷激情97| 色狠狠色综合| 九月停停| 色天天综合| 99视频综合| 五月停停丁香| AⅤ网站在线看| caopeng97日韩| 成人午夜视频精品一区| 婷婷五月天 偷拍| 九九香蕉网| 噜噜综合网| 日日做A爰片久久毛片A片英语| 在线va网站| 五月丁香亭亭| 激情婷婷五月社区| 九月丁香八月婷婷久久综合久97| 97干婷婷| 婷婷五月婷婷| 九热电影av| 日婷婷| 精品九九网| 美欧成人视频| 91精品婷婷国产综合| 中文字幕,综合,91| 丁香五月手机在线| 亚洲成人网站在线观看| 99热99网|