日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
久操 高清| 少妇高潮九九九九| 岛国视频一二三区| 美女91在线| 一道本东京热加勒比一区二区三区| 伦理第一页| 亚洲人久久久网| 超碰人人乐97| 国产懂色精品国产av| 东京热毛片调教| 91丝袜在线观看视频在线观看| 日韩精品碰碰| 九九九免费视频| 色哟哟av网址| 级品肉射| 骚女高跟AV在线| 暖暖精品二区三区观看| 欧美日韩99| 免费超碰97在线观看| 易易A毛视频| 亚av顶级裸体一区二区三区四区五区 | 亚洲中文国际强奸字幕| 天天射天天操天天干天天吃2018 | 天天激清| 欧美AB在线| 97热视频在线观看| 91天天综合在线观看| 天天摸天天碰天天添青青| 日韩婷婷| 一区二区久久天天干狠狠| 久精品无码av一区二免费国产在线观看| 日韩一区二区精彩视频| 久久久96| 丁香色狠狠色综合久久小说| 欧美资源| 操逼日批| 成人小说视频在线精品欧美| 日韩欧美成人性爱在线| 天天日天天干天天色| 26uuu久久| 久操91视频| 欧美性性性| 青青草玖玖爱| 人妻人久久精品中文字幕| 久久高潮妇女视频| 亚洲中字慕不卡| 天天天肏屄肏屄肏屄欧美欧美| 色综合20p| 啊啊啊啊啊好舒服视频| 热久久无毒不卡| 亚洲国产中文字幕| 欧美爱国产综合、| 97在线观看视频| 任我爽在线视频免费观看| 天天干天天日天天射黄色片| 欧美熟妇人体| 巨爆乳肉感一区二区三区竹菊影视| 思思性爱| 欧美操逼一二三区| 麻豆天美国美国产| 天天日天天舔东京热| 91亚洲欧美色图| 青青草在线视频欧美| 欧美九九99久久精品| 天天淫人人妻日日色| 厕所偷拍在线| 加勒比综合a∨| 欧美色图91p| 941超碰| 综合一区二区影视| 色臀AV| 欧美96精品在线| 狠狠操使劲操| 99热在线播放| 精品视频日日夜夜| 久湿久久 | 激情综合97| 亚洲欧美日韩有码| 玖色av| 亚洲欧美首页| 加勒比在线视频一区二区三区| 中文字幕 国产 精品| 婷婷五月花| 欧色综合| 日本高清视频在线观看黄已三辽| 日本欧美中文字幕| 伊人久操| 久久久久中出| 96精品久久久| 欧美天天干| 九九性视频| AV天堂电影网| 久久9免费视频| 97亚洲在线| 日韩肏逼视频| 五月婷婷色| 97超级色碰碰| 搡老女人老妇女AAA一VU麻豆| 五月天婷婷综合网| 精国久久一区二区三区98| 久久9精品| 国产黄色在线播放观看| 狠狠做深爱婷婷久久二区| 啊啊啊 在线| 婷婷色色五月天福利| 日韩视频啪啪| 天天躁狠狠躁av| 曰韩人妻中文字幕在线| 99re视频在线观看这里只有精品| 屁股久久久久久| 日韩av一级黄片| 欧美一二三区四五区| 大但人体久久久久| 岛国网址国产| 色爱欲亚洲| 久久久三区二区一区| 中文字幕久久婷婷丁香五月天| 日韩欧美亚洲一区二区三区影院| 国产地址二三| 天天爽夜夜爽夜夜爽精| 超碰人妻中文在线| 欧美黄色手机在线观看| 欧美丰满熟妇XXXX性ppX人交| av久日| 日本东京热久久久电影| 久久9亚洲| 熟妇人妻精品一区二区| 色99在线| 啊啊啊网站| 久久麻豆一区二区| 精品91日日夜夜超清资源| 国产精选三级在线观看| 国产2.3.4区| 一级久久久久久久久久久| 先锋音影AV| AAAA欧美日韩| 日本A级视频| 国产亚洲精品A在线观看下载| 91九九九馒头| 97在线精品观看视频| 久久只有精品一区二区三区| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 国产成自自拍在线观看| 国产精品嫩草久久久久| 丰满翘臀美女影院视频| 青青操国产夫妻| 丁香六月天| 亚洲在饯| 人人噜夜夜操| 另类一区| 久久内射| 久久久久一本一区二区青青蜜月| 欧美不卡二区| 人妻精品一区二区| 躁躁日曰躁2020| 国产一区二区a毛片| 韩国国产欧美情侣视频在线| 欧美日韩国产中文精品字幕自在自线| 台湾佬中文娱乐网久久久久久久久久com | 狠狠综合| 久久性爱精品一区| 欧美在线亚洲| 亚洲人妻熟妇三十三区| 国产精品秘 福利姬在线观看| 久久香蕉国产线看观看亚洲女人 | 色婷婷婷五月天激情四射| 乱伦色图网址是多少| 欧美黄色手机在线观看| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 日本一本道A级黄色毛片试看60分钟| 在线观看午夜婷婷久久久久清性观看| 激情AV| 色欧美综合| 自拍视频大全亚洲专媒视频/一区二区三区| 亚洲三区视频| 性91| 男人的天堂日韩| 五月婷婷激情网| 可以免费看黄片的视频| 成人性交午夜免费片| 欧美狠狠操| 日本高清_区二区三区| 加勒比aⅴ| 国产熟女二区| 91色综合激情| 五月天开心网| 两女互慰AV高潮喷水在线观看| 国产乱不卡| 亚洲影院小综合| 玖玖婷婷五月天| 69一区二区三区| 91jk色拍| 国产亚洲 中文欧美久久| 日逼视频日本| 综合激情二| 五月天亚洲色图| 蜜桃臀一区二区aV| 欧美日韩婷婷中文| 抽查国产福利主播| 四虎永久在线精品免费网址| 亚洲第一综合| 91xingse| 超碰av人人人| 99热精品在线| 日本久久网| 欧美亚洲色图另类国产| 在线观看不卡一区二区三区| 精品人妻av区天天看片| 91精品国产91熟女| 99草精| 久久妇| 国产不卡精品91| 久久久久久久久久8888| 高清在线偷拍自拍视频| 99日韩| 人人天天干干| 人妻少妇久久久| 丁香六月婷婷综合| 中文高清一区二区的| 3p国产色噜噜一区| 丰满的三级少妇欧美久久久| www.丁香五月| 啊啊啊啊啊啊啊国| 西西美女视频网| 97玖玖超碰| 1000午夜黄色| 91性高| 人妻欧美| 欧美综合91| 亚洲欧洲激情卡通另类文学四射小说网站| 国产97av| 午夜爽爽爽| 91精品国产一区三一| 九九精品网| 97操b| 久久永久无码人妻视频| 天天日天天干天天色| 白丝被操91| 波多野结衣AV无码一区| 亚洲 国产 精品一区| 国产一区二区精品久久99| 7777奇米影视久久| 天天色综亚洲91污| 人妻久久久久久| 男人的天堂亚洲| 亚洲人成色9999精品久久 | 国语国产操逼伊人AV网| 99久久婷婷国产综合| 国产欧美一区激情交| 成人三级片无码| 99在线精品观看99| 日日天天久久啊啊aaa| 午夜精品久久久久| 亚洲精品蜜桃久久久| 欧美性高潮在线| 91精品无码久久久久久久| 人人干黄色| 91干熟女| 日本久久综合| 夜夜欢天天干| 国产欧美岛国精品一区| 嗯嗯啊中文字幕| 麻豆一区在线| 热热色中文无码| 中文字幕,人妻,日韩| 中文字幕性感少妇av| 夜夜爽爽爽| 日本东京热大香蕉a片| 久久精品操| a男人的天堂久久一级A毛片| 色综合色色| 99精品网站| 超碰色美女| 亚洲性爱乱操x| 国产精品丝袜久久亚洲不卡| 肥佬影院91| 一级性爱啪啪视频| 热久久精品| 欧美日韩亚洲电影| 日韩操p| 婷婷中文字幕| 日本不卡免费二区| 很黄很色的视频在线观看| 亚洲囯产精品女人久久久| 精品国产乱码久久久久久久久1| 亚州男人的天堂| 97色碰| 久久久久婷婷| 少妇熟女视频一区二区三区| 福利操逼| 中文幕97| 91视频伊人| 亚洲天堂,男人| 亚洲乱熟女一区二区| 秋霞网—男女啪啪亚洲免费体验区| www.色婷婷色综合| 亚洲色棕合| 久久黄色视频一区二区三区| 99热 按摩 日韩| 三上悠亚在线毛片91| 91日本在线观看| 色九九综合AV| 啪一啪免费视频| 操逼内射干逼白丝91| 97天堂| 色色色综合网| 蜜臀久久99精品久久久久久婷婷| 色婷婷影视| 操少妞在线视频| 亚洲导航深夜福利| 亚洲国产青青| 日韩人妻一区二区精品| 99re视频这里只有精品| 精品超碰中文在线| AV女优男人的天堂| 亚洲无套久久嗯嗯| 国产女大学生AV| 女人高潮抽搐喷水视频网站| 91 偷| 99久久网站| 国产嫩草精品A88AV| 亚码激情| 无码区蜜乳| 制服诱惑亚洲一区二区三区在线观看| 亚洲成人久久一区二区| 91大香蕉伊人| 密臀在线免费观看| 日本免费一级AAA大片器 | 91劲爆| 色婷婷久久| 国产精品视频在线观看| 中文字幕55555| 国产一区二区三区久久久精品| 丝袜av一区二区三区| 视频国产精品未满十八禁止在线观看| 久久啊啊啊视频| 免费看欧美美女黄色大片| 久草看看看| 一区久久久二区| 偷窥自拍亚洲色图| 在线岛国新天堂8| 欧美色图 人妻| 亚洲蜜桃V妇女| 99热精品在线观看| 欧美少妇一区二区三区| 久操大香蕉| 久久草草亚洲蜜桃臀| 日韩成人人妻网站| 亚洲宗合电影| 成功精品影院| 小视频国产| 超碰久超碰久| 大香蕉欧美国产日韩高潮| 无套内射性感少妇视频| 亚洲国产成人精品久久久国产成人一区二区 | 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴| 国产高清亚洲日韩一区| 久草电影网| 超碰97在线 欧美 国产| 久久久久9999| 免费的很黄很污的全部视频| 国产精品九九九| 久久久久久久久久精| 日韩啪啪啪啪啪| AV污污污污| 精品高潮| 久久久久女教师免费一区| 久久成年精品| 精品.99999| 五月婷婷性爱| 天堂种子在线www网资源| 亚洲人妻中文在线视频| 久久啊啊| 在线啊啊啊| 九一综合网| 亚洲精品欧美专业| 东京热亚洲一区二区| 久久久久国产精品喷潮免费观看臀| 激情小说在线视频| 精人妻一区二区三区| 性爱AV天堂| 91亚洲不卡一区| 熟女乱伦二区| 色综合色欲色综合色综合色综合| 亚洲国产ⅴ高清在线观看| 天天久久久久久| 91欧美另类| 9 7超碰在线免费观看| 精品久久青青草| 99热啪啪| 国产精品色色| 这里只有精品视频| www.夜夜| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 另类小色呦| 久久精品 六十路 熟女 欧美| 射久久| 成人久久久| 欧美日韩1234| 玖玖视频在线资源一区二区三区| 3p国产欧美99热| 久久香蕉国产线看观看猫咪av| 国产中文精品一区二区在线观看| 95自拍视频在线观看| 天天操天天射天天日| 亚洲一区二区三区播放在线| 精品久久久高清无码| 黄色在线网站| AV综合中文字幕干| 日韩三级一区 | 亚洲国产一区二区三区四区国产| 四色永久成人网站| 亚州情色j区| 久久9精品视频| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 人妻少妇精品| 超碰在线人妻中文字幕| 亚洲一级性爱视频免费看| 涩涩这里只有精品视频| 精品伊人久久久大香线蕉小说| 日韩丝袜二区| 五月婷色| 欧美熟女激情| 久艹99| 日本天天干天天操一区| 日本αv| 欧美黄片欧美黄片xxx| 97久久久| 99九九久久| 无码九九| 91人妻人人澡人人爽人人精品| 蜜乳AV.COM| 日本护士高潮| 国产大片精久久久久久| 国产精品久久久午夜夜伦鲁鲁| 欧美性夜| 久久精品国产亚洲AV高级北京| 欧美一级A片在线看视频性色| 婷婷久草一区二区三区| 天天舔天天日天天射| 亚洲玖玖爱| 天天看精品动漫视频一区| 大香网站| 亚洲欧美九九九| 91久久久久| 无码137片内射在线影院| 精品久久久高清无码| 97天堂| 欧美91精彩| 精品日韩| 国产精品亚洲免费| 欧美亚洲日韩16色| 成人五月天丁香激情综合| 欧美日本国产日韩激情视频| 国产suv精品一区二区四| AV色五月| 亚洲国产成人福利在线观看| 欧美精品四区| 岛国天天午夜影院传媒网| 91AV入口| 青青草原狼av| 好爽视频在线观看视频 | 欧美91丝袜| 亚洲熟女一区二区| 婷婷激情五月天小说网| 日本999精品视频| 日夜伊人网| 大香蕉免费乱伦视频| 97久久久久| 精品视频免费在线一区| 性色中出| 亚洲熟女乱色一区二区三区| 性欧美另类高清| 97在线免费视频观看| 在线中文字幕极品av| 久久日本熟女精品一区| 欧州一区二区三区四区| 夜夜操天天肏| 最新av网站在线观看| 97操97色| 视频一区二区免费在线| 韩国一区二区精品亚洲| 精品九九九九九| 色噜噜综合在线| 亚洲色电影在线| 91超级碰碰碰| 国产人妻精品一区二区三区秋霞| 国产精品久久99日日| 91 亚洲情侣偷拍 久久| 韩国午夜理伦三级好看| 久久久精品中文字幕麻豆| 久久五十路熟女人妻| 熟女高潮合集-永久久久-成人AV| 91精品久久久久五月天精品| 亚洲综合九| 97人人操人人摸人人爱| 9九九国产| 妺妺跟我一起洗澡没忍住| 骚鸭AV| AV大香蕉| av亚欧| 九九九九九九九九九五码| 黄色电影观看久久9| 欧洲亚洲综合| 99九九久久| 亚州男人天堂| 人人妻人人色| 国产精品久久久久久久久AV大片| 91精产一区二区三区| 欧亚乱色熟女一区二区| 欧美日韩制服| 丝袜狠狠草尤物人妻av91| 人人摸.人人色| 中文熟女五十乱码在线| 亚洲nv男人的天堂网| 日本孕妇一区二区视频操逼免费看 | 国产免费内射视频| 久草视频制服诱惑| 搡老人老9丨女老熟人| 深夜激情| 欧美成人色| 亚洲最大无码中文字幕网站| 亚洲在线a| 999综合色| 99久久九九| 999精品国产高清一区二区| 欧美色图中文字幕| 国产 v乱码一区二| 夜草网站| 国内一级精品| 久久九精品| 亚洲色图久久成人| 日韩激情啪啪| 亚洲欧美小说| 亚洲天堂日本| 中文字幕在线观看AV| 五月丁香拍拍激情综合三级| 亚洲丝袜在线观看| 日本超碰97日韩精品人妻| 午夜天堂啪啪| 欧美亚洲影视| 婷婷色婷婷| 久久永久无码人妻视频| 91久久婷婷| 99国内熟女露脸视频| 99热这里只有精| 女人高潮抽搐喷水视频网站| 欧美精品日韩久久久九| a亚洲欧美色欲| 60秒不遮不挡| 人妻激情视频| 941超碰| 精品小视频在线| 校园春色之综合网| 色五月首页| 日韩欧美亚洲一区二区三区影院| 麻豆视频国产一区二区| 97香蕉网| 亚洲色欧美| 91色夜| 天堂av最新电影网| 嫩草黄页| 啊啊啊啊在线播放| 嫩草 我啊~嗯~在线| 日本A级视频| 亚洲精品一二三四区| 精品少妇一区二区三区免费观看| 啪啪资源网| 日本黄色大片一级视频免费麻豆| 久久丁香久草综合网| 亚洲天天在线| 91熟女视频| 97久久精品| 国产一区二区二区按摩精品啪视频| 蜜臀Av一区二区三区| 少妇熟女视频一区二区三区| 精品久久久久成人码免| 天天天天天超碰| 久久久久78| 91老熟女老女人国产老太| 欧美一二在线| jiujiujiujingpin| 9999久久久久| 美女黄色91| 亚欧美综合网| 国产精品人妻免费精品| 一二三区精品视频| 日本不卡二区| 中国一级特黄大片护士| 国产极品美女高潮无套在线观看| 欧美系列在线一区二区| 六月天婷婷| 色色五月婷| 久久日韩毛| 97超级欧美| 91九色丰满高潮| 98超碰欧美| 东京热男人的天堂| 中文字幕五月婷婷免费| 蜜桃av综合网发布| 老鸭窝亚洲毛片| 日本999精品| 人妻丰满熟妇av无码区蜜桃| 欧美色狠| 国产区91柔拿会所技师| 色色亚洲| 日韩三级在线观看mp4| 蜜桃臀久久| 天天综合网在线观看| 国产一区二区免费福利片| 日本成人电影资源网| 国产网红精品| 五月天激情小说| 97爱爱影院| 欧美精品不卡一二三四在线91| 97亚洲中文| 一本精品日本在线视频精品 | 亚洲一二三| 天天干人人乐| 岛国网址国产 | 久久9999| 操b在线观看| 第一高清av中文字幕| 亚洲 日本 一 二 三| 污污污8888| 欧美色网络| 自拍视频一区在线观看| 欧美色偷拍 | 色香色欲天天综合网天天来吧| 欧洲天天在线| 男人天堂毛片| 国模不卡| 欧美美女在线高潮999| 国产日本顶级一区二区三区| 三级AV入口| 性色一线| 国产AV线| 久草国产在线视频| 免费看污网站| 亚洲小说视频| 国产超碰| 97免费视频在线观看视频| 黄色成人网久久久久久| 亚洲欧美激情另类色图| 欧美色97| 熟女人妻一区二区三区| 日韩视频小说在线观看| 国产极品粉嫩馒头一线天av| 97干日韩| 青青在线视频日韩欧美| 91黑丝在线播放| 美女爽到高潮91| 欧美 亚洲 偷拍自拍| silk lablo在线观看一区二区| 91肉片| 天天欧美色| 五十路熟女人妻一区二区在线观看 | 婷婷五月在线视频| 91久久国产精品| 熟女人妇一区二区三区| 超碰97在线中文| 欧美人与性动交a美精品| 久久 亚洲 日韩 人妻| V A在线| 人妻精品4K4K4K4K4| 国产色产精品在线观看| 九九精品美女高溯喷水| 九九九久久久| 黄色二级片网站| 尤物视频视频官网| 欧美少妇一区二区三区| 干超碰碰熟女| 亚洲欧美一区二区网址| 日本一线产区和二线产区伦理片| 强奸乱伦大香蕉| 东京热熟女亚洲视频网站| 欧美aaaaaaa| 欧美性少妇| av中文字幕在线熟女| 日韩中文字幕视频| 亚洲综合性网址| 综合久久六月久久婷婷| 久久久无码精品人妻二区 | 亚州中文字幕超碰97| 啪啪免费| 亚洲无码电影久久久| 欧美婷婷久久| 屌逼传媒| 久久社区一区二区三区| 91美女网站| 啊啊啊啊啊啊啊网址在线观看| 99精品成人免费看| 强奸乱伦 亚洲一区| 老鸭窝日丰县女人| 18精品一区| 亚洲欧美大| 精品国产一级久久| 97资源视频| 日韩免费福利在线观看| 欧美日韩亚洲天堂| 色区97| 东北操逼| 99re在线视频国产| 中国黑人三级片网站上区| 色婷婷丁香五月| 18禁超污无遮挡无码免费网| 午夜精品久久久久久久久久蜜桃| 亚洲第一视频 欧美风情 日韩| 无码久| 欧美日本天堂| 欧美色图私拍91| 爱爱动态120秒| 乱老女人一区二区视频| 综合自拍| 五月天婷婷色| 禁止观看美女黄| 国产视频一区二区在线| 久久综合女优| 超碰色美女| 久久精品店| 国产又粗又大硬免费色网视频| 国产日韩区| 精品一区二区综合熟妇| 99无码视频| 秋霞久久亚洲精品成人| 久久久久国产无av| 成人久久精品| 一起草三级AV电影在线观看| 强免费黄色网址| 91美女在线视频| 大香蕉青青9| 日韩99999| 亚洲婷婷丁香在线| 无码免费在线观看黄色片| 美日韩男女操屄视频| 青青草中文-久久青草精品一区二区三 | 婷婷五月成人| 日日黄色三级网站| 麻豆91熟妇人妻中文字幕茄子| 国产真乱mangent| 大香网伊人久久综合| 青青色综合| 亚洲人妻久久| 99久在线精品99re8热| 日韩钢筋无码高清啾啾啾| 九色 蝌蚪 熟女自| 眼镜人妻101.com| 超碰久久中文| 91热色| 熟女字幕| 97爱b| av毛片aaaaa免费看| 五月天婷婷欧美三区| 国产2.3.4区| 日韩欧美tv一区二区在线观看| 97精品国产97久久久| 一本久道久久综合狠狠爱一密臀精| 人人操人人插人人摸人人干| 麻豆福利视频导航| 2021国产成人精品久久| 富二代亚洲精品99| 老司机香蕉| 亚洲精品一区中文字幕乱码| 日韩天天本| 午夜爽爽爽在线观看永久入口姬片| 台欧久久精品视频| 强奸抽插av| 熟女在线视频| 久久亚洲欧美中文字幕国语| 久久久久久久国产| 亚洲无码成人精品| 黄色二级片网站| 人妻丰满熟妇一区二区三| 久久只有精品一区二区三区| 久草视频观看视频在线| 91AV天美在线视频| 日本精品成人无码| 亚洲一区中文字幕| 人人透人人操| 亚洲天堂男人天堂网| 国产久久一区二区午夜| 大香久久| 亚欧洲一区二区视频| 中文字幕 码精品视频网站| 亚洲精品久久久久久| 久久大香蕉手机高清视频| 爱射综合| 色9999日韩国产| 国产东北女人在线视频| 中文字幕天堂在线| 久久久涩| 宗合情欲网| 人人操av| 国产高潮AA片免费看| 精品人妻一区二区免费看| 操91| 婷婷五月在线视频| 日韩亚洲中文字幕在线| 成人免费看吃奶视频网站| 偷拍亚洲| 97se亚洲综合自| 91 国产丝袜在线播放-百度| 97资源超碰| 五月天色五月| 免费一级视频特黄色大片| 熟女五十路一区二区三| 国产精品免费久久久久久久久久| 久久中久文96| 九九九久| 色99久草| 91精品婷婷国产综合久久| 一本一道人妻久久一区二区三区 | 人妻精品视频一区二区三区| 久热精品在线| 欧美激情 亚洲色图| 最新9久久久9免费视频| 色呦呦、国产精品| oumeisetu综合| 2025亚洲男人天堂| 丰满搜索结果 -第18页- 久久高清无码 | 精品欧美А∨无码黑人大荫蒂| 亚洲欧美综合| 三男一女不戴套的A片| 中文字幕97| av网站免费线看| av网站在线观看了| 亚洲AV成人无码久久精品播放| 亚洲 无码 偷拍| 日本1区2区不卡视频| 嫩草影院在线观看精品| 91动漫操逼视频| 色情五月丁香| 日韩午夜精品一区二区三区电影| 天天精品| 搡老女人老妇女老妇老熟女怎么读| 国产成人资源| 精品一二三区四视频| 国产黑白丝在线| 国产久久天堂资源| 亚洲精品xxx| 欧美性爱在线无码| 九九夜精品九九在线| 麻豆天天躁天天揉揉AV| av网站在线观看了| 亚洲成人一二三区| 久久久久婷婷精品av电影| 97在线免费看视频| 国产女人和拘做爰视频 | 97舔舔| 黑人与人妻| 97碰| 五月丁香网站| 天操天操夜操夜月操月年年操操| 亚洲av性爱电影| av九九| 久久激情视频| 亚洲第一黄色av网站| 久久精品免费| 国产后入式在线观看| 国产熟女完整版中字| 欧美性后入| 男啪女色黄无遮挡免费观看| 99热这里只有精| 色天天野狼综合社区| 精品一区二区成人| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 9l视频自拍9l九色成人| 日本久久999| PMv在线观看| 青青草日韩无码| 伊人久久亚洲色欲综合网站 | 日本成人在线不卡一区二区三区| 婷婷丁香五月激情啪啪| 国产成人啪一区二区| 老熟妇一区二区三区…| 国产青视频| 内射老妇BBWX0C0CK| 美国久久一二三四| 国模私拍一区二区三区神乳| 91网站视频在线观看| 免费看黄片现成| 亚洲视频二区 | 超踫中文字幕| 欧美精品成人一区二区在线观看| 午夜天堂精品久久| 高跟丝袜AV专区国产| 中文不卡视频| 国产精品久久久777| 丁香色五月 97干| 欧美AAAA黄片| 欧美92| 久久久久9久久久久| 在线人人人人人人精品超 | 超碰天天去日穴| 色哟哟-国产专区| 日日爽夜夜爽| 日韩国产成人自拍视频| AV中亚| 龙兴卡官方查询| 91九色丨国产丨爆乳| 日韩成人综合网| 尤物一级在线免费观看| 97手机日韩| 麻豆天天躁天天揉揉AV| 国产精品在线一区二区| 亚州色站 日韩电影| 啪啪综合网| 人妻精品视频一区二区| 国产精品国产自产高清AV| 伊人 俄罗斯 a v| 亚洲精品国产av天美传媒| 精品.99999| 1区2区3区在线视频| 清柠毛片| 荡小穴在线观看| 97色插| 欧美嗯啊……在线观看视频免费| 911粉嫩人妻| 蜜桃无码AV一区二区| 囯产乱伦一区二区三女| 九九探花视频在线观看| 免费中文在线| 色色色五月婷婷| 亚洲成人av色网| 亚洲欧洲美腿丝袜| 日韩精品熟妇| 欧美青青视频| 色综合1991| 777超碰| 伊人热综合| 人人干黄色| 精品国产肉丝袜在线拍国语| 99在线观看| 熟女AV一区| 99婷婷| 91 丝袜在线播放| 超碰在线日韩一区| 校园春色AV天堂| 2023天天操夜夜操| 欧美国产伊人久久久久| 高清在线偷拍自拍视频| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 久久9久| 日韩亚洲中文有码视频| 欧美视频在线视频免费va| 小草精彩毛片| 本道在线| 国产成人 综合亚洲 天堂| 怡红院一区二区熟女人妻| 在线黄页看毛片| 亚av顶级裸体一区二区三区四区五区| 国产久9| 中文字幕精品日韩中文字幕| 九九热精品| 男人的天堂.com| 国产一区二区精品久久久不卡蜜臀| 韩美日操逼| 素人播放一区| 91N综合网| 亚洲免费成人在线高清无码视频| 狠狠干综合| 2003天天干夜夜操| 操逼免费视频无码国产| 91人妻超碰| 久久久久久久97| 爱我干综合| 青青草国产一区二区三区| 成人a大片在线观看| 夜夜一区二区| 欧美中日韩XXXX| 色色色欧美| 亚洲 综合 第一页| 人妻少妇被猛烈进入中| 日本久久综合| 国产强奸乱伦xd| 97国产亚洲中文在线| 久久精品午夜国产亚洲AV无码| 国产久久一区二区三区野外在线| 91视频精品| 破处bbq| 91国产精品在线看| 免费精品无码一级毛片牛牛影视| 偷拍亚洲高清图片| 国产高清成人mv在线观看| 日韩欧美三级| 麻豆AV一区二区| 成人午夜小视频手机在线看| 色97干| 中文字幕 码 自拍 视频 区| 2019天天干| 东京热熟女亚洲视频网站| 亚洲综合精品国产一区| 高精欧美色| 99精品网站| 久9热| 欧美亚洲国产91在线| 久久女女| 91chinese在线| yiqicaoav| 99热欧美| 亚洲无限观看| 久久精品老司| 色五月婷婷五月天| 成人aⅴ一区二区三区| 国产自制av蜜乳| 青青草在线视频播放器| 欧美激情久久久久| 欧亚第一综合网| 天综合网| 丁香五月激情五月| 久久婷婷六月综合| 国产精品宅男免费| 欧美黄片免费在线观看视频| 五月丁香六月综合缴清无码| 2017天天插| 久久国产精品m码| 人人妻人人澡人人爽人人精品浪潮| 丝袜狠狠草尤物 91| 日本女人久久久| 天天干天天燥| 精精夜夜| 91青青| 夜夜操美女| 色色五月丁香| 亚洲少妇激情视频| 五月丁香激情四射| 99热只有这里有精品| 亚洲射综合网| 亚洲玖玖爱| 午夜精品久久99蜜桃的功能章节| 97人人夜| JuliaAnn丝袜熟女系列| 国产97色在线| 火箭成精品视频884必出精品| 啊啊啊网站| 免费看黄视频亚洲网站| 伊人久久婷婷| 国产精品熟女九九九| rion磁力链接| 亚洲午夜福利在线影院| 五月丁香色综合| 一道本东京热加勒比一区二区三区| 成人在线午夜视频一区| 97爱啪| 91青青在线| 欧美性爱第一页久久| 婷婷影院入口| 免费人人搞97| 夜夜 中文视频rt| 亚洲人在线成线成人| 久久久久国产精品久久久| 成人十八禁日韩欧美一二三| 99国产精品在线观看| 日本免费中文一区二区三区四区| 探花一区二区三| 操逼操操操91| 欧美少妇第一页| 日韩综合97p| 美国一区二区三区视频| 男人的天堂2018东京热啪啪啪| 色哟哟1区2区| 一区二区三区国产在线播放| 51一区二区三区| 98精品国产乱码久久久久久| 欧美啪啪色吧在线| AV电影在线播放| 青操影院| 强奸乱伦动态污图免费| 男生女生啊啊啊啊| 成人久久久| 久久久精品国产亚洲伊人| 97视频在线免费| av午夜影院在线播放| 精品一二三区四视频| 国产精品麻豆视频网站| 久草色悠悠在线视频| 国内毛片热久久思思热| 日韩人妻大香蕉| 屁股久久久久久| 亚洲有码 欧美精品| 久9无限国产| 小草精彩毛片| 一级片视频啪啪| 97干天天| 3p国产色噜噜一区| 天天久久久久久| 久久五月份| 人人贴人人摸| 亚洲高清男人天堂| 亚洲高清在线| 国产精品成人AV片免费看网站| 久久9亚洲| 黄片视频,下载| 欧美在线亚洲| 肥臀熟女福利视频一区二区| 欧美A片中文字幕| 亚洲欧美视| 亚洲免费精品一区| 日韩在线观看字幕精品| 欧美se综合| 东北女人操比视频| 婷婷99| 欧美性生活男人的天堂| 色网1| 国产性感在线观看| 九九色婷婷| 成人性爱av| 激情小说亚洲| 天天色踪合| 欧美日日夜夜| 国产久久久久久久久一区二区 | 夜夜高潮夜夜爽| 欧亚免费视频| 精品日韩中文在线| 超碰97精品| 91九色丰满高潮| 青娱乐大香蕉| yirendaxiangjiashipin| 精品国产一级久久| 91精品久久久久五月天精品| 凹凸精品熟女在线观看| 怡红院亚洲怡春院av| 亚熟hd视频在线| 亚洲天堂第一页| 日韩精品三区四区| 婷婷五月天av| 女优免费一区二区永久| 精品伊人久久久大香线蕉小说| AV在线性爱| 中国少妇XXXX做受| 看免费的黄片| 欧美性爱无码一区二区三区| 亚洲国产成人精品999| a片自拍直播视频| 亚洲无码偷拍| 天天色黄色影院天天操| 91精品亚洲内射孕妇| 亚洲天堂AV在线播放| 色色香蕉| 狠狠色综合网| 99国内精品| 欧美色图私拍91| 欧美久久久| 67914在线兔费成人视频| 一区二区视频在看| 天天澡天天爽日日AV| 熟妇xxxxx性春色| 国产偷拍自拍在线视频| 国产成人精品日本亚洲语言 | 日本久久久精品电影| 欧美色图20P| 国产成人亚洲精品无码最新在线| 国产综合在线视频网站| 性色av蜜臀av色欲aV| 亚洲宅男天堂| 91麻豆天美传媒HD| 久久久久久人体| 亚洲欧洲无码bt精品合集| 日韩操逼HD| 日日摸日日弄日日拍|