99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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
返回資訊列表
五月天第四色开心色播| 婷婷五月天AV网| 婷婷社区五月天| 丁香五月自拍| 97超级操操| 激情六月婷婷| 免费观看大片视频 丁香婷婷 六月欧美| 色综合网页| 久久久99久久| 五月综合婷婷五月| 五月天婷婷黄色| 7超碰自拍| 97碰碰叉| 亚洲岛国电影| 天天爽天天摸天天爱| 99久久婷婷五月综合| 大香蕉220| 新97人人上人人| 久久66精品| www.五月婷婷久久.com| 久久99久久99精品免观看粉| 色情婷婷。| 秋霞少妇AV网站| 生活片五区| 天天色天天爱天天爱天天爱y| 五月丁香香蕉| 日本欧美在线| 五月天社区| 嫩草视频| 国产亚洲色婷婷久久99精品9j| 91在线日| 桃色伊人在线| 丁香五月视频在线观看| wwccc久久久| 五月天开心色情网| 五月亭亭六月色| 91精产品自偷自偷综合| 五月丁香操婷逼| 丝雨一区二区| 9精品一区| www久久久久久久久久久| 婷婷丁香久久| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 果冻传媒A片一二三区| 丁香婷婷激情| 精品亚洲国产成AV人片传媒| 97精品人人A片免费看| 日韩AV大全| 99久久久免费| 狠狠操狠狠| 五月天婷婷社区| 97碰超级人人看| 色综合九九| 9久热免费视频99| 久久色9| 99青青草99| 五月婷婷深深爱| 99亚州综合精品成人网| 色综合色| 91在线人| 最新久久网址| 久久五月天精品视频| 超碰在线日夜| a毛片二逼wwwwwwwwww| 玖玖99婷婷| 五月婷婷婷色| 婷婷九九| 99思思热只有在这里看| 99热免费| 亚洲AV影片在线观看| 91久女| 婷婷丁香日韩五月| 久草五月婷婷| 99er视频在线| 亚洲av成人在线| 丁香九月婷婷| 五月婷婷亚洲色图| 久久小视频免费| 日日夜夜综合| 色综合色| 玖玖激情五月天| 涩五月婷婷| wwwss在线观看| 无码人妻少妇色欲AV一区二区| a在线观看| 国产精产国品一二三在观看| 97干在线看| 色九亚洲| 婷婷开心激情综合五月天| 天天天综合网| 免费看欧美成人A片无码| 免费无码毛片一区二区A片| 99久久97| 国产亚洲色婷婷99精品| 五月丁香天堂网| 波多野结衣AV无码Porn| av免费在线看不卡无毒| 五月婷婷黄色| 激情四射婷婷| AV在线收看| 天天做天天爱天天摸| 狠狠五月天婷婷激情网。| 99爱在线视频| 久久婷婷五月综合啪| 99久久婷| 国产色视频网站2| 伊人激情| 亚洲婷婷91丁香| 久久伊人大香蕉| 九九色黄色| 操操国产| 五月天成人在线视频网站| 99热只有| 色丁香久久| 婷婷五月天香蕉| 天天艹夜夜艹| 全高清无码视頻| 人妻久久久久久久久| 丁香婷婷基地| 99ri在线播放| 亚洲五月天另类小说图片| 色五月婷婷网| 婷婷久久综合久| 色色网站在线| 另类图片五月天激情| 天天做综合| 六月丁香五月天| 香蕉AV福利精品导航| 超碰成人在线观看| 91精品综合久久久久久五月丁香| 色v综合网| 五月婷婷说| 欧美交换配乱吟粗大25P| 大香蕉懂9| 天天 青草 丝袜制服 在线| 激情小说婷婷| 五月天婷婷黄色视频| 欧洲色色| 亚洲久久日| 五月天影院| 蜜臀AV在线观看| 97久久视频| 九九综合| 9999三级片| 色五月丁香婷婷在线观看| 人与禽A片啪啪| 久久婷婷五月草视频在线播放| 婷婷五月天激情免费在线观看| 日本三级韩三级99久久| 五月天婷婷午夜丁香| 亚洲精品在线视频| 久久精彩综合视频| 性爱综合网| 婷婷亚洲五| 丁香五月在线观看| 天天综合天天做天天综合| 天天日天天爽| 狠狠色情婷婷| 91n啪啪| 日本性激情色播| 中文字幕成人网站| 成人在线99| 六月激情丁香一道本7777| 思思国产99| 视频一区二区在线| 思思热在线观看| 91艹人| 五月天婷婷免费视频| 中文字幕婷婷在线| 五月丁香777| 天天做综合| 精品国产AV色一区二区深夜久久| 艾小青av| 色婷婷色| 婷婷五月色| 亚洲天天免费| 日韩天堂久久| 久久丁香五月天| 五月婷成人网| 91久久九久久九久久九久久九久久 | 激情五月天婷婷播播久久综合91| 久热中文字幕在线线观看| 激情五月婷婷综合秋霞| 色九九九九| 99久久精品色老| 成人丁香五月| 九九视频在线观看| 青青热久精品视频在线观看| 青青草网武则天| 免费播放片大片| 少妇高潮一区二区三区99欧美| 日日日日日| 色五月丁香激情| 玖玖九九9999在线观看视频精品| 99色干| 美妞av| 婷婷五月丁香基| 婷婷久月| 开心五月婷婷激情网| 墨西哥毛片内射精| 99∨VTV| 99re热免费观看视频精品| 综合99久久天天综合| 五月天激情四射| 色丁香影院| 伊人久久大香网| 色婷婷网大全在线| 操91| 中文字幕AV在线播放| 99re熱| 久久久久久久久久久jjjj| 婷婷五月天AV在线| 人草人人| 开心五月婷婷99| 日韩一级片| 婷婷视频在线碰| 原琪琪色影院| 99免费| 天天噜天天插| 91好好热日本在线| 久久全色| 色九月综合| 亚洲色视频| 婷婷丁香十月| 欧美啄木乌丝袜人妻系列| 亚洲超碰在线| 色五月色五天色情网| 久久婷鲁| 欧美十二区| 色五月AV| 日日操夜夜爽| 婷婷综合网| 久久综合人妻| 五月天亚洲色| 玖玖资源站蜜臀| 婷婷五月天综合蜜桃| 亚洲国产成人综合| 五月婷婷熟女| 欧美精品999| 成年视频免费观看| 六月丁香激情| 五月婷婷综合社区| AV色婷婷| 伊人久久大香网| 婷婷六月天| 日韩成人精品中文字幕电影| 天堂伊人干| 五月丁香网站| 影音先锋美国A| 裸体做A爰片毛片A片免费| 五月天婷婷激情在线色图| 91无码视频| 五月婷婷五月天| 丁香六月婷婷综合啪啪| 色色AV色色色东莞| 六月99天天婷婷激情综合| 婷婷丁香花五月天| 激情另类综合| 五月综合视频在线| 九九热99精品| 五月婷婷官网色| 婷婷狠狠干| 这里只有精品2| 直接看的AV网站| 婷婷五月六月丁香综合| 天天久| 小视频久久久aaa| 色五月第四色| 99热老司机| 我爱大香蕉| 99免费热视频在线| 日韩不卡123| 中文字幕操比影片| 在线观看免费狠狠色丁香香综合 | 欧美婷婷五月无砖| 激情五月色婷婷| 精品亚洲日韩99欧美片| 九九精品在线视频观看| 五月丁香激情综合六月涩涩爱| 五月天色婷好好| 激情五月黄色小说| 色在线视频网2025| www.激情五月| 九色亚洲| 亚洲综合色色| 丁香五月天激情综合网| 欧美婷婷综合| 婷色五月| 韩国19 主播内部福利vip免费播放| 久久婷婷激情四射五月天| 久99| 丁香五月婷婷俺也要去| 99在线免费视频| 99视频在线精品| 欧类av怡春院| 久9无码视频| 99热福利| 99精品色| 777精品久无码人妻蜜桃| 97色 五月天丁香| 欧美日韩国产一区二区| 天堂二区| 婷婷亚洲日本| 日日夜夜爽| 超碰二区| 婷婷丁香五月激情密臀av| 天天干天天做| 另类视在线| 操操操av| 91一起操| 丁香色影院| 草美女在线观看视频在线播放| 午夜不卡成人一区二区| 婷婷综合网| 久久综合26p| 久久久WWW| 六月婷婷网站| 九九色热| www九九| 开心五月深爱五月丁香五月激情五月 | 亚洲国产精品VA在线看黑人| 婷婷五月激情图片| 亚州操人在线视频| 性欧美大战久久久久久久83| 五月丁香久久精品在线观看| 久久久性爱视频| 欧美婷婷色| 中文超碰视在线| 97热精品| 91超级碰人人操| 日本本土色网第一区| 婷婷五月丁香色综合| 精品9197碰| 色婷婷电影网| 国产精品电影| 久热九九| 五月婷婷婷| 黑人无码一区| 日本色综合| 91九色PORNY大屁股| 91操色| 亚洲高清在线| 色婷婷9| 欧洲亚洲精品| 99热欧美精品| 五月丁香六月婷婷成人电影| 九九精品热播| 久久婷婷五月丁香网| 国产成人av在线| 亚洲成人av在线观看| 人妻系列久久久久久久久久久| 激情五月丁香亭亭| 日韩欧美成人片| 五月天播播中文字幕 | 97操操| 99久热| 色呦呦美女| 99精品免费欧美小视频| 99草在线免费观看视频| SS丁香五月婷婷| 天天日天天插| 五月天婷爱综合| 成人丁香五月| 夜夜躁狠狠| 五月在线| 色婷婷激情| 久久人人九| 亚洲婷婷丁香五月| 精品乱码久久久久| 婷婷色情 | 天天干天天操天天上| 色噜噜婷婷| 成人精品在线观看| 成人狠狠成人狠狠成人狠狠成人狠狠| 丁香六月欧美| wwW天天干| 99色热| 久久99这里只有精品| 亚洲色综合| 激情丁香久久| 国产精产国品一二三在观看| 五月丁香婷婷伊人| 99亚洲精品视频| 9月色婷婷| 玖玖婷婷综合| 免费视频99| 一个色的综合| 一级七香蕉| 五月婷婷六月天| 久久草中文日韩欧美| 激情五月婷婷五月丁香五月开心五月| 狠狠干综合网| 丁香六月综合激情| 五月婷婷激情四月| 亚洲色频| 99热超碰| 五月激情丁香| 婷婷丁香五月天影院 | 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 九九九九九九毛片| 大香蕉综合在线| 成人视频九九| 九热网站| 啪啪91| 丁香五月婷婷性爱| 丁香婷婷成年| 九月av| 婷婷五月丁香综合亚洲| 99超碰欧美| 九九热只有精品| 超碰日日操| AV电影在线播放| 婷婷开心综合人妻小说网址| 日本久久精品18| 久久九九综合| 五月天国产| 秋霞电影一级黄| 97久久人人人干| 五月丁香六月婷婷久久肏| 激情五月天色色| 91919191919久久成人视频| 久久92| 色婷婷伊人激情在线观看| 另类激情首页| 一个色的综合| 人妻久久久久| 成人av在线网址| 一点色成人网| 亚洲永久免费| 狠狠操综合| 色久五月| 成人精品一区二区三区四区五区| 婷婷综合在线网| 特黄三级片| 人妻自慰高清合集| 丁香五月激情六月| 他改变了拜占庭| 色444综合网| 欧美成人猛片AAAAAAA| 九九热re99re6在线精品| 99热日| 一起草Av| 日韩超碰在线| 九九美女视频| 久久丁香婷| 五月天桃色深爱网| 97色干| 思思久久99热只有频精品66| 五月 丁香 欧美| 熟女激情网| 久久婷婷综合五月趴| 日韩无码一区二区三区四区| WWW色五月| 九九久久五月天| 天天日天天爱天天噪| 精品无码av丁香五月激情| 日本综合久久| 91热99| 光棍影院日韩精品| 久热婷婷在线视频| 日本97在线| av在线免费播放观看| 中文毛片无遮挡高潮免费| 91超碰在线观看| 天天爱天天做天天操| renrencaoav| 五月天婷婷激情小说| 久久XX| 碰碰女| 伊人色五月| 青青艹b| 一区二区无码视频| 久热99视频在线观看| 成人精品视频99在线观看免费| 激情五月天色色| 生活片五区| 五月丁香色| w婷婷五月婷婷w| 美欧成人视频| 91狠狠色| 色噜噜狠狠色综无码久久合欧美| 婷婷五月电影| 五月天婷婷成人网| 亚洲天堂婷婷丁香| 五月色丁香婷婷综合| 亚洲成人av在线播放| 五月天综合网| 色综合色| 777影视理论片大全在线观看| av大香蕉| 国产成人精品一区二区三区视频| 国精产品一区一区三区免费视频| 大地资源色婷婷视频在线| 亚洲午夜成人av电影网| 情色五月天 网站| 丁香婷婷老司机久操| 一级片操逼视频| 成人无码中文| 国产激情综合五月久久| 天堂五月婷婷| 狠狠色噜噜狠狠狠888| AV在线免费网站| 亚洲中文字幕网| 五月丁香网站| 色色五月综合| 日日噜人人人做人| 亚洲国产成人裸舞| 99自拍视频| 亚洲另类在线观看| 色月丁| 成人视频网| 人人色人人弄人人操| 久久密臀婷婷| 亚洲精品影视| 色五月婷婷五月久久| 丁香婷婷五月| 婷婷俺去也| 精品九九九久| 深爱五月激情网| 丁香五月婷综合网| 97色色色| 97干视频| 九一99| 337p大胆噜噜噜噜噜91Av| 伊人在线视频| 六月婷婷天天操夜夜爽视频| av中文网站| 国产精品大香蕉| www.婷婷五月.com| 99热6这里之有精品| 日韩AV大全| 337p大胆噜噜噜噜噜91Av| 欧美一线视频| 97色色色色色色色色色色色色色| 日本婷婷| 99色在线观看视频者| 丁香花色色网| 色色色无码| 情欲禁地| 天天做天天爱天天摸| 五月天婷婷影院影院观看| 免费黄色视频网址| 五月丁香六月| 欧美激情综合色综合啪啪五月| 三区激情四射av| 91无码视频| 99re久热| 亚洲激情区| 99热这里只有精品1| 色婷婷AV在线| 色综合色色色| 91碰碰视频在线观看| 婷婷成人综合免费视频| 精品久久99| 丁香五月婷婷亚洲激情四射| 99视频精品8 | 99热这里只有精品2024| 色色色色综合网| 97碰碰在线观看视频| 亚洲行行色色| 亚洲 在线 另类| 亚洲五月婷婷| 日韩另类| 丁香六月激| 久久综合首页| 香蕉伊人综合| 久久五月激情| 伊人久久大香蕉网| 婷婷99热| 婷婷午夜| 九九热在线99| 久久五月综合| 99在线免费视频| 日本九九九九| www.minyis.com【JT】实力收量可预付QQ2101460746 | 99精品视频在线6| 婷婷综合网站| 激情无码五月天| 五月婷综合| 99九九免费精品| 99色在线视频| 婷婷色五月开心五月| 丁香五月电影| 欧美综合123区| 日本色99| 9久精品视频| 狠狠干婷婷| 激情婷婷色色| 成人av免费观看| www.99热日韩.com| 欧美三级巜人妻互换| 六月丁香五月亭亭| 在线中文字幕免费视频| 伊人玖玖网| 爱久综合| 99色| 五月亚洲| 夜夜爱影院| caop在线视频| 日日干夜夜撸夜夜骑| 麻豆观看夏晴子| 婷婷涩五月天综合| 久久久久久99精品无码| 天天操人人干| 狠狠操.COM| 91精品国产色猫| 亚洲性爱电影| 亚洲AV激情五月综合网| 狠狠色综合网| 久久一热| 亚洲区视频| 日韩人妻无码专区| 日日干天天爽| 天天肏夜夜肏| 国产97在线日韩亚洲女人被黑人巨大| 天天色天天色天天色天天色天天色| 新激情五月天| 综合激情在线视频| 久8色色| 九伊人网| 欧美日综合| 伊人五月天在线| 97在线综合| 熟女人妻视频| 激情五月丁香婷婷| 9.1综合网| 人妻有码乱操| 九九99热久久精品66中文字幕| 激情文学久久| 欧美色必爱| 丁香婷婷影院| 91九色欧美| 激情欧美婷五月| 色99无码| 色欲AVV| 高清不卡一区| 色五月综合婷婷| 色色五月天婷婷| 丁香狠狠色婷婷久久无码视频| 五月丁香色综合| 色婷婷色五月综合| 色视频2025| 国产44页| 国内熟女黄色系列| 九九这里有精品| 99视频在线观看网址| 亚洲婷婷丁香五月视频| 激情五月婷婷丁香六月| 婷婷五月色情| Aaa久久| 婷婷五月天av| 激情五月综合网| 亚洲最大激情无码| 激情综合丁| 婷婷五月激情四月综合 | 亚洲婷婷五月| 欧美va欧美va差| 久碰久操| 9久热在线视频精品| 精品国婬伦V无码久久久| 天天日夜夜爽| 色婷婷五月天成人网| 欧美VA在线观看| 久久久久久草黄色片AV在线观看| 婷婷五月天精品| 影院久久久| 免费黄网不卡AV| 五月丁香| 欧美日本日韩| 中文字幕无码人妻少妇免费视频| 超碰激情网| 久久综合影院| 人人草人人舔| www.天天干| 色欲午夜无码久久久久久张津瑜| 色五月综合激情| 天天舔天天摸视频| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 五月天色婷婷图片| 色婷婷中文字母五月丁香| 五月婷婷与六月丁香图片激情| 午夜微拍福利| 97干在线免费| 丁香五月色色婷| 色色综合院| 9久热在线精品| 亚洲综合欧美色丁香婷婷888月图片| 三级黄色大片视频| 亚洲偷| 色五月天婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷婷 | 欧美天天草人人草| 色丁香久久| 在线国产精品色| 色噜噜狠狠色综合无码久久欧美| 久久精典| 欧美天天干五月丁香| 五月丁香婷婷综合激情基地| 五月婷婷黄色视频| 91人人爽狠狠狠| 五月丁香激情婷婷| 婷婷在线播放av| 激情五月丁香综合蜜桃| www激情网| 丁香六月激情综合| 五月丁香婷婷综合网| www99热| 国产乱子轮XXX农村| 亚洲妇女熟BBW| 依人大香蕉在钱1| 97碰在线免费观看| 欧美日韩999| 色五月丁香总合网| 可似看的AV| 天天综合久久| 97人妻碰碰中文无码久热丝袜| 国产做爰视频免费播放| 色婷婷av综合网| 182TV大香蕉| 天干天天干天天天天天| 亚洲综合热| 久久a热| 国产黄色在线| av无码电影| 亚洲色五月天是什么| 夜夜操,天天撸| 欧美色色色色色色色| 超碰97在线操| 成人中文字幕在线| 337p午夜影院| 久久久五月天| 啪啪黄页网| 国产在线aaa片一区二区99| 99热人人操人人操| 婷婷色色网| 99热这里只有精品22| 99热97| 啪啪视频99| 亚洲久热| 欧美日本va| 9久热| 超色欲天天| 久久亚洲色导航| 五月天综合在线观看视频| 国产看真人毛片爱做A片| 人妖色AV色综合| 热久久77777| 婷婷精品在线| 99在线播放| 五月天伊人日日噜影片AV| 99在线视频播放| 精品九九九久| 狠狠擼综合| 精品婷婷| 久99久在线观看| 五月丁香六月婷婷综合网缴情| 深夜男女福利刺激影院一区完整| 51精品国内探花| 丁香五月婷婷色五月| 亚洲丁香网| 噼里啪啦完整版中文在线观看| 激情五月天的婷婷| 国产激情婷婷| 久久se 综合网| 99这里是99在线视频| AV在线大香蕉| 国产综合久久久777777| 色情五月停停丁香| 五月婷A V在线| 婷婷97狠狠干| 五月婷在线| 久久综合激情| 婷婷五月激情欧美| 99在线精品观看99| 激情婷婷丁香五月天| 99这里只有精品视频| 五月天社区婷婷| 丁香六月婷婷缴情欧美| 亚洲综合成人网| 婷婷色五月丁香六月欧美啪| 超碰免费大香蕉| www.久久9| 色深爱五月| www. 五月. com| 丁香激情综合| 一区三区视频有限公司| 人妻啪啪啪| 色色综合院| 99色五月| 热99精品视频五月| 九九热这里只有精品23| 丰满老熟妇BBBBB搡BBB| 丁香色色网| 婷婷99狠狠躁天天躁中文| 五月丁香婷婷深深爱| 精品99在线看| 97影院一级片| 亚洲精久久| 婷婷五月丁香五月| 五月天色婷婷图片| 99五月香婷婷丁香在线视频| 特级片神马电影| 在线综合91| 五月天色不卡| 色婷婷综合网| 亚洲综合在线视频| 婷婷五月天日本无码| 99天堂网最新| 久久婷婷国产| 这里只有精品热| 91人人人人人| 桃色五月天| 狠狠爱激情网| 久草热在线视频| 激情婷婷狠狠干| 天天久久婷婷| 97操在线视频| 婷婷国产日本欧美| 久久久9久| 色婷婷免费视频| 五月丁香久久精品在线观看| 久久色大香蕉| 日韩aaaaa| www,8050,午夜三级| 欧美性猛交AAAA片黑人 | 99热最新精品| 免费V片在线| 五月丁香性爱| 婷婷五月天激情综合深爱| 人妻Av在线| 色婷婷五月天偷拍| 日本在线噜噜| 色色激情五月| 精品一二三区久久AAA片| 天天草比天天爽| 久久五月天色婷婷| 久久九九Com| 久久五月视频| 色宗合久久五月婷婷| 婷婷激情四射五月天| 一级黄色影片| 精品久久久人妻| 九九这里只有精品在线视频| 久久九九99.www| 天天五月天综合网址| 日本激情ⅩXX免费视频| 九一九九黄色| 婷婷丁香五月综合| 天天日 天天草| 丁香五月亚洲无码| 99ri精品在线| 婷婷情色开心五月天99| 婷婷五月天AV| 九九亚洲视频| 婷婷六月插屄激情| 色色色色色色色色五月先| 美女被操一区二区| 五月天婷婷久久视频| 在热视频精品| 天天操天天操综合| 色五月五月婷婷| 九九精品婷| 成人无码髙潮喷水A片| 激情九月综合| 99视频在线精品免费观看2| 色播五月丁香婷婷| 亚洲成人网在线观看| 182.t午在线观看| 操操碰| 色婷精品91| 五月丁香操亭亭网| 婷婷五六日| 韩日在线熟女| 性色婷婷| 日韩精品视频中文字幕| 97av在线视频| 九色91国产| 久久综合五月天| 婷婷六月伊人| 色色色色色色综合| 狠狠色五月激情| 婷婷大香蕉| 久久婷婷五月综合伊人| 国产免费一区二区在线A片视频| 五月天婷婷社区| 思思热久久久在线| 五月综合精品| 五月天婷婷爱丁香中文字幕| 91精品电影18T| www.99热视频| 久久香蕉影院| 色伊人婷婷| 99久久99久久| 丁香六月色婷婷| 99熟女啪啪视频| 伊人网啪啪| 亚洲激情| 任你擦免费视频| 影音先锋91男人资源在线播放| www。五月,com| 狠狠ri| 天天色五月婷婷91久久久久久久| 少妇真实被内射视频三四区| 欧美色五月| 精品一区二区三区四区五区六区| 婷香五月| 大香蕉伊人久久| www.zbzhongsen.com| 色99视频| 国产69久久久欧美黑人A片| 久久五月婷6 9| 国产精品第一国产精品| 国产美女无遮挡裸体毛片A片| 热99这就是精品视频| 99热超碰| 色五月激情五月| 欧美成人AAA片一区国产精品| 五月丁香婷婷成人网| 亚洲网在线观看| 婷婷综合伊人| 六月婷婷色色色| 五月丁香六月婷综合成人综合| 国产熟女一区二区三区五月婷| 亚洲中文字幕av| 那里有AV网址| 五月丁香拍拍激情综合| www,av好吊操| www.99热这里精品| 日本色色网| 国产激情视频在线观看| 五月停视频天堂| 丁香五月婷婷亚洲激情四射| 91人人操人人| WWW.五月天9999| 日韩爱操视频| 久久多色| BBWCUCKOLD精品熟妇| 香蕉曰比| 午夜一区| 手机看片日日做夜夜| 婷婷丁香18| 久99视频| 日本欧美成人片AAAA| 大香伊人婷婷影院| 五月丁香人妻| 好吊操这里只有精品| 伊人9999| se99视频| 丁香五月婷婷av影院| 大香蕉五月婷婷| 丁香五月第九色| 99久精品视频| 亚洲色色色| 干一干xxxx| 夜夜操夜夜爽| 激情五月综合亚洲另类| 丁香九月激情| 亚洲综合另类| 色五月开心五月激情五月| 亚洲va成人va成人va在线观看| 九九香蕉网| 久久婷婷五月综合色和| 日韩啪啪网| 婷婷五月天激情免费在线观看| 中文字幕婷婷| 午夜福利成人AV91| 五月天婷婷久久日| 97人人操| 久久99大| 久热这里只有精品在线观看 | 五月婷av| 丁香激情久久| 久久久久久人妻久久久久久久久久人妻久久久 | 99riAV国产精品视频| 天天日夜夜操五月| 99九色视频在线观看| 操逼电影免费看| 51成人| 色99网站| 超碰v| 五月天无码| 熟女激情五月天| 毛片九九九九九九九九18| 任我肏| 激情五月天在线免费美女视频| 国内外色色色色色成人视频| 婷婷午夜激情| 老司机日日夜夜青草| 91久久日日| 日本本土色网第一区| 超碰chaompinm| 亚洲第一影院高清无码网站| 天天射综合网天天插| 五月丁香免费看| 伊人色综合影院视频| 天天做天天爱天天爽综合网| 热日韩欧美| 久热这里只有精品在线观看 | 色欲影香| 色婷婷五月视频| 思思热99er| 亚洲中文字幕AV| 中文字幕综合网| av在线观看网址| 激情小说 五月天| 久久艹 五月天| 99热这里只有精品在线免费| 日日操日日撸| 日韩操逼大片| 久久久久婷婷| 亚洲综合在线播放| 五月丁香婷中文| 欧美日韩成人在线网站| 欧美日韩成人在线网站| 九九九九中文字幕| 五月丁香六月婷婷在线观看| 丁香五月欧美婷婷| 五月天伊人综合| 中文超碰视在线| http://www.sd-xiangsu.com/| 四LLL少妇BBBB槡BBBB| 日本www五月婷婷| 婷婷久久综合| 丁香五月天五码婷婷| 农村熟妇高潮精品A片| 综合在线丁香五月| 人妻内射一区二区在线视频| 玖操97| 九九热123| 这里只有精品视频一区| 久热这里| av激情在线| 婷婷噜噜| 丁香久月婷| 成人 在线 日韩| 97九色| 久热91| 中国AV性爱观看| 天色色综合网| 五月婷婷亚洲色视频| 97精品自拍| 色五月丁香五月| 久久九九99字幕| 99久| 丁香五月成人| 91人人操.COM| 人妻AV中文系列| 久久九九99亚洲国产久精综合| 色亭亭丁香五月天| 91丁香五月| 欧美狠狠一在草| 1024欧美看片| 色色色五月婷| 777久久综合视频| 99re欧美精品| 午夜婷婷久久 | 久久9久| 97亚洲色 torrent magnet| 国产99久久久国产精品免费看| 99色激| 日韩AV无码影片| 婷婷五月天在线综合| 性视频久久| 在线中文AV| 狠狠色综合网| 天天噜天天爱| 超级碰碰碰久久网站| 久久久婷婷| 色综合久久88色综合中文字幕| 九 九九九AV| 操久久网| 99热这里只有精品无码| 九九色中文| 婷婷四色五月| 五月婷婷我| 色婷婷av在线| 热99.com婷婷| 久久性爱视频| 色五月婷婷五月天激情综合| 九色PORNY9l原创自拍| 色XX综合网| 亚洲色情免费网| 久久伊人婷| 日韩丰满少妇无码内射| www.天天日| 色五月婷婷开心| 日本97在线视频| 午夜AV网| 色五月涩涩婷婷| 五月丁香婷婷激情| 99久久久99久久91熟女| 伊人大香蕉爱聚| 色婷婷丁香五月| 婷婷色片| 天天爽综合网| 人人玩人人橾| 婷婷丁香激情综合色情| 99啪在线视频| 五月婷婷综合网| 天天色播| 人人爱人人摸人人澡| 六月五月久久丁香| 成人av在线电影| 色综合色色色色| 丁香婷婷久久五月天| 亚洲妇女熟BBW| 五月天开心网| 日本高清久| 九九这里有精品| 99热这里只有精品268| 亚洲天堂啪啪| 久久婷婷丁香五月宗合| 九久久九精品视频| 嫩草AV久久伊人妇女超级A| 成人短视频在线| 操日视频| 亚洲五月天婷婷综合| 五月丁香六月婷婷,婷| 成人 在线 日韩| 九热视频精品| 丁香香蕉婷婷| 99爱在线| 天堂在线观看视频| 综合六月久久| 福利视频在线播放| 五月丁香久久| 久久五月天婷婷| 天天干夜夜想| 天天做天天爱天天爽综合网| 婷婷激情丁五月| 狠狠999| 五月色丁香综合| www.夜夜操.con| 天天爽在线视频| 九九热亚洲中文在线观看免费| 丁香五月人妻| 五月丁香综合影院| 综合久久高清| 99久久玖玖| 丁香色综合| 99色色爰| 狠狠舔| 久久久宗合视频88| JAPANRCEP老熟妇乱子伦视频| 啪啪啪综合网| 丝袜大香蕉| 色99网站| 欧美大片| 狠狠精品干练久久久无码中文字幕| 婷婷丁香社区| 六月婷婷色综合| 99热| A片试看120分钟做受图片| 亚洲五月婷| 国产看真人毛片爱做A片| 五月天丁香久久综合| 色色色com| 人妻五月天激情开心网| 五月婷婷,六月婷婷| 狠狠狠狠狠狠色| 国产欧美日韩性爱| 成人va在线观看视频| 久久婷婷五月综合色播| 婷婷五月久久| 九九热精品视频| 激情综合五月| 久久综合五月天| 国产美女无遮挡裸体毛片A片| 亚洲色综合| 五月天丁香婷婷网| 五月狠狠| 婷婷丁香五月天熟女丝袜| 超碰9| 五月婷免费视频久久久| 久久网思思| 天天肏高清在线| 九九久久99| 潘金莲AAAAAAAAAA| 丁香五月综合激情性爱| 玖玖婷婷色五月| 欧美成人无码一区二区三区| 久久人妻在线| 五月天激情小说网| www.狠狠操| 久久久婷婷色五月资源网| 欧美天堂久久| 亚洲成人电影aaaa| 午夜激情五月| 亚洲操逼片| 五月丁香婷婷成人网| 日本 色综合| 欧美色色色色色色色色色色影视| 色五月丁香在线| 综合99视频| 变态 另类 在线 | 欧美性生交XXXXX无码小说| 大香蕉在线观看9| 成人在线观看一区| 五月婷六月综合在线观看| 日韩AV大全| 久久人妻久久| 99re视频在线| 色五月丁香激情视频| 开心五月网 | 97自拍99| 丁香婷婷六月天| 97碰碰视频在线观看免费| 免费视频WWW在线观看网站| 五月天激情四射| 情婷婷五月天在线| 丁香六月亭亭久久综合| 日韩九九| 成人一区在线观看| 五月五婷婷网| 97碰碰在线观看视频| 婷婷综合中文| 久久久99视频| 丁香婷婷婷五月| 久久与婷婷| 婷婷久久爱| 五月丁香六月欧美综合| www.五月丁香| 丁香五月婷婷影视先锋| 欧美色播综合在线观看| 日亚二欧美| 婷婷色狠狠| 久热这里只有精品99re,久热这里只有精品7 | 黄色AAAAAAA| 婷婷色五月噜噜| 99九九在线精品热动漫| 91妻人人爽人人看片| 婷婷丁香六月五月天| 九九re精品视频在线观看| 99只有精品9| 日日想日日夜日日操| 亚洲婷婷五月天| www.9797国产| 91人人爽久久涩噜噜噜| 婷婷碰碰| 五月婷婷伊人网| 91九色精品熟女内射| 婷婷色导航| www.夜夜| 丁香久久久| 激情五月丁香亭亭| 婷婷五月精品| 人妻操操色| 激情网 久久| 久一这里有精品国产| 日日夜夜干| 免费国产VA国产免费| 久久与婷婷| 成人婷婷| 欧美丁香五月97色| 涩 五月 婷婷 狠狠| 五月天亚洲色| 九九Y精品热播| 日韩色情亚洲五月天婷婷| www五月婷婷| 婷婷五月天电影在线| 青草青草视频2免费观看| 一级黄在线| 伊人婷婷色激情丁香| 538在线精品| 天天综合天天玩夜夜玩天天玩夜夜玩| 天天操婷婷| 六月丁香深深爱综合网|