国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

用LLM把Emacs內(nèi)置瀏覽器EWW升級為AI閱讀助手

用LLM把Emacs內(nèi)置瀏覽器EWW升級為AI閱讀助手 總有人問Emacs 里那個復(fù)古的瀏覽器到底還能不能派上用場說實話內(nèi)置的 EWW 用來打開文檔頁、閱讀純文本、快速看一眼網(wǎng)頁結(jié)構(gòu)確實很輕量但遇到內(nèi)容冗長、信息密度低的頁面時閱讀體驗就談不上多好了。本文要做的就是利用大語言模型LLM把 Emacs 的內(nèi)置瀏覽器“改造”成能生成摘要、提煉要點(diǎn)、回答頁面相關(guān)問題的工具讓它在信息獲取層面重新變得好用。我寫這篇文章的思路很直接不打算做一個重型的瀏覽器插件而是基于 Emacs 的擴(kuò)展能力和 LLM 的文本理解能力搭建一套“頁面正文提取 → 調(diào)用 LLM 接口 → 結(jié)果回填 Emacs”的完整鏈路。這套方案適合 Emacs 老用戶、技術(shù)寫作者也適合對 LLM 應(yīng)用感興趣的開發(fā)者。本文會包含完整的 Emacs Lisp 代碼、Python 服務(wù)腳本、配置步驟和常見問題排查你在自己的環(huán)境里照著配置一遍就能把 EWW 升級成一個帶有“AI 閱讀助手”的瀏覽器。1. 為什么用 LLM 增強(qiáng) Emacs 瀏覽器1.1 Emacs 自帶瀏覽器到底缺什么Emacs 內(nèi)建了一個非常輕量的網(wǎng)頁瀏覽器叫 EWWEmacs Web Wowser。它不依賴外部瀏覽器內(nèi)核直接用 Emacs 的文本渲染引擎展示網(wǎng)頁。它的優(yōu)點(diǎn)非常明顯啟動快、和編輯環(huán)境深度集成、可以像操作普通文本一樣搜索復(fù)制也能和 org-mode 配合。但缺點(diǎn)也肉眼可見很多網(wǎng)頁結(jié)構(gòu)復(fù)雜正文夾在導(dǎo)航、廣告、推薦位和腳本標(biāo)簽里面閱讀的時候經(jīng)常要翻很久才能看到真正有用的內(nèi)容。另外EWW 沒有頁面智能分析能力。它展示的是“渲染后的文字”卻無法幫你問一句“這篇文章的核心觀點(diǎn)是什么”“這個文檔的安裝步驟有幾步”“這篇論文的方法部分講了什么”。這些工作原本需要人肉閱讀但正好是 LLM 最擅長的東西。所以與其把 Emacs 的瀏覽器替換成另一個瀏覽器不如在現(xiàn)有流程里增加一層“AI 提取與總結(jié)”。這也是近年來很多人提到的 LLM Agent 思路在 Emacs 里的一個落地場景讓模型承擔(dān)信息篩選和歸納的重復(fù)勞動用戶只保留最終的閱讀和判斷。1.2 與 LLM Wiki 范式的關(guān)系這里要提一下 Andrej Karpathy 提出的 LLM Wiki 范式。簡單來說這個范式強(qiáng)調(diào)的不只是“用提示詞讓 AI 寫一段話”而是把 LLM 當(dāng)成一個可以持續(xù)交互的數(shù)據(jù)處理引擎圍繞它構(gòu)建知識整理、內(nèi)容過濾、結(jié)構(gòu)抽取的工作流。放到 Emacs 瀏覽器里意思就是當(dāng)你打開一個網(wǎng)頁不是把整個頁面一股腦塞給模型而是先做頁面結(jié)構(gòu)分析再讓模型針對特定任務(wù)輸出結(jié)構(gòu)化結(jié)果最后再進(jìn)入你的筆記體系或閱讀流程。比如可以設(shè)計三種不同的處理目標(biāo)摘要模式、問答模式、結(jié)構(gòu)化提取模式。摘要模式適合快速瀏覽新聞和技術(shù)博客問答模式適合拿不準(zhǔn)頁面里某個細(xì)節(jié)時直接問結(jié)構(gòu)化提取模式適合把一篇文章變成 org-mode 格式的大綱或行動項。這些模式在實現(xiàn)上只是 prompt 不同但帶來的體驗差異非常大。1.3 適用范圍與預(yù)期效果這套方案適合本地有 Python 環(huán)境的用戶也適合那些已經(jīng)在用 OpenAI 兼容 API 的開發(fā)者。你不一定需要極高性能的機(jī)器因為推理發(fā)生在服務(wù)端本地只負(fù)責(zé)頁面提取和結(jié)果展示。最終效果是在 EWW 中打開任意網(wǎng)頁一鍵生成摘要自動提取正文并保存到臨時文件模型返回的結(jié)果以獨(dú)立 buffer 形式展示不影響當(dāng)前瀏覽頁面。2. 環(huán)境準(zhǔn)備與方案設(shè)計2.1 環(huán)境依賴說明在開始之前先明確一下環(huán)境需要哪些組件Emacs建議使用 27 以上版本EWW 功能已經(jīng)內(nèi)置不需要額外安裝包。示例中我用的是 Emacs 29 環(huán)境配置語法在 27 和 28 上基本兼容。Python建議 3.8 以上。示例腳本只使用標(biāo)準(zhǔn)庫不需要安裝第三方 HTTP 庫。LLM API需要一個 OpenAI 兼容的接口地址和 API Key。模型名稱、接口地址需要根據(jù)你實際使用的服務(wù)進(jìn)行調(diào)整不要讓示例代碼里的占位符直接用于生產(chǎn)環(huán)境。如果你的系統(tǒng)里沒有 Python或者不喜歡用外部進(jìn)程也可以直接在 Emacs Lisp 里用url-retrieve調(diào)用 API但那樣處理 JSON 轉(zhuǎn)義、長文本截斷會比較麻煩。用 Python 腳本負(fù)責(zé)“抓取正文 請求 LLM 輸出結(jié)果”Emacs 負(fù)責(zé)“獲取鏈接 調(diào)用進(jìn)程 展示結(jié)果”職責(zé)更清晰也更容易調(diào)試。2.2 整體流程拆解整套鏈路可以拆成以下幾步在 EWW 頁面中用戶可以手動觸發(fā)命令。Emacs 獲取當(dāng)前頁面的 URL 和標(biāo)題并將 URL 傳給 Python 腳本。Python 腳本下載網(wǎng)頁 HTML用簡單規(guī)則提取正文文本。Python 腳本把正文和任務(wù)指令組裝成請求發(fā)送給 LLM API。Python 腳本拿到模型輸出后將結(jié)果寫入標(biāo)準(zhǔn)輸出。Emacs 使用異步進(jìn)程讀取腳本輸出并將內(nèi)容展示在新的 buffer 中。流程圖可以簡化成EWW 頁面 → 地址傳遞 → 正文提取 → Prompt 組裝 → API 調(diào)用 → 結(jié)果展示。這里有一個設(shè)計細(xì)節(jié)要注意直接用 EWW 當(dāng)前緩沖區(qū)里的文本不是最可靠的做法。EWW 渲染后的文本中可能包含頁面底部的大量無關(guān)鏈接、版權(quán)信息、推薦內(nèi)容直接用這些內(nèi)容會浪費(fèi) token也會干擾模型判斷。更好方式是讓 Python 腳本重新請求原始 HTML然后提取p標(biāo)簽內(nèi)文本再截斷到一定長度。2.3 關(guān)鍵技術(shù)點(diǎn)實現(xiàn)過程中有三個關(guān)鍵點(diǎn)第一正文提取的質(zhì)量決定了 LLM 輸出的上限。我選用的規(guī)則比較樸素優(yōu)先提取article標(biāo)簽區(qū)域如果沒有就收集所有p標(biāo)簽文本隨后去掉過短的句子和明顯是導(dǎo)航的文本。第二API 請求不能阻塞 Emacs 界面。如果使用call-process同步調(diào)用頁面會在等待過程中卡住。必須使用make-process或start-process做異步調(diào)用。第三長文本需要做截斷?,F(xiàn)代模型的 context 窗口很大但并不是所有模型都支持無限輸入。示例中會按字符數(shù)截斷正文并保留前后內(nèi)容確保 prompt 結(jié)構(gòu)完整。3. 編寫 Python 側(cè)加強(qiáng)腳本3.1 腳本職責(zé)與文件位置我建議在 Emacs 配置目錄下創(chuàng)建llm_eww.py文件路徑示例為~/.emacs.d/llm_eww.py。這個腳本不做復(fù)雜工程只完成三件事根據(jù) URL 抓取網(wǎng)頁、提取正文、調(diào)用 LLM API。3.2 完整代碼實現(xiàn)先給出完整代碼再逐段解釋#!/usr/bin/env python3 # -*- coding: utf-8 -*- llm_eww.py 用于從 Emacs EWW 調(diào)用 LLM 服務(wù)的輔助腳本。 功能 1. 接收 URL 和任務(wù)參數(shù) 2. 下載網(wǎng)頁 HTML 并抽取正文 3. 構(gòu)造 prompt 調(diào)用 OpenAI 兼容接口 4. 將模型輸出寫入 stdout供 Emacs 捕獲 import argparse import json import re import sys import urllib.request from html import unescape def fetch_html(url, timeout15): 下載網(wǎng)頁 HTML返回解碼后的字符串。 request urllib.request.Request(url, headers{ User-Agent: Mozilla/5.0 (Emacs EWW LLM; compatible; https://example.org) }) with urllib.request.urlopen(request, timeouttimeout) as resp: raw resp.read() # 優(yōu)先按 UTF-8 解碼失敗時使用 ISO-8859-1 兜底 try: return raw.decode(utf-8) except UnicodeDecodeError: return raw.decode(iso-8859-1) def strip_tags(html_text): 去除 HTML 標(biāo)簽返回純文本。 # 去除 script 和 style 塊 text re.sub(r(?is)(script|style).*?.*?/\1, , html_text) # 去掉所有標(biāo)簽 text re.sub(r[^], \n, text) # 反轉(zhuǎn)義常用實體 text unescape(text) # 將多個空白行合并 text re.sub(r\n\s*\n, \n, text) return text.strip() def extract_main_content(html_text, max_chars8000): 簡易正文提取優(yōu)先取 article其次取 p 標(biāo)簽序列。 # 方案一優(yōu)先使用 article 區(qū)域 article_match re.search(r(?is)article[^]*(.*?)/article, html_text) if article_match: plain strip_tags(article_match.group(1)) if len(plain) 200: return plain[:max_chars] # 方案二提取所有 p 標(biāo)簽 paragraphs re.findall(r(?is)p[^]*(.*?)/p, html_text) cleaned_paragraphs [] for para in paragraphs: text strip_tags(para).strip() # 過濾短句子和導(dǎo)航類文本 if len(text) 20: continue cleaned_paragraphs.append(text) plain \n.join(cleaned_paragraphs) return plain[:max_chars] def call_llm(api_url, api_key, model, prompt, temperature0.3, max_tokens800): 調(diào)用 OpenAI 兼容的 chat/completions 接口。 payload { model: model, messages: [ {role: system, content: 你是一個專業(yè)的信息提取和摘要助手。}, {role: user, content: prompt} ], temperature: temperature, max_tokens: max_tokens } data json.dumps(payload).encode(utf-8) request urllib.request.Request(api_url, datadata, headers{ Content-Type: application/json, Authorization: fBearer {api_key} }) with urllib.request.urlopen(request, timeout60) as resp: result json.loads(resp.read().decode(utf-8)) # 解析 OpenAI 兼容返回結(jié)構(gòu) return result[choices][0][message][content].strip() def main(): parser argparse.ArgumentParser(descriptionEWW LLM helper) parser.add_argument(--url, requiredTrue, help目標(biāo)網(wǎng)頁 URL) parser.add_argument(--task, defaultsummary, choices[summary, outline, qa], help任務(wù)類型summary/outline/qa) parser.add_argument(--question, default, helpqa 模式下的問題) parser.add_argument(--api-url, defaulthttps://api.openai.com/v1/chat/completions, helpOpenAI 兼容接口地址) parser.add_argument(--api-key, default, helpAPI Key) parser.add_argument(--model, defaultgpt-4o-mini, help模型名稱) parser.add_argument(--max-chars, typeint, default8000, help正文最大字符數(shù)) args parser.parse_args() api_key args.api_key or None if not api_key: # 嘗試從環(huán)境變量讀取 import os api_key os.environ.get(LLM_API_KEY, ) if not api_key: print(ERROR: 缺少 API Key請在參數(shù)中傳入或設(shè)置環(huán)境變量 LLM_API_KEY, filesys.stderr) sys.exit(1) # 獲取正文 try: html_text fetch_html(args.url, timeout15) except Exception as exc: print(fERROR: 頁面抓取失敗: {exc}, filesys.stderr) sys.exit(1) content extract_main_content(html_text, max_charsargs.max_chars) if not content: print(ERROR: 未能提取到有效正文, filesys.stderr) sys.exit(1) # 根據(jù)任務(wù)構(gòu)造 prompt if args.task summary: prompt f請閱讀以下網(wǎng)頁正文用中文生成一份不超過 300 字的摘要。\n\n正文\n{content} elif args.task outline: prompt f請閱讀以下網(wǎng)頁正文提取出結(jié)構(gòu)化的大綱用 Markdown 列表輸出。\n\n正文\n{content} elif args.task qa: if not args.question: print(ERROR: QA 模式需要提供 --question 參數(shù), filesys.stderr) sys.exit(1) prompt f請閱讀以下網(wǎng)頁正文回答問題{args.question}\n\n正文\n{content} else: prompt f請閱讀以下網(wǎng)頁正文生成摘要。\n\n正文\n{content} # 調(diào)用 LLM try: answer call_llm(args.api_url, api_key, args.model, prompt) print(answer) except Exception as exc: print(fERROR: LLM 調(diào)用失敗: {exc}, filesys.stderr) sys.exit(1) if __name__ __main__: main()這段腳本有幾個細(xì)節(jié)值得說明請求頭里的User-Agent是模擬常規(guī)瀏覽器的標(biāo)識有些網(wǎng)站會拒絕空 User-Agent 的請求。extract_main_content里用re.search定位article標(biāo)簽如果沒有 article 就退回p標(biāo)簽聚合。這個策略適合大多數(shù)博客和文檔站。call_llm里的返回結(jié)構(gòu)按 OpenAI 兼容格式解析choices[0].message.content是幾乎所有兼容服務(wù)的標(biāo)準(zhǔn)返回路徑。腳本使用sys.stderr輸出錯誤信息Emacs 端只捕獲 stdout 的正常內(nèi)容這樣調(diào)試時不會讓錯誤信息混入模型輸出。3.3 單獨(dú)測試 Python 腳本具體配置前建議先在終端里跑一次腳本確認(rèn)接口可用。假設(shè)你的 API 接口兼容 OpenAI 格式可以執(zhí)行python3 ~/.emacs.d/llm_eww.py \ --url https://www.gnu.org/software/emacs/ \ --task summary \ --api-url https://api.openai.com/v1/chat/completions \ --api-key 你的API Key \ --model gpt-4o-mini如果一切正常終端會打印出模型生成的摘要文本。這一步能提前排除 Python 腳本、網(wǎng)絡(luò)、API Key 等問題方便后續(xù)集成到 Emacs 時更專注地排查 Emacs Lisp 部分。如果你使用的服務(wù)兼容 OpenAI 格式但接口地址不同只需要把--api-url換成實際地址即可。注意不要把 API Key 寫在代碼里建議使用環(huán)境變量export LLM_API_KEY你的API Key4. 在 Emacs 中集成 LLM 瀏覽器助手4.1 編寫 Emacs Lisp 配置下面這段配置是整個集成方案的核心。它會定義三個交互命令分別是llm-eww-summary生成當(dāng)前頁面摘要。llm-eww-outline生成當(dāng)前頁面大綱。llm-eww-ask針對當(dāng)前頁面提問。配置中需要指定 Python 腳本路徑、模型名稱、API 地址等信息。建議把這些參數(shù)放到一個單獨(dú)的 custom 組里方便管理。;; 文件路徑~/.emacs.d/init.el 或你現(xiàn)有的配置文件中 (defgroup llm-eww nil LLM enhancements for EWW. :group eww) (defcustom llm-eww-python-script ~/.emacs.d/llm_eww.py Python 輔助腳本的路徑。 :type string :group llm-eww) (defcustom llm-eww-api-url https://api.openai.com/v1/chat/completions OpenAI 兼容 API 地址。 :type string :group llm-eww) (defcustom llm-eww-api-key API Key。留空時讀取環(huán)境變量 LLM_API_KEY。 :type string :group llm-eww) (defcustom llm-eww-model gpt-4o-mini 用于網(wǎng)頁總結(jié)的模型名稱。 :type string :group llm-eww) (defcustom llm-eww-max-chars 8000 傳給模型的最大正文字符數(shù)。 :type integer :group llm-eww) (defcustom llm-eww-buffer-name *LLM EWW Result* 結(jié)果展示 buffer 名稱。 :type string :group llm-eww) (defun llm-eww--get-url () 獲取當(dāng)前 EWW 頁面的 URL。 (if (eq major-mode eww-mode) (plist-get eww-data :url) (error 當(dāng)前 buffer 不是 EWW 頁面))) (defun llm-eww--get-title () 獲取當(dāng)前 EWW 頁面的標(biāo)題。 (if (eq major-mode eww-mode) (plist-get eww-data :title) Untitled)) (defun llm-eww--run (task optional question) 異步調(diào)用 Python 腳本任務(wù)類型為 TASK可附帶 QUESTION。 (let* ((url (llm-eww--get-url)) (title (llm-eww--get-title)) (script (expand-file-name llm-eww-python-script)) (buffer (get-buffer-create llm-eww-buffer-name)) (args (list --url url --task task --api-url llm-eww-api-url --model llm-eww-model --max-chars (number-to-string llm-eww-max-chars)))) ;; 如果配置了 API Key則傳給腳本否則依賴環(huán)境變量 (unless (string-blank-p llm-eww-api-key) (setq args (append args (list --api-key llm-eww-api-key)))) (when (and (string-equal task qa) question) (setq args (append args (list --question question)))) ;; 清空結(jié)果 buffer準(zhǔn)備寫入新內(nèi)容 (with-current-buffer buffer (erase-buffer) (insert (format 任務(wù)%s\n頁面%s\nURL%s\n\n task title url)) (insert 正在請求 LLM請稍候...\n)) ;; 使用 make-process 實現(xiàn)異步調(diào)用 (make-process :name llm-eww-process :buffer buffer :command (append (list python3 script) args) :sentinel (lambda (proc _event) (when (string-equal (process-status proc) exit) (with-current-buffer (process-buffer proc) (goto-char (point-max)) (insert \n\n[完成]))))))) (defun llm-eww-summary () 生成當(dāng)前 EWW 頁面的摘要。 (interactive) (llm-eww--run summary)) (defun llm-eww-outline () 生成當(dāng)前 EWW 頁面的大綱。 (interactive) (llm-eww--run outline)) (defun llm-eww-ask (question) 針對當(dāng)前 EWW 頁面提問。 (interactive s問題) (llm-eww--run qa question)) ;; 快捷鍵綁定 (global-set-key (kbd C-c e s) #llm-eww-summary) (global-set-key (kbd C-c e o) #llm-eww-outline) (global-set-key (kbd C-c e a) #llm-eww-ask)這段配置里最核心的 API 是make-process。它啟動一個外部 Python 進(jìn)程并讓 Emacs 在進(jìn)程運(yùn)行期間繼續(xù)保持響應(yīng)。sentinel是進(jìn)程結(jié)束時的回調(diào)用來在結(jié)果后追加完成標(biāo)記。llm-eww--run函數(shù)內(nèi)部先獲取當(dāng)前 EWW 頁面的 URL 和標(biāo)題然后把參數(shù)組裝成列表傳給 Python。注意make-process的:command參數(shù)要求是一個列表其中第一個元素是程序名后面的元素是參數(shù)。4.2 快捷鍵與使用方式配置完成后重新加載 Emacs 配置M-x eval-buffer或者重啟 Emacs讓配置生效。之后在 EWW 里打開一個網(wǎng)頁按C-c e s就會生成摘要。生成過程要等幾秒到幾十秒取決于正文長度和模型響應(yīng)速度。期間可以繼續(xù)編輯其他 buffer不會被阻塞。4.3 擴(kuò)展把結(jié)果插入當(dāng)前頁面有些時候把結(jié)果放到獨(dú)立 buffer 里并不是最方便的。另一個思路是把生成的摘要直接插入到 EWW 頁面的頂部這樣瀏覽時能直接看到概括再往下滾動看細(xì)節(jié)??梢詫懸粋€輔助函數(shù)從結(jié)果 buffer 中提取剛生成的文本插入到當(dāng)前位置(defun llm-eww-insert-summary-at-point () 將最近的 LLM 摘要插入到當(dāng)前光標(biāo)位置。 (interactive) (let ((result-buffer (get-buffer llm-eww-buffer-name))) (if (not result-buffer) (message 還沒有生成結(jié)果) (with-current-buffer result-buffer (goto-char (point-min)) ;; 跳過任務(wù)信息頭只復(fù)制模型生成的正文部分 (if (search-forward \n\n\n nil t) (let ((content (buffer-substring-no-properties (point) (point-max)))) (when (string-match-p \\[完成\\] content) (setq content (replace-regexp-in-string \n\\[完成\\] content))) (insert content)))))))這個函數(shù)可以直接綁定到另一個快捷鍵例如C-c e i。當(dāng)然因為 EWW buffer 本質(zhì)上是只讀渲染視圖直接插入文本可能需要先調(diào)用read-only-mode關(guān)閉只讀屬性。這里只提供思路不強(qiáng)制要求你一定使用。5. 針對不同任務(wù)的 Prompt 設(shè)計5.1 摘要模式摘要模式最適合技術(shù)博客、新聞頁面。Prompt 的核心要求是“使用中文、不超過 300 字、提煉核心觀點(diǎn)”。也可以根據(jù)實際需要改成英文摘要、多段式摘要。如果你希望摘要更結(jié)構(gòu)化可以把 prompt 改成請閱讀以下網(wǎng)頁正文完成以下任務(wù) 1. 用三句話概括核心內(nèi)容 2. 列出文中提到的關(guān)鍵技術(shù)點(diǎn) 3. 給出一句話的閱讀建議這種 prompt 的輸出更適合直接進(jìn)入知識管理流程。5.2 大綱模式大綱模式適合論文、文檔、官方手冊等長頁面。我們利用 LLM 從正文中提取出層級結(jié)構(gòu)并輸出 Markdown 列表Emacs 的 markdown-mode 或 org-mode 都能直接顯示這種格式。注意大綱模式不是簡單地把標(biāo)題復(fù)制出來而是讓模型基于正文語義重新組織出有條理的框架。5.3 問答模式問答模式是三個模式中最靈活的。用戶輸入一個問題比如“這個頁面里提到的安裝步驟有幾步”Python 腳本會把頁面正文和問題一起組裝成 prompt模型只輸出與問題相關(guān)的部分。這個模式在閱讀英文資料時很有用相當(dāng)于給 EWW 接了一個“頁面內(nèi)知識助手”。由于不同模型對 prompt 的敏感度不同建議在第一次使用前先用小段正文測試一下輸出質(zhì)量。如果輸出偏離主題可以適當(dāng)修改 Python 腳本里的 system prompt 或任務(wù)描述。6. 常見問題與排查思路6.1 Python 腳本直接運(yùn)行正常但 Emacs 里沒有輸出這種情況大多是因為 Emacs 環(huán)境變量和終端不一致。Emacs 啟動時不一定繼承 shell 里設(shè)置的LLM_API_KEY尤其是 mac 上通過 GUI 啟動的 Emacs 經(jīng)常存在這個問題。建議先確認(rèn) API Key 配置方式要么在 Emacs 配置里直接寫入llm-eww-api-key變量要么在 Emacs 啟動腳本里顯式setenv環(huán)境變量(setenv LLM_API_KEY 你的API Key)也有可能是因為make-process的命令參數(shù)有問題。可以在結(jié)果 buffer 里查看輸出如果進(jìn)程失敗Emacs 會把 stderr 顯示在 buffer 中。排查時可以臨時把腳本里的print(..., filesys.stderr)改成普通print看看能否輸出錯誤。6.2 模型返回內(nèi)容被截斷如果摘要只生成一半常見原因是max_tokens設(shè)置太小。Python 腳本默認(rèn)是 800對于更長的摘要或問答場景可以適當(dāng)調(diào)大。也可以在 Emacs 配置里新增一個變量專門控制max_tokens參數(shù)。另一種可能是正文過長超出了模型上下文的限制。可以調(diào)低llm-eww-max-chars例如減少到 4000。通常來說一篇技術(shù)博客的核心信息在前 4000 字符內(nèi)就能體現(xiàn)出來。6.3 頁面抓取被反爬限制有些網(wǎng)站對非瀏覽器請求會拒絕訪問返回 403。此時腳本會打印“頁面抓取失敗”。解決方案有兩個方向一是模擬更完整的瀏覽器請求頭比如增加Accept、Accept-Language字段。二是改為把 EWW 當(dāng)前 buffer 的文本內(nèi)容傳給腳本不走重新抓取流程。第二種方案實現(xiàn)上需要修改 Emacs Lisp 函數(shù)在調(diào)腳本時直接傳入buffer-substring而不是 URL。6.4 結(jié)果 buffer 中顯示亂碼中文亂碼通常來自編碼問題。Python 腳本輸出到 stdout 時如果系統(tǒng)默認(rèn)編碼不是 UTF-8可能產(chǎn)生亂碼。建議在 Python 腳本開頭加上import sys sys.stdout.reconfigure(encodingutf-8)另外Emacs 側(cè)也要確保 buffer 的編碼格式為 UTF-8可以在配置中設(shè)置(prefer-coding-system utf-8)6.5 常見問題速查表問題現(xiàn)象常見原因解決思路Emacs 中沒有輸出API Key 未配置或環(huán)境變量缺失在 Emacs 里 setenv或在配置里顯式填寫 API Key報錯“頁面抓取失敗”網(wǎng)站拒絕請求或網(wǎng)絡(luò)不通增加 User-Agent 頭或在本地網(wǎng)絡(luò)可達(dá)的環(huán)境中使用摘要內(nèi)容斷在中間max_tokens 太小調(diào)大 Python 腳本中的 max_tokens 參數(shù)輸出內(nèi)容不相關(guān)Prompt 結(jié)構(gòu)不合理調(diào)整 task 對應(yīng)的 Prompt 文本接口返回 404API 地址不正確確認(rèn)服務(wù)商提供的兼容接口完整路徑中文亂碼編碼不一致統(tǒng)一使用 UTF-8 編碼7. 最佳實踐與工程建議7.1 不要把 API Key 寫入配置倉庫無論你把 Emacs 配置放在 Git 倉庫還是同步到多個設(shè)備都不要把 API Key 硬編碼進(jìn)init.el。更安全的做法是使用環(huán)境變量或者在本地創(chuàng)建一個~/.emacs.d/secrets.el文件內(nèi)容不提交到版本控制。例如在~/.emacs.d/init.el末尾加(load-file ~/.emacs.d/secrets.el)secrets.el內(nèi)容示例(setq llm-eww-api-key 你的API Key)同時在.gitignore中加入secrets.el。這樣既方便本地使用又避免密鑰泄露。7.2 控制傳入模型的正文長度雖然很多模型支持長上下文但輸入越長單次請求的耗時和成本越高。從工程角度看應(yīng)該盡量用最少的 token 完成任務(wù)。建議先做正文提取再做截斷最后傳給模型。示例中已經(jīng)寫了max_chars參數(shù)實際操作時可以根據(jù)場景調(diào)整。如果想進(jìn)一步節(jié)省 token可以在 Python 腳本里做更精細(xì)的清洗比如刪除空白字符、壓縮換行、去掉版權(quán)聲明等。7.3 異步操作避免卡死Emacs 是單線程的同步網(wǎng)絡(luò)請求會導(dǎo)致整個界面卡住。本文示例中使用make-process這是正確做法。如果你后續(xù)要擴(kuò)展為更復(fù)雜的交互例如連續(xù)追問、多輪對話建議繼續(xù)使用異步方式避免影響其他編輯工作。7.4 增加緩存提升體驗對于同一 URL如果模型返回的摘要變化不大完全沒必要重復(fù)請求??梢栽?Python 腳本中加入簡單的文件緩存以 URL 的哈希值作為緩存文件名有效期設(shè)置為一周。這一步能顯著降低 API 調(diào)用成本也縮短了等待時間。簡單的緩存思路如下import hashlib import os def get_cache_path(url): cache_dir os.path.expanduser(~/.cache/llm_eww) os.makedirs(cache_dir, exist_okTrue) url_hash hashlib.md5(url.encode(utf-8)).hexdigest() return os.path.join(cache_dir, url_hash .txt)讀取緩存時判斷文件存在性和時間戳即可。這個功能不復(fù)雜卻非常實用。7.5 隱私與數(shù)據(jù)邊界把網(wǎng)頁正文發(fā)送給外部模型服務(wù)前需要確認(rèn)頁面內(nèi)容不包含敏感數(shù)據(jù)。凡是涉及內(nèi)部系統(tǒng)、未公開文檔、個人隱私的頁面都不應(yīng)該使用外部 LLM 接口處理。如果模型服務(wù)商支持私有化部署或者你有合規(guī)要求可以把--api-url改成內(nèi)部服務(wù)的地址整體流程無需大改。7.6 調(diào)試技巧開發(fā)過程中建議先用 Python 腳本手動跑一遍命令確認(rèn)輸出正常后再回到 Emacs 里測試。如果 Emacs 端沒有結(jié)果可以在結(jié)果 buffer 中查看錯誤信息。也可以臨時把make-process換成call-process同步調(diào)用這樣雖然在等待時會卡住但錯誤提示更直觀方便排查。8. 再進(jìn)一步把 LLM 瀏覽器能力融入日常知識管理8.1 與 org-mode 結(jié)合生成摘要后最簡單的高效用法就是把它粘貼到 org-mode 的筆記里。結(jié)合 org-capture 模板可以一鍵把 URL、標(biāo)題、摘要、時間戳寫入指定的 org 文件。例如在init.el中配置一個 capture 模板(org-capture-add-template (w Web summary with LLM entry (file ~/org/notes.org) * %(plist-get eww-data :title) :web:\n:PROPERTIES:\n:URL: %(plist-get eww-data :url)\n:CREATED: %U\n:END:\n\n%? :empty-lines 1))實際使用時先把 LLM 摘要復(fù)制到剪貼板然后調(diào)用org-capture選擇w模板粘貼摘要。這個流程雖然需要手動幾步但勝在穩(wěn)定也能強(qiáng)迫你在保存時再讀一遍摘要加深理解。8.2 多語言翻譯同樣一套能力也可以把 prompt 改成翻譯任務(wù)。比如新增一個translate任務(wù)讓模型把當(dāng)前頁面翻譯成中文。很多 Emacs 用戶有閱讀英文文檔的需求這個功能能明顯降低閱讀門檻。把 Python 腳本里的任務(wù)選項擴(kuò)一下就行--task translate對應(yīng) prompt 可以是prompt f請將以下網(wǎng)頁正文翻譯成中文保持專業(yè)術(shù)語準(zhǔn)確。\n\n正文\n{content}8.3 從單頁到批量如果你經(jīng)常收集技術(shù)資料可以把這套思路擴(kuò)展到批量抓取。寫一個 Emacs Lisp 函數(shù)讀取一個保存了 URL 列表的文件依次調(diào)用 Python 腳本最終生成一個 Markdown 匯總文件。這個過程中同樣要注意異步和并發(fā)控制不要讓請求數(shù)量過大導(dǎo)致接口限流。9. 寫在最后這篇文章從 Emacs 內(nèi)置瀏覽器 EWW 的痛點(diǎn)出發(fā)完整實現(xiàn)了一套“LLM Emacs Web Browser”的增強(qiáng)方案。核心是把頁面正文提取和 LLM 調(diào)用放到 Python 腳本里Emacs 端用異步進(jìn)程調(diào)用腳本并通過自定義命令展示摘要、大綱和問答結(jié)果。整個過程不需要替換瀏覽器不需要額外安裝復(fù)雜的 Emacs 包成本低落地快。雖然示例中依賴 OpenAI 兼容 API但你可以很輕松地替換成其他模型服務(wù)只要接口兼容 chat/completions 格式即可。另外像 Karpathy 提出的 LLM Wiki 范式一樣真正有價值的不是一次摘要生成而是把 LLM 能力嵌入到日常記錄和閱讀循環(huán)里打開頁面、生成摘要、寫入筆記、定期回顧。這樣Emacs 就不再只是一個古老文本編輯器而是變成了一個帶 AI 閱讀助手的信息工作臺。如果這篇文章對你有幫助歡迎收藏備用。實踐過程中遇到問題可以從常見問題表開始排查也可以根據(jù)上面的思路繼續(xù)擴(kuò)展你自己的功能。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
成人线上超碰| 97色爱| 午夜无码熟妇丰满人妻| 91在线页| 人人摸人人干人人拍97| 性色av大全| 天天综合网~91| 亚洲永久永久永久永久一级一级一级精品| 欧美做爰无码A片视频| 蜜乳视频网站| 亚洲中文字幕精品一区| 麻豆精品.欧美精品.日韩精品.| 国产精品高潮久久AV| 国产精品一区二区黄片| 尤物网址| 九色精品视频导航1| 国产美女在线精品免费看| 69久久| 狠色婷婷久久一区二区三区_| 天美传媒国产原创中文字幕亚洲欧美另类 | 97精品97久久| 亚洲,欧美,综合网| 亚洲s色图| 9热9热综合网| 国产suv精品一区二区四| 极品白嫩美女白浆成人福利在线看| 国产又黄又粗又猛大片| 国产一区二区在线播放量| 天天干18禁| 久久激情视频| 999999精品| 亚洲九九视频| 亚洲色阁| 国产精品爆乳懂色蜜乳| 久久超碰国产一区二区三区| 国产在线视频二区| 精品偷拍13p欧美dodk视频| 国产粉嫩蜜臀av一区二区三区 | 色老汉玖玖爱| 久操B网| 97天天搞在线| 午夜啊啊啊| 神马午夜久久久| 曰本熟女视频| 高颜值美女口爆高潮浪叫| 97中文综合| 玖玖久久久| 91天天| 国产亚洲精品A在线观看下载| 秋霞一级A片黄色视频| 草莓精品视频在线免费观看| 秋霞久久亚洲精品成人| 极品极品色影院| 日本三级大片| 欧美熟妇精品黑人巨大一二三区| 97欧美色综合| 97精| 日韩人妻一二三区视频| 91久热| 蜜色网色哟哟| 国产妇女精品视频青青草| 欧美精品亚洲精品日韩传电影| 九九人妻| 亚洲天堂精品日韩电影| 在线国产探花| 欧美日韩免费专区在线| 久久成人精品| 国产在线强奸视频| 美女刺激久久国产欧美| 日夜久久久九九九久| 国产后入清纯| 在线人成亚洲视频免费观看| 国产1769在线| 久久伊人网视频一区二区三区| 欧州激情视频在线一区二区| 97亚洲中文| 亚洲国产成人福利在线观看| 色蜜AV| 精品国产乱码久久久兰草影视| 精品人妻一区二区蜜桃视频| 性色av大全| 天天精品| 日韩性色| 日本在线激情一区二区三区| 乱色老一区二区三区的观看方式| 在线有码中文字幕| 大香蕉99热| 国产精品一区二区麻豆| 国产多人在线观看视频| 快点操死我| 成人久久久精品| 亚洲丝袜综合| 色综合色色| 九九九九97| 国产精品不卡一区二区三区av| 黄片www.| 久久精品高清无码一区| 国产黄色影片在线观看| 久久久9品一区二区三区| 综合欧美色图| 五月丁香影院| 日韩91网| 丁香六月激情综合| 精品国产乱码久久久久久免费| 在线无码网站| 天天看高清麻豆| 毛片久久| 性色乱AV一区二区| 日韩超碰97| 性做久久久久久免费观看软件| 歐美性天天| 欧美亚洲天堂| 老熟女91av| 99热这里只有精品18| 婷婷中文网| 青草园大香蕉| 96久久精品一二三区色欲| 超碰天天操你比| 日韩av电影成人在线| 99久久久无码| 日韩无码操逼片| 亚洲日韩青青草色月| 国产精品久久久久久久久久久久久久吹| 簧片免费看视频| 天天搞欧美| 久久久精品视频免费观看| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 欧美熟女激情| 亚洲一区二区av| 激情婷婷| 九九热精品| 久久夜夜| 久久精品国内Av熟女高清| 久热大香蕉| 日日躁天天躁狠狠躁| 色小视频蜜乳| 亚洲自拍偷拍视频在线| 欧美色图在线视频少妇| 夜夜一区二区| 不卡中文字幕aⅴ在线| 欧美白嫩女HD| 八人操人人摸人人看| 色哟哟1区2区| 丁香六月激情综合| 思思热在线视频免费| 黄色十八禁网站| 午夜一区二区三区国产| 日韩三级性| 狠狠搞 亚洲91| 亚州一区二区成人片免费| 久久精品一区二区三区蜜桃臀| 激情色色| 国产黄片在线免费观看| AV女优男人的天堂| 97免费视频网| 67194无码不卡| 岛国大片在线观看网站入口| 性欧美91| 丁香婷婷激情五月天无毒不卡 | 九九黄色视频在线观看| 五月婷亚洲精品天堂| 屌妞视频久久久久久久久久久久| 国产精品探花视频| 亚洲天天综合| 国产白丝网站| 欧美韩日精品资源| 很黄很污的免费网站| 狼狼色丁香久久婷婷综合五月| 亚洲综合另类色图| 殴洲老熟女| 国产一区二区在线电影| 日韩中文字幕人妻视频| 97爱爱爱| 男女啊啊啊啊啊| 性色av一区二区| 91狠| 免费看日本操逼视频| 天天影视色香欲综合网小说| 超碰色综合| 怡红院久久老司机| 欧美一区二区三熟女剧情| 嗯嗯嗯嗯啊啊啊好紧好大| 欧美人妻一区| 国产成人自拍视频视频| 亚洲av噜噜噜噜噜噜| 国产精品大屁股999| 天天看天天综合成人网| 五月丁香网站| 熟女乱伦二区| 91久久婷婷| 伊人精品久久网站| 日韩熟女乱伦中出| 18禁止看精品中文字幕| 国产传媒午夜理伦精品| 日本视频在线观看污污污| 高清有码一区二区| 97视频在线播放| 东北女人性交| 伊人欧美大香蕉视频| 亚洲视频,小说| 一区二区首页| 久久超碰免费的| 丰满少妇一区二区三区四区观看| 久久久久无码| 久久久久久夜夜夜夜夜| 国产性感骚丝袜在线| 青青草日本无码| 色婷婷亚洲婷婷| 探花激情视频| 操91| 色性欧美| 成人女人国产| 午夜欧美神马久久久久| 99热 按摩 日韩| 国产精品久久久九九九| 色悠久久久av| 91老司机精品| 欧美亚洲情色| 一级性爱视频免费观看| 2017人人操,人人摸| www.av在线视频| 精品九九国产无码| 插欧洲美女欧美精品| 久热这里| 亚洲 另类 丝袜 自拍 动漫| 91劲爆| 老司机香蕉| 78超碰| 亚洲九九九九| 欧美性爱免费短视频| 操逼大黄片| 国产超碰人人爽人人做| 久久人妻视频| 嗯嗯啊啊的视频| 日日干日日摸| 日韩欧美操逼xxx| 天天色天天干天天爱| 艹比视频国产精品| 亚洲日韩一区电影| 日韩欧美被操黄免费观看| 高潮综合网| 色欲久久99精品久久| 丰满少妇一区二区三区免费看| 免费国产视频| 一级久久性爱视频| 亚洲精品一二三四区| 九九九九一级| 不卡免费av在线播放| 人妻精品一区二区在线| 超碰 97国产熟女| 日韩三级在线观看mp4| 91欧美综合在线| 天堂综合网| 飘花国产午夜精品不卡| AV天天在线观看| 免费97视频| 婷婷五月天激情四射| 黄色一区二区秘书性感| 亚洲精品97在线| 亚洲亚洲亚洲天堂天堂| 黄片qw| a久久| 丁香婷婷激情五月天无毒不卡 | a片自拍直播视频| 国产综合网站在线播放 | 日韩ab网 | 日韩天堂av电影在线观看| 风月影院男女十八禁| yiqicaoav| 久久亚洲av成人无码国产| SS久久| 黄色大片视频在线免费看| 中文字幕亚洲在线一区| 啊啊啊不要啊啊受不了了视频在线 | 久久伊人最新网址视频| 婷婷激情综合网| 日本不卡二三区| 懂色aV一区二区天美传媒| 久久精品国产亚洲AV成人直播| 青娱乐大香蕉| 成人小说视频在线精品欧美| 干b在线性社区| 欧美国产婷婷久久| 婷婷五月av| 人妻少妇久久| 欧美日韩在线国产在线| 亚洲综合大片| 国产 热久久久久国产精品| 精产国品一区二三产品| 日韩黄色片子| 91久久国产综合精品| 夜草网站| 欧美日韩青操| 成人5码视频| 丝袜美女诱惑 91 视频| 天天综合网日韩7799| 91麻豆天美国产| 美女被啪到深处抽搐视频| 91N欧美| 加勒比综合88| 亚洲av在线免费观看| 蜜臀中文字幕| 91天射| av强奸乱轮| 91久久国产综合精品| av在线播放国产一区| 欧美亚洲se91| 久久久精品成人国产| 国产和美国毛片| 色色色天美视频| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 9精品久久久久| 岛国精品视频在线观看| 老女人综合网| 五月天色电影| 国产黄色av大片网站| 91男人综合| 婷婷五月成人| 成人一道本免费视频| 嫩草影院永久在线制服丝袜| 日本在线激情一区二区三区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 性开放中文AV高清无码免费看| 天天插天天操天天摸天天射天天看| 在线看片国产精品每日更新| 校园春色五月天| 台湾肥佬网一区二区三区| 日本人妻中文字幕精品| 中文不卡视频| 中文字幕精品久久久久人妻红杏ⅰ| 精品人妻一区| 99re9| A男人的天堂| 成人性爱电影网| 丁香九月婷婷| 亭亭在线资源| 精品人妻1237| 99ri在线视频| 高清无码在线播放网站| 一二三区视频在线观看| 青青草大香蕉在线视频| 91视频国品一二三区| 性久久| 久久精品| 超碰久久.com| 色臀aV| 在线啊啊啊啊| 天天日少妇逼AV| 激情五月天插| 立川理惠被中出无码| 51一区二区三区| 色九九九九| 色欧美天天| 精品亚洲国产成人AV制服丝袜| 国产精品人妻无码久久久老鸭窝 | 中国东北熟女老太婆内谢| 女性91网站| 青青草在线视频美女| 成人日韩中文字幕| 高潮内射在线| 激情五月综合网| 1禁看欧美黄片免费看| 91香蕉视频在线观看免费| 国产精品久久久久婷婷二区次| 少妇99| 人妻无码后入| 亚洲免费精品一区| 久久99国产综合精品女同| 久久精品性| 免费在线观看国内色片网站网址| 日韩性爱1级片视频| 国产精品久久久无码aV去| 久久日本熟妇熟色一区| 青草成人免费视频一COm| 久久亚州大香蕉| 射丝袜大香蕉| 久湿久久| 久久亚洲天堂| 91色伦| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 成人日韩欧美| 超碰97精品在线| 日日操天天操| 91丝袜美腿网站| 91n美女视频| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 亚洲熟妇丝袜在线观看| 色综合潮| 老女人老91妇女老热女| 欧美天堂超碰97| 精品久久大胆人体| 一卡二卡三卡| 91国模| 欧美人黑A片无码免视费| 91亚洲网| 久久久一区二区三区三州| 欧美日韩国产另类综合| 天天天天天干夜夜夜夜夜操| 精品人妻伦一二三区久久| 97操碰| 怡红院视频在线| 蜜伊人色综合97| 欧美色图成人网一区二区| 偷拍片久久| 一卡二卡在线播放| 神马久久久久久| 91P0RNY大屁股人妻| 日本成人A片免费看| 最新中文字幕精品在线| 午夜精品久久久久久久男人的天堂| 日本三级韩国三级99| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 日韩激情中文字幕有码| 99re视频在线观看这里只有精品| 久久久9品一区二区三区| 久久一二三四不卡| 玖玖综合视频| 欧美国产精品久久九九| 一级特级aaaa毛片免费观看| 99热免费| 成熟熟女国产精品一区二区| 在线二区不卡| 在线观看AV片| 伊人青青一区成人视频在线观看区| 国产AV人人 夜夜人人澡| 亚洲脚交| 亚洲成人性爱网站在线播放| 91欧美性| 久久99九九九九6666免费观看软件| av爱爱爱| 日日操天天操| 日韩有码回春沙龙第一页| 日韩欧无码一区二区三区免费不卡 | 日本少妇va7777| 亚洲偷拍欧美激情| 另类亚洲一区二区三区| 99免费在线视频| av天天在线| 亚洲国产熟妇综合色专区| 欧美日韩亚洲一区二区在线观看| 日韩pv中文| 亚洲诱惑天堂 | 9/A片 | 床上啊啊啊一区二区三区| 激情视频一二三| 91天天看| 天天操综合网| 欧美专区17页| 一级aaaaa欧美中文字幕录像片| 天天操av懂色| 婷婷8月天青娱乐| 在线观看亚洲专区| 国产青青美女玩逼视频| 亚洲人妻中文在线视频| 97国产色综合| 人人妻人人澡人人爽久久av| 五月天婷婷基地| 超碰久草| 国产精品久久久久无码AV会牛| 超碰97最新人妻| 亚洲无码超碰免费| 用力操死我| 国产深夜福利| 欧美人妻二区三区| 欧美精品成人一区二区在线观看 | 久久久久久久唑| 日韩一级久久毛片| 亚洲超碰在线| 一区二区无码视频| 99re在线观看| 人人妻人人爽一区二区三区| 久久性爱视频| 2017天天操| 天天狠| 亚州色综合| 韩国女主播青草福利视频| 9久久精品| 色九九九九久| 一本色道综合久久欧美| 91国产大片| 熟妇xxxxx性春色| 亚洲自拍一区夜夜操| 又粗又长又爽在线观看| 啊啊啊啊在线播放| 九热视频| 白嫩少妇| 性爱AV天堂| 午夜寂寞欧美| 超碰欧美97| 绯色AV粉色AV蜜臀AV| 搞中出久久| 97超碰总站| 日韩无码专区| 色欲天天婬色婬香WWW夜色| 青青草在线视频欧美| 久久美女国产| 九热中文字幕| 日本大香蕉| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 91视频女生| 密桃99999| 91看黄片| 国产午夜精品一区二区三区牛牛| 操九九九九九九| 99国产精品视频尤物| 精品国产乱码久久久影院| 色999人与兽| 狠狠操夜夜| 丝袜 中出 制服 人妻 美腿 中文字幕| 欧美一级三级| 韩国一级AAA| 91色夜| 玖玖爱一区在线| 99久久综合网| 91丨九色丨国产丨人妻在线 | 啊啊啊啊一区| 国模无码一区二区三区在线| 欧美日韩资源| 日本精品一区二区中文字幕| 黑人中出21连凳花野真衣| 亚洲综合113页| 91黄站| 青青草大香蕉在线视频| 亚洲国男人的天堂| 激情无码日韩| A级国产欧美激情在线| 在线五区| 中文字幕免费观看| 日韩亚洲美女一区久久| 韩国一级做A片免费的| 国产h小视频在线观看免费| 青青草玖玖爱| 96免费视频在线| 91久热| 亚洲精品aa久久伊人| 亚洲第一页第二页激情| 欧美亚洲今日在线| 无码精品啪啪啪一区二区三区三州| 人妻日日夜夜精品| 激情五月天色色网| 天天天天天天天天天天干美女| 国产又黄又粗又猛大片| 色五月av| 欧美亚洲图片| 熟女熟妇一区二区三四区| 久久久精| 久久熟女久| 啊啊啊啊啊在线视频| 麻豆 欧美 日韩| 97色在线| 五月激情视频| 婷婷91| 国产精选三级在线观看| 一本一道波多野毛片中文在线| 欧美成人性爱视频在线播放| 日本黄大片在线观看视频| 午夜爽爽爽| 男女啊啊啊啊啊| 四虎av在线| 久久久涩| 日韩图色| 综合色91| 日欧操屄| 26uuu偷拍亚洲欧洲综合| 51国产午夜精品视频| 亚洲av噜噜噜噜噜噜| 国产呦精品系列在线观看| 亚洲男人电影天堂| 亚洲国产一级黄色视频| 日本爽爽爽爽爽爽免费视频| 天天射天天| 午夜亚洲国产理论秋霞| 亚洲无码?第一页| 三级网色| 色五月首页| 97天堂| 国产精品一二三免费网站| 色婷婷基地| 区日韩亚洲乱码av电影| 亚洲自拍另类丝袜综合| 极品AV网站在线观看| 情色五月天就去干| 69一区二区三区 | 天堂v无码免费视频| 波多野结衣AV无码一区| 草草网站影院白丝内射| 大香蕉久操| 蜜臀精品1区2区| 九九九九九九九九九五码| 久草精品一区| 日韩在线电影| 午夜视频久久久久一区| 睡产熟女乱伦| 后入内射蜜桃臀| 国产久久久久影院老熟女| av橘色网站| 啪啪性爱免费视频| 九九综合久久| 嗯啊啊啊轻点视频 | 久久日本熟女精品一区| 欧美 色 亚洲| 国产精品久久久久久久AV大片 | 国偷自 一区二区| 国产成人五月天丁香花| 三级激情网站| 99热精品在线| 久久久久久久久9| 国产精品懂色tv影视免费观看| 久久99午夜精品一区人妻| 91麻豆天美国产欧美| 亚精品无码毛片一区二区三区| 不卡二三区人妻少妇| 久久久久亚洲?V片无码V| 欧美另类色图片| 亚洲综合射| av三级电影在线播放| 午夜精品探花| 99操| 成人免费性爱视视| 欧美激情综合| 好爽要喷了| 国产高清视频无码在线| 开心激情站| 色综合 加勒比| 亚洲 日本 国产 综合| 久久超碰爱| 亚洲第一视频 欧美风情 日韩| 中文字幕乱码人妻二区三区| 色精品极品| 蜜臀99久久国产| 日本国产高清色www视频在线| 中文字幕加勒比海高清无码免费视频| 97久久久久久久久久| 欧美一级久久久久久久大片动画| 一区二区三区国产精产| 蜜桃久久一区二区| www.激情| 亚洲欧美清纯| 婷婷丁香久久| 抽插一区二区视频| 国产精品久久久三级无码| 性爱AV天堂| 亚洲精品尤物yw在线影院| 超碰97资源中文字幕| 男人天堂网址| 久久精彩视频9| 亚洲福利影院一区久久| 青青草原人妻| 2024黄色视频| 夜夜高潮夜夜爽| 亚洲色图图片| 丁香五月天婷婷姐| 日韩无码视频黄色| 亚州色站 日韩电影| 亚洲一区日韩精品| AV丝袜少妇| 大香蕉黄色一级片免费看| aaa淫乱视频| 国产欧美日韩一区二区三区| 97超碰免费人人性爱| ..日韩av毛片精品久久久| 亚洲资源网| 狠狠色噜噜狠狠狠狠狠色综合久久| 天天日天天操VV| 女人喷水视频在线观看| 死我十八禁| 成人av免费观看| 中文乱码字幕观看视频| caopeng97| 日韩综合无码色欲vv| 亚洲精品1区| 无码伊人久久大杳蕉中文无码| 四虎影视精品| 国产美脚女优尤物在线观看| 国产51色综合久久免费| 日韩射图| 婷婷五月天久久精品视频一区二区三区| 大香蕉乱级| 亚洲综合69| 色婷婷av在线观看| 中日韩一区二区三区欧美| 无码人妻精品一区二区三区九九| 国产18精品亚洲精品| 91成人18| Julia Annxxxxx| 色丁香五月婷婷| 免费看黄片现成| 九九九九97| 草草影院在线视频| 欧美强奸乱能| 69精品| 久久久久921| 日韩欧美女优电影| 日韩Va亚洲va欧美Ⅴa久久| 97美日韩视频| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 殴美性色a级欧美| 久久国产热视频97电影| 中文字幕三四区| 男女猛烈无遮掩视频免费软件| 亚洲成人妻日韩在线| 久久久久久午夜男人的天堂| 亚洲毛片一级带毛片基地| 99无码| 久久AV色| 无码视频一区二区| 日韩偷拍色图| 欧美激情中文字幕另类小说| 青青青国产手线观看视频2| 麻豆天天躁天天揉揉AV| 97er欧美性| 日韩美女久久一区二区三区| 噜噜噜无码AV一级一级久久影院| 一区二区精品日韩欧美在线观看| 久久香蕉国产线看观看亚洲女人 | 久草精品一区 | yellow网站免费观看日韩高清无码| 亚洲色图欧美色图另类图片| 久久久一二三四区| 男人的天堂在线| 中文字幕日韩精品一区二区三区| 日韩有码一区三区| 99久久综合网| 色香色欲天天综合网天天来吧| 日韩福利综合一区| 日韩一级欧美一级国产一级台湾| 日韩精品午夜操呦呦不卡影院| 亚洲文学偷乱拍啪啪啪啪| 久久曰曰| 五月婷婷hd| 亚洲高清在线| 婷婷丁香在线| 99九九精品| 在线国产探花| 中字乱伦AV| www成人啪啪18秘 免费| 国语对白在线播放视频| 青青久久手机线视频| 三级色综合| 亚洲阿v天堂无码z2018| 午夜无遮挡男女啪啪视频| 2023天天操夜夜操| 亚洲无码 国产无码| 日韩性爱一级片| 999久久久免费精品国产牛牛| 欧美后入| 激情小说图片亚洲首页| 久久久久亚洲熟妇熟女| 一个人免费视频观看在线WWW | 麻豆天美传媒在线视频天堂| 狠狠干精品一二三四五六2022| 欧洲Au麻豆| 中国黑人三级片网站上区| 欧美视频第二页| 蜜桃久久久久久久久久久久| 9999久久久久| 国产后入式在线观看| 欧色网址| 午夜性生活av免费在线看| 久热精品在线国产| 岛国毛片手机在线观看| 人妻乱仑一区二区三区| 凹凸视频特色日本特黄| 五月天激情网站| 亚欧美天堂在线| 99黄页网站| 久久9999 | 亚洲精品视频二区| 超碰在线974| 加勒比五月天| 99re黄| 强奸乱伦 亚洲一区| 天堂а√在线最新版在线| 欧美日韩国内不卡| av天堂影视中文在字幕在线中文| 精品久久久中文字幕不| 亚洲综合贴图91| 青娱乐黄色录像| a片自拍直播视频| 在线中文字幕极品av| 屌色在线97视频| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 欧美日韩亚洲天堂| 樱花蜜乳av| 中文字幕 码精品视频网站| 久久e6只有精品| 蜜臀99久久精品| 12一15性XXXX粉嫩国产| 日韩欧美经典在线观看| 综合网~91综合网| 久久久亚洲熟妇资源| 国产成人超碰在线| 91GD.COM| 亚洲男人天堂2016| av中亚| 日本亚洲熟女视频| 日本不卡码黄色 | 9九九九九视频在线观看| 媚薬在线视频麻豆| 国产精品人妻免费精品| 在线视频日韩欧美国产| 精品176精品2| 激情小说亚洲| 精品国产片亚洲一区| 久久99999| 黄色大片视频在线免费看| 99热只有这里有精品| 青青青青草av在线观看| 日本天天干天天操一区| 无码少妇精品一区二区60岁老人| 狠插 制服 自拍| 五十路熟女人妻一区二区在线观看| 免费看A片毛毛片在线播| 久久九九一区二区三区成人| 狠狠爱大香蕉| 久久久国产三级黄色片| 久久6热精品99视频| 国产三级在线现体验区| 超碰超碰欧美| 9久久精品| 久热大香蕉| 亚洲一二三四区在线免费看视频| 亚欧性爱无码| 91欧美美女日韩国产婷婷| 亚洲综合第一页| 天天摸,夜夜摸| 97综合激情| 丁香五月激情婷婷| 麻豆一区二区AV天美| 玖玖爱免费观看视频| 啊嗯嗯啊好大好爽| 欧美人妻精品一区二区| 欧美性天天影院| 国产成人无码啪| 精品网站99999| 天天操天天射天天日| 神马久久网| 久久久久久久久久va| 九九英色视频| 嫩呦国产一区二区三区AV| 区一二区日韩亚洲乱码av电影| 欧美视频一| 欧美无圣光在线| 中文字幕精品一区欧美| 伊蕉97蜜桃97狠狠综合干| 超碰国产精品久| 亚洲超碰综合网| 思思在线免费视频| 91中文字幕在线观看| 欧美很很操视频| 大香蕉伊人75| 怡红院视频在线| 美女天天干| WWW.加勒比人妻一区不卡.com| 日韩免费大片一级播放| 大屁股熟女一区二区三区| 日韩AV熟女乱伦| 久久尹人大香焦视| 97亚洲国产影视| 浓厚中出中文字幕在线| 亚精品无码毛片一区二区三区| 在线观看黄色电话| 欧美亚洲首页| 99999精品成人| 成人 日本A片无码8888| 91精品国产91熟女| 嗯嗯啊啊操死我| 人人看欧美性爱| 在线播放欧洲免费av| 久妇网| 久久亚洲AV无码专区首页| 91中文字幕在线观看| 欧美.亚洲.另类.丝袜.制服.诱惑| 成人无码在线视频网站| 天堂av最新电影网| 亚洲人精品久久久喷水| 免费的很黄很污的全部视频| 男人天堂毛片| 天堂麻豆天美| 亚洲AV成人无码一区二区三区在线观看 | 999国产精品999久久久久久| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 丁香七月婷婷| 国产情色第一第二页在线观看| 丝袜大香蕉| 欧美人人曰人人操人人射射| 日本2020一区二区| 久久亚洲不卡一区二区三区| 熟女乱伦二区| 亚洲色欲天天天堂色欲网女| 999国产精品999久久久久久| 99国产精品免费| 五月丁香成人网| www.av在线视频| 日韩大香蕉| 免费看国产大AB| 国产视频一区二区在线| 日本精品高清一二区一本到| 亚洲色婷婷久久91| 久艹视频在线| 综合激情97| 亚洲成人av色网| 尤物国产一区在线观看| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 婷婷五月天成人| 午夜福利精品| a片久久久久久久久久久久 | 婷婷五月在线视频| 丁香五月综合| 2017人人操,人人摸| 日本一区二区不卡| 欧美碰碰综合色| 天天情欲宗合网| 黄网站黄视频网站进入口| 激情五月综合| 国产免费一区在线观看| 日韩欧美tv一区二区在线观看| yw尤物av无码点击进入麻豆| 91爱剪切久久| 大香蕉懂9| 一区二区三区四区在线不卡| 91天天爱| 中出789在线视频| 看黑人AV不卡| 欧美|91色综合| 综合婷婷| 超碰91在线| 99自拍视频在线观看| 思思性爱| 天天干天天狼在线视频| 国产极品美女高潮无套在线观看| WWW啪啪的com| 100啪啪视频大全| 国产拍偷精品网站| 日韩兔费看黄片| 17c嫩草51久久91嫩草| 欧美亚洲综合高清在线| 国产精品一区二区三区免费视频| 亚洲激情久久久伊人综合| 久久蜜桃一区二区| 大香蕉人妻久久| 欧美高清16| 97超碰日韩| 视频一区二区免费在线| 91福利网在线观看| 国产精品麻豆成人av| 9丨亚洲一区二区在线| 亚洲无码超碰免费| 性爱视频啪啪啪啪| 园内精品自拍视频在线播放| 激情小说成人日本无码一| 欧美日韩性爱操大逼| 亚洲成?V人片在线观看福利| 久久激情五月| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 无码国产精品午夜不卡(| 午夜色婷婷| 黑丝内射一区二区三区| 99久久无色码| 久久久久久久久久久999| 中文字幕文字幕无码一区二区三区电影99| 青青欧美| 久久9久久| 国产精品午夜AV完会免费| 影音先锋新男人| 欧日a| 亚洲 日本 一 二 三| 超碰 另类 欧美 | 夜嗨影院| 一区二区偷拍拍视频| 97香蕉人人乳| 夜夜无码| 欧美精品精品一区二区| 国产女人极品高潮毛片| 久/久精品99看9| 78p欧美| 亚洲激情深爱文学小说网站| 中文字幕99999| 国产精品无码av| 五月色丁香| 国产精品制服丝袜中文字幕日韩一区二区三区 | 天天澡天天爽日日av| 日本不卡免费二区| 色吧 综合| 中文字幕123| 白丝1区2区3区| 亚洲涩图欧美| 国产一级高清免费观看| 久久久亚洲欧美综合| 6080yy午夜理论三级一区二区三区无码| 91欧美美女日韩国产婷婷| 亚洲双插| 第四色奇米影视777| 欧美激情综合色综合啪啪五月| 久久久久久久久久久久黄色 | 岛国AB视频| 日韩女优中文字幕| 亚洲久久东京热一二三四五区视频| 欧美97色| 在线可观看的黄色网址| 伊人国产av| 大香蕉人妻久久| 国产精品一级特黄aaa大片在线观看| 婷婷六月天| 久久久九九| 第四色奇米影视777| 国产毛片精品一区二区色欲黄A片| 国产精品第二页| 色姑娘综合网| 性一交一乱一交A片久久四色| 丁香婷婷激情五月天无毒不卡| 91黑人狂躁丰满熟妇| 5月婷婷6月六月丁香| 青青草乱入乱欲视频在线观看| 女色综合| 99热官网| 欧美色交| 中文自拍欧美影视| 91美女看B| 黄色操人| 91嫩草欧美| 亚洲欧洲成人在线电影| 天天干,夜夜爽| 四虎av在线| 超碰人人超在线观看| 操淫穴亚洲五月丁香| AV在线性爱| 色女99一级片在线观看| J?P?NESEHD熟女熟妇伦| 日本久操视频| 久久综合97| 久久精彩免费视频| 久区视频| 91久久婷婷| 亚洲精品国产拍免费91在线| 国产AV久久久蜜爱影集| 综合网亚洲1| 人妻-91porn| 青青久日| 久久99久久99精品免视看婷婷| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 新久久AV| 久久国语| 国产色呦呦| 67914在线兔费成人视频| 欧美很很操视频| 国产91美女视频| 五月天婷婷成人网| 91狠狠综合网| 夜夜狼人妻| 91精品久久久| 亚洲高清少妇| 中文字幕精品区先锋资源| 人妻少妇无码| av天堂影视中文在字幕在线中文| 久久久熟妇熟女国产| 亚洲色图超碰在线| 试看日韩黄片| 91色综合激情| 18禁免费视频| 日韩无码服务区| 伊人AAA| 91综合色噜噜| 懂色AV中文| 日操粉逼逼| 色综合天天爱去电影网| 国产有码一区| 伊人久久大香线蕉无码| 亚洲综合有码| 精品网站9999| 18啪啪手机免费性爱| 久久噜噜噜精品国产亚洲综合| 99热精品在线| 亚洲 小说 欧美 激情 另类| 亚洲综合一| 欧美综合骚| av网页一区二区三区| 色九久| 无码久| 国产精品色色| 国产一在线观看| 亚洲美女精品九九视频| 超碰久久.com| 九久久九精品视频| 國產尤物AV尤物在線觀看| 超碰色97| 校园春色亚洲无码| 天天流夜夜操| 岛国大片在线观看网站入口| 亚洲欧美日韩不卡人妻| 91美女视频在线| 婷婷午夜| 四虎国产精品永久地址入口| 偷拍盗拍亚洲色图图片| 色欲人妻一区二区在线| 色色色综合网| 国产精品制服丝袜清纯唯美| 九九碰九九爱97超| 日韩精品系列| 97人亚洲综合字幕| AAA久久| 欧美 日韩 亚洲 春色| 97色综合中文网| 国产久久久久影院老熟女| 91国产精品熟女| 欧美精品自慰系列寂寞少妇 | 九九九九九九九精品视频| 国产精品无套内谢| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 九九久久九九久久| 日本性爱少妇| 伊人久久综合影院精品久久久| 精品国产乱码久久久| 91操人| 免费看污网址| 97激情97激情| 日韩啪啪啪啪啪| 在线观看日韩av不卡| 91精品久久久久五月天精品| 麻豆久久精品亚洲精品88| 天天综合网在线91| 色哟哟av| 97在线资源| 伦在线97| 欧美精品 - 91爱爱| 嗯嗯啊啊操死我| 中文字暮97| 九色97| 91人妻爽爽人人做人人澡| 大屁股xxxxx| 91丨熟女丨丰满熟女| 久久成人午夜精品影院| 操逼大黄片| 色翁荡息又大又硬又粗又爽| 综合伊人网12色| 国产黄色剧情影片麻豆免费播放| 日韩射精| 日韩欧美加勒比| …亚洲黄色厕厕女女在线播…| 亚洲激情久久久伊人综合| 一二三四区电影| 日韩特一级久久| 中文字幕无码不卡啪啪| 激情文学 亚洲图片| 我爱搞逼综合网| 9999久久久久| 2020中文字幕在线| 久久精品一区二区三区蜜桃臀| 熟女91网| 国产深喉| 天堂性色| 97精品网| 九九九精品成人免费视频小说| 亚洲视频中文一区| 狠狠婷婷亚洲中文综合久久| 国语对白露脸XXXXXX | 欧美91久久久久| 亚洲色综网| 97视频播放| 国产熟妇 码视频户外直播 |