免费国产精品自在自线-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热免费最新版| 亚洲亚洲人成综合网络| 丁香六月婷婷综合| 99爱视频| 怡红院一二三| 激情五月婷婷在线| 五月丁香WWW| 色五月美女| 亚洲九区| 激情第四色| 99热6这里之有精品| 97亚洲精品| 99热偷拍| 91久久久久久| 六月婷婷综合| 日韩久综合| 996热re视频精品视频| 99热这里只有精品13| 五月天综合激情网| 色色激情网| 激情婷婷丁香五月| 国产毛片精品一区二区色欲黄A片| 免费播放片大片| 5月婷婷性视频| 在线中文av| 五月综合激情网| 97香蕉碰碰人妻国产欧美| 无码区婷婷五月花开| 视频这里只有精品16| 激情丁香九九五月综合网| 草草色情综合网| 狠狠色色| 日本婷婷| 爱射综合| 嫩草AV久久伊人妇女超级A| 99啪啪| 综合久久五月天| 五月丁香综合久久| 精品色色色| 狠狠干五月丁香| 婷婷五月成人色综合| 婷婷丁香五月天影院 | 99热这里只有精品50| 99er这里只有精品| 99热在这里只有免费精品| 99天堂网| 婷婷激情综合网| 五月激情丁香久久综合网| 91九色 婷婷| 色色色色色日韩午夜激情 | 97亚洲色 torrent magnet| 色天堂97| 丁香五月天色综合| 这里只有精品视频一区| 人人色婷婷| 五月丁香激情综合久久| 深爱激情五月网| 激情五月天婷婷| 五月婷婷综合在线| 丁香九月色| 男女激情久久| 99精品久久久久久久| 久热久操久热久草国产91| 九热av| 婷婷激情综合色五月久久91| 另类图片天天影视在线观看| 99色视频在线观看| 久色大| 无码人妻电影| 国产XXXX搡XXXXX搡麻豆| 久久九网| 成人噜噜网| 色综合99| 天天五月天综合网址| 丁香五月婷综合网| 另类小说五月天| 福利视频在线播放| 色色色在线观看| 成人在线网站| 思思久久思思| 伊人玖玖网| 婷婷丁香97| 婷婷激情五月天激情在线| 青青操绿aaa一区日v| 激情综合婷婷| 黄色AV日韩| 人人爱操| 国产熟女大叫受不了| 成人av在线网站| 日本女天天爽| 自拍偷窥99热| 男人的天堂在线婷婷| aaa久久| 日 日干 日日做| 97色色色色色| 成人草榴视频| 五月天五月色婷婷综合| 婷婷另类小说| 狠狠操狠狠色| 天天人人天天爽| www99热| 99亚州综合精品成人网| 大香婷婷| 国产成人+亚洲+欧洲| 九九色影视| 五月婷婷激情啪啪| 激情狠狠丁香月| 99九九玖玖| 丁香情色五月| 亚洲小说欧美激情| 青草青草久热这里只有精品| 26uuu另类亚洲欧美日本一| 日本啪啪网| 亚洲情综合五月天| 99精品国产热久久91色欲| a久久免费视频| 五月天激情婷婷| 天天操五月天| 四月婷婷五月丁香| 操操熟女| 婷婷五月18永久免费视频| 激情综合色| 丁香视频| 欧美日本另类| 欧美日韩国产一区二区| 欧洲色| 亚洲精品又粗又大又爽A片| 五月婷婷啪啪啪| 99热99热不卡| 丁香五月 性爱| 色综合久久五月| 成人五月天丁香| 级人人91| 激情欧美丁香五月| 人人操 色| wwwC0maV五月花| 日韩婷婷| 伊人六月丁香婷婷| 五月综合激情网| 婷婷中文字幕版| 色99视频| 99视频在线观看视频| 国产玖玖资源| 俺去也在线www色官网| 99热天堂| 91狠狠色丁香| 久久婷婷色综合| 婷婷五月天激情网| 香蕉综合在线| 九九色逼| 久久只这里有精品| 一起草aV| 五月丁香激情综合| 日本色婷婷五月天成人电影| 久久久久9久无码视频| 深爱激情小说五月婷婷| 九月丁香很很色| 色久五月| 9久久久| 激情五月天伊人影院| 免费一区二区三区| 99只有精品| 99久热精品在线| 这里只有精品视频在线| 操操碰| 久热这里只有| 香蕉AV777XXX色综合一区| 婷婷五月丁香综合瑟瑟| 人妻视频在线| 婷婷免费成人视频| 99久久終合| 天天舔天天爽| 综合亚洲色色| 五月婷天堂视频| 激情六月色| 五月婷婷导航| 极品少妇高潮啪啪AV无码| 综合五月天天天天天五月| 欧美亚洲色色色色| 少妇人妻人伦A片| 九九99久久| 爱射综合| 色色色五月婷| 这里只有精品视频看看| 欧美人人女女精品综合五月天| 五月丁香福利| 五月婷婷九月婷婷九月婷婷| 五月婷婷综合网| 国产AV一区二区三区最新精品| 五月丁香婷婷激激激综合网色播| 久久久精品人妻| 99a级片| 这里只有精品在线观看视频| 丁香婷婷噜噜| 日日噜噜久久婷婷五月天| 久热精彩视频98| 五月丁香综合激情网| 噜综合| 婷婷五月天大香蕉在线视频观看| 天天干电影| 色婷婷激情视频| 久久加勒比| 色色色网站| 丁香五月无码| 久久这里只有精品07| 婷婷新网址| 久9热| 夜夜骑福利资源| 欧美色色色色色色色色色色| a毛片二逼wwwwwwwwww| 婷婷丁香花五月天| 五月婷婷丁香俺日污视频| 色5月婷婷| 影音先锋AV男人站| 久9热视频在线| 操操人人| 深爱五月天| 99热这里只有精品2016| 99这里精品| av在线免费网站| 三级毛片视频| 内射人妻视频国内| 99热8| 亚洲人人操| 婷婷四色五月| 狠狠干青青草| 天天天天天色| 日本狠狠爽| 青青草原亚洲天堂| 五月婷婷五月天| 精品视频网| 国产成人精品一区二三区熟女在线| 亚洲人成色A777777在线观看| 亚洲女婷婷五月基地综合久久久| 九九综合精品| www.激情在线| 婷婷五月激情六月丁香| 涩涩涩,com| 91色在线/日韩| 婷婷中文网站| 九九视屏| 超碰成人在线观看| 九九综合伊人| 狠狠爱综合网| 激情五月婷婷网| 五月婷婷啪啪啪| 夜夜骑天天操| 五月婷婷开心网| WWW,婷婷,COM| 激情五月天天狠狠久久| 丁香五月开心亚洲| 九色视频91| 这里只有精品久久| 国产精品色婷婷99久久精品| 日韩九区| 久久精品99国产精品日本 | 夜夜爱爱亚洲| 国产精品视频免费看| 欧美WW在线网| 狠狠搞五月天| 五月丁香激情婷婷综合| 5月婷婷6月六月丁香| 夜夜夜夜夜操| 色欲丁香| 无码成人AAAAA毛片AI换脸| CHINESE熟女老女人HD视频| 久草热在线视频| 婷婷五月天综合网| 日韩AV免费电影在线播放| 深夜婷婷 丁香| 在线五月婷| 91丁香婷婷综合资源| 日本黄色在线观看| 久热这里只有精品在线观看| 这里只有精彩视| 色情五月停停丁香| 国产免费一区二区在线A片视频| 久久人妻久久| 婷婷丁香激情五月天色色色| 成人Av在线大片| 999热在线视频| 五月天婷婷色色| 九九99免费视频| 99啪啪视频| 男同91 | 日本黄色在线观看| 99亚色色色| 97深爱伊人综合| 色婷婷久综合久久一本国产AV| 日日操夜夜撸| 国产真实乱了老女人视频 | www.五月天婷婷| 色婷婷综合久久久久| 六月婷婷综合| 色婷婷最新域名| 婷婷大香蕉| 久久婷婷婷婷伊人| 操碰97| 五月婷婷很很色| 久操干| 欧亚色色| 成人网在线视频| 丁香五月激情网| 久久五月婷综合网| www..com色爱| 久机视频这只有精品| 国产成人精品一区二区三区视频| 婷婷97碰碰| 五月丁香激情综合六月涩涩爱| 欧美色色色色色| www.99热| 99啪| 自拍盗摄 另类| 综合色99| 色婷五月| 99无码视频| JAPANRCEP老熟妇乱子伦视频| 91seAV| 超碰色色综合| 色九月综合| 五月激情啪啪| 五月天激情久久| 五月婷三级片| 五月天开心婷婷久久| 色色色热热热| 我想看国产大学生口爆吞精的视频| 九九热色视频| 色婷婷久久久| 久超超碰| 91要啪| 91丨九色丨首页| 九九热这里只有精品5| www.99热这里只有精品| 久久91久久精品久久| 桃色五月婷婷| 九九热只有精品| 欧美超碰亚洲| 99视频这里只有精品10| 1024成人免费看| 黄色99视频| 丁香九月综合| 久操无码| 色偷偷综合| 99ri久久| 99精品热| 色婷婷XXXXX| 一区视频网站| 99亚洲天堂| www.99日本| 99久久五月丁香野外| 五月婷婷啪啪网| 爱久久小说下载网| 狠狠干思思热| 绿色小导航AV| 玖玖在线视| 久久色9| 天天爱天天操| 五月伊人网| 五月丁香色婷婷久久| 日本在线视频看se99| 亚洲综合丁香五月天| 国产精品成av人在线视午夜片| 伍月激情天| 五月天激情国产综合婷婷婷| 久热这里只有精品视频6| 中国操逼99| 色综合开心五月深爱五月| 麻豆WWWCOM内射软件| 日日天天操| 国产精品扒开腿做爽爽爽A片唱戏| 一个色的综合| 97操碰日本女人| 久久丁香五月婷| ...婷婷五月综合不卡,国产在线手机| 97色色综合| 91viP在线看| 思思热视频| 人人干天天操五月丁香| 婷婷丁香婷婷97| 色色色综合色| 中文字幕成人| 亚洲精品V天堂中文字幕| 亚洲无码成人性爰网| 中文字幕不卡网站| 婷婷五月激情的图片| 久久色情| 色啪久| 人人摸人人| 大香蕉九操| 五月天伊人| 亚洲激情97五月天| 久久香蕉网| 亚洲精品无人区| 婷婷激情社区| 26UUU一区二区| www.99热国产| 激情六月天婷婷| 99热久只有精品首页| 8050一级网| 爽天天天天天天天| 五月丁香六月欧美综合| 97操碰视频| 欧美操人| 九9九9无码| 欧美操人| 91青娱乐青青草| 最新午夜理论片| av人人操| 国产精品久久久久久妇女6080| 五月天天爱| 99精品久久| 丁香九月激情在线视频| 激情五月婷婷综合| 99九九综合久久九九| 婷婷六月丁香1| 爆乳熟女一区二区三区爆乳| αv中文字幕在线观| 99色热视频| 婷婷五月丁香伊人网| 97婷婷狠狠| 热99视频精品在线| 九九av| 五月丁香成人网| 狠色狠色狠色狠色狠色网| 婷婷玖玖丁香| 婷婷字幕在线| 欧美顶级少妇做爰HD| 伊人久久大香线蕉av一区| 伊人丁香婷婷东京| 久久成人性爱| 丁香五月在线人妻| 成人五月丁香社区| 婷婷色操| 91天堂网综合| 久9热插入| 中文字幕无码人妻少妇免费视频| www.色五月| 99视频在线精品免费观看2| 人人色性网| 超碰av在线| 高清成人综合| 激情五月婷婷啪啪| 五月丁香偷拍| 丁香香蕉婷婷| 色99婷婷五月天| 熟妇高潮一区av| 欧美精品99久久久| 五月婷婷基地| 五月丁香色综合| 97精品综合久久| 天天爱天天操| 美国不卡视频| 久久精品噜噜噜成人A∨色欲| 久久五月丁香综合| 久久五月热| 婷婷成人av| 色五月色综合| 骚逼视频一区2区| 日韩一级一片内射视频4K| 狠狠狠狠狠狠| 国产在线网| 亚洲六月综合激情久久下卡| 五月丁香婷婷激情图片| 人操91在线| 五月婷婷av在线| 9久久久久久久久久久| 五月丁香花婷婷玉莉AV| 日日夜夜久| 99er热精品视频| 激情五月,激情综合网| 日日做夜夜爱| 五月激情综合美女久久| 五月天婷婷久久| 久久综合影院| 婷婷久久综合| 久久久天堂国产精品女人| 综合色久| 婷婷5月久久综合网站| 操操操B| 黄色网址五月婷婷| 九九色区| WWW五月婷婷| 色色网站在线免费观看视频| 丰满人妻一区三区三区| 久热只有精品| 俺去也婷婷| 欧美成人AAA片一区国产精品| 色综合久久之分久久| 久久婷婷一级片| 31色区视频免费看| 操操人人| 伊人狠狠干| 色婷婷的五月天| 99啪啪视频| 噜噜噜狠狠色综合| 大香蕉啪啪啪啪啪啪| 91人操人人人操人| 色五月丁香婷婷综合| 九九机热| 丁香五月日韩| 麻豆WWWCOM内射软件| 日韩三级视频一区二区| 久久女婷| 丁香五月无码| 夜夜撸日日操| 激情综合婷婷久久| 九九视频这里是精品五月| 天天色激情| a在线观看| 思思久久久婷婷| 4399人妻无码久久久| 丁香激情合作五月| 婷综合| 中国女人做爰A片| 天天肏高清在线| 日本va网站| 九九热这里只有精品6| 99激情视频| 丁香综合久久| 久久视频九九视频| 狠狠做深爱婷婷久久综合一区| 人人摸人人操人人爱| 婷婷射图| 人妻操逼视频| 亚洲视频在线网站| aaaaaa片| 麻豆雪千夏| 91人人爱| 婷婷色天香| 久综合| 婷婷干| 99在线精品视频免费| 日本成人噜噜噜| 中文成人在线| 99热6这里只有精品6| 亚洲性视频| 欧美日本不卡黄色片| 97色色-99久久| 桃色五月天| 激情婷婷亚洲五月| 久久久com| 精品动漫 无码av| 亚洲精品又粗又大又爽A片| av人人操| 亚洲热视频在线| 色五月婷婷五月天| 色天天综合天天综合频道。| 99干视频| 婷婷六月综合基地| 丁香五月天在线| 日韩精品无码一区二区| 开心久久五月天| 999精品乱码77777| 激情五月婷黄版| 六月婷婷久久大全| 久久受www免费人成| 色婷婷五月天激情在线播放| 久久婷婷五月天| www.综合久久.com| 亚洲国产99| 日本久久极品| 五月婷婷色五月| 五月婷护士| 亚洲激情综合五月婷婷啪啪| 香蕉AV777XXX色综合一区| 视色网在线播放| 操91| 婷婷五月丁香高清无码| 久久性爱视频| 婷婷深爱网| 美女久久婷婷| 色播五月婷婷五月| 五月天停停日日| 五月天停婷基地| 久热超碰91| 色婷婷先锋| 欧美婷婷日本| 久久婷婷伊人| 婷婷五月久久| 亚洲AV另类| 六月丁香色色| 99热最新精品| 国产精品美女久久久久AV超清| 99热精品一区| 操日本色| 丁香五月色色| 99色啊| 婷婷丁香激情五月天色色色| 五月婷激情| 变态另类9| 97啪啪| 五月丁香久久久| 九月婷婷综合在线| 色婷婷香蕉| 五月天婷婷在线观看精品男人| 情五月亚洲婷婷| 色婷婷小说| 99热成人在线| 久久性爱视频| 99天堂在线观看免费视频| 综合激情站| 9久精品视频| 色色色五月婷婷| 俺去也在线视频| 玖玖激情网| 99综合网| 天天夜夜爽| AV在线大香蕉| 一本色道久久综合狠狠躁一二三| 久久与婷婷| 噜噜综合网| 婷婷五月六月| 欧洲第一无人区观看| 啪啪六月婷婷| 五月天激情综合网俺也去| 四川BBB搡BBB爽爽视频| 久久总和99| 婷婷 激情 五月| 色色九区| 欧美性生交xXxX久久久| 五月激情婷婷综合| 99热这里只有在线| 噜噜狠狠| 丁香五月天婷婷91| 色综合久久之分久久| 人人人操| 色婷婷丁香| 亚洲 精品 综合 精品| 婷婷色偷拍| 成人中文网| 亲子乱AV一区二区三区下载| 欧美激情综合色综合色| site:hcxsz888.com| 超碰在线资源| 亚洲乱码日产精品BD在线观看| av在线免费网站 | 久久婷婷五月综合| 97超级操操| 色综啪啪网| 九九色精品| 婷婷六月啪啪| 在线视频激情网站| 五月天婷婷爱| 欧美性爱5月天天天看| 99热网站| 9色视频在线| 丁香五月婷婷激情完整版| 国产成人精品一区二区三区视频| 久久五月激情综合| 午夜色丁香| 狠狠爱深色婷婷综合| 亚洲综合另类| 九九热精品视频| 久久作爱| 色色丁香婷婷| 超碰9| 婷婷五月激情图片| 丁香五月色欲| 欧洲免费视频色| 第四色婷婷五月| 人妻乱码久久久| 99re99热| 7月婷婷六月丁香| 日本超碰在线| 久久99免费视屏| 五月丁香激情四射综合| 秋霞A V毛片| 日本九九视频| 大香蕉天堂| 91精品婷婷国产综合| 99 福利 导航| 97资源碰碰在线| 丁香六月婷婷综合欧美| 九九综舍久久| 五月丁香 啪啪| 97人人干人人操| 九色视频91| 丁香五月婷婷激情小说| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 天堂网色婷婷| 99视频在线播放大全| 182TV亚洲| 亚洲另类婷婷综合| 亚洲中文无码成人| 69激情小说| 国产色五月| 人妻久久久久久久 | 99热色无码| 在线VA视频| 丁香五月综合在线播放| 天天日天天爱天天噪| 99热久| 色丁香五月| 久久99网| 人与禽A片啪啪| 97久久超视频| 伊人激情| 色综合综合色| 狠狠色噜噜狠狠| 99久久综合| 少妇真实被内射视频三四区| 伊人青涩网| 亚洲无码另类| 色 五月俺去也| 丁香婷婷噜噜| 激情五月婷| 真实的国产乱XXXX在线91| 91无码高清| 五月丁香色色综合| av性爱网站| 99久久激情视频| 桃色五月婷婷| 玖玖爱综合网| 五月天婷婷五月| 激情六月丁香| 久久婷婷丁香花综合网| 人妻久热| 综合六月激情婷婷| 婷婷五月天精品| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 亚洲这里只有精品| 久久久潮喷-久久久九九-成人AV| 人人澡玖玖一| 五月天深爱激情网| 一本色道久久综合狠狠躁小说| 五月婷婷香蕉| aaaaa不卡| 五月婷婷激情久久| 风流少妇A片一区二区蜜桃| 五月丁香色婷基地综合久久| 97涩涩丁香五月天| 婷婷亚洲天堂| 99精品偷拍视频| 五月丁香久久综合| 思思热在线| 黄网在线免费观| 九九色热| 67194中文字幕| 五月美女婷婷风骚| www色婷婷久久综合久色| 五月激情小说| 91高潮喷水久久久久久久久| 99在线观看视频蜜臀| 殴美激情综合网| 五月天综合色| 丁香婷婷伊人| 国外亚洲成AV人片在线观看| 婷婷激情五月综合| 99性爱视频| 五月婷婷伊| 婷婷爱综合| 久久99网| 亚洲AV网站| 91九色视频在线观看| 97碰 在线视频观看| 夜夜夜夜做天天天做无码视频| 超碰AV在线| 中文字幕丰满人妻无码专区| 五月丁香六月婷婷操操操| 久久综合婷婷激情| 欧美婷婷五月激情| 五月丁香大香蕉| 丁香五月激情婷婷视频| www久| 色五月婷婷1| 婷婷五月天在线一区| www...com黄在线观看| 激情图片婷婷| 色婷婷小说| 少妇婷婷五月天| 八戒青柠影视剧在线观看| 日韩色色小视频| 亚洲精品婷婷| 熟女婷婷网站一婷婷五月一丁香婷婷一婷婷激情网| 欧美日韩成人免费在线| 99大香蕉| 激情五月婷婷网| 青草青草久热这里只有精品| 直接看的av| 99热都是精品| 五月婷婷影| 99热1| 欧美在线看| 久99综合婷婷| 五月丁香啪啪啪| 亚洲色热| 天天艹夜夜爽| 青吴乐视频| 思思热视频在线观看| 哇嘎成人久久| 99在线播放视频| 久久久久妻| 九九成人视频| 色色婷婷综合网| 色婷婷亚洲综合天堂| 可以直接看的av| 久久多色| 99成人| 五月色欧洲| 日本在线观看aaa 99| 99爱在线视频| 婷婷99| 99在线精品免费视频| 五月婷婷狠狠干| 婷婷久久婷婷色五月| 日韩欧美成人片| 亚洲国产婷婷色五月| 国产成人精品一区二三区熟女在线| 99惹精品视频| 第四色网婷婷| 亚洲无码色| 婷婷色五月色妇| 色婷婷丁香社综合| 久久久久久综合88| 激情综合婷婷| 九九视屏| 丁香色婷婷| www.99成人视频| 日本99在线视频| 五月激情小说| 色色AV色色色东莞| 九九热这里只有精品556| 内射干少妇亚洲69XXX| 五月天激情视频网站| 91精品国产99久久久久久天美| 婷婷综合| A久久| 亚洲色色在线| 九九热婷婷| 疯狂做受XXXX高潮A片| 日日色综合| 99这里只有精品国产| 夜夜AVV| 成人在线视频网| 六月婷婷久久| 激情婷婷综合| 婷婷九月亚洲| 久久五月婷综合| 婷婷婷婷婷婷婷五月丁香| 五月婷久久在线| 婷婷精品视频| 超碰激情五月| 五月丁香婷婷无码A∨| 天天se在线视频| 99婷婷狠狠成为人免费视频| 婷婷射丁香| 九九精品视频在线观看| 久久欧洲久久| 肏屄色播伊人97婷婷| 激情五月天。| 久热超碰| 九九aV| 天天日本夜夜谢| 能看的av片| 国产激情综合五月久久| 综合网狠狠| αv中文字幕在线观| 成年人丁香五月| 丁香五月av| 天天色色天天| 亚洲精品色色色| 99热香港| 久热视频A.| 无码啪啪| 99干日本| 黑人无码一区| 久久久免费图片视频| 五月天综合在线网| 五月天偷拍| 五月综合久久| 九月丁香婷婷综合| 亚洲色图五月丁香| 五月丁香亚洲婷婷| 色婷婷丁香五月色综合网| 天天网站天天爽| 欧洲激情网站| 9九热视频| 五月丁香狠狠爱| 99久久99九九99九九九| 五月天丁香成人社| 五月天天综合| 九九99男女视频在线观看| 97伦乱| 激情五月丁香五月综合| 99色爱| 欧美黄色一级录像| 亚洲av| 4399无码视频| 超级碰碰97在线| 秋霞少妇AV网站| 91麻豆国产三级精品福利在线观看| AA片在线观看视频在线播放| 疯狂做受XXXX高潮A片| 色五月婷婷色| 大地9中文在线观看免费高清| 天天综合精品| 天天干天天拍| 日韩黄色中文字幕| 五月丁香六月激情| 有码一区二区三区| 美女爆乳18禁www久久久久久| 99九九精品视频推荐| 97碰精品| 超碰成人在线免费观看| 久久色午夜在线导航| www.99免费视频| 综合久久久| 伊人久久婷婷| sisi热国产| 噜噜噜噜在线| 第四色婷婷丁香五月| 色色国产| 天天狠狠夜夜狠狠2023| 99综合免费视频| 成人国产欧美大片一区| 奇米色大香蕉| 庭庭久久内射| 思思久久精品视频| 97韩国久久电影院| 国产精品电影网| 天天综合网站| 五月丁香久久久| 停停综合色色| 五月天无码| 六月婷婷狠狠做| 婷婷五月天激情文学| 久久总和99| 黑人糟蹋人妻HD中文字幕| 久9热视频在线| 色欲影香| 激情婷婷五月天伊人在线观看| 久热这里只有精品在线| 中文字幕,综合,91| 九九久久99| 色婷亚洲| 五月婷视频| 日本高清久久| 亚洲四色五月| 色之综合网| 狠狠草狠狠草| 丁香在线视频| 伊人大香久久| 99热大全在线观看| 99视频这里只有精品10| 26uuu成人网| 九九99九九精品视频| 婷婷九月色| 人妻自慰高清合集| 天天精品视频免费观看| 久久涩视频| 亚洲激情网| 激情五月综合网最新| 五月丁香亚洲综合| 9久热在线精品| 五月天婷婷六月激情网| 九热视频| 99热久久这里只有精品| 天天插天天射天天干| 狠狠搞综合色| 婷婷99中文字幕| se色婷婷视频| 久久综合这里只有精品1| 99热这里只有精彩| 日韩一区二区A片免费观看| 久久婷婷网| 婷婷色五月色| 97色干在线观看| 婷婷综合色色| 激情综合激情综合| 99干免费视频| 婷婷丁香五月天欧美| 玖玖无码中文| 99re视频在线| 五月丁香 啪啪啪| 五月丁香777| 国产无人区大片| 欧美精品熟女一区二区| 色婷婷小说| 激情婷婷丁香五月天小说| 伊人婷婷色| 人人综合色| 热热久久久久久久久| 伊人五月天在线| 日本乱论99| 99re鈥哸鈥唙| 久久涩视频| 五月激情偷拍婷婷| 色情成人五月天| 日本综合色色| 欧美视频五区| 在线超碰91| 六月婷婷在线视频| 婷婷丁香六月天激情四射网| 丁香婷婷五色月| 99精品偷自拍| 天天拍天天做视频| 九九久久综合| www.婷婷五月天,com| 久久伊人婷婷| 丁香五月婷婷AV| 在线观看av网站| 久久一级片| 六月激情网| 最新AV在线观看| 国产午夜一区二区三区| 91人妻九色大屁股| 婷婷丁香五月,狠狠综合| 中文字幕婷婷9月天| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 亚洲成人无码网站| 97超碰在线免费观看| 热久久这里只有精品| av第一二区| 丁香婷婷性久久| 99日精品视频| 婷婷五月色综合| 五月丁香久久久久| 国产亚洲99久久精品| 九九伊人网| 大香蕉久| 思99热精品久久只有精品| 婷婷丁香成人色综合| www.五月天激情| 色日本综合| 九九色图| 99热九九这里只有精品10| 激情综合五月天| 亚洲精品久久久久久久久久吃药| 日日操夜夜操狠狠操| 成人国产欧美大片一区| 九九热视频思思| 婷婷久久婷婷| 97av在线视频| 亚洲成色综合网站免费观看| 桃色成人网| 欧美成人网99网| www.色综合.com| 午夜色婷婷| 亭亭五月激情亚洲在线| Caoporn公开| 99福利导航| 色婷婷丁香六月| 噢美99| 七七色色综合| 天天弄天天爽| 91在线视频观看午夜福利| 婷婷六月综合激情| 五月天婷婷色| 91丁香色| 影视av久久久噜噜噜噜噜三级| 五月天激情综合网俺也去| 激情婷婷狠狠干综合| 丁香六月婷婷综合| 天天综合色丁香| 韩国不卡AC视频| 玖玖五月| 婷婷一本和五月丁香| 色99超碰| 五月丁香婷婷欧美| 激情婷婷五月基地| 无码激情| 日本色色视频| 婷婷午夜天| 伊人五月丁香| 色优久久| 超碰啪啪网| 激情综合网五月天| 婷婷六月激情综合| 激情五月综合色| 久在线综合69| 天天综合精品| 另类视频五月天| 激情五月天无码| 九九热re99re6在线精品| 日本熟妇乱妇熟色A片蜜桃| 婷婷五月天影视首页| 五月情综合| 91精品91久久久中77777久久玖玖九九| 国产精品一区在线观看你懂的| 丁香六月久久| 桔色成人官方网站| 久操婷婷| 色色色色区| 91 影音先锋| 99久久久| 2025天天日爽| 狠狠狠狠狠操| 五月天丁香啪啪综合| 狠狠se| 影音先锋五月婷婷| 99无码| 久久与婷婷| av性爱网站| 颜射 精品性爱av| 五月天激情四射| 99在线小视频| 欧美性色A片免费免费观看的| 久99久精品视频| 五月婷婷丁香社区| 色色色欧美色色| 五月天伊人av| 久久久999精品| 第四色大香蕉| 婷婷99狠| 一级片操逼视频| www.狠狠| 欧美色五月| 9久国产精品| 久久人妻精品| 五月天另类视频| 激情网婷婷婷| 婷婷爱婷婷| 五月熟妇婷婷久久| 丁香五月婷婷久久久| 久久婷色| 成人av在线网站| 色原狠狠综合| 99精品久久久久久久久| 亚洲无AV在线中文字幕| 天天操综合网| 国产成人99久久亚洲综合精品| 久久WW| 天天日天天爽| 激情五月色婷婷| 婷婷五月六| 人人干人人看| 欧洲色色| 亚州操操| 91黄操| 久久99久久99精品免视看婷| 色五月激情| 九月激情网| 九九色精品| 无码人妻电影| 高清不卡一区| 一起草av| 五月婷六月综合在线观看| 人妻久久久久久久久妻久久久久久久久| 丁香五月婷婷色| 成人AV免费观看| 五月丁香六月婷婷综合在线| 99热只有精品在线播放| 婷五月丁香俺| 琪琪理论片| 五月天性色| 这里只有精品免费观看网占| 五月婷婷激情视频| 激情综合一| 色噜噜综合网| 激情五月色婷婷| 丁香六月婷婷久久综合| 香蕉久久国产AV一区二区| 九九九激情综合| 欧美精品狠狠色丁香婷婷| 丁香六月青青草| 久99视频在线观看| 久久综合激情五月天| 色五月天成人在线| 精品51XX| 九九99热| 色五月激情五月天| ..真实国产乱子伦对白在线_欧 | 色综合九九色综合88| 久久98| 亚洲亚洲人成综合网络| 桃色五月婷婷| 99人妻碰碰碰久久久久视| 色五月综合激情| 5月色婷婷| 天天操天爱综合| 五月天婷婷AV| 97色色婷婷| 黄色AAAA韩国guochansanji| 五月婷婷成人| 婷婷激情肏屄网| 五月丁香五月天现场视频| 五月天开心婷婷激情网站 | 99re这里只有| 六月激情综合| 91碰碰碰久久久久| 色情五月综合婷婷| 怡红院院久久| 色婷婷综合影院| 欧美电影在线播放| 91人人妻人人操| 久久五月天大美女| 久久婷婷综合五月趴| 99熟女视频| 久久久国产精品黄毛片| 五月丁香五月丁香五月丁香五月丁香91| 欧美色图45678| 五月婷婷六月开心| 色五月天电影| 天天网曰日曰夜夜综合永久免费| 婷婷六月激情小说网| 色婷婷视频综合| 狠狠操狠狠操| 色色网91| 婷婷丁香成人在线视频| 另类 在线| 亚洲V国产V欧美V久久久久久| 极品另类| 婷婷开心综合人妻小说网址| 婷婷五月天综合网| 丁香五月婷婷啪啪视频| 色婷婷99| 婷婷激情综合| 色色色五月天婷婷| 99久久免费性爱视频`| 色五月丁香婷婷| 欧美性生交XXXXX无码小说| 性视频久久| 婷婷色五月色| 99精品成人无码A片观看金桔| 操九色| 午夜电影网VA内射| 久久婷婷精品| 九九热啪啪| 婷婷久久草| 婷婷五月激情欧美大胆视频| 激情五月综合网最新| 久热9| 人妻久久久久久久| 精品国产AV色一区二区深夜久久| 影音先锋一区| 天天爽夜夜爽夜夜爽精品视频| AA片在线观看视频在线播放| 91操人视频| 色婷婷天堂| 人妻在线网站| 五月天激情Av| 五月天婷婷基地| 丁香五月婷婷六月婷婷| 欧美色97| 亚州综合色| 91人人爽久久涩噜噜噜| 五月丁香婷婷欧美色图视频五月丁香777电影| 热99这里只是精品| 成人AV免费观看| 97五月婷婷| 色色色热| 97操碰人人| 国产99久久久国产精品免费看 | 久久久精品AV| 丁香六月婷| 94干大香蕉| 五月天综合视频网| 婷婷丁香五月基地| 五月婷色激情五月| 丁香婷婷浪潮AV久久综合| 六月天六月婷| av高清无码| 婷婷的99视频网站| 婷激情五月| 九九av| 五月婷婷六月激情在线| 婷婷激情五月| 激情五月婷婷欧美极品 | 天天色噜| 久久大香免费| 国产精品国产| 亚洲综合视频在线| 六月丁香激情网| 狠狠做六月爱婷婷综合aⅴ| 91超碰人人操|