亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

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

Agent-Reach:多智能體協(xié)作的通信底座與消息路由實(shí)踐 多智能體這塊最近兩年被炒得很熱但真正在項(xiàng)目里把多個(gè)Agent拉到同一張桌子上協(xié)作的時(shí)候你會(huì)發(fā)現(xiàn)一個(gè)很尷尬的問題各個(gè)Agent之間根本夠不著對(duì)方。它們各自封裝在自己的框架里跑在自己的進(jìn)程里用的是各自的工具調(diào)用協(xié)議消息格式各說各話。我這個(gè)項(xiàng)目Agent-Reach就是沖著這個(gè)痛點(diǎn)去的——它解決的核心問題是Agent觸達(dá)讓一個(gè)Agent能夠發(fā)現(xiàn)另一個(gè)Agent的存在、了解它能干什么、然后把任務(wù)和結(jié)果可靠地遞過去。這不是一個(gè)華而不實(shí)的框架而是一套輕量的、可以直接嵌進(jìn)現(xiàn)有系統(tǒng)的Agent間通信與發(fā)現(xiàn)基礎(chǔ)設(shè)施。下面我把整個(gè)項(xiàng)目的設(shè)計(jì)思路、核心實(shí)現(xiàn)、踩坑過程都展開聊聊尤其是那些只在真實(shí)流量下才會(huì)暴露的問題。1. 多智能體協(xié)作的圈地困境Agent成了孤島協(xié)作成了妄想先回顧一下我為什么要做這件事。在做Agent-Reach之前我參與過一個(gè)電商客服場(chǎng)景的項(xiàng)目里面有三個(gè)Agent一個(gè)負(fù)責(zé)售前咨詢的、一個(gè)負(fù)責(zé)訂單狀態(tài)查詢的、一個(gè)負(fù)責(zé)售后處理建議的。三個(gè)Agent分別基于不同的框架搭出來的售前的用了LangChain訂單查詢的是自己寫的一套意圖識(shí)別加工具調(diào)用售后那個(gè)直接調(diào)外部RPA接口。最開始的設(shè)計(jì)是三個(gè)Agent串行跑用戶問一句售前Agent判斷該不該轉(zhuǎn)給訂單Agent然后由售前Agent的代碼里寫死一個(gè)調(diào)用訂單Agent的函數(shù)。這個(gè)方案看似沒毛病跑起來之后全是麻煩。比如訂單Agent換了個(gè)部署地址售前Agent的代碼就得跟著改比如想新增一個(gè)物流咨詢Agent售前Agent的代碼要重新發(fā)布一版。更頭疼的是三個(gè)Agent之間傳消息完全沒有統(tǒng)一格式售前傳過去的是幫我查一下訂單訂單Agent那邊需要的是結(jié)構(gòu)化JSON中間還得套一層轉(zhuǎn)換邏輯。這些小問題疊加在一起就是典型的硬編碼集成之痛。我當(dāng)時(shí)理想中的形態(tài)是這樣的Agent之間不直接握手而是通過一個(gè)公共的通訊錄互相發(fā)現(xiàn)消息格式統(tǒng)一某個(gè)Agent掛掉或者升級(jí)的時(shí)候不影響其他Agent的整體運(yùn)行。這就是Agent-Reach立項(xiàng)的最初動(dòng)機(jī)。所以Agent-Reach的第一層價(jià)值是解耦第二層價(jià)值是標(biāo)準(zhǔn)化。它做的事情不是一個(gè)Agent框架而是一個(gè)中間層。打個(gè)比方Agent-Reach不負(fù)責(zé)教你怎么做Agent它負(fù)責(zé)的是給Agent們發(fā)名片和信箱。從技術(shù)選型上看當(dāng)時(shí)有幾個(gè)現(xiàn)成方案可以選比如消息隊(duì)列Kafka、RabbitMQ加一個(gè)服務(wù)注冊(cè)中心Consul、Etcd。但我試過之后發(fā)現(xiàn)太重了——Kafka解決的是大數(shù)據(jù)量消息的吞吐問題而我這個(gè)場(chǎng)景的消息量一天也就幾萬條而且大部分是短小的一問一答為這個(gè)上Kafka有點(diǎn)殺雞用牛刀。Consul那套偏向微服務(wù)治理健康檢查、KV存儲(chǔ)確實(shí)都有但Agent之間的消息路由語義——這個(gè)任務(wù)該發(fā)給哪個(gè)Agent、怎么回傳結(jié)果——它是不懂的我還是得自己在上層寫一套路由邏輯。思來想去與其拼裝兩個(gè)輪子不如自己做一個(gè)正好合適的輪子。Agent-Reach的本質(zhì)就是一個(gè)帶語義能力的Agent注冊(cè)與消息路由服務(wù)底層用輕量的消息通道承載通信上層實(shí)現(xiàn)了Agent能力描述、發(fā)現(xiàn)、定向投遞和結(jié)果回傳。接下來我會(huì)把每一塊設(shè)計(jì)拿出來細(xì)講。2. Agent-Reach的定位與總體架構(gòu)不造Agent只疏通Agent之間的路先說清楚架構(gòu)邊界這是后面所有細(xì)節(jié)討論的前提。Agent-Reach包含四個(gè)核心模塊Agent注冊(cè)表Agent Registry、能力目錄Capability Catalog、消息路由層Message Router、以及客戶端SDKAgent-Reach Client。2.1 注冊(cè)表設(shè)計(jì)每個(gè)Agent都要有一張實(shí)名名片注冊(cè)表是整個(gè)系統(tǒng)的地基。每個(gè)Agent接入時(shí)向注冊(cè)表登記一份元數(shù)據(jù)內(nèi)容包括Agent的全局唯一ID、名稱、描述、能力標(biāo)簽、通信地址比如WebSocket的URL或者消息隊(duì)列的主題名、當(dāng)前狀態(tài)、負(fù)載指標(biāo)。這張名片會(huì)帶一個(gè)版本號(hào)Agent每次變更能力或者地址名片版本遞增。這里有個(gè)很關(guān)鍵的設(shè)計(jì)決策注冊(cè)表不要做成AP可用性優(yōu)先模型而要傾向CP一致性優(yōu)先模型。為什么不學(xué)Eureka那套因?yàn)锳gent發(fā)現(xiàn)一旦讀到過期數(shù)據(jù)消息就會(huì)發(fā)到一個(gè)已經(jīng)不存在的實(shí)例上直接導(dǎo)致任務(wù)失敗。相比之下寧可短暫地發(fā)現(xiàn)不到某個(gè)Agent也不要發(fā)現(xiàn)到一個(gè)幽靈Agent所以Agent-Reach的注冊(cè)表內(nèi)部用了Raft協(xié)議做多節(jié)點(diǎn)同步保證三個(gè)副本之間的數(shù)據(jù)強(qiáng)一致。實(shí)測(cè)下來幾個(gè)節(jié)點(diǎn)之間的同步延遲在毫秒級(jí)別對(duì)Agent發(fā)現(xiàn)這種低頻操作完全夠用。名片信息的具體結(jié)構(gòu)是這樣定義的{ agent_id: order-agent-01, name: 訂單狀態(tài)查詢Agent, version: 3, capabilities: [ { name: query_order, description: 根據(jù)訂單號(hào)查詢訂單當(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的名片。消費(fèi)者也就是其他Agent拿到名片后不需要提前知道調(diào)用細(xì)節(jié)只靠名片里的capabilities就能判斷這個(gè)Agent能不能幫我干活、該怎么傳參數(shù)。接口契約的問題在這里就解決了以前是代碼里硬寫函數(shù)調(diào)用現(xiàn)在是數(shù)據(jù)驅(qū)動(dòng)的動(dòng)態(tài)路由。2.2 能力目錄與匹配邏輯讓誰該處理這件事變成可計(jì)算的注冊(cè)表只是存儲(chǔ)能力目錄才是智能的地方。能力目錄負(fù)責(zé)維護(hù)能力名到Agent集合的映射并對(duì)外提供匹配服務(wù)。比如調(diào)用方傳一個(gè)自然語言描述或者結(jié)構(gòu)化的任務(wù)標(biāo)簽?zāi)夸浄?wù)返回能處理這個(gè)任務(wù)的Agent列表按匹配度排序。最開始我直接用關(guān)鍵詞匹配能力名后來發(fā)現(xiàn)根本不夠用。同樣是查訂單這件事A Agent管的是B2C訂單B Agent管的是B2B訂單光看能力名query_order分不出來。所以我把匹配升級(jí)成了兩層第一層是硬匹配基于能力標(biāo)簽的精確匹配速度快適合已知明確標(biāo)簽的調(diào)用第二層是軟匹配用Embedding做語義相似度計(jì)算調(diào)用方發(fā)來的任務(wù)描述和已有Agent能力描述算余弦相似度大于一個(gè)閾值才進(jìn)入候選集。軟匹配的引入讓Agent-Reach對(duì)上層應(yīng)用非常友好——調(diào)用方不需要記住每個(gè)Agent的能力名只要用一句人話描述任務(wù)系統(tǒng)幫他找Agent。這一步當(dāng)時(shí)落地的時(shí)候花了不少功夫踩過Embedding模型選型的坑后面會(huì)詳細(xì)講。2.3 消息路由層設(shè)計(jì)請(qǐng)求/響應(yīng)和異步任務(wù)兩條腿走路消息路由是第三個(gè)模塊也是通信語義的核心。Agent之間協(xié)作的模式其實(shí)就兩種一種是同步的請(qǐng)求/響應(yīng)比如幫我查一下訂單12345的狀態(tài)立刻要結(jié)果另一種是異步任務(wù)投遞比如幫我把這批1000個(gè)訂單做異?;卦L不用立刻出結(jié)果完成后通知我。Agent-Reach對(duì)兩種模式分別做了通道設(shè)計(jì)。同步通道直接走WebSocket長(zhǎng)連接實(shí)現(xiàn)上類似一個(gè)輕量RPC異步通道則持久化到內(nèi)嵌的消息存儲(chǔ)里Agent上線后拉取積壓任務(wù)。之所以不用外部隊(duì)列是因?yàn)楫惒饺蝿?wù)數(shù)量和Agent會(huì)話狀態(tài)有強(qiáng)關(guān)聯(lián)存到注冊(cè)表同一套存儲(chǔ)里反而簡(jiǎn)單——Agent斷線期間的任務(wù)會(huì)在它恢復(fù)心跳后自動(dòng)補(bǔ)發(fā)。路由決策本身也不復(fù)雜按照這個(gè)優(yōu)先級(jí)處理調(diào)用方顯式指定了agent_id直接定向投遞調(diào)用方傳了能力名路由層查能力目錄取匹配度最高的在線Agent調(diào)用方什么都沒傳只有一段任務(wù)描述路由層走語義匹配如果候選Agent都在忙達(dá)到max_concurrent_tasks上限任務(wù)進(jìn)入等待隊(duì)列而不是直接失敗。前三條都好理解第四條值得多說一句。Agent-Reach默認(rèn)不丟任務(wù)有背壓機(jī)制。調(diào)用方發(fā)來一個(gè)任務(wù)如果目標(biāo)Agent繁忙這個(gè)任務(wù)會(huì)在路由層排隊(duì)由調(diào)用方?jīng)Q定等待超時(shí)時(shí)間。實(shí)際項(xiàng)目里我會(huì)建議調(diào)用方設(shè)置一個(gè)合理的超時(shí)默認(rèn)30秒超過就返回繁忙請(qǐng)稍后再試由上層Agent決定是換個(gè)Agent還是告訴用戶稍等。2.4 客戶端SDK的邊界只做三件事絕不多做客戶端SDK的設(shè)計(jì)初衷是接進(jìn)去簡(jiǎn)單拿到別的Agent的能力簡(jiǎn)單發(fā)消息簡(jiǎn)單。所以SDK只封裝了三類能力注冊(cè)與心跳、發(fā)現(xiàn)與訂閱拿到名片、監(jiān)聽Agent上下線事件、消息發(fā)送與接收同步和異步兩種模式。有個(gè)很刻意的設(shè)計(jì)SDK不做Agent能力編排不做多步流程控制也不內(nèi)置提示詞模板。這些交給上層Agent框架或者業(yè)務(wù)流程去處理。Agent-Reach是一個(gè)路由器而不是大腦大腦應(yīng)該屬于每個(gè)Agent自己這也是我堅(jiān)持的原則。如果SDK越界做了編排Agent的自主性就被架空了那就跟傳統(tǒng)ESB服務(wù)總線沒有本質(zhì)區(qū)別了。3. 核心模塊逐行拆解注冊(cè)表、心跳與路由的實(shí)現(xiàn)細(xì)節(jié)這一節(jié)直接上實(shí)現(xiàn)。Agent-Reach服務(wù)端我用Go寫的原因很簡(jiǎn)單單機(jī)并發(fā)吞吐高、部署就是一個(gè)二進(jìn)制文件、內(nèi)存占用小??蛻舳薙DK先做了Python版本因?yàn)榻覣gent的團(tuán)隊(duì)主力語言就是Python后來補(bǔ)了TypeScript版本給前端低代碼平臺(tái)用。3.1 注冊(cè)表存儲(chǔ)結(jié)構(gòu)一張表搞定所有元數(shù)據(jù)注冊(cè)表底層用SQLite單機(jī)模式或TiKV集群模式存儲(chǔ)但對(duì)外暴露的是內(nèi)存視圖。Agent的元數(shù)據(jù)維護(hù)在內(nèi)存里的一個(gè)并發(fā)安全Map里key是agent_idvalue是完整的元數(shù)據(jù)對(duì)象。每次寫入或者更新時(shí)同時(shí)寫持久化存儲(chǔ)并廣播變更事件。Go語言里這個(gè)結(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這個(gè)反向索引是匹配性能的關(guān)鍵。能力匹配的請(qǐng)求一來先按能力名取Agent集合再逐個(gè)看狀態(tài)和負(fù)載避免了全表掃描。注冊(cè)、更新、心跳都通過mu.Lock()保護(hù)這個(gè)鎖在低并發(fā)下毫無壓力但到了Agent數(shù)量上百、心跳頻率高的場(chǎng)景單把大鎖會(huì)成為瓶頸。我后來做了分片鎖優(yōu)化按Agent ID哈希分成32個(gè)分片各自獨(dú)立加鎖吞吐量提升明顯。3.2 心跳機(jī)制與僵尸Agent清理心跳的設(shè)計(jì)要回答兩個(gè)問題多久算超時(shí)超時(shí)了誰負(fù)責(zé)清理我的做法是Agent默認(rèn)每15秒發(fā)一次心跳注冊(cè)表在3個(gè)心跳周期45秒沒收到就標(biāo)記為offline再過2個(gè)周期75秒還沒恢復(fù)就把Agent從活躍列表里移除并廣播下線事件。這個(gè)時(shí)間窗口不是拍腦袋定的跟Agent的業(yè)務(wù)類型有關(guān)系——客服Agent 45秒沒心跳基本就是進(jìn)程掛了但如果是有長(zhǎng)耗時(shí)任務(wù)的Agent比如批量處理回訪進(jìn)程活著但主線程被阻塞心跳發(fā)不出去也是常事。所以我在心跳API之外還加了一個(gè)獨(dú)立的/ping探活接口路由層的健康檢查用這個(gè)接口注冊(cè)表的離線判定用心跳兩者分離。僵尸Agent的清理邏輯我建議做成軟刪除。不直接從agents里抹掉元數(shù)據(jù)而是只在byCaps活躍索引里摘除元數(shù)據(jù)保留24小時(shí)方便排查問題。線上問題排查時(shí)你會(huì)感激這個(gè)設(shè)計(jì)——Agent崩潰后你想查它崩潰前的元數(shù)據(jù)版本如果被物理刪了就得從頭查日志。3.3 消息路由的投遞語義At-Least-Once與去重Agent之間消息投遞的語義我直接定成了At-Least-Once至少一次。這不是偷懶是成本權(quán)衡下的理性選擇。Exactly-Once在高吞吐消息系統(tǒng)里要靠事務(wù)消息或冪等消費(fèi)來逼近對(duì)Agent協(xié)作這個(gè)場(chǎng)景來說成本太高。At-Least-Once配合消息里的全局唯一ID讓接收方做冪等去重效果足夠。每個(gè)消息的骨架長(zhǎng)這樣{ 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自帶時(shí)間排序?qū)懭氪鎯?chǔ)的時(shí)候?qū)λ饕押?。trace_id用來串起一次跨Agent協(xié)作的完整鏈路——用戶的一個(gè)問題可能觸發(fā)三個(gè)Agent先后處理靠trace_id能把整個(gè)鏈路的行為日志撈出來。這個(gè)字段特別值得重視沒有它排障就是大海撈針。路由層接收到消息后按如下流程處理校驗(yàn)target.agent_id是否在線在線則通過WebSocket把消息推送過去等待接收方ACKACK不代表任務(wù)完成只代表消息被Agent進(jìn)程收到了如果30秒內(nèi)沒有ACK標(biāo)記為投遞失敗重試最多3次重試仍失敗消息進(jìn)入死信表同時(shí)給調(diào)用方返回一個(gè)投遞超時(shí)響應(yīng)。這里有個(gè)小坑WebSocket連接本身可能假死。TCP連接還在但Agent進(jìn)程已經(jīng)卡死消息發(fā)過去沒有響應(yīng)。所以ACK超時(shí)機(jī)制必須存在不能只靠TCP層面的連通性判斷。3.4 Python SDK的接入代碼三行登記一行發(fā)消息Python SDK的目標(biāo)是讓接入成本降到最低。Agent上線時(shí)的注冊(cè)代碼from agent_reach import AgentReachClient, SyncCall client AgentReachClient(registry_urlws://reach-server:8800/registry) # 聲明能力完成注冊(cè) client.register( agent_idorder-agent-01, name訂單狀態(tài)查詢Agent, capabilities[ { name: query_order, description: 根據(jù)訂單號(hào)查詢訂單當(dāng)前狀態(tài), input_schema: {...}, output_schema: {...} } ] ) # 處理入站請(qǐng)求 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} # 啟動(dòng)監(jiān)聽開始接收消息 client.start()再看出站調(diào)用一個(gè)Agent想調(diào)用另一個(gè)Agent的能力時(shí)result client.call_sync( capabilityquery_order, input{order_id: 20250101001}, timeout_ms30000 ) # Business 語義錯(cuò)誤 if result.get(error_code): fallback_to_another_agent(capabilityquery_order_v2) print(result[data][status])call_sync內(nèi)部封裝了能力發(fā)現(xiàn)、路由請(qǐng)求、等待響應(yīng)、超時(shí)重試這幾件事。對(duì)上層調(diào)用方來說就是一行函數(shù)調(diào)用完全不用感知對(duì)方Agent到底在哪臺(tái)機(jī)器上、用的是什么框架、內(nèi)部怎么實(shí)現(xiàn)的。這種動(dòng)態(tài)發(fā)現(xiàn)統(tǒng)一契約的體驗(yàn)比自己在代碼里寫死HTTP調(diào)用要舒服得多改一個(gè)Agent的部署位置系統(tǒng)里的其他Agent什么都不用動(dòng)。4. 接入真實(shí)業(yè)務(wù)三類Agent跨框架協(xié)作的完整通路設(shè)計(jì)講完了來看實(shí)際接入效果。當(dāng)時(shí)我們?cè)跍y(cè)試環(huán)境搭了三類AgentA跑在LangChain上B是CrewAI里定義的角色型AgentC是一套完全自研的規(guī)則加LLM混合Agent。三個(gè)框架各走各的唯一共性就是都裝了Agent-Reach的Python SDK。4.1 LangChain Agent接入用Tool封裝打通最省事LangChain Agent本身有一套Tool機(jī)制它把外部功能抽象成Tool來調(diào)用。我做的事很簡(jiǎn)單把Agent-Reach的call_sync封裝成一個(gè)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)時(shí)使用。 輸入為訂單號(hào)字符串輸出為訂單狀態(tài)與預(yù)計(jì)送達(dá)時(shí)間。 ) 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在推理時(shí)如果判斷需要查詢訂單就會(huì)自動(dòng)調(diào)用這個(gè)ToolTool內(nèi)部走Agent-Reach把任務(wù)路由到訂單Agent。整個(gè)過程對(duì)LangChain是無感知的——它只覺得自己調(diào)用了一個(gè)普通Tool實(shí)際上背后的目標(biāo)Agent跑在另一個(gè)框架里。4.2 CrewAI角色Agent接入同步轉(zhuǎn)異步避免阻塞CrewAI的多Agent是角色扮演式協(xié)作Agent之間通過Task傳遞工作。這里遇到一個(gè)實(shí)際問題CrewAI的Agent執(zhí)行任務(wù)時(shí)如果卡在一個(gè)同步調(diào)用上很久整個(gè)流程會(huì)變慢。所以我給CrewAI的Agent封裝的是Agent-Reach的異步調(diào)用模式。具體做法是CrewAI的Agent啟動(dòng)時(shí)注冊(cè)進(jìn)Agent-Reach并聲明自己的角色能力當(dāng)CrewAI內(nèi)的Agent遇到需要外部協(xié)作的任務(wù)通過call_async發(fā)出消息不等結(jié)果立刻返回任務(wù)已提交。CrewAI流程繼續(xù)推進(jìn)外部Agent完成后再通過回調(diào)通知結(jié)果把結(jié)果喂回對(duì)應(yīng)的session。這條路跑通之后效果很好CrewAI的內(nèi)部流程沒有被跨框架通信阻塞住整個(gè)協(xié)作節(jié)奏更接近真實(shí)的團(tuán)隊(duì)工作方式。4.3 自研Agent接入最大的阻力是對(duì)話輪次的傳遞自研Agent接入時(shí)遇到一個(gè)有意思的問題那套規(guī)則加LLM混合Agent里每次對(duì)話都要攜帶上下文輪次。一開始我把整個(gè)對(duì)話歷史塞進(jìn)消息input里結(jié)果消息體積動(dòng)不動(dòng)就幾十KB路由和存儲(chǔ)的壓力都上來了。后來我調(diào)整了消息契約input里只傳必要字段和會(huì)話指針真正完整的對(duì)話歷史存在Agent自己的持久層里。Agent-Reach的消息體里只帶一個(gè)session_ref字段接收方拿到引用后自己去共享存儲(chǔ)里撈上下文。這么一改消息體積降到幾KB幾乎不影響路由性能業(yè)務(wù)側(cè)也更清爽。這個(gè)經(jīng)驗(yàn)很重要消息通道不是數(shù)據(jù)倉(cāng)庫(kù)別把該存庫(kù)的東西塞進(jìn)消息里??鏏gent的消息應(yīng)該是任務(wù)指令必要的參數(shù)引用而不是整包的數(shù)據(jù)搬運(yùn)。4.4 前端低代碼平臺(tái)的TypeScript SDK后來低代碼平臺(tái)也要接Agent所以補(bǔ)了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, });低代碼平臺(tái)做一個(gè)拖拽流程編排每個(gè)節(jié)點(diǎn)綁定一個(gè)能力調(diào)用幾十種業(yè)務(wù)流程都能拖著拖著就配完不用再為每種流程寫專門的集成代碼。5. 上線前必須面對(duì)的五個(gè)坑從超時(shí)風(fēng)暴到消息亂序上面聽起來一切順利但生產(chǎn)環(huán)境跑起來之后問題一個(gè)接一個(gè)。我按踩坑的時(shí)間順序梳理了五個(gè)最典型的問題每個(gè)都有實(shí)際的思考過程和解決路徑。5.1 坑一注冊(cè)表讀寫鎖引發(fā)的超時(shí)風(fēng)暴系統(tǒng)上線第一周就出事。某個(gè)中午流量高峰突然大量調(diào)用方報(bào)超時(shí)。查日志發(fā)現(xiàn)注冊(cè)表的API響應(yīng)時(shí)間從正常2毫秒飆升到800毫秒再一看注冊(cè)表的鎖等待嚴(yán)重。根因是這樣的我當(dāng)時(shí)byCaps反向索引和agents主Map共用一把大鎖mu。Agent心跳每15秒一次幾十個(gè)Agent的心跳本來沒壓力但有個(gè)Agent在頻繁更新元數(shù)據(jù)——它的調(diào)用方每次調(diào)完就更新一次最近調(diào)用統(tǒng)計(jì)這個(gè)統(tǒng)計(jì)寫在元數(shù)據(jù)里。高峰期每秒鐘幾十次更新跟心跳的寫鎖、調(diào)用的讀鎖互相排隊(duì)鎖競(jìng)爭(zhēng)直接拖垮了API。解決方式分兩步。第一步把最近調(diào)用統(tǒng)計(jì)從Agent元數(shù)據(jù)里拆出去單獨(dú)放到Redis里跟注冊(cè)表完全解耦第二步把大鎖拆成32個(gè)分片鎖按Agent ID哈希分片不同分片的讀寫互不阻塞。改完后單機(jī)壓測(cè)從原先的每秒約2000次注冊(cè)表操作提升到約1.6萬次后續(xù)再也沒在這個(gè)位置出過問題。這個(gè)坑給了一個(gè)教訓(xùn)別把高頻率的統(tǒng)計(jì)信息跟低頻的元數(shù)據(jù)放在同一個(gè)存儲(chǔ)結(jié)構(gòu)里讀多寫多互相攪和遲早出事。5.2 坑二語義匹配的Embedding模型選型失誤能力目錄的軟匹配最初用的是本地部署的一個(gè)通用中文Embedding模型當(dāng)時(shí)貪它體積小、部署簡(jiǎn)單。上線后發(fā)現(xiàn)匹配效果很差售后退款流程和查詢訂單狀態(tài)明明在業(yè)務(wù)上是強(qiáng)相關(guān)的模型算出來的相似度才0.35低于我設(shè)的0.65閾值導(dǎo)致Agent匹配失敗率高調(diào)用方經(jīng)常收到找不到可用Agent的錯(cuò)誤。后來做了個(gè)對(duì)照實(shí)驗(yàn)同一批測(cè)試樣本換成當(dāng)前主流的商用Embedding接口相似度直接跳到0.7以上效果好了不止一個(gè)檔次。差距主要在于模型的語料覆蓋和訓(xùn)練規(guī)模通用小模型對(duì)行業(yè)術(shù)語和業(yè)務(wù)流程的理解深度遠(yuǎn)不夠。最后我采用了雙模型策略離線場(chǎng)景批量任務(wù)、異步分析用本地小模型因?yàn)閷?duì)實(shí)時(shí)性要求不高、又不依賴外部服務(wù)在線場(chǎng)景同步Agent調(diào)用用小模型先快速粗篩再用大模型精排。粗篩閾值放低到0.5精排閾值0.7這樣既保實(shí)時(shí)性又保準(zhǔn)確率。5.3 坑三Agent重啟后的狀態(tài)錯(cuò)亂這個(gè)坑很隱蔽。某次訂單Agent發(fā)布新版本重啟后進(jìn)程起來了SDK自動(dòng)重新注冊(cè)狀態(tài)很快變成online。但老版本進(jìn)程還沒完全退出它還持有一個(gè)舊的WebSocket連接路由層手上的Agent地址是新的老連接也沒斷干凈。于是老進(jìn)程在半死狀態(tài)下偶爾還能收到新連接建立之前就在途的消息處理完往回發(fā)結(jié)果時(shí)結(jié)果發(fā)到了已失效的舊連接上調(diào)用方就丟了響應(yīng)。后來我在SDK里加了一個(gè)優(yōu)雅退出流程Agent進(jìn)程收到SIGTERM信號(hào)后先發(fā)一個(gè)deregistering事件給注冊(cè)表注冊(cè)表把該Agent標(biāo)記為draining路由層不再給它發(fā)新任務(wù)只等已有任務(wù)跑完最后SDK再關(guān)閉連接。整個(gè)過程強(qiáng)制要求在10秒內(nèi)完成超時(shí)就強(qiáng)殺。加上這個(gè)機(jī)制后發(fā)布期間的丟消息問題基本絕跡。5.4 坑四消息亂序引發(fā)的臟數(shù)據(jù)異步任務(wù)場(chǎng)景下調(diào)用方給目標(biāo)Agent連發(fā)了多條消息——比如批量更新多個(gè)訂單狀態(tài)。到了目標(biāo)Agent那邊處理線程是并發(fā)跑的兩條消息的處理完成順序和發(fā)送順序不一致導(dǎo)致先發(fā)起的更新反而后落地最終數(shù)據(jù)庫(kù)里的狀態(tài)成了舊的。這個(gè)問題在單機(jī)單線程的Agent內(nèi)部不會(huì)出現(xiàn)但Agent內(nèi)部一旦用線程池并發(fā)處理就必然出現(xiàn)。解決方式在消息語義上做了兩件事一是支持給消息加sequence序號(hào)接收方按序處理同一session內(nèi)的消息二是提供一個(gè)同步屏障選項(xiàng)——發(fā)送方可以要求只有前一條消息處理完成才允許投遞下一條。這兩種方式實(shí)際上把并發(fā)還是順序的選擇權(quán)交還給業(yè)務(wù)方對(duì)順序敏感的消息走同步屏障對(duì)順序不敏感的批量任務(wù)繼續(xù)保持并發(fā)提升吞吐。5.5 坑五WebSocket連接的半開問題WebSocket連接假死是分布式系統(tǒng)的老熟人。某一端進(jìn)程還活著但事件循環(huán)卡死了TCP層面看起來連接還在實(shí)際上消息已經(jīng)發(fā)不過去。排查這類問題特別費(fèi)勁因?yàn)閾軠y(cè)連通性沒問題但業(yè)務(wù)消息就是石沉大海。我在Agent-Reach里加了心跳Ping/Pong機(jī)制路由層每隔30秒給每個(gè)Agent連接發(fā)PingAgent收到后必須回Pong。如果連續(xù)3次Pong沒回來路由層就主動(dòng)斷開連接并標(biāo)記離線。同時(shí)Agent側(cè)SDK也加了空閑連接探活——如果Agent覺得自己空閑超過60秒主動(dòng)發(fā)一個(gè)輕量探活消息確保連接不只是看起來活著。這套雙端探活機(jī)制上線后假死連接不用再靠人工重啟解決。6. 結(jié)合真實(shí)負(fù)載的調(diào)優(yōu)經(jīng)驗(yàn)從配置參數(shù)到架構(gòu)演進(jìn)項(xiàng)目跑到第二個(gè)月系統(tǒng)漸漸穩(wěn)定了。這時(shí)候我回頭看有些參數(shù)和架構(gòu)選擇如果在一開始就能明確能少走不少?gòu)澛贰?.1 關(guān)鍵參數(shù)清單與建議值很多同學(xué)拿到手第一句話就是參數(shù)該怎么配我總結(jié)了一張常用表都是實(shí)測(cè)下來比較穩(wěn)的值參數(shù)建議值說明心跳間隔15秒太短會(huì)放大無效請(qǐng)求太長(zhǎng)導(dǎo)致離線感知過慢離線判定45秒3個(gè)周期保證在漏判和誤判之間取平衡同步調(diào)用超時(shí)30秒低于這個(gè)值慢Agent容易被誤殺高于這個(gè)值調(diào)用方體驗(yàn)差投遞重試次數(shù)3次一次投遞失敗大概率是目標(biāo)Agent抖動(dòng)3次足夠覆蓋能力匹配TopN3匹配度排名前3的Agent里挑一個(gè)可用性最高的消息體大小上限1MB大于1MB的應(yīng)該走共享存儲(chǔ)而不是塞消息體這些參數(shù)不是死的每個(gè)業(yè)務(wù)場(chǎng)景要根據(jù)Agent的響應(yīng)耗時(shí)和可用性預(yù)期調(diào)整。核心原則是超時(shí)時(shí)間不要低于Agent的P99響應(yīng)時(shí)間否則你會(huì)經(jīng)常殺掉那些只是慢但沒壞的Agent。6.2 單機(jī)部署到集群部署的平滑過渡Agent-Reach服務(wù)端支持從單機(jī)到三節(jié)點(diǎn)的平滑演進(jìn)。單機(jī)模式下所有模塊跑在一個(gè)進(jìn)程里配置一個(gè)node_rolestandalone集群模式下節(jié)點(diǎn)分為registry-leader和registry-followerRaft協(xié)議負(fù)責(zé)選主和數(shù)據(jù)同步消息路由層則完全無狀態(tài)可以水平擴(kuò)展。路由層是無狀態(tài)的這點(diǎn)很重要——它不保存任何會(huì)話數(shù)據(jù)所有狀態(tài)都在注冊(cè)表里所以水平擴(kuò)容就是在前面加負(fù)載均衡器后面起新節(jié)點(diǎn)不需要遷移任何數(shù)據(jù)。如果未來想進(jìn)一步擴(kuò)展可以把消息的可靠存儲(chǔ)拆到獨(dú)立的消息隊(duì)列里路由層進(jìn)一步瘦身成純粹的轉(zhuǎn)發(fā)邏輯。但就目前這個(gè)項(xiàng)目的負(fù)載來看日均消息量幾萬條峰值幾十條/秒單機(jī)加一個(gè)從節(jié)點(diǎn)做故障切換完全夠用沒有必要為了高級(jí)感上重型基礎(chǔ)設(shè)施。6.3 可觀測(cè)性trace_id是排障的生命線最后強(qiáng)調(diào)一下可觀測(cè)性。Agent-Reach給Agent-Reach自己加了一整套鏈路追蹤每次跨Agent調(diào)用都生成一個(gè)trace_id從調(diào)用方發(fā)出、路由層接收、目標(biāo)Agent處理、結(jié)果回傳全鏈路日志都打上這個(gè)trace_id。排查問題時(shí)一條trace_id就能把整條鏈路的時(shí)間線拉出來。我強(qiáng)烈建議任何Agent協(xié)作系統(tǒng)都要把鏈路追蹤作為第一優(yōu)先級(jí)能力而不是可有可無的錦上添花。Agent協(xié)作的排障難度和單體應(yīng)用完全不同單體應(yīng)用一行堆棧就能定位Agent協(xié)作要跨三四個(gè)進(jìn)程如果沒有貫穿全鏈路的trace_id一個(gè)用戶說響應(yīng)慢的問題你可能要花半天時(shí)間才能定位到是哪個(gè)環(huán)節(jié)慢。加上trace_id后三分鐘就能定位。7. 關(guān)于Agent-Reach后續(xù)演進(jìn)的一些個(gè)人思考項(xiàng)目到現(xiàn)在已經(jīng)跑了幾個(gè)月Agent-Reach的價(jià)值已經(jīng)驗(yàn)證過了三個(gè)不同框架的Agent通過它實(shí)現(xiàn)了互相調(diào)用、動(dòng)態(tài)發(fā)現(xiàn)、統(tǒng)一契約團(tuán)隊(duì)不再為Agent之間的接口變更和部署位置變更做無休止的聯(lián)調(diào)。我自己在維護(hù)過程中總結(jié)了幾件下一步值得做的事。第一是把動(dòng)態(tài)編排能力加進(jìn)來?,F(xiàn)在系統(tǒng)只解決發(fā)現(xiàn)和路由但Agent之間的協(xié)作流程還是寫死的。如果引入簡(jiǎn)單的編排描述語言比如一份JSON定義先調(diào)用A Agent再根據(jù)A的結(jié)果決定調(diào)B還是C那么業(yè)務(wù)流程的變化就不需要改代碼只改編排配置。這個(gè)方向我看好但對(duì)正確性的要求會(huì)高很多得處理好編排流程和業(yè)務(wù)狀態(tài)的一致性問題。第二是多租戶隔離?,F(xiàn)在所有Agent在同一個(gè)注冊(cè)表里。如果業(yè)務(wù)線多了不同團(tuán)隊(duì)的Agent天然應(yīng)該隔離——A團(tuán)隊(duì)的Agent不能用B團(tuán)隊(duì)的能力。方向是引入租戶概念注冊(cè)表按租戶分域能力目錄和消息路由按租戶權(quán)限做校驗(yàn)。這塊做起來不復(fù)雜但涉及權(quán)限模型設(shè)計(jì)得想清楚跨租戶協(xié)作這種邊界情況怎么處理。第三是Agent質(zhì)量度量。系統(tǒng)跑著跑著注冊(cè)表里會(huì)有大量歷史數(shù)據(jù)——哪些Agent被調(diào)用得多、哪些Agent經(jīng)常超時(shí)、哪些能力匹配總是失敗。這些數(shù)據(jù)可以加工成Agent可用性報(bào)告、質(zhì)量評(píng)分。如果能做出來對(duì)上層做Agent調(diào)度決策會(huì)是很好的數(shù)據(jù)支撐。最后說說對(duì)Agent生態(tài)的一點(diǎn)個(gè)人體會(huì)。Agent-Reach這類基礎(chǔ)設(shè)施的價(jià)值不在于讓單個(gè)Agent變聰明而在于讓多個(gè)Agent能夠像同一個(gè)團(tuán)隊(duì)一樣協(xié)作——各自有專長(zhǎng)、知道隊(duì)友能干什么、消息能可靠送達(dá)。單Agent的能力天花板終究有限真正的質(zhì)變發(fā)生在協(xié)作層。這個(gè)項(xiàng)目讓我比較欣慰的地方是它沒有跟任何具體Agent框架綁定是一個(gè)獨(dú)立的中間層。等以后Agent框架之間的邊界越來越模糊類似Agent-Reach這樣的通信底座可能會(huì)成為Agent架構(gòu)里不可或缺的一塊。如果你手上也有幾套割裂的Agent在跑試試把發(fā)現(xiàn)、路由、契約這三件事抽出來做成一個(gè)獨(dú)立服務(wù)你會(huì)明顯感受到集成成本和變更成本同時(shí)降下來。這就是Agent-Reach最核心的一句話總結(jié)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日夜啪电影| 欧美劲爆第一页| 色婷婷小说| www.狠狠操| 日本免费专区| 久久欲| 不卡六六在线91| 香蕉99秘 精品一区丁香| av日韩手机在线影视| 100啪啪视频大全| 欧美日韩人妻精品一区二区三区| 91美女在线视频| 九九人人操| 无码人妻丰满热妇又大又粗| 日韩久久.一级黄色片| 78m成人视线| 亚洲人码13| 亚洲城人男人的天堂| 97碰在线视频| 中文字幕亚洲在线一区| 大香蕉视频一二三区| 欧美亚洲图片| 欧美日韩另类激情图片| 91亚洲黄色网| 激情小说亚洲| 超碰97护士| 欧美精品系列| 国产精品久久久亚洲第一牛牛_在线观看| 五月开心久久AV官网| 强上我不卡卡| 内射中出日韩在线观看视频| 亚洲欧美一区二区三区在钱蜜桃 | 日本久久超碰| 欧美成人精品欧美一级乱黄一区二…| 天天色欧美| 欧美日综合| 久热网| 208天天久久九九九| 夜夜嗨免费视频| 国产中文字幕在线| 欧美se综合| 97ai亚洲| 91处女在线观看| 草草草视频在线免费看| 色欲天天综合网| 狠狠综合网| 五月丁香啪| 久久久一区二区三区四曲免费听| 资源在线观一 二| 美女黄色一级A视频| 射 色综合| 国产久久久9999| 91在线限制级| 偷拍综合亚洲| 亚洲欧美另类小说| 国产91啪| 日韩另类色图| 99操| 人人澡人人澡人人| 91无遮挡| 乱伦图一区| a在线视频免费观看| 久综合网| 日本 免费 一区二区三区 久久香蕉| 91 丝袜在线| 97超碰美女| 一起草高清无码| 9丨亚洲一区二区在线| 色婷婷九月天天综合| 欧美午夜精品久久久久久3D| 嗯嗯,好大,好爽,好骚| 91伊人久久在线| 日韩一卡二卡三卡| www.91色综合| 美欧色综合| 啪啪啪东京| 激情久久av一区av二区av| 亚洲情色电影网| 91性高| 9丨久久九九九| 蜜臀一区二区三区在线| 曰韩av中文字幕专区| 久九干| 极品人妻少妇综合| 亚洲色图日韩精品| 国产精品丝袜久久亚洲不卡| 狠狠操狠狠操操| 欧亚乱色熟女一区二区| 久久精9| 亚洲精品久久久久久久蜜桃臀| WWW操逼| 激情久久久| 91劲爆| 黄色片A级一区二区三区| 国产又操| 99热99re6国产在线播放| 3PAV乱伦视频| 精品四五区| 蜜汁欧美| 免费观看的av| 桑老女人九区| 国产浮力影院第1页| 国产自产91区13区| 2023天天操夜夜操| 青青网三级视频| 中文字幕av片| 久久久九九网站| 很很很很操| 日本在线观看网址| 超碰性爱97| 日本黄大片在线观看视频| 99热66| 欧美啪啪啪91| 综合 青草 伊久久 影院 综合| 成人一二三区| 香蕉在线一区二区三区| 91伊人| 激情综合网激情五月天| 我想要 啊 啊 啊| 亚洲高清无码免费观看视频| 好湿好紧视频| 超碰三级秋霞| 97视频网站| 999日韩中文精品观看视频。| 日本幼女18+| 自偷自拍的亚洲视频| 亚洲熟妇AV日韩熟妇在线| 国产性久久久| 一卡二卡三卡| 久久久久久久久久久97| 欧美高清无码免费视频高清版| 国产日本熟女顶级一区二区三区视频 | 91九色丰满高潮| 国产精品嫩草影院免费| 欧美高清在线| 五月激情综合网| 久艹日日日| 天堂资源欧美| 福利视频一区二区微拍| 欧美久久人体| 极品五月天噜噜| 国产精品精品系列在线观看| 日本九九久久99| 中日韩欧美精品无码AⅤ一区二区| 天天综合网合集91| 嗯啊不要在线观看嗯啊| 翔田千里无码一区| 欧美九一精品久久久熟妇| 天天插天天射| 在线观看AV片| 国产91乱伦| 婷婷探花久久精品一区| 欧美熟妇乱码在线一区| 国产女人操逼视频| 丁香七月婷婷| 国产视频小说| 看日韩美女二区三区免费操逼视频| 男女做爰猛烈动高潮A片免费应用| 丝袜亚洲91| 久久思思热| 日韩黄色av中文字幕| 青青久日| 四虎884a| 97色在线观看| 亚洲AV免费在线| 无码一区二区精品视频久久久春药| 丝袜美女诱惑 91 视频| 熟妇熟女亚洲天堂网| 三级AV入口| 91性网| 黄久在线| 97欧美色资源| 2001天天操| 国产做?爰片久久毛片?片美国| 99人妻| 欧美性五月| 午夜精品久久久99| 很很干很很操| 日本亚洲熟女视频| 在线观看岛国有码| a男人的天堂久久一级A毛片| 久久久久亚洲| 中国91AV| 亚春色色| 欧美色图97| 欧洲亚洲人妻无码中字久久三区四区 | 国产成人免费观看在线视频| 国产精品白丝在线播放| 免费精品无码一级毛片牛牛影视| 亚洲同性aV综合| 中文字幕欧美日本乱码一线二线| 97超碰亚洲| 歐美一級亂黃99在綫精品| 精品区9| 免费看日产一区二区三区| 亚洲囯产精品女人久久久| 日韩三级伊人| 久久透逼视频| 久操网视频| 国产精品久久天天干| 综合色一区三区二区| 欧日韩一二三f区| 97超碰国产亚洲精品| 91精品国产乱码| 天天内射| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 五十路一区无码| 亚洲色图A| 91精品91久久久中77777| 极品少妇久久久| 91精品久久久久久| 中文字幕人妻资源在线| 天天激情综合站| 天天激情综合站| 在线人成亚洲视频免费观看| 都市久久精品激情亚洲| 日韩熟女乱伦中出| 性在久久久久久| 天天干夜夜一操| 丰满人妻一区二区三区四区| 岛国精品视频在线观看| 男人的天堂激情| 亚洲 欧美 另类 综合 偷拍| 日韩 成人 有码| 看看日B真人视频| 蜜臀99久久精品久久久久久| 天天综合欧美| 秋霞无码av鲁丝片一区| 91ise欧美| 国产青视频| 吊色| 亚洲熟妇一,二,三期| 日本人妻中文字幕| 在线观看日韩av不卡| 激情第四色| 99RE在线视频精品,这里只有精品| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV | 蜜桃AV天堂| 欧美一二三| 国产日韩区| 久久亚洲精品成人av| 欧美色色色| 久久最新视频免费观看| 国产sv美女内射| 三级日韩一区二区三区| 熟女色综合久久| 亚洲激情av| 91成人在线| 超碰97.com| 青娱乐老司机视频| 无码人妻一区二区一牛影视| 中文字幕人乱码中文字的预防方法 | 日本免费人成视频播放120秒| 激情专区综合| 日韩精品人妻中文字幕久久久| 精品二区三四区五电影| 色色色日本| 亚洲AV无码国产成人| 无码99| 91狠狠狠| 日韩A优精品在线观看| 99超碰色| julia国产在线 | 国产 日韩 另类 视频一区爱| 九九久久久九九| 91劲爆| 国产一进一出视频网站| 97人肏| 67914在线兔费成人视频| 麻豆国产视频精品观看| 日韩紧密久久| 欧美日本成人一区二区| 六九九九| 国产9l 大屁股| 草草网站影院白丝内射| 国模不卡一本二本三电影| 亚洲男人电影天堂| 嗯嗯嗯,草死我| 日日摸日日弄日日拍| 思思热久久成人| 黑丝91视频| 天天综合~91| 五月天激情网站| 欧美天天影院| 国产尹人在线视频免费| 精品人妻一区二区三区四区| 亚洲精品aa久久伊人 | 波多野结衣一级视频| 麻豆AV一区二区| 色噜噜狠狠色综无码久久合欧美| 久久久久人妻| 欧美亚洲91| 99热在线观看| 日本加勒比无码专区| 99综合| 中文三一区| 色爱综合网| 国产成人五月天丁香花| 日韩人妻少妇 一区二区三区| 九九九国产精品| 亚洲AV无码国产成人| 亚州九九九精品视频| 国产白嫩漂亮KTV在线| 日日黄色三级网站| 美国人人操人人操| 亚洲精品 欧美精品| 激情综合网五月婷婷五月天| 丰满熟妇大乳做爰| 国产超碰在线| 成年人网站在线免费观看| 嗯嗯啊啊用力视频免费| 日本 色 导航| 2020天天色综合| 久99| 日韩操p| 97视频新免费| 伊人婷婷五月天| 中文字幕乱亚洲美女精品一区| 欧美美女自慰一区二区三区| 视频国产成人精品日本亚洲18| 超碰 另类 欧美 | 国产精品无码久久久久2025| 欧美日韩精品青青| 北条麻妃99精品青青久久| 欧美gv在线观看| 青操影院| 毛片17S| 亚洲精品影视老司机| 综合97久久| 91久久精品蜜臀| 大香蕉一区二区在线观看.| 国产成人精品一区| 厕所偷拍在线| 久久精品性| 亚洲麻豆av一区二区| 九九九九九九九九九五码| 不卡免费av在线播放| 九九综合九九综合| av影院十区| 久久综合精品一区二区三区| 久久久国产成人一区二区三区在线| 久夜视频| 欧美性少妇| 精品国产一区二区久久| 天天操天天舔| 久久久精品电影| 97伦综合| 久欲AV| 欧美色图私拍91| 六月婷婷激情| 伊人黄色视频免费观看| 为用户提供免费看黄网址在线观看| 亚洲一区二区中文字幕| 超碰在97| 60秒试看最爽10分钟网站| 久热超碰| 亚洲黑丝在线| 欧美性生活综合| 二男一女成人A片| 啊啊啊好想要| 东北女人高潮视频| 啊啊啊操死我了| 无码久| 欧美性区| 久久夜精品一区二区三区| 人妻夜夜爽天天爽三区麻豆AV网站| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 四虎影视国产精品| 骚逼自拍99| 综合天天网| 午夜呻吟欧美| 色穴精品| 精品久久久久9999| 91日日| 男人亚洲91首页在线| 中文字幕一区二区三区视频播放| 国产操偷| 久久精品国产亚洲AV片多多| 歐美一級亂黃99在綫精品| 久热伊人| 亚洲 欧美 91| 91久青| 国产少妇与亚洲av| 玖玖蜜臀资源网| 夜夜高潮夜夜爽高清视频一| 啊啊啊好湿久久| 欧美18禁91| 麻豆福利视频导航| 欧美色图成人网一区二区| 日韩情色AV| 欧美日韩大陆黑人少妇99| 麻豆性爱视频在线播放| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 婷婷五月天无码 | 后入人妻无码| 国产精品香蕉| 一区二区三区亚洲| 在线强奷到舒服的无码视频 | 9997se| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 成人av在线播放| 精品人妻1区| 久久久亚洲欧美综合| 国产成人精品日本视频| 大香蕉碰| 91高潮喷水美女| 亚洲成人在线乱码色午夜| 精品亚洲天堂| 夜夜操美女| 亚洲精品第一| 99久久com免费视频′| 婷婷五月天久久精品视频一区二区三区| 麻豆人妻少妇在线免费观看| 97亚洲国产| 久久久久久久9| 欧美色视频在线| 久久久国产三级黄色片| 性色国产东北露脸精品视频| 另类老少妇| 欧美少妇色图| 成人性爱全视频观看| 天天干一干| 97精品97| 91东北熟女| 国产 日韩 欧美高清 | 风月影院十八禁| 精品毛片av一区二区| 免费看欧美美女黄色大片| 九九久久九九久久| 日本高清加勒比| 亚洲欧美色图片| 国产熟女完整版中字 | 亚洲色综合| 91天堂色男人的天堂| 欧美综合第一| 火箭成精品视频884必出精品| 亚洲国产91精品一区二区久久| 岛国片在线观看视频亚洲| 刺激性视频黄页| 国产乱码久久久| 白丝被操91| 夜夜嗨一区二区| 韩国毛片一区二区三区| 久久国产在线一区二区| 欧美午夜精品久久久久久3D| 色九色久| 午夜久久无码1000合集| 91美女色视频亚洲| 国产精品久久aV| 精品国产一区二区三区av在线资源| 久久人体一区二区| 自怕偷自怕亚洲精品| 黄页大片在线观看| 激情小说在线视频| 精品一区二区三区蜜桃臀赵总| 日韩中文字幕宗合在线| 91影库| 97视频在| 97人人夜夜精品视频| 91丝袜在线观看视频在线观看| 人人妻人人澡人人爽久久av| 99ri精品| 亚州欧美在线| 中文字幕在线观看丝袜| 大奶的诱惑| 熟妇熟女视频一区二区三区| 久久91| 嗯嗯嗯嗯啊啊啊好紧好大| 久久久精精精| 国产人妻精品久久久一区二区三区| 久区视频| 亚州精人品大香蕉| 亚洲精品久久久久毛片A片拉屎 | 美国日韩黄片| 久久九七| 狼狼色丁香久久婷婷综合五月| 狠狠图片青青草| 国产多人在线观看视频| 91丝袜熟女| 国产精品无码av| 在线五区| 久久,精品一二三| 91亚洲网| 欧美综合在线91| 免费精品人妻一区二区三| 骚逼自拍99| av凤凰久久久| 亚洲欧美国产va在线播放频| 超碰地址97| 日韩性爱再线视频| 97在线观| 91l欧美在线| AV无码久久久精品| 99热这里只有精品18| 北条麻妃99精品青青久久| 日韩精品在线放| 插入粉嫩少妇视频| 大香蕉伊人色偷偷在线| 亚洲 日本 国产 综合| 少好三P| 人妻丝袜无 码视频专区| 欧美性爱第1 页| 中文字幕精品久久久久人妻红杏ⅰ| 亚洲成人性爱在线观看| 亚洲日韩天堂| 亚洲综人| 欧美曰韩国产精品| 大香蕉人妻| se吧提供国产乱老熟视频胖女人 | 成人短视频在线观看| 襙一襙| 国产超碰欧美| 亚洲视频一二区| 欧美 亚洲 偷拍自拍| 伊人天天久久动态图| 男人天堂 天天射| 国产熟女少妇一区| 免费看欧美美女黄色大片 | 啊啊啊不要好疼视频| 午夜亚洲国产理论秋霞| 日韩无码一区二区三区| 精品9999| 男人 天堂 日 亚洲| 五月婷婷色色| 國產尤物AV尤物在線觀看| 97超碰人人操人人操| 久久精品国产97欧美精品亚洲 | 97色亚洲| 玖玖爱视频网站| 欧美天堂第二区| 欧美亚综合色图| 色五月网址| 亚洲情色中文字幕一区| 国产精品 久久久精品一牛| 欧美日韩亚洲天堂| 久久香蕉国产线看观看亚洲女人| 亚洲天堂资源| 大香蕉之青青草原| 黄网站黄视频网站进入口| 日韩三级一区| 久久婷婷亚洲| 亚洲熟女中文字幕在线| 欧美性爱三区二区| 天堂а√在线最新版在线| 97超碰色| 农村女一级毛卡片| 九九九久久久| 嗯嗯啊啊好爽| 国产一区二区二区按摩精品啪视频| 怡红院久久老司机| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 97精品免费视频网站| 97久久超碰日韩精品| 91九色丰满高潮| 97亚洲国产| 99re6在线视频精品免费完整版安卓版| 久久久久ab| 日韩ab网 | 久久av一级av少妇av高潮| 日韩强奸av| ,成人免费啪啪视频| 四虎午夜影院| 欧美国产精品| 夜夜影视四色| 精品亚洲国产成人AV制服丝袜| 午夜欧美女人操逼| 97av在线视频| 十八禁网站在线| 精爱久久| 俞拍自拍| 一本色道人妻久久| 天天综合亚洲综合| 影音先锋日本乱伦| 高清成年美女黄网站免费大全| 噜噜噜在线视频| japan日本高清乱xxxx| 日本高清_区二区三区 | 精品亚洲天堂| 日韩中文字幕视频| 黄片aaaaa一区| 操91| 亚洲大色堂| 天天干1区2区在线| 精品国产AV一区天美传媒| 亚洲?V高清一区二区三区尤物| 粉嫩av平台| 国产综合网站在线播放| 六六久久日韩不卡| 婷婷另类小说| 亚洲丝袜二区在线| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 欧美热图99| 襙一襙| 日美免费黄片| 99啪| 婷婷10月天青娱乐| 涩综合导航| 超碰成人免费| 美女毛片999| 人妻久久| 国产精品欧美日韩久久| 校园春色 男人天堂| 东京热精品97综合网| 精产品久久| 亚洲一曲日韩精品| 亚洲色偷偷色噜噜狠狠99网| 97超碰这里只有精品| 欧美色欧美| 热99这里只有精品| 99www.bibizy香蕉资源国产一区二区三区高清 | 亚洲欧洲国产综合av| 熟女丝袜视频| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 夜草欧美| 欧洲特黄毛片免费看欧洲毛片| 伊人久操| 青青草大香蕉在线视频| 男人天堂2017| 婷婷五月天伊人| 色踪合AV| 天天色黄色影院天天操| 天天操天天射青青草| 亚洲人妻久久久| 中国一级操逼视频| 蜜臀亚洲中文| 啊啊啊好想要| 男人的天堂啪啪| 5252色欧美在线男人的天堂| 国产亚洲日韩在线三区黑人| 欧美熟妇人体| 2024黄色视频| 亚洲天堂人妻一区二区| 精品视频久久| 欧美在线视频99| 青青青草原| 人妻精品一区二区在线| 嗯嗯啊啊啊啊轻点视频| 亚洲va有码在线天堂| 久草婷婷| 国产一区自拍欧美日韩| 欧美se亚洲| 日产欧美电影一区二区三区| 精品久久久中文字幕不| 在线亚洲欧美| 久久人人爽爽爽人久久久| 天天澡天天爽日日AV| 日韩精品一区二区三区四虎影视| 国产91美女视频| 欧美日韩成人在线| 亚洲Av诱惑| 啊…啊…操我用力操我| 91综合网站| 夜夜夜久久| 内射老妇BBWX0C0CK| 久久天天躁日日躁狠狠躁| 日韩一区二区精彩视频| 国产精品高潮久久AV| 色在线亚洲视频www| 老女人老91妇女老热女| 日韩一区二区高清在线观看的| 国产久久一区二区| 多乙久久久久久| 天天影视综合色| 天天拍天天操| 天天看天天干| 亚洲黄色网址| 午夜男女爽爽爽在线视频| 殴美性天天| 国产视频一区二区在线| 日本1区2区不卡视频| 九九九九九九视频| 亚洲欧美国产日本一区二区三区| 欧美加勒比| 东北老女人的激情视频| 午夜寂寞欧美| 国产路线专区| 久草综合视频| 26uuu国产| 欧美激情视频在线一区| 亚洲情色综合网| 激情小说五月天| 日韩一级欧美一级国产一级台湾| 91天天爱| 91黑丝在线播放| AV一区观看| 99久久99九九99九九九| 熟妇亚洲一区二区三区| 天堂中文日本在线观看| 九九热九九| 色在线69堂| 男人天堂久久精品| 天堂无码精品国产久| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 九九九九九九视频免费| 亚洲熟女乱综合一区二区三区| 婷婷久久五月| 亚洲成人在线高清| 9久久久久久| 密臀视频一区二区三区| 中出91| 国产男人又猛又粗又爽| 一级性爱网| 日本久久久久久久久久| 亚州色图狠狠干| 日本三级韩国三级99| 久久精品日韩| 91啦人妻| 97超碰色色| 国产自偷| 欧美激情亚洲情色| 亚州久久9| 又黑又大又粗| 色色色999| 欧美三级中文字幕hd| 久久午夜鲁丝片| 97精| 啊啊啊好舒服视频| 久久久九九| 裸体美女久久久| 人人爱夜夜爱| 午夜天天碰综合视频| 亚洲色诱惑| 欧美东京热精品A∨| 日本一区视频在线观看| av毛片aaaaa免费看| 欧美东京热青青草| 我要色综合网站| 少妇精品久久久八区九区| 色网在线| 欧洲精品久久| 亚洲熟久久| 校园春色中文字幕AV| 18岁禁 茉莉成人久久| 久久亚州高清| 日本 免费 一区二区三区 久久香蕉 | 亚洲免费97免费| 美女淫穴| 综合天天网| 日韩精品作爱导航| 狠色婷婷久久一区二区三区_| 爽爽爽免费视频| 三上制服丝AV| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 妇女乱色二区| 91痴汉| 加勒比综合88| 精品福利| 午夜舔阴达高潮视频免费看| CCYY草草影院地址入口| 天天激情综合站| 多毛小伙内射老太婆| 美国aaaaa一级黄片| 欧美,日韩,亚洲视频| 操屄不卡视频| 亚洲 日本 一 二 三| 日韩性色b| 国产农村妇女精品一二区| 草蕉影视亚洲无码| 97干综合网| 亚洲久久天堂| 亚洲牲交| 18禁免费视频| 婷婷丁香熟妇综合网| 97色伦欧美| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 91麻豆天美| 囯戸精品高潮呻吟旡码| 看黄片视频免费| 六月丁香五月婷婷| 黄总AV色图| 久久亚洲日韩国产欧| 超碰美国| 亚洲,日韩,欧美,成人播放| 1769一区二区| 丰满人妻一区二区三区免费,| 91红杏| 国产外初女出血视频| 91熟女丨91老女人| ,成人免费啪啪视频| 黄色av一区二区在线| 69AV女优男人的天堂| 99re在线精品78| 天天色欧美| 人妻 中文 日韩| 夜夜嗨一区二区| 夜夜骑操视频| 91亚洲色图| 欧美性爱十八禁| 毛片视频白嫩| 精品人妻一区二区蜜桃视频 | www.婷婷五月天| 97精品国产手机| 九九热av| 黄色性爱网网| 久久综合女优| 试看60秒 爽| 91人人臊| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 丝袜性亚洲| 少妇无码999| 国产亲戚伦亲在线| 韩国女主播青草在线| 97chaopengongkai| 岛园激情| 九九九九免费高| 欧美中出| 超碰99在线观看| 加勒比综合a∨| 男女激烈网站最新| 美女露胸露屁股| 国内一级精品| 国产九九九九九九九九| 久久久∴| 国产精品白丝在线播放 | 97干97色| 日日日日日| 神马久久免费电影观看| 少妇xx精品| 国产成自自拍在线观看| 免费AV中文网在线观看| 九九黄色网| 久久久久幕乱码| 国产极品美女高潮无套在线观看| 91丝袜激情在线| 亚洲欧美色图小说| 日本精品88888888| 超碰成人人人爽人人爽| 综合网欧美在线| 97超碰欧美精品| 婷婷伊人綜合中文字幕小说| 天天久久久久久| 天天日天天干天天整| 色偷偷男人的天堂麻豆| 亚洲精品影视老司机| 蜜臀一二三| 少妇xx精品| 高清不卡 中文 人妻| 殴美在线AⅤ| 国产成人啪一区二区| 丝袜熟女一区二区三区| 伊人嫩草| 婷婷午夜| 91亚州| AV老汉| 丰满人妻一区二区三区四区| 欧美在线色| 亚欧成人中文字幕一区| 五月婷婷丁香| 尤物网址| 国内97干免费看| 日本免费人成视频播放120秒| 2000亚洲男人天堂| 黄片色区软件| 91九色丰满高潮| 五月色综合| 99re超碰| 亚洲成人精品久久久| 日韩精品在线观看观看| 91老熟女91老女人| 国产精品久久久三级无码| 97视频播放| 九九毛片这里只有精品| 91AV入口| 大屁股熟女一区二区三区| 国内精品伊人久久久久影院会| 91N综合网| 九九九综合精品| 国产女人和拘做爰视频 | 欧美偷拍| 蜜桃中文字日产乱幕4区| 国产日韩精品人妻久久久久色欲网站| 欧美日本视频一区| 婷婷亚洲中文字幕在线| 在线色导航| 98超碰欧美| 夜夜騷av、一區二區| 尤物一级在线免费观看| 1区2区3区视频| 97精品综合久久网| 婷婷99狠狠躁天天躁| 青娱乐999| 夜夜国自区| 亚洲熟女综合| 欧美视频中文字幕区| 91香蕉国产尤物视频| 免费超碰97久久| 九九热九九热| 青草青草久热| 六六久久日韩不卡| 精品成人无码| 日本欧美不卡| 激情小说亚洲视频| 久9久| 亚洲黄网在哪免费看| 人人弄人人摸| 视频二区美腿制服人妻欧美| 日日夜夜草草草| 色蜜AV| 欧美日韩操逼嗦吊| av一区二区三区四区| 91精品人妻一区二区三区蜜臀| 大乔未久88一区| 青青青操| 99精品网| 亚洲精品国产精品乱码不99| 99久久久无码精品国产人| 亚洲se91| 精品国产乱码久久久影院| 99在线视频播放| 亚州操操穴网| 99热免费| 伊人久久艹| 亚洲av淫乱| 人妻 中文 日韩| 久久成人国产精品| 曰韩中文人妻视频| 天堂性色| 99热婷婷一区二区三| 色五月AV在线| 欧美在线 亚洲| 亚洲精品国产精品乱码不卡| 啊啊啊啊视频免费| 九色97| 嗯嗯啊啊视频在线看| 久久99网站| 亚洲熟女av日韩熟女| 国产浮力影院第1页| 97在线视频观看网站| 乱伦熟女专区| 国产狂喷潮在线精品| 看全色黄大色大片免费视频| 丰满人妻一区二区三区免费| 精品人妻15区| 久久久久久人体| 亚洲双插| 9I1性色影院| 久久精品操| 亚洲色图日韩丝袜制服一区二区五月在线| 超碰97导航| 福利五区| 日本布卡一区二三区| 亚洲丝袜二区在线| 撸无码不卡免费视频| 欧日韩一二三f区| 99在线观看视频在线高清| 超碰97久| 欧美色图综合网| 亚洲色图欧洲| 国产精品人妻免费精品| 国产精品人妻一区二区| 青草草免费网站av| 欧美精品成人在线播放| 日va操| 大香蕉五月天| 91蜜臀熟女| 亚洲最大的黄色电影网站。 | 国产亚洲中文不卡二区| 人人摸人人摸人人干| 国产男女无套视频免费观看| 国产精品青草综合久久| 25国产精品免费观看| 啪啪91| 91搞逼视频| av无码精品久久久久| 少妇滛荡视频| 性色乱AV一区二区| 亚洲天天影视色综合| 欧美综合色图片| 国产中出内射一区二区| 精品国产一区二区三区四区在线看 | 超碰在线看| 麻豆国产原创AV色哟哟| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 超碰成人免费| 欧洲免费一区二| 欧美最大综合网| 亚州性9| 大香蕉黄色一级片免费看| 国产高清无码一区二区三区四区皇冠| 综合网欧美在线| 狠狠色一区二区中文字幕| 变态另类专区| 欧美18 在线观看| 91free福利| 亚州色站 日韩电影| 蜜臀一二三区| 日韩激情电影中文字幕| 免费人成?大片在线播放| 国内精品999| 怡红院亚洲怡春院av| 欧美成人免费在线观看| 日韩激情中文字幕有码| 97操97色| 精品丰满熟妇人妻一区| 国产美女口爆吞精视频| 久久色情| 98超碰日本| 天堂69亚洲精品中文字| 成人短视频在线观看| 日日日骚女人精品| 黄骗免费网站| 99久在线精品99re8热| 亚码人妻| 精品国产Av无码久久久亚洲| 伊人91| 狠狠97| 国产高清成人mv在线观看| 4141514逼喷水三级片| 99久久久| 亚洲砖码砖专无区2023| 白 大 人妻 区 在线| 97操| 久久色人体| 婷婷人妻激情| 在线观看av区| 亚av顶级裸体一区二区三区四区五区 | 午夜男女爽爽大片免费观看| 久久婷婷五月综合| 国产中午字一暮区| 色狠狠 - 百度| 日夜干射色啊| 无码高清操逼网址| 久久久噜噜噜久久久| 97欧美在线| 六六久久日韩不卡| 三级色影综合网| 爱射综合| 97欧美日韩综合| 成人丁香五月| 超碰色大香蕉| 亚洲另类电影| 精品夜夜澡人妻无码AV| 免费观看啪视频| 欧美丝袜亚洲| 欧美黄色片AAAAA| 白嫩妹子国产骚| 色婷婷五月综合激情中文字幕| 久久久精| 婬女免费一二三区A片| 色欲久久99精品久久| 精品伊人久久久大香线蕉小说| 亚洲啪啪啪啪视香蕉| av午夜影院在线播放| 综合九九| 欧美一区二区三区日韩| 欧美啪啪天堂| 一本道综合色图| 亚洲欧美首页| 日本加靬比网站发布页| 国产操逼视频在线观看| 亚码人妻| 在线国产一区二区av| 东北女人性交| 97WW精品| 久久午夜鲁丝片| 夜夜操中文字幕| 欧美极度丰满熟妇hd| 老熟乱一区二区三区四区| 亚洲综合激情五月久久| 综合久久少妇中文字幕| 欧美久久毛片基地| 欧美日日操| 超碰在线成人电影| 久久思思热| 成人午夜高潮av猛片| 亚洲综合九| 乱色视频中文字幕| 99999精品| 欧美72网页| 亚洲第一成人影院色播| 亚洲熟女综合一区二区| 综合亚洲情色| 午夜久久无码1000合集| 久操国产在线| 97视频在| 99热在线观看| 日韩操逼性鲍| 亚洲人精品久久久| 99r九九| 国产精品一区二区 尿失禁| 高清孕妇孕交 交| 丝袜美腿校园春色| 亚洲午夜AV| 国产丝袜美女在线一区| 大白逼三四级| 精品国产一区二区三区久久久蜜臀 | 欧美成人精品A片免费一区99| 无码久久国产 | 日韩欧美aⅴ综合网站发布| 日韩无码第3页| 久久一二三四五六七八九区区| 激情久久av一区av二区av| 很很操在线| 日韩精品资源| 久久综合女优| www.色五月| 综合欧美激情网| 狠狠婷婷亚洲中文综合久久| 日韩精品一区,二区 九九...老司机| 6080yy午夜理论三级一区二区三区无码| 亚洲天堂一区二区久久| 欧美乱欲| 亚洲自拍青操视频| 91夜色chaopeng| 五月激情天| 综合欧美日韩在线观看| 边做饭边操逼逼| 久久啊啊啊| 玖玖资源视频一区二区三区| SS久久| 日韩在线AB| 色五月激情网| 黄网色一区二区三区四区精品| 久久精品久久久久久久久| 色九久| 97视频一区| 中文字幕无码不卡啪啪| 日日干男人的天堂| 国产精品 亚洲情色| 99婷婷| 五月丁香啪啪网| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 99e久久国产精品| 国产精品96| 中文字幕精品码亚洲| 51一区二区三区| 综合激情一一91| 久日综合网| 99黄页网站| 日韩精品第3页| 欧州激情视频在线一区二区| 狼人综合婷婷激情四射 | 天美麻豆黄色录像| 亚欧美综合网。| 97色涩| 亚洲激情天堂网| 超碰这里只有精品| 淫骚熟女一区二区三区| 中文字幕97色| 国产美女口爆吞精| 欧洲与亚洲欧美精品中文字幕| 亚洲男人的天堂AV| 午夜福利区| 人妻酒店出差被中出免费在线播放| 国产嫩草精品A88AV在线| 天天日日日射| 九九成人精品| 级品肉射| 亚洲天天精品| 男生通女生屁股| 欧美性夜| 蜜臀一区二区三区在线| 日韩有码免费视频| 亚洲中文制服诱惑| 美女的肌被草喷水视频| 久久 亚洲 日韩 人妻| 天天摸天天舔天天操| 蜜臀久久99'精品久久久| 国产精品对白自产拍| 久久精品国产亚洲粉嫩|