日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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
返回資訊列表
强奸xx国产| 超碰在线免费一区二区三区| 婷婷五月天福利| 极品综合| 色欲久久久久综合网| 亚洲色图第四色| 丰满少妇一区二区三区四区观看| 日韩精品一区的| 无码丰满熟妇一区二区浪潮AV| 久久大香蕉97| 白丝AV| 超碰天天操| 91 亚洲 欧洲| 青青草日逼视频| 亚洲黄色影视| 婷婷综合在线| 激情五月综合网| 亚洲啪啪视频一区二区| 欧美性爱精品七区| 成人av影院在线观看| 精品999一区二区| 亚洲蜜臀视频精品久久| 91处女视频在线观看| 色色无码| 午夜免费视频1000| 老鸭窝亚洲毛片| 午夜一区| 午夜天堂啪啪| 色情综合网| 婷婷综合久久| 色婷婷丁香五月| 国产精品久久久久久久久AV大片| 一区二区三区探花在线观看| 中国一区二区亚洲人妻| 熟女一区二区| 国产精品一级二级在线| 呦女网站| 美女上床网站| 78精品| 97天堂| 校园春色第一页| 精品白丝一区| 久久国产精品一区二区| 欧美激情久操网| 4虎在线观看| 国产97色在线| 成人免费福利在线观看| 婷婷中文网| 国产剧情AV不卡在线观看| 国产精品呦一区二区三区| 在线观看亚洲专区| 蜜桃臀av在线观看| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 国模91| 超碰97导航| 久久久久久九九九九九九| 亚洲网污污污污| 夜夜 中文视频rt| 久草精品一区 | 女同性恋久久| 福利天堂| 91热| 级做a爱无码性色永久免费| 天天做天天爱夜夜爽毛片试看| 蜜乳AV免费观看| 国产日韩区| 国产综合永久精品日韩鬼片| 很很干很很操| 刺激精品视频| 91亚洲色图| 中文色综合| 偷窥自拍亚洲天堂网爆| 青青青国产| 久久草视频污视频| 爱妃国产亚洲视频中文字幕| 国内毛片无码一级毛片| 国产精品情侣啪啪| 插插综合网天天影视网| 国产精品久久久| 精品亚洲国产成人精品| 国产夫妻一区二区| 久久精品无码一区二区三区| 国产三级在线现体验区| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 五十路熟女人妻一区二区三区四区五| 欧美A片中文字幕| 婷婷激情综合网| 日夜干射色啊| 啪啪视频免费在线观看| 破苞ⅩXXX性无码动漫无码| 在线人妻熟女一区二区三区四区五区| 97视频在线免费| 亚洲综合第一页| 99爱爱| 久久人人爽av亚洲精品天堂桃色 | 九九色婷婷| 亚州综合AⅤ| 欧美性91| 久久久人妻| 熟女高潮精品一区二区| 国产精品无码久久久久2025| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 白丝AV网站| 奶水 人妻 哺乳 在线| 超碰在线观看av不卡| 欧美午夜精品久久久久久3D| 91精品导航| 国产精品网址| 999色欧美中文字幕| 伊人精品久久网站| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 91啦人妻| 国产久久视频| 黄色一区二区秘书性感| 神马久久久久久久久久| 久久久久久亚洲中文| 99999精品成人| 日韩精品午夜操呦呦不卡影院| 温婉少妇玩3p| 91色综合色| 涩综合导航| 青青草在线成人视频| 97精品全部| wwwcaobibi| 色网综合网| 无码操逼网| 亚洲一二三四区在线免费看视频| 熟女人妇一区二区三区| 久久少妇| 99国产天美| 国产粉嫩蜜臀av一区二区三区| 欧美极品少妇交| 搡老女人老91二区| 久久国产精品,久久国产| 国产精品白丝在线播放| 欧美韩国你懂得在线 | 少妇熟女1区2区3区| 久久久9视频| 激情小说亚洲| 久久亚洲不卡一区二区三区 | 久久综合日韩亚洲欧美| 日本成人A片网站| 人妻天天爽夜夜爽2| 成人免费福利网站国产| 黑人性欧美| 夜夜操二区| 中文字幕蜜乳av| 中文乱码99| 韩国一级AAA| 亚洲丨在线| 夜夜狼人妻| 国产在线视频二区| 精品一区二区三区麻豆| 亚洲男人的天堂一区二区| 无码高清少妇久久| 97中文字幕一区| 日本91白丝| 亚川综合视频| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 欧美日韩天堂| 人人人人人人少妇| 亚洲国产精品9999在线观看| 美女91AV| 91女日逼| 国产精品天干天干综合网麻豆| 国产精品99久久久www| 亚洲欧美综合| 国内毛片四区| 九九九不卡| 高潮嗯啊性感美女久久久| 思思热免费视频观看| 久草加勒比一区在线| 九九av| 五月天春色激情网| 日日日日日| 亚洲一曲日韩精品| 97超碰欧美| 日本三级韩国三级美三级91| 久久超碰98| 色色99| 韩国午夜理伦三级好看| 亚洲欧美成人网站AAA| 国产和美国毛片| 啊啊啊啊在线观看网址| 东北女人av| 超碰人人干| 一区二区影院| 色官网色综合| 性爱视频无打码在线观看| 婷婷综合伊人一区| 亚洲欧美碰碰| 淫纸中9区| 亚洲人久久久网| 啊啊啊啊啊操我视频| 操久久久久久| 内射日韩大臀美女| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 欧美天堂第二区| 国产欧美伊人| 日韩av女优在线免费一区| 搡老熟女老女人老熟妇免费视频| 强奸乱伦中文字幕AV| 亚洲综合另类小说色区亚洲成av人片在www| 麻豆天美在线| 性生活性生大爱77AV国产| 综合天天网| 五月婷婷hd| 午夜天天碰综合视频| 蜜臀国产AV中文字幕| 五月婷婷综合在线| 亚洲图片欧美日韩| 色女女女导航| 97一区二区三区视频| 极品粉嫩少妇视频| 97欧美久久久久久久| 久久久99999久网站| 久久久久久久久久久久久久久久9| 夜夜操天天肏| 精品美女少妇一区二区三区| 日韩八十路老熟女| 懂色AV网| 中文操逼字幕| 欧美激情性爱视频网站| 九九香蕉网| www.婷婷五月天| 日本狠狠干| 99999精品视频| 啊啊啊在线观看免费视频| 亚洲视频一二区| 天天92av| 国产综合色精品在线观看| 俺去啦俺来也久久综合| 欧美日韩国产三级黄色| 国产农村一一级特黄毛片| 天天爽人人综合免费7799| 天美麻花大全视频| 免费农村成人少妇人妻Aa一区二区视频| 亚洲成人色情五月天丁香花| 999久久久免费精品国产牛牛| 91强奸乱轮| 探花激情视频| 亚洲美女色图| 天天日天天操天天射河南省| 一起草欧美| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 亚洲精品九九九九九九| 亚洲欧洲激情卡通另类文学四射小说网站 | 欧美.亚洲.另类.丝袜.制服.诱惑| 色婷婷丁香五月| 蜜桃视频精品一区二区三区| 国产一区二区精品在线视频| 国产美女高潮| 久操精品网| av优播| 96精品一区| 12一15性XXXX粉嫩国产| 日韩欧美午夜视频在线| 国产a级精品| 久久9精品网站| 家庭乱伦麻豆| 五月色综合| 嫩草伊人久久精品| 一区二区三区国产在线播放 | 精产国品一区二三产品| 9美女超碰在线免费观看| 久久午夜色播影院免费高清| 9l视频自拍9l九色成人| 久久久久久久久国产| 精品无码秘 人妻一区二区| 一级久久久久久久久久久| 综合网欧| 波多野结衣之双飞调教在线播放| 免费黄色视频网址| 碰人碰碰人人开房人肉| 精品三级在线专区| 人妻熟女字幕一区二区| q2午夜理论片夜色av| 99re免费视频精品全部| 久久综合乱子伦国产免费| 18禁久久| 激情小说五月天| 久久一区二区加油站| 狠狠操使劲操| 亚洲吊色| 欧美性爱免费短视频| 人人爽天天爽| 欧美日韩在线小说| 嗯嗯嗯,草死我| 激情欧美97| 精品亚洲国产成人AV制服丝袜| 色欲色香天天天综合网www-亚洲综合国| 91亚洲高清| 中文字幕啊啊啊在线观看视频| 欧美亚洲在线| 五月综合激情网| 97se亚洲| 色婷婷激情| 亚洲清纯综合| 久久大香蕉| 日韩欧美中文字亚洲慕| 这里都是精品在线观看| 伊人骚琪琪亚洲天堂网站| 性爱综合网| 欧美se综合| 欧美一区91大爱| 亚州性色| 久久超碰免费的| 香伊人在线| 久久久中文版| 国内毛片免费h片在线| 亚欧美无遮挡| 精品精品精品| 十八禁视频一区二区| 久久同城AV| www黄片免费看com| 激情综合网激情综合| 99国内精品| A片大香蕉在线| 97 超碰 人人做 人人爱| 乱伦a片视频| 尤物视频偷拍免费| 久久黄黄| 久操网视频| www.acm成人黄色毛片| 婷婷精品| 吖在线不卡一区二区国产剧情| 97视频www| 丁香色色网| 一级片视频啪啪| 欧美91丝袜| 色婷婷五月天| 又粗又长又爽在线观看| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 好湿好紧好爽 视频| 国产成人精品无码久久| 91久久青青草原精品| 97公开久久| 丁香五月偷拍| av天堂精品久久| 亚洲欧美综合图片| 性欧美| 99999精品视频| 亚洲 欧美 手机在线观看| 好吊色综合| 神马久久69| 长长久久免费视频| 无码乱人伦中文视频| 青青草中文字幕| 色阁阁AV综合网| 麻豆精品久久久久久久| 久久国内| 91在线超高颜值国产| juliaann丝袜| 一级免费精品| 亚洲一区亚洲天堂| 最新av在线| 午夜激情床戏激情| 亚洲高清在线| 国产黄色 A 片免费看| 91情色| 欧美日本不卡在线| 蜜臀久久99'精品久久久| 国产久久久9999| 色情综合网| 黄片免费看黄片免费看| 欧美日韩性爱无码| 可以在线观看的黄色网址| 激情色图| 久草加勒比一区在线| 精品超碰色| 少妇色综合| 午夜欧美神马久久久久| 九九热超碰97亚洲最新香蕉| 欧美一二三区四五区| 97在线国产精品| 久久五月份| 校园春色制服丝袜中文字亚洲 | 90后后入| 亚洲少妇综合| 夜夜爽夜夜高潮夜夜爽| 91人妻熟女| 不卡视频一区蜜桃视频| 97超级久久| 亚洲风情综合网| 国产精品色约约| 97精品一区| 抽插一区二区视频| 欧美激情专区| 久久久久亚洲熟妇熟女| 久久久久免费看少妇A片特黄| 在线人成亚洲视频免费观看| 操B视频日韩无码| 色综合V| 成人一级性爱| 综合色色网| 色色五月婷| 台湾佬激情综合| 真实高潮91| 亚洲www91| 天操天操夜操夜月操月年年操操| 蜜臀99久久国产| 中文字幕后石码四区五区| 秋霞怕怕片| 天天插夜夜操| 亚洲人妻av| 91久久精品国产| 97色欧州| 日本高清视频在线观看黄已三辽| 97在线免费视频观看| 丰满人妻区一区二区三| 国产一区二区三区视频在线看| 爱av免费| 亚洲国产欧美日韩人妻日中文| 欧美综合加勒比在线| 亚热日本熟女| 97这里有精品| 手机在线A片| 亚洲国产第一页综合视频| 校园春色欧美色图| 91精品操美女| 亚洲欧洲日本精品中文a∨| 亚洲导航深夜福利| 国产丝袜美女诱惑| 精品欧美日韩在线观看| 丝袜美腿亚洲| 婷婷亚洲五月***久久| 国产女人高潮视频| 9997se| 精品国产Av无码久久久亚洲| 蜜桃无码AV一区二区| 日本亚洲vr欧美不卡高清专区| 超碰伊人在线| 呦呦影院| 国产av尤物| 精品中文一区二区| 99久久精品国产系列| 99热这里只有精品地址| 啊啊啊啊二区好大| 大肥女高潮bbwbbwhd视频| 久热香蕉精品在线视频| 动漫区日韩区欧美区| 亚洲风情在线观看| 日本福利二区视频| 日本孕妇孕交| 久96热在线观看视频| 亚洲午夜av| 日韩精品影视| www.久久制服糖| 蜜桃精品一区二区三区ww| 91中出在线| 久草国产在线视频| 亚洲大色堂| 99婷婷一区二区| 91美女丝袜诱惑视频| 日韩精品影视| 久久精品国产72国产精品福利| 操人妻逼91| 亚洲av性爱电影| 色婷婷99| 91美女小视频| 天天爱天天韩国日本牛牛牛牛 | 免费一级性爱久久| 国产AV人人 夜夜人人澡| 粉嫩av在线| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 超碰1997| 日韩不卡在线一区二区| 欧美影音在线| 色久桃花影院在线观看| 大香网伊人久久综合网eew| 国产91福利小视频在线观看| 亚洲中文制服诱惑| 秋霞Av理论一级在线| 大稥蕉免费视频这里只有精品| 2017天天插| 蜜桃视频精品一区二区| 亚洲天堂精品日韩电影| 欧美内射少妇| 亚洲免费成人在线高清无码视频 | 亚洲精品成人动漫在线| 欧美激情久久久久| 国产男人又猛又粗又爽| 欧美图片校园春色| 亚洲有薄码区日本系列中文字幕| 超碰免费97| 97超碰逼| 大色综合网| 亚洲97资源| 又大又白奶子| 色欲av一区二区三区蜜芽| 精品美女少妇一区二区三区| 欧美日韩操逼嗦吊| 久久久无码视频| 欧美在线色图| 1024人妻熟女一区二区三区| 欧美色九九| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 色婷婷影院| 极品销魂美女一区二区| 亚洲欧洲久久天堂| 97久久视频| 日本αv| 91男同| 婷婷久草一区二区三区| 国产又黄又爽又刺激久久久久久| 人人妻人人色一区二区三区| 大香蕉AV丝袜| 真实高潮91| 久久精品店| 日本一二区不卡| 中文字幕超碰CAO| AAA久久| A级片日韩欧美国产欧美视频精选观看 | 经典丝袜一区| 精品大久久| 欧美强奸乱| 精品无码久久久久久久久果冻糖心| 成人在线视频一区| 99这里只有精品| av在线免费一区二区| 91丝袜| 精品9999| 狠综合网| 色第一页| 情色AV电影| 国产懂色精品国产av| 日产操逼| 天堂综合网| 97草草| 欧美久久婷婷| 天美麻豆精品视频99| 亚洲国产高清福利视频| 国产黄色小视频网站| 天天狂操夜夜狂日| 青青草AV色| 久久大陆| 91久久久视| 亚洲 图片 综合91| 开心激情婷婷| 亚洲国产一区二区三区四区国产| 思思热在线cao| 色色毛片| 偷拍精品一区二区三区| 美女网站91| 精品十八在线观看| 亚洲s色图| 98超碰日本| 麻豆精品三区视频| 久久精9| 丝袜天堂| 欧美伦乱爱| 99精品伊人| 69综合网| 91美女在线视频| 69人妻精品丰满熟女区| 久久免费看高潮毛片韩国| 丰满欧美少妇| 美日韩一卡二卡三卡免费人妻精品| 婷婷五月天av| 天综合网| 乱理日韩中文| 91性高| 亚洲视频二区| 91老熟女91老女人| 亚洲天天自拍| 亚洲综合20p| 东京热天堂网| 91网九色蝌蚪操熟女| 久96热在线观看视频| 伊人网青青| 91午夜无码| 操逼视频亚洲| 婷婷综合五月| 老女人日韩美91| 好吊色一区| 一区二区视频你懂的| 日本免费一区二区不卡| 国产精选视频| 精品国模无码| 日韩成人性爱AV| 激情五月天综合网| 精品国产污一区二区三区| 久久 亚洲 日韩 人妻| 骚女高跟AV在线| 亚洲性综合11| av三级电影在线播放| 自拍偷拍国产欧美日韩韩| 精品久久久久久中文| 9999免费精彩视频| 啊啊啊好湿国产一二| 亚洲一区二区 麻豆传媒| 麻豆区久久久久亚| 亚洲一区二区在线观看91| 国产成人精品必看| 亚洲综合激情五月久久| 夜夜嗨av午夜成人| 亚洲 欧美 日韩另类 麻豆| 欧美色图第一页| 欧美黄色大片在线观看| 97久久视频| 欧美A√综合网 | 日韩熟女精一区二区三区不卡| 国产精品白领在线观看 | 丰满精品人妻少妇久久字幕| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 久久久久13| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 丁香五月色| 屌妞视频久久久久久久| 欧美日韩色| 97精品熟女少妇一区| 婷婷五月丁香五月| 嗯~啊~快点 死我视频免费看网站| 日韩一卡二卡三卡| 加勒比在线视频一区二区三区| 91xingse| 国产白丝网站| 人人操人人摸人 | 中文字幕一区电影在线观看| 国产视频一区二区在线| 男人天堂2019| 动漫爆乳3D奶水一区在线观看| 亚州精品丝袜-不卡成人免费| 91白虎| 国语对白在线播放视频| www.AV有限公司一区| 男人的天堂 在线一区| 超碰成人免费| 国产精品另类一区大香蕉| 曰韩精品视频一区二区| 亚洲国产一区二区三区在线| 天堂综合网| 日本欧美国内在线| 亚洲交换| 日韩中文字幕视频在线观看| 久久99精品九九久久久婷婷| 一区操逼| 丝袜av一区二区三区| 日韩精品中文字幕人妻| 欧美三级一级| 午夜精品久久一区二区| 天天透伊人| 97精品久久| 国产欧美日韩女同性恋ww喷水精品| 中国和日本人色哪个不下载能放| 深田咏美亚洲精品福利社| 国产热av| 中国亚洲呦女专区| 国产蜜臀精品一区二区尤物| 99久久网站| 日本一二三免费久久| 久操婷婷| 99re99| 97蜜桃综合| 日韩无码视频黄色| 色娱乐色呦呦夜夜夜夜av| 精品午夜福利国产一区二区在线观看| 超碰538| 亚欧视频在线| 中文字幕精品三级久久久| 国产 v乱码一区二| 男女啊啊啊啊啊| 久久黄黄| ji熟女.com| 超碰在线1234区| 免费AV播放| 老熟女91| 久草草一二三四区久久| 欧美网站免费| 91亚洲欧洲| 久久伊人青青草| 欧美黑人精品一区二区| 人妻娇喘 激情视频| 少妇久久久久久| 三级网色| 91麻豆天美传媒HD| 欧美不卡在线一区二区| 看黑丝美女操逼青青网站| 中文字幕五月婷婷免费| 精品制服美女中文一区二区三区| 玖玖在线视频| 天天视频网站黄| 亚洲女人毛茸茸91| 亚洲欧美大香蕉| 人人摸.人人色| 999久久芭蕾| 精品国产自在在线99| 黄色电影在线播放综合网站| 91模特在线观看| 嗯……啊…嗯嗯…啊…好舒服| 郑州宾馆老熟女露脸啪啪| www欧美91| 欧美少妇性乱| 黄污污污污| 日韩图区 偷拍| 亚洲激情视频| …中文字幕亚洲乱,97人妻无码费视… | 国产在线综合网| 亚洲欧美综合网站| 高清不卡一二三区视频......| 欧美熟女操屄| 欧美综合国产精品久久丁香| 日韩精品人妻中文字幕不卡乱码| 偷拍亚洲高清图片| 亚洲欧美情色| 极品久久久久久久久久久久久久| 久久精品免费| 中文自拍欧美影视| 日本操逼视频不卡直接放| 国产97色在线 | 亚洲| 大香网伊人久久综合网eew| 日韩精品中文字幕人妻| 伊人大香蕉在线| 丁香色五月 97干| 另类欧美色| 精品久久久中文字幕不| 翔田千里Av在线| 久久少妇人妻| 五月婷婷啪啪| 久久精品国产亚洲5555| 天堂亚洲精品| 午夜福利久久久噜久噜久久综合| 五月丁香婷婷啪啪| 在线可观看的黄色网址| 操逼大黄片| 久久久三区二区一区| 97在线青| www.色五月| 看免费一级在线播放毛片| 久久久禁| 嗯嗯嗯好爽| 人人操人人干网页| 校园激情狠狠四射| 狠狠干精品一二三四五六2022| 国产精品一区午夜福利| WWW操逼| 懂色av一区二区三区天美传媒| 99热欧美| 大逼色网站| 久久久久成人网| 亚洲三级网址久久最新| 日本精品人妻少妇一区二区| 天天看天天综合成人网| 国产精品制服丝袜清纯唯美| 亚州性色| 97国产精品视频| 欧美日本视频一区| 亚洲人妻久久久| 亚洲AV免费在线观看| 欧美亚洲性爱一区二区| 成年女人18级毛片毛片免费观看| 青草青草久热| 亚洲不卡三级手机播放| 欧美草草| 美欧老女人97| 欧美一区二区三区黄色影视| 操人妻少妇中文 | 高清孕妇孕交 交孕妇| 又大又长又爽| 九色婷婷| 欧美|91色综合| 国产婷婷一区| 长长久久88视频| 91狠| 亚洲综合色婷婷| 欧美黑人性猛交91| 99RE在线视频精品,这里只有精品| 精品网站99999| 91无摭挡| 久久春色| 国产福利在线视频网站| 九九香蕉网| 日本免费一区二| 亚洲自拍欧美色综合| 第四色亚洲色图| 欧美在线官网| 五月天激情网图片| 性色av婷婷久久一区二区点复制| 一级黄色影片| www超碰| AV电影在线播放| 91丝袜在线观看视频在线观看| 国产小炒后入式| 亚洲美女色图| 91久久堂| 成人欧美日超碰| 久9九综合在线| 久久久久人妻二区精品叶可怜| 中国亚洲呦女专区| 免费一级毛片在线视频观看| 久久久久久久国产视频| 韩日精品四区| 色老汉玖玖爱| 激情四射婷婷四五月天| 中文字暮97| 吊色| 亚洲情色 自拍| 国内一级精品| 欧美黄业| 天天看夜夜看日日干| 日韩性爱小视频在线观看| 欧洲熟妇xxXx欧美老妇裸体| 91色五月俺来也| 亚洲欧美综合图片| 国产亚洲日韩在线三区黑人| 久久精品亚洲婷婷| 三上制服丝AV| 亚洲丝袜综合| 国产激情片在线观看| 亚洲AV免费在线| 熟女丝袜视频| 小电影欧美91| 17c嫩草51久久91嫩草| 人妻精品视频一区二区| 天堂岛av| 天天综合~91| 91人妻素女| 亚洲色资源| 综合欧美色图| www成人啪啪18秘 免费| 欧美色色人| 亚洲天堂男| 日韩国产精品人妻无码久久久| 啊v视频在线观看| 蜜桃精品一区二区三区ww| 超碰98综合网| 国产又黄又爽又刺激久久久久久| 久久天天摸| 五十路三区在线| 99无码| 少妇内射www在线观看视频| 我爱操| 欧亚无码视频| 欧美熟妇乱码在线一区| 东京热大香蕉| 久久久麻豆精品| 校园春色之综合网| 99re99| 欧美少妇性爱网站| 中文高清一区二区的| 国产精品一区二区三区免费视频| 狠狠干狠狠色| 天天网综合| 有码人妻系列| 香蕉黄色一级视频| 蜜臀久久99精品久久久老,,| 97色在线视频| 人人色人人射人人妻| 97色伦97色伦国产欧美| 欧美色天堂网在线视频| 色臀av| 黑人黄片在线免费观看| 亚洲欧美色综合| 日韩大香蕉AV影片| 亚洲男人天堂2019| 麻豆三极片| 天天影视射综合网| 一级性爱网| 涩五月婷婷| 亚洲网站一区二区在线| 91网站18在线| 人人透人人操| 97亚洲国产| 收看日本人日bb| 岛国不卡超碰护士AV在线播放| 无套内射性感少妇视频| 欧美综合 站| 欧美偷拍区| 久久色AV线| 小泽玛利亚一二三| 伊色久人大在线| 九九九久千久久激情蜜桃在线看 | 福利风月五月天影院| 成人一二三区| 亚洲视频,小说| 欧美成年人性爱视频免费观看| 婷婷九月色| 黄片视频观看| 天欧美在线| 伊人黄色视频免费观看| 综合色好色| 韩国久久97| 色综合天天| 加勒比伊人影院| 丁香六月激情| 欧美91丝袜| 一区二区三区黄片免费观看| 东京热伊久| 在线国产一区二区av| 91少妇人妻| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 青女在线| 人妻81p| 国产精品久久久久久久久久久久| 亚洲图片欧美日韩| 三上悠亚在线毛片91| 99re热| 国产精品三级视频网站| 国产又猛又粗又爽又黄| 蜜臀Av一区二区三区| 97色色网| 国产一区二区三区高清视频| 熟女露脸激情自拍视频| 99啪啪视频| 好吊色综合| 超碰视97中文| 五月花婷婷| 测评在线观看AV| 精品小视频在线| 日韩AV一区二区三区四四| 欧美欧美啪啪视频| 日韩性色| 看黑丝美女操逼青青网站| 久久久网站| av毛片aaaaa免费看| 久久青娱乐| 夜夜青青无码影院| 婷婷五月花| 日本伦乱九九九综合| 夜夜高潮夜夜爽夜夜爱爱一区| 九色 人妻 大香蕉| 高清无码一区二区三区| 蜜汁欧美| 久久九九一区二区三区成人| 岛国视频免费在线观看| 尤物网址| 日韩黄片视频试看| 不卡中文字幕aⅴ在线| 国产乱伦亚洲| 亚洲第一视频 欧美风情 日韩| 亚洲精品一区二区免费在线观看| 凹凸视频特色日本特黄| 丝袜熟女一区二区三区| 色成人Www精品永久观看| 北约熟女超碰| 久久啊啊啊| 成人片视频| 校园春色中文字幕AV| 加勒比AV天堂| 福利大香蕉| 国产无遮挡| 国产精品探花视频| av在线一区二区三区| 欧美 色 亚洲| 天天躁狠狠躁av| 波多野结衣一级视频| 蜜桃网熟妇| 蜜臀在线免费观看在线免费观看| 日本操嫩b网| 最新日产中文在线麻豆| 国产高潮AA片免费看| 99久在线精品99re8热| 欧美伊人久久综合网| 人妻丰满熟妇一区二区三| 9久久久久| 夜夜国自区| 撸无码不卡免费视频| 欧洲亚洲天堂精品 | 伊人网青青| 三级特黄60分钟播放| 男人久久天堂| 超碰 欧美| 欧美视频激情久久久久久| 欧美亚洲宗合色性图| 黑人综合色| 色欲av国内精品久久久久久| 日本性交操一区二区不卡系列| 久久久久99999| 天天视频黄| 少妇久久久久久| 久久久久亚洲三级电影| 探花一区在线| 天综合网| 久久九精品| 天天操妹子| 久久精品女同亚洲女同13| 大香蕉欧美国产日韩高潮| 白丝AV网站| 91网站在线播放| 另类专区加勒比| 日韩一卡二卡三卡| 天天谢天天干| 色婷婷视频| 色情综合网| 欧美亚洲20p| 人人澡综合涩| 男插女青青影院| 综合日韩激情另类图片| 中文字幕 一区二区 亚洲无码| 传媒免费一区二区三区| 超碰在线91| 一级aaaaa欧美中文字幕录像片| 国产精品点击进入在线影院| 九九综合久久| 国产最新AV| AV男人天堂网| 亚洲A曰本VA欧美VA视频| 色官网在线| 欧美 传媒 麻豆 日韩 偷拍| 亚洲男人的天堂AV| 99久在线精品99re8蜜桃| 国产免费小视频| 女性91网站| 日本人人操人人操| 欧美老妇女内射网址| 亚洲图片欧美偷拍| 久久久久久九九九九| 日韩无码一区二区三区| 狠狠色噜噜狠狠狠狠狠色综合久久| 色噜噜人妻av 中文字幕| 亚洲清纯综合| 中日韩久久久| 97最新在线播放视频| 欧美色图下一页| 亚洲精品久久久久久| 老熟女综合网| 人妻乱仑一区二区三区| 日韩视频小说在线观看| 国产午夜精品理论片一二三区区 | 九九久久国产精品怡红院| AV天堂国产| 欧美成人性爱视频免费观看 | 国产精品麻豆成人av| 亚 欧 美 综合| 97ai亚洲| 久久久久久99AV无码免费网站| 五月婷在线| 色九九久九九| 亚洲欧洲综合视频在线| 十八禁电影伊人网| 免费国产视频| 超碰成人公开| 美女主播色欲91抠b在线播放| 欧美爱国产综合、| 精品午夜福利导航| 人人操人人操草草| 91大胆欧美| 天天日天天干少妇日| 人人操肉肉| 亚州中文字幕超碰97| 欧美五十路熟| 99无码视频| 国产精品丝袜在线| 欧美日韩激情无码专区| 日本福利社| 黑人干亚洲| 国产成人超碰在线| 在线综合 亚洲 欧美中文字幕 | 佐山爱中文字幕| 乱伦一二三区| 亚洲第一页色| 嫩草91| 日韩欧美午夜一区二区| 中文在线久久字幕| 亚洲在线欧美| 蜜桃久久久久久| 久久久久久久伊人精品| 加勒比伊人综合| 日韩AC| 性91| 神马久久久久久久久久久久| 精品午夜福利| 丁香九月激情啪| 99999re| 亚洲操操| 97操97干| 伊人影院综合是一个与深夜成人在线| 91色碰| 欧美激情中文字幕另类小说| 日韩伦理久 久久 清纯| 午夜超爽| 极品美女嘿咻| 怡红院怡春院| 亚洲色图日韩精品| 伊人麻豆传媒| 99re8免费高清在线| 婷婷婷婷婷婷久久久久| 粉嫩AV一区夜夜嗨| 99久久久久| 免费看片黄| 东京热伊久| 五月婷婷丁香中文字幕| 加勒比人妻综合| 国内精品a| 91日韩网站| 白丝AV网站| **一级毛片国产| 久久午夜鲁丝片| 国产青青综合伊人| 亚洲综合色婷婷| 国产农村妇女毛片精品久久| 性爱1区| a片久久久久久久久久久久 | 日本高清_区二区三区 | 中文字幕jul-617人妻熟女| 国产又粗又大硬免费色网视频| 天无日色综合| 女人天堂av在线播放| 青青草狠狠撸| 日韩丝袜人妻AV| 操操操五月天婷婷丁香影院| 97chaopenrihan| 天天爽天天干| 亚洲欧美高清| 亚洲永久AV无码精品秋霞| 婷婷久久综合久| 黄片www视频免费| 午夜精品久久久99| 视频国产精品未满十八禁止在线观看| 清纯唯美亚洲综合| 国产精品亚洲四五区在线观看| 国产成人自拍视频在线| 中文字幕日韩人妻视频| 男人的天堂无码| 久久久久久久久九九久孕交| 香蕉久久AⅤ...| 天堂v无码免费视频| 欧美BT 亚洲色图| 日韩内射视频| www.久久最新地址| 一个人免费视频观看在线WWW | 操一区| 欧美日韩性爱操大逼| 岛国在线免费视频| www国产无码| 美女啊啊啊啊啊啊| 久久綜合很很很| 最新一二三区视频| 成人八戒网站| 国产精品亚洲高清在线| 一级岛国大片| 大屁股人妻女教师撅着屁股| 69一区二区三区| 青青草好吊色| 欧美高清91| 大香蕉啪啪啪啪在线| 欧美日本久久精品一区 | 夜夜草我| 呦呦影院| 婷婷人妻激情| 精品一久久久| 亚洲国成人情色好看电影| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 亚洲国产精品乱码在线观看| 亚洲宅男天堂| 激情 欧美 亚洲 小说| 综合亚洲网| 国产农村妇女毛片精品久久| 国产美女91视频| 99爱在线视频| 操迟操逼在巾线Fre看| 91欧美经典| 激情啪啪视频| 欧美老妇综合网| 婷婷五月天小说| 久久女人一区二区三区| 日韩性爱再线视频| 插欧洲美女欧美精品| 五月天综合| 在线国产一区二区av|