日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
欧美日韩资源在线| 无码天堂| 后入内射蜜桃臀| 7777奇米影视久久| 9精品久久久久| 日韩人妻精品久久久久| 国产美女mm131爽爽爽爽| 中文字幕人妻丝袜乱一区三区| 91色艳| 久久精品午夜国产亚洲AV无码| 欧美在线l亚洲| 91高清无码下载| 国内毛片四区| 色综合20p| 六月丁香久久| 国产一区二区三区免费视频在性观看| 亚洲国产另类在线中文| 综合色久欲| 亚91亚洲网| 美女自卫慰黄网站免费| 亚洲AV无码AV吞精久久久久| 一级毛片久久久久久久女人18| 久久九九97| 97资源免费视频| 屌色在线97视频| av在线免费一区二区| 亚洲黄片免费在线播放| 天天摸天天操视频| 99热国产精品| 97国产超碰| 玖色av| 久久久不卡区一区二区三区久久久| 国产精品久久久久综合| 91精品伊人久久久大香线蕉91| 神马久久午夜| 日韩三级伊人| 98久久超碰| 色777999综合| 午夜福利 成人 91| 精品人妻一区二区三区蜜桃视频| 久草精品一区| 新视频sss国产| 色狠狠综合噜一二三区| 欧亚不卡| 六九九九| 亚洲综合另类| 老熟女91av| 91粉芽高清在线一区二区| 一区在线观看中文字幕| 麻豆国产免费影片| 亚洲精品三| 91精品国产高清久久久久久,亚洲成人| 国产福利视频精品视频| 国产精品高清2021在线| 鸡巴插逼视频| 免費黃色視頻觀看一| 久久精品中文字幕无码l| 成人免费视瓶| 免费伦费视频在线观看| 伦伦成年午夜免费视频| 女人爽到高潮潮喷18禁网站| 亚洲综合97中文网| 超碰97在线 欧美 国产| 97伪v| 日日摸日日碰| 美女t无毒不卡不卡| 99re6国产精品99re| 亚洲十八禁止| 免费视频观看60秒| 国产精品内射婷婷一级二| 色网站导航大全| 26uuu性| 爱av免费| 九九九久千久久激情蜜桃在线看 | 素颜老阿姨乱情色| 精品一区二区亚洲国产| 亚洲av总站| 久久久久久波多野吉衣高潮| 久久综合超碰| 97欧美| 欧美精品日韩久久久九| 大香蕉520| 操b网站亚洲无码| 精品人妻一区二区三区夜夜| 99热一区二区三区四区| 97超碰人人操人人操| 涩涩这里只有精品视频| 加勒比大香蕉视频在线| 天天α片| 国产精品96| 国产av又色又爽又黄| 五月综合色| 久久色激情一区二区三区| 97在线观看免费视频l| 精品在线78| 老外又粗又长一晚做五次| 日韩在线观看字幕精品| 淫乱图区 | 亚洲精品欧洲精品| 97精品免费视频网站| 久久东京伊人一本到鬼色| 色色五月婷| 久久超碰亚洲人| 久草电影网| 激情黄色片在线观看| 成人在线视频网| 日本天堂网| 久操免费视频| 国产精品探花视频| 日本啊啊啊啊啊视频| 9美女超碰在线免费观看| 一二三四视频中文字幕在线看| 操一区| 夜夜操一区二区| yw尤物av无码点击进入麻豆| 丝袜 亚洲 偷拍| 91无摭挡| 欧美日韩操操操| 黄总AV色图| 国产女大学生AV| 日日狠狠久久偷偷色综合免费| 伦理弟一页| 日韩免费簧片| 操香逼| 国产午夜精品在线观看| 久久熟女人| 九九九九九九综合| 99热这里是精品| 欧美伦乱| 欧美婷婷| 精品少妇一区二区| 天天躁日日躁AAA片李宗瑞| 97精品国产精品免费观看| 飘花国产午夜精品不卡| 成人精品一区二区三区| 最新av中文字幕高清| 好吊色在线观看| 日韩无码第3页| 大香蕉免费乱伦视频| 无码人妻精品一区二区三区九九| 另类小说综合网| 久久久久久91香蕉国产| 色婷婷视频| 激情小说亚洲图片| AV九九| 久久人妻熟女一区二区| 日本一本一区二区三区四区五区欧美日韩中文字幕 | 91久久九九精品国产综合| 欧美性特| 亚洲精品国语在线播放| 一区二区三区成人| 3p国产欧美99热| 色色97爱| 色 婷97| 激情网色| 激情综合 婷婷五月 红杏| 亚洲九区| 天天上日日上日韩精品| 国产一区二区久久| 少妇二级| 国产日韩手机视频在线| 欧美中字不卡| 九九热男人天堂| 日本性爰一道本| 97资源站久久| 冬京热男人的天堂| 欧美精品自慰系列寂寞少妇| 精品午夜福利| 操逼999| 99热精品在线观看| 美女视频尤物网在线看| 激情小说亚洲| 久久99干一本高清| 国产一区二区三区,在线观看观看| 丰满人妻大屁一区二区| 国产亚洲精品美女久久久| 国产精品69久久久久久久| 蜜桃视频精品一区二区| 强奸乱伦AV网站| 熟妇人妻一二三区免费| 中日韩久久人妻一区二区| 玖玖爱免费观看视频| 男人的天堂视频精品乱在线| 欧亚揄拍偷拍精品视频| 亚洲91网。| 国产精品亚洲免费| www成人啪啪18秘 免费| 日韩极品无码B| 欧美日韩小说| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 永久免费av无码网站国产app| 精品成人女人久久| 亚洲色欲一区二区三区| www.色操逼| 国内毛片婷婷六月色| 久久久精品网| 欧美图片校园春色| 亚洲综合骚逼| 欧美亚洲高清不卡| 天天日B夜夜干B时时操B| 亚洲欧美日韩中文播放| 精品久久久av无码免费| 日产精品久久久一区二区| 天天日日本| 国产精品麻豆视频网站| 情趣丝袜无码操逼视频| 七月丁香婷婷| 超碰色97| 9美女超碰在线免费观看| 伊人久久大香线综合无码| 欧美一区二区观看在线| 女人被男人桶爽视频网站| 熟女人妻一区二区三区| 78m成人视线| 国产丁香精品露脸视频 | 激情婷婷综合久久| 人妻一区视频| 成人国产精品三级A片| 国产女人与拘做受视频免费| 国产无码久久高清| 东京热男人的天堂精品| 日韩免费三级黄片电影| 九九九九热| 天美传媒av在线| 欧美999999| 91黑丝美女| 亚州综合AⅤ| 国产综合久久久鬼色| 欧美久久九九| 激情文学欧美| 国产精品在线一区二区| 四虎在线视频| 84YTCOM性无码| 99久久无码| 中文字幕第9页萱萱影音先锋| 懂色Av| 日婷婷| 久久黄片国产一区二区| 717影院理论午夜伦八戒| 午夜高清成人在线视频| 人妻碰碰碰碰碰碰| 久久 亚洲 日韩 人妻| 亚洲诱惑| 美女诱惑久久| 啪啪视频亚洲第一| av一区二区三区 中文| 久久婷婷伊人| 日本熟妇熟色97一本在线观看| 四虎AV无码| 一区| 天天爱综合网| 日婷婷| 91丨熟女丨丰满熟女| 再深点灬舒服灬太大了好硬好爽| 熟女丝袜视频| 玖玖爱综合网| 亚洲综合九九| AA特级绝黄| 中出91| 丁香婷婷激情五月天无毒不卡| 国产精品一区二区后入| 国产久久久久久| 秋霞一级鲁丝片A片| 国产www色在线观看| 久久精彩免费视频| 超碰精品| 最新制服中文第一页| 免费αV在线视频| 激情专区综合| 国产91丝袜在线播放蜜月| 久久欧美激情| 夜夜影视四色| 91在线免费观看处女| 免费视频观看60秒| 国产9 9在线 | 亚洲| 亚洲精品日日夜夜52| 浪人综合网| 中文字幕 一区二区 亚洲无码| 青青草字幕AV| 亚洲一区中文精品| 久久九九综合| 激情内射| 成人国产视频在线观看| 加勒比无码一区二区三区| 1000午夜黄色| 五月丁香六月综合缴清无码 | 日韩精品人妻中文字幕有码午| 欧美日日人人天天| 近亲乱伦一区二区| 久久精品中文| 免费观看国产小粉嫩喷水精品午| 国产欧美第五页| 午夜噜噜噜| 久久6热视频免费观看| 天天摸天天碰天天添青青| 久久久久99精品成人片蜜臀| 99热综合| 天天综合网在线91| 青青草天天亲夜夜操网| 欧洲自拍色图gif在线| 久操电影| 久久久久久久 九九九九九九九| 高清无码学生妹高潮| www.av在线视频| 欧美日韩婷婷中文| 中国国国产一级特黄毛片| 国产一区二区三区久久精品太古里| 欧美亚洲图片| 五月天春色激情网| 亚洲情色 无码专区| 国产宅男宅女在线观看| 精品无码产区一区二| 再深点灬舒服灬太大了添视频| 大香蕉十区| 美女被啪到深处抽搐视频| 久久精品国产亚洲av水密被窝| 啊a一区在线| 蜜臀AV一区二区三区| 91粉嫩萝控精品福利网站_精品影音先锋国| 无码人妻系列少妇| 亚洲第一无码播放立川理惠| 蜜桃网熟妇| 女人被添高潮免费视频| 东京男人天堂| 蜜臀操逼黄色视频操的好爽| 亚洲精品熟妇1区2区3区。| 国产欧美日韩精品中文| 中文字幕丝袜| 91丝袜美女| 久久精品国产Aⅴ| 国产 码在线成人网站| 久久超碰com| 在现视频女上位好爽| 国产日本一区二区三区蜜臀在线观看| 色欲人妻一区二区在线| 久久久久久久亚洲Av无码| 久欲AV| 成人97人人超碰人人| 裸体美女久久久| 国产AV超爽| 东京热男人天堂| 中文字幕加勒比海高清无码免费视频| ji熟女.com| 白嫩91在线亚洲| 人人操人人摸人人看人人干| 易易A毛视频| 1二区9| 九九综合色| 亚洲男人久久综合天堂| 韩国毛片一区二区三区| 伊人综合色网| 国产一级作爱毛片| 欧美日韩大香蕉| 超碰97首页| 丁香五月天堂网| 天天日天天搞天天干| 超碰在线1234区| 欧美亚洲激情小说| 亚欧成人中文字幕一区| 欧美精品69性爱| 熟女高潮精品一区二区| 五十路熟女工口| 天天综合网站| 全免费a敌肛交毛片免费| 色99999| 操亚州| 97久久久久久久精| 国产一区二区三区影片| 国产精品久久久吖| 蜜桃狠狠色伊人亚洲综合网站| 色香在线| 美女裸体麻豆天美蜜桃91| 国模精品一区二区三区苹果色戒| 日韩精品碰碰| 国内毛片欧美香蕉精品| 在线视频资源| 日本二三四区| 色综合1991| jiujiujiujingpin| 欧美日韩青操| 和协无码影院| 91啪啪| 国产亚州日韩欧美看片| 性开放中文AV高清无码免费看| 国产又粗又大硬免费色网视频| 亚洲精品蜜桃久久久| 久久6热精品99视频| 少妇一区二区三区在线观看| 亚洲中文人妻色| 五月丁香婷婷综合| 婷婷五月天av| 五月婷婷丁香六月| 九九色热| 美女被艹尤物视频| 一块操欧美性爱| 日韩人成网站在线播放| 亚洲精品官网在线观看| 色综合天天| 国产中文大片资源中文字幕| 97色伦97色伦国产欧美| 欧美不卡在线一区二区| 久久成年片色大黄全免费网站| 91青青草| 少妇熟女1区2区3区| 精品久久久av无码免费| 亚洲精品国产精品成人| 偷拍偷窥与盗摄视频专区| 黄色视频高清无码网站| 一级成人性爱| 免费精品福利在线观看| 国产无码一二三区| 亚洲日本韩国在线| 色色操| 免费公开人人操| 免费的很黄很污的全部视频| www.色操逼| 五月丁香在线| 亚欧中文字幕在线视频| 走光一区92下载| 爱丝福利| 九色黄站| 93人人操人人| 男人天堂一区二区| 久久精品免费| 极品少妇久久久久| 操国产逼| 3P乱轮视频| 色色色色综合网| 强奸少妇AV导航网| 加勒比五月天| 国产深喉| 国产最新小视频在线播放下载| av在线免费一区二区| 色欲天天综合网| 日韩人妻资源在线看| 日韩久久超碰色| www.男人天堂| 久久精品黄色| 亚洲一区二区三区中文字幕| 99综合视频一体| 国产欧美伊人| 中文久久96| 欧美亚洲情色| 国产精品婬乱一级毛片彝族| 色性综合| 岛国天天午夜影院传媒网| 无码天堂| 99综合| 九九热视频这里只有精品| 久久久久久99999国产精品| 放黄片放3级黄片没穿衣服| 国产人妖视频一区在线观看| 综合自拍| 神马久久久久久久久久| 亚洲天堂欧美| 激情综合五月| 十八禁电影伊人网| 国内偷自视频区视频综合| 婷婷五月综合在线| 欧美综合网1| 呦呦影院| 夜夜操天| 蜜臀99精品国产高清在线观看| 日韩无码极品| 发朗少妇买婬全视频中文| 蜜屁Av| 亚洲一卡二卡在线免费| 神马久久久久眼| 97se综合| 操逼国产免费| 亚洲成人色情五月天丁香花| 家庭乱伦麻豆| 日本一二区免费| 少妇高潮喷水无套久久久久久| 成人免费毛片| 色大香蕉97N| 在线中文字幕| 香港成人一级视频在线青青草| 天天综合97| 日本在线一二| 久久欲| 欧美成人亚洲精品| A级国产欧美激情在线| 久久久久免费少妇| 精品对白久久不卡| 色综合美国| 超碰97男女| 五月色丁香| 香蕉av一区二区三区| 一级片在线观看高清无码| 91欧美美女日韩国产婷婷| 久久六六| 日夜久久久九九九久| 18禁无码永久免费无限制| 久久久久一本一区二区青青蜜月| 波多野结衣AV无码一区| 黄总AV色图| 波多野42部无码喷潮在线观看| 69视频福利导航| 少妇啪啪自拍| 本道在线| 国产精品久久久久久久久AV大片| 日韩精品一区,二区 九九...老司机| 26uuu偷拍亚洲欧洲综合| 丰满少妇高潮无码| 国产小视频91| 日韩小电影| 伊色综合天堂色97| 日本性爰一道本| 手机av亚洲丝袜美腿日韩第一页二页| 午夜男人一级A片7777| 日韩本不卡视频在线观看| 国模吧 一区二区三区| 密臀视频三区免费网站| 蜜奶av| 人人摸人人添人人操| 日本123区操B视频| 亚洲综合九九| 天天日天天屌天天操| 操逼操操操91| 香蕉国产精品麻豆亚洲欧美日韩| 国产精品久久久久久久免牛肉蒲团| 久操视频资源站公开| 91情色在线| 伊人国产视频| www.yw尤物| 日韩激情电影中文字幕| 9精品久久| 亚洲精品 大香蕉| 黄色大片免费在线| 91丰满| AV色五月天| 天天综合色电影| 国产成人免费观看在线视频| 久久AV无码AV| 丝袜视频网国产90| 96国产污污污丝袜| 中文伊人大香蕉视频| av在线观看不卡网站| 亚洲不雅视频1区二区| 日产国产精品中文久久婷婷| 国产精品久久久三级无码| 91视频精品| 大香蕉手机在线| 麻豆成人av| 亚洲情色第一页| 探花精品视频| 人人人人插| av网站国产主播在线| 少妇内射视频| 999 久久久| 国产精品91一样| www.99色| 亚洲精品视频在线播放| 再深点灬舒服灬太大了添视频| 欧美性爱97超碰| 不卡啪啪视频| 亚欧Av| 最好看的中文字幕在线2018| 国产成人亚洲精品无码最新在线| 999精品女人| 97久久综合网| 中日韩久久久免费看| 色香伊人| 国产吹潮女在线观看| 91激情网| 夜精品久无码| 嗯嗯啊啊操死我| 丁香五月自拍| 婷婷啪啪| 久久天天性久久伊人| 亚洲婷婷五月天| 国产又爽又黄| 欧洲色| 蜜乳AV网址| A片 AV一级在线播放观看免费 | 久久久久921| 男人天堂站| 久久国产精品91| 丝袜夫妻自拍| 九九热超碰97亚洲最新香蕉| 久久人人爽人人爽人人片Ⅴ| 九九热超碰| 开心激情站| 亚洲天堂男人在线| 欧美亚洲第1页| 免费网站观看www在线观| 超碰在线人妻不卡| 是还免费视频1727我| 九一精品牛牛一区二区| 久久色一区二区| 久久妇| 亚洲国产青青| 色色婷| 97二区四区| 欧美激情超碰777| 亚洲熟女乱色一区二区三区久久久| 加勒比伊人综合| 久久久熟女一区| 人人妻人人爽一区二区三区| 日韩射精| 色综合V| www欧美性爱| 国产伦精品一区二区三区视频女| 热天堂一区二区| 高清肉丝中文无码| 国产精品一区二区三区免费视频| 免费A片三p视频| 亚洲无码国产探花在线观看| 黄视频免费| 一级久久性爱视频| 真实高潮91| 久久夜夜夜| 91少妇人妻| 日本十八禁免费看污网站| 亚洲成人久久美女| 99这里只有精品| 97 国产一区| 中文字幕1区2区| 国内精品嫩模A∨私拍小视频| 可以在线观看AV的网站| 啊啊啊com| 国产AV天美传媒一区二区三区| 欧美中出| 成人国产精品三级A片| 久久手机视直播| 91激情国产| 人人操人人干xxx| 强奸a片网| 国产成人主播| 蜜臀一区二区三区在线| 久久久九九网站| 最新av在线| 精品久久久久,69国产成人精| 国产久久视频| 天天综合网在线91| 福利色色| 69视频福利导航| 亚洲三级。日韩三级| 风流老熟女一区二区三区l| 91在线限制级| 亚洲欧美情色| 大香蕉AV在线| 高清孕妇孕交 交孕妇| 欧美自拍网| 亚洲欧美日韩精品久| 综合 青草 伊久久 影院 综合 | 综合欧美亚洲| 九月婷婷久久| 精品人妻一区春色| 中文字幕AV乱伦| 久操99| 久久人妻熟女一区二区 | 97精品在线| 大香蕉www.超碰| 欧美天堂日韩三级国产传媒| 久久精品国产亚洲AV先锋| 国产男女无套视频免费观看| 麻豆传媒一区二区在线观看| 17c嫩草51久久91嫩草| 亚洲国产第一页综合视频| 亚洲资源吧| 在线观看色视频| 99热日| 手机在线人成免费视频| 亚洲91综合| 成人网站 免费观看| 色亚州人久干视频在线观看免费版| 中文字幕乱码人妻二区三区| 在线观看A啊啊啊| 中文人妻av高清一区| 成人热久久精品| 97干97色| 少妇69中文| 久久大线蕉一区| 国产熟女免费观看久久| 国产女主播视频在线观看| 天天日天天干天天整| 老熟女熟妇| 中字幕人妻一区二区三区| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 五月天综合在线| 亚洲人天堂| 欧美一区二区在线资源| 夜夜精品视频| 91色黑人少妇| 飘花国产午夜精品不卡| 嗯嗯啊啊的视频| 综合色色网| 好吊色综合| 麻豆AV96熟妇人妻| 激情综合二| 91青青在线| 亚洲男人的天堂一区二区| 国产色综合亚洲色综合吹潮| 欧美性综合| 久久98| 96一区二区| 一区麻豆 高清中文字幕| 精品国产91av一区二区三区| 99这里都是精品| 男人的天堂2010| 国产偷拍网站| 天天综合站| 久久色一区| 久久久久国产一区二| 91丝袜美女视频| 走光一区92下载| 黄污污污污| 亚洲精品国产无码高清| 欧美—性—交—色| 色97| 强奸乱伦麻豆| 人人爱夜夜爱| 不卡啪啪视频| 性饥渴少妇av无码毛片| 免费男人的天堂| 99只有精品| 乱伦图av| 免费岛国一级片| 国产区在线| 精品一区二区三区四区女| 超碰人人色| 中文精品一区二去| 91亚洲欧洲| 超碰97最新人妻| 亚洲激情久久| 久久一区二区高清免费| 日本一级特级毛片视频| 久久这里只精品| 青草视频人妻在线观看| 91在线综合网| 麻豆国产尤物AV| 三级特黄60分钟播放| 狠狠躁伊人中文字幕| 亚洲黄色网址| 九九十八精品| 国产精品久久久三级无码| 1级黄色夫妻对换性交免费看| 99在线精品视频| 人妻喷水| 亚洲精品黑丝| 久久亚洲不卡一区二区三区| 色色色综合网| 色小视频蜜乳| 一级性爱aaaa| 日本午夜精品理论片A级APP发布| 精品久久久久久中文字幕视频免费| 97超碰精品图片| 亚洲人精品久久久| 亚州国产成人精品女人久久| 天天激色| 久久久久斤小| 天天日美女的B| 国产二区三区粉嫩在线| 少妇69中文| 激情亚洲天堂| 蜜臀久久久久久999| 国产伦精品一区二区三区视频女| 91啪啪视频| 女人爽到高潮潮喷18禁网站| 超碰久超碰久| 淫淫综合网| 怡春院久久| 97在线观看免费| 青青久久久| 国产AV天美传媒一区二区三区 | 精品久久99| 一区久久久二区| 97精品久久久久久久| 91嫩草欧美| 亚洲色图加勒比| 国产丰满少妇久久久精品影院| 中文字幕88av在线| 久久动漫精品视频这里只有精品| 欧洲精品久久| 亚洲自拍青操视频| 精品日日人妻| 国产捆绑一区| 国产午夜在线观看视频| 草草影院日本第一页| 久久这里只精品免费福利| 欧美的性爱网站免费| 亚洲精品一二牛牛| 又大又长又粗又爽又黄| 性色av网站| 婷婷五月综合激情| 久久久久久久 九九九九九九九| 午夜呻吟欧美| 熟女色图在线| 色综合 加勒比| 999精品乱码| 国产成人 综合亚洲 天堂| 亚洲天堂一区二区久久| 色婷网| 亚洲天堂另类小说男人| 天天操人人操骚逼网站| 久久久青青草| 无码免费在线观看黄色片| 日韩国产在线观看av| 国产精品一区二区黄片| 日本福利社| 91精品丝袜久久久久久无码人妻| 国产精品对白自产拍| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 麻豆三极片| 午夜福利免费精品视频| 国产强奸91| 免费观看有码高清视频| 一区二区国产视频在线观看| 春色综合网| 免费一级特黄特色大片在线观看看| av九九| 国产噜噜噜噜噜久久久久久久久| 精品人妻一二三四区视频| 91综合中文字幕| 国产精品一级片在线看| 超AV色女| 亚州,欧美在线| 蜜臀在线视频| 日韩另类| 天天拍天| 久久透逼视频| 美国美女AV在线| 国产少妇高潮| 激情网色| 色噜噜国产在线| 欧美情色贴图| 久久少妇| 色色五月天婷婷| 亚洲日韩久久精品一区| 国产中文字幕在线| 黄片视频观看| 99国内精品| 久久精品电影在线| 人人操人人摸人人看人人插| 国内91熟女人妻丝袜天天精品视频在线| 久久久久一本一区二区青青蜜月| 欧美骚少妇| 精品成人亚洲午夜电影| 超碰亚洲97| 人妻一区二区三区熟女| 女人高潮抽搐喷水视频网站| 骚女高跟AV在线| 日韩美女啪啪一区| 欧美色图天堂网m| 久久婷婷欧美| 伊人操你| 国精综合一二三区影视| 98久久超碰| 69人妻精品一区二区绯色| 91高清欧美| 九九碰九九爱97| 久久风骚城市人| 在线国产探花| 青青草原伊人网| 曰韩av中文字幕专区| 欧美高清在线| 欧美日韩国内不卡| 208天天久久九九九| 岛国艾薇凹凸视频天堂| 国产后入内射| 无码国产精品午夜不卡(| 黄久久| 国产小u女在线观看| 99精品无码| 九九久久精品| 日韩猛交| 久久久亚洲精品电影免费看| 亚洲婷婷丁香在线| 精品成人无码| 97视频在线观看播放与子乱对白在线……| 亚洲无码一区成人免费午夜| 最新国产亚洲精品精品国产亚洲综合| 欧美性爱一区| 日韩一区二区精彩视频| 嗯啊不要啊啊在线观看视频| 亚洲精品国产拍免费91在线| 国产精品一区av在线| 骚熟女吞| 日本精品无码三级网站| 老司机久久| 奇米四色影视777久久久| 亚洲色香| 国产尹人在线视频免费| 国产精品96久久久久久| AV中文在线可看| 免费少妇一区二区| 久久中久文96| 免费精品中文字幕| 欧美色日| 人妻中文字幕日韩电影| 国内一区二区三区| 欧美视频在线第3页| 久久久精品网站| 亚洲中文人妻色| 美女国产一区二区久久| 麻豆色约约| 视频在线观看一二三区| 中文字幕中文字幕一区二区| 日韩精品 欧美激情| 色诱中文字幕| 婷婷视频网| 欧美日韩*字幕一区| 素颜老阿姨乱情色| 日韩人妻资源在线看| 精品久久无码午夜福利| 亚洲se电影| 蜜臀久久99精品久久久久免费观| 91啪啪视频| 黄色网址在线免费观看| 69av一区二区三区| 超碰偷拍| 欧美亚洲国产日本在线,久久精品国产| 日韩av女优在线免费一区| 性爱乱伦一区| 国产精品又黄又猛又粗| 78精品| 久操视频在线| 美国三级日本三级久久99| 国模限制级电影| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 91欧美亚洲| 久久这里只精品| 青青草色插素人| 91嫩草欧美| 国产白嫩精品久久| 91精品成人www| 丁香五月婷婷基地| 国产真实野战在线视频| 天天操天天干一区二区 | 乱伦熟妇一区二区| 韩国三级色呦呦| 丝袜加勒比| 欧美色97| 亚洲男人的天堂va亚洲男人社| 精品二区久久| 超碰69| 五十路成人在线视频二区三区| 色五月激情AV在线| 中文在线视频| 96久久久精品| 国产精品乱码久久久久久久| 天天操熟妇| 97操B| 亚洲交换| 91N综合网| 亚洲Av诱惑| 97国产超碰| 97视频在线观看网站| 中国熟女91| 热热色青青草| 少妇无码999| 久久97超碰| 美女诱惑久久| 欧美性爽xyxOOOO| 操逼逼一区视频| 精品亚洲国产成人av网站| 国产精品视频自拍在线| 色色色欧美| 亚洲欧美经典一区二区| 国内外色色色色色成人视频| 激情五月天色色| 色999人与兽| 亚洲美女30b| av 模特一区了| 天堂亚洲精品| 九月伊人中文字幕| 一本色道综合久久欧美| 欧美强奸乱能| 色婷婷电影网| 亚洲AV小说| 操b网站亚洲无码| 蜜臀th| 麻豆成人AV| 亚洲伊人久久综合97| 强奸乱伦AV网站| 无套内射性感少妇视频| 在线天堂999| 97爱啪| 极品少妇久久久| 国产亚洲日韩欧| 大香蕉一线视频| 天天干一区二区| 91九九九小逼| 天天射影院| 欧美黄色图片| 国产超碰欧美| 立川理惠被中出无码| 在线无码视频| 麻豆国产尤物AV| 亚洲综合九| 亚洲色图欧美激情| 亚洲性爱成人| 色999亚洲人成色| 久久国模av| 丰满人妻一区二区三区免费| 宅男影院久久久,99| 最近2019中文字幕国语免费版| 色噜噜人妻av 中文字幕| 久久超碰av在线| 亚欧高清| 在线观看综合精品亚洲| 91麻豆天美国产| 三四中文字幕| 福利在线观看一区二区| 色性荡荡荡荡视频| 日韩欧美中文字亚洲慕| 亚洲精品乱码线路中文字幕| 日韩啪啪啪啪啪| 久久网亚洲| 国产狂喷潮在线精品| 色区久久| 夜夜做夜夜爽精品视频| 欧美一区二区日韩三区| 久久极品一区二区| 东京热大香焦| 亚洲阿v天堂无码z2018| 国产亚洲 中文欧美久久| 狠狠色五月亚洲91| 干我久操| 男人天堂一区二区| 精品久久久一本一道| 操逼国产免费| 91日产欧美| 极品另类| 色性综合| 啪啪啪亚欧美视频| 午夜婷婷| 国产精选视频| 久久久久久精品免费看A级| 超碰这里只有精品| 人人看人人爰人人操| 老熟女区| 高清无码久操视频| 九九九九久久久| 天天爱天天操| 日本高清电影欧美色图| 性色综合网| 精品人妻伦一二三区久久| 天天爱综合网| 极品色www影院| 偷窥自拍亚洲| 丁香六月婷婷| 蜜臀久久99精品久久久久久-DVD| 婷婷久久五月| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 日夜久久久九九九久| 色姑娘综合网| 亚洲不卡av在线| 亚洲天堂一区二区久久| 嗯,啊。舔我逼| 亚洲古典另类欧美在线| 欧美色综合图片| 国产精选三级在线观看| 欧美少妇高潮| 日本在线不卡123| 秋霞网无码| 国产视频一区二区三区久久亚洲天堂| 99啪啪| 亚欧无码在线| 亚洲做性| 亚洲最大91网| 日韩无限资源| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 91精品成人| 93人人操人人| 欧美丝袜中文字幕07在线| 尻女朋友一夜| 日韩无码三级影院| 精品九九淫乱男| 色色五月丁香| 视频国产成人精品日本亚洲18| 在线观看A啊啊啊| 三级片网站在线播放| 久久久久深夜无码| 天天天天干| av激情亚洲五月天| 激情四射婷婷四五月天| 高清无码久操视频| 精品少妇后入一区二区三区四区人妻巨乳| 天堂成人网| 欧美色66| 久久九九国产精品| 诱惑网综合| 亚欧洲一区二区视频| 精品久久青青草| 国产h片在线观看视频| 亚洲青青草| 蜜色网色哟哟| 国产一区二区在线电影| 97操| 日本熟妇自慰性高潮一区二区三区| 欧美熟女少妇| 十八禁av无码免费网站APP| 欧美情色亚洲| 国产精品视频在线播放| 丁香激情五月天| 金莲网址| 上床啊啊啊| 91无码人妻| 日本天堂网| 99视频内射三四| 乱伦AVxx| 啊啊啊慢点| 九九九精品一区二区无码| 超碰97精品在线| 日韩中文字幕二区| 精品中文字幕第一页| 欧美日韩资源| 亚洲蜜臀视频精品久久| 九九内射在线| 东北丰满熟女国产一区 | 大香蕉99999| 欧洲精品人妻| 韩国一区二区精品亚洲| 操操逼操操逼操操逼逼| 欧美日韩在线小说 | 国产精彩女在线观看视频| 欧美黄片视频在线观看免费 | 大奶啊啊好爽 | 超碰av在线| av无线看| 91成人精品| 夜夜高潮夜夜爽| 欧美性爱五月天| 国产www色在线观看| 99无码狠狠久久| 91美女国产在线| 日韩免费人妻色情网站| 青椒国产97在线熟女| 亚洲激情视频| 亚洲欧美另类图片| 午夜传煤十二区精品| 亚洲精品乱码久久久久久蜜桃麻豆| 99re这里| 婷婷五月天无码 | 五月天婷婷社区| 亚洲欧美校园| 噜噜噜噜天天狠狠| 亚洲综合贴图91 | 亚洲综合五月天婷婷丁香| 中文字幕日本久久| 欧美日韩岛国大片在线观看| 2018天天干在线视频| 日韩99精品视频综合区| 操逼无码操逼| 亚洲欧美色图片| 偷拍视频青青草在线视频| 麻豆一区二区三区在线看| 国产风韵犹存熟妇三区| 人妻精品一区二区全免费| 人人喜人人妻| 天天日老熟妇| 久久国产三区| 超碰久久中文| 丁香六月婷婷综合| 亚洲图片偷拍视频区| 在线国产探花| 丁香九月激情|