色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合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少妇| 天堂亚洲精品久久老牛| 青青草自拍视频在线播放| 国产精品人妻熟女aⅴ| 亚洲色图8| 成人熟女区| 超碰久久中文| 亚洲精品一区中文字幕乱码| 日本高清_区二区三区| 亚洲视频中文一区| 亚欧美色| 天躁夜夜躁2021| 热热色色综合| 久婷婷一区| 亚洲图片欧美91N| 96久久精品一二三区色欲| 蜜臀一区二区三区在线 | 久久久久中出| 自拍视频大全亚洲专媒视频/一区二区三区 | 萌白酱自拍视频| 91五十路| 欧美天天综合在线| 国产9区| 欧美色蜜桃97| 青草精品视频一日本久久久久网站| 男人天堂综合| 婷婷15月天青娱乐| a片亚洲一本通视频| 歐美性天天| 91激情网| 日韩欧美天堂| 视频一区二区三区精品| 黄片免费视频2019| 涩涩这里只有精品视频| 伊人五月天| 91九色在线| 欧美黄色片AAAAA| 久久久九九网站| 91精品黄在线观看| 日本三级久| 国产999精品久久久久久| 999岛国大片| 全免费a敌肛交毛片免费| 九九干| 一牛影视成人片免费| 亚洲午夜福利在线影院| 五月婷久久| 99精品网| 久操| 香蕉视频欧美一卡二卡| 俺去啦俺来也久久综合| h无码动漫在线观看| 韩国一级婬片A片AAAAA| 亚洲欧美大香蕉| 在现视频女上位好爽| 日韩一999精品| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 激情小说日韩无码| 黄骗免费| 天天添天天干电影| 足交视频老司机| 四虎精品亚洲| 青娱乐999| 激情视屏国产乱伦强奸| 欧美中文字幕一区 | 男人天堂综合| 丝袜AV一区二区三区| 久久大香蕉97| 国产成年精品高清在线观看91| 国产精品久久久久中文字幕| 男人的天堂啪啪啪啪啪蜜桃不卡| 偷拍在线观看视频| 亚洲人妻AV| 久久久久9久久久久| 青娱乐大香蕉| 亚洲国产精品无码AV久久| 无码久久亚洲高清,| 中国女人内射6XXXXX| 99色视频| 九一国产精品| 亚洲欧洲中文日韩女优乱码| 日韩中文字幕二区| 青女在线| 久久中文字幕一区不卡| 国产福利夜| 91欧美巨乳| 亚洲av性爱电影| 天天操天天舔| 强奸熟女一区二区三区| 沈阳熟女高潮对白视频| 婷婷综合五月天| 国产人妻一区二区三区欧美毛片| 日韩熟女精一区二区三区不卡| 久操网视频| 嗯嗯啊在线视频| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 亚洲国产午夜真人一级片中文字幕精品黄网站| 狠狠中文字幕| 久久久精品,3| 亚洲女毛多水多21P| www.91欧美| 超碰色图| 色色五月丁香| 精品超碰色| 国产精品久久99日日| 97AV爱| 久久精品综合| 强奸乱伦av电影| 中文字幕人妻色偷偷久久皮 | 国产精品一区二区 尿失禁| 久久色一区二区| 日本影视久久免费| 亚洲综合图文| 我要去看2个日本美女.com曹逼| 五月丁香| 亚洲欧美情色| 日日干日日操五月天伦理视频| 嗯嗯啊啊啊好爽| 国产 码在线成人网站| 天天插天天操天天摸天天射天天看| 日韩精品在线放| 青草视频人妻在线观看| 欧美少妇性爱网站| 久久机热| 亚洲精品一区中文字幕乱码| 亚洲天堂久久久久久粉红视频| 五月天婷婷综合网| 日本一区二区三区四区五区六区七区八区九区| 另类专区在线观看| 亚州一区二区| 超碰在线974| 啪啪性爱免费视频| 久久99999| 婷婷丁香五月天综合东京热| 性一级黄色录像片网站导航| 婷婷丁香成人| 午夜精品久久一区二区| 另类 综合 日韩 欧美 亚洲| 女人高潮抽搐喷水视频网站| 天天cao在线| av中文在线| 黄页av| 大香蕉宗合网在线| 国产女同在线观看视频| 综合久久99亚洲人妻中文在线| WWW啪啪的com| 亚洲精品蜜桃久久久| 夜夜影视四色| 国产精品日日摸天天碰| 色婷婷五月天| 国产精品久久久久久久AV大片| 欧美激情片一区二区| 日韩欧美字幕亚洲一区二区| 日天天九九天堂666| 视频在线观看一二三区| 久久久一区二区三区三州| 99re6在线视频精品免费完整版安卓版| 精品久久久久久中文| 国产热av| 蜜奶av| 久久久久国产一区二| 9Ⅰ超碰| 亚洲限制级在线| 自怕偷自怕亚洲精品| 日日日日做夜夜夜夜做无码97| 乱色视频中文字幕| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 国产视频人人网| 国产原创自拍| 26uuu国产成人综合| 嗯嗯嗯啊啊在线观看| 亚洲老熟妇xxx| 久久久96| 色综合大香蕉| 日韩高清一二三| 国产亚洲 中文欧美久久| 国产v片在线免费观看| 久久精品视频一区三区小泽玛利亚| 日本黄 R色 成 人网站| 国产东北女人在线视频| 另类欧美色| 亚洲人精品午夜不卡| 欧美少妇一区二区三区| 五月激情视频| 亚洲成?V人片在线观看福利| 91大神精品长腿在线观看网站| 呻吟 欧美 日本 中出| 天天操天天射青青草| 国产精品久久久久中文字幕| 家庭乱伦国产精品| 国产熟女自拍| 亚洲日韩97| 亚洲淫乱骚妇AV| 亚洲高清在线| 五月丁香激情综合| 啪一啪免费视频| 91精品微拍福利| 偷拍盗拍亚洲色图图片| 试看60秒 爽| 日韩BBN| www.av不卡中文字幕| 天天弄欧美| 操人妻少妇中文 | 久草电影网| 大香蕉一人在线| 欧美一区二区情色| 99999久久久久9国产精品| 免费精品99| 国产热RE99久久6国产精品首 | 色五月av| 中文字幕亚洲欧美在线不卡| 欧美一二在线| 欧美中文狠| 欧美中字二区| 1区2区3区中文字幕日韩| 久久久亚洲欧美综合| 精品日韩中文在线| 成人性爱av.com| 天堂а√在线最新版在线 | 九九热精品| 国产亚洲精品美女久久久m| 7777奇米影视久久| 性在久久久久久| 中文字幕在线观看永久| 91精品啪在线观看国产城中村| av强奸乱轮| 国产精品爱欲| 中文字幕日韩人妻视频一区二区三区 | 婷婷五月天网| 欧美性天天影视| 成人一级二级| 天天综合网在线91| 一线黄色免费性爱片| 97天天摸天天爽| 天美传媒av在线| 色吧 综合| 搡老女人老熟女91| 91午夜无码| 青娱乐国产精品| 久久久九九网站| 91 刺激在线| 97露脸精品丝袜| 亚洲丝袜99| 超碰色97| 中文字幕精品免费一区二区| 婷婷久月| 国产白嫩精品久久| 日韩青久久| 精品视频一二三中文| 色波多| 亚洲一区二区三区欧美日韩| 999日韩中文精品观看视频。| 韩国女主播青草福利视频| 嫩草 人人网精品| 欧美男人的天堂| 日本孕妇一区二区视频操逼免费看| 午夜操逼不卡| 97天堂| 色综合久久久久| 成年男人的天堂| 久久超碰av在线| 黄页| 欧美日韩性爱无码| 中文久久一区| 欧美色网络| 国产 热久久久久国产精品| 校园春色 男人天堂 | 偷窥自拍亚洲色图| 久久日本熟妇熟色一区| 99久久综合网| 熟妇人妻一区二区三在线| 夜夜春夜夜操| 色网在线视频观看免费| 91伊人影视综合| 色图四区| 欧美疯狂做爰xxxx| 狠狠做深爱婷婷久久二区| 神马麻豆福利院| 国产69精品久久久久99尤物| 欧美日日夜夜| 91精品国产91久久福利| 亚州国产精品乱| 久久9亚洲| 97在线观看| 综合欧美日本三级| 久久久禁| 青草草免费网站av| 超碰在线人妻不卡| 欧美呦呦性爱| 91麻豆天美传媒HD| 尹人免费观看视频在线| 亚洲精品欧美专业| 日本操逼无码| 口爆综合网| 激情婷婷丁香网| 国产精品一二三在线看| 91精品国产乱码| 大香蕉中文在线| 九九aV| 色哟哟精品1精品2| 91丨熟女丨丰满熟女| 免费9 1久久| 熟女人妻精品一区二区视频| 中文字幕 人妻不满 在线视频| 91色伦| 国产女人成人精品视频| 欧美在线天堂| 九色97| 亚洲欧美情色| 精品人妻二区三区| 色欲久久久久综合网| 偷拍欧美综合| 日日干夜夜欢| 九九九九久久久| 麻豆亚洲AV成人无码久久精品| 你懂得91| 亚洲国产精品无码AV久久| 久久精品亚洲东京热色播| 亚洲精品自拍| 大香蕉综合在线| 蜜乳AV一区二区三区四| 99热在线只有精品| 校园春色 男人天堂 | 亚洲影视综合| 东京成人一区| 久久精品国产亚洲AV片多多 | 婷婷五月天久久久| 国产精品白领在线观看| 婷婷丁香一区二区三区| 99碰碰| AⅤ片水多多| 亚洲色情在线影视| 香蕉在线一区二区三区| 欧美欧美啪啪视频| 亚洲国产丝袜在线观看| 色9999日韩国产| 91色宗合| 高潮9999外国| julia在线观看久久| 欧美激情性久久久久久| 欧美最婬乱婬爆婬牲视频| 男人的天堂2010| 欧美激情性爱视频网站| 欧洲精品二区| 伊人久久大香蕉线AV五月天| 99免费在线视频| 亚洲 小说 欧美 激情 另类| 97精品视频在线播放| 大香蕉色十月| 影音先锋乱| 亚洲国产成人综合碰碰三级经典| 亚洲欧美国产中文字幕| 国语人妻精彩刺激| www…国产操逼| 高清无码久操视频| 亚洲欧美清纯| 久久久久921| 人妻精品综合中文字幕在线| 亚洲精品日韩国产欧美| 天天射天天操天天干天天吃2018| 欧洲站一级二级三级h| 7月婷婷综合| 午夜福利视频在线一区| 亚洲码在线中文在线观看| 干妹子| 嫩草伊人久久精品| 久热久一区二区三区| 岛国精品视频在线观看| 日韩三级天堂在线观看| 日韩操逼性鲍| 操婢日韩| 日韩免费a级毛片无码a∨| 成人开心网在线视频| 欧美高潮在线| 天美一二三在线观看Av| 亚洲天堂综合AV| 综合久久中文字幕综合日韩精品| 一区二区影院| 亚洲国产婷婷在线播放| 精品一区二区综合熟妇| 国产无码精品高清| 国产精品网址| 国产精品宅男免费| 综合欧美激情网| 黄色激情电影在线观看| 视频不卡中文字幕| 国产精品视频内谢女人| 激情欧美97| 美女黄站| A片大香蕉在线| 无码人妻一区二区三区免费九色| 欧美在线91| 亚洲第一页色网| 疯操AV| 五月天精品| 9997se| 亚洲色图A| 琪琪精品免费一区二区三区| 久久亚洲AV无码专区国产精品| 国产精品一区二区三区,亚洲综合| 91c色| 丝袜美腿制服人妻二区中文字幕| 日本污ww视频网站| 欧美日韩高潮喷水91| 日本有码久久| 日韩欧美水蜜桃人妻| 刺激精品视频| 舔舔啊| 操熟女91| 另类欧美色| 校园春色 欧美| 日本一级真人黄色性爱视频| 欧 美 自 拍 偷 拍| 韩日性爱av| 操逼日韩无码 | 99热这里只有精| 操一区| 欧美成人精品一区二区男人蜜臀| 果冻传媒A片麻豆熟妇人妻| 天天综合-91入口| 岛国在线免费视频| 黄片直播三级黄片两女一男| 精品免费一区二区三区在线亚洲人成| 99热aaa| 综合一区二区影视| 91精品人妻一区二区三区蜜桃| 性videos欧美熟妇hdx| 日韩色| 日韩pv中文| 四虎在线免费视频| 国产精品美女久久久久久网站| 国产av强奸美女| 91精品久久综合熟女| 小草三级久久观看| 人妻精品一区一区三区蜜桃91| 女人久久久| 性爱视频无打码在线观看| 日本午夜操逼| 91在线视频免费中出| 青青草国产一区二区三区| 久艹日日日| 成年人性爱日韩| 国产精品老熟女一区二区| 色婷婷一区二区三区久久午夜| 殴美性天天| 亚洲av影音先锋| 精品久久久九九九孕妇| 蜜汁欧美| av无码精品久久久久| 色爱欲亚洲| 亚洲一区二区中文字幕| 欧美日韩在线国产在线| 亚射在线| 五月天亚洲色图| 欧美国产伊人久久久久| 精品人妻一区二区三区视频| 夜夜草天天| 色九月| 久9久9久9久9久9久9| 国内精品久久人妻性色av| 成人短视频在线观看| 大香蕉日亚洲日本亚大| 日韩性爱1级片视频| 日韩乱码Av| 亚洲情色 自拍| 思思性爱| 日韩一级二级三级免费看完整版国语版 | 富女玩鸭子一级毛片| 色九月婷婷| 99在线观看无大码| 日韩欧美麻豆大片| 亚洲欧美日韩激情不卡| 亚洲黑丝在线| 91亚洲色图| 99精品在线播放| 亚洲图片小说欧洲| 丁香久久| 亚洲综合97| 天天流夜夜操| 热99这里有精品综合久久 | 偷窥自拍A片| 美女网站黄页| 激情视屏国产乱伦强奸| 亚洲色婷婷综合久久一区二区三区| 丝袜剧情| 色狠狠一区二区三区香蕉| 深田咏美亚洲精品福利社| 插入粉嫩少妇视频| 日本肉体xxxx裸交| 日日夜夜精品视频| 欧美色图私拍91| 琪琪精品免费一区二区三区 | 中 文字幕一区二区三四 五 区日 日 骚 | 999久久久国产精品| 成人日韩欧美| 91精品人| 五月开心久久AV官网| 国产成人www免费人成看片| 四虎免费视频| 婷婷五月天成人网| 久久国产在线一区二区| 欧美亚洲激情小说| 国产精品久久久久无码Av网曝门| 91日产欧美| 欧美强奸一区二区诱惑| 日产操逼| 任你干在线视频| 五月丁香综合啪啪| 97无码视频在线播放| 国产丰满少妇久久久精品影院| 中文字幕国产| 97视频网站| 久久超碰大香蕉| 日本精品一区二区中文字幕| 97手机日韩| 青青欧洲黑| 男人天堂2019亚洲| 免费人成在线观看网站品爱网| 久久9精品网站| 嗯嗯嗯嗯啊啊啊好紧好大| 一区操逼| 东京热av影院| 天操老女人| 色情综合网| 91亚洲色人| 欧美性高潮| 日韩三四五区| 久久九九综合| 很黄很色的视频在线观看| 老司机香蕉久久久久| 亚洲黄日韩无码专区| 免费观看啪视频| 日韩欧美成人综合在线| 亚洲天堂精品日韩电影| 老司机福利社视频在线观看| 亚洲综合影片| 精品久久久久久亚洲| av天堂精品久久| 久久精品电影在线| 亚洲日本天堂| 天天插夜夜爽| 精品女人999| 中文自拍欧美影视| 波多野结衣一级视频| 一区二区乱码福利| 97超碰大| 欧美性少妇| 男人天堂网手机版婷婷| 免费久久9999| 中国黑人三级片网站上区| 色噜噜综合在线| 国产伦乱91| 国产精品无套内谢| 操婢日韩| 日欧操屄| 人人 操人人 操人人| 日本精品一区二区三区四区的功能| 熟女久久| 九九亚洲色在线观看| 国产白丝在线| 久久、1234| 色九月综合| 久久久久久久久久久久久久9999| 97精品一二区| 高清不卡国产| 午夜欧美J进J出白浆流出久久久| 久草精品热视| 成人综合视频久久| 国产乱码精品久久久久久| 欧美视频第二页| 97香蕉人人乳| 激情四射熟女丝袜| 免费亚洲国产精品久久一区| 日韩中文字幕宗合在线| 骚人妻少妇视频| 精品无码产区一区二| 国产精品久久久久久久久久久久久久久久 | 一个国产在线综合网站| 亚洲天天做日日做天天谢日日| 黄色免费一级在线毛片| 26uuu成人影片| 久久精品人妻一区| 亚洲人妻在线一区| 婷婷AV一区二区三区| 五月婷久久| 日本三级韩三级99久久| 高跟伊人julia ann| 成人在线午夜视频一区| 欧美一区二区三熟女剧情| 久草精品在线| 91欧美亚洲| 久久久久久日韩| 天天精品| 久草综合京东| 青青草久久在线| 青青草大香蕉视频| 欧美日韩黄片精品在线| 欧亚性爱啪啪| 91色艳| 超碰1997| 在线日韩日本亚洲国产| 久久精品国产亚洲AV嘿嘿| 亚洲AV成人无码一区二区三区在线观看 | 久久久久少妇| 人人做人人妻人人夜视频| 天天插天天射| 欧美 熟女 日韩| 欧美色另类| 国产无马在线| 综合婷婷| 久久久久元码视频| 婷婷五月天激情四射| 久久av成人无码免费| 九九精品热| 人妻少妇三级| 91春色| 成人电影一区| 欧美色图人妻| 韩国免费播放一级毛片| 日韩av乱伦| 中日无幕一二三四区| 99热线麻豆 | 亚洲av淫乱| 精品一区96| 久草电影网| 自拍偷拍亚洲熟女妇人精品| 亚洲av在线免费观看| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 丁香六月啪| 97bbn| 亚洲精品一区二区精华| 亚洲天堂综合AV| 国产尤物在线三区| 亚洲黄色a级片| 丰满少妇一区二区三区四区观看| 97视频一区| 久久毛卡| 色偷偷超碰亚洲| 欧美亚洲第一页| 偷窥自拍亚洲色图| 五十路一区无码| 国产aⅴ无码片毛片一级网站| 极品内射| 国产美女自拍AV| 在线啊啊啊啊| AV中亚| 久久五月份| 男人天堂新在线| 日韩无码专区| 天天操福利视频综合网站| 黄色激情电影在线观看| 亚洲 图片 欧美 色图| 91色狼| 精品国产乱码久久久久久久久1| 欧美激情亚洲| 中文字幕啊啊啊在线观看视频| 亚洲欧美综合图片| 亚洲第一页色| 天天综合~91| 夜夜狼人妻| jazzjazz国产精品麻豆| 99xav| 亚洲图片色图欧美另类| 亚洲男人的天堂AV| 搞中出久久| 日本中文字幕一区| 91色久| 亚洲一二三四区在线免费看视频| 国产在线激情| 99xav| 欧美性生活免费网| 1024午夜激情男人的天堂| 亚洲中文一区二区三区视频| 东北女人性交| 操穴国产| 亚洲人妻中文高清| 国产精品午夜精品| 日本免费中文一区二区三区四区| 好色综合| 日韩色女精品| 丁香六月激情| 欧美日韩黄片精品在线| 欧美淫乱视频| 91在线页| 夜色AV无码手机在线影院| 超碰97.com| 91丝袜在线观看视频在线观看| 欧美不卡在线一区二区| 欧洲站一级二级三级h| 丝袜六区| 日韩亚洲中文字幕在线| 亚州一区二区| 欧天美中出| 一区二区偷拍拍视频| 丁香五六月啪啪| 91麻豆天美国产欧美高潮| 嗯嗯嗯,草死我| 国产福利小视频高清在线观看| 96久久久久久久| 亚洲日本男人天堂网| 欧美视频边做饭边橾| 1240青青草一区二区三区视频天爱| 麻豆一区二区三区精品| 国产精品交换一区二区| 久久国产免费激情视频| 日韩大香蕉| 日韩丨制服丨中文|在线| 国产suv精品一区二区四| 日本欧美中文字幕| 日韩综合第八区国产精品| 中文字幕久久精品一区| www.色综合| 约操熟妇| 国产精品点击进入在线影院高清| 99少妇| 91久久久久久久| 欧洲乱码一区二区| 日韩素人无码一区二区三区三州| 色欲蜜臀AV| 亚洲无码成人精品| 一区二区三区视频| 欧美日韩狠狠爱| 日本 情色 1区2区3区| 大香蕉在线86| 中文高清一区二区的| 欧美性爱伊人| 日韩午夜精品一区二区三区电影| 99视频这有这里有精品| 97超碰欧美中文字幕| 91丝袜人妻| 99日免费视频中文字幕| 久久久久国产| 精品妇女一区二区三区| 屌逼传媒| 情侣开房子拍 日韩无码 女的很漂亮| 久久免费精品视频免一| 国产97视频免费观看| 91av一区二区在线观看| 一级岛国大片| 色在线综合| 久久久久亚洲熟妇熟女| 韩国三级一线观看久| 精品少妇999| 天天综合91| 久久久久久久强迫| 男人午夜天堂| 日韩一级性爱无码| 久久久久久99AV无码免费网站| 试看日韩黄片| 国产超碰AV在线精品| 日韩精品中文字幕人妻| PMv在线观看| 欧美组图日韩亚洲中文字幕| 天天看天天干| 超清中文乱码字幕| 欧美真人抽搐一进一出gif| 国模无码人体一区二区三| 一级毛片电影免费看| 精品蜜乳AV免费观看| 国产h小视频在线观看免费| 国产97在线视频| 一区二区三区免费视频入口| 国产在线综合网| 精品人妻一区二区视频| 欧美成人四级在线播放| 成人午夜无码视频| 午夜天天碰综合视频| 丁香五月天婷婷姐| 人妻内射一区二区在线视频| 亚洲999综合| 亚洲情色 自拍| 天天看天天日天天操| 玖玖爱在线视频免费观看| 亚洲精品无码成人久久久99| 天天天天天天天天天天干美女| 人人操AV| 97超级欧美| 少妇蹲下买菜露大唇0| 美女91在线| 亚洲日韩人妻中文字幕一区| 婷婷视频在线免费观看| 伊人成人中文字幕久久网| 日本伦理一区二区| 人人妻天天做天天爽| 色诱中文字幕| 亚洲另类色综合网站| 97在线观看| 精品欧美А∨无码黑人大荫蒂| 9久久精品| 97色97好| 91n处女在线观看| 嫩草美女久久| 国产成人无码久久精品| 欧美性色综合网| 亚洲精品熟妇1区2区3区。| 超碰91在线| 入口操逼网站| 中文字幕日产av人| 无码九九九九| 日韩av性爱在线播放| 亚洲欧美国产其他二区| 久久婷婷六月综合| 性生活无遮挡纯毛片在线看| 精品人妻久久久| 91露脸熟女专区| Julia在线播放亚洲久久| 91色伦综合| 国产精品乱码久久久久| 入口操逼网站| 久热久| 蜜臀在线视频| 婷婷综合| AV有码在线| 亚洲国产成人精品无码专区| 天天综合香 ld视频| 日本布卡一区二三区| 日本天天操| 操操操操操操| 精品视频一二三中文| 天天天天操| 青青草在线视频美女| 国产免a费看黄片在线| 综合网欧| 999综合网| 色综合91| 超碰97护士| 激情五月天网| 国产精品播放| 91ise欧美| 99re6在线视频播放免费精品| 睡产熟女乱伦| 欧美 亚洲 91| 日本一区二区三区四区免费观看| 色天堂综合| 免费的黄片有限公司| 少妇蜜汁| 人人看黄色视频| 91色碰| 女沟厕偷窥piss小便| 亚洲一区日韩| 麻豆天天躁天天揉揉AV| 亚洲夜夜欢无码一区二区| 另类专区加勒比| 亚洲精品中文字幕一区在线视频| 天堂网 主播 亚洲| 熟女乱伦A| 国产九九九九九九| 夜夜影视四色| 91青青在线视频| 日韩av乱伦| 男生通女生屁股| 涩五月婷婷| 丝袜足交视频| 久久久精品国产亚洲伊人| 极品销魂美女一区二区| 一区中文字幕二区日韩| 精品日韩人妻视频| 亚州欧美一区| 极品综合| 干美女人妻| 五月天婷婷综合网| 午夜性刺激视频免费观看| 久久夜色一区二区| 女人喷水视频在线观看| 热久久无毒不卡| 另类小说五月天| 自拍偷拍第26| 男人的亚洲天堂| 九月婷婷久久| 国产91亚洲精品一区二区三区| 夜夜嗨av午夜成人| 天天做日日爱夜夜爽| 超碰97人妻自拍| 青青色综合| 欧亚性爱视频免费看| 另类图片五月天| 江都AV在线| 九月丁香综合网| 欧美在线大香999| 九久9热| 国产呦精品一区二区三区下载| 在线天堂资源亚洲| 久久久久久久久久久久黄色| 操逼日韩无码 | 日本在线视频导航| 欧美97色| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 熟女高潮合集-永久久久-成人AV | 啊啊啊不要嗯嗯在线观看| 国产亚洲精品自在线亚洲情侣| 肏逼视频日本| 久久9精品网站| 日日干夜夜操视频h| 精国久久一区二区三区98| 日韩女模中文造逼| 国产精品一区二区亚洲人成毛片| 久久精品导航| 久久久久久久国产| 你操综合| 日韩操人| 久思思热视频在线观看| 亚洲在线a| 无码九九| 性色乱AV一区二区| 激情五月天视频| 国产一级不卡在线观看| 97干97色| 国产精品噜噜噜日日日| 欧美色图在线视频少妇| 久久精品亚洲东京热色播| 久久久com| 日韩不卡a级视频专区| 性久久久| 人人模人人看| 欧美色图色综合| 久久青娱乐| 91N综合网在线| 久草综合视频| 国产精品乱码久久久久久久久久久久| 日韩AV一区二区三区四四| www.色操逼| 色呦呦呦在线观看视频| 又粗又长又爽在线观看| 成人精品久久久午夜福利| 欧美加勒比| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 亚洲色图 欧美热图 清纯唯美 另类自拍 | 国产精品久久| 好属操| 久久九九精品一区二区| 俞拍自拍| 色综合1991| 91欧美性| 国产成人天堂| 日日日大屁股骚女人精品| 麻豆国产成人精品| 国产精品网站www| 超碰 av 女人天堂| 97日视频| 一区二区三区蜜桃成人撸久久东京热| 嗯~啊~快点 死我视频| 一区,二区,三区网站| 超碰97欧美在线| 欧美最婬乱婬爆婬性视频 | 一级日本牲交大片好爽在线看| 另类亚洲一区二区三区| 一区在线精品中文字幕| 色呦呦国产精品免费看| 久久久精品中文字幕爱豆| 视频国产成人精品日本亚洲18| 少妇熟女1区2区3区| 69少妇一区二区| 成人日韩3| 亚洲 国产 精品一区| 无码日韩网站| 五月天激情四射| 欧美熟妇视频| 在线观看A啊啊啊| 超碰97久久观看| 九九九九一级| 后入式在线免费观看60秒| 久久综合女优| 情侣操 逼视频99| 啊啊啊要高潮了| 清清一区二区三区四区不卡视频| 久久五月份| 麻豆区99999| 操逼999| 超碰色图| 日韩无码一级黄色av片| 成人麻豆av电影网站| wwwcaobibi| 99爱爱| 欧美成人9797| 北京美女一区二区| 日日骚av| 人人人干干人人干| 天天视频黄网站| 天天添天天干电影| 成人网欧美风情| 亚洲做性| 久久成人国产精品| 五月天婷精品激情| 欧美精品在线观看| 天天影视网色欲色香| 91处女在线视频| 无码人妻精品酒店| 欧美午夜视频精品久久| 嗯啊啊啊轻点视频 | 开心六月色| 超碰九九| 熟妇xxxxx性春色| 久久综合九九| 欧美日韩国产电影| 欧美美女视频| 凸凹视频在线观看| 殴美性色a级欧美| 国产人妻精品一区二区三区秋霞| 大香蕉一级黄色片久久| 日韩一性一交一A片俄罗斯| 色综合91| 日韩精品人妻中文字幕不卡乱码| 97超碰9| 久久无码成人| 国产有码一区| 亚洲高清色综合| 亚洲欧洲综合av在线| 色噜噜人妻av 中文字幕| 亚洲日韩狠狠撸视频| 亚洲一区二区三区春色| 亚洲欧美日韩综合在线尤物| 亚洲棕合电彰| 日本三级韩国三级美三级91| 国产成人在线观看网址| 亚洲最大无码中文字幕网站| 亚州精品丝袜-不卡成人免费| 插插综合网天天影视网| 国产精品亚洲天堂网址| 日本一二区免费| 大香蕉淫人| 国产67194| 国产精品久久久久久久久久二区三区| 影音先锋新男人| 99re不伦| 男人的天堂va在线| 欧美一级色| 精品视频一区二区| 色就色综合| 天天综合网久久ww| 操东北女人| 粉嫩国产精品久久粉嫩| 中文字幕一区二区三区人妻不卡| 午夜寂寞欧美| 道久久五香丁月婷婷激情综合| 日韩无码黄色片| 欧美韩国你懂得在线 | 久插综合| 永久免费av无码网站国产app| 亚洲国产精品乱码在线观看| 99999国产精品| 国产熟女少妇一区| 久久久久夜夜夜夜| 天天爱天天操| 蜜臀久久99精品久久久久久-DVD| 五月婷婷综合激情| 欧美91网| 天天影视综合网欧美精品| 神马久久久久久| 九一综合精品视品av| 91在线视频国产网站| 欧美综合第一| 色五天伊人| 超碰98综合网| 国产精品亚洲一区二区三区四区| 少妇熟女视频一二三区| 美日韩成人| 男人的天堂久久久| 国内黄色精品| 久草国产在线视频| 神马午夜久久久| 欧美日韩大黄片| 男人的天堂日韩| 天天日天天插| 少妇久久久久| 丁香婷婷激情五月天无毒不卡| 国产一区二区精品久久99| 丰满少妇精品一区二区| 国产精品久久久久综合| 日本506070| 天天夜夜久久| 午夜男女爽爽爽影院视频| 国产精品第二页| 亚洲中文日韩精品| 老鸭窝成人免费毛片视频 | 人妻色偷色噜| 新视频sss国产| 国产精品秘 福利姬在线观看| 久热伊人| 蜜桃不卡一区二区| 亚洲图片欧美在线视频| 综合 亚洲 欧美| 欧美日韩大陆黑人少妇99| 欧美黄片视频在线观看免费| 久草成人| 欧美亚洲se91| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 久久一二三四五六七八九区| 女人的久久久| 97人人夜夜精品视频| 无码二级三级| 日han少妇无码| 91香蕉视频在线观看免费| 激情婷婷黑人91| 美女淫穴| 九九色热| 中文字幕美女91| 外国免费性情大片| 男人的天堂日本东京热| 国产一区96在线| 亚洲欧洲综合av在线| 好吊色综合| 欲色啪| 91久久18禁| 欧美视频在线视频免费va| 黄色片,com| 啊啊啊好多水| 欧美同性恋 的搜索结果 - 91n| 熟妇xxxxx性春色| 国产精品久久久久亚洲av| 黑白配性爱AV成| 国产乱码精品久久久久久| 五月激情啪啪| 九九九只有精品| 久久鲁夜| 国产欧美伊人| 九九性视频| 尹人免费观看视频在线| 亚洲无码一区成人免费午夜| 老熟妇一区二区三区啪啪| 91色鬼| 婷婷精品视频| 久久精品国产72国产精品福利 | 国产精品4p在线观看| 精精品人妻一区二区三区| 日本一二三高清| 欧美性爱97超碰| 熟妇在线视频一区二区| 国产尹人在线视频免费| 91社区伊人| 欧美黄业| www.91视频网| 超碰97男女| 东方亚洲在线操逼天堂| 天天看特黄的免费网站| 丝袜喷水在线| 内射日韩大臀美女| 人人喜人人妻| 欧美日韩成人在线| 操婷婷逼| 91呆哥人妻| 少妇滛荡视频| 日本性爱网址| 日韩一区二区三区四区五区| 精品中文字幕第一页| 亚欧性爱无码| 中字幕人妻一区二区三区| 嫩草美女久久| 啪啪啪东京| 国产操操日韩三级黄| 日韩福利综合一区| 1人人看人人摸人人操| 日韩激情毛片一级久久久| 精品人妻1区| 97在线观看|