久久亚洲成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
返回資訊列表
国产精品成人久久一区二区三区| 欧美性夜| 欧美精品久久96人妻无码| 日本欧美一区二区三区视频麻豆| 男人的天堂2019AV| juliaann欧美丝袜办公室| 免费公开人人操| 日本免费一区二| 亚洲 日本 不卡| 亚洲 自拍偷拍 欧美| 欧美熟爽综合| KK色在线影院| 国产精品一区二区三区免费视频| 狠狠色婷婷| 天天插天天操天天摸天天射天天看| 久夜视频| 日本精品一区二区中文字幕| 超碰97人人乐| 精品日韩人妻精品一二三区| 精品大全99999| 综合国产97| 男人网站婷婷| 日韩美女操b| 国产精品人妻熟女aⅴ| 色婷婷综合久久久久中文一区二区 | 日本 欧美 亚中文字幕| 狠狠爱夜夜干| 黄色av网站在线播放| 91人妻丝袜无码| 久久日本熟妇熟色一区| 电影69乱码96| 嫩呦国产一区二区三区AV| 亚州伊人色综台| 91青青| 日韩久久激情精品| 好一吊区二区| 夜夜操2028| 尹人免费观看视频在线| 日本999精品| 八戒无码国产午夜福利| 一直超碰| 日本不卡二区| 欧美五区| 秋霞无码av鲁丝片一区| 久久精品成人| 亚洲天堂区| 超碰诱惑| 亚洲精品久久一区二区三区蜜桃臀| 日韩无码a片| ...日韩成人一区二区三区字幕| 午夜电影在线观看无码专区| 91激情国产| 丁香五月激情婷婷| 天天视频网站黄| 久久一区二区加油站| 欧美日本国产日韩激情视频| 少妇精品久久久八区九区| 久久久中文| 伊人网免费视频| 欧美白嫩在线放| 伊人久久综合精品欧美| 综合网 欧美| 色欲色香天天天综合网www-亚洲综合国| 国产精品色片一区二区| 91精品导航| 自拍大香蕉乱插| 久久老女人| 中 文字幕一区二区三四 五 区日 日 骚 | 看黑人AV不卡| 99r九九| 欧美黄色片在线播放| 特色a在线上| 在线观看视频91| 狠狠综合网| 亚洲无无码αⅴ每日更新| 人乳av| 97视频播放| 三级片大波波| 狂操嫩妻视频一区二区三区| 色嗨嗨在线| 水多多映视AV| 欧美日韩狠狠爱| 乱老熟女一区二区三区| 国产性刺激| 亚洲五月天激情| 日亚韩精品视频二区三| 无码人妻精品一区二区中文| 日本国产欧美一区三区二区 | 欧美天天谢综合网| 四虎影视在线| 青青草视频这里只有精品| 啪一啪免费视频| 日日噜噜夜夜狠狠视频无| 91美女在线观看| 天天射天天色成人| 国语精品av| 亚洲综合中文字幕有码| 97久久超碰日韩精品| 老子午夜伦不卡影院| 99热在线播放| 久操精品网| 性色国产东北露脸精品视频| 91电影色诱| 91女网站| 日本裸体久久色噜噜| 色情成人五月天| 丁香五月综合| 久7色| 亚洲中文字幕精品久久久久久直播| 中文人妻av高清一区| 97久久网| 日本欧美韩国国产在线| 免费久久一级毛片大黄| AV一起草在线| 欧美精品日韩久久久九| 欧美日韩精品一区二区三区高清| 亚洲色图殴美色图激情乱伦| 日本福利社| 久久五月婷| 色九九综合| 色色色热| 久久国产精品91| 青青草日本无码| 亚洲一区二区三区麻豆传媒| 免费久久9999| 一本久久精品中文字| 久久久久无码一妻区| 久久超碰98| 久久骚| 青青草影视蜜久久| 日本媚薬中文字幕在线| 操国产逼| 婷婷五月激情综合| 欧美黄色图片| 国内精品久9| 亚洲 欧美综合| 呦呦一区| 国产亚洲色停停久久99精品91| 精品欧美不卡在线播放| 99热啪啪| 国产污视频麻豆传媒一区二区| 97天天弄| 97超级久久| 吻戏激情性巴克| 75大香蕉| 欧美亚州综合网图片| 亚洲天堂男人天堂网| 日本在线观看网址| 中文字幕亚洲热播人妻| 国产性感骚丝袜在线| 国产美女口爆吞精| 日韩九九九| 国产高清视频无码在线| 亚洲成人久久美女| n1038 一二三区| 中文字幕二区| 日韩偷拍一区二区三区| 一块操欧美| 日韩一级二级在线| 亚洲欧美变态| 日韩无码a片| 九九色热| 啊啊啊啊啊啊啊啊啊在线观看| 亚洲深夜福利| 伊人五月天| 97大色网| 熟女人妻一区二区三区| 天天爽天天爽| 色欧美在线| 操逼日批| 超碰79人人乐| 一二区在线观看视频| 性天堂| 强奸乱伦资源| 久久亚洲日韩国产欧| 另类图片欧美激情综合| 日韩精品99999| 中国熟女91| 国产精品蜜臀久久久久无码AV| 9999久久久久| 96超碰网| 伊人色综合网电影| 综合亚洲欧美| 91丨国产丨白浆| 男生通女生屁股| 青娱乐国产精品| 97一区二区蜜臀| 伊人加勒比| 色五月首页| 久久久精品一区二区| 中文字幕精品一区欧美| 宗合情欲网| 1769成人国产精品视频| 一道本东京热加勒比一区二区三区| 99在线精品观看视频中文| 日韩欧美aⅴ综合网站发布| 精品人人| 久久国产逼| 激情图片伦理国产一区二区日韩| 亚洲不卡三级手机播放| 日韩三级一区| 亚洲熟女人妻中文字幕一区二区| 91精品91久久久中77777| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 美美91成人国产精品欧美精品久久久久久久| 亚洲丝袜在线观看| 欧美超碰9798| 超碰午夜| 日韩中文字幕av在线播放| 精品日韩人妻精品一二三区| 丰满精品人妻少妇久久字幕| 国产精品原创巨作?v网站| 亚洲精品一二三四区| 无码久久亚洲高清,| 九一亚洲国产免费| 久综合国内精品自在自线| 欧美se亚洲| 伊人久久大香线蕉无码| 碰人碰碰人人开房人肉| 国产人妻天天干精品| 久久精品91| AV污污污污| 97国产中文| 亚洲五月婷婷| 精品无码秘 人妻一区二区| 91狠狠综合久久久久久| 成人八戒网站| 久久久不卡| 啊啊啊com| 亚洲成人精品在线一区| Aa东京男人的天堂| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 日本2020一区二区| 嗯啊啊啊轻点视频 | 人人妻天天做天天爽| 在线国产探花| 最新无码国产| 久久久久无码一妻区| 国产超碰| 男女性感激情网站| 国产又黄又爽| 玖玖草久草99蜜月一区二区三区| 亚洲色图超碰在线| 日韩av不卡在线看| 91日韩国产欧美亚洲另类精盘州至城都| 麻豆天美国美国产| 欧美日韩国产三级黄色| 男女日B国产| 日本熟妇自慰性高潮一区二区三区| 9久久精品| 思思热在线视频免费| 天天天操天天天爱| 天天日天天射天天干| 国产精品无码在线| 成年人网站在线免费观看| 久久九操在线观看| Av色五月| 丰满人妻一区二区三区免费,| 日韩99精品视频综合区| 久久人妻熟女一区二区| 大屁股国产在线视频| 91亚洲黑人| 久久久久九九九| 视频国产成人精品日本亚洲18 | 91蜜臀在线久久久久| 八人操人人摸人人看| 99re久久| 亚洲人妻爽爽爽| 久久日本熟女精品一区| 久久免费中文字幕在线观看| 五月丁香啪啪网| 日韩Va亚洲va欧美Ⅴa久久| 久久久97| 中欧人妻丝袜中文字幕| 欧美日韩欧美| 久久久久久人体| 超碰碰小说97| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 97综合在线观看| 极品极品色影院| 日韩亚洲中文字幕在线| 小日子操bb在线看| 国产成人一级av88| 在线综合 亚洲 欧美中文字幕| 懂色Av| 香蕉综合网| 深爱伊人影院| 欧美视频一区二区三区| 极品美女嘿咻| 天美麻豆一区二区三区| 欧美色蜜桃97| 麻豆av一区二区| 欲综合网| 在线二区不卡| 欧美 亚洲精品首页| 东京热AV男人的天堂| 日日日大屁股骚女人精品| 97色97好| 美美91成人国产精品欧美精品久久久久久久| 久久久久久亚洲精品不卡人乳| 69精品久久久久中文字幕| 亚洲精品xxx| 中文字幕日韩精品久久| 日本天天操| 多毛小伙内射老太婆 | 一区久久久二区| 激情图片亚洲色图| 男人的天堂网免费| 日韩三级一区| 激情婷婷丁香| 蜜桃久久综合视频| 中文字幕黑人大片| 搡老女人老妇女老妇老熟女怎么读| 俺去俺来也在线www| 最新无码国产| 国产精品久久久无码aV去| 欧美激情一区| 影音先锋每日最新资源在线观看| av一区二区三区不卡| 99亚洲国产精品色一区二区三区| 久久在线观看免费视频| 欧美片第一页| 第四色奇米影视777| 国产午夜福利专区综合| 国产亚洲日韩在线三区黑人| 看一级黄色视频| av在线资源| 色色丁香| 偷拍 精品另类 凸凹了四区| 天美av在线| 久久这里只精品免费福利| 国产免费内射视频| 日韩成人色图| 亚洲午夜福利在线影院| 色综合五月天| 精品一区二区三区最新| 欧洲大香蕉| 99黄页网站| 91国产丝袜白虎| 欲色综合| 熟妇乱伦一区二区| 日本人人操人人操| 9/A片| 美女淫穴| AV女优男人的天堂| 91色狼| 秋霞网—男女啪啪亚洲免费体验区| 久久无码一区二区二三区性色| 国产毛片久久久久久久| 人人色人人操在线| 天天做天天爱天天爽AV| 亚洲激情深爱文学小说网站| 久久精品午夜国产亚洲AV无码| 26uuu性| 婷婷五月成人| 中文字幕精品乱码| 欧美日韩在线小说 | 五月丁香激情综合| 综合亚洲情色| 97天天| 亚洲精品xxx| 婷婷色影院| 97免费在线视频在线观看| 人人喜人人妻| 久久女人| 在线啊v一区| oumeisetu综合| 日日日大屁股骚女人精品| 综合 亚洲 欧美| 三级网色| 9精品久久| 日韩欧美加勒比| 亚洲精品亚洲人成在线麻豆| 啊啊啊不要啊啊受不了了视频在线| 日日躁天天躁狠狠躁| 三级激情网站| 亚洲色图加勒比| 99热日| 啊啊啊久久| 国产精品极品美女视频| 97色爱| 亚州欧美在线| 精品中文字幕第一页| 天天肏美女| 清纯唯美综合亚洲| www.超碰在线| 91网18| 亚洲欧美日韩制服另类| 精品人人| 亚洲一二三四区| 久久精品国产亚洲AV无码电影| 玖玖资源中文字幕制服丝袜| 你懂的在线观看区国产| 亚洲一二三精品久久网| 色臀av| 亚洲色图大香| 久久久久久97| 丁香五月激情五月| 91熟女丨老女人| 欧洲色| 人妻熟女一区二区在线视频| 伊人久久婷婷| 久久久91| 亚洲成人一二三区| a男人的天堂久久一级A毛片| 搡老女人老妇女老妇老熟女怎么读| 亚洲男人天堂2017| 97爱欧美| 一区操逼| 四虎在线免费视频| 久久草在线综合视频| 青青草一本道福利视频| 欧美性爱五月天| 亚洲综人网| 丁香九月激情啪| 欧美天天弄| http://qxhbdz.com| 久久精品一区二区三区四区五区| 九九热免费国产视频婷婷伊人五月| 亚洲AV在线资源| 青青草天天亲夜夜操网| 精品97久久| 亚洲成人av色网| 97欧美精品| 久操 高清| 免费一级a毛片久久久久久鸭绿欲| 97超级久久强资源| 欧美亚洲第一页| 香港日本韩国人妇99www.wccm20| 亚洲国产精品无码AV久久久| 超碰伊人在线| 爱爱动态120秒| 国产无码精品久久久久久| 97色色,97综合| 粉嫩粉嫩一区性色AV片| 久久久久久久久9| 久操综合在线| 国产午夜无码片在线观看影视| 偷拍导航视频网站| 超碰在线一区| 日韩精品视频在线观看一卡二卡| 天天做日日爱夜夜爽| 青青青草原| 中文字幕亚洲欧美在线不卡| 黄片免费久久久久久久| 日本韩高清无砖码22o| 美女啪欧美一区| 亚洲少妇色图自慰直播| 五月丁香婷婷综合| 亚洲欧美在线观看免费| 99婷婷一区二区| 久久久久久中文| 97中文天堂| 久久色一区二区| 97精| 久久久91福利姬| 超踫中文字幕| 久久久 国产精品| 黑人精品XXX一区一二区| 色综合 加勒比| 后入内射蜜桃臀| 色色婷婷丁香| 亚洲色 国产 欧美 日韩| 久草加勒比一区在线| 国产一| 久久骚少妇| 欧美图片偷拍| 日本在线激情一区二区三区| ,成人免费啪啪视频| 欧美的精品的视频| 大香蕉伊然在亚洲91| 精品久久久久瑟瑟| 亚洲 中文 女同| 色色色色综合网| 一区二区三区黄片免费观看| 国产成人亚洲精品无| 男人天堂毛片| 免费99精品国产自在在线| 欧美色图片91| 国产suv精品一区二区四区999| 中文一区在线日| 九九精品热| 国产精品视频自拍在线| 九九九热| 亚洲久久久久| 最新制服中文第一页| 色五月激情AV在线| 熟女网站最新| 啊啊啊久久久视频| 18精品一区| 日本免费中文一区二区三区四区| 无码 有码 国产18p| 人人看欧美性爱| 亚洲国产欧美另类自拍| 九九精品99| 一级性爱视频免费在线| 超碰免费97| 婷婷色综合欧美日韩| 四虎影视欧美| 久久久久久久9| 91欧洲国产成人久久精品网站| 麻豆熟妇乱妇熟色A片在线看| 中文字幕福利视频一区二区三区在线观看| 亚洲第一页综合在线| 成人开心网在线视频| 欧美在线|亚洲| 九九人妻| 97欧美在线| 久久久97| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 天天综合亚在线| 中文字暮97| 日本在线视频导航| 99综合网| 青青草视频爽一爽| 久久精品中文| 操久久久久| 欧美亚洲情色| 精品中文字幕第一页| 美女国产一区二区久久| 丁香六月婷| 97超碰色屌| 97精选久久| 亚洲精品熟妇1区2区3区。| 大香蕉色欲AV| 老女人综合网| 成人七区| 精品精品精品| 成熟熟女国产精品一区二区 | 超碰97精品在线| 伊人国产av| 亚洲素人网| 啊啊啊啊啊啊啊网址在线观看| 天美传媒精品久久视频| 欧美精品69性爱| 亚洲国产奇米影视久久| 国产精品一二三区福利| 久久精品72| 国产97综合| 国产自啪精品视频网站黑丝| 中日韩免费看男女操逼大全| 久久夜黄色无码A级大片| 97婷婷色| 久久久99999久网站| 成人青青草原伊人| 色综合V| 伊人影院综合是一个与深夜成人在线| 亚洲丝袜色| 婷婷五月天无码| 久久久久99999| 九九探花视频在线观看| 中文字幕91综合| 久久精品女同亚洲女同13| 色色色日本| 啪啪综合网| 亚州日韩97| 五月丁香激情四射| 九月色婷婷| 亚洲鸥美色图| 欧 美 自 拍 偷 拍| 婷婷五月天补不补| 亚洲国产91精品一区二区久久| 99爱精品| 欧美玖玖爱免费玖玖| 亚洲欧美日韩偷拍色图| 日本理论在线| 精品久久九| 亚洲AV无码乱码| 丰满人妻一区二区三区免费,| 中文字幕乱偷人妻久久艾草网| 91综合色| 天天日天天爽| 人人操超碰在线| 四虎影视永久在线免费| 夜夜操av亚洲一区二区| 超碰成人人人爽人人爽| 超碰AV在线| 97伊人超碰| 丁香五月综合| 好爽免费视频,| 日本欧美一区二区三区免费| 干b在线性社区| 国产激情视频一区区三区| 日韩AV片| 国产综合久久久麻桃个| 伊人成人中文字幕久久网| 啊啊啊水好多| 九九碰九九爱97超碰| 超碰在线综合97| 强免费黄色网址| 久久久久久九九九九九九| 亚洲色色探花| 青青操日韩| 亚洲一区中文字幕一区| 黄久久| 天天视频综合在线观看视频| 亚洲男人天堂2013| 1769一区二区| 精品少妇高潮久久| 久久久九97| 亚洲精品久久久久久久蜜桃臀| 五月天激情婷婷| 99久久99久久免费精品蜜臀| 男人的天堂激情| 亚洲性爱成人| 人人搡人人肉久久精品| 亚洲中文日韩精品| 日韩97超碰| 天天插天天插| 国产强奸AV在线| 热热热热日日漂亮永久永久国产日| 欧美综合国产精品久久丁香| 欧美暴力猛交| 插欧洲美女欧美精品| 干B| 极品色www影院| 亚洲中文字幕av| 91观看 国产白丝| 美中韩AV综合网| 岛国片在线视频网站| 色偷偷色偷偷欧美日韩| 怡红院一区二区熟女人妻| 91综合网站| 久久夜色一区二区| 国产激情在线观看| 不卡av免费在线网址| 日本新免费二区三区| 日韩中文字幕在线视频观看| 91天天看| 天天爱综合网| 青青草密桃在线播放| 欧美国产精品| 亚洲人妻久久| 东北女人操比视频| 视频二区美腿丝袜制服人妻欧美| 欧美性爱精品七区| 久肏视频字幕| 青青草视频导航官网| 日本一级性爱| 乱伦熟妇一区二区| 日比av无码| 欧洲亚洲人妻无码中字久久三区四区| 国产人妻天天干精品| 一级毛片电影免费看| 成人精品水蜜桃久久久久久久| 99亚亚热| 日本中文字幕在线电影| 7777奇米影视久久| 啊v在线观看视频| 国产精品69久久久久久久| 丰满人妻一区二区三区在线| 国产三级电影免费观看| 久久精品中文字幕观看| 无码人妻精品酒店| 插插综合网天天影视网| 使劲用力艹少妇视频一区二区 | 欧美激情内射| 天天躁狠狠躁av| 亚洲精品丝袜| 欧美亚洲综合色| 色色色色网站| 91成人久久| 为用户提供免费看黄网址在线观看| 91性网| 美女骚尻视频| 久久精品视频一区三区小泽玛利亚| 嗯啊啊啊轻点视频 | 欧美成人A天堂片在线观看| 成人羞羞视频国产| 久久国产精品m码| 亚洲系列欧美| 男女性扦B| 999 久久久| 99综合自拍| 第四色亚洲色图| 97综合在线观看| 人妻-91porn| 一区二区三区激情在线观看| 91人妻中文| 男人天堂网站| 超碰色综合| 99re在线| 欧美组图日韩亚洲中文字幕| 成人怡红院| 超碰在线91| 色欧美综合| 热99re69精品8在线播放| 婷婷人妻激情| 精品一区二区三区麻豆| 四虎在线视频| 亚洲色图第四色| 人妻少妇久久| 草草影院在线视频| 欧美东京热精品A∨| 国产AV色黄看到爽| www熟女乱伦com| 白丝av| 亚洲AV无码乱码| 视频国产成人精品日本亚洲18| 亚洲图片欧美| 日韩兔费看黄片| 黄片www视频免费| 国产91精品在线免费| 91精品人| 玖玖97综合 | 伊人色综合网| 狠狠操狠狠插| 欧美78p| 精品美女在线视频| 亚洲综合贴图91| 大香蕉99热| 天天情欲宗合网| 人妻少妇无码| 亚洲欧美另类激情小说| 日本人妻伦在线中文字幕| 91深夜夜| 婷婷五月天AV| 日韩伦理视频| 97精品国产精品免费观看| 91网站在线播放| 东北老熟女| 天堂网亚洲区手机版| 亚洲黑人在线| 久久久久久电影| 色播综合| 欧美色图私拍91| 欧美青青草视频| 性猛交| 911av网站免费观看| 丁香五月综合| 99色悠悠| 成人精品欧洲亚洲| 九九碰九九爱97超碰| 麻花豆传媒剧国产MV出差| 日韩人妻一区二区精品| 亚洲色性情三级| 啊啊啊操死我了| 久久精品—区二区三区内射| 亚州操逼图| 97色伦欧美| 夜夜爽夜夜摸夜夜操免费视频| 91天天综合日韩欧美| 国产亚洲性生活视频播放| 婷婷色色网| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 色婷婷六月| 欧美日韩理论一区| 91青青在线视频| 综合伊人激情| 五月丁香综合啪啪| 久久精品国产99国产精品亚洲| 久久老熟女| 久久久久久电影| 天天天天干| 欧洲精品欧洲精品| 一级性爱视频免费观看 | 欧美一级A片在线看视频性色| 麻豆亚洲Av成人无码一区精品| 亚洲男人的天堂网| 丰满人妻一区二区三区免费| 加勒比在线视频一区二区三区| 97人妻色| 久久久久久久| 3p国产欧美99热| 国产亚洲色婷婷99精品91| 日韩一级欧美一级国产一级台湾 | n1038 一二三区| 射综合网| 激情综合色| 婷婷激情五月天小说网| 蜜臀AV成人精品蜜臀| 97综合在线| 日本欧美国内在线| 欧美中文字幕一区| 久久午夜色播影院免费高清| 天天干人妇| 男人成人黄色视频在线观看免费下载| 97无码视频在线播放| 国产激情av女片自拍| 久久噜| 亚洲欧洲综合成人av一区| 69视频福利导航| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 国产高清午夜成人在线观看| 97超碰色五月| 92久久| 人妻日日夜夜精品| 啊啊啊啊啊啊在线观看| 精品人妻伦一二三区久久| 日天天九九天堂666| 麻花传媒免费网站在线观看| 色欲人妻一区二区在线| 乱伦图av| 亚洲伊人久久精品影院| 中文自拍欧美影视| 99re6在线视频精品免费完整版安卓版| 中国国产精品一区视频| 欧美日本视频一区| 五月婷婷AV| 91人妻少妇| 麻豆国产原创AV色哟哟| 国产家庭乱伦表演| 欧美国产有色电影| 亚欧视频在线| 91n处女在线观看| 五月开心网| 好色综合| 亚洲激情色片| 亚洲黄色a级片| 超碰97国产欧美| 日韩乱码Av| 精品无吗m| 熟妇艹鸡八| 人妻一区视频| 性一级黄色录像片网站导航| 狠狠狠一区二区三区| 18禁在线视频| 亚洲人久久久网| 91在线无码精品秘 软件| 国产又大又硬又长又粗| 欧美在线|亚洲| 国产黄a三级三级三级av在线看| 日本成a人v网站在线观看| 97久久精品国产| 免费中文在线| 少妇综合| www.acm成人黄色毛片| 九九热在线精品视频| 欧美肥臀在线| 日本伦理一区二区| 免费在线观看国内色片网站网址| 干B网| 欧美白嫩在线放| 婷婷久久久| 亚洲一卡二卡在线免费| 五月天亚洲网| 日欧美色| 欧美久热| 能在线播放的国产三级| 老妇女91| 人人摸人人舔一区二区| 久久精品欧美一区蜜桃| 强奸乱伦大香蕉| 91丝袜在线观看| av久日| 综合网,亚洲,欧美| 亚洲成a人片在线观看中文!!!| 成人小电影网站tex| 久久国产对白激情浪潮 | 91亚洲在线| 一区二区三区色综合| 亚洲色久| 最新中文字幕精品在线| 麻豆天美一区二区| 欧美精品第四五页中文字幕在线观看| 一个人免费HD91视频| 丝袜人妻av一区二区| 一级免费精品| 欧美日韩一干二干| 色嘟嘟人妻天堂网| 日韩女模中文造逼| 人人人人插| 啪啪啪综合网| 日日骚 av| 日韩卡一卡二卡三在线| 一区二区三| 97欧美日韩精品| 久久成人网站| 久久伊人青青草| 色播综合| 久久6热视频免费观看| 久久久99免费| 懂色Av一区二区三区| 精品中文一区二区| 亚洲 另类 丝袜 自拍 动漫| 成人精品电影| 91人妻丝袜无码| 中文字幕成人| www.色婷婷.com| 亚洲一区二区中文字幕| 最新日本中文字幕| 中文字幕三四区| 久久久青青草| 欧美色图20P| 亚欧美色图| 色欧洲97| 91在线/欧洲| 天天综合网入口~91| 操穴国产| 日本午夜福利视频| 精品射1999| 男人的天堂2018东京热啪啪啪| 日日操天天操| 噜噜噜狠狠色综合| 婷婷在线视频| 日日日日日| 国产欧美第五页| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 蜜桃视频精品一区二区| 亚洲操操操| 尤物网址| 免费av大片| 激情五月天社区| 久碰视频| 亚洲不卡AV在线| 91网站18在线观看| 淫色网综合| 欲色影视综合吧| 综合国产97| 欧美九九99久久精品| 青青草视频在线观看一区二区| 日韩少妇丰满亚洲| 国产男女无套97| 欧亚成人在线视频| 欧美另类天堂| 97AV在线观看| 69XX一中文字幕人妻91| 日韩兔费看黄片| 中文字幕日韩专区精品系列| 久久直播国产| 在线观看综合精品亚洲| 日韩亚洲美州欧洲综三区一品在线| 天天欧美色| 一区二区三区四区久久视1| 日韩美女高潮喷水视频| 欧美综合色综合| 97chaopengongkai| 另类TS人妖一区二区三区| 韩国午夜理伦三级好看| 日本天天操| 国产成自自拍在线观看| 精品少妇人妻| 2019天天干| 中文字幕奈奈美被公侵犯| 国产午夜无码片在线观看影视| www.婷婷| 黄网站黄视频网站进入口| 久久久久久人| 欧美自拍网| 国产一级内射无挡观看| 天天综合色| 亚洲污一污二| 天天综合网~91| 91白虎| 综合av社区| 国产农村妇女精品| 蜜臀久久99精品久久久久| 啪啪啪东京| 日日干日日| 国产 v乱码一区二| 97在线精品| 欧美91在线+|+欧美| 中文字幕乱妇免费视频| 国产成久久综合片| 婷婷伊人网| 日韩精品电影| 另类图片天天影视| 自拍视频一区在线观看| 婷婷五月天AV| 中文字幕久久亚州无码| 人妻少妇精品| 免费在线观看国内色片网站网址| 嗯嗯啊啊啊好舒服| AV色女综合| 91在线超高颜值国产| 国产亚洲 中文欧美久久| 久草毛片| 婷婷丁香九月| 97这里都是精品| 久久婷婷成人综合色怡春院| 亚洲最新av无码成人精品区| 九热中文字幕| 精品一级毛片在线观看| 校园春色亚洲色图| 99激情视频| 欧美三级中文字幕hd| 日韩黄色av中文字幕| 天天懆天天日| 玖玖综合.com| 日韩本不卡视频在线观看 | 男人天堂免费| 老司机天天操| 为用户提供免费看黄网址在线观看| 碰碰在线视频| 精品一区二区久久| 久久黄片国产一区二区| 2001天天操| 97国产|免费| 大香蕉丝袜一级片| 日本一久是| 亚洲高清无毛一区二区| 亚洲成人av色网| 久久大精品乱码视频人妻熟女| 91天天| 亚洲另类综合欧美| 99999久久精| 五月婷婷六月丁香| 久热精品在线| 亚洲欧美日韩精品久| 婷婷香网站| 日韩国产在线观看av| 精品97久久综合| 伊人久久综合精品欧美| 日韩乱码Av| 美女网站91| 91干熟女| 亚洲女人91| 99久久久er直播网址| 东京热大香焦| 天天躁日日躁AAAXX| 99色在线| 久久乐| 天天日天天干天天摸天天操| 久久久精品成人国产| 一二三四区电影| 中国女人内射6XXXXX| 亚洲电影91| 色5月婷婷| 蜜臀99久久精品| 九九无码| 超碰成人人人爽人人爽| 少妇蜜汁| 无码137片内射在线影院| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 97资源久久| 日本丝袜美腿人妻九九| 久久东京伊人一本到鬼色| 熟妇高潮精品一区二区三区下载| 久久久精品视频免费观看| 97网站在线观看 | 啊啊啊啊好爽好舒服一区二区易域| 91美女中出| 超碰在线欧美性爱激情| 日本久久综合| 久久鲁干| 日韩超碰97| 四虎在线播放| 97网址www| 亚洲97在线观看| 天天肏美女| 亚洲色图尤物视频| 亚洲AV不卡在线观看| 国产高潮AA片免费看| 久久久久少妇| 欧美亚洲se91| 中文字幕在线日亚州9| 91 丝袜在线观看| 中文字幕一区日韩精| 国产又粗又长的视频| 99国内精品| 亚洲高清国产理伦片| 日韩久射综合| 亚洲诱惑| 婷婷丁香五月综合| 久久黄色性爱视频| 97欧美综合网| 国产精品视频麻豆入口| 久久精品人妻一区二区三区| 色婷婷aV一区二区三区麻豆综合| 亚洲精品白浆高清久久久久久 | 激情欧美97| 国产精品肉丝自拍| 亚洲AV无码国产精品久久久久| 久久精品区| 福利一级版子| 色色色网站| 影视综合无码少妇| 午夜噜噜噜| 色偷综合| 日韩AC| 日韩一区二区精彩视频| 97视频免费在线| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 黄站在线免费观看| yazhousetuoumei| 女优免费一区二区永久| 国产精品美女在线一区| 蜜臀视频网站| 日韩精品人妻中文字幕不卡乱码| 91l欧美在线| 五月丁香社区婷婷日韩欧美精品影院 | 成人日本片久久久蜜桃| 久久伊人网视频一区二区三区| 天天做天天爱| 欧美视频一区二区在线| 成人蜜乳小视频网站| 国产91美女视频| 91性| 91色综合激情| 国产精品色色| 婷婷综合网站| 少妇久久久久久| 亚洲色图片区| 天天性射网| 超碰综合色| 最新一二三区视频| 亚洲五月丁香花狠狠干一区二区三区| 亚洲欧美一区二区三区一猛片| 99在线精品视频| 98超碰欧美| 明星性猛交ⅹxxx乱大交| 亚洲黄色影视| 日本色色视频网站| 午夜精品久久一区二区| 亚洲欧美人妻| 欧日韩一二三f区| 亚洲偷拍欧美激情| 人妻激情在线视频| 青青国产在线拍揄自揄拍| 99青草| 亚洲国产第一页综合视频| 免费一级毛片在线视频观看| 91在线视频观看国产| 国产91精品福利在线| 少妇啪啪自拍| 国产女s强制榨精视频| 牛牛操视频逼| 国产成人拍国产亚洲精品| 级做a爱无码性色永久免费| 极品一区二区三区免费| 色69大色97香蕉| 精品国产乱码久久久久久久| 日日骚精品视频| 久久精品一区二区三区蜜桃臀| 韩日精品福利视频一区不卡在线免| 夜夜 中文视频rt| 久色99999| 91麻豆一二三区| 欧美桃色网| 四虎在线播放| 青青草在线视频播放器| 亚洲熟女少妇免费视频| 东北操逼| 欧美啪啪天堂| sewuyueav| 色欲久久久久综合网| 69少妇一区二区| 欧美一级黄片视频在线| 亚洲色图亚洲无码强奸乱伦| 伊欧美综合视频| 一级免费啪啪片| 色999;丁香五月| 日韩在线76| 99久热精品99re6热| 偷拍综合亚洲| 国产亚洲日本精品在线| 我爱大香蕉| 骚货人妻偷情自拍在线视频| 91九久| 在线观看A啊啊啊| 91国精产品| 91老熟妇| 第四色奇米影视777| 激情看片网站| 婷婷亚洲中文字幕在线| 亚洲成人色情五月天丁香花| 97欧美日韩精品| 少妇久久久久久| 超碰导航97|