久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

context-mode實(shí)戰(zhàn):從CLI工具到LLM會(huì)話的上下文管理設(shè)計(jì)

context-mode實(shí)戰(zhàn):從CLI工具到LLM會(huì)話的上下文管理設(shè)計(jì) 我記得很清楚第一次意識(shí)到上下文重要性的場(chǎng)景是在寫一個(gè)小型終端助手的時(shí)候。這個(gè)工具需要用戶連續(xù)完成幾步操作先選擇數(shù)據(jù)源再指定處理方式最后輸出報(bào)告。但每次命令跑完它就什么都不記得了用戶下一步如果漏掉某個(gè)參數(shù)只能重新敲一遍。那一刻我意識(shí)到?jīng)]有上下文的工具就像一個(gè)每次都重新認(rèn)識(shí)你的柜臺(tái)服務(wù)員你不得不一遍遍重復(fù)自己的需求。context-mode就是為解決這類問(wèn)題設(shè)計(jì)的。簡(jiǎn)單來(lái)說(shuō)它是一種讓軟件在多次操作或多次會(huì)話之間自動(dòng)保存、讀取并利用歷史上下文信息的運(yùn)行模式。它解決的問(wèn)題很具體減少重復(fù)輸入、保持操作連續(xù)性、讓程序能根據(jù)之前發(fā)生了什么做出更合理的判斷。如果你是做CLI工具、自動(dòng)化腳本、編輯器插件或者自己在折騰AI助手相關(guān)的東西這篇文章值得看完——我會(huì)從設(shè)計(jì)思路講到代碼實(shí)現(xiàn)再分享實(shí)測(cè)中踩過(guò)的三個(gè)坑。1. context-mode是什么先從一次尷尬的失憶說(shuō)起1.1 沒(méi)有上下文的世界你每天都在重復(fù)填表先想想你平時(shí)用的命令行工具尤其是那些要傳一堆參數(shù)的工具。比如一個(gè)數(shù)據(jù)遷移腳本你可能要寫成這樣python migrate.py --source /data/old --target /data/new --format csv --encoding utf-8如果跑到一半掛了或者你想換個(gè)格式再跑一次你大概率會(huì)把這條命令翻出來(lái)改一改或者按一下上箭頭重新編輯。這在單次操作里問(wèn)題不大但如果是連續(xù)幾十條命令呢比如你要依次做預(yù)處理、清洗、校驗(yàn)、導(dǎo)入、導(dǎo)出每一步都要重復(fù)指定路徑、編碼、分隔符時(shí)間一長(zhǎng)忘參數(shù)幾乎是必然的。沒(méi)有上下文的世界本質(zhì)上是把本該由程序記住的信息全壓在了用戶身上。這就像你每天去同一個(gè)快遞點(diǎn)取件每次都報(bào)一遍姓名、電話、地址??爝f點(diǎn)的工作人員不是不想記住你而是他的系統(tǒng)沒(méi)這個(gè)能力。context-mode要做的就是給程序加上這個(gè)記憶能力。1.2 context-mode的定位讓工具記住剛才發(fā)生了什么那么context-mode具體指什么我傾向于給它一個(gè)精確的定義一種運(yùn)行模式在這種模式下程序會(huì)將用戶當(dāng)前的操作、輸入?yún)?shù)、選中項(xiàng)、臨時(shí)狀態(tài)等信息記錄下來(lái)并在后續(xù)操作中自動(dòng)讀取和套用從而形成連續(xù)的操作體驗(yàn)。它和普通的日志、緩存有本質(zhì)區(qū)別。日志是寫給開(kāi)發(fā)者調(diào)試用的緩存是為了加速重復(fù)讀取而context-mode關(guān)心的是語(yǔ)義上的連續(xù)性。舉個(gè)例子你在一個(gè)文件管理器里選中了一個(gè)文件然后準(zhǔn)備執(zhí)行壓縮操作——壓縮工具預(yù)先把當(dāng)前選中了哪個(gè)文件這個(gè)信息記下來(lái)這就是上下文。再比如AI聊天助手它能記得你五分鐘前問(wèn)過(guò)什么這個(gè)記得就是上下文模式在起作用。我見(jiàn)過(guò)的context-mode實(shí)現(xiàn)有很多種形態(tài)基于會(huì)話服務(wù)器端為每個(gè)連接維護(hù)獨(dú)立上下文比如SSH會(huì)話。基于項(xiàng)目目錄進(jìn)入某個(gè)項(xiàng)目目錄后自動(dòng)加載該項(xiàng)目相關(guān)的偏好設(shè)置。基于全局用戶級(jí)別的默認(rèn)配置任何地方都能訪問(wèn)?;跁r(shí)間窗口只記錄最近N分鐘或N條操作形成滾動(dòng)上下文。這里面的核心難點(diǎn)不是記錄數(shù)據(jù)而是決定哪些數(shù)據(jù)值得記錄、什么時(shí)候該遺忘、上下文沖突時(shí)怎么處理。1.3 什么場(chǎng)景真正需要它三個(gè)最典型的應(yīng)用場(chǎng)景我在實(shí)際項(xiàng)目里總結(jié)出三類最需要context-mode的場(chǎng)景你可以對(duì)照自己的需求來(lái)判斷。第一類是多步驟CLI工具。我之前寫過(guò)一個(gè)批量圖片處理工具包含導(dǎo)入、去重、壓縮、重命名、導(dǎo)出五個(gè)步驟。如果每一步都要求用戶重新輸入輸入目錄、輸出目錄、質(zhì)量參數(shù)用起來(lái)會(huì)非常痛苦。加上context-mode之后用戶只需要在第一次運(yùn)行時(shí)提供完整參數(shù)后續(xù)跑任何單步操作都會(huì)自動(dòng)帶上省事很多。第二類是IDE和編輯器插件。比如你正在編輯一個(gè)Python文件然后按下快捷鍵跳到一個(gè)工具函數(shù)定義處改完之后返回原來(lái)的位置——編輯器記住了你剛才在哪里。這種上下文記錄已經(jīng)非常普遍了我們?cè)谧霾寮_(kāi)發(fā)時(shí)也常常需要記錄光標(biāo)位置、當(dāng)前文件路徑、最近打開(kāi)的文件列表這就是一種典型的window-level context。第三類是AI助手的連續(xù)對(duì)話。當(dāng)前所有主流AI對(duì)話產(chǎn)品都在做上下文管理因?yàn)榘颜螝v史全部塞給模型既浪費(fèi)tokens又會(huì)超出模型的上下文窗口。實(shí)際工程中我們往往需要保留最近幾輪對(duì)話而對(duì)更久之前的內(nèi)容做摘要或裁剪。這個(gè)保留多少、裁剪多少的策略本質(zhì)上是context-mode的策略選擇。除此之外運(yùn)維自動(dòng)化、構(gòu)建系統(tǒng)、數(shù)據(jù)管道調(diào)度等領(lǐng)域也大量依賴上下文。判斷一個(gè)系統(tǒng)適不適合引入context-mode我有個(gè)簡(jiǎn)單的經(jīng)驗(yàn)如果你發(fā)現(xiàn)使用者在反復(fù)輸入或反復(fù)選擇相同的信息并且這些信息跟上一次操作強(qiáng)相關(guān)那這個(gè)系統(tǒng)就值得改造。2. 設(shè)計(jì)一個(gè)合理的上下文模型數(shù)據(jù)結(jié)構(gòu)和生命周期2.1 上下文粒度全局、會(huì)話、項(xiàng)目三層的取舍在動(dòng)手寫代碼之前必須先想清楚上下文數(shù)據(jù)要分成幾層。如果不分層所有數(shù)據(jù)混在一起很快就會(huì)出現(xiàn)張三的項(xiàng)目配置被李四帶走了這種問(wèn)題。我在context-mode項(xiàng)目里設(shè)計(jì)了三個(gè)層級(jí)非常夠用層級(jí)作用范圍典型內(nèi)容生命周期global當(dāng)前用戶所有操作用戶名、默認(rèn)編輯器、常用路徑長(zhǎng)期保留session一次工具進(jìn)程的運(yùn)行周期當(dāng)前打開(kāi)的臨時(shí)文件、臨時(shí)的token會(huì)話結(jié)束即刪除project當(dāng)前項(xiàng)目/工作目錄項(xiàng)目根路徑、依賴目錄、構(gòu)建命令項(xiàng)目存在期間這套設(shè)計(jì)解決了兩個(gè)關(guān)鍵問(wèn)題。一個(gè)是隔離性不同項(xiàng)目的上下文不會(huì)互相污染即使是同一個(gè)工具在項(xiàng)目A和項(xiàng)目B下會(huì)自動(dòng)加載各自的設(shè)置。另一個(gè)是時(shí)效性session里的狀態(tài)本來(lái)就該用完即焚比如某次登錄產(chǎn)生的臨時(shí)憑證如果放到了global里那就是給自己埋雷。有人可能會(huì)問(wèn)為什么不做成數(shù)據(jù)庫(kù)表用外鍵關(guān)聯(lián)我的答案是對(duì)于大部分工具型項(xiàng)目三層結(jié)構(gòu)用嵌套字典就夠了。數(shù)據(jù)庫(kù)適合海量數(shù)據(jù)檢索而context數(shù)據(jù)通常單用戶、低并發(fā)、量也不大用樹(shù)狀結(jié)構(gòu)反而更直觀調(diào)試時(shí)候一眼就能看到當(dāng)前上下文里有什么。2.2 持久化選型為什么用JSON加內(nèi)存兩級(jí)緩存確定層級(jí)結(jié)構(gòu)后接下來(lái)要考慮數(shù)據(jù)存哪。我先說(shuō)結(jié)論我采用了內(nèi)存字典做熱存儲(chǔ) JSON文件做冷持久化的組合而不是直接上SQLite。內(nèi)存字典的好處是快讀寫都在納秒級(jí)適合高頻訪問(wèn)。JSON文件的好處是方便調(diào)試——你可以直接用vim或cat打開(kāi)來(lái)看如果用了SQLite還得裝個(gè)客戶端才能查。對(duì)于context-mode這種偏工具性質(zhì)的組件易調(diào)試比查詢性能重要得多。具體做法是啟動(dòng)時(shí)把JSON文件加載進(jìn)內(nèi)存形成一個(gè)三層嵌套字典。每次set操作先更新內(nèi)存再?zèng)Q定是否寫盤。寫盤不能每次set都做否則高頻操作時(shí)IO會(huì)成為瓶頸。我的做法是做一個(gè)臟標(biāo)記在程序退出、或者每隔一段時(shí)間批量落盤。下面是我最初的存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)示意{ global: { default_editor: vim }, session: { login_time: 1700000000 }, project: { /home/user/myapp: { build_command: make, last_output: Build OK } } }這里把project的鍵設(shè)計(jì)成了項(xiàng)目絕對(duì)路徑天然實(shí)現(xiàn)了項(xiàng)目級(jí)隔離。后來(lái)又發(fā)現(xiàn)一個(gè)細(xì)節(jié)值得注意路徑里可能含有特殊字符所以我在加載時(shí)對(duì)路徑做了規(guī)范化處理去掉末尾斜杠、解析符號(hào)鏈接避免同一個(gè)項(xiàng)目因?yàn)槁窂綄懛ú煌霈F(xiàn)兩個(gè)上下文副本。2.3 上下文有效期過(guò)期策略與自動(dòng)清理機(jī)制上下文不是無(wú)限堆積的否則用戶會(huì)發(fā)現(xiàn)三個(gè)月前的一次操作記錄還影響了今天的執(zhí)行結(jié)果這反而變成了一種困擾。我設(shè)計(jì)的過(guò)期策略是給每條上下文數(shù)據(jù)附加元信息{ value: data, created_at: 1700000000, updated_at: 1700000000, ttl: 3600 }created_at和updated_at分別記錄創(chuàng)建時(shí)間和最后更新時(shí)間。ttl是存活時(shí)間秒例如3600表示1小時(shí)后過(guò)期。讀取時(shí)如果now - updated_at ttl就認(rèn)為這條數(shù)據(jù)已過(guò)期不返回給調(diào)用方。這里我要強(qiáng)調(diào)一個(gè)容易犯的錯(cuò)很多人把TTL只寫在層級(jí)上比如整個(gè)session層1小時(shí)過(guò)期這會(huì)引發(fā)連鎖問(wèn)題——一個(gè)長(zhǎng)任務(wù)可能只需要某些字段長(zhǎng)期有效但整個(gè)層級(jí)過(guò)期會(huì)把它一并殺掉。正確的做法是字段級(jí)TTL不同字段可以單獨(dú)指定有效期。比如當(dāng)前登錄用戶可以永久上次選中的文件只需要5分鐘。清理機(jī)制我用的是惰性刪除 定期掃描雙保險(xiǎn)。惰性刪除是在get時(shí)發(fā)現(xiàn)過(guò)期就順便刪掉定期掃描是每隔10分鐘把過(guò)期數(shù)據(jù)批量清掉避免臟數(shù)據(jù)堆積占內(nèi)存。這樣既保證實(shí)時(shí)性又不至于每次操作都觸發(fā)大量刪除。3. 動(dòng)手實(shí)現(xiàn)一個(gè)可用的context-mode模塊Python版3.1 核心類設(shè)計(jì)ContextManager的接口定義設(shè)計(jì)完成后實(shí)現(xiàn)階段需要用代碼把想法固定下來(lái)。這一節(jié)我用Python來(lái)寫一個(gè)可直接運(yùn)行的context-mode模塊語(yǔ)言無(wú)關(guān)性很好你換成Go、Node.js也是一樣的思路。先定義核心類的接口。我習(xí)慣先寫注釋再寫實(shí)現(xiàn)因?yàn)檫@樣能逼自己把接口想清楚import json import os import threading import time from pathlib import Path class ContextManager: Manage context data at global/session/project levels with TTL support. def __init__(self, storage_path): self.storage_path Path(storage_path) self._lock threading.Lock() self._context {global: {}, session: {}, project: {}} self._load() def _load(self): if self.storage_path.exists(): with open(self.storage_path, r, encodingutf-8) as f: loaded json.load(f) self._context.update(loaded) def set(self, level, key, value, ttlNone): Set a value in the given level. level: global | session | project key: string key value: any JSON-serializable value ttl: optional time-to-live in seconds with self._lock: meta { value: value, created_at: time.time(), updated_at: time.time(), ttl: ttl, } self._context.setdefault(level, {})[key] meta def get(self, level, key): Get a value. Return None if key doesnt exist or is expired. with self._lock: meta self._context.get(level, {}).get(key) if meta is None: return None if meta[ttl] is not None: if time.time() - meta[updated_at] meta[ttl]: del self._context[level][key] return None return meta[value] def save(self): Persist current context to disk. with self._lock: tmp_file self.storage_path.with_suffix(.tmp) with open(tmp_file, w, encodingutf-8) as f: json.dump(self._context, f, ensure_asciiFalse, indent2) tmp_file.replace(self.storage_path)這個(gè)類雖然只有幾十行但已經(jīng)包含了最核心的能力設(shè)置、讀取、過(guò)期判斷、落盤。其中save用了一個(gè)臨時(shí)文件加原子替換的技巧避免直接寫原文件時(shí)如果程序崩潰導(dǎo)致文件損壞。這是一個(gè)我踩過(guò)坑后的經(jīng)驗(yàn)后面第4節(jié)還會(huì)詳細(xì)說(shuō)。3.2 一個(gè)簡(jiǎn)單的CLI集成示例從保存到讀取光有類還不夠我把它集成進(jìn)一個(gè)真實(shí)的CLI場(chǎng)景來(lái)演示。假設(shè)我們要做一個(gè)圖片壓縮工具壓縮之前需要用戶指定輸入目錄和質(zhì)量參數(shù)。我用argparse來(lái)解析命令命令行沒(méi)有提供時(shí)就從上下文讀取import argparse from pathlib import Path ctx ContextManager(~/.myapp/context.json) def require_dir(arg_valueNone): Return provided arg value, or read from context if available. if arg_value: ctx.set(project, input_dir, arg_value) return arg_value cached ctx.get(project, input_dir) if cached: return cached raise SystemExit(請(qǐng)輸入輸入目錄或者先設(shè)置過(guò)context-mode) if __name__ __main__: parser argparse.ArgumentParser() parser.add_argument(--input-dir, defaultNone) parser.add_argument(--quality, typeint, defaultNone) args parser.parse_args() input_dir require_dir(args.input_dir) quality args.quality if quality is None: quality ctx.get(project, quality) or 85 ctx.set(project, quality, quality) ctx.save() print(f開(kāi)始?jí)嚎s輸入目錄{input_dir}質(zhì)量{quality})注意require_dir的設(shè)計(jì)如果用戶傳了新參數(shù)就會(huì)更新上下文如果沒(méi)傳就嘗試從上下文取值。這就是context-mode的核心體驗(yàn)——今天少敲幾個(gè)參數(shù)明天少敲更多越用越順手。3.3 代碼走讀關(guān)鍵的邊界條件處理這幾十行代碼里有幾個(gè)邊界條件是實(shí)際跑起來(lái)之后才會(huì)發(fā)現(xiàn)的。第一個(gè)是存儲(chǔ)路徑的擴(kuò)展符處理。Path(~/.myapp/context.json)在Python中不會(huì)自動(dòng)展開(kāi)波浪號(hào)必須調(diào)用Path.expanduser()。我在最初版本里漏了這一步導(dǎo)致一直找不到文件后來(lái)排查了很久。正確寫法是self.storage_path Path(storage_path).expanduser()第二個(gè)是過(guò)期數(shù)據(jù)在get之后才刪除。我的實(shí)現(xiàn)里如果get時(shí)發(fā)現(xiàn)TTL過(guò)期會(huì)先把數(shù)據(jù)刪掉再返回None。但如果在刪除之前另一個(gè)線程正好也在讀同一個(gè)key就會(huì)出現(xiàn)競(jìng)態(tài)。我在get外層加了線程鎖這就是_lock的作用。不過(guò)對(duì)單文件來(lái)說(shuō)這個(gè)鎖只在進(jìn)程內(nèi)有效如果多個(gè)進(jìn)程同時(shí)讀寫同一個(gè)JSON文件還需要加文件鎖這個(gè)坑我第4節(jié)會(huì)專門講。第三個(gè)是set的值必須可JSON序列化。如果你存了個(gè)自定義對(duì)象json.dump時(shí)會(huì)直接拋TypeError。更隱蔽的是如果存的是tuplejson會(huì)把它變成list下次讀出來(lái)類型就變了。如果想保留類型信息必須在set時(shí)做轉(zhuǎn)換檢查。我在實(shí)際項(xiàng)目中加了這樣一個(gè)斷言def _ensure_json_serializable(self, value): try: json.dumps(value) except TypeError: raise TypeError(f值 {value} 無(wú)法序列化為JSON)這些邊界條件看起來(lái)不復(fù)雜但往往就是能用和好用之間的差距。4. 實(shí)測(cè)中的坑與排查過(guò)程數(shù)據(jù)覆蓋、過(guò)期混亂和隱私泄漏4.1 坑一并發(fā)寫入導(dǎo)致上下文互相覆蓋代碼看起來(lái)沒(méi)問(wèn)題的部分一上實(shí)測(cè)就暴露了第一個(gè)大坑。我的工具支持并行處理多個(gè)任務(wù)于是會(huì)同時(shí)跑多個(gè)進(jìn)程每個(gè)進(jìn)程都會(huì)調(diào)用ctx.save()結(jié)果經(jīng)常出現(xiàn)進(jìn)程A把上下文寫到一半進(jìn)程B也寫過(guò)來(lái)了最終文件里數(shù)據(jù)錯(cuò)亂甚至JSON解析直接失敗。排查過(guò)程是這樣的我先檢查了代碼里的線程鎖_lock發(fā)現(xiàn)它只能鎖住當(dāng)前進(jìn)程內(nèi)的線程進(jìn)程之間完全不管用。兩個(gè)進(jìn)程同時(shí)執(zhí)行tmp_file.replace(self.storage_path)時(shí)雖然臨時(shí)文件是各自獨(dú)立的但替換操作本身不是原子的關(guān)聯(lián)操作集合——A替換成功B替換成功后面的覆蓋了前面的無(wú)法合并。解決辦法是讓進(jìn)程間也能串行化。我引入了一個(gè)簡(jiǎn)單的文件鎖基于操作系統(tǒng)層面的fcntlimport fcntl def save(self): with open(self.storage_path, a) as lock_file: fcntl.flock(lock_file.fileno(), fcntl.LOCK_EX) # 原子寫入內(nèi)容 with open(tmp_file, w, ...): json.dump(...) tmp_file.replace(self.storage_path) fcntl.flock(lock_file.fileno(), fcntl.LOCK_UN)但這里還有個(gè)微妙的問(wèn)題鎖的競(jìng)爭(zhēng)粒度是整個(gè)文件的寫入如果多個(gè)進(jìn)程同時(shí)修改的是不同層級(jí)的數(shù)據(jù)理論上是可以合并的。我圖省事直接全文件互斥了實(shí)測(cè)下來(lái)因?yàn)閏ontext本身寫得不頻繁性能損失可以忽略。如果你的項(xiàng)目寫得很頻繁就需要把鎖粒度細(xì)化到字段級(jí)。4.2 坑二單字段過(guò)期機(jī)制導(dǎo)致的連鎖混亂第二個(gè)坑是在我加字段級(jí)TTL之后才浮現(xiàn)的。最初版本我把TTL放到了level層級(jí)也就是session層整體2小時(shí)過(guò)期。后來(lái)改成字段級(jí)TTL后我發(fā)現(xiàn)一個(gè)新的問(wèn)題決定是否過(guò)期的時(shí)間基準(zhǔn)有問(wèn)題。一開(kāi)始我給的邏輯是now - created_at ttl就過(guò)期但這有個(gè)反例用戶在一個(gè)長(zhǎng)任務(wù)的剛開(kāi)始設(shè)置了待處理文件列表這個(gè)列表的created_at是一個(gè)小時(shí)前但任務(wù)還沒(méi)跑完。按created_at算它已經(jīng)過(guò)期了可實(shí)際上它一直被正常使用著。后來(lái)我改成now - updated_at ttl每次get命中就刷新updated_at這樣只要這個(gè)字段還在被持續(xù)使用它就會(huì)一直存活。這個(gè)邏輯目前驗(yàn)證下來(lái)比較合理但它也有代價(jià)一個(gè)長(zhǎng)期不用的上下文永遠(yuǎn)不會(huì)被徹底清掉因?yàn)槊看蝕et都會(huì)給它續(xù)命。所以我加了一個(gè)上限當(dāng)now - created_at超過(guò)某個(gè)最大值比如7天時(shí)強(qiáng)制認(rèn)為過(guò)期防止數(shù)據(jù)無(wú)限膨脹。實(shí)際排查過(guò)程中我用了一段腳本模擬了反復(fù)讀取同一個(gè)舊字段的情況確認(rèn)了updated_at確實(shí)被刷新也發(fā)現(xiàn)了created_at一直沒(méi)變。這類問(wèn)題只有在把預(yù)期行為和實(shí)際行為對(duì)照著看才容易暴露單純看代碼很難發(fā)現(xiàn)。4.3 坑三上下文日志里存了不該存的密鑰第三個(gè)坑比較嚇人。我在調(diào)試context-mode時(shí)經(jīng)常打印整個(gè)上下文看看數(shù)據(jù)對(duì)不對(duì)有一次發(fā)現(xiàn)打印內(nèi)容里包含了用戶臨時(shí)輸入的數(shù)據(jù)庫(kù)密碼。最開(kāi)始沒(méi)在意覺(jué)得反正本地開(kāi)發(fā)后來(lái)才意識(shí)到一旦這個(gè)模塊被集成到線上的自動(dòng)化腳本里并且開(kāi)啟debug日志就等于把密鑰明文寫到了日志文件里如果日志被上傳到日志中心那就是事故。修復(fù)方案是加一個(gè)脫敏層。具體在打印和序列化時(shí)需要識(shí)別常見(jiàn)的敏感字段名SENSITIVE_KEYS {password, secret, token, api_key} def safe_dump(data): if isinstance(data, dict): return {k: (*** if k.lower() in SENSITIVE_KEYS else safe_dump(v)) for k, v in data.items()} if isinstance(data, list): return [safe_dump(i) for i in data] return data然后把所有對(duì)外輸出改成走safe_dump底層的存量數(shù)據(jù)保持原樣。這里關(guān)鍵在于展示層脫敏存儲(chǔ)層不脫敏——如果你把存儲(chǔ)層的值都改了那后續(xù)需要用真實(shí)密碼時(shí)就會(huì)出錯(cuò)。這個(gè)坑給我一個(gè)更深的教訓(xùn)context-mode這類工具天然就是什么數(shù)據(jù)都往里塞的類型所以必須在設(shè)計(jì)階段就明確哪些數(shù)據(jù)碰都不能碰對(duì)于高敏感數(shù)據(jù)寧可完全不放進(jìn)去。4.4 修復(fù)后的驗(yàn)證方案我是怎么確認(rèn)問(wèn)題真解決的修完三個(gè)坑之后我整理了一組回歸測(cè)試用例專門用來(lái)驗(yàn)證context-mode模塊的穩(wěn)定性。這組用例現(xiàn)在被我放在項(xiàng)目的tests目錄下每次改動(dòng)后都會(huì)跑一遍并發(fā)測(cè)試同時(shí)啟動(dòng)8個(gè)進(jìn)程每個(gè)進(jìn)程往context里寫入不同的key重復(fù)100輪最后檢查JSON文件里是否所有key都完整存在。過(guò)期測(cè)試創(chuàng)建一條TTL為1秒的數(shù)據(jù)sleep 1.2秒后讀取確認(rèn)返回None并且該key從存儲(chǔ)中刪除。隱私測(cè)試用一個(gè)包含了password的假上下文跑一次打印確認(rèn)輸出中對(duì)應(yīng)字段是***。邊界測(cè)試key名稱為空字符串、value為None、value為中文和帶Unicode的字符都要能正常寫入和讀取。這些測(cè)試全部通過(guò)的時(shí)候心里才踏實(shí)下來(lái)。尤其是并發(fā)測(cè)試第一次跑就失敗后來(lái)加上進(jìn)程鎖才通過(guò)那種測(cè)試救了一命的感覺(jué)寫代碼的人都懂。5. 從context-mode到智能化在LLM會(huì)話場(chǎng)景中的擴(kuò)展5.1 把context-mode用在大模型交互上滑動(dòng)窗口和摘要搞定了基礎(chǔ)模塊之后我把它用在了另一個(gè)更貼近當(dāng)前熱點(diǎn)的場(chǎng)景大語(yǔ)言模型LLM會(huì)話的上下文管理。很多人問(wèn)為什么AI聊天工具不能無(wú)限記住所有對(duì)話核心原因就是上下文窗口有上限。context-mode在這里的價(jià)值是可以設(shè)計(jì)一種滑動(dòng)窗口 摘要的組合策略。具體做法是維護(hù)一個(gè)會(huì)話歷史列表新消息不斷加入。當(dāng)列表長(zhǎng)度超過(guò)N條或者總token數(shù)超過(guò)閾值時(shí)我們?nèi)∏懊嫒舾蓷l消息做一次摘要然后把摘要作為一個(gè)新的系統(tǒng)消息再丟掉最老的消息。這樣實(shí)際上形成了一種滾動(dòng)上下文。我把這個(gè)邏輯復(fù)用了之前的ContextManager只是在session層里存了一個(gè)chat_historyMAX_HISTORY 10 def append_message(role, content): history ctx.get(session, chat_history) or [] history.append({role: role, content: content}) if len(history) MAX_HISTORY: old_part history[:-MAX_HISTORY // 2] recent_part history[-MAX_HISTORY // 2:] old_text \n.join(f{m[role]}: {m[content]} for m in old_part) summary llm_summarize(old_text) # 調(diào)用模型生成摘要 ctx.set(session, chat_summary, summary) ctx.set(session, chat_history, recent_part) else: ctx.set(session, chat_history, history)這套方案的關(guān)鍵是摘要的更新時(shí)機(jī)。如果每來(lái)一條新消息就跑一次摘要成本太高我的經(jīng)驗(yàn)是等舊部分累計(jì)超過(guò)閾值時(shí)再整體生成一次摘要。另外要注意摘要本身也應(yīng)該有TTL因?yàn)樗4娴氖菚?huì)話的臨時(shí)狀態(tài)會(huì)話結(jié)束或被新摘要替代后就不再需要了。5.2 后續(xù)還能怎么擴(kuò)展共享上下文、權(quán)限控制、可視化調(diào)試現(xiàn)在這個(gè)context-mode模塊已經(jīng)能穩(wěn)定運(yùn)行了但還談不上完善。我自己整理了三個(gè)明確的擴(kuò)展方向如果你也在做類似項(xiàng)目可以參考。第一個(gè)方向是共享上下文。目前每個(gè)用戶各自維護(hù)一份context文件如果想在團(tuán)隊(duì)里共享項(xiàng)目級(jí)上下文就需要引入同步機(jī)制。我的初步思路是給每條context記錄加一個(gè)owner字段拉取時(shí)先檢查權(quán)限只返回自己有權(quán)限的部分。這樣可以做到項(xiàng)目組共享構(gòu)建參數(shù)個(gè)人私有配置不泄露。第二個(gè)方向是權(quán)限控制。這跟上面的共享是配套的。context里往往包含敏感信息比如數(shù)據(jù)庫(kù)連接串、臨時(shí)密鑰。改造方向是在set/get的接口中加入一個(gè)權(quán)限校驗(yàn)層按照用戶角色判斷當(dāng)前操作是否被允許。最簡(jiǎn)單的實(shí)現(xiàn)是建一個(gè)權(quán)限表每個(gè)key對(duì)應(yīng)一個(gè)可訪問(wèn)的角色列表復(fù)雜一點(diǎn)的方向是做成與現(xiàn)有SSO/身份系統(tǒng)對(duì)接。第三個(gè)方向是可視化調(diào)試。前端工程師調(diào)試時(shí)最想看的是上下文樹(shù)的實(shí)時(shí)變化。我已經(jīng)用Python做了個(gè)簡(jiǎn)單的Web頁(yè)面把ContextManager暴露成一個(gè)HTTP接口用WebSocket推送變更事件界面上能看到global/session/project三層的數(shù)據(jù)新增、過(guò)期、刪除。這個(gè)擴(kuò)展對(duì)排查為什么某次操作行為異常特別有用因?yàn)槟隳芸吹匠绦虻降子涀×耸裁?。把context-mode從一個(gè)小模塊擴(kuò)展成完整的上下文管理框架這條路其實(shí)很長(zhǎng)。但至少起步階段的方向是清晰的先保證數(shù)據(jù)結(jié)構(gòu)合理再確保并發(fā)安全最后再往智能化和協(xié)作方向走。我在實(shí)際項(xiàng)目中體會(huì)最深的一點(diǎn)是context-mode看起來(lái)像是個(gè)不起眼的輔助功能但對(duì)用戶體驗(yàn)的提升是實(shí)實(shí)在在的。它讓工具從一個(gè)每次都要重新認(rèn)識(shí)你的陌生人變成了記得你習(xí)慣的同事。開(kāi)發(fā)過(guò)程中踩過(guò)的這三個(gè)坑——并發(fā)覆蓋、過(guò)期混亂、隱私泄漏——幾乎每一個(gè)都值得單獨(dú)寫篇文章但總結(jié)下來(lái)核心原則也就三條上下文要分層、過(guò)期要按字段、敏感要脫敏。記住這三點(diǎn)你也能做出一個(gè)穩(wěn)定好用的context-mode。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91丨豆花丨熟女| 91麻豆天美国产| 天堂成人网| 婷婷五月天激情小说| 色网综合网| 一区二区三区精品视频| 日韩有码 一区二区三区| 欧美久久人妻少妇一区二区| 91一区二区| 青娱乐999| 久久99干一本高清| 中美日韩毛片| 婷婷综合激情| 在线观看综合精品亚洲| 啪啪啪亚欧美视频| 97一区二区三区视频| 综合网色| 欧美劲爆视频一区二区| 日本色日夜干| 美女上床网站| 神马久久久久久久久久| 麻豆人妻精品一区二区| 黄色电影在线播放综合网站| 成人小电影网站tex| 午夜性| 搞中出久久| 97视频在线播放| 青青草字幕AV| 人人妻人人操人人乐| 久久高清欧美国产| 91精品久久久久五月天精品 | 国产精品999aaa| 久久精品高清无码一区| 久久鲁夜| 久草在| 成人AV在线网站| 久久专区| 骚妻少妇精品性色无码四色A V| 老熟妇一区二区三区…| 密臀在线一区尤物| 97色诱| 女人高潮抽搐喷水视频网站| 日本成a人v网站在线观看| 中文字幕日韩精品一区二区三区| 乱伦1色页| 九九九九精品视频| 久久久久久一日韩字幕无码| 男人天堂新在线| 超碰人妻中文在线| 伊人网在线观看| 国产懂色精品国产av| 色女免费在线观看视频网址| A久久| 亚洲视频1区| 97欧美综合网| 久久机热| 中文字幕无码不卡啪啪| 国产一区二区三区不卡手机在线| 偷拍伦理视频| 日韩丝袜人妻AV| 亚洲 欧美 中文 日韩超碰| 人妻少妇久久久| av天堂手机版追回| 美日韩在线不卡人妻| 92性色国产午夜福利在线661| 精品一区二区三区蜜桃| 精品69网| 园内精品自拍视频在线播放| 黄片视频,下载| 综合久久久久久久久91| 中文字幕精品一区欧美| 狠狠色丁香| 91啪啪视频| 国产精品久久久久久 百度| 天天看天天日天天操| 亚洲影视综合| 国产午夜在线观看| 久久大| 91成人精品| 欧美成人一级麻豆| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 色99视频| 精品97精品97| 欧美日韩中国x| 欧美高清16| 中国农村熟妇毛片视频| 欧美人妻久久精品二区三区| 超碰人妻在线| 少妇激情AV| 亚洲午夜蜜臀| 7777奇米影视久久| 丁香六月激情| 天天操妹子| 日韩美女,国产传媒,视频一区| 日日夜夜噜| 91色欧美| 美女啊啊啊啊pc| 精品一二三区女同 | 收看日本人日bb| 国产久久av| 天天干干天天干干| 99精品欧美一区二区三区桃色| 久久一区二区高清免费| 综合色色婷婷| 久偷拍| 老妇女91| 日本黄色天堂| 久久久久亚洲Av无码专区老牛影视 | 6080yy午夜理论三级一区二区三区无码| 日韩精彩免费| A 在线网址| 亚洲欲色9532548967一区| 欧美91丝袜| 国产精品久久久久久久黄无码| 亚洲一二三四区机械| 国产呦精品系列在线观看| 国产综合永久精品日韩鬼片| 97日亚洲欧美| www.激情| a亚洲欧美色欲| 天美精品av| 丰满熟女一区二区三区在线播放| 国产丰满少妇久久久精品影院| 91成人亚洲色图| 婷婷五月花| 激情小说在线视频| 91视频女生| av优播| 看看小穴| 欧美丰满少妇xx高潮| 天操老女人| 亚洲精品精品一区二区| 91天天爽| 青青草字幕AV| 亚州情色j区| 亚洲色图欧美激情| 91男人天堂网| 久久一二三四不卡 | 久肏视频字幕| 做爱福利视频一区二区| h无码动漫在线观看| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 久久综合资源一区二区| 欧美 精品国产制服第一页| 女上位精品在线| 69精品在线| 国产精品自产拍在线观看社区| 欧美高清无码免费视频高清版| 久久大香蕉97| 91亚洲黄色网| 欧美后入式| 精品制服美女中文一区二区三区| 磁力99AV| 亚洲视频小说| 欧美制服网站美腿丝袜| 中文字幕在线免费观看视频| 亚洲中文字幕精品一区| 亚洲美女精品九九视频| 90后后入| 91麻豆天美传媒HD| 97视频在线视频| 日韩三级在线观看mp4| 丝袜熟女2P| 国产精品一区二区三区,亚洲综合| 综合国产影视三级| www熟女乱伦com| 老熟女综合| 国语精品av| 美女黄网| 操逼www.| 在线观看国产黄色| 日本高清电影欧美色图| JULIA人妻风俗店中出电影| 日本美女性生活久久久久久久| 久热99| 婷婷爱五月| 青青草视频爽一爽| 精久久久| 99久国产精品午夜性色福利| 静品嫩模一区二区| 欧美色九九九| 欧美后入式| 久久久久国产精品久久久| 国产精品国产精品国产| 国产内射爽爽大片| 免费簧片在线观看| 午夜福利久久久噜久噜久久综合| 美国三级日本三级久久99| 91天美传媒在线观看| 91少妇人妻| 亚洲国产麻豆一区二区三区 | 久久同城AV| 国产精品国产精品国产| 亚洲图片欧洲图片aⅴ| 国产精品久久久久综合| 久操 高清| 白丝一区| 芊芊操逼视频无码| julia高潮后不停追击中出| 亚洲熟妇A V黑人| 久久97视频| 国产丁香精品露脸视频| 美国一区二区免费视频| 亚洲欧洲综合av在线| 亚洲人在线成线成人| 夜夜精品视频| 毛片视频白嫩| 蜜臀99999| 国产精品视频自拍在线| 色香在线| 激情综合五| 欧美综合另类| 亚州男人的天堂| 日本一区二区成人在线| 久久人妻熟女一区二区| 久久亚洲天天做| 特级丰满少妇一级AAAA爱毛片| 久久精品一区| 九色婷婷| 欧美亚洲色图另类国产| 亚洲人妻久久久| 91狠婷| 操操逼操操逼操操逼逼| 东京热av男人的天堂| 1禁看欧美黄片免费看| 伊人久久AV诱惑悠悠| 校园春色亚洲欧洲| 高清不卡视频| 久久精品无码一区二区三区| 97超碰伊人| 欧美少妇性乱| 自拍第一页| 亚洲熟女偷拍在线观看| 久久久久久久| 超碰97中文| 欧美女同在线| 国产综合久久久麻桃个| 亚洲黑人在线| 大香蕉视频一二三区| 女欧美一区二三区| 五月天婷婷社区| 水滴偷拍| 久久久久久久强迫| 人人艹亚洲| 亚洲天堂人妻熟妇视频| 91久热这里只有精品| 97久久资源| 91在线限制级| 北野未奈加勒比av| 玖玖久久久| 久热热| 超碰在线人人射| 日B操| 777AV电影| 熟女六十路| 亚洲欧美中文日韩视频中国语| 亚洲乱熟女一区二区三区大香蕉| 中美日韩毛片| 和协影院中文字幕三区| 色哟哟av| 一级@啪啪视频| 乱伦熟女区| 日韩乱码Av| 亚洲成人妻日韩在线| 奶水 人妻 哺乳 在线| 欧美不卡在线一区二区| 婷婷色中文字幕| 日本九九久久99播| 天天综合网~91| 97色伦97色伦国产欧美| 日韩成人电影AV| 欧美丝袜激情| 欧色网址| 中文字幕奈奈美被公侵犯| 精品超碰国产| 免费看污网址| 欧洲在线性爱视频| 国产精品久久久久久无码红治院| 国模一区二区三区| 亚州国产成人精品女人久久| 亚洲学生妹高清av| 操久久久久久| 久久有码视频| 岛国AB视频| 国产人伦精品一区二区三区 | 日日夜夜国产综合| 97超碰色色| 不卡免费av在线播放| 麻豆区99999| 青草精品视频日本久久久久网站在线| 九月丁香综合网| 97爱爱爱综合| 狠狠躁伊人中文字幕| 久久综合国产精品国产| 麻豆精品三区视频| 大香蕉专区| 欧美一区二区在线资源| 日韩操逼性鲍| 无码一区二区三区四区五区六区七区八区九区十区视频 | 欧美大香蕉97| 亚洲综合夜色| 人人做,人人操,人人摸| a网站免费观看| 神马久久69| 日本色色视频网站| 60秒试看最爽10分钟网站| 欧美激情专区| 久久伊人网视频一区二区三区 | 另类图片天天影视| 另类在线| 曰韩人妻中文字幕在线| 四虎免费看黄| 国内精品a| 欧美日韩国产电影| 欧美亚洲色图另类国产| 成人欧美日超碰| 欧美一区二区日韩三区| 色综合20p| 超碰在线香蕉| 亚洲精品久久久久久| 五月天婷精品激情| 97资源久久| 青青草原人妻| 亚洲精品国产无码高清| 99999这里都精品| 视频分类 国内精品| 欧洲精品区| 欧美日韩中文亚洲v在线综合| 大香蕉青青9| 欧美啪啪女女| 亚洲有码视频二区| 黄色十八禁网站| 中文字幕中文字幕一区二区| 九久久精| 艳尻美人妻| 91精品女厕偷拍视频| 九色 蝌蚪 熟女自| 欧美 中文字幕 一区| 黄色香蕉视频网站一区| 97欧美色| 97综合国产精品高潮久久| 香蕉热人人精品| 蜜臀99久久精品| 日韩偷拍色图| 午夜120视频在线观看| 黄色成年| 欧美激情久久久久| 9 9精品一区二区三区| 18禁无码永久免费无限制| 久草在| 9色在线| 欧美日韩大黄片| 91丝袜人妻| 澳门人妻久久| 日韩操逼性鲍| 在线洲亚线| 日韩在线人妻网站| 欧美躁死她一区二区| 免费观看性欧美一级| 中文字幕无码不卡啪啪| 亚洲区限制级| 你操综合| 久久麻豆一区二区| 五月丁香社区婷婷日韩欧美精品影院| 超碰日韩人妻| 国产一国产一级毛片古装| 欧美91丝袜| 韩国女主播青草福利视频| 日韩人妻中文视频| 第四色奇米影视777| 老熟女91视频| www.人人摸在线视频| 亚洲AV高潮| 久久超碰爱| 人人插人人搞人人操| 中文字幕五月婷婷免费| 国产精品一区二区a| 少妇色欲综合网2| 中文字幕AV片| 日韩78m视频| 综合色播| 九九99精品视频在线观看| 中文字幕乱码人妻二区三区| 欧美成人免费在线观看| 亚洲色图综合| 91一区二匹| 国产又粗又长的视频| 偷拍片久久| 亚洲啪啪啪啪视香蕉| 国产精品色哟哟| 91亚·色| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 欧美日韩另类激情图片| 天天欧美97| 玖玖资源视频一区二区三区| 欧美最婬乱婬爆婬牲视频| 91无码人妻| 久久久专区| 久久一本大香蕉 | 欧美成人一级免费电影| 亚洲成人免费中文字幕| 亚洲人妻在线一区| 五月天玖玖资源站| 国产免费一区在线观看| 亚洲综合在线视频| 久久肏大逼| 韩国黄色片精品久久久| 国产欧美第五页| 国产在线76页| 久久国99999| 九九九九九九九九九九九九九九九女| 亚洲影视高清第一页| 亚洲综合射| 亚洲极品| 国产精品扒开腿做爽爽爽视频| 嗯嗯啊啊操我| 欧美呦呦性爱| 不卡一区二区日本视频| 人妻AV 中文字幕的| 超碰97起碰| 天天综合影院91| 青青欧洲黑| 97国产精品在线观看| 亚洲激情视频| 亚洲图片激情综合另类| 久久99网站| 精品少妇后入一区二区三区四区人妻巨乳| 国产福利夜| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 色婷婷成人| 人人手机欧洲亚洲国产人妻| 久久久精品中文字幕麻豆| 日本免费二区三区| 国产自制av蜜乳| 操逼国产免费| 玖玖97综合 | 国产精品直播在线观看直播| 九九久久一区二区伦理| 日韩啪啪啪啪啪| 久久大精品乱码视频人妻熟女| 亚洲精品黑丝| 欧美亚洲特P| 51国产午夜精品视频| 欧美性爱系列| 国产精品熟女九九九| 午夜九九| 高清国产性猛交xxxx乱大交| 欧美中文字幕男人天堂久久精品| 激情人妻另类| 色黄污美女啪啪啪免费网站| 国产精品久久久久无码A√| 99视频自拍| 亚洲色图 欧美热图 清纯唯美 另类自拍| B049AV在线播放| 秋霞Av理论一级在线| 国产福利av精彩对白| 色噜噜国产在线| 日韩99999| 萌白酱自拍视频| 久久综合久久综合人久久夜精品| 国产97av| 日本理论在线| 亚洲图片 激情小说| 精品国产乱码久久| 26uuu国产| 日本精品一区二区三| 国产无码精品高清| 绯色AV粉色AV蜜臀AV| 午夜精品久久久久久久久久久久久 | 欧美爱国产综合、| 丝袜无码a片| 蜜桃久久一区二区| 欧美天天弄| 国产精品另类| 午夜男人一级A片7777| 91精品电影18| 97干在线| 免费观看欧美日韩操逼视频| 人人妻人人澡人人爽久久av| hd成人一区二区在线| 大香伊人在线一区| 国产白丝精品在线观看| 嗯嗯啊中文字幕| 60秒不遮不挡| 亚洲天天艹| 91精品网站| 亚州色图第三区| 久久午夜神马| 95精品在线| 超碰97 线线 在现| 午夜男人天堂| 久久久久久久九九九九九九| 午夜精品久久久久| 亚洲第一狼人丝袜美女另类 | 婷婷亚洲中文字幕在线| 欧美性爱第一页久久| 婷婷激情一区二区三区俺也去| 日本淫乱女一区二区三区视频| 欧美三级一级| 亚洲国产欧美一区二区潘金莲| 91精品成人www| 人人摸人人入| 久久久九九九九| 在线v中文字幕一区二区三区| 久久久久久中文| 五月丁香婷婷综合| 超碰色综合| 天天舔九色婷婷| 日本视频一区二区三区| 超碰天天去日穴| 性爱动态120秒| 精品一区二区国产日韩| 岛国不卡超碰护士AV在线播放| 成人日本视频人妻在线| 97干在线| 蜜桃一区二区三区| 婷婷伊人綜合中文字幕| 天天日天天干天天色| 另类专区加勒比| 日韩人妻少妇 一区二区三区| 午夜啊啊| 欧美久久婷婷| www.色五月| 天天射天天操天天干天天吃2018| 九九热午夜欧亚国产视频| 素人播放一区| 亚洲少妇综合在线播放| 啊啊啊草死我| 国产热av| 欧美se亚洲| 综合激情婷婷| 亚洲高清无码在线桃色| 欧美色狠| 欧美亚洲天天| 60秒免费小视频| 久操大香蕉手机视频在线看 | 亚洲国产成人7777| 天堂性色| 97av,com| 熟女欧美日韩综合婷婷| 97资源制服丝袜| 思思视频免费看网站| 日本高清视频在线观看黄已三辽| 欧美白嫩女HD| 亚洲国产综合久久天堂| 久色网| 天天做日日做天天欢。| 黄片视频观看| 夜夜嗨视频| 欧日韩在线观看| 丁香五月天婷婷姐| 大香樵伊人网| 日韩 欧美 视频 在线 一区| 日韩精品在线放| 色姑娘综合网| 极品肉射| 粉嫩av一区二区三区天美传媒 | 99久久综合| 青青草日本无码| 99视频内射三四| 日韩在线观看字幕精品| 亚洲第2页| 亚洲囯产精品女人久久久| 国产一级舔足在线观看| 日韩欧美性吧婷婷乱伦大香蕉| 高清不卡 中文 人妻| 青青草在线视频欧美| 69AV女优男人的天堂| 日本熟妇熟色97一本在线观看| 99精品在线观看| 综合网色| 亚洲欧美精品91| 亚洲老熟妇xxx| 色99视频| 美女诱惑1区2区| 99999无码| 啪啪啪综合网| 97免费在线视频在线观看| 亚洲国产精品乱码在线观看| 大香蕉综合| 亚洲国产精品久久久久久久久久| 伊人久久88国产女| 东京热毛片调教| 亚洲深夜福利| 啊啊啊啊啊啊在线观看| 欧美性爱第一页久久| 99亚洲国产精品色一区二区三区| 日韩成人私密一级精品av| 亚洲欧美国产中文视频| 成人无遮挡毛片免费看| 亚洲日韩精品久久久久一区壹牛| 不卡av在线中文字幕| 一区二区三区黄色片a| 国产日逼视频| 操逼网站视频漫画国产| 五月激情影院| 极品粉嫩一区二区| 亚洲欧美综合网站| 激情在线青青操| 欧美超碰在线| 中文字幕一区二区三区高清| 中文字幕乱偷人妻久久艾草网| 精品久久99| 99色骚| 欧美第五页| 天天综合网日韩| 国产精品视频自拍在线| 国产 三级自拍| 俺去久久| 日韩精品影视| 999久久久| 国产日韩欧美中文在线播放| 极品极品色影院| 夜夜操av亚洲一区二区| 色色青青久久| 国产无码三级视频在线观看| 中文字幕123| 国产自偷自拍一区| 日韩啪啪啪视频| 精品免费成人久久| 天天干天天舔| 另类在线| 国产免费久久精品99re韩国| 久久系列| 日韩人妻一区二区精品| 青娱乐av在线| 久久久偷拍| 日韩一性一交一A片俄罗斯| 日本 成 人 小说 电影 一区二区| 国产毛片片精品天天看视频 | 色噜噜综合在线| a片亚洲一本通视频| 精品亚洲| 深爱五月婷婷| 婷婷精品国产欧美精品亚洲人人爽| 国产精品剧情| 韩国一级婬片A片AAAAA| 亚洲区限制级| 欧美福利视频啊啊啊啊| 亚洲女毛多水多21P| 冬京热男人的天堂| 偷偷人人精品女女久久| 色久桃花影院在线观看| 亚洲AO在线| 中文字幕在线观看网址| 97色色色| 怡春院久久| 深田咏美亚洲精品福利社| 久久同城AV| 91色人妻| 有码色中文字幕在线观看| 大香蕉一级黄色片久久| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 99久久精品无码一区二区| 高树玛利亚无码流出| 翔田千里AV无码秘 三区| 欧美日韩 强奸乱伦| 亚洲青色欧美| 黄色激情电影在线观看| 国产九九九九九九九九| 久久二| www.91逼逼.com| 国产精品视频白浆免费| 日本午夜久久电影| 亚洲一区二区在线观看91| 校园春色综合| 久久精品国产亚洲5555| 伊人久久国产免费观看视频| 91无遮挡| 熟女一区二区| 亚洲码在线中文在线观看| 色诱avtt| 亚洲一区二区三区不卡国产欧美| 北京美女一区二区| 亚洲AV无码翔田千里网站| 啊啊啊97视频| 亚洲无992tv| 色老汉色| 国产亚洲精品美女久久久久久2021| 动漫区日韩区欧美区| 伦伦成年午夜免费视频| 天天摸天天舔天天操| 日韩黄色一区二区三区| 日韩激情啪啪| 十八禁黄色成人网站观看| 国产一级高跟丝袜| 久久精品91| 370p日韩欧美亚洲精品| 超碰视97中文| 熟女啪啪视频| 91 偷| 日韩少妇丰满亚洲| 国产CHASE男男GAYGA 毛多色婷婷| 91老司机精品| 欧美日韩亚洲高清不卡一区二区三区| 乱伦系列一区二区| 久久 国产 无码| 97日韩欧美亚洲| 91色图片| 久久麻豆一区二区| 亚洲暴力强奸AV| 国产精品不卡高清在线观看| 91日日夜夜| 少妇与黑人高潮在线| 色色色网站| 无码日韩人妻av一| 精品国产一区探花在线观看| 日韩欧美久久婷婷网站| 青青欧洲黑| 亚洲中文字幕有码视频一区二区三区| 国产AV无码AV| 欧美性爱18观看| 伊人久久AV诱惑悠悠| 久久华人网| 98精品国产乱码久久久久久| 99色悠悠| 99综合网| 91超级碰碰| 久久肏大逼| 无码高清专| 三级特黄60分钟播放| 欧美91精品国产自产| 亚洲第一页色网| 97国产精品久久久久| 亚洲区限制级| 91日日| 国产一区二区三区不卡手机在线| 99色在线| 婷婷色色五月| 日韩成人电影AV| 日韩中文字幕二区| 在线性黄高清免费视频| 人人摸人人摸人人干| 影视综合无码少妇| 福利社区午夜一区二区| 国产又黄又爽又刺激久久久久久| 国产亚洲色婷婷久久99精品91 - 百度 | 丁香九月 婷婷| 韩国一级做a久久久久| 日韩九九九| 97亚洲色图| 亚洲色交| 久久久新亚洲AV| av毛片aaaaa免费看| 亚洲精品国语在线播放| av网站免费线看| 欧美人人曰人人操人人射射| 女同女同恋久久级三级| 欧美国产精品| 免费A V在线播放| 亚洲一区二区三区四区视频| 热99这里只有精品| 熟女突然公开看18禁影片 | 久久久久久久综合,国产| 91艹| 揉揉揉夜夜| 亚洲天堂男人天堂| 国产探花日韩援交| 91c色| 婷婷色导航| 清纯唯美激情四射| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 免费簧片在线观看| 欧美成va视频网站| 亚洲 欧美 91| 嗯嗯啊啊视频一区二区三区| 操逼无毒无码免费视频| 国产suv一区二区三区6| 欧美精品成人一区二区在线观看 | 综合色99| 日韩二级| 欧美黑人168页欧美黑人167| 在线中文字幕视频| 天天插夜夜操| 六月丁香婷| 操学生天天| 欧美瑟综合| 天天射天天| 精品国产精品一区二区| 九一屌逼| 欧美另类天堂| 天堂69亚洲精品中文字| 国产吞精a级片激情电影| 无码99| 九九av| 国产老太乱伦一区| 日韩激情啪啪| 69综合网| 九月丁香| 久久伊人青青草| 日韩大香蕉AV影片| 亚洲乱伦图片视频| 欧州色图区| 四虎精品一区| 青青青国产手线观看视频2| 欧美黄色大香蕉一区二区| 久久综合日韩亚洲欧美| 老熟女阿 国产91| 隔壁邻居波多野结衣中文字幕| 激情文学网伊人| 久久原创中文| www.亚洲黄色| 日韩97超碰中文字幕| 91色人| 国产一区二区a毛片| 97资源超碰| 国产久久天堂资源| 成人免费不卡在线视频| 蜜桃久久精品一区二区三区| 婷婷五月天激情四射| 国产 丝袜 欧美中文 另类| 春色校园综合网| 99热免费| 99久在线精品99re8| 欧美性爱免费短视频| 四虎永久在线精品免费网址| 偷偷人人精品女女久久| 欧美性爱十八禁| 欧美91精彩| 日本精品中文字幕视频| 黑操B| 亚洲成人ab| 免费视频a级毛片免费视频| 东北操逼| 综合欧美激情网| 动漫区日韩区欧美区| 乱伦熟妇一区二区| 97综合日韩| a亚洲欧美色欲| 中文字幕在线观看AV| 欧美一级在线观看成人| 中日无幕一二三四区| 天天日天天干少妇日| 色色国产| 亚洲毛片基地专区| 偷拍 亚洲| 狠狠操使劲操| 91色图片| 天天操人人操狠狠插| 91亚州欧美| 2020中文在线一区二区三区| 人妻内射一区二区在线视频| 伊人久久大香线蕉无码| 97免费视频在线观看视频| 国产色呦呦| 日本97久久| 成人av免费观看| 人人妻人人澡人人爽人人精品浪潮| 九九亚洲视频| 中文字幕欧美丝袜07资源| 啊啊啊啊啊啊啊国| 国产色综合亚洲色综合吹潮| 性色av一区二区| 国产精品自在线发布| 欧美最婬乱婬爆婬牲视频| 久久老熟女| 91粉芽高清在线一区二区| 试看60秒 爽| 9超碰免费| 欧美午夜一区二区三区| 亚洲日精品| 久操B网| 国产一进一出视频网站| 人妻色情天天操| 人妻熟女字幕一区二区| 日韩欧美操逼xxx| 日日妻色网| 免费看毛片操穴| 国产精品原创巨作?v网站| 久久视频,这里只有精品| 九九色精品| 麻豆综合一区av| 美国三级日本三级久久99| 99无码视频| 国产精品人妻一区二区| 色97综合中文字幕| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 91精品婷婷国产综合久久| 99激情| 欧美性爱无码一区二区三区| 亚洲色天堂九9| 怡红院怡春院| 欧美精品自慰系列寂寞少妇| 男人天堂网址| 99国内熟女露脸视频| 欧美综合站| 午夜福利免费福利视频| 超碰97欧美| 天天热精品| 青青草吊丝| 五月色网| 日本日逼高清| 日韩欧美日韩| 日本免费二区三区| 一直超碰| 亚洲熟妇乱女区二区三区| 国产精品制服丝袜清纯唯美| 97综合网| 超碰导航97| 久草男人天堂| 超碰 另类 欧美 | 熟女色综合久久| 26UUU欧美日本| 九九热av| 午夜操操操| 91精品国久久久久久无码| 天堂蜜桃无码视频一区二区| 国产亚洲精品玖玖玖在线观看| 玖玖爱在线视频免费观看| 九九热精品视频六| 少妇精品久久久八区九区| 久操操| 精品欧美老熟女一二区| 黄页网站成人免费| 国产热av| 热热色色综合| 最新av在线| 国产精品91ai| 欧美亚洲第1页| 日韩情色视频| 熟女丝袜视频| 日本高清电影欧美色图| 久热婷婷| 大香蕉人妻| 国产精品国产拍高清AV| 久精品无码av一区二免费国产在线观看| 俄罗斯一区二区视频在线观看| 大香蕉一级黄色片久久| 久九色| 人妻少妇精品视频一区二区三区| 91N综合网| 久久香蕉国产线看观看亚洲女人 | 一区二区三区美女超清| 久久久久九九九| 亚洲精品欧洲色| 激情在线青青操| 精品无码少妇| 神马午夜久久| 久久久久九九九九| J?P?NESEHD熟女熟妇伦| 秋霞色色影院| 久久国产熟女影院| 嫩呦国产一区二区三区AV| 亚洲色系另类精品国产| 成人精品一区二区91毛片不卡| 加勒比在线观看一区二区| 亚洲国产91精品一区二区久久| 国产不良强奸视频免费看| 国产精品爱欲| 黄色区免费观看中文字幕| 中国国国产一级特黄毛片| 高清在线偷拍自拍视频| 人人摸人人干| 亚洲情色1区| 热久日综合| 国产精品电| 国产美女自拍视频| 精品一级毛片在线观看| 日韩福利综合一区| 亚洲精美粉嫩嫩泬在线观看| 久久婷婷综合国际产色怕| 国产亚洲色婷婷久久99精品91| 防屏蔽在线视频| 蜜奶av| 啊啊啊啊啊啊啊啊啊在线观看| 欧美97免费| 精品人妻一二三| 综合久久久久久久综合网| 偷窥自拍亚洲天堂网爆| 91neishe| 色娱乐色呦呦夜夜夜夜av| 蜜桃臀一区二区三区久久| 久9精品| 精品九九国产无码| 免费观看啪视频| 草b在线 | 亚洲一区二区三区不卡国产欧美| 欧美性爱系列| 蜜桃精品一区二区三区ww| Aa东京男人的天堂| 九九碰九九爱97超| 家庭乱伦网站国产| 美女黄页| 97国产中文| 欧美成人A√在线一区二区| 干婷婷综合网| 中文字幕少妇色| 天天综合~91| 国产黄色影片在线观看| 久久久精选| 国产精品一区av在线| 色婷婷99| 久久精品国产精品| 亚洲天堂男人| 717影院理论午夜伦八戒| 九九热五区| 超碰97综合在线| 欧美黑人精品在线播放| 97超碰国产亚洲精品资源| 肉丝无码中文高清| 日B操| 中文字幕 人妻不满 在线视频| 欧美97视频| 夜草网站| 中出91| 国产精品另类一区大香蕉| 亚洲色图尤物视频| 九九九午夜| 欧美性夜| 立川理惠无码一区二区| 午夜毛片高清免费不卡| 国产午夜在线观看| 日本三级韩国三级99| 婷婷五月天色网| 思思热在线cao| 日韩 欧美 校园一区| 超碰78| 天天影视综合网欧美精品| 玖玖爱视频网站| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 一块操欧美性爱| 亚州大图综合色图| www.91逼逼.com| 天天干天天日天天射黄色片| 欧美一区二区男人天堂| 亚洲人妻一区二区三区| 日本一二三免费久久| 中文字幕精品资源在线| 精品少妇人妻| 色yeye成人免费视频| 天天内射| 手机av亚洲丝袜美腿日韩第一页二页| www色色com| 欧美色五月| 九九热国产| 99热官网| 久久内射| 插入综合网| 久久久新亚洲AV| 久久久久久久久久久久久久久性生活视频| 欧美情色亚洲| 1024香蕉视频| 久久午夜色播影院免费高清| 激情五月婷婷| 欧美亚洲综合高清在线| 999日韩中文精品观看视频。| 啊啊啊草死我| 少妇国产不卡| 久久久久久亚洲Av无码精| 东北女人的毛片| 欧美黄色大片在线观看 | 亚洲日产专区| 免费AV中文网在线观看| 怡红院怡春院| 青草草免费网站av| 亚洲色图自拍| 操逼日韩无码 | 大屁股人妻女教师撅着屁股| 波多野结衣之双飞调教在线播放 | 久久久久99999| 久久色一区| 久久男人精品| 另类老少妇| 99激情视频| 国产肏逼网站| 色综合99999| 乱老女人一区二区视频| 亚洲色91| 伊人991| 成年女人18级毛片毛片免费观看| 美女性91| 国产一区麻豆免费观看| 精品成人动漫一区二区| 风间由美日韩欧美久久| 九九热精品在线| 秋霞久久亚洲精品成人| 97伊人超碰| 精品网站9999| 在线综合色| 日本506070| 人妻人妻天天碰| 日韩精品区二区三区不卡| 豆花视频操逼网址| 99精品无码| 午夜福利久久久噜久噜久久综合| 国产 热久久久久国产精品| 97免费视频在线| 美女毛片999| 久青草影院| 久久青青草原免费视频| 蜜臀久久99精品久久久久久成人小说 | 岛国艾薇凹凸视频天堂| 久久久亚洲| 丝袜天堂网| 9热9热综合网| 婷婷啪啪| 黄色AAAAAAAAAAA大片| 成人怡红院| 久草久日| 一区 欧美 日韩 麻豆| 婷婷色婷婷| 太久视频| 久草尤物| 97国产精品一区二区传媒公司| 9久精品视频在线观看| 91 亚洲 欧洲| 强奸a片网| 国产99精品一区二区三区免费| 美女久久久| 久久久亚洲熟妇资源| 日日做夜狠狠爱欧美黑人| 国产欧美精品日韩区二区麻豆天美| 欧美大香蕉专区网| 男女做爰猛烈动高潮A片免费应用| 亚洲丝袜在线观看| 久久久九精品| 91真人天天在线| 亚洲伊人久久精品狠狠在线| 色婷婷av在线观看| 91精品人妻电影| 日韩亚洲精品一区二区| 国产毛片片精品天天看视频| 高颜值美女口爆高潮浪叫| 玖玖超碰熟| 色老牛| 91五月天| 久久久久密臀一区二区| 色噜噜国产在线| 97人妻色| 韩国久久97| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 男人天堂资源| 18禁网站在线播放| 亚洲图片婷婷五月天| 亚洲欧美日韩制服另类| 五十路六十路素人熟女| 99精品丰满人妻无| 久操视频免费观看| 狠狠干精品一二三四五六2022| 七久久久| 久操大香蕉手机视频在线看| 丁香六月啪| 大香蕉婷婷| 99热这里只有精品8| 91丨九色丨熟女高潮| 亚洲夜夜欢无码一区二区| 一级免费啪啪片| 日本99久久| 久久久人妻| 99热色这里只有精品| 国产人妻精品久久久一区二区三区| 色婷婷丁香五月| 欧美淫穴| 一区中文字幕二区日韩| 国产毛片片精品天天看视频| 天美传媒婬乱在| 久久神马| 成人性爱AV在线免费观看| 少妇无码av专区线| 日本精品高清一二区一本到|