久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|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
返回資訊列表
青草成人免费视频一com| 超碰78| 亚洲资源一区| 一区二区免费电影久久| 日本天天色| 日韩午夜国产| 97超碰站| 91超级碰碰碰| 久久草视频污视频| 襙一襙| 人妻丝袜日本| 久久精品国产72国产精品福利 | 九九热精品视频六| 人妻人人做人人澡人人爽欧美一区| 日本大片日本一区二区免费高清| 亚洲自拍青操视频| 日韩人妻有码免费视频| 精品大久久| 欧洲亚洲人妻无码高清久久三区四区| 大香蕉免费乱伦视频| 欧美性暴力猛交XXXX| 九九九成人| 超碰在线香蕉| 熟女高潮合集-永久久久-成人AV| 色激情综合网站| 色色五月婷婷| 中出20p| 日本东京热加勒比久久| 成人性爱视频在线看| AV 少妇 人妻 偷拍| 2020中文字幕在线| 思思热免费在线视频| 亚洲情色一区综合| 日韩精品在线视频,日韩精品……| 手机看av网站在线看| 色眯眯射| 超碰色综合| 久久久97| 深喉吞精| 久久‘黄片视频| 欧美中字二区| 97超碰磁| 欧美日韩免费专区在线| WWW.操逼.COM| 日韩午夜国产| 黄色香蕉视频网站一区| 99综合自拍| 日韩一级久久毛片| 亚瑟国产精品久久无码| 亚洲天堂自拍| 亚洲国产av中文字幕久久| 综合国产97| 99久久久无码国产精品性啊聊| 日本在线一二 | 精品超碰中文在线| 久久女人| 欧美激情总合网| 久久国产精品m码| 女人高潮抽搐喷水视频网站| 日韩特一级久久| 91干熟女| 久9精品| 综合色久| 超碰色图| 人妻加勒比东京热| 2017天天操| 久久午夜伦| 亚洲女人91| 天天天天操| 男人的天堂com| 色悠久| 91 刺激在线| 舔足天天操天天射| 殴美牲| 色婷婷国产精品一区在线观看| 精品久久視頻在线| 国产一区二区成人av在线播放| 欧美狠狠弄| 亚洲无无码αⅴ每日更新| wwe 天天干.com| 国产午夜福利专区综合| 97久久免费| 日韩欧美国产一区二区三区四区| 乱色老一区二区三区的观看方式| 欧美日韩中文亚洲v在线综合| 国产精品大屁股999| 在线观看日韩av不卡| 欧美日韩人妻精品一区二区三区| 啪啪91| 日韩人妻丝袜中文字幕| 国内精品a| 欧洲一区二区三区免费| 乱伦3P视频| 欧美在线亚洲| 偷拍 精品 另类 四区| 日本国产亚洲一区在线观看| 久久国模av| 多乙久久久久久| 九九热精品视频六| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 激情五月天综合网| 久久精品国产亚洲AV清纯| 熟女自慰久久久| 天天操夜夜嗨| 色噜噜日韩精品| 鲁鲁色综合网| 欧美探花网| 国产丸一视频| 综合网欧美在线| 秋霞福利网| 免费A V在线| 日本不卡在线二区三区| 欧美色997| 乱伦av麻豆| 欧美 日韩第一性色| 这里有精品| 偷拍偷窥与盗摄视频专区| 激情视频一二三| 亚洲免费看片| 国产兽交视频在线播放| 中文字幕欧洲有码| 精彩视频日韩| 成年人性爱日韩| 国产精品久久久亚洲第一牛牛_在线观看| 伊人青青一区成人视频在线观看区| 中文字幕日韩电影人妻| 无马一区二区| 日韩99神马视频片| 一区二区娱乐网站| 青青免费在线视频一区| 天天干天天日天天射黄色大片| 日韩在线一区高清在线| 好湿好紧视频| 99青青草国产视频| 中文字幕精品一区二区精品| 日韩黄片视频试看| 亚洲av资源| 日韩钢筋无码高清啾啾啾| 国产97色在线| 天天日天天搞天天干| 欧美色老汉| 日欧美色| 中文字幕老熟妇黄色视频| 人妻 中文 日韩| 亚洲熟女av中文字幕| 日本超碰97日韩精品人妻| 日韩人妻精品久久久久| 欧美疯狂做爰xxxx| 欧美性爱日韩高清| 少妇激情一区二区三区视频| 国产精品丝袜久久亚洲不卡| ′ !γ}丶。。久久精品欧美一区二区三区 | 超碰日本97美女人妻人人玩人人爱| 为用户提供免费看黄网址在线观看| 密臀在线视频| 男女性扦B| 日韩欧亚太美不卡| 1024日韩| 国产一区二区av综合| 日韩亚洲欧美中文字幕| 中文字幕第二页| 国产日韩人人| 亚洲精品丝袜| 综合久久99| 在线欧美69V免费观看视频| 78超碰| 99re在线视频这里只有精品| 欧美老妇综合网| 日韩精品国产精品五码一区二区| 免费操逼视频下载| 久久无码成人| 日本性感人妻91| 天天久久| 男人下部插入女人下部| 九九人人操| 91社区拍啪人妻| 2023天天操夜夜操| 国产精品夜夜| 夫妻日逼| 天美av在线| 91AV天美在线视频| 天美传媒Av在线| 久久久9品一区二区三区| 超碰在线人妻| 国产成人精品亚洲日本| 天天天天天天天天天天干美女| 亚洲97成人在线观看| 国产久久久| 一级AAA片一区二区三区| 国产人妻精品一区二区三区秋霞| 国产99999久久精品| 欧美超碰96| 97精品国产97久久久久久免费| 久99视频| 97亚洲综合影院| 国产精品一区二区密臀| 国产精品乱码久久久| 亚洲精品97久久中文字幕| 啊啊啊好舒服视频在线观看| 亚洲成人精品久久久| 青青草在线成人视频| 亚洲天堂,男人| 日本中文字幕在线视频| 蜜桃无码AV一区二区| 色yeye成人免费视频| 国产一级内射无挡观看| 99re热有精品视频国产| 黄色片一区二区三区四区五区| 国产福利一区二| 免费观看日本操逼视频| 日韩兔费看黄片| 久操视频在线观看| 污色区网站| 日本一道在线播放高清| 国产精品午夜AV完会免费| 91骚熟女| 青娱乐淫乱1314| 国产精品免费久久久久久久久久| 午夜性刺激视频免费观看| 好吊色综合| 色噜噜狠狠色综无码久久合欧美| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 九九色逼| 天天插天天射| 男人夜色天堂ss| 亚洲天堂男人在线| 亚洲综合在线高清| 91精品无码人妻系列| 国产区性爱在线视频秋霞豆| 亚洲日韩成人性爱视频| 色婷婷九月| 五月天婷婷成人网| 国产一区二区三区中文字幕| 亚洲综合在线高清| 久久精品夜色国产亚洲AV| 91爱看| 国产欧美黑人丰满在线| 久久久9 9 9精品| 秘书高跟黑色丝袜国产91在线| 男人的天堂com| 亚洲91色| 中国农村熟妇毛片视频| 一区二区三区黄色片a| 一级久久久久久久久久久| 操逼逼无码| 黑丝少妇| 青青草精品| 天天操天天日青青草超碰av| 91久久精品美女高潮喷水| 一区二区三区色综合| 久久熟女人| 色色99| 色婷婷视频| 欧美另类色图片| 视频在线观看一二三区| 综合九九| 性色综合网| 国产婷婷综合在线观看| 成人无码电影在线观看网| 精品一区二区成人| 骚货人妻偷情自拍在线视频| 青青草精品| 欧美第二页午夜| 婷婷8月天青娱乐| 久久久96| 国产精品免费日韩| 激情五月婷婷综合| 青青草原综合久久大伊人精品| 亚洲Av噜噜一区二区三区妖精| 97超碰中文字幕| 久久在肏| 国产日韩色综合| 午夜欧美女人操逼| 中文字幕国产精品1区| 国产丝袜美腿美女麻豆| 色老大| 老熟女乱伦片| 欧美精品久久久久久久久88| 久久欲| 亚洲欧美在线观看2021| 精品国产自在在线99| 欧美变态激情网| 欧美天天综合在线| 日韩黄片视频试看| 荡小穴在线观看| 少妇色综合| 91一区二匹| 18禁美女裸体无遮挡啪啪| 亚洲人妻av| 日本不卡二三区| 婷婷人妻激情| 91精品久久久| 国产999精品久久久久久| 中文字幕AV片| 国产精品高潮久久久无码| 性爱乱伦网址| 夜夜操av亚洲一区二区| 亚洲狠狠入| 日韩无码视频黄色| 99久热| 天天舔天天日天天射| 国产传媒日韩| 免费在线观看AV无码网站| 91暧暧| 精品少妇一区二区三区| 人妻干天天| 92福利社视频| 啊啊啊在线看| 日韩美女啪啪一区| 伊人影院中文字幕| 91精品少妇搡搡搡| 伦伦成年午夜免费视频| 欧美日韩国产中文精品字幕自在自线, | 人妻久热在线| 97久操| 性影在线视频| 日本伦理一区二区| 好爽视频在线观看| 激情五月丁香五月| 97操综合| 综合免费无码中文| 欧美熟妇乱码在线一区| 亚洲国产日韩精品久久久| 芊芊操逼视频无码| 亚洲官网在线| 校园春色亚洲| 香蕉婷婷| 黑人粗大V S日韩女优视频| 91伊人久| 亚洲一二三精品久久网| 国产精品网址| 久久亚洲av成人无码国产| 97超碰免费生活| 日B操| 懂色AV一区二区三区| 啊啊啊啊,啊啊好多水 | 久久性生大片免费观看性| 操人91| 男女香蕉一区二区| 国产99久久99热这里只有精品15 | 中文字幕蜜乳av| 在线另类| 精品一区二区2| 夜间福利片1000无码| 欧美中字二区| 欧美日韩大黄片| 伊人青青一区成人视频在线观看区| 鸥美中出| 亚洲人妻av| 久久精品女同亚洲女同13| 超碰在线香蕉| 久久久禁| 亚洲天堂7777| 干美女人妻| 久精品无码av一区二免费国产在线观看 | 91欧美在线| 丁香激情五月天| 欧美草草高清日韩视频| 探花精品视频| 欧美97se| 九月婷婷| 女性91网站| oumeisetu综合| 久久精品久久久久久久| 中文字幕在线观看丝袜| 亚洲在线a| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 小视频国产| 日韩 欧美 校园一区| 无码精品久久| 91欧美综合在线| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 九九成人精品| 三级激情网站| 综合网亚洲在线| 大香蕉手机视频| 欧美日韩久久精品爱爱| 麻豆久久视频在线地址| 呦呦一区| 麻豆天美传媒在线视频天堂| a一区二区三区乱码在线| 欧美色图下一页| 免费精品人妻一区二区三| 中亚黄色三级大片| 日韩免费看黄片| 素人伊尹大香蕉免费下载视频| 综合自拍| 加勒比中文av| 欧美三级一级| 91午夜无码| 欧美亚洲高清不卡| 成人三级片无码| 超碰久久.com| 天美国产三级传媒| 久久久久久久久久va| 日韩欧美偷拍美女视频| 亚洲国产欧美中文永久| 不卡视频一区蜜桃视频 | 国产在线综合福利网站| 欧美成人一区二区| 日日碰狠狠添天天爽超| 欧美在线天堂| 99re9这里只有精品| 天天操人人操狠狠插| 亚州色图片在线色| 91久久久久久久| 亚洲97| 日韩钢筋无码高清啾啾啾| 十八岁啪啪视频免费看| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 99久久com免费视频′| 五十路六十路素人熟女| 一区二区三区四区五区久久久久久| 超碰人人在线| 视频一区二区三区精品| 伊人久日| 青娱乐 成人娱乐在线| 影音先锋少妇| 97在线/亚洲| 国产白领连续中出在线观看| 国产精品制服丝袜清纯唯美| 大香蕉狠狠爱| 躁躁日曰躁2020| 26uuu国产免费观看| 日本综合色图| 校园春色亚洲无码| 日产狠狠干| 麻豆国产96在线| 天堂资源欧美| 亚洲人妻中文高清| 淫荡网址| 欧美 综合 亚洲| 屌色在线97视频| 日韩操逼性鲍| 欧美激情 亚洲色图| 国产白领连续中出在线观看| 乱伦3P视频| 日本精品一区二区三区四区的功能| 成人久久精品| 色婷婷五月天| www.久久最新地址| 欧美日韩97| A一级色女| 色女女女导航| 日韩性爱网址| 中国AV美女| 69久久| 99xav| 狠狠穞A片一區二區三區| 久久性爱精品一区| 97精品网| 丰满熟女人妻一区二区三五十一路| 青青草原狼av| 成人午夜无码视频| 天天干干天天干干| 97色碰| 欧美日韩精品青青| 亚洲天堂第一页| 一本道综合色图| 亚洲导航深夜福利| 26uuu最新| 久肏视频字幕| 亚洲综合性网址| 欧美乱色| 亚洲日本韩国在线| 日韩久久.一级黄色片| 91欧美亚洲| 97久久精品不卡| 78久久久| 夜夜操天| 五月天激情四射| 国产白嫩漂亮KTV在线| 国产精品不卡av免费在线观看| 四虎影视国产精品| 亚洲精品一卡二卡三卡福利视频网站| 色噜噜人妻av 中文字幕| 天堂种子在线www网资源| 麻豆国产视频精品观看| 97碰| 狠狠爱夜夜| 欧美精品欧美精品系列 | 免费男人的天堂| 中文字幕久久精视频久久大全| 亚州色交| 婷婷五月色| 午夜影美女日鸡鸡天天视频国产| 日本欧美韩国国产在线| 国产自制av蜜乳| 婷婷激情四射| 国产乱码久久久| 视频黄站| 日日妻色网| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 国产AV无码AV| 巨爆乳一区二区爆乳区| 日韩欧美大片免费高清啪啪| 天天综合97| 欧美+日产+中文| 蜜臀Av一区二区三区| 夜色97| 九九九九免费高| 欧美另类自拍 | 高清无码久操视频| 国产高清成人免费视频| 久久青青草在线视频| 亚州欧美在线| 欧美综合色图网| 91狠狠狠| 99精品无码| 夜夜嗨一区二区三区三州加勒比| 欧美在线第五页| 国产热av| 久久久久久免费电影| 蜜桃臀一区二区aV| 96精品一区| 久欲AV| 亚洲在钱| 亚洲综人网| 91中出在线| 成人区人妻精品一| 91 综合网| 超碰色97| 亚州综合网| 97亚洲精品| 探花视频免费观看国产专区| 青春草莓视频在线观看网址| 99久久无码| 黄色片A级一区二区三区| 日韩一级性爱无码| 国产无码高清操逼视频| 中国一级特黄大片护士| 亚欧日韩成人| 一区三区啪啪| 九九色色| 国产女上位好爽在线| 乱日视频| 97久久久精品| 劲爆欧美人妖三区91| 青久久| 91青青| 久久久久久久9| 国产在线视频午夜精华在| 国产乱伦搜索结果91P| 欧美中文字幕日韩在线| 九色精品视频导航1| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 五月丁香久久| 日韩人妻少妇中文字幕| 闷骚老熟女15P| 亚洲精品1区| 日韩青久久| 亚洲欧美伦综合| 国产强奸乱伦欧美| 岛国大片国产| 国产亚州日韩欧美看片| 96精品在线| 少妇与黑人高潮在线| 亚洲熟女一区| 日韩天天综合| 91久久久亚洲| 欧美精品xxxwww| 91精品丝袜久久久久久| 成人影 天天操 亚洲| 极品后入免费视频| 国产午夜福利合集| 狠狠爱综合网| 日本熟女中文字幕一区| 毛片电影一区二区三区| 好湿好紧好爽 视频| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | ′ !γ}丶。。久久精品欧美一区二区三区| 久久这里精品国产99丫e6| 98精品国产乱码久久久久久| 91麻豆天美国产欧美高潮| 亚洲天天操| 亚洲三区视频| 五月婷婷色色| 国产精品视频播放| 精品少妇高潮久久| 久久久久久久强迫| 日韩乱伦影音先锋| 天美传媒国产原创中文字幕亚洲欧美另类 | 亚洲一区亚洲天堂| 人妻少妇精品视频一区二区三区| 黑人精品XXX一区一二区| 国产强奸超碰AV| 综合网,亚洲,欧美| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 99热精品在线播放| 日夜久久久九九九久| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 无码一区二区精品视频久久久春药| 国产懂色精品国产av| 超碰日本97美女人妻人人玩人人爱| 97超碰久| 999精品乱码| 99re公开精品免费视频| 亚洲天堂人妻一区二区| 午夜无码熟妇丰满人妻| 91 欧美| 色爱三区| 一区 欧美 日韩 麻豆| 人人澡人人澡人人| 一级AV性爱| 91日韩在线| 和协影院中文字幕三区| 久草新在线| a级成人毛片免费视频高清| 欧美日韩夜夜| 玖色av| 高潮毛片无遮挡高清免费| 男人的天堂啪啪啪啪啪蜜桃不卡| 久草精品视频| 狠狠婷婷亚洲中文综合久久| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 第一高清av中文字幕| 天堂精品小草| 老熟女网站| 无码日韩网站| 久久久久亚洲一区女同性恋中文字幕| 男人天堂东京热| 日本国产欧美高清在线| 伊人久久大香蕉线AV五月天| 96久久久久| 女同性恋久久| 91色伦综合| 黄片视频观看| 精品女人999| 夜夜高潮夜夜爽国产伦精品| 日本性爰一道本| 人妻夜夜爽天天爽麻豆三区网站| 超碰精品97| 日韩丰满熟妇| 天堂在线一区二区| 熟女探花啪啪| 久久天堂婷婷网| KK色在线影院| 日韩欧美中文| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 女人双腿搬开让男人桶| 北条麻妃性愛视频| 偷拍偷窥与盗摄视频专区| 狠狠狠狠狠狠| 男人的天堂kva| 家庭乱伦网站国产| 亚洲色香| 精品国产乱码| 欧洲Au麻豆| 男人天堂2017| 无码免费一区二区三区啪啪| 97久久超碰国产精品| 日本不卡一二区| 无码国产精品久久久久| 色阁阁AV综合网| 成年人三级黄色片视频| 青青草十区九区爱夜| 黄片www视频免费| www.91色综合| 日本男人天堂| 精品人妻伦一二三区久久| 久久久久久久久女黄| 无码国产精品久久久久| 97精品在线| 国产成人一级av88| 九九九九九用不成了| 国产精品久久久吖| 日本淫色网| 日本操逼无码| 淫色网综合| 97超碰久久| 九色 人妻 大香蕉| 久久男人的天堂| 久久人妻丝袜一区二区三| 密臀在线一区尤物| 丁香五月综合| 亚洲男人天堂手机版| 这里只有精品久久| 亚洲精品人体| 91蜜臀熟女| 久久久四区| 天天日老熟妇| 男女一进一出视频久久| 人妻熟女字幕一区二区| 亚欧美色| 素人美腿视频网站| 亚洲春色一区二区三区| 欧美日本久久精品一区 | 蜜乳AV免费观看| 久久97资源 网| 欧美的性爱网站免费| 欧美综合在线91| 成·人免费午夜在线观看| 91女在线观看| 美女天天干| 麻豆性爱视频在线播放| ..日韩av毛片精品久久久| 熟女AV一区| 中日韩熟女| 国产精品久久久午夜夜伦鲁鲁| 亚洲色诱惑| 97欧美日韩综合| 欧州色图区| 成年人网站在线免费观看| 色女综合| 神马久久久久久伦理片| 亚洲一二三四区在线免费看视频| 欧美劲爆视频一区二区| 黑人性欧美| 欧美成人9797| 在线人成亚洲视频免费观看| 伊人国产视频| 国产精品视频白浆免费| 国产精品丝袜在线| 亚洲色鬼| 小视频国产| 欧美极品色| 亚洲精品成人| 综合网91| 干B| 久久久成人国产精品无码| 在线视频资源| 日韩AV色图| 男人高清无码一区二区| 黄色一区三区| 久久五月综合| 精品一区二区国产日韩| 日韩精品大香蕉伊人在线| 黄aaaaaaaaaaaaaaaaaa色网站| 91精品人妻一区二区三区蜜桃| 少妇被玩视频二三区| 乱伦熟女专区| 97超级色碰碰| 人人乐大香蕉| 色网在线视频观看免费| 91综合天天看| 肥臀熟女福利视频一区二区| 99久久婷婷丁香| 日本 情色 1区2区3区| 私色综合网| 日韩国产不卡在线视频| 91制服丝袜| 国产天天骚| 岛国艾薇凹凸视频天堂| 青青草毛片| 青青草日本中文字幕| 久久久夜夜嗨免费视频| 欧美Ⅴ性爱| 欧美,亚洲,日韩,v,天堂,手机在线观看| 亚洲第一综合| 久久精品久久九九精品| 欧美色图校园春色| 久久中文色图| 在线播放中文字幕| 久久免费99精品久久久久久| 日日干日日摸| 天天综合有色网| 99精品久久久久久久婷婷蜜桃| 人妻色偷色噜| 精品一区二区久久| 天美国产精品| 亚洲一本色道中文无码aV天美| 一级二级在线观看| 欧美性综合| 女人天堂AV五区在线| 精品v日韩欧美国产| 人妻少妇久久中文字幕一区二区 麻豆 | 久久久性| 一卡二卡三卡| 日本99一区二区| 婷婷五月色| 日韩精品一区二区日韩| 婷婷五月天激情四射| 欧洲精品欧洲精品| 91国产精品熟女| 欧美顶级黄片AAAAA在线免费看| 免费精品国偷自产在线在线| 女人18精品一区二区三区| 性欧美体内射精| 久热91| 午夜国产成人精品视频| 限制级中的三级片中的黑粗大屌屌日人妻熟女| 亚洲成人一二三区| 婷婷五月天网| 另类 日韩 熟女| 三级精品三级在线观看| 国产午夜精品一区二区三区牛牛| 使劲用力艹少妇视频一区二区| 日韩亚洲美女一区久久| 久草免费在线一区二区| 久艾草在线精品视频在线观看| 三级色影综合网| 中文熟女五十乱码在线| 国产美脚女优尤物在线观看| 激情99| 色香色欲天天综合网天天来吧| 成人无码在线超碰网| 极品肉射| 欧洲一区二区| 色爽——AV| 欧美白嫩女HD| 国产蜜臀精品一区免费尤物| 成人AV在线电影| 女人喷水视频在线观看| 都市久久精品激情亚洲| 亚州91| 91老司机精品| 黄站在线免费观看| 嗯,啊。舔我逼| 亚洲网自拍| 精品91摸| 91 手机在线播放 绯色| 黄片无码在线制服| 国产精品区在线12p| 亚洲一区日韩精品中文字幕| 久夜视频| 国产伊人精品在线| 男人的天堂三级| 欧美日韩美女精品久草一区二区三区| 久久久久久中文版| 九九久久久九九| 久久五月份| 狠狠爱综合网| 狼人久草| 欧美性爱伊人| 五月天玖玖资源站| 亞洲久久直播| xxx0国产在线播放| 日日噜噜夜夜狠狠视频无| 麻豆视频国产一区二区| 国产精品成人AV片免费看网站| 中文视频在线观看| 亚洲欧美洲综合| 九九五月天| 欧美亚洲清纯| 亚洲人妻久久久| 日本精品一区二区三| 色欲人妻一区二区在线| 色好看av| 久久超碰、| 久久久久久久久九九久孕交| 91久热这里只有精品| 爱射综合| 天美av在线观看| www鬼畜国产男人的天堂| 亚洲色图大香| 青青国产精品在线| 亚洲色堂免费视频| 日韩天堂av电影在线观看| av优播| 97 亚洲 日韩 欧美 在线| 清纯唯美激情四射| 日韩人妻网站| 国产农村妇女精品1区二区| 爱爱动态试试看6 0秒| 激情文学欧美| 天美传媒在线一区| 素颜老阿姨乱情色| 国产人妻精品一区二区三区秋霞| 黄色av播放免不| 男人的天堂三级| 精久久久| 蜜汁欧美| 91网站18禁| 国产精品久久久啊| 国产精品露脸在线观看| 国产精品日韩在线一区| 最新三级网址| 亚洲一区二区三区欧美日韩| 午夜男人一级A片7777| 九九热AV| 99热超碰| 久久鲁夜| 婷婷九月国产| 亚洲第一男人天堂| 友优传媒精品在线一区二区| 日本视频在线中文字幕| 眼镜人妻101.com| 日韩av免费一级电影| 国产成人一级av88| 麻豆国产96在线| 天天日天天插| 日韩一级二级在线| 1二区9| 天天热精品| 日韩精品 欧美激情| 偷拍精品一区二区三区| 久久久久亚洲熟妇熟女| 天天综合网日韩7799| 国产在线视视频有精品| 中文字幕精品一区二区精品| 久久久久久久 九九九九九九九| 国产丰满少妇久久久精品影院| 不卡一区视频| 97伦综合| 亚洲日韩电影| 影视综合无码少妇| 亚洲成人久久美女| 高凊专区人人操| 夜草欧美| 四虎影视国产精品| 国产精品免费久久久久久久久久| 亚洲国产ⅴ高清在线观看| 91狼人| 9/A片 | 色眯眯av| 国产精品9999| 狠狠婷婷亚洲中文综合久久| 亚洲最大成人a毛毛片| 伊人久久婷婷| 超硑97精品| 伊人久大| 久久9久| 国产理论视频在线播放| 天天插天天射| A啊啊在线观看| 亚洲图片欧美另类综合免费视频大大香| 欧美黑人熟妇精品91| 岛国大片国产| 五月婷婷激情| 亚洲在高跟鞋自慰久久在色线| 日韩青久久| 中文字幕av亚洲精品| 全免费a敌肛交毛片免费| 97天天摸天天碰| 手机久操欧美综合色码| 九久久精| 中文字幕一区二区日韩网| 激情综合色| 久9久9精品| 亚洲男人天堂手机版| 天天操人人操狠狠插| 超碰99在线观看| 丁香婷婷激情五月天无毒不卡| 一本大道久| 中文字幕高清精品一区| 久久曰曰| 麻豆 亚洲 97| 国产女人视频三四五区| 在线观看AV片| 亚洲最大黄网| 午夜福利合集| 岛国毛片在线观看免费| 亚洲老熟妇xxx| 嗯,啊。舔我逼| 国产 日韩,欧美 自拍| 99热在线观看| 10000部十八禁看电影| 蜜区区视频79| 国产东北女人在线视频| 日韩欧美亚洲国产日韩| 一级免费精品| 亚洲国产精品99久久久| 久热免费视频| 97超色| 黑人精品一区二区在线播放| 日本欧美成人片AAAA| 色男人色天堂东京热| 99热在线观看| av凤凰久久久| 蜜桃精品一区二区三区ww | 久久精品一区二区一8| 搡老熟女老女人老熟妇免费视频| 青久操| 91老女人| 99视频只有精品| 亚洲s色图| 亚洲国产精品无码AV久久久| 久久久久免费少妇| yazhouzaixian| 一本久道在线综合视频| 色哟哟国产精品免费网址| 视频在线97| 操逼操逼视频操逼| 天天摸天天碰天天添青青| 欧在线一二区| 人人扣人人操| 天天操美美| 性爱综合一区二区| 亚洲天堂东京热| 少妇天堂| 久久久久国产无av| 亚洲天堂日本| 国产精品永久免费10000| 97综合在线观看| 九九九九九九九九九国产精品| 亚洲无码一二三区| 禁十八久久| 午夜男女爽爽大片免费观看| 国内91熟女人妻丝袜天天精品视频在线 | 亚欧精品久久久久久久久久久| 九九人妻| 日韩探花精品在线视频| 久久久111| 国产精品视频自拍在线| 97亚洲一区| 免费试看60秒| 成人综合色网| 综合欧美亚洲| 五月综合激情网| 91在线一起| 国产精品免费美女视频| 97爱碰| 欧美性爱中文字幕无线码| 亚州 综合 色图| 亚洲 欧美 日韩 国产一区二区 | 亚洲欧美综合网站| 激情网色| 亚洲激情色片| 琪琪精品免费一区二区三区| 欧美72网页| ji熟女.com| 久久大线蕉一区| 被窝影院午夜看片无码| 欧美超碰96| 亚洲A曰本VA欧美VA视频| 欧美一区二区在线资源| 欧美欧美啪啪视频| 91原创在线观看| dy888午夜老子影视达达兔| 夜夜夜久久| 国产日韩精品suv| 欧美狠狠操| jizz啪啪| 91九九九小逼| 亚洲国产精品有声| 亚州色图片在线色| 99久久精品无码一区二区| 久久一二三四五六七八九区区| 2017人人操,人人摸| 免费成人在线熟妇网| 日本午夜操逼| 日本亚欧爱爱| 狠狠爱综合| 欧美96在线|欧| 99色在线| 婷婷丁香激情| 欧洲乱码一区二区| 另类小说综合网| 金典av| 亚洲操逼无码| 日韩欧美中文字幕搭讪巨乳美人妻视频| 大香蕉啪啪啪| 亚洲欧美不卡线| 久久久久骚| 免费久久一级毛片大黄| 人妻少妇精品久久久| 亚洲黄色网址视频| 97操97干| 蜜桃久久综合视频| J?P?NESEHD熟女熟妇伦| 欧美中字二区| 日韩性爱免费视频在线网站| 天堂av最新电影网| 欧美成人都市人妻| 又大又大又大又粗爽高潮观看| 亚洲丝袜B诱惑| 亚洲一级性爱视频免费看| 综合网亚洲1| julia高潮后不停追击中出| 又粗又长又大国产不卡| 综合网久久| 免费在线黄片视频| 91插B网站| 婷婷四五区| 久久久久久久九九九九九九| 制服诱惑亚洲一区二区三区在线观看| 97摸视频| 亚洲全色网| 欧美日韩大陆黑人少妇99| 热99这里只有精品| 青青草久草| 日韩av熟女一区二区三区成人| 福利操逼| 老熟女综合网| 亚洲乱色视频一区、二区在线| 狼狼色丁香久久婷婷综合五月 | 超碰是碰在线观看| 婷婷尹人大香蕉免费| 日产欧美电影一区二区三区| 亚欧美综合网。| 亚洲av无线观看| 丰满人妻-区二区三区免费看| 欧美日韩资源在线| 免费在线观看国内色片网站网址| 清纯唯美激情| 97香蕉人人乳| 亚洲精品亚洲人成在线麻豆| 97在线免费视频观看| 操人妻逼91| 男人的天堂一区三区| 丝袜美腿亚洲| 麻豆精品三区视频| 色五月丁香五月| 黄色片A级一区二区三区| 91亚.色| 亚洲s在线观看| 丝袜熟女一区二区三区| 蜜臀久久99精品久久久久| 国产精品人人爽人人做可爱福利| 999久久久九| 亚洲最新中文字幕免费| 伊人91| 国产农村妇女精品1区二区| 精品偷拍13p欧美dodk视频| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 欧美一区二区传媒| JULIA一区二区三区在线播放| 婷婷色综合欧美日韩| 欧美日韩青操| 天堂蜜桃无码视频一区二区| 国产AV精久久| 色欧洲| 亚洲人久久久网| 殴美,日韩国产伦精品| 超清福利精品视频在线| 97色操| 亚洲和欧美裸体美女双飞视频| 成人日韩欧美| ..日韩av毛片精品久久久| 2017天天拍大香蕉| 91国产大片| 99热66| 三级网色| 中英熟女操女| 97超碰公开| 中文字幕精品乱码| 蜜臀久久99精品久久综合| 国产久久av| 91综合色噜噜| 97在线免费公开视频| 久日91在线| 久操B网| 曰韩无码777| 大香蕉一区二区在线观看.| 久久久久久九| 亚洲午夜蜜臀| 99国产精品免费| 亚码激情| 静品嫩模一区二区| 精品三级在线专区| 91操熟女视频| 蘋果手機免費看成人Av| 伊人久久亚洲中文字幕| 大香蕉久久| 国产三区免费在线观看| 欧美十八禁视频| 色五月av| 久艹视频在线| av天天在线| 九九九久千久久激情蜜桃在线看 | 欧美精品不卡一二三四在线91| 韩国三级三级BD在线| 超碰亚洲97| 久热久| 人人操人人摸人| 欧美日韩免费性爱| 欧美色www亚洲国产阿娇要播| 91日产桃蜜| 久久影视二区三区行押| 密臀AV在线|