色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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天天综合日韩欧美| 久久综合超碰| 啊啊啊操一区| 亚洲av综合色区无码一| 色欧美综合| 午夜福利久久久噜久噜久久综合| 丁香五月天激情综合| 久久透逼视频| 亚洲淫乱骚妇AV| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 青青草中文字幕| 国产不卡精品91| 丝袜综合色图| 国产精品无套内谢| 18禁的网站在线| 爱丝福利| 精品人妻一区二区乱码一区二区| 男人天堂2019亚洲| 欧美一级A片不卡视频。| 欧美 亚洲 第一页| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 日韩不卡毛片Av免费高清| 啊啊啊好多水| 九九热av| 免费视频无码| 户外裸露刺激视频第一区| 亚欧无码线免费观看视频| 国产AB视频| 91天天综合网,天天综合网| 五月婷婷啪啪| 婷婷五月天久久久| 欧美日韩国产色图在线| 亚洲一区在线观看欧洲| 女人爽到高潮潮喷18禁网站| 久久久久久精品免费看A级| 好涩综合| 一区二区无码视频| 天天天操天天天爱| 亚洲中文字幕一区| 亚洲国产丝袜在线观看| 国产久久久9999| 丁香六月婷婷久久综合| 综合久久婷婷| 日本综合久久| 国产专区第一页| 青娱乐福利99| 国产精品白丝在线播放| 91丝袜在线播放| 国产91 丝袜在线播放| 蜜臀99久久精品久久久懂爱| 日本一线产区和二线产区伦理片| 职场同事知名国产国产精品久久欧美日韩| 日韩欧亚中文在线| 欧美成人都市人妻| 日韩精品中文字幕二区| 精品一啪| 国产曰批免费观看久久久| 日韩免费中文字幕视频| 永久电影三级在线观看| 久久偷拍人| 玖玖久久久| 天综合网| 国产精品乱人伊人网| 男人天堂久久精品| 盗摄 精品 另类 一区| 激情五月婷婷综合| 丝袜美腿欧美| 激情五月天视频| 午夜黄色免费在线观看| www.色操逼| 亚洲欧美综合网站| 久草综合京东| 亚州色交| 超碰性爱97| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 黄片免费日韩| 99久久无码| 少妇三P| 国产久久一区二区三区野外在线| 国精综合一二三区影视| 另类 综合 日韩 欧美 亚洲| 午夜精品久久久99| 熟妇高潮一区二区免费视频| 九九毛片这里只有精品| 四虎 精品 WWW| 五月天黄色av| 玖玖爱综合网| 日韩一二三区| 综合久久久久久久综合网| 人干人人人操人人摸| 国产呦精品一区二区三区下载| a在线视频免费观看| 久思思热视频在线观看| 免费自拍三级综合| 99性爱在线观看| 天堂性色| 91精品女厕偷拍视频| 巨爆乳一区二区爆乳区| 婷婷五月丁香五月| 国模不卡一本二本三电影| 亚洲色图 91| 91青青草| 99色综合| 亚州欧美综合| 欧美Aⅴ| 国产真实野战在线视频| 色婷婷aV一区二区三区麻豆综合| 欧美偷偷网| 亚洲欧洲成人在线电影| www色色色com| 97超碰超欧美。| 精品二区三四区五电影 | 天天肏夜夜肏| 99婷婷一区二区| 国产成人无码网站在线视频| 91少妇香蕉久久精品| 中文字幕视频二区| 欧美另类精品xxxx| 淫色网综合| 少妇无码999| 天天干人人干天天日97| 五月天婷婷久久| 亚洲激情色片 | 国产性爱强奸乱伦大全| 99久久婷婷国产综合精品草原| 神马久久网| 丁香婷婷五月| 极品欧美一区二区三区| 国内精品不卡无毒99999| 久久久不卡区一区二区三区久久久| 亚洲风情在线观看| 熟妇熟女亚洲天堂网| 蜜桃午夜视频一区二区| 国语精品内射在线观看| 亚洲欧洲无码一区夜| 秋霞一集毛片观看| 欧色性第一页| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 天堂蜜桃无码视频一区二区| 亚洲欧美中日韩| 色图综合| 欧美精品在线观看| 亚洲无码 国产无码| 国产欧美第五页| 深爱伊人影院| 国产无马av| AV99热18这里只有精品| a一区二区三区乱码在线| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 加勒比久久av| 亚洲欧美经典一区二区| 亚洲欧洲自拍| 爱欲AV| 亚洲成人性爱网站在线播放| 97bbn| 欧美淫乱视频| 69精品少妇一区二区三区蜜桃| 欧美日韩传媒| 精品人妻视频一区二区三区蜜桃视频| 93人人操人人| 激情婷婷黑人91| 麻豆蜜桃视频在线观看| 在线无码视频| 大逼色网站| 国产在线76页| 免费观看网黄| 天堂亚洲欧美| 打av高清| 激情啪啪拍91| 亚洲国产丝袜熟女av| 啊啊啊啊在线观看网址| 十八禁啪啦拍视频无遮挡| 无码精品久久久久久亚洲| 色情乱伦AV| 欧美色干| 性色av一区二区| av天堂精品久久| 花花AV导航| 人妻少妇久久| 97亚洲综合电影| 大香蕉黄色一级片免费看| 艳尻美人妻| 999岛国大片| 欧美色图亚洲色| 亚洲色图欧美色图制服诱惑| 欧美人妻精品| 欧美性爱另类综合| 日韩人妻播放| 日韩亚洲欧美中文字幕| 国产97综合| 淫色网综合| 91丨九色丨东北熟女| 日韩精品在线观看观看| 欧美欧美啪啪视频| 大逼色网站| 久久少妇人妻| 午夜欧美J进J出白浆流出久久久 | 蜜臀AV一区二区三区| 久久爽爽精品| 91啪9色| 九九99精品视频在线观看| 高清国产成人无码| 亚洲AV无码乱码| 男人天堂欧美| 香蕉视频精品亚洲一区二区三区在线播| 日韩丝袜高跟制服在线观看| 亚洲精品97在线| 91色情黑丝搞鸡在线观看一区二区三区三州| 国产精品无码久久久久2025| 中国AV美女| 香港澳门日本三级网站| av2014 日韩在线中文字幕| 午夜精品久久久久| 麻豆精品三区视频| 欧洲亚洲综合| 加勒比综合a∨| 色欧洲97| 日韩天天综合| 97网站在线观看| 久久动漫精品视频这里只有精品| 99久在线精品99re8热视频在线| 国精综合一二三区影视| 日本东京热大香蕉a片| 五十路熟女工口 | 98超碰日本| 亚州欧美一区| 伊人9| 性生活性生大爱77AV国产| 亚洲午夜精品久久久中文影院| av橘色网站| 精品人妻伦一区二区三区久久| 午夜福利在线合集| 亚洲 欧美 日韩另类 麻豆| 在线观看啊啊啊啊啊| 俺也射| 北条麻妃99精品青青久久| 91女在线观看| 都市激情人妻一区二区青青操视频| 夜夜操一区二区| 国产精品国产| dy888午夜老子影视达达兔| 自拍偷拍第26| 欧美 亚洲 偷拍自拍| 色婷婷色99国产综合精品| 97中文超碰| 99re69| 91亚洲最新在线| 亚洲伊人久久精品狠狠在线| 嗯嗯啊啊好大好爽| 中文字幕乱码在线| 中文字幕亚洲永久精品| 日本精品第一视频在'| 丁香六月激情综合| 亚欧美综合网。| 天天插天天干| 加勒比久久av| 国产乱伦视频污| 三级网色| 欧洲射精91| 男人天堂久久精品不卡| 亚洲在线网站| 免费无码国产精品v片在线观看| 精品人妻美妇91job| 91九色丨国产丨爆乳| 99视频自拍区| 亚洲欧美日韩二区视频| 国产suv精品一区二区四| 天天色播亚洲综合网站| 亚洲骚女一区二区三区| 最新制服中文第一页| 日韩本不卡视频在线观看| 日日超碰亚洲| 亚洲精品成人激情在线| 青草视频人妻在线观看| 日韩啊V| 红杏大香蕉| 亚洲综合骚逼| 中文字幕精品三级久久久| 蜜桃臀AV在线| 强奸乱伦中文字幕AV| 青娱乐大香蕉| 日本性爱视频一级| 久久综合中文国产| 国产无码精品无码| 伊人综合色网| 91欧美少妇| 欧美区亚洲区偷拍区| 欧美大码在线视频| 91久久久亚洲| 久久久久久久强迫| juliaann精品熟女一区| 国产又粗又大硬免费色网视频| 免费观看有码高清视频| 中文字幕精品探花视频 | 婷婷亚洲综合| 亚洲 在线| 人妻嗯啊啊在线播放| 国产路线专区| 97爱爱爱综合| 亚洲天堂五月天国产| 国产精品 午夜福利| 探花视频免费观看国产专区| 美中韩AV综合网| 老熟女网站| 日本天天操| 亚洲精品欧洲色| 国产乱码久久| 精品国模无码| 亚洲一二三| 精品制服美女中文一区二区三区| 久久久精品视频免费观看| 久久久久九九九九九| 国产精品久久久久av| 69精品| 99热免费精品| 99久久精品无码一区二区毛片免费| 男生女生啊啊啊啊| 99久久婷婷| 久久久久久久久999| 欧美91在线+|+欧美| 天天弄天天操| 欧美翘臀视频网站一区二区三区| 青青操少妇| 久久99草| 七久久久| 日韩在线76| 天天日天天插| 久艹伊人精品综合在线| 两女互慰AV高潮喷水在线观看| 我想要啊 啊 啊| 激情婷婷黑人91| 亚洲天堂人妻一区二区| 亚洲日韩美国人妻| 丰满人妻-区二区三区免费看| 中文字幕视频2区| 国产精品免费日韩| 视频一区二区免费在线| 日韩无码服务区| 神马久久网| 性感女人网页在线观看视频| 国产精品成人在线| 成人三一级一片aaa| 色欧洲| 91AV天美在线视频| 蜜臀久久久久久999| 日韩精品亚洲专区在线影视| 激情天天视频| 久久春色| 午夜在线播放| 一级AAA片一区二区三区| 人人考人人摸人人干| 成人av影院在线观看| 99re98| 久久久久国产精品人妻aⅴ天堂| 亚洲精品欧美专业| 久99| 99色在线| 极品肉射| 97在线免费看视频| 天美传媒AV在线| 黄色交缠性感爆操91国产精品免费一区二区三区| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 男人的天堂日韩| 五月天丁香欧洲日韩| 动漫片子网站3黄| 亚洲图片色图欧美另类| 欧美亚洲丝袜人妻制服中文99| 中国91AV| 精品黄色电影| 久久9免费视频| 黑人精品久久97| 天天综合影院91| 91neishe| 天天干天天爽| 欧美亚洲国内自拍| 亚洲伊人久久精品狠狠在线| 天美传媒一二三区永久网站| 超碰亚洲97| 夜夜高潮夜夜爽高清视频一| 91麻豆天美传媒HD| 久久久久久久久久久久欧美日| 60秒免费小视频| 无码九九| 2017,超碰| 少妇无码av专区线| 蜜乳AV一区| 三上悠亚在线毛片91| 亚洲精品自拍| 亚洲成人福利电影免费| 国产宅男宅女在线观看| 黄色免费网页无码| 成人福利视频网| 日韩精品永久在线观看| 亚洲午夜福利视频| 亚洲少妇色| 欧美九9 9 9| 亚洲天堂女优在线 | 激情综合五月| 色婷婷综合久久中文字幕雪峰| 日韩78m视频| 208天天久久九九九| 天天舔天天日天天射| 国产中午字一暮区| 久久夜夜| 国产精品免费美女视频| 啊啊啊啊视频免费| 成人日韩中文字幕| 亚洲欧美日韩不卡人妻| 曰韩操B| 精品一区二区综合熟妇| 成人精品电影| 大屁股国产在线视频| 人妻丝袜日本| 劲爆欧美人妖三区91| 青青青青青手机视频| 夜夜夜久久| 3PAV乱伦视频| 亚洲欧美日韩电影网站一区| 99久久综合网| 欧亚在线视频| 欧美久久毛片基地| 99精品无码| 久久久中文| 人妻少妇精品一区二区三区| 久操 高清| 亚洲欧洲日韩中文字幕一区| 黄片qw| 丁香五月成人| 欧美在线干| 夜夜操91744565| 亚洲乱熟女一区二区| 欧美日韩黄片精品在线| 有码人妻系列| 国产馆| 图片区小说区| 国产一区二区久久| 欧美亚洲一级在线观看| 久久久穴999| 男女做爰猛烈动高潮A片免费应用| 亚洲欧美精品一区天堂久久 | 看看小穴| 亚洲?V高清一区二区三区尤物| 国产精品一区二区黄片| 亚洲色图欧美色图制服诱惑| 亚洲囯产精品女人久久久| 激情欧美日韩女同久久| 黄片免费看的| 国产AV人人夜夜澡人人爽麻豆| 日韩免费高清大片在线| 欧美精品 - 91爱爱| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 日韩精品一二三| 久久综合99| 亚洲男人天堂网站| 人妻一区二区三区| 精品久久久久久无码| 九九热视频这里只有精品| 少妇3P性爱自拍| 九九九久久久W精品| 99久久久久| 在线日韩精品一区二区三区| 亚洲青青草| 日本高清电影欧美色图| 老司机深夜影院18未满| 亚欧无码线免费观看视频| 91精品国产长腿丝袜美女| 欧美日韩色图片| 日韩成人精品| 欧美黑人熟妇精品91| 亚洲欧美91√| 十八禁啪啦拍视频无遮挡| 亚洲牲交| 东京热毛片调教| 懂色av中文字幕一区二区三区天美 | 91丝袜| 亚洲国产欧美另类自拍| 欧洲亚洲人妻无码久久三区四区| 久久超碰亚洲人| 91精品久久综合熟女| 天天看夜夜看日日干| 东北女人操比视频| 91社操逼| 亚洲中文字幕熟女少妇一区二区| 91丝袜激情在线| 九九久久九九久久| 亚洲激情综合另类男同| 久9爱精品| 精品九九淫乱男| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 麻豆 亚洲 97| 国产精品密臀网在线观看| 亚洲最大的黄色电影网站。| 国产色产精品在线观看| 国产激情av女片自拍| 欧美精品黑人猛交高潮| 国产一区二区三区中文字幕| 乳欲人妻办公室奶水| 91性情| 啊啊啊好舒服视频在线观看| 日本精品一区二区三| 狠狠操,使劲操| 青青草导航在线视频| 第45页一区二区| 99在线精品视频| 伊人五月天激情| 日本操逼视频免费| 91在线美女| 欧美成人都市人妻| 欧美做爰无码A片视频| 人人摸人人添人人操| 久久性生大片免费观看性| 中文字幕一区二区三区四五区| 热的中文 热的有码 热的国产| 久久精品老司| 91精品丝袜久久久久久无码人妻| 丰满人妻一区二区三区在线| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 自偷自拍的亚洲视频| 亚洲第一精品在线视频 | 国产精品久久久久中文字幕| 人妻偷拍一区二区三区| 一本色道综合久久欧美| 在线免费观看高清无码视频| 日本一级特级毛片视频| 在线视频免费观看午夜| 国产老女人久久毛| 中文字幕国产在线天堂| 超碰精品日韩欧美国产| 2017人人操,人人摸| 国产精品盗摄 偷窥盗摄| 爽极品影院| 国产精品一区二区三区,亚洲综合| 国产一区二区精品久久99| 婷婷丁香五月天亚洲天堂网| 熟女突然公开看18禁影片| 综合网色| 国产日韩精品一区二区三区| 人人超碰在线观看黄| 色九九九综合| 国产久久久久影院老熟女| 天天综合站| 欧美熟妇精品黑人巨大91| 91麻豆天美传媒在线| 一二三四视频中文字幕在线看| 三级日本一区二区三区| av天堂天堂av日韩| 爱av免费| 久久五月天婷婷| 99热综合在线| 97超碰这里只有精品| 欧美日韩中文字幕不卡| 永久免费av无码网站国产app| 欧美成人AⅤ大片在线观看| 久99热| 日韩少妇丰满亚洲| 精品大全99999| 国产呦精品系列在线观看| 亚洲第一精品在线视频| 久久免费精彩视频| 裸体1区| 欧美美女视频| 18禁精品网站在线看| 99热99色| 欲色啪| 无码精品久久| 久久久爆乳翘臀一线天伦理视频| 日夜干射色啊| 丰满人妻一区二区三区色-百度| 中国乱伦一区二区| 日本精品人妻少妇一区二区| 亚洲熟女一区二区| 无码黑人精品一区二区三区三| www.狠狠| 精品妇操一区二区三区| 人妻 丝袜美腿 中文字幕| 久九干| 日日躁夜夜躁狠狠躁超爽| 日韩精品1区2区中文字幕| 激情文学 国产一二三aV| 久久久久久久久久久久97| 亚洲一区日韩精品中文字幕| 久久婷婷伊人| 国产日韩中文字幕欧美| 福利操逼| www.高清无码诱惑一区.com | 国产偷人妻精品一区二区在线| 九九九热| 亚洲人妻一区二区三区| 亚洲男人天堂手机版| 国产97色在线| 97天天插| 操逼逼无码| 大香蕉青青9| av在线一区二区三区| 国产天天噜一噜久久久| 国产美女高潮叫床视频| 9997se| 男人的天堂一区三区| 91色s| 好看的91视频| 色淫网站优优视频| 夜夜爽爽爽| 偷偷人人精品女女久久| 成人乱码一区二区三少妇| 亚洲精品97中文字幕| 密乳AV免费观看| 激情小说亚洲图片| 欧美性爱系列| 97人人色| 亚洲色图91欧美日韩| 色偷偷色偷偷欧美日韩| 免费精品中文字幕| 超碰视97中文| 在线 制服丝袜中出 人妻| 搡老女人老91二区| 国产欧美美女免费观看视频| 欧美日韩小说| 欧美另类色图片| 亚洲欧洲成人在线电影| 免费人人搞97| 欧美不卡二区| 中国操逼无码| 曰韩欧美国产传媒麻豆第一区| 久久美女国产| 被窝影院午夜看片无码| 日韩9区| 精品免费囯产一区二区三区| 粉嫩不卡一区二区性爱| 欧美丝袜91| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 久久成人国产| AV女优男人的天堂| 亚洲日产专区婷婷| 五月丁香在线| 超碰国产精品久| 丰满少妇精品一区二区| 九九九九九九亚洲| 欧美大香蕉专区网| 久久久亚洲| 热G综合热G中文| 美欧老女人97| 丁香五月激情网| 天天色,天天干,天天干| 91人妻少妇| rivers-china.com| 国产五码丝袜屁眼| 欧美夜夜狠| 欧美性巨大╳╳╳╳╳高跟鞋| 国产精品午夜AV完会免费| 玖玖资源视频一区二区三区| 久久曰曰| baisiav| 秋霞视频一区二区| 久久国产热视频97电影| 欧美性爱网97| 日本有码影片下载| 免费综合亚洲中文| 亚洲第一免费视频| 摸奶性爱视频网站在线免费播放| 欧美精品97| 91bbbbbb| 欧美国产精品| 色综合色| 国产亚洲美日韩Aⅴ中文字幕无码成人| 久艹日日日| 国产一线二线三线av| 日本超碰97日韩精品人妻| 91麻豆天美国产欧美| AV九九| 91久操| 99综合网| 大香樵伊人网| 激情丁香五月婷婷| 99久re热视频精品98| 久久无码电影| 久久久久九九九| 综合免费无码中文| 国产毛片在线| 精品人妻中文字幕4399| 免费日韩黄片| 性爱免费视频成人| 免费看A片毛毛片在线播| 日韩亚洲中文字幕在线| 欧美日韩操操操| 久久九九国产精品| 综合欧美激情网| 狠狠色噜噜狠狠狠狠狠色综合久久 | 亚洲美女精品九九视频| 后入式免费视频| 男人女人18禁片免费看网站| 国产亚洲性生活视频播放| se吧提供91精品国产91久久久久久| a片久久久久久久久久久久| 女欧美一区二三区| 99久久e免费热视| 婷婷色影院| 欧洲综合视频| 乱码人妻一区二区三区| 日日干日日摸| 91丨国产丨白浆秘 洗澡动漫| 2017人人操,人人摸| 欧美黄色大香蕉一区二区| 性爱动态120秒| 91人妻视频| 久草精品一区 | 人人操人人狠狠操| 9/A片| 裸体美女久久久| 欧美亚洲手机在线| 北约熟女超碰| 色婷婷在线视频| 色天堂综合| 清纯唯美综合| 久久精品久久九九精品| 天天干天天干天天| 91老熟女老女人国产老太| 欧美性爱一区二区三区| 女人被男人桶爽视频网站| 99精品热| 五月天加勒比啪| 欧美爱爱97| 欧美视频一区二区在线| 九月丁香婷婷| 老熟乱一区二区三区四区| 麻花豆传媒剧国产MV出差| 怡红院视频在线| 欧美亚洲韩国视频十五区| A 天堂| 九九这里只有精品| 偷拍色图| 91丨九色丨国产丨人妻在线 | 99热超碰| 国产视频小说| 干我久操| 少妇 综合| 欧美日韩人妻精品系列一区二区三区| 一本一道波多野毛片中文在线| 日韩精品三区四区| 男人天堂2017| 男女一进一出视频久久| 中文字幕高清20页视频| 欧美同性恋 的搜索结果 - 91n| 国产宅男宅女在线观看| 久久国产视频专区一二三| 91熟女在线| 五月婷视频| 极品人妻少妇综合| 涩五月婷婷| 天天综合~91| 欧美亚洲自拍另类人妻| 91啪啪视频| 国产成人啪一区二区| 大香蕉专区| 亚洲资源网| 91人妻精华帖| 97日视频| 久久久久久久久成人av解说| 91丝袜在线视频| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 五月丁香婷婷综合网| 9九九国产| 爱逼综合| 极品粉嫩一区二区| 色y情视频免费看| 亚洲老司机123专区| 精品性爱一区二区| 久草免费在线视频| 久久天天性久久伊人| 久久亚洲AV无码白度| 欧美一区二区三区大综合| 亚洲欧洲无码bt精品合集| 校园春色欧美色图| 免费a级毛片av无码久久精品中文字幕| 日韩二三区| 脫衣舞一区二区三区| 欧洲一区二区三区四区在线观看| 色色色欧美| 欧美精品久久96人妻无码| 国产亚洲精品美女| 六月婷婷五月丁香| 肏逼视频日本| 欧美丝袜美女电影一二三四区| 人人操人人摸人| 91亚洲网| 九七毛片九九毛片| 欧美人人AAA| 国产中出内射一区二区| 欧美激色| 91偷拍欧美亚洲| 黄片不用下载在线观看| 日韩综合无码一区久久92| 成人在线午夜视频一区| 亚州精人品大香蕉| 欧美黄片欧美黄片xxx| 97爱综合| 午夜福利一区二区三区四区五区色婷婷| 啊啊啊好爽快点啊啊啊嗯嗯| 中文字幕精品日韩中文字幕| 国产精品96| 少妇蹲下买菜露大唇0| 男人的天堂在线2| 日韩av影片在线观看| 91久久青青草原精品| wuyechaopeng| 三上制服丝AV| 色婷婷五月综合| 国产精品蜜臀久久久久无码AV| 国色天香av| 激情综合二| 日本1区2区不卡视频| 大香蕉中文在线| 国产精品午夜福利| 四虎影视国产精品| 天操天操夜操夜月操月年年操 | a人片中文字幕一区二区| 中文字幕一区二区三区蜜臀| 综合熟女| 婷婷色导航| 人人色人人操在线| 偷拍自拍在线视频观看| 操逼www.| 天天色,天天干,天天干| 日本韩国国产精品一区| 麻豆天美制片厂网站视频| 日本熟妇熟色97一本在线观看| 激情av| 熟女突然公开看18禁影片 | 免费网色网站| 国产亚洲日本精品在线| 日韩 欧美 视频 在线 一区| 激情小说图片亚洲首页| 热99这里有精品综合久久 | 上床啊啊啊| 99这里只有精品| 男女做爰猛烈动高潮A片免费应用| 丰满人妻无码一区二区三区| 97干色天堂| 热热色色综合| 男人的天堂亚洲| 69精品| 嗯,啊。舔我逼| 精品精品精品| 青青操97| SS久久| 丁香五月综合| 国产一在线观看| 国产精品国产精品国产| 男女真人网18| 国产黄色av大片网站| 五月婷亚洲精品天堂| 欧美青青草视频| 天天射网| 超碰无码加勒比| 人人妻人人澡人人爽久久av| 综合 青草 伊久久 影院 综合| 天天看,天天做| 亚洲日本激情| 五十路三区在线| 91无码人妻| 大香蕉 222| 色婷网| 手机在线播放国产福利| 日韩欧美性吧婷婷乱伦大香蕉| 一本大道青青| 龙兴卡官方查询| 人人爱夜夜爱| 亚洲熟妇自偷自拍另欧美| 久久精品国产免费观看99| 国产欧美日本亚洲精品| 欧美日韩97| 久久在肏| 91国产丝袜白虎| 四虎精品一区| 91处女视频在线观看| 99精品丰满人妻无| 91狠| 91av一区二区在线观看| 国产精品九九九| 色97干| 国产日韩怡红院| 亚洲综合 欧美| 91美女看B| 亚洲熟妇图片| 中文字幕啊啊啊在线观看视频| 人人扣人人操| 欧美系列在线一区二区| 做爱A级亚欧| 永久免费av无码网站国产app | 天天爱综合网| 96国产污污污丝袜| 91色图片| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 天天看天天日天天操| 美女性91| 人妻91少妇| 91插B网站| 91色人| 后入福利视频| 中文字幕欧美日本乱码一线二线| 天天内射| 97在线资源| 91欧美另类| 伊人991| 97超碰逼| 五月天综合网| 色超碰综合| 午夜福利在线视频1000| 国产偷仑| surenchaopeng| 亚洲青色欧美| 美女AV一区二区| 9久精品视频在线观看| 1204av韩国| 中文字幕人乱码中文字的预防方法| 亚洲综合骚逼| 精品久久久不卡一区二区| 男人的天堂在线| 久草精品视频| 老司机午夜精品福利视频一区二区 | 国产第25页在线观看| 性爱乱伦网址| 色爱三区| AV电影在线播放| 色婷婷99| 97AV爱| 国产精品国产自产拍高清AV| 国产夜夜艹| 久久久久七视频| 色眯眯av| 情色大香蕉| 麻豆熟妇乱妇熟色A片在线看| 一二三区精品视频| 啊v在线观看视频| 亚洲欧美日韩中文播放| 91视频精品| 日本熟女免费視颖| 18禁网站在线播放| 天天肏夜夜肏| 色播丁香| 天天综合精品| 黄资源| 伊人在线大香蕉二。| 亚洲图片 欧美电影| 人人妻人人爽| 无遮挡又黄又刺激的视频| 国产精品剧情| 人妻干天天| 人看人人摸人人操| 婷婷午夜| 欧美中文字幕一区 | 久久久精品91八戒| 久久久久久久国产视频| 97国产成人精品免费视频| 丁香五月成人| 久久e6只有精品| 2026国产精品视频| 久久精品国产97欧美精品亚洲 | 97干在线| 高凊专区人人操| 超碰这里只有精品| 干美女人妻| 97色97干| 亚洲国产欧美另类自拍| 天堂种子在线www网资源| 天天日老熟妇| 欧美强奸乱能| 狠狠干,狠狠操| 欧美日韩人人精品| 日韩国产九九精品一区二区三区毛片| 成人精品久久| 国产精品麻豆成人av| 亚洲av无线观看| 激情第四色| 中出789在线视频| 国产AB视频| 亚洲国产精品久久AV| 成人毛片免费| 国产激情av女片自拍| 97干日韩| 亚洲高清少妇| 精品亚洲| 97人人操人人摸人人爱| 97超碰国产亚洲精品资源| 亚精品无码毛片一区二区三区| 亚洲情色 自拍| 欧美一级AAAAAAA| A片三级无码| 超碰性爱97| 丝袜视频网国产90| CCYY草草影院地址入口| 一级免费啪啪片| 欧美色图天堂网m| 婷婷性网| 国产久久成人| 亚洲 综合 欧美| 天欧美在线| 亚洲一区二区三区春色| 国产97色在线| 久久偷拍人| 欧美97超碰| 日韩激情中文字幕有码| 国产精品久久久视频| 亚洲第一男人天堂| 亚洲av国产av综合av卡| 五月天综合在线| 一牛影视久久久一区二区三区| 国产av色网| 亚洲熟女精品| 久久久98网站免费视频| 亚洲。天堂。日本在线观看| 99无码狠狠久久| 欧美日韩午夜精品一区二区三区| 在线看的av| 东京热男人的天堂精品| 国产精品一区二区 尿失禁| 色欲天天综合网| 亚洲国产欧美日韩人妻日中文| 天美传媒一二三区永久网站| 美女97超碰| 另类老少妇| 欧美v亚洲v综合v国产v妖精| 亚洲中文字母在线播放| 一本道综合色图| 激情在线青青操| 国产精品九九九| 凸凹视频在线观看| 国产天美传媒精品| 又黄又硬又粗又长国产视频| 台湾成人无码AV| 欧美第38页| 天天综合色图| 高清在线偷拍自拍视频| 欧美综合第一| 亚州综合色| 久久婷婷五月天| 91国产丝袜美女| 精品国产一区二区三区四区在线看| 中文字幕 一区二区 亚洲无码| 人妻熟女一区二区三区视频| 久久久久久精品免费看A级| 欧美色图天堂网m| 中文字幕欧美日韩三级| 成人夜夜爽| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 91久久久久免| 久操免费视频| 亚洲色图日韩精品| 国产精品久久久久久久久久久久久久久久 | 亚洲日本激情| 亚洲91亚洲| 大香久久| 91操人视频| 亚洲中文字幕av | 日韩一级二级三级| 啪一啪免费视频| 久操在97| 亚洲天堂中文字| 天天做天天爱天天爽AV| 免费精品国偷自产在线在线 | 极品色综合| 大香蕉手机视频| 欧美 综合 亚洲| 操操逼操操逼操操逼逼| av线电影| 超碰在线观看av不卡| 日本999精品| 国产av强奸美女| 99国产精品久久久久久久成人热| 日日干日日| 色小视频蜜乳| 夜夜嗨TV| 国产成人无码久久精品| 国产乱不卡| 日本午夜福利影院| 日本一卡二区在线| 激情五月天社区| 四虎884| 亚洲AV操| 无码九九九九| 国产激情片在线观看| 欧美爱国产综合、| 综合一区中亚洲国产成人综合精品| …中文字幕亚洲乱,97人妻无码费视…| 成人 日本A片无码8888| 亚洲男人天堂2| 女人爽到高潮潮喷18禁网站| 毛片99-全集电影手机免费观看完整-B029AV| 在线看免费无码AV天堂的| 91成人亚洲色图| 色情成人五月天| 亚洲超碰97| 免费看美国人人爽,人人操| 中文字幕天堂在线| 国产青视频| 日韩无码三级影院| 国产精品3| 超碰碰碰碰| 久久春色| 97资源欧美| 青娱乐国产盛宴视频| 久久精品一区二区三区蜜桃臀| 99re久久| 国产强奸乱伦第1页| 骚乳在线| 欧美性爱第一区| 青青草字幕AV| 免费看欧美美女黄色大片 | 亚洲中文一区二区三区| 色原狠狠天天天| 青青草原人妻| 亚洲国产麻豆一区二区三区| 日han少妇无码| 国产精品一区二区三区,亚洲综合| 蜜桃网熟妇| www.夜夜| 影音先锋每日最新资源在线观看| 婷婷五月天久久精品视频一区二区三区| 香伊人在线| 97操综合| 夜夜爽33333| 成人性爱AV在线免费观看| 欧美日韩美女精品久草一区二区三区| 欧亚免费视频| 国产高清亚洲日韩一区| 亚洲网污污污污| 亚洲福利中文字幕在线| 屁股久久久久久| se,,,亚洲欧美| 无遮挡猛进视频免费无限观看 | 六月激情婷婷| 91性色| 九九九九九九九九九九九九九九九女| 我爱大香蕉| 国产 日韩 欧美一区| 91欧美综合在线| 天天综合网~69| 日韩综合成人免费视频| 色天天野狼综合社区| 男人天堂站| 在线观看AV片| 久久久久久九九九| 久久精品中文| 五月天开心网| 看大黄色大片原件| 国产白丝网站| 日韩草久视频| 日韩乱伦影音先锋| 清纯唯美亚洲综合| 国产第二页| 人妻久久久久久久久久久久久久久| 加勒比在线观看一区二区| 91N综合网| 亚洲高清内射| 亚洲五月婷婷| 欧美日韩啪啪电影| 蜜臀在线网站| 日韩激情视频| 婷婷五月丁香五月|