色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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在线播放| oumeisetu综合| 国产精品探花视频| www.av在线观看| 乱伦日本中文自拍| 亚洲激情在线| 97chaopenrihan| 亚洲综合888| 大香蕉综合在线| 国产性爱在线视频一区二区| 人妻在线大香蕉| 亚洲国产成人7777| 日韩成人在线性爱视频| 亚洲精品白浆高清久久久久久| 怡春院久久| 夜夜做夜夜爽精品视频| 是还免费视频1727我| 一区二区三区 丝袜 高跟 美腿| 大香网站| 国产精品久久久鸭无码的功能| 少妇一级婬片免费放一级a性色. | 国产av波波国产精品| 日韩无码一区二区三区| 啊啊啊爽爽| 国产中文字幕在线观看| 97在线看| 日韩熟女无码| 中文字幕日韩电影人妻| 911av网站免费观看| 91精品亚洲内射孕妇| 久久久久久亚洲中文| 无遮挡一级毛片视频免费的| 国产熟女完整版中字| 国产精品一级毛片不卡视| 乱伦a片视频| 2020中文在线一区二区三区| 人人插人人摸人人| 婷婷视频在线免费观看| 国模少妇一区二区三区| caorenqi shipin| 欧美性爱在线无码| 亚洲男人的天堂AV| 中文字幕日韩人妻视频一区二区三区交换夫妻| 国产免费一区| 性高潮久久久| 色婷婷国产精品一区在线观看| 国产乱子伦久久精品综合一区二区三| 色综合国产在线观看| 精品亚洲一区在线观看| www.91久久| 伊人五月天| 美女露胸露屁股| 欧美一二三区四五区| 青青国产在线拍揄自揄拍| 欧美久久人妻少妇一区二区| 粉嫩久久久极品| 欧美色图片色哟哟| 麻豆黄色五月天| 国产夫妻一区二区| 69精品| 午夜福利国产欧美日韩夜夜| 国产九九九九九九九九| 99热综合在线| 久久久女人| 玖玖爱影院| 四虎国产精品永久入口| 亚洲第一无码播放立川理惠| 久久大香蕉手机高清| 蜜桃久久久久久久| 亚洲天堂资源在线| 亚洲女毛多水多21P| 大香蕉久| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 私人尤物在线精品不卡| 精品一区二区亚洲国产| 一区二区三区日韩欧美| 欧美色图第一页| 欧美,日韩综合久久| 中文字幕jul-617人妻熟女| 91久久精品国产| 少妇色综合| 综合色好色| 亚洲高清国产理伦片| 性欧美另类高清| 91亚.色| 国产在线综合福利网站| 中文字暮97| 成人资源中文字幕在线观看| 久久免费精彩视频| 黄久久| 日韩免费福利在线观看| 91亚州日韩高清| 亚洲色综网| 黄色AV免费| 五月天偷拍| 亚洲影视高清第一页| 色欲天天综合久久久无码网中文| 亚洲日本韩国在线| 九九九九一区| 日本综合久久| 日日骚一区二区三区| 三级色综合| 国产伦精品免编号公布| 欧州一区二区三区四区| 亚洲精品欧洲精品| 国产午夜在线观看视频| 久久久久密臀一区二区| 国产一进一出视频网站| 日日骚精品视频| αⅴ天堂| 久久视频,这里只有精品 | 91狠| 日韩97P| 97碰碰色| 老女人日韩美91| 亚洲天天操| 99免费视频| 欧美日韩制服| 神马久久久久久久久久| 26uuu成人影片| 日韩ab网| 色伊人91| yazhououmeizongya| aaaa少妇高潮大片| 大香蕉淫人| 五月激情视频| 国产成人久久精品蜜臀| 日本一区99| 成人av福利在线观看| 久久最新视频免费观看| 中文字幕日韩人妻视频一区二区三区 | 午夜天堂精品久久久久91| 日日嗷| 亚洲色吧网| 五十路熟女人妻一区二区在线观看| 日本久操视频| 九九精品无码专区免费| 2019亚洲男人天堂| 亚洲综合色网| 日本免费一级AAA大片器| 超碰精品人妻狠狠干| 色老汉色| 爱射综合| 日欧操屄| 免费久久9999| 国产欧美岛国精品一区| 草B在线| 久久久久久久久成人av解说| 综合亚洲欧美| 99re8超碰| 激情无码日韩| 天天噜| 樱花草社区www中国| 极品尤物自安慰| 黑白配性爱AV成| 久久久久免费少妇| 日本性爱欧美性爱| 91日产桃蜜| 亚州操操穴网| 婷婷综合网站| 亚洲激情综合另类男同| 亚洲人妻五月丁香婷婷| 91性高朝久久久久久久久| 青青草视频导航官网| 欧美日韩 强奸乱伦| 日本大香蕉综合网| 涩亚洲欧洲| 麻豆性爱视频在线播放| 欧美老妇综合网| 久久 国产精品 一区| 波多野结衣之双飞调教在线播放| 久久宗合97| 日日骚 av| 大香蕉五月天婷婷| www.黄色在线| 蜜臀AV秘一区翔田千里| 这里只有97精品| 999 久久久| 肉丝网站91| 综合色色网| 国产三级中文有码在线视频| 国产网红精品| 日韩黄片影院| 日韩欧美午夜一区二区| 国产精品久久久久久高清无码免费看| 久久久久久久91| 久久人妇| 人妻无码久久一区二区三区免费| 伊人久久青青草| 夜夜草网站| 3d成人精品一区二区| 亲子敌伦对白在线播放| 亚洲欧洲自拍图片专区满春格| 97亚洲精品超碰| 精品国产乱码久久久影院| 人妻熟女一区二区| 大乔未久88一区| 久久超碰大香蕉| 在线视频一区二区传媒| 9 7超碰在线免费观看| 在线观看一卡二卡| 精品久久久久9999| 日韩紧密久久| 神马久久久久久久久久| 欧洲小说色图视频另类| 91操人| 久久久内射良家| 欧美91色| 欧美高清91| 91中文字幕在线观看| 另类欧美综合| 免费观看一区| 亚洲男人久久综合天堂| 精品二999| AV一二区| 日韩图区| 精产品久久| 国产精品久久久久久久久久久久| 91内射| 成人av在线播放| 国产绿奴视频在线观看| 久久肏大逼| 欧美亚洲日本激情在线| 小草三级久久观看| 欧美伦乱爱| 亚洲自拍欧美色综合| 97在线播放 | 搞中出久久| 中文字幕五月婷婷免费| 久久美女福利是上海美女| 一区二区三区机械有限公司| caopeng97| 青青草在线视频欧美| 久操网在线| 久超碰这里只有精品| 人妻精品一区二区| 亚洲 日本 国产 综合| 天天躁日日躁XXXXYY| 五月天综合在线| 日本九九久久99播| 亚洲国产亚洲天堂| 欧美大片91| 2019久久久久久久久福利| 强奸a片网| 97亚洲一区| 东北老女人的激情视频| 精品一区二区三区18| 毛片久久| 成人在线日韩| 亚洲熟女乱综合一区二区三区 | 欧美黄片免费在线观看视频| 午夜黄色免费在线观看| 欧色性第一页| 偷拍偷窥与盗摄视频专区| 日美免费黄片| 中文字幕免费观看| 一起草高清无码| 日本精品第一视频在'| 99精品无码| 99国产精品久久久久久久成人热| 欧美亚洲首页| 日韩探花精品在线视频| 大香蕉免费3| 亚洲第一精品在线视频| 亚洲免费精品一区| 亚洲小说视频| 色情婷婷| 欧美精品不卡一二三四在线91| 亚洲成人精品在线一区| 色一射色一射| 91无遮挡| 欧洲无码一区二区| 91熟女丨老女人| 免费A V在线播放| 午夜天堂精品久久| 精品国产av一区二区三区四区入口| 99色色网| 性感美女91影视| 福利在线观看一区二区| 99精品久久久久久| 顶级丝袜熟女一区二区三区| 成熟熟女国产精品一区二区| 日本操大逼| 97色涩| 久9re热视频这里只有精品| 农村妇女一级二级三级视频| 96超碰网| 五月天激情网图片| 少妇天堂| 精品区9| 香蕉99秘 一区精品蜜桃臀| 日韩性爱网址| 99在线精品视频| 99精品久久| 超碰97男女| 日本欧美成人片AAAA| 台湾佬大香蕉| 男人的天堂2010| 91人妻在线视频| 男人的天堂2018东京热啪啪啪| 人妻精品一区二区三区| 日本有码影片下载| 男人女人18禁片免费看网站| 91久久国产综合精品| 成全在线观看免费观看| 操死我了啊啊啊| 熟女人妻一区二区三区| 91美女片在线| 亚州色图狠狠干| 五月婷婷六月丁香网址| 精久久久| 日韩无码人妻| jiujiujiujingpin| 色区久久| 国产毛片在线| 久久久久99精品成人片蜜臀 | 国产高清自拍| 精品无码人妻一区二区免费蜜桃| 婷婷亚洲五月***久久| 日夜精品| 久9综合在线| 亚洲性爱高潮影院| 在线A日本| 久9综合在线| 欧美有码激情视频一区二区三区| 日韩精品资源专区二区| 97国产精品久久久久| 欧美淫穴| 精品一区二区人妖| 91在线视频国产网站| 国产乱人妻精品入口| 另类 日韩 熟女| 97鸡把在线视频| 日han少妇无码| 亚洲偷拍自拍在线视频| 日韩免费高清大片在线| 日韩欧美三级| 99国产精品久久久在线播放| 97九色人妻| 男女激情黄色网址| 国产Av超碰| 丰满人妻一区二区三区四区| 亚洲色情在线影视| 色欲人妻一区二区在线| 91大学精品激情戏| 欧美,日韩,亚洲视频| 日韩一级欧美一级国产一级台湾| 天天综合91入口| 97在线观看免费视频l| 国产欧美伊人| 亚洲操人| 两性色网| 眼镜人妻101.com| 久久这里只| 欧美洲精品一级| 国产成自自拍在线观看| 97视频观看| 国产一区二区在线电影| 思思热久久成人| 欧美色www亚洲国产阿娇要播| 久久久草草精品| 亚洲精品国产av天美传媒| 久久婷婷一区二| 91大学精品激情戏| 一区二区娱乐网站| 色99在线| 日韩成人精品中文字幕| 日韩不卡av一二三| 成人乱码一区二区三少妇| 国产精品蜜臀久久久久无码AV| 91岛国动作片| 欧美 亚洲| 岛国片在线观看视频亚洲| 欧美性爱91| 中国少妇XXXX做受| 免费的很黄很污的全部视频| 午夜操逼不卡| 国产精品极品美女视频| 国产成人精品日本视频| 亚洲天堂无码| 亚洲操操| 蜜臀AV成人精品蜜臀AV久久| 亚洲美欧999| 97青娱乐超碰久久| 亚洲欧美一区二区不卡视频播放 | 1769国内精品视频| 日韩卡一卡二卡三在线| 欧美成人性爱视频大全| 久久手机好看网站| 97久久精品亚洲中六字幕| 美女久久久久久久| 97在线观看免费| 精品人妻15区| 黄色免费网| 久久久精品91八戒| 欧美日韩操逼嗦吊| 夜夜嗨一区二区| 内射中出日韩在线观看视频| 9久久美女首页| 97在线亚洲| 99999re| 国产成人在线观看网址| 女同女同恋久久级三级| 大香蕉五月天婷婷| 狼天天狼天天大香蕉| 人人操天天爽| 国产精品午夜精品| 啪啪视频免费在线观看| 日本操大逼| 婷婷色五月激情| 亚洲限制级在线| 秋霞鲁丝午夜无码一区二区三| 人妻激情视频| 91精品久久久| 五月香婷婷| 殴洲老熟女| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 免费A片三p视频| 欧美东京热精品A∨| 丝袜六区| 色97国产69香蕉| 亚洲色图图片| 人人看人人摸人人色| 亚洲美乱| 久久9999 | 欧美青青视频| 97综合网| 九九亚洲| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 天天草夜夜草高潮片| 色牛牛AV| 天天日天天屌天天操| 亚洲丝袜少妇在线| 3p国产色噜噜一区| av线电影| 欧美伊人久久综合网| 色婷婷久久| 亚洲97p| 一区二区三区国产在线播放| 亚洲精品三| 91欧美综合在线| 啊啊啊好想要| 亚洲黄色影视| 久久风骚城市| 岛国视频免费在线观看| 九九九九日本 | julia高潮后不停追击中出| 精品无码人妻一区二区免费蜜桃| 国产在线观看一区二区三区| 婷婷成人五月天| 熟女91网| 日本熟妇人妻中出视频| 91欧美性| 日韩国产乱子伦App| 一区中文字幕二区日韩| 精品久久久久久中文字幕视频免费| 在线国产一区二区av| 97 九色| 十八禁视频一区二区| 伊人大香蕉在线| 欧美色宗合| 激情一区二区三区在线观看| 一区二区影视| 91在线页| 日韩激情电影中文字幕| 五月天伊人| 无码久久亚洲高清,| 一本一道人妻久久一区二区三区| 91操操操操| 青娱乐 成人娱乐在线| 国产高清亚洲日韩一区| 国产超碰在线一区| 蜜乳AV.COM| 91老熟女老女人国产老太| 少妇人妻好深太紧了vr91| 超碰97最新人妻| 人人看欧美性爱| 中文字幕诱惑制服人妻丝袜美丝袜美 | 免费一级黄色录像影片| 91在线国产后入风骚翘臀美女素人| 日本成人电影资源网| 青青操视频在线| 日韩成人大片在线观看| 精品午夜福利| 99精品热| 韩国一级婬片A片AAAAA| 久久久久9999| 激情欧美日韩女同久久| 国产欧美亚洲精品a第2页| 91综合天天| 美女黄页| xxx0国产在线播放| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 亚洲精品男人的天堂| 五月丁香黄色网| 亚洲揄拍网| 国产精品久久伊人| 天美精品原创av片国产| 97超碰中文| 激情丁香五月婷婷| 岛国黄| 床戏久久久av一区二区麻豆| 裸模AV女优| 激情五月天社区| 久久夜夜| 亚洲好色人妻| 中 文字幕一区二区三四 五 区日 日 骚| 欧美性爱三区二区| 啊啊啊好想要| 国产乱不卡| 后入内射蜜桃臀| 国产精品熟女乱伦| 人人人摸人人| 啊啊啊操死我| 激情四射婷婷六月天| 老鸭窝亚洲毛片| 久久久精品视频免费观看| 麻豆美女丝袜人妻中文| 日韩天天综合| 亚洲天堂日本| 4141514逼喷水三级片| 在线精品福利免费播放| 精品人妻中文字幕4399| 欧美高清第一页| chaopen97久久| 欧美国产有色电影| 成 人 影视 一区 二区 三区 四区| 国产91啪| 岛国片在线视频网站| 婷婷午夜清品久久久久久久性色视频观| 欧美色一二三| 动漫片子网站3黄| 思思99热| 婷婷五月天激情小说| 人人操人人操草草| 中国大陆国产高清AⅤ毛片| 91色交| 99久草| 9久9久9久9久视频网站| 人人摸人人舔一区二区| 精品九九淫乱男| 9久久美女首页| 蜜桃久久久久久久| 国产极品999| 97超碰jingpin| 亚洲综合五月天| 色婷网| 人人考人人摸人人干| 亚洲精品无码久久AV| 黄片qw| 国产三级在线现体验区| 国产精品免费1区2区视频| 欧美成人一级麻豆| 亚洲无码精品AV久久久| 国产福利一区二| 天天上日日上日韩精品| 国产精品成人AV片免费看网站| 99热在线观看| 亚洲一区日韩精品中文字幕| 婷婷干黄色| 久久精品久久久久久久久| 91大神精品长腿在线观看网站| 国产精品美女久久久久久网站| 国产精品福利视频| а√天堂资源官网在线资源| 无码区蜜乳| 无码不卡亚洲成?人片| 97久久精品亚洲| 99综合自拍| 国产久9| 午夜一区二区三区国产| 午夜综合在线| 婷婷色香| 日产123区精品免费观看| 色97综合中文字幕| 97国产|免费| 99re超碰| 无码最新| 99精品网| 丝袜美腿校园春色| 久久精品国产97欧美精品亚洲| 欧美成97爱| 在线视频亚洲无码| 欧美色性爱| 920日本午夜免费| 熟妇艹鸡八| 夜夜嗨TV| 97无码视频在线播放| 99精品视频在线观看免费| 柠檬AV导航| 亚洲美欧999| 伊人久久亚洲色欲综合网站 | 久精品无码av一区二免费国产在线观看| 一区二区娱乐网站| 快点操死我| julia ann久久| 亚洲91网| 黄片www.| 大香蕉一人在线| 青青草公开在线免费不卡视频| 一起草三级AV电影在线观看 | 天天综合网AV91| 四虎影视精品| 日本丝袜人妻内射| 青青草自拍视频在线播放| 国产人妻精品一区二区三区秋霞 | 亚洲第2页| 一牛影视久久久一区二区三区| 国产精品密臀网在线观看| 97碰碰色| 国产精品久久久鸭无码的功能| 亚洲不卡av在线| 78精品在线| 色哟哟511老熟女| 亚洲不卡不卡中文字幕不卡| 色原狠狠天天天| 日本三级一区二区 在线| 神马精品视频| 国产91美女视频| 久久精品店| 99re只有精品| 男女啪啪啪18禁网站| 99热这里只有精品99| 久久久内射良家| 日韩在线一区二区| 熟女天天干| 一区二区乱码福利| 嗯嗯嗯好爽| 国产精品一区在线播放| 午夜精品久久久久久久99蜜桃一| 欧美夜色| 亚洲熟女精品| 亚洲欧美setu| 亚洲欧美精品国产一区二区| 在线人妻熟女一区二区三区四区五区| 国产97在线 | 亚洲| 日本免费亚洲欧美| 91亚洲丝袜熟女| 激情久久av一区av二区av| 久久一本大香蕉| 成人性爱av.com| 亚洲污污网站| 顶级丝袜熟女一区二区三区| 91精品久久久久久久久久| 欧美黄色大片在线观看| 亚洲色香| 丝袜美腿制服人妻二区中文字幕 | 97资源视频| 无码视频一区二区| 亚洲啪啪视频一区二区| 2020中文字幕在线| 综合久| 亚洲色电影在线| 国产av高清版| 国产精品久久久久久高清无码免费看| 久草资源在线视频官方总站日韩丝袜美腿| 国产AAAAAABBBBB| 欧美久久人妻少妇一区二区| 亚洲成人美女无吗| 欧美激情 亚洲色图| 天天爽天天操| 日韩性爱啪啪视频| 91欧美丨精品丨入口| 加勒比久久综合网高清| 91成人亚洲色图| 性欧美另类高清| 日韩操逼性鲍| 熟女熟妇伦久久影院毛片一区二区| 国产精品秘 福利姬在线观看| 欧美国产婷婷久久| 日韩国产十八禁| 熟女精品va中文字幕| 亚洲春色欧美| 69综合网| 十八禁啪啦拍视频无遮挡| 午夜毛片亚洲精品片国产久久久| 九月AV| 日本操BAV| 九九热AV| 中文字幕精品亚洲熟女| 荡小穴在线观看| 欧美一级国产一级| 欧美综合亚洲综合| 亚州欧美一区| 爆乳免费黄网站| 老司机射| 国产午夜精品理论片一二三区区| 欲女人妻性色av| 欧美日韩国产中文超碰| 亚洲乱码国产乱码精网站| 欧亚日韩中文在线| 日韩精品系列| 蜜臀AV成人精品蜜臀AV久久| 91狠狠综合久久| 亚洲小电影免费涩涩成人在线高清| 抽插一区二区视频| 久久久久久久久久黄色网| 人妻熟女午夜精品在线| 岛国AB视频| 成人羞羞视频国产| 欧美91网| 欧亚揄拍偷拍精品视频 | 三级日本一区二区三区| 久草电影网| 欧美少妇性乱| 射丝袜高跟鞋99| 亚洲中文字幕av| 久久成人午夜精品影院| 亚洲欧美日韩制服另类| 青草地一本线一区二区三区| 夜夜免费视频| 精品乱码久久久久| 日本天堂网| 色色无码| 欧美在线播放aaaa| 日韩人妻中文视频| 精品人妻中文字幕4399| 搡老熟女免费视频| 极品另类| 69精品| 欧美亚洲首页| 亚洲欧美综合网| 97超级色碰碰| 另类成人首页一区| 91欧美综合在线| 狠狠夜色午夜久久综合在线| 狠狠搞 亚洲91| 91久青| 99热超碰| 久久亚洲骚逼综合| 亚洲s在线观看| 超碰97欧美在线| 精品妇女一区二区三区| 亚洲婷婷五月天| 99无码精品| 久久女人一区二区三区| 日日夜夜干| 亚洲精品丝袜-不卡成人免费……| 午夜综合在线| 麻豆成人av| 日韩 欧美 国产 麻豆| 欧美91精彩| A一级色女| 中文字幕av一区二区三区人妻少妇 | 啊啊啊啊啊舒服| 日韩av情韩国爱禁区av一区二区| 蜜桃精品一区二区三区久在线| 校园春色综合香蕉| 黄站在线免费观看| 96久久久久久久| 91bbb| 久久这里只精品免费福利| 男女猛烈无遮掩视频免费软件| 超碰国产精品无码| 国产精品呦一区二区三区| 亚洲九月丁香| 色五月婷婷在线| 97色在线观看| 色综合久久夜色精品国产天堂| 久久久久久久久久久久欧美日| 日本精品一区二区三| 91狠狠狠| 人人妻人人爽人人精品| 干B网| 国产精品久久久久无码Av网曝门| 日本免费专区| 激情五月天色播| 九九英色视频| 操老熟女AV| 久久东京热久久| 家庭乱伦国产| 色色婷婷五月| 亚洲精品天天影视综合网| 精国久久一区二区三区98| 99超碰网| 久久亚州精品成人Av无| 日本精品高清一二区一本到| 后X久久| 人妻无码视频一区二区三区久久| 猛猛干| 淫荡熟女乱伦网| 嗯嗯啊操我| 黄总AV色图| 97精品一区| 久久精品国产精品一区| 操婷婷逼| 中文字幕久久精品一区| 91精品丝袜久久久久久| 亚洲色图欧美| 欧美久久伊人| 又黄又粗又硬又长又大| 久久久日本电影| 亚洲成a人在线观看久| 色97| 九九九不卡| 在线一道啪| 亚洲aw毛茸茸在线| 香蕉精品二区二区| 亚洲人妻中文高清| 老熟女区| 五十路熟女人妻一区二区在线观看| 熟女精品va中文字幕| 91啪9色| 欧洲人妻视频| 一块操欧美性爱| 国产精品久久久九九九| 国产1024在线播放| 1024香蕉视频| 大香蕉手机在线| 亚洲av综合色区无码一| 天堂国产AV| 天天上日日上日韩精品| 91麻豆天美国产欧美| 久操视频在线| 十八禁成人网站在线观看| 九九久久国产精品| 日语五十路和六十路亚洲国产精品 | 天天综合AV| 99999久久精| 五月丁香激情综合| 色噜噜狠狠色综无码久久| 91精品国产日韩欧美综合| 色女99一级片在线观看| 亚洲欧洲激情卡通另类文学四射小说网站 | 99久久精品无码一区二区| 国精综合一二三区影视| 日熟女| 欧美暴力猛交| 三级激情网站| 亚洲精品蜜桃久久久久久久| 亚洲精品性爱片| 色天堂综合| 欧美精品99久久久**| 亚洲第91页| 成人八戒网站| 91模特在线观看| 色色激情五月天| 色香天天| 手机不卡视频不卡在线一二三区| 日本操逼视频在线| 97超碰天天爱天天爱| 欧美特大AA级黄片| 欧美亚洲se91| 操我无码| 日夜精品| 台湾佬中文娱乐自偷自拍| 亚洲天堂在线怕怕视频| 熟妇精品juliaannAV| 乱伦图av| 日日干日日摸| 偷窥自拍亚洲色图| 啪啪啪东京| 欧美偷偷网| 夂久色| 国产日韩无码一区二区三区久久区| 伊人精品视频| 国产AV超爽| 97干在线| 校园春色亚洲无码| 欧美精品999| 日本欧美中文字幕| 蜜桃视频一区二区三区 | 91亚洲欧美激情| 在线天堂999| 永久免费发布性爱网| 亚洲天堂另类| 日少妇亚洲版| 国产成人精品日本亚洲语言| 啊啊啊在线观看| 欧美日韩天堂| 亚洲男人天堂2019| 天天操人人操狠狠插| 亚洲春色欧美| 欧洲中文字幕| ?亚洲伊人伊成久久人综合网| 麻豆成人AV| 亚州 综合 色图| 120分钟婬片免费看| 国产精品盗摄 偷窥盗摄| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 久久久啊啊啊| 久久神马影院| 超碰99在线| 三级特黄60分钟播放| 97超碰欧美手机| 日韩免费大片一级播放| 少妇无码999| 日日摸日日碰| juliaann精品熟女一区| www.人人cao| 欧美日韩电影成人在线| 男人天堂2019| 国产丸一视频| 99re69| 色av中文字| 探花激情视频| 欧美一区二区日韩三区| 97免费在线观看| 999久久芭蕾| 美日韩在线不卡人妻| 美女诱惑爱爱| 亚洲各类熟们中文字幕| 欧美性爱免费短视频| 免费观看一区| 综合五月天| 人人妻天天做天天爽| 330Dv国产女人终合视频极品人与兽| 日韩啪啪网| 偷拍自拍在线视频观看| 国产传媒午夜理伦精品| 欧美性爱一区二区| 91中文字幕制服丝袜免费视频| 天美一区在线| 91激情网| 丰满搜索结果 -第18页- 久久高清无码| 五月天婷婷小说| 欧美刺激色黄片免费看| 欧美丝袜制服久久| 精品人妻av在线播放| 被男人吃奶很爽的毛片| 国产在线视频午夜精华在| 夜夜躁狠狠躁日日躁av| 偷拍导航视频网站| 色欧美色交综合| 97天天插| 日本久久久精品电影| 劲爆欧美人妖三区91| SUV一区二区在线看| 日本不卡二三区| 青青草日本中文字幕| 精品人妻一区二区三区-国产精品| 国产av尤物| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 久久啊啊| 久久久久久久97| 97超碰中文在线| 国产老太乱伦一区| 日本一级特级毛片视频| 蜜臀无码视频在线观看| 超碰97人人cao| 91露脸熟女专区| 精品人妻一区| 亚洲乱码尤物193YW| 精品人人插人人操| 9久久精品| 国产精品一二三免费网站| 亚洲精品丝袜-不卡成人免费……| 青青草日韩无码| 97舔舔| 看黑丝美女操逼青青网站| 精久久久91| 秋霞福利网| 综合网亚洲在线| 欧州91高潮| 老外又粗又长一晚做五次| 国产在线激情视频| 色一色综合网| 婷婷五月花| 欧美性爱一内片一区二区三区| 久久亚洲熟妇在线视频| 日韩大香蕉精品在线视频| 777奇米影视777四色| 国产精品免费视频不卡| 欧美国产日韩清纯唯美| 久久蜜桃综合网| 蜜臀无码一区二区| 99999国产精品| 国内毛片国产欧美拍| 久久精品店| 91婷婷伊人狠人| 91超碰碰在线| 久久精品电影在线| 999精品国产高清一区二区| 最近2019中文字幕国语免费版| www.久久| 九九拍拍精品视频在线播放| 国产精品午夜精品| 26uuu久久| 日韩精品在线观看网站| 久久国色天香香蕉| 校园春色宗合网| 搡老女人老91二区| 可以在线观看的黄色网址| 99色在线| 天天综合网1| 草草草草视频| 国产h片在线观看视频| 伊人久久88国产女| 偷拍色图| 中文操逼字幕| 久久久婷婷婷| 日韩欧亚中文在线| 99色网| 色婷视频| 超碰69| 日韩熟女操逼| AV中文在线| 狠狠躁天天躁日日躁| 天天欲望网| 国产 亚洲 丝袜 制服| 91在线视频免费中出| 欧亚三区动漫| 天堂中文日本在线观看| wwe 天天干.com| 久久人妻熟女一区二区| 欧亚性爱啪啪| 人妻酒店出差被中出免费在线播放| 欧美97在线欧| 99亚洲天堂| 人妻少妇久久| 精品人体无圣光凹凸| 日本天天人人狠狠在线日美女 | 91精品国产91综合久久蜜臀| 秋霞视频一区二区| 欧亚揄拍偷拍精品视频 | 亚洲老司机123专区| 午夜男女爽爽大片免费观看| 成人婷婷丁香| 大粗鳼巴久久久久| 精品国产久热在线观看| 亚洲高清少妇| 日韩亚洲精品一区二区| 日han少妇无码| 人人性爱视频免费| 高清不卡国产| 熟妇乱伦一区二区| 碰碰在线视频| 男人的天堂va| 国产少妇肉丝在线观看| 97K超碰在线| 久久99久久99精品免视看婷婷| asc国产精品| 国产一区二区在线电影| 少妇特黄一区二区三区| 国产亚洲日本精品在线| 蜜臀av中文字幕| 午夜福利免费精品视频| 无毛精品| 亚洲各类熟们中文字幕| 少妇人妻在线| 91chinese在线| 亚洲男人天堂手机版| 五月婷丁香| 久久色精品视频在线| 91丨国产丨白浆| 欧美日韩插逼视频| 伊人久久大香线综合无码| 黄资源| 午夜偷拍久久熟女| 亚洲风情综合网| 99视频在线| 日本一级特级毛片视频| 91色黑人少妇| 精品少妇人妻av久久免费| 亚洲欧美日韩中文久久自慰| 黄片在线免费在线观看| 91bbbbbb| 人人摸人人干| 国产三级多多影院2022国产AA一级毛片无码 | 麻豆久久精品亚洲精品88 | 欧美夜夜草视频| 亚熟hd视频在线| 亚洲色图亚洲无码强奸乱伦| 青青草依人大香蕉| 亚洲人精品久久久喷水| 性饥渴少妇av无码毛片| 超碰一区二区| 992这里有精品| 91在线精品一区二区三区| 我中文字幕6区 | 欧美色偷偷| 日本黄色裸日本黄色裸体| 性做久久久久久久| 亚洲久久久| 日夜干射色啊| 99爱爱| 国产亚洲欧美每日在线| 日韩中文字幕精品一二三事国产精品| 色五月婷婷网| 香蕉久久AⅤ...| 欧美春色| 麻豆 亚洲 97| 淫妻综合网| 岛国大片在线观看网站入口| 99国产女人| 色网在线| 嗯嗯啊中文字幕| 日本丝袜人妻内射| 亚洲国产97| 啊嗯嗯啊好大好爽| 99这里有精品| 亚洲第一在线视频| 亚洲天堂在线怕怕视频| 欧美啪啪天堂| 国产美女激情| 日韩偷拍色图| 人人看人人摸人人色| 国产日韩精品suv| 国产丝袜啪啪| 亚洲欧洲第二视频在线观看色图| 欧美日韩丝袜| 日本亚洲熟女视频| 91人妻最真实刺激绿帽| 亚洲中文字幕熟女少妇一区二区| 亚洲一二三| 看黑人AV不卡| 骚逼高潮久久精品| 国产 三级自拍| 伊人精品久久网站| 大象AV在线| 人妻精品一区二区| 亚洲se电影| 91天射| 亚洲最大的黄色电影网站。| 四色永久成人网站| xxx0国产在线播放| 国产午夜福利专区综合| 夜夜躁狠狠躁日日躁av| 男人天堂最新手机版在线青青草| 麻豆国产第一| 97久久精品国产| 夜夜高潮夜夜爽| 久久久草成人网站久久久草成人久久久草久久久 | 99这里只有精品国产| 欧美亚洲天堂| 人人妻人人爱人人玩| 亚洲av资源| 欧美高清91| 综合亚州欧美| 久久精品国产97欧美精品亚洲| 亚洲drav色图| 国产精品久久久久无码A√| 精品亚洲一区在线观看| 在线αⅴ| a片偷拍视频| www.久久制服糖| 色y情视频免费看| 国产精品久久妻无码网站| 2018天天日天天日| 被窝影院午夜看片无码| 91国产操逼视频| 亚洲欧洲无码bt精品合集| 精品人妻一区二区三区四区石在线| 啪啪综合网| 中日韩一区二区三区欧美| 亚洲第一页第二页激情| 精品国产Av无码久久久亚洲| 日韩一级欧美一级国产一级台湾| 久久精品国产亚洲5555| 中文操逼字幕| 国产综合在线视频网站| 6080YYY午夜理论片在线观看| 欧美一区二区日韩三区| 久久精品一区一起草| julia高潮后不停追击中出| 亚洲欧美精品一区天堂久久 | 日本色日夜干| 亚洲中文字幕熟女|