免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(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)置瀏覽器“改造”成能生成摘要、提煉要點、回答頁面相關(guān)問題的工具讓它在信息獲取層面重新變得好用。我寫這篇文章的思路很直接不打算做一個重型的瀏覽器插件而是基于 Emacs 的擴展能力和 LLM 的文本理解能力搭建一套“頁面正文提取 → 調(diào)用 LLM 接口 → 結(jié)果回填 Emacs”的完整鏈路。這套方案適合 Emacs 老用戶、技術(shù)寫作者也適合對 LLM 應(yīng)用感興趣的開發(fā)者。本文會包含完整的 Emacs Lisp 代碼、Python 服務(wù)腳本、配置步驟和常見問題排查你在自己的環(huán)境里照著配置一遍就能把 EWW 升級成一個帶有“AI 閱讀助手”的瀏覽器。1. 為什么用 LLM 增強 Emacs 瀏覽器1.1 Emacs 自帶瀏覽器到底缺什么Emacs 內(nèi)建了一個非常輕量的網(wǎng)頁瀏覽器叫 EWWEmacs Web Wowser。它不依賴外部瀏覽器內(nèi)核直接用 Emacs 的文本渲染引擎展示網(wǎng)頁。它的優(yōu)點非常明顯啟動快、和編輯環(huán)境深度集成、可以像操作普通文本一樣搜索復(fù)制也能和 org-mode 配合。但缺點也肉眼可見很多網(wǎng)頁結(jié)構(gòu)復(fù)雜正文夾在導(dǎo)航、廣告、推薦位和腳本標簽里面閱讀的時候經(jīng)常要翻很久才能看到真正有用的內(nèi)容。另外EWW 沒有頁面智能分析能力。它展示的是“渲染后的文字”卻無法幫你問一句“這篇文章的核心觀點是什么”“這個文檔的安裝步驟有幾步”“這篇論文的方法部分講了什么”。這些工作原本需要人肉閱讀但正好是 LLM 最擅長的東西。所以與其把 Emacs 的瀏覽器替換成另一個瀏覽器不如在現(xiàn)有流程里增加一層“AI 提取與總結(jié)”。這也是近年來很多人提到的 LLM Agent 思路在 Emacs 里的一個落地場景讓模型承擔信息篩選和歸納的重復(fù)勞動用戶只保留最終的閱讀和判斷。1.2 與 LLM Wiki 范式的關(guān)系這里要提一下 Andrej Karpathy 提出的 LLM Wiki 范式。簡單來說這個范式強調(diào)的不只是“用提示詞讓 AI 寫一段話”而是把 LLM 當成一個可以持續(xù)交互的數(shù)據(jù)處理引擎圍繞它構(gòu)建知識整理、內(nèi)容過濾、結(jié)構(gòu)抽取的工作流。放到 Emacs 瀏覽器里意思就是當你打開一個網(wǎng)頁不是把整個頁面一股腦塞給模型而是先做頁面結(jié)構(gòu)分析再讓模型針對特定任務(wù)輸出結(jié)構(gòu)化結(jié)果最后再進入你的筆記體系或閱讀流程。比如可以設(shè)計三種不同的處理目標摘要模式、問答模式、結(jié)構(gòu)化提取模式。摘要模式適合快速瀏覽新聞和技術(shù)博客問答模式適合拿不準頁面里某個細節(jié)時直接問結(jié)構(gòu)化提取模式適合把一篇文章變成 org-mode 格式的大綱或行動項。這些模式在實現(xiàn)上只是 prompt 不同但帶來的體驗差異非常大。1.3 適用范圍與預(yù)期效果這套方案適合本地有 Python 環(huán)境的用戶也適合那些已經(jīng)在用 OpenAI 兼容 API 的開發(fā)者。你不一定需要極高性能的機器因為推理發(fā)生在服務(wù)端本地只負責頁面提取和結(jié)果展示。最終效果是在 EWW 中打開任意網(wǎng)頁一鍵生成摘要自動提取正文并保存到臨時文件模型返回的結(jié)果以獨立 buffer 形式展示不影響當前瀏覽頁面。2. 環(huán)境準備與方案設(shè)計2.1 環(huán)境依賴說明在開始之前先明確一下環(huán)境需要哪些組件Emacs建議使用 27 以上版本EWW 功能已經(jīng)內(nèi)置不需要額外安裝包。示例中我用的是 Emacs 29 環(huán)境配置語法在 27 和 28 上基本兼容。Python建議 3.8 以上。示例腳本只使用標準庫不需要安裝第三方 HTTP 庫。LLM API需要一個 OpenAI 兼容的接口地址和 API Key。模型名稱、接口地址需要根據(jù)你實際使用的服務(wù)進行調(diào)整不要讓示例代碼里的占位符直接用于生產(chǎn)環(huán)境。如果你的系統(tǒng)里沒有 Python或者不喜歡用外部進程也可以直接在 Emacs Lisp 里用url-retrieve調(diào)用 API但那樣處理 JSON 轉(zhuǎn)義、長文本截斷會比較麻煩。用 Python 腳本負責“抓取正文 請求 LLM 輸出結(jié)果”Emacs 負責“獲取鏈接 調(diào)用進程 展示結(jié)果”職責更清晰也更容易調(diào)試。2.2 整體流程拆解整套鏈路可以拆成以下幾步在 EWW 頁面中用戶可以手動觸發(fā)命令。Emacs 獲取當前頁面的 URL 和標題并將 URL 傳給 Python 腳本。Python 腳本下載網(wǎng)頁 HTML用簡單規(guī)則提取正文文本。Python 腳本把正文和任務(wù)指令組裝成請求發(fā)送給 LLM API。Python 腳本拿到模型輸出后將結(jié)果寫入標準輸出。Emacs 使用異步進程讀取腳本輸出并將內(nèi)容展示在新的 buffer 中。流程圖可以簡化成EWW 頁面 → 地址傳遞 → 正文提取 → Prompt 組裝 → API 調(diào)用 → 結(jié)果展示。這里有一個設(shè)計細節(jié)要注意直接用 EWW 當前緩沖區(qū)里的文本不是最可靠的做法。EWW 渲染后的文本中可能包含頁面底部的大量無關(guān)鏈接、版權(quán)信息、推薦內(nèi)容直接用這些內(nèi)容會浪費 token也會干擾模型判斷。更好方式是讓 Python 腳本重新請求原始 HTML然后提取p標簽內(nèi)文本再截斷到一定長度。2.3 關(guān)鍵技術(shù)點實現(xiàn)過程中有三個關(guān)鍵點第一正文提取的質(zhì)量決定了 LLM 輸出的上限。我選用的規(guī)則比較樸素優(yōu)先提取article標簽區(qū)域如果沒有就收集所有p標簽文本隨后去掉過短的句子和明顯是導(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è)加強腳本3.1 腳本職責與文件位置我建議在 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 標簽返回純文本。 # 去除 script 和 style 塊 text re.sub(r(?is)(script|style).*?.*?/\1, , html_text) # 去掉所有標簽 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 標簽序列。 # 方案一優(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 標簽 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目標網(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()這段腳本有幾個細節(jié)值得說明請求頭里的User-Agent是模擬常規(guī)瀏覽器的標識有些網(wǎng)站會拒絕空 User-Agent 的請求。extract_main_content里用re.search定位article標簽如果沒有 article 就退回p標簽聚合。這個策略適合大多數(shù)博客和文檔站。call_llm里的返回結(jié)構(gòu)按 OpenAI 兼容格式解析choices[0].message.content是幾乎所有兼容服務(wù)的標準返回路徑。腳本使用sys.stderr輸出錯誤信息Emacs 端只捕獲 stdout 的正常內(nèi)容這樣調(diào)試時不會讓錯誤信息混入模型輸出。3.3 單獨測試 Python 腳本具體配置前建議先在終端里跑一次腳本確認接口可用。假設(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生成當前頁面摘要。llm-eww-outline生成當前頁面大綱。llm-eww-ask針對當前頁面提問。配置中需要指定 Python 腳本路徑、模型名稱、API 地址等信息。建議把這些參數(shù)放到一個單獨的 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 () 獲取當前 EWW 頁面的 URL。 (if (eq major-mode eww-mode) (plist-get eww-data :url) (error 當前 buffer 不是 EWW 頁面))) (defun llm-eww--get-title () 獲取當前 EWW 頁面的標題。 (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準備寫入新內(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 () 生成當前 EWW 頁面的摘要。 (interactive) (llm-eww--run summary)) (defun llm-eww-outline () 生成當前 EWW 頁面的大綱。 (interactive) (llm-eww--run outline)) (defun llm-eww-ask (question) 針對當前 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 進程并讓 Emacs 在進程運行期間繼續(xù)保持響應(yīng)。sentinel是進程結(jié)束時的回調(diào)用來在結(jié)果后追加完成標記。llm-eww--run函數(shù)內(nèi)部先獲取當前 EWW 頁面的 URL 和標題然后把參數(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 擴展把結(jié)果插入當前頁面有些時候把結(jié)果放到獨立 buffer 里并不是最方便的。另一個思路是把生成的摘要直接插入到 EWW 頁面的頂部這樣瀏覽時能直接看到概括再往下滾動看細節(jié)。可以寫一個輔助函數(shù)從結(jié)果 buffer 中提取剛生成的文本插入到當前位置(defun llm-eww-insert-summary-at-point () 將最近的 LLM 摘要插入到當前光標位置。 (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。當然因為 EWW buffer 本質(zhì)上是只讀渲染視圖直接插入文本可能需要先調(diào)用read-only-mode關(guān)閉只讀屬性。這里只提供思路不強制要求你一定使用。5. 針對不同任務(wù)的 Prompt 設(shè)計5.1 摘要模式摘要模式最適合技術(shù)博客、新聞頁面。Prompt 的核心要求是“使用中文、不超過 300 字、提煉核心觀點”。也可以根據(jù)實際需要改成英文摘要、多段式摘要。如果你希望摘要更結(jié)構(gòu)化可以把 prompt 改成請閱讀以下網(wǎng)頁正文完成以下任務(wù) 1. 用三句話概括核心內(nèi)容 2. 列出文中提到的關(guān)鍵技術(shù)點 3. 給出一句話的閱讀建議這種 prompt 的輸出更適合直接進入知識管理流程。5.2 大綱模式大綱模式適合論文、文檔、官方手冊等長頁面。我們利用 LLM 從正文中提取出層級結(jié)構(gòu)并輸出 Markdown 列表Emacs 的 markdown-mode 或 org-mode 都能直接顯示這種格式。注意大綱模式不是簡單地把標題復(fù)制出來而是讓模型基于正文語義重新組織出有條理的框架。5.3 問答模式問答模式是三個模式中最靈活的。用戶輸入一個問題比如“這個頁面里提到的安裝步驟有幾步”Python 腳本會把頁面正文和問題一起組裝成 prompt模型只輸出與問題相關(guān)的部分。這個模式在閱讀英文資料時很有用相當于給 EWW 接了一個“頁面內(nèi)知識助手”。由于不同模型對 prompt 的敏感度不同建議在第一次使用前先用小段正文測試一下輸出質(zhì)量。如果輸出偏離主題可以適當修改 Python 腳本里的 system prompt 或任務(wù)描述。6. 常見問題與排查思路6.1 Python 腳本直接運行正常但 Emacs 里沒有輸出這種情況大多是因為 Emacs 環(huán)境變量和終端不一致。Emacs 啟動時不一定繼承 shell 里設(shè)置的LLM_API_KEY尤其是 mac 上通過 GUI 啟動的 Emacs 經(jīng)常存在這個問題。建議先確認 API Key 配置方式要么在 Emacs 配置里直接寫入llm-eww-api-key變量要么在 Emacs 啟動腳本里顯式setenv環(huán)境變量(setenv LLM_API_KEY 你的API Key)也有可能是因為make-process的命令參數(shù)有問題??梢栽诮Y(jié)果 buffer 里查看輸出如果進程失敗Emacs 會把 stderr 顯示在 buffer 中。排查時可以臨時把腳本里的print(..., filesys.stderr)改成普通print看看能否輸出錯誤。6.2 模型返回內(nèi)容被截斷如果摘要只生成一半常見原因是max_tokens設(shè)置太小。Python 腳本默認是 800對于更長的摘要或問答場景可以適當調(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 當前 buffer 的文本內(nèi)容傳給腳本不走重新抓取流程。第二種方案實現(xiàn)上需要修改 Emacs Lisp 函數(shù)在調(diào)腳本時直接傳入buffer-substring而不是 URL。6.4 結(jié)果 buffer 中顯示亂碼中文亂碼通常來自編碼問題。Python 腳本輸出到 stdout 時如果系統(tǒng)默認編碼不是 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ò)可達的環(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 地址不正確確認服務(wù)商提供的兼容接口完整路徑中文亂碼編碼不一致統(tǒng)一使用 UTF-8 編碼7. 最佳實踐與工程建議7.1 不要把 API Key 寫入配置倉庫無論你把 Emacs 配置放在 Git 倉庫還是同步到多個設(shè)備都不要把 API Key 硬編碼進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)整。如果想進一步節(jié)省 token可以在 Python 腳本里做更精細的清洗比如刪除空白字符、壓縮換行、去掉版權(quán)聲明等。7.3 異步操作避免卡死Emacs 是單線程的同步網(wǎng)絡(luò)請求會導(dǎo)致整個界面卡住。本文示例中使用make-process這是正確做法。如果你后續(xù)要擴展為更復(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ù)前需要確認頁面內(nèi)容不包含敏感數(shù)據(jù)。凡是涉及內(nèi)部系統(tǒng)、未公開文檔、個人隱私的頁面都不應(yīng)該使用外部 LLM 接口處理。如果模型服務(wù)商支持私有化部署或者你有合規(guī)要求可以把--api-url改成內(nèi)部服務(wù)的地址整體流程無需大改。7.6 調(diào)試技巧開發(fā)過程中建議先用 Python 腳本手動跑一遍命令確認輸出正常后再回到 Emacs 里測試。如果 Emacs 端沒有結(jié)果可以在結(jié)果 buffer 中查看錯誤信息。也可以臨時把make-process換成call-process同步調(diào)用這樣雖然在等待時會卡住但錯誤提示更直觀方便排查。8. 再進一步把 LLM 瀏覽器能力融入日常知識管理8.1 與 org-mode 結(jié)合生成摘要后最簡單的高效用法就是把它粘貼到 org-mode 的筆記里。結(jié)合 org-capture 模板可以一鍵把 URL、標題、摘要、時間戳寫入指定的 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)定也能強迫你在保存時再讀一遍摘要加深理解。8.2 多語言翻譯同樣一套能力也可以把 prompt 改成翻譯任務(wù)。比如新增一個translate任務(wù)讓模型把當前頁面翻譯成中文。很多 Emacs 用戶有閱讀英文文檔的需求這個功能能明顯降低閱讀門檻。把 Python 腳本里的任務(wù)選項擴一下就行--task translate對應(yīng) prompt 可以是prompt f請將以下網(wǎng)頁正文翻譯成中文保持專業(yè)術(shù)語準確。\n\n正文\n{content}8.3 從單頁到批量如果你經(jīng)常收集技術(shù)資料可以把這套思路擴展到批量抓取。寫一個 Emacs Lisp 函數(shù)讀取一個保存了 URL 列表的文件依次調(diào)用 Python 腳本最終生成一個 Markdown 匯總文件。這個過程中同樣要注意異步和并發(fā)控制不要讓請求數(shù)量過大導(dǎo)致接口限流。9. 寫在最后這篇文章從 Emacs 內(nèi)置瀏覽器 EWW 的痛點出發(fā)完整實現(xiàn)了一套“LLM Emacs Web Browser”的增強方案。核心是把頁面正文提取和 LLM 調(diào)用放到 Python 腳本里Emacs 端用異步進程調(diào)用腳本并通過自定義命令展示摘要、大綱和問答結(jié)果。整個過程不需要替換瀏覽器不需要額外安裝復(fù)雜的 Emacs 包成本低落地快。雖然示例中依賴 OpenAI 兼容 API但你可以很輕松地替換成其他模型服務(wù)只要接口兼容 chat/completions 格式即可。另外像 Karpathy 提出的 LLM Wiki 范式一樣真正有價值的不是一次摘要生成而是把 LLM 能力嵌入到日常記錄和閱讀循環(huán)里打開頁面、生成摘要、寫入筆記、定期回顧。這樣Emacs 就不再只是一個古老文本編輯器而是變成了一個帶 AI 閱讀助手的信息工作臺。如果這篇文章對你有幫助歡迎收藏備用。實踐過程中遇到問題可以從常見問題表開始排查也可以根據(jù)上面的思路繼續(xù)擴展你自己的功能。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
夜夜爱伊人| 中国女人做爰A片| 2025中文在线视频字幕免费观看| 98热精品| 97久久人人人干| www.日日日.com| 五月综合激情图片| 香蕉久久av一区二区三区| 欧美婷婷色五月| 超碰二区| 五月婷婷狠狠久久| 久久激丁香| 大香蕉五月婷婷| 插插网爽妇五月丁香| 9热在线视频精品| 色五月 五月婷婷| 亚洲AV色婷婷人禽五月天| 超碰人妻在线| 九九综合色综合| 天久综合91综合首页| 亚洲操精品| 色久五月| 狠狠擼综合| 婷婷综合日本| 白度黄视频| 99只有精品| 丁香五月影院| 日婷婷| 婷婷久久免费看| 9久久精品视频| 另类少妇人与禽zOZZ0性伦| 人人干人人看| 五月色网| 5月丁香六月婷婷| 五月丁香网视频| 激情骚五月| 欧美性猛交XXXX乱大交极品| 人妻久久久久久| 国产精品国产| 婷婷色九月| 五月丁香六月综合激情无码软件亮点 | 在线资源av-超碰中文在线-成人AV| AV片一区在线观看| 99噜噜噜在线播放| 超碰日韩人妻在线| 桃色成人网| 超碰人人超碰| 超碰在线国产| 亚洲99热| 97热在线精品| www..999热久| 中文字幕成人| 99精品在线观看| www激情| 丁香婷婷色五月激情综合| 大香蕉院线| 天天 青草 制服丝袜 在线| 久久99久久久| 97色热| 欧洲区自拍| 99久久超级| 成人精品视频99在线观看免费| 操操啪| 婷婷五月丁香啪啪| 涩涩涩五月天| 亚洲亚洲人成综合网络| 热99视频精品在线| 吾爱AV导航| 久久综合图片| 99噜噜| 久久五月天视频| 久久综合影院| 欧美狠狠一在草| 91欧美| 色性综合| 丁香五月天激情AV| 极品人妻VideOssS人妻| 久久婷婷色| se99视频| 综合色图婷婷| 久久天堂| 另类综合激情| 开心激情网在线| 五月丁香啪啪综合| 青青草tp| 久久人妻少妇嫩草AV| 激情图片亚洲| 五月激情射| 亚洲另类婷婷综合| 成人婷婷深爱综合网| 婷婷色5月激情网| 亚洲色婷婷激情| 九九爱看亚洲| 人人干女人| 99热国产这里只有精品| 操大屄五月天视频| 激情综合色图| www 五月天 com| 人人做人人看人人摸| 色色COm| 色五月色五天免费视频| 99爱视频免费| 大香蕉懂9| 丁香五月首页| 呦呦视频无码播放| 婷婷涩涩五月天| 岛国AV网| 五月婷婷综合色啪首页| 六月丁香深深爱综合网| 久久少妇视频| 久久久久久久人妻| 超碰不卡在线| 婷婷爱五月天人人爱| 婷婷丁香五月在线播放| 五月婷婷激情综合| 色播五月天婷婷老师| 超碰免费在线| 丁香五月天堂网| 99免费在线| www.色五月| 久婷视频| 五月丁香网中文字幕| 久久99热这里只有精品| 97夫妻超碰| 91精品91久久久中77777久久玖玖九九| 69热在线| 色爽九九| 五月丁香综合久久夜夜| 亚洲久久视频| 狠狠干狠狠色| 天久久久久| 精品国产人人爱人人| 五月天狠狠草| 乱岳熟女50岁| 激情五月天丁香| 99热99热99热99热| 色五月激情五月| 卡视频1区2区| 天天夜天天色天天| 亚洲无码色| 婷婷激情五月视频| 亚洲国产色色| 99国产精品白浆在线观看免费| 久久9热| RenRenSe在线视频网站| 亚洲午夜av| www:99热视频| 五月婷婷说| 九九热精品| 99玖玖人人| 色五月五月丁香| www.久久久久久久| 伊人婷婷色| 丁香五月激情澎湃一区| 亚洲乱码日产精品BD| 久久婷婷内射| 亚洲成人无码网站| 欧美黄色一级| 九九色99| 色综合久久之分久久| 91色久| 99热精品无码| 99热久久日本| 五月天啪啪啪| 午夜丁香 婷婷| 深爱丁香激情| 夜色热久| 思思 热 99| 免费观看欧美成人AA片爱我多深| va中文资源在线观看| www久| 日本激情91| 中文字幕色色| 91婷婷五月丁香碰| 人人摸人人干| 五月丁香婷婷色色色| 丁香五月天AV| 久久91久久91色欲精品| 激情五月丁香六月综合AVXXXX| 99干免费视频| 99在线观看视频| 天天综合天综合久久网| 激情五月开心五月丁香五月| 综合五月丁香97| 激情五月色在线播放| 99热网精品| 五月天婷婷自拍图片在线观看| 丁香五月色情| 色色色综合视频| 婷婷五月天久久| 婷婷五月激情的图片| 五月天综合久久| 任你爽精品免费视频6| 婷婷五月花| 无码髙清| 久久丁香五月| 99色播| 怎么样可以看免费的一级av| 高清无码视频网址| 久久99久久99精品免观看粉| 国产这里只有精品| 五月网网站| 狠狠色综合五月人人| 亚洲国产成人裸舞| 婷婷中文字幕网| 免费视频99| 《久久综合九色综合97婷婷| 婷婷婷婷色| 亚洲人成网亚洲欧洲无码久久| 色五月丁香五月| 亚洲网站在线鸭子av| 99在线观看视频精品| 天天操天天曰| 五月婷婷狠狠干| 无码AV大香线蕉伊人| 久久色这里只有精品| Av在线资源| 婷婷社区五月天| 成人在线视频一区| 日日夜夜天天| 99热这里只有精品最新网址| 五月婷婷影院| 性日本精品| 超碰精品国产首页| 激情av| 99色一| 激情五月天第四色| 日日夜夜天天| 婷婷五月天av| 四虎婷婷五月天| 色色色色色日韩午夜激情 | 九九热视频精品| 99久久99热| www.色色色com| 欧美xx激情视频在线观看| 伊人综合色干| 大地9中文在线观看免费高清| 色婷婷五月天在线| 丁香九月婷婷| 免费在线a| 99热这里是精品| WwW天天干| 人操人| 色婷婷久久| 五月开心啪啪| 欧美婷婷六月丁香综合色| 成人做爰A片免费看视频| 午夜免费高清AV片| 97操操| 日韩色色视频www| 久久婷婷91| 国产美女无遮挡裸体毛片A片| 婷婷丁香小说| 青青草视频福利| 五月丁香无码| 人人看人人97| 伊人久久丁香狠狠婷婷综合香蕉 | 亚洲V国产V欧美V久久久久久| 开心五月婷婷婷美女| 大香蕉伊人久久| 五月色亭丁香| 国产精品激情AV久久久青桔| 在线播放中文字幕| 狠狠狠色激情综合适合| 99热99干| 五月丁香综合啪啪対白| 美女天天久久| 午夜免费试看| 综合久久五月天| 五月丁香综缴情性爱| 九月激情网| 最新AV在线观看| 国产av天堂| 婷婷情色五月天| 常久最新免费的色吊丝| 婷婷五月天天| 伊人丁香六月婷婷| 午夜大香蕉| 色射7856五月天激情四射| 精品无码久久久久久久久| 97影院一级片| 超碰二区| 色婷婷日本| 综合五月激情| 天天舔天天摸天天透| 久久一热免费视频| 99r这里只有精品哦| 香蕉婷婷色五月| 色播五月婷婷| 人人做人人看人人摸| 婷婷激情六月综合| 激情婷婷五月天丁香| 激情AV网| 狠狠干五月| 97色碰| 深爱五月激情综合| 99久在线精品99re8热| 综合激情在线观看| 五月天婷婷久草丁香| 日本色超碰| 91干婷婷| 8050一级网| 五月天社区| 五月天啪啪| 97色色综合| 亚洲精品成人| 深爱激情五月网| 亚洲啪啪啪啪| 夜夜撸日日操| 天天综合精品| 丁香五月成人| 思思热视频在线观看| 婷婷五月天激情小说| 激情婷婷六月天| 人人爱人人添| 天天综合精品| 婷婷五月天影院| yellow视频在线观看91| 婷婷色影院| 久久九九网| 婷婷五月综合在线| 婷婷丁香色情| 精品久久99码| 色五月色五天色情网| 婷婷丁香九月| 99久久9| 中国丰满熟女A片免费观| 91久热| 无码AV免费精品一区二区三区| 亚洲人妻av| 99热这里有精品| 激情文学综合婷婷五月天丁香花| 超级碰碰一区| 五月丁香久久网| 久久视网36| 这里只有精品日韩精品| 99热99re6国产在线播放| 99网| 狠狠的日| 丁香五月婷婷激情蜜桃| 婷婷色丁香五月| 六月丁香婷婷五月天| 五月丁香六月欧美综合| 久久人妻www| 99热这里都是精品| 国产亚洲精品久久久久久牛牛| 丁香五月色| 96精品久久久久久久久| 国产欧美日韩综合精品一区二区| 婷婷色色宗合网| 99日精品视频| 91dy.av| 丁香六月激情综合啪啪| 中文无码婷婷| 天堂久久久久天堂网| 久久婷婷丁香视频网| 九九色精品| 五月色欧洲| 五月婷婷免费看| 超碰在线精品| 婷婷中文综合网| 久99久热| 色五月婷激情| 五月开心激情| 青青草Avb在线| 色婷婷五月天中文字幕| 五月丁查人人| 亚洲精品久久久久久久久久吃药| 婷婷黄色五月| 狠狠999| 久久综合影院| 五月天久久网站| 六月色婷婷| 综久久久| 日本精品。999| 亚洲激情综合| 超91热| 五月婷婷色情| 五月婷婷综合丁香视频| 99原创自拍视频在线观看| 人橾人| 五月丁香激情综合六月涩涩爱| 婷婷五月天av| 少妇AB又爽又紧无码网站| 亚洲婷婷婷| 另类图片 五月激情| www,com,五月色色| 婷婷丁香五月在线观看91| 六月丁香婷婷视频综合在线观看| 婷婷五月,偷窥偷拍网| 久久在线视频免费观看| 99亚色色色| 六月丁香婷婷综合在线| 亚洲超碰中文字幕| 人妻在线中文字幕久久| 99er视频在线| 99热在线观看| 久热只有这里有精品| 丁香六月婷婷综合缴| 亚洲精品又粗又大又爽A片| 色婷婷丁香九月| 精品久久久久久久久久久久人妻| 丁香六月五月天| 久热伊人9| 婷婷色五月情| 在线观看免费观看在线9久| 亚洲日韩国产黑丝黑丝AVAV一区二区三区 | 9久久婷婷国产综合精品性色| 91狠狠色丁香婷婷综合久久狠丁香综合久久精品 | 操丝袜视频影院导航| 91黄址| 熟女国产在线一区二区三区四区| 色人妻五月| 色五月综合婷婷| 婷婷91| 丁香五月婷婷激情网| 天天日本夜夜谢| 五月婷三级片| 激情五月天色爱| 五月婷婷激情网| 性爱网久久| 五月丁香六月成人| 久综合| 超碰爱爱爱| 五月丁香亚洲综合| 91狠狠色丁香婷婷综合久久| 激情九月婷婷| 91精品丝袜久久久久久| www久久久| 色婷精品91| 丁香婷婷六月男男| 综合色网站| 先锋资源婷婷| 乱码操操| 99九九视频| 亚洲色涩视频| 精国产品一区二区三区A片| 色色激情五月天| 丁香五月综合| 狠狠五月激情在线| 香蕉AV777XXX色综合一区| 2020久久婷婷五月| 95精品区一区二| Www.婷婷五月| 麻豆精品| www婷婷色情网| www.99热国产| 99思思| 麻豆精品| 九九婷婷网五月天| 欧美一区二区三区不卡影视| 91男人资源站| av在线激情| 色一情一乱一乱一区91| 久碰视频| 成年人看Va免费视频| 激情婷| EEUSS鲁片一区二区三区| 色五月婷婷激情基地| 欧美天堂久久| xxxx五月| 九九热视频精品999| 久久丁香久久| 激情婷婷五月| 大战熟女丰满人妻AV| 午夜性爱影视一区77| 99九九99九九九视频精品| 婷婷五月激情图片| 婷婷综合另类小说| 五月婷婷亚洲天堂97色婷婷| 五月婷婷丁香大陆免费| 五月激情视频网| 97超喷视频在线观看| 欧美五月丁香啪啪响视频| 免费看欧美成人A片无码| www国产亚洲色婷婷com| 日本一级特黄大片AAAAA级| 色五月婷婷在线| 五月丁香成人版| 九九综合图片网| 黄网在线免费观看| 台湾佬天天日丁香婷婷五月天 | 另类精品视频在线观看| www.狠狠色.com| 91操在线| 婷婷丁香六月| 影音先锋91资源站| 99色视频在线观看| 日本三级日本三级三级人妇四虎| 韩国中文字幕91| 婷婷色在线播放| 青青草a在线| 五月天婷婷涩涩| 婷婷欧美| 天堂网啪啪| 五月天激情婷婷五月天久久| 操逼视频一区| 国内自拍97在线| 99婷婷| 激情小说视频图片网| 久草婷婷网| 欧美色色色色色色色| 五月天婷婷影院影院| 五月天丁香婷| 日本久碰| 熟女人妻一区二区三区免费看| 色婷婷AV在线| 婷婷五月天黄色小说| 丁香五月五月婷婷| 99热网址| 久久艹网| 九久久九精品视频| 欧美日韩99| 婷婷五月天首页| 色狠狠五月天| 国产三级片91| 超级97碰碰| 疯狂做受XXXX高潮A片| 99九九综合久久九九| 淫荡工a| 激情五月黄色小说| 婷婷视频网| 激情九九六月激情免费视频| 欧美久久久中文字幕| www.婷婷| 97人人射| 啊V视频在线观看| 欧美五月婷婷| 99国产视频网| 99九九精品视频| 六月伊人婷婷| 这里只有精品99视频| 婷婷久久99| 一操久久| 成人在线视频一区| 亚洲视频无| 超91热| 精品久久久久成人码免费动漫 | 色九九丁香九月色九九色| 欧美情色一区| 日韩无码AV电影网站| 99热这里都是精品| 99热思思| 熟女人妻一区二区三区免费看 | 五月综合激情| 婷婷综合视频| 丁香九月综合| 超碰国产在线观看| 丁香五月婷婷亚洲激情四射| 色啪久 | 久热成人| 日本色婷婷| 高清不卡一区| 欧美这里只有精品| 久久婷婷视频| 人妻体体内射精一区二区| 免费视频无码| 国产日产亚系列精品版优势 | 色婷婷成人| 欧美色爱五月天| 免费看成人747474九号视频在线观看| 玖色色综合| 婷香狠狠爱五月| 大香久久伊人网| 91热手机在线| 色九九丁香九月色九九色| 丁香色情五月综合激情| 影音先锋天天日| 欧美超碰人人| 99热老网站| 久久九九视频网站| 手机AVAV天堂看网| 99精品小视频| 超碰免费99| 99色热| 日本人妻伦在线中文字幕| 夜夜骑天天操| 久草视频一,二三四| 中文无码婷婷| 国产精品美女久久久久AV超清| 日本精品人妻无码77777| www.丁香黄色五月天人与| 五月色婷丁香| 六月婷婷激情| 久久婷婷五月综合色播| 俺去也综合| 超碰在线视屏| 日本熟妇乱妇熟色A片蜜桃| 中文字幕不卡网站| 伊人久久综合| 欧日韩AV| 99爱精品视频| 99精品国产热久久91色欲| 久久99久久99精品免观看软件| 99热中文字幕久久| 五月婷婷色色色| 国产熟妇的荡欲午夜视频| 97婷婷五月丁香| 亚洲色夜| 婷婷激情伍月网| 热的无码综合视频| 日韩狠狠色| 97碰碰碰免费公开在线视频| 超碰97久久| 五月丁香综合激情在线观看| 激情伊人五月天| 色婷婷网| 久久综合9| WWW久久久| 天天干,噜噜色,狠狠色| 丁香五月人妻| AV在线不卡播放| 99伊人性爱在线影院| 激情综合综合综合| 丁香五月情| 国外亚洲成AV人片在线观看| 一二区成人电影| 五月激情视频网| 九九热在线视频| 色五月婷婷网| 天天操婷婷| 色色婷五月天| yellow视频在线观看91| 97伦乱| 九九热色视频| 五月99久久| 久久婷婷青青草| pom538精品视频| 亚洲婷婷激情888精品久| 五月丁香啪啪啪综合网| 奇米色大香蕉| 国产五月天激情小说| 伊人久久大香线蕉av一区| 激情涩播| 婷婷五月天直播| 538任你爽| 熟女国产在线一区二区三区四区| 天天爱天天做综合| 五月婷在线| 色婷婷情片| 五月丁香婷婷中文网| 色五月欧美| 久热91精品| 亚洲色色香蕉| 亚州男人天堂婷婷五月| 欧美美女国产日韩一区二区久| 丁香久久综合| 热久69| 一级二级香港秋霞欧美欧美秋霞| 五月婷婷综合激情| 超碰av在线| 久色五月丁香视频| 超碰免费电影| 九九综合久久| 狠狠色噜噜狠| 色欲日日躁| 五月天婷婷基地| 欧美日韩999| 色婷婷a v| 色婷在线视频| 日日操夜夜爽| WWW·色色色·COM| 天天日夜夜爽| 999久久久国产精品| 激情综合激情五月一起草| 丁香婷婷老熟女综合网| 久久成人综合五月天| 天天干天天插| 日日噜噜久久婷婷五月天| 色色色综合色| 五月丁香爱婷婷深深| 丁香五月色| 九九国产视频| 六月丁香久久| 99这里有精品视频3| 色婷婷久久久| aaaaa不卡| 能看的av网站| 天天婷婷天天| 亚洲狠狠色丁香婷婷综合久久| 色播五月丁香综合| 夜色热久| 久久激情五月婷婷| 日韩AV在线免费观看| 色五月天丁香婷婷| 97久久视频| 99操碰| 夜夜操少妇| 婷婷影院A成人| 五月丁香婷婷三级| 婷婷五月综合免费在线| 日韩在线99| 久久新地址| 深爱五月激情五月| 激情五月综合ì香亚洲| 婷婷五月性感| 天天做天天爱| 亚洲av网站| 色一情一乱一乱一区91Av| 婷婷丁香五月天欧美| 99干日日干| 第四色婷婷丁香五月| 五月天婷综合| 天天做天天爱天天高潮| 1995年关宝慧版蜘蛛女| 新男人天堂人妻| 五月婷婷,狠狠操| 婷婷视频网| 亚洲无AV在线中文字幕| 婷婷五月天在线一区| 91日视频| 嫩BBB槡BBBB搡BBBB| 国产精品成人av在线观看春天| 99国产99| 任你爽精品免费视频6| 六月婷婷深深爱| 激情98色婷婷五| 天天做天天爽| 99er免费在线观看| 色婷婷亚洲在线观看| 五月色网| 婷婷五月天电影在线| 991国产精选视频在线播放下载| 99re这里| 亚城区在线| 日本一级一级一级一级| 亚洲永远av在线播放| 亚洲成人AV在线播放| 色九月激情综合网| 婷婷五月天亚洲综合| 久久婷婷五月天| 五月婷婷丁香综合网| 色色色五月婷婷| 久月久在线视频| 综合啪啪| 五月天婷婷婷| 青青夜夜狠狠夜夜狠狠| 综合超碰熟| 五月丁香激情啪啪| 五月丁香六月婷婷色日| 五月丁香婷婷国产精品综合| 日韩精品超碰在线观看| 一区二区成人电影免费播放| 国产99热| 久久久天天啊| 五月激情婷婷播播网| 超碰9| 婷婷五月天亚洲综合网| 激情婷婷五月天| 五月婷婷激情综合网 | 亚洲激情五月丁香久久久久| 激情丁香婷婷| 青青艹b| 亚洲国产精品VA在线看黑人| 在线成人网站| 日日操日日撸| 亚洲激情色色| 久久久人妻久久久| 看全色黄大色大片| 欧洲电影在线观看免费版英语版| 大香网伊人久久综合| 橾逼网| 久久一二三视频| 、激情六月天| 久久五月网| www.爱婷婷.com| 江苏少妇性BBB搡BBB爽爽爽| 五月婷婷在线视频| caop在线视频| 五月花婷婷| 99思思| 色五月婷婷五月久久| 99热啪啪| 亚洲综合婷婷五月| 丁香五月婷婷欧美激情-中文天堂最新版在线观看| 亚洲春色奇米影视| 99精品偷自拍| 99激情| 99热精品在线| 综合网啪啪| 五月天久久综合婷婷| 亚洲精品激情| 亚洲婷婷激情五月天| 甈吧vv| 五月丁香视频在线观看| 日韩欧美一区二区三区四区| 色婷婷99| 久久er视频6| 91精品久久久久久77777| 中文字幕,综合,91| 99色五月| 六月撸婷婷| 97亚洲婷婷| 九九色之九九色之88| 伊人激情网| 香蕉99网| 久久99免费视屏| 人人操超碰| 青青草99re| 九97免费视频| 久久久久久久久久久久63| 99操网站| 激情婷婷网| 国产婷婷久久| 激情久久网| 97碰碰视频| 99干日本| 99自拍视频| 高清无码.com| 婷婷黄色五月天在线视频| 婷婷激情五月天在线视频| 99这里只有免费的小视频在线观看| 涩综合在线 | 婷婷色播婷婷| 九九aV| 做爰丰满少妇1313| 五月久久丁香| 狠狠色婷婷7777久综合| 99亚洲精美视频在线观看| 丁香六月狠狠干| 久热99| 99热99思午夜精品| 丁香久久五月天视频在线观看| 五月WWW| av色色国产| 99啪| 99热这里是精品| 超碰日韩成人| 天天艹| 欧美三级欧美一级| 青青操avbb| 激情婷婷五月天在线观看| 五月丁香婷婷激情视频| 婷婷综合视频| 成人短视频在线观看| 九月丁香婷婷基地| 在线看黄色| 操97免费超级视频| 五月婷婷综合激情网| 日韩一级片| 久久五月天大美女| 日日操,夜夜撸| 永久精品| 九九亚洲| 五月天大香焦| 超碰免费99| 免费超碰在线观看| 色婷五月丁香久亚洲| 久久香蕉婷婷五月天| 五月天天久久香| 五月丁香影院| wuyuedingxiang| 亚洲区,视频区,视频区免费| 夜夜撸天天日| 91超碰九色| 黄桃AV无码免费一区二区三区| 五月天堂色色| 日韩五月婷婷| 99热精品无码| 99热官网| 看全色黄大色大片| 色爱99| 五月丁香五月综合欧美| 久久久久久久人妻| 我想看国产大学生口爆吞精的视频| 玖热精品综合视频| 日韩高清成人| 日本ww亚洲| 五月天丁香成人社| 免费无码毛片一区二区A片| 玖玖婷婷五月天毛片| 99视频自拍| 26uuu国产激情视频| 丁香五月伊人| 99热热热国产超碰| 99亚洲大片精品永久在线观看| 婷婷六月啪啪| 91 久热| 狠狠做六月爱婷婷综合aⅴ| 情久久综合五月天| 日韩精品AV一区二区三区| 五月丁香色婷婷色| 婷婷五月天成人影片| 五月丁香六月成人| BBWCUCKOLD精品熟妇 | 丁香五月婷婷亚洲另类| 六月丁香婷婷天堂| 五月丁香激情综合网| 亚洲视频码| 国产综合激情五月久久| 五月色综合| 色婷久| 五月天成人在线播放丁香| 狠狠狠狠狠干| 2017狠狠干| 日日爽日日| 91919191919久久成人视频| 五月五婷婷网| 色色色综合| 日本4399天堂中出| 激情五月综合视频| 六月色色| 激情四射网| 天天天干夜夜夜操| 日韩五月婷婷久久| 成人网站免费sxj| 天天色天天操天天射| 色五月天丁香婷婷| 俺去也五月天| 超碰永久在线| 淫水导航| 久久艹 五月天| 五月激情综合激情五月| 久久久久久人妻| 亚洲成人在线免费| 97人人操| 99热观看| 人人摸人人摸| 九九热99久久99| 五月天婷婷丁香六月| 亚洲狠狠爱婷婷| 丁香五月激情婷婷激情| 国产精品久久久久久久久久| 色五月婷婷狠狠撸| 九九成人| www.天天干.com| 99精品综合| 婷婷色婷婷亚洲成人| www99热| 国产成人网址| 色五月av| 丁香六月婷婷开心| 久热久| 热这里只有精| 中文幕无线码中文字蜜桃| 亚洲精品操一操、噜一噜、摸一摸、爽 | 激情五月婷色| 久草热视频在线观看| 色婷婷色综合| 色情五月综合婷婷| 久久33视频| 五月天色婷婷成人| 久久久香港| 婷婷五月天社区| www99久久| 性色天| 九月色婷婷| 99小精品| 蜜臀久久99精品久久久久久酒店| 日夜夜天天| 精品九九久久| 欧美影院| 日韩成人av在线| 激情综合色| 99热这里只有精品33| 中文字幕丰满乱孑伦无码专区 | 日本97在线视频| 97干在线视频| 日韩抽插操逼| 久久XX日本综合| 欧美va在线观看| av网址在线| 97色婷婷| 天天综合网亚洲综合网| 亚洲岛国电影| 国产性爱一级| 激情五月天黄色小说| 少妇高潮呻吟A片免费看软件| 99免费视频在线观看爱| 99久操| 色色色热| 综合网五月天123| Caop在线| 天天干,夜夜爽| 色噜噜在线| 超级碰碰碰碰视频| 久久婷婷亚洲| 色五月丁香伊人| 久久性刺激| 色99色| 欧美xx激情视频在线观看| 亚洲婷婷91丁香| 8090在线影视少妇| 99这里| 婷婷五月天播| 婷婷97C| 色婷网| 五月天婷婷丁香花| 中文字幕高清av| 激情五月天在线视频| 台湾佬天天日丁香婷婷五月天 | 香蕉AV福利精品导航| 婷婷六月丁香欧美视频在线| 成人看片网站| 色99xx| 天天色天天日| 婷婷五月天六点丁香五月| 深夜男女福利刺激影院一区| 丁香婷婷激情网站| 久操操| 草逼大片| 婷婷五月激情六月丁香| 色色色色色综合| 99热综合| 91人操| 99热这里只有精品50| 中文字幕永久免费| 婷婷五月成人社区| 亚洲成人综合在线| 五月激情婷婷六月| av婷婷丁香 六月| 五月天婷婷激情网| 香蕉AV777XXX色综合一区| 婷婷丁香色情| 日本成人噜噜| 成人深爱丁香五月| 人妻激情视频| 久久婷婷超碰| 丁香六月啪| 99九九在线精品热动漫| 婷婷五月天电影在线| 天天操夜夜爽天天操| 久久午夜丁香| 先锋影音av色五月天资源站| 99热这里只有精品2| 五月天综合视频网| 天天爽天天弄| 大香蕉久久婷婷| 天天日日| 99热这里只有精品99| 久99在线视频| 骚。com| 五月天婷婷开心| 九九热色视频| 中文字幕AV网址| 亚洲成人综合网在线免费观看| 风流少妇A片一区二区蜜桃| 高清视频一区| 99精品亚洲| 五月婷婷开心激情六月蜜桃| 九九碰九九爱97| 久久久欧美精品sm网站| 九九色网| 婷婷五月丁香五月基地| 久久人妻精品| www夜夜操| 色玖玖爱| 婷婷久久精品| 国产精品久久久海的味道| 丁香五月婷婷骚视屏| 四色 爱 婷婷 精品 亚洲 五月天| 综合色播| 婷婷久久久久| 99久扒热| 五月天婷婷激情网| 婷婷五月综合基地| 9视频在线成人网站| 免费看欧美成人A片无码| 激情AV| 欧美性爱五月天| 这里只有精品免费视频| 超碰九色| www超碰| AAA久久| 色综合激情| 无码啪啪| 色婷视频| 在线播放成人网站| 国产免费一区二区在线A片视频| 成人电影AV在线观看| 五月综合色| 婷婷六月天| 五月婷婷|欧美| 丁XX 成人| 国产激情av| 日本综合色色| 99啪啪视频| 大香蕉AV在线| 婷婷深爱五月| 五月丁香啪啪| 国产日产亚洲系列最新| 亚洲日韩成人三级av| 五月天婷婷狂暴白浆| 久久日婷婷| 色色网91| 狼人婷婷综合| 国产99久9在线| 中文字幕av亚洲| 久久久性爱视频| 激情久久综合| 成人va在线观看视频| 五月婷婷综合网在线播放| 69婷婷丁香午夜| 五月天婷婷视频30| 国产密乳av一区二区三区四区| 能看的AV| 午夜婷婷| 99国产精品久久久久久久久久久 | 99re热视频这里只有综合亚洲| 久久色五月天| 五月婷婷,六月激情| 久色网五月| 天天狠狠六月婷丁香影院| 久久Xx| 天天操天天操天天操天天操天天操| 狠狠狠狠狠狠| 国产首页在线| 五月天三级久久| 五月丁欧美| 99热这里只有精品23| www.婷婷.com| 大香蕉啪啪| 狠狠色婷婷| 97碰碰九九视频| 99超级超级超级碰| AV五月丁香| 天天舔天天摸天天射| www激情五月天| 亚洲性爱电影| 五月天婷婷综合网| 色五月色情| 黄网在线免费观看| 日 日干 日日做| 99热最新| 99精品性爱| 精品9久| 天天搞天天色综合| 日本三级中国三级99人妇网站| 色播五月天天| 99只有这里有精品在线视频| 色情五月综合婷婷| 丁香五月婷婷五月基地| 武则天精品久久| 五月丁香欧美综合免费视频| 婷婷在线播放| 大地资源色婷婷视频在线| 丁香六月婷婷社区| 色婷婷五月天中文字幕| 先锋男人99资源| 丁香激情网| 成人无码精品1区2区3区免费看| 骚五月婷婷| 热久久视频99| 欧美性爱五月天| 另类亚洲视频| 丁香五月天啪啪激情综和网| 天天干天天操天天拍| 六月丁香婷婷综合影院| 激情网第四色| 六月 丁香 视频| 久久久久久久久久久月丁| 六月婷婷网站| 六月婷婷五月丁香| 91成人电影| 怡红院视频| 亚洲爆乳无码精品AAA片蜜桃| 日本免费91| 色情免费视频播放| 99re思思热久久| 亚洲成人AV在线| 天天操天天操| 大香蕉婷婷色| 丁香婷婷狠狠97| a色色色色色| 色色99| 九色亚洲| 亚洲俩性性爱图片久久第六页| 久久电影4399| yw.av| 五月天色官网| 久久综合99| 国产免费av在线| 欧美天天干天天草| 9+1视频网址| 六月丁香大香蕉| 天天久| 婷婷色色综合| 俺去也综合| www.色综合.com| 丁香五月激情五月| 婷婷瑟五月天久久综合| 大香蕉五月天| 久久图色4| 99热成人在线观看| 夜夜夜夜夜操| 色情五月| 亚洲久热无码| 人妻体体内射精一区二区| 久久伊人五月天| 九九99热久久精品66中文字幕| 九九久久色| 99久久99热这里只有精品| 天天日天天色| 97婷婷丁香| 五月天色婷婷网| 婷婷99综合| 婷婷五月天亚洲天堂| 色吧五月| www。五月天激情| 91色在线/日韩| 91网站黄| 少妇性按摩无码中文A片| 日韩欧美婷婷丁| 99热成人在线| 91大操| 天天日天天操天天干| 五月天婷婷激情小说电影| 五月婷婷色影院| 丁香六月激情| 色婷婷88| 综合大香蕉| 东京热伊人| 丁香六月激情| 午夜成人天堂久久无码日韩久久| 99re热在线视频观看| 五月天婷婷AV| 99热这里| jiuse91在线| 丁香五月综合在线视频| 99视频在线9| 久久婷婷色五月| A片试看120分钟做受图片| 男人综合网| 天天日天天久久青青| 日夜夜天天| 90色免费视频| 毛片色五月| 9久热在线精品| 色综合天天综合成人网| 97碰人人操| 天天久| 婷婷色五月开心五月| 男女99免费视频| 丁香六月激情综合| 丁香色五月直播| 色婷婷五月综合| 欧美综合激情五月天| 激情婷婷99| 亚洲午夜视频| 99re热| 综合色图婷婷| 99热官网| 99久久99视频只有精品| 国产成人精品一区二三区熟女在线 | 成人在线视频一区| 丁香色综合| 久久在这里有精品| 色婷婷aV四虎| 东京热免费视频| 久久这里只有精品无码| 五月丁香久久丝袜啪啪| 99亚洲视频| 五月丁香花开综合网| WWW色色色COm| 欧美日韩中文国产一区发布| 人人干人人操人人摸| 99视频内射三四| 99热国产在线| 久久九九网| 五月婷AV| 亚洲综合色婷婷| 成人五月天综合网| 变态另类9| 五月丁香激情婷婷综合| 99自拍视频网站| 极骚大香蕉伊人|