亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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麻豆精品一区二区三区| 射丝袜高跟鞋99| 久久九九国产精品| 欧美国产精品久久九九| 97se亚洲| 国产乱青青草久久| 中出789在线视频| 嗯啊不要在线观看嗯啊| 亚洲成a人片在线观看中文!!!| 97自拍一区| 九九综合久久| 亚洲AV无线| 国产精品第一区第一页| 国产精品久久久久av| 免费视频在线一区二区不卡| 欧美高清第一页| 蜜臀th| 久久久草成人网站久久久草成人久久久草久久久 | 久久久久久亚洲Av无码精| 另类亚洲图色| 天天透伊人| 日韩欧美俄罗斯A片| 亚洲另类天堂| 欧美黑人与女人91| 鸥美中出| 精品久久97| 无码九九| 屁股久久久久久久久| 精品一久久久| 亚洲淫乱骚妇AV| 2010男人的天堂| 97色色视频| 欧美性爱系列| 日本日皮视频逼| 五月丁香拍拍激情综合三级| 强奸乱伦亚洲第一页| 三级日韩一区二区三区| 最新国产精品| 亚洲国产欧美一区二区潘金莲| 2017天天操| 国产精品久久泡妞网站| 中文字幕av亚洲精品| 蜜臀99久| 欧美色狠| 亚洲性网| 亚洲av淫乱| 综合在线导航一区| 五月丁香社区婷婷日韩欧美精品影院| 在线观看国产黄色| 超97在线精品视频| 日韩另类色图| 性感女人网页在线观看视频| 久久久9品一区二区三区| 偷窥自拍亚洲天堂网爆| 激情五月丁香五月| 电影69乱码96| 九九久久99| 一区二区三区男女操逼黄色小电影| 熟妇熟女亚洲天堂网| 日韩精品一区二区三区四虎影视| 青青草视频导航官网| 96国产污污污丝袜| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 神马久久午夜| 人妻日日干| 国产精品大香蕉| 久久综合婷婷| 午夜福利在线视频1000| 精品一级| 最新av中文字幕高清| 亚洲天堂一区二区久久| 国产成人+综合亚洲+天堂| 99热这里只有精品9| 女优视频第10页| 青青草日本中文字幕| 日韩精品国模| 密臀视频三区免费网站| 欧美一区二区三区互相| 亚洲成A∨人影院在线欢看| 黄片不用下载在线观看| 97日本超碰综合| 午夜成人福利影视| 很狠操| 日韩超碰97| 强奸乱伦AV网站| 99操| 嗯,啊。舔我逼| 国产精品一区二区密臀| 一级@啪啪视频| 在线啊v一区| 欧美大香蕉97| 日韩啪啪视频| 亚洲欧美国产其他二区| 国产乱弄免费在线视频。| 丁香婷婷激情五月天无毒不卡| 欧美日韩小说| 国产又操| 九九九九免费视频| 亚洲国产一区二区日韩专区| xxx亚洲午夜天堂| 国产久9| 一个人免费视频观看在线WWW | 天色综合网| 精品无码一区二区人妻久久蜜桃 | 亚洲成人福利电影免费| 亚洲情色在线| 亚洲欧美综合区自拍另类| 天天综合精品| 97在线免费公开视频| 2017人人操,人人摸| 偷拍 精品 另类 四区| 99精品无码| 久草网站免费在线观看| 亚洲Av噜噜一区二区三区妖精| 男人午夜天堂| 成人AV素股で擦久久| 中文字幕一区二区三区人妻不卡| 日韩另类| 日韩黄色一区二区三区| 欧美性视频二区三区| 精品国产Av无码久久久亚洲| 久久9久9久99久9久9| 97色操| 黄人人操人人操| 欧美一区91大爱| 殴美性天天| 欧美性爱系列| 五月天伊人网| 中文字幕一区 二 区 三 四 五 区日 日 骚| 亚欧美色图| 日本不卡高清视频| 超碰综合97在线| 亚洲一区二区三区播放在线| 不卡一区视频| www.色婷婷.com| 97免费视频在线| 九九碰九九爱97超碰| 午夜福利合集| 久操视频免费在线观看| 丰满人妻区一区二区三| 久草毛片电影怡| 人妻中文字幕精品无码 | h色99999| 中文一区在线视频| 热热色91| 欧美 熟女 日韩| 一区二区三区免费视频入口| 欧美久久人妻少妇一区二区| 99久热| 亚洲精品久久久久毛片A片拉屎| 青青草自拍视频在线播放| 大JI巴好深好爽又大又粗视频| 无码人妻丰满熟妇奶水区毛片| 秋霞Av理论一级在线| 亚洲最大91网| 国产99精品一区二区三区免费| 亚洲综合贴图91| 黑人黄片在线免费观看| 欧美色图 色综合图| 亚洲国产综合久久天堂| 久久久亚洲高清不打码| 91N综合网| 骚熟女吞| 精品国产乱码久久久久久久久1| 久久久久久久强迫| 日日日日做夜夜夜夜做无码97| 精品国产精品一区二区| 精品人妻一区二区三区四区石在线| 超碰在线人妻不卡| 欧美精品自慰系列寂寞少妇 | 人妻少妇精品一区二区三区| 国产一级舔足在线观看| 亚洲麻豆18发?| 天天爽天天| 超碰国产精品无码| 国产精品香蕉| 欧洲人妻视频| 夜夜欧美| 日韩 女同 综合| 国产高清1234区| 国产Aα| 视频不卡中文字幕| 天天综合91入口| 欧美午夜视频| 91超碰丝袜制服| 天天综合精品| 美国一区二区免费视频| 人妻丰满熟妇一区二区三| 国产精品日日摸天天碰| 91亚洲欧美综合高清在线| 亚洲最大无码中文字幕网站| 中文字幕AV乱伦| 精品久| 一本大道青青| 91超碰丝袜制服| 中文字日本乱码| 日本理论在线| 男女真人网18| 日韩 欧美 视频 在线 一区| 亚洲精品国产专区在线观看| 久久超碰国产一区二区三区| 亚洲自拍偷拍视频在线| 精品国产乱码久久久久久蜜臀| 五十路熟女工口 | 精品1区2区3区| 99日免费视频中文字幕| 亚洲色悠悠久久88| 密臀AV在线| 青青爽| 蜜桃久久综合视频| 久久久久中出| 丁香六月婷婷综合| 日韩久久三区| 91精品电影18| 精品国产一区二区三区久久久蜜臀| 丁香婷婷色五月| 一起草AV| 红桃视频高潮| 日韩精品9区| 久久超碰98| 上床不卡网站| 国产乱人妻精品入口| 国产福利夜| 免费久久9999| 97综合久第一页| 久久9精品网站| 综合熟妇一区二区三区| 丰满人妻一区二区三区免费| 无码人妻精品酒店| 一区二区三区国产在线播放| 丝袜足交视频| 日韩精品9999| 色狠狠一区二区三区香蕉| 91在线一起| 亚洲欧美综合网| 久久久久久国产精品免费网站| 又粗又长又爽在线观看| 手机在线免费看的av| 国产日韩色综合| 久久男人精品| 男人的天堂不卡一区二区| 激情文学网伊人| 97免费在线视频在线观看| 99国产天美| 美性中文综合网| 夜夜嗨一区二区三区三州加勒比 | 欧美图片校园春色| 69精品| 狠狠久久手机视频精品| 去干网最新版| 国产传媒1234区| 中文日韩欧美熟| 超碰诱惑| 国产精品无码久久久久2025| 日韩操人| 久操网在线| 九t超碰| 日韩无码精品综合久久| 日韩av影片在线观看| 亚州情色j区| 91国精产品| 亚州性9| 国产强上视频在线观看| 99热综合在线| 亚洲午夜精品久久久中文影院| 激情小说亚洲| 静品嫩模一区二区| 新97国产超碰| 97免费在线| 久草免费在线一区二区| 日韩午夜国产| 人妻少妇久久中文字幕一区二区 麻豆 | 日本欧美韩国日产片片在线看免| 歐美性天天| 中文字幕三四五区| 九九色色| 欧美黑人与女人91| 国产不卡免费在线视频| 老师充足的奶水小说| 欧美少妇人妻| 久久天天性久久伊人| 骚货 中文字幕 av| 亚洲高清无码在线桃色| 骚货人妻偷情自拍在线视频| 蜜臀va69| 日韩性爱播放| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 久久欧美按摩999| 四虎影视永久在线观看精品免费网站| 国内偷自视频区视频综合| 开心激情站| 日本熟妇精品九九| 日日噜噜夜夜狠狠视频无| 精精夜夜| 国产精品爱欲| 色狠人在线99| 韩国一级AAA| 美女刺激久久国产欧美| 97在线视频免费| 五月婷丁香| com 首页 18岁 禁区 女优 免费 精选 同城 | 在线看片国产精品每日更新| 色www精品视频在线观看| 欧美性爱精品七区| 久久99手机免费视频| 日本成a人v网站在线观看| www.91色综合| 日本熟女不卡视频| 日本男人插女人的逼黄色| 日韩一区二区精彩视频| 亚洲黄日韩无码专区| 国产婷婷综合在线观看| 精爱久久| 美女极品一区二区三区| 色婷婷日韩精品一区二区三区| 在线看片国产精品每日更新| 久久人妻一区二区三区高清| 亚洲九区| 大香蕉免费3| 欧洲乱码视频| 97天天爽| 国产黄片在线免费观看| 夜夜黄| 色色婷| 老熟妇乱轮| 目产99999久久999| 亚洲男人bt天堂| 久久精品国产精品一区| 日日噜噜夜夜久久亚洲一区二区 | 97超碰精品| 91撸色网 玖玖网 欧美| 性爱免费视频成人| 97中文综合| 成年女人一区| 国产捆绑一区| 性欧美精| 啊好大好舒服| 操逼视频亚洲| 乱欲视频| 97在线视频网站| 爱啪精品一区| 色色99| 激情抓乳插进去啪啪啪日韩 | 精品一区二区综合熟妇| 天天欧美| 久久久久密臀视频| 五月丁香影视| 精品性爱一区二区| 岛国在线免费视频| 夜夜爽夜夜| 日韩精品电影| 久久天天摸| wwwcaobibi| 91性感在线| 韩日精品福利视频一区不卡在线免| 韩国一级AAA| 91狠狠综| 国产在线激情| 色悠久久久av| 欧美激情片一区二区| 久久精品高清AV| 欧美色女人| 日本精品加勒比海一区| 久久久久久久久久久久久久久久9| 综合色图区| 狠狠色狠狠色狠狠五月| 肏逼视频日本| 国产女同在线观看视频| 久区视频| 插B在线观看| 狠狠图片青青草| 日韩人体偷拍| 日本熟妇一区二区三区| 久操婷婷| 国产99999久久精品| 按摩中文字幕| 久久久久久久久久久人妻| 人妻人人操| 国产 丝袜 欧美中文 另类| 国产精品99精品视频网站| 麻豆精品一区二区三区四区免费观看| 亚洲深夜福利| 久久久久久久97| 91丝袜在线视频| 在线观看A啊啊啊| 九一综合精品视品av| 操碰97| 亚洲最大成人a毛毛片| 无码操逼视频一下| 亚洲人成网站7777| 操国产高清| 视频不卡中文字幕| 试看日韩黄片| 在线免费观看高清无码视频| 日日夜夜骑| 久久久久久人体| 91美女片在线| 日韩精品在线视频,日韩精品……| 上床不卡网站| 久久视频,这里只有精品 | 久久久亚洲熟妇熟女| 熟女人妻精品一区二区视频 | 久久女婷| 天天综合网在线| 动漫片子网站3黄| 亚洲色图加勒比| 1204金沙人妻懂旧版免费| 乱老熟女一区二区三区| 物业黑人 AV一区| 四虎精品永久在线观看| 麻豆 美女 丝袜 人妻 中文| 呦呦一区| 日韩欧美tv一区二区在线观看| 91大神精品长腿在线观看网站| 91性高朝久久久久久久久| 乱伦1色页| 日本久久精品| 亚洲棕合电彰| 欧美亚洲清纯| 91少妇| 欧美日韩电影成人在线| 九九热九九| 蜜臀av中字字幕网站| 粉嫩AV一区夜夜嗨| 大色网久久| 啪啪视频免费在线观看| 色欲无码人妻日韩欧美精品| ?亚洲伊人伊成久久人综合网| 丁香五月婷婷啪啪| 亚洲中文字幕日产无码久久| 欧美精品亚洲精品日韩传电影| 欧美劲爆第一页| 淫荡少妇免费| 嗯嗯嗯啊啊啊操的我好爽| 国产精品电影推荐| 天天日夜夜爽| 性生活无遮挡纯毛片在线看| 欧综合网| 99天天超碰| 玖色av| 国产无马在线| 天天日老熟妇| 精品人妻15区| 色婷婷视频| 天天干2019| 麻豆天天躁天天揉揉AV| 自怕偷自怕亚洲精品| 中文字幕 人妻不满 在线视频| 久久久爆乳翘臀一线天伦理视频| 人人操人人射人人干| 96麻豆精品一区二区三区| 国产午夜精品在线观看| 国产亚洲一黄| 婷婷8月天青娱乐| 人妻日日干| 91九九九逼| 夜夜嗨TV| 亚洲一区二区中文字幕| 亚洲日韩久久精品一区| 制度丝袜99| 美日韩一卡二卡三卡免费人妻精品| 97欧美资源| 欧美中出1| 国产成人天堂| 人人插人人摸人人| 伊人少妇久久久| www.yeyecao| 91+欧美| 精品九九九| 99无码| 亚洲久9| 婷婷九月| 久久久蜜桃臀无码视频| 天天摸,夜夜摸| 久久国产精品一区二区| 国产热RE99久久6国产精品首 | 亚州色阁| 少妇久久久| 欧美黄色图片| 人妻一二三区| 蜜乳av一区二区三区四区不卡| 成人性爱av| 欧美大片天天看| 99久久久无码精品国产人| 爱欲AV| 国内精品a| 中文字幕超碰CAO| 操逼操逼逼操操逼91 | 都市久久精品激情亚洲| 欧美日韩亚洲高清不卡一区二区三区| 精品人妻一区二区三区在| 国色天香av| 日本αv| 成人热久久精品| 亚洲导航深夜福利| 91亚洲黄色网| 亚洲美乱| 国产精品久久久久久无码红治院| 操逼短片| 激情六月婷婷| 亚洲人体视频在线观看| 国产精品久久久久久久免牛肉蒲团| 综合伊人网12色| 97自拍一区| 在线中文字幕极品av| 97在线观看免费| 青草视频在线看看看看看看看看看| 91骚熟女| 九区国产| 天天综合日韩网| 亚洲免费成人在线高清无码视频| 精品成人久久久人人亚洲| 91蜜臀熟女| 脫衣舞一区二区三区| 1二区9| 97精品综合| 天天欧美色| 99久久久无码精品国产人| 免费国产| 国产视频一区二区三区久久亚洲天堂| 特级毛片特黄久久免费看| 亚洲麻豆18发?| 中文啪啪视频| 色噜噜人妻丝袜a∨先锋影| 久久大黄片| 一区二区三区四区在线不卡| 欧洲射精91| 久久精品国产免费观看99| 久久久久国产精品久久久| 欧美97视频| 在线观看av区| 少妇人妻好深太紧了vr91| 熟女少妇视频| 亚洲色综网| 91爰爱欧美| 国产成人资源| 曰韩av中文字幕专区| 人人摸.人人色| 青青草福利视频| 狠狠97| 男人把坤坤插入女人的下体 | 亚洲天天影视色综合| 99热超碰| 丁香六月婷婷久久综合| 色欲日韩欧美在线一区| 清纯唯美亚洲综合| 少妇淫妇久久久久久久| 亚洲一二三四区在线免费看视频| 蘋果手機免費看成人Av| 日产狠狠干| 日韩人妻一区二区精品| 国产一区在线观看无码AV| 全国男人天堂网| 久操影视| 后入日本1234| 国产白丝在线| 91丝袜激情在线| 玖玖在线视频| 久热超碰| 狠狠躁AV| 97WW精品| 91女网站| 欧美性爱97超碰| 狠狠久久亚洲欧美专区| 亚洲AV无码国产精品久久久久| 亚洲自拍天堂| 探花一区二区三| 伊人久久在线视频观看| 国产东北女人在线视频| 国产成年精品高清在线观看91| 天天射天天操天天干天天吃2018 | 久久精品国产亚洲5555| 日韩无码视频黄色| 91啦人妻| 18禁精品网站在线看| 北约熟女超碰| 国产91精品福利在线| 在线无码操| 强奸xx国产| 大香蕉啪啪啪| 色播丁香| 91亚洲欧美色图| 午夜毛片高清免费不卡| 蜜乳av一区二区三区四区不卡| 亚洲AV色图一区| 超碰久超碰久| 我要去看2个日本美女.com曹逼| 久久精品国产精品一区| 国产在线视频二区| 丰满岳乱妇一区二区三区| 亚洲色图日韩精品| 开心五月天激情网| 91伊人大香蕉| 中文字幕日韩情色| yw尤物av无码点击进入麻豆| 日本丝袜人妻内射| www99热| 加勒比日本在线| 四虎影视国产精品| 1204人成网站色www| 国产传媒日韩| 美女国产一区二区久久 | 91人人| 国产极品精品美女视频| 99久久网站| 日韩少妇丰满亚洲| 97爱碰| 激情色图| 黄色一级视| 啊好爽受不了无码| 96一区二区三区| 日韩欧美福利视频看看| 亚洲日韩成人性爱视频| 中文字幕老熟妇黄色视频| 日韩一级二级三级免费看完整版国语版 | 日韩极品无码B| 极品色www影院| 超碰97色色| 欧色网址| 综合久久欧美| 久久久久精| 91天射| 欧美后入式| 一区二区免费电影久久| 99色在线| 亚洲性综合11| 在线a v| 婷婷丁香久久| 91AV天美在线视频| 在线观看不卡一区二区三区| 亚洲精品男人的天堂| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 亚洲综合影片| 水多多映视AV| 天美传媒国产原创中文字幕亚洲欧美另类 | 国产福利夜| 91丝袜在线观看| 91超级碰| 青青草在线视频播放器| 久操网线| 91色s| 日本天天操| 97av,com| 女人被添高潮免费视频| 欧美最婬乱婬爆婬牲视频| 深夜激情无码| 青草一区二区| 久久极品一区二区| 97综合在线| 精品女人999| 欧美色性情| 久久香蕉国产传媒一区剧情天美| 日本大香蕉综合网红本杳社区 | 51一区二区三区| 日操粉逼逼| 激情婷婷丁香| 国产精品久久久久中文字幕| 色就色综合| 天天综合网~91综合网| 蜜臀AV网站| 精品69网| 330Dv国产女人终合视频极品人与兽| 少妇人妻好深太紧了vr91| 少妇高潮喷水无套久久久久久| 亚洲av无码成人精品国产| 欧综合网| 久久亚洲人妻| 大香蕉久| 天天爽夜夜爽夜夜爽精| 大奶啊啊好爽 | 久久99精品视频| 99在线免费视频| 91亚州日韩高清| 手机av天堂久久久久| 天天拍天天操| 性生活久久久久久久久久| 精品久久久不卡一区二区| 九久久精品| 欧美九九九九九| 国产最火爆久久国产网站网站| 国产精品久久天天干| 亚洲五码一区二区三区| 成人老鸭窝人人在线视频| 96精品久久久| 国产日逼视频| 人妻精品综合中文字幕在线 | 中文字幕精品一区二| 亚洲精品中文字幕一区在线视频 | 极品极品色影院| 日韩精品.久久精品.AV女优.天美传媒| 女色视频社区| 亲子敌伦对白在线播放| 国产成人www免费人成看片| 97精品视频免费| 97在线视频观看| 欧美综合自拍成人自拍第二十页| 精品一区二区三区蜜桃臀www| 自拍偷拍国产欧美日韩韩| 欧美熟爽综合| 试看60秒 爽| 亚洲精品日日夜夜52| 亚洲男人的天堂网| 久久久久少妇| 91久操| 天天天堂影视日韩亚洲91| 高清国产精品福利网站| 91老司机在线视频免费观看| 综合欧美亚洲| 色综合91| 亚洲色图殴美色图激情乱伦| 大但人体久久久久| 噜噜在线| 欧美 亚洲 在线| 色9999日韩国产| 欧美人妻制服| 绑缚麻绳人妻寝取完整版| 午夜操逼不卡| 大逼色网站| 91亚洲人电影| 可免费观看的av毛片中日美韩| 99爱视频| 欧美经典一区二区三区| 天操天操夜操夜月月年年操操 | 91粉芽高清在线一区二区| 国产精品免费视频不卡| www.色婷婷色综合| 91精品微拍福利| 无码天天操| 九九九九九九综合| 国产精品一区二区亚洲人成毛片| 亚洲操逼视频网站| 啊视频在线| 天天操天天射青青草| 亚洲综合另类欧美久久久| 亚洲av综合色区图片亚洲| 插插综合网天天影视网| 蜜桃精品视频一区| 精品女人999| 少妇高潮对白在线观看| 波多野结衣AV无码一区| 校园春色第一页| 久久精品男人的天堂| 亚洲男人天堂网久久| 精品久久視頻在线| 67194国产| 婷婷五月综合激情| 极品尤物在线观看| 国产精品一区av在线| 99re这里只有| 1024手机看片欧美日韩| 91五月天| 91在线页| 久热超碰| 精品久热| 99热啪啪| 色婷久久| 后入美女国产| 9久综合网| 天天综合色电影| 最新日韩黄片| 亚洲日韩av专区无码| 国产精品97超碰| 又摸又舔在线观看网站| 91丝袜在线观看视频在线观看| 超碰99热| 久久日韩毛| 99免费视频| www.色婷婷.com| 美女的肌被草喷水视频| 国产熟女二区| 日本三级韩国三级美三级91| 天欧美在线| 欧美亚洲丝袜人妻制服中文99| 91综合色| 日韩Va亚洲va欧美Ⅴa久久| 国产福利影视| 性色一线| 日韩 欧美 国产 麻豆| 婷婷五月天色网| 人妻天天爽天天爽三区| 欧美精品久久久久久久丰满| 91婷婷| 和协影院中文字幕三区| 日韩综合第八区国产精品| 超碰97伊人| Sekablack无码一区| 视频在线观看免费一区二区三区| 人人扣人人操| 欧美视频第二页| 天天情欲宗合网| 男人天堂网址| 99热精品在线观看| 啊啊啊97视频| 成人性交午夜免费片| 国产精品嫩草久久久久| 日本污ww视频网站| 国产视频小说| 小说区 图片区色 综合区| 日本高清_区二区三区| 欧美熟爽综合| 五十路一区无码| 开心激情站| 亚洲欧美色图片| 91丝袜美腿网站| 国产精品片| 九九九九免费视频| 天天操夜夜操狠很操| 天天综合精品| 极品色综合| 色墦五月丁香| 夜夜嗨一区二区三区直播内容| 亚洲综合中文字幕有码| 亚洲日本天堂| 婷婷AV一区二区三区| 久久婷婷苹果| 人人妻人人狠人人| 欧美综合色| 五月丁香啪啪网| 97日亚洲欧美| 久久一二区四| 国产传媒午夜理伦精品| 伊人精品视频| 91精品丝袜久久久久久| 欧美人与动性人交a| 淫乱图区| 亚洲 欧美 91| JIZZJIZZ国产精品喷水| 一级性爱网| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 91+欧美| 亞洲久久直播| 国产熟女无套内射| se,,,亚洲欧美| 国产又爽又黄| 亚洲精品毛片在线观看| 韩日欧亚a级| 小骚逼被操的爽不爽| 美女露胸露屁股| 性爱av在线免费观看| 国产精品久久妻无码网站| 国产2.3.4区| 青草香蕉网| 久热超碰| 五月丁香色婷婷| 在线一道啪| 眼镜人妻101.com| 精品国产乱码久久| 精品日日人妻| 男生通女生屁股| 欧美日韩天堂| 亚洲少妇色图自慰直播| 国产精品午夜成人福利| 中文字幕在线观看丝袜| 尤物一级在线免费观看| 黄色片一区二区三区四区五区| 91美女在线观看| 操国产高清| 色图综合网| 亚洲国产97| 亚洲熟女诱惑| 伊人超碰97| 亚洲图片第一页| 欧美劲爆第一页| 天天久久| 性色av大全| 国产精品无码av在线 | 亚洲欧美国产其他二区| 97电影院超碰| 少妇内射www在线观看视频| 大香蕉一人| 91丝袜美女视频| 中文字幕久久婷婷丁香五月天| 亚洲色综合| 人妻中文字幕精品无码 | 骚逼一区二区| 怡红院亚洲怡春院av| julia ann久久| 精品国产乱码久久久影院| 97碰碰色| 亚洲第一狼人丝袜美女另类| 图片区小说区| 超碰亚洲97| 日韩少妇在线视频| 熟妇女伦乱视频| 亚洲一区二区三区中文字幕| 色蜜AV| 91老妇女| HEYZO高无码国产精品227| 野狼激情网| yazhouzaixian| 黑人美精品 A片| 又大又长又爽| 96精品久久| 99热网站| 蜜臀av中文字幕| 另类天堂| 欧美精品四区| 欧美人妻一区二区| 91碰超| 宗合情欲网| 国产又黄又粗的视频| 男人下部插入女人下部 | 色噜噜人妻丝袜a∨先锋影 | 亚洲激情网一二三四区| 天天狂操夜夜狂日| 色哟哟-国产专区| 国产日韩色综合| 9久久精品| 九九九九日本| 久久激情网| 日韩欧亚中文在线| 亚洲中文字幕妇伦久久| 十八禁视频网站| 嫩草影院在线观看精品| 久久黄色视频一区二区三区| 欧美亚洲高清| 精品国产乱码久久久久久蜜臀| 97射欧美| 国产日韩中文字幕欧美| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 青青三级视频| 区二区亚洲婷| 粉嫩AV一区夜夜嗨| 久久久久久久久久黄色网| 天堂资源欧美| 69综合网| 啊啊啊啊啊啊好湿好爽视频| 久久嫩草国产成人一区| 日韩一级二级在线| 97se综合网| 97精品视频免费| 综合天天网| 噜噜噜亚洲精品| 美熟女逼导航AV操逼| 98福利在线视频| 激情婷婷丁香| 熟女熟妇一区二区三区视频| 草B在线| 久久精品国产亚洲粉嫩| 丰满人妻-区二区三区免费看| 嗯,啊。舔我逼| 老鸭窝成人| 情色大香蕉| 啊啊啊啊好疼| 97天天操| 黄片视频观看| 99在线免费公开视频| 天天弄天天操| 日韩黄色一区二区三区| 超碰国产在线| 97精品国产97久久久久久户外免费| 久久女人视频| 九九九影院| 丁香7月婷婷| 天堂性色| 日熟女| 亚洲女毛多水多21P| 丁香六月啪啪| 日本999精品视频| 久久人妻无码毛片A片麻豆| 亚洲中文字幕久久无码精品| 蜜桃久久一区二区| 亚欧毛片基地国产毛片基地| 中日韩久久久| 精品超碰中文在线| 狠狠躁天天躁日日躁| 久久99久久99精品天美传媒棢·纸:. | www.AV有限公司一区| 超碰97人人乐| 亚洲日韩人妻中文字幕一区| 乱伦图一区| 中文字幕五区| 天天天天天超碰| 五月天精品| 日本淫乱女一区二区三区视频| 国产最火爆久久国产网站网站| 天堂俺去俺来也www久久婷婷| 激情五月丁香五月| 久久爽爽精品| 亚洲揄拍网| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 色女99一级片在线观看| 无码九九九九| 国产高清自拍| 国产女人91精品嗷嗷嗷嗷| 蜜臀精品1区2区| 国产AV线| 亚瑟国产精品久久无码| 丁香五月影院| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 韩国轻伦国内自拍一区| 极品AV网站在线观看| 美女黄网| 色婷久久| 熟女一区二区三区| 97综合| 丁香婷婷久久| 成熟熟女国产精品一区二区| 欧美成人性活片| 青青草天天亲夜夜操网| 久久一区,青青青青草视频在线播放| 人妻丰满熟妇av无码区蜜桃| 日韩国产欧美伦理在线| 超碰亚洲97| 91精品国产91熟女| 日本性爱网址| 二对二中文字幕。| 色图综合网| 欧美激情五月天| 亚洲人久久久网| av网站国产主播在线| 久久艹逼视频| 涩涩久久精品| 人妻偷拍一区二区三区| 亚洲 欧美 手机在线观看| 丝袜综合色图| 夜夜高潮夜夜爽夜夜爱爱一区| 国产日逼视频| 麻豆久久久久久久久丝袜| 欧美性夜| 日本 欧美 亚中文字幕| 人妻色情天天操| 日韩性爱电影一区| 啊啊啊啊啊啊啊啊要喷了| 日韩免费三级黄片电影| 极品粉嫩一区二区| 99婷婷一区二区| 女人爽到高潮潮喷18禁网站| 超碰是碰在线观看| 国产三级日产三级韩国三级| 日日日大屁股骚女人精品| 26uuu欧美日韩| 国产免费久久精品99re韩国| 亚洲国产欧美一区二区潘金莲| 中文字幕二区日韩天堂| 国产视频人人网| 97舔舔| 国产精品久久久久婷婷二区次| 久久综合五月天| 无码78| 韩国久久97| 黄片www视频免费| 亚洲丝袜色图| 一本久道在线综合视频| 97干天天| 一级@啪啪视频| 人妻少妇久久中文| 凹凸视频特色日本特黄| 91亚洲影视| 欧美日不卡| 亚洲AV成人无码一二三久久| 四季AV一区二区凹凸精品小说| 成人无码在线超碰网| 骚人妻少妇视频| 色综合网1| 99久久久| 日本不卡三级网在线播放| 免费一级性爱久久| 免费99精品国产自在在线| 日本道久久综合色色| 91bbbbbb| 熟妇艹鸡八| 人人 操人人 操人人| 伊人嫩草| 成人综合色网| 亚洲欧美97| 第45页一区二区| 全球成人中文在线| 清纯唯美亚洲综合| 亚洲色图加勒比| 懂色AV蜜臀无码精品APP| 中文字幕在线免费观看| 宗合情欲网| 欧美黄色片AAAAA| 欧美片第一页| 97久久久久久久久久| 色综合色欲色综合色综合色综合| 超碰99在线| 色女99一级片在线观看| 久久久久亚洲av综合波多野制衣| 日本免费一区二区不卡| 97中文超碰| 人人操,操人人| 大奶的诱惑| 韩日巨乳美女免费视频在线观看| 天天色粽合合合合合合合| 亚洲激情综合另类男同| 大干人妻| 神马久久久久久久久久久久| 色色色欧美| 麻豆久久精品亚洲精品88 | 国产九九九九九九九九| 日本操逼视频在线| 色97综合中文字幕| 人妻插插人妻人| 亚洲另类在线观看| 欧美亚洲| 2024黄色视频| 日韩欧视频| 97国产精品久久久久 | 国产精品96久久久久久| 女人妻一区| 丰满人妻一区二区三区| 天天日B夜夜干B时时操B| 韩国三级一线观看久| 97在线观看视频| 激情视频一二三| 日韩精品人妻中文字幕有码午| 国产97色在线| 韩三级a视频在线观看| 精品久| 少妇天堂| 91久久久视| 男人的天堂不卡一区二区| 人人摸人人叼| 狼狼色丁香久久婷婷综合五月 | 亚洲第一综合| 欧美性爱伊人| 欧美 亚洲| 97爱爱官网| 国产黑白丝在线| 天天操天天7| 日韩欧美被操黄免费观看| 极品粉嫩一区二区| 欧美日韩国产传媒在线精品| 五月丁香| 久久精品三级影视| 丁香六月东京热| 国产AV久久野战精品| 国产亚洲女v在线观看| 亚洲熟妇一,二,三期| 九九热九九| 91东北熟女| 国产又黄又爽| 欧亚日韩中文在线| 老熟女91视频| 97精品网| 欧美极品| 超碰成人人人爽人人爽| 精品78| 中文久久| 三男一女不戴套的A片| 亚洲色图欧美激情| 91天天| 日韩欧美操逼xxx| 亚洲色图尤物视频| 综合色一区三区二区| 亚洲国产成人综合碰碰三级经典| 韩国一级做a久久久久| 搡老女人911熟妇老熟女| 亚洲综合影院| 国产精品久久久久久久电影渣男| 家庭乱伦国产|