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
返回資訊列表
婷婷 久综合| 日日射天天射| 热日韩欧美| 久久小片| 丁香五月婷婷俺也要去| 狠狠操天天操天天操| 4399在线观看免费高清毛片| 内射在线CHINESE| 激情婷婷五月社区| www.六月丁香看AV| 色婷綜合网| 久久五月婷婷丁香| 久九九热| 婷婷五月中文字幕| 99日视频在线| 69久热| 99性爱视频| 97色色色| 丁香婷婷色色| 五月丁香福利| 久草五月婷婷| 亚洲视频五区| 久久综合爱| 熟女激情五月天 | 黄网在线免费| 少妇高潮呻吟A片免费看软件| 任你爽免费视频| 成人性爱无码| 激情五月色播五月| 精品久久这里热66| 影视av久久久噜噜噜噜噜三级| 开心五月婷婷在线| 热热久久99| 人人天堂操| 五月天激日本色情在线| 色婷婷深爱五月| 五月花综合| 欧美激情中文字幕| 久久婷婷六月综合| 色五月婷婷在线视频| 亚洲操逼网| 91九色欧美| 亚洲成Av人片乱码色第1集| 99久久户外勾搭| 午夜丁香婷婷| 久久丁香综合精品综合| 伊人网啪啪| 午夜免费高清AV片| 久操综合| 五月丁香色五月| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 超碰熟女拍拍| 九九婷婷网五月天| 国产毛片精品一区二区色欲黄A片| 欧美日韩999| 色色五月天激情| www.狠狠| 色婷婷久久9.com| 熟妇天天综合| 五月丁香六月婷婷啪啪| 久久久er热| 五月丁香日本在线视频观看| 天天天天做夜夜夜夜做| 亚洲 视频 导航 一区| 夜色综合网| 色情五月天丁香社区| 国产精品成人AV在线| 亚州操操| 九九色网| 五月天天天操天天爽夜夜操| 99在这里有精品| 婷婷综合五月天亚洲综合| 色导航色婷婷五月天在线观看| 婷婷性色| 99热66| 无码成人AAAAA毛片AI换脸| 五月丁香色欲| 婷婷色在线| 丁香五月天婷婷久久| 艾小青av| 天天色色天天| 91N 一起草| 色情五月婷| 天天干夜夜操A片| 99久久成人| 天天爽天天日天天舔| 激情爱爱网站| 亚洲AV成人精品网站在线播放| 91疯狂操操操操| 久热只有这里有精品| 玖玖精品资源| 精品久久久人妻| 色吧网91| 亭亭色天香| 97色色网| www.久久色.com| 99ri在线视频| 激情综合一| 五月婷丁香| 97AV人人插人人操| 色婷婷五月综合网| 国产精品VIDEOSSEX久久发布| 一本到不卡高清DVD| 99热在线观看| 欧美三级欧美一级| www网站在线观看| 成人五月天婷婷| 五月婷婷天天| 婷婷伊人综合| 色情免费视频播放| 中文字幕乱码亚洲精品一区| 午夜婷婷| 五月天堂色| 99亚洲综合| 激情五月五月婷婷| 欧美成综合在线观看| ay2区| 婷婷五月丁香综合激情| 天啪天啪天啪天啪| 亚洲色99| 91久久九色| 激情亚洲五月| 欧美怡红院黄站| 人妻中文在线| 欧美成人A片AAA片在线播放| 五月激情综合网| 五月激情久久综合网| 国产69久久久欧美黑人A片| www.97干视频| 97干视频在线| 免费观看亚洲AV片| www久| 五月丁香六月婷婷综合| 五月婷婷六月丁香在线视频| 色婷婷亚洲综合网站| 亚洲俩性性爱图片久久第六页| 九九亚洲综合| 综合亚洲色色| 天天拍久久| 这里只有精彩视频| 丁香五月网络网络| 亚洲电影在线观看| 天天操天天日天天操| 777影视理论片大全在线观看| www色色com| 国产精品日日躁夜夜躁| 五月天激情综合网俺也去| 久久 天天| 婷婷色五月天色| 夜夜干天天干| 亚洲乱码在线观看| 天天操夜夜操| 激情五月婷婷综合视频| 另类亚洲电影| 狠狠爱婷婷丁香| 91九色 婷婷| 天天日天天插| 五月丁香美女| 以及AA大片看看| 五区毛片七区毛片| www.久久爱.com| 久久天天| 99爱视频精品在线观看| 超碰人人摸人人操| 久久婷网| 婷婷色香六月综合激情| 激情五月天福利| 免费啪啪啪网站 | www.天天干| 国产视频福利| 激情五月天网站| 亚洲尤物在线| 九色自拍| 在线看AV| 深爱激情六月天| 色婷婷丁香六月| 欧美大片免费观看| 久久婷婷综合基地| 国产99视频永久免费| 亚洲日比视频| 婷婷激情社区| 丁香五月乱中文字幕| 超碰不卡在线| 色.五月综合网| 狠狠草在线观看| 亚洲中文av| 国产看真人毛片爱做A片| 天天色天天噜| 91狠狠综合久久久久久| 丁香花五月天社区| 任你草| 99热无码| 亚色网站小视频| 另类婷婷五月天啪帕帕| www.婷婷五月天| 天天爽夜夜爽| 狠狠色婷婷7| 成人小说色图婷婷五月| 大香蕉综合| 五月婷色激情五月| 婷婷六月插屄激情| 色婷婷XXXXX| 91在线资源| 婷婷五月综合在线| 久久婷婷视频| 丁香五月六月激情| 99这里精品| www狠狠com| 少妇2做爰HD韩国电影| 色欲午夜无码久久久久久张津瑜| 色婷五月| 六月丁香五月亭亭| 婷婷欧美偷拍综合| 超碰人妻在线| 中文字幕在线不卡| 国产精品人妻在线网址| 超碰免费观看| 99视频精品全部观看10| 97人人操| 91青娱乐青青草| 欧美精品在线观看| 性生生活大片又黄又| 日韩久久色| 天天天摸夜夜夜玩| www.操逼comm| 色国产五月| 丁香九月综合| 91久久精品无码一区二区三区| 五月婷护士| 大香蕉综合| 综合色影| 五月丁香精品| www.99热视频| 九九碰九九爱97超碰| 婷婷五月天视频| 色狠狠色综合| 夜夜干 夜夜操| 五月色丁香激情| 天天摸,天天爽| 色色色国产| 91九色中文| 五月丁香色婷婷综合| 人人玩人人橾| 思思99精品视频在线观看| 五月色网| 这里都是精品99| AV网站免费在线| 久久六月综合| 极品色丁香| 综合www色| 久久综合五月情| 激情婷婷丁香| 色色丁香色五月| 久久色吧| 影音先锋色婷婷| 五月天色综合| 深爱女色婷婷丁香五月亚洲图区| 五月婷人妻| 欧美色六月婷婷| 五月丁香婷婷久久| 九九亚洲视频| 特黄三级片| 超碰人人超碰| 97操操| 日本99热| 久久婷婷五月综合网| 99九九99九九九视频精品| 99se丁香| 成人精品人妻| 激情校园 亚洲| 西瓜美女a片| 五月天激情.com| 亚城区在线| 99无码精品| 大香蕉婷婷五月| 人人爱国产| 婷婷丁香五月六月激情| 26uuu成人网| 日本久久高清| 亚洲字幕AV一区二区三区四区| 国内一级片| 玖玖@三月天天丁香婷婷| 婷婷香蕉视频| 思思热99er在线视频| 亚洲激情视频网| 婷婷丁香五月亚洲免费| 91丨九色丨国产打屁股| 婷婷色色欧美综合网| www.久9| www久久久久久久97| 亚洲婷婷在线播放十月| 5月丁香六月婷婷| 五月婷婷中文字幕| 亚洲成人网站在线观看| 色综合偷拍| 丁香五月六月久久综合| 天天插天天日| 日韩精品一区二区三区,四区,五区视频| 久久蜜臀婷婷| hd五月婷婷在线| 操操操Av| Www.sesese丁香| 久热 91| 日韩狠狠色婷婷| 俺去也综合| 久久婷五月| 婷婷成人视频| 草草色情综合网| 天天肏天天肏天天肏| 亚洲综合激| 直接看的AV| 久久九九99| 91久久免费| 婷婷五月丁香基| AV在线观看网站| 大香蕉在九| 色亚洲无码| 色婷五月天激情| 久久激情综合| 激情小说五月天社区丁香| 激情五月天激情小说| 久久99网站| 五月丁香人妻| 国产精品色婷婷AV综合色色| 成人国产欧美大片一区| 69堂午夜视频最新地址| 亚洲中文av| 大香伊人婷婷影院| 九九久久视频| 97色精品视频 | 亚洲99热| 久久久激情视频| 九九精品在线观看视频6| 亚洲激情另类| 99综合网| 五月婷激情| 激情五月色婷婷| 思思国产99| 玖操97| 一起草AV| 极品色丁香| WWW.婷婷五月天.COM| 婷婷五月天渟渟| 色激情综合狠狠婷婷| 夜夜 操无码| 97超级碰碰碰| 4399在线日本A片| 五月丁香综合成人社区| 五月综合色| 天色色综合网| 五月天天天天天天天天天天天天天天天婷婷婷| 婷婷五月开心六月AV| www.五月婷婷久久.com| 日操夜操天天操不卡| 五月熟妇婷婷久久| 99干免费视频| 婷婷五月六月丁香| 欧美视频五区| 夜夜操天天干| 六月丁香射婷婷欧美色图片| 久久A极片| 五月丁香综合伦理片| 国产古装妇女野外A片| av在线超清中文| 91丨九色丨国产打屁股| 色婷婷五月天天天天天天天天天| 免费黄网不卡AV| 综合图区激情| 丁香密臀AV激情网| 午夜天堂啪啪| 激情色情五月天| 丁香五月色激情| 日本色狠狠| 五月间天堂综合| 婷婷99热| 俺五月| 4438亚洲欧美| 啪啪操超碰| 色综合色色| 日韩成人网址| 九九爱激情| 特级操b片| 九九性视频| 婷婷五月黄色激情在线| 懂色av粉嫩AV蜜臀AV| www,天天干| 欧美va视频| 九九热在线视频| 欧美日韩aaaa| www.zbzhongsen.com| 99热这里都是精品| 久久久这里有精品| 激情小说婷婷小说| 国产亚洲成AV人片在线| 色欲色香综合网| 呦呦v线| 91日综合欧美| 亚洲爆乳无码精品AAA片蜜桃| 五月婷av| 亚洲色色爱| 91色情播放| 色色九九五月天 | 99re66热这里只有精品| 淫视馆av三区| 狠狠搞狠狠操| 99性爱视频| 欧美狠狠一在草| 991自拍视频| 丁香五月色色| 天堂草在线看www| 免费黄色视频网址| 91se在线观看| 97日本在线播放| 久久99激情| 五月丁香成人| 丁香五月婷婷狠狠色| 97碰碰九九视频| 日韩啪啪视频| 五月天天天天天天天天天天天婷婷婷| www.sezonghe| 欧洲亚洲免费视频9| 国产精品成人网站| 久久性都花花世界成人免费视频| 99精品无码| 婷婷成人五月天成人文学| 综合99在线| 99在线视频免费| 在线观看免费视频| 99无码视频| 蜜桃人妻无码AV天堂三区| 亭亭色天香| 大香蕉伊人久久| 日韩av在线免费观看| 五月天婷婷爱丁香中文字幕| 丁香综合婷婷开心激情网| 9 1大香蕉| 日操熟女| 婷婷亚洲在线| 日韩AV免费电影在线播放| 综合激情婷婷| 日韩无码专区| 色婷婷小说| 天天做天天爱天天玩| 丁香五月婷婷乱| 婷婷爱综合| 色婷婷久久| 亚洲婷婷久久综合| 婷婷综合网性| 九九自拍网| 婷婷爱五月| 午夜九九九九九九| 天堂网色色| 久久精99| www.激情五月天.con| 五月婷婷碰碰| 色99视| 日日操无码| 99精日本久久| 禁片二区| 久久久婷婷五月亚洲97号色| 国产日韩av片| 成人精品视频99在线观看免费| 91久久久久久久久久久| 色色色综合色| 成人做爰A片免费看视频| 五月天社区| 国产激情视频在线观看| 92久久精品一区二区| 丁香激情网| 深爱激情久久| 婷婷五月天狠狠| 99色色色色| 第五色色色婷婷| 九九色色| 精品婷婷| 久久99久久99久久99| 九九精品9| 九热视频在线伦| 婷婷综合色色| 思思久久99热只有频精品66| 99天堂在线观看免费视频| 五月丁香久久综合91| 欧在线一区| 成人视频在线免费播放| 综合狠狠伊人| 一级二级香港秋霞欧美欧美秋霞| 5五月综合网亚洲| 九月丁香婷婷综合| 国精产品一区一区三区免费视频 | 91久操| 婷婷久久五月| 好大好粗嗯啊-一级黄色大片免费观看-成人AV| 99人人操人人爱久久久| 亚洲色9| 天天久久综合| 日本啪啪网| 久久狠狠干| 久久无码成人| 日本熟妇精品99| 激情五月六月婷婷综合啪啪| 婷婷丁香五月色| 五月天婷婷色色| 610018岁成人视频| 97视频91| 日日操天天| 九月婷婷久久久| 亚洲熟妇AV乱码在线观看| 欧美成综合在线观看| 日本一道久久| se99视频| 色狠狠色噜噜AV天堂五区| 日日噜噜久久婷婷五月天| 九九热黄色| 好激情在线综合网| 婷婷五月丁香五月| 九草性爱| 可以直接看的AV网站| 久久久久婷婷| 99人妻碰碰碰久久久久| 日逼免费视频 | 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 99ER热精品视频| 91互操| 丁香色情五月综合网站| 狠狠干夜夜干| 五月天丁香久久| 五月丁香色狠狠干大屄| 538在线精品| 色久一| 色狠狠伊人久久五月丁香| 123草逼网| 99re欧美精品| 色欲丁香久久| 久久五月综合| 91超级碰碰碰| 久久东京热婷婷五月| 91男人资源站| 丁香五月婷婷成人网| 天天狠天天叉| 色婷| 六月婷婷av| 99久高清视频| 五月天涩涩| 狠狠婷婷综合| 婷婷之六月丁香| 涩五月婷婷| 激情文学久久| 狠狠爱综合网| 美日韩成人| 99a级片| 91久久久久久久久久| 日日夜夜小色哥| 人与禽A片啪啪| 熟女激情网| 久久这里都是精品| 婷婷6月综合网| 欧美操人| 五月激情婷婷图片基地| 五月婷婷丁香| 9999热精品在线免费播放| 午夜五月天| 婷婷色中文字幕| 久久xxxx| 狠狠色狠狠干| 日本不卡一区二区三区| 色香五月天| 99免费超碰在线| 日日干干天天干| 九月丁香八月婷婷加勒比| 狠狠干在线视频| 人妻第九页| 麻豆五月丁香婷婷| 97自拍99| 9久精品视频| 婷婷综合网站| 久草热8精品视频在线观看| 十月丁香婷婷| 教师性爱毛片| 婷婷狠狠操| 91人人超碰在线| www久| 玖玖色资源站| 色婷婷精| 97干免费视频| 99re热| 色婷婷中文| 五月婷婷丁香俺日污视频| 怡红院91a√| 91要啪| 亚洲精品va| 国产真实乱了老女人视频| 天天插天天| 综合网狠狠| 婷婷导航| 婷婷五月精品中文字幕| 欧美性爱中文字幕| 欧美经典片免费观看大全| 五月婷婷狠狠干| 99爱爱网| 一点色成人网| 天天干电影| 1024日韩| 变天就操逼婷婷五月| 成人网址在线观看| 五月婷婷开心亚州在线| 91大神操美女| 久久婷婷五月综合色区| 97色女人在线| 婷婷丁香五月六月激情| 婷婷久久久久| 丁香五月婷婷香| 婷婷亚洲影院| 五月丁六月香| 婷婷激情丁香五月婷婷激情丁香五月婷婷 | 五月草视频| 开心婷婷中文字慕| 人妻中文字幕网| 色色色99韩| 日日操夜夜操中国无码| 五月天综合| 这里只有精品在线观看视频| 欧美日韓成人亚洲精品另类| 五月五月婷婷| 色色色com| 大香蕉婷婷丁香视频在线| 亚洲色小说在线综合| 亚洲AV网站在线观看| 免费在线观看AV网站| 97香蕉久久超级碰碰高清版| 99久久久国产精品免费蜜乳tv| 99综合在线| www99xxxx五月丁| 一起草AV| 亚洲日日日| 五月天婷婷综合| 五月丁香六月婷婷综合伊人| 午夜婷婷丁香| 99网址在线看| 日亚二欧美| 日韩欧美颜射| 婷婷va| 禁欲电影完整版在线播放| 五月天色五月| 丁香五月六月婷婷殴美综合| 丁香五月大片| 狠狠色丁香综合| 天天操B| 九九在线视频| 嫩草AV久久伊人妇女超级A| 国产AV不卡福利| 99这里只有精品视频| 黄色AAAAAAA| 操人妻视频91| 成年视频免费观看| 可以看的av网站| 91 九色 入口| 超碰97免费在线| 色九亚洲| 婷婷综合五月激情| www.99热| 六月婷婷色宗合| 超碰九热| 成人五月天视频| 99资源在线| 五月天激情啪啪| 国产成人在线精品| 丁香五月在线| 激情开心五月婷婷| 超碰成人公开| 直接看的AV| 久婷久婷激情肉| 另类图片色五月| 激情综合自拍五月婷婷色五月| 日韩无码成人电影| 操丝袜视频影院导航| 五月婷婷av在线| 婷婷五月天香蕉| 亚洲热久| 狠狠干夜夜干| 深爱激情久久| 在线伦子99热| 26uuu精品一区二区| 五月丁香va| 丰滿爆乳一区二区三区| 激情深爱五月天| www.99在线| 情欲禁地| 亭亭玉月丁香| 九九综合久久丁香婷婷,开心激情综合网| 日本精品人妻无码77777| 婷婷五月18永久免费视频| 九色七七| 欧美日韩中文国产一区发布| 热思思| 最新av在线观看| 另类在线| 九九免费视频| 五月婷丁香花| 一起草日本| 婷婷五月亚洲综合| 色五月婷婷婷婷| 国产激情av| 99热久久这里只有精品| 婷婷五月丁香六月综合网| 色色色999| 五月天丁香婷婷久久九| 91九色视频在线观看| 激情五月天综合网站网站网站| 亚洲AV成人无码精品| 久久女人天堂| 五月婷婷自拍视频| 在线视频你懂得| 久久久久久久91| 9999久久久久| 久久成人人妻| 这里只有精品,日韩视频| 久久香视频| 激情深爱五月天| 99re8这里只有精品99re8热视频| 久青青久| 丁香五月婷婷五月| 嫩草AV久久伊人妇女超级A| 色综合天天| 婷婷五月丁香五月天| 97亚洲婷婷| 日本三级99人妇网站| 五月丁香人妻| 久久a热| 五月色欧美| 97色干| 98色丁香五月婷婷综合网| 少妇高潮A片无套内谢麻豆传| 激情五月天婷婷五月天| 久久这里都是精品视频| 超碰碰碰碰| 五月丁香婷婷啪啪综合| 五月天婷婷狂暴白浆| 婷婷综合五月| 色欲丁香| 五月天 婷 欧美亚洲| 五月丁香激情在线| 99在线观看这里都是精品| 丁香五月婷婷色情综合| 婷婷综合av| 一级视频网址| 欧美情色一区| 激情五月婷婷| 另类小说五月天| 超碰在线视屏| 色欧美影院| 婷婷十月激情综合网| 五月婷婷性爱网| 国产亚洲精品AAAAAAA片| 成人午夜无码视频| 色噜噜狠狠色综合成人网| 天天草天天摸| 婷婷草| 婷婷六月色播| 五月色俺婷婷| 这里只有九九精品| 性爱电影科技贸易有限公司| 婷婷五月在线综合| 国产xxxxx在线观看| 久久丁香五月天| 婷婷久久亚洲| 欧美三级欧美一级| 丁香久久综合| 国产精品丝| 六月色激情| 亚洲午夜Av| 婷婷欧美激情| 亚洲婷婷婷| 亚洲综合一区二区| 棕合影院色色| 伊人久久婷| 婷婷99狠狠躁天天| 这里只有精品亚洲| 亚洲精品va| 色色啊| 五月激情综合五月| 人妻 性久久久久久| 久久婷婷在线| 六月 丁香 视频| 久久99热这里只有精品 | 婷婷五月天色| 九九碰九九爱97| 九九在线精点品| 亚洲超碰在线| 成人无码髙潮喷水A片| 色五天综合| 久操香蕉| 成人人操| 五月丁香性爱| 日本激情ⅩXX免费视频| 久久视频婷婷视频| 天天射夜夜骑| 丁香五月天综合| 亚洲第一成人无码A片| 99国产在线| 色婷婷基地 | 久操香蕉| 99九九视频| 天天做天天爱天天搞| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 丁香五月av| 久草热8精品视频在线观看| 日本三级第一页| 色99婷婷五月天| 久久久18| 天天综合图片| 激情五月天婷婷五月天| 日韩操人| 国产69久久久欧美黑人A片| 伊人五月婷| 99人人干人人| 再次出发二| 色婷婷视频综合| 国产激情av| 六月丁香五月婷婷| 二区成人视频| 婷婷激情五月综合| 五月丁香婷婷激情澎湃四射 | 久久成人综合五月天| 色噜噜五月天| 大香蕉综合在线| 日韩AC在线免费观看| 婷婷少妇激情| 婷婷舔| 五月天激情图片| AAA久久| 精品无码片| 热九九精品| 99热这里只有免费精品| 大香蕉九九| 狠狠操狠狠色| 亚洲天堂99| 日本激情五月天‘| AV中文在线| 婷婷五月另类网站| 精热在线综合网| 丁香五月婷老师| 亚洲AV成人在线| 九九九九九九九九九九九九九国产精品| 91婷婷丁香| 婷婷丁香在线播放| 五月天激情视频| 伊人大香蕉综合在线| 新99色色色色色色| 97干综合网| 婷婷五月天 丁香五月天 裸体| 大香蕉啪啪| 亚洲综合丁香五月天| 亚洲激情网| 久久婷婷东京热| 精品色色网| 婷婷五月六月丁香| 97五月综合网| 五月激情基地| 婷婷久久网| 天天综合网~91综合网| 五月丁香婷婷伊人| 五月丁香色色网| 九九 激情 网| 久久免费婷婷视频| 99亚洲精品| 五月婷婷丁香| 久久久久婷 | 超碰资源在线| 婷婷精品综合| 超碰日韩成人| 婷婷久久五月| 婷婷丁香五月综合| 91综合在线视频| 色五XX| 97久久人人人干| 99在线观看亚洲| 9久久婷婷国产综合精品性色| 日本久久色| 国产99精品免费视频| 伊人激情啪啪| 久久婷婷人人| 99热精品无码| 一本狠婷婷综合| 亚洲综合狠狠艹| 国产精品久久欧美久久一区| 五月婷视频久久| 丁香六月激情| 婷婷趴趴| 激情丁香五月| 五月丁香五月丁香五月丁香五月丁香91| 五月婷婷丁香色吧网| 乱岳熟女50岁| 国产Va视频| 一级黄色影片| 亚洲99激情| 四色永久成人网站| 亚洲综合在线伊人婷| 久久五月丁香婷婷| 99re热99| 91欧美日韩综合| 色婷久九| 伊人网碰碰| 婷婷五月综合久久中文字幕| 99久在线精品99re5热视频| 九九久久精品國產| 婷婷五月天成人网| 丁香五月综合久久综合| 99精品在线| 99视频久久久| 色婷婷五月在线| 色月九九| 色色婷| 婷婷五月天AV网| 免费视频99| 操笔无码| 国产亚洲精品久久久久久久久动漫| 六月综和久久| 任你躁XXXXX麻豆精品| 九九婷婷五月天影视| 伊人网色婷婷五月天| 狠色色狠网| 亚洲AV另类| 久青操| 色区久久| 亚洲久热| 五月天婷婷深深爱| 久久丁香九| 99久精品视频| 99成人网一区| 日欧一片内射VA在线影院| 五月天中文网| 欧美婷婷丁香五月| 欧美va视频| 思思热闹这里只有精品| 亚洲亚洲人成综合网络| 久久免费视频62| 97久久久免费福利网址| 丁香五月婷婷啪啪啪| 久久婷婷五月综合97色一本| 欧美交换配乱吟粗大25P| 亚洲综合在线丁香五月| 日韩三及成人AV片| 国产精品成人在线| 啪啪五月天啪啪| 五月婷av| 丁香婷婷性爱| 国内婷婷丁香社区在线播放| 91呦呦呦| 碰超99| 国产va在线视频| 大香蕉久久久久久久久| 97资源碰碰| 丁香五月激情欧欧美| 热久久婷婷| 99无码视频| 天天日夜夜草进麻麻的子宫| 天啪色| 色婷婷五月综合| 99视频一区| 婷婷五月综激情| 国产亚洲精品AAAAAAA片| 五月丁香人妻| 婷婷丁香五月综合| 色综合激情图区| 丁香伊人网| 伊人狠狠狠综合| 国产无人区大片| 中文字幕按摩做爰| 亚洲精品色| 久久AAAA片一区二区| 五月丁香婷婷综合网色欲| 俺去也五月| 亚洲欧州色情在线观看| 久久激情综合| 久久久日韩特色特黄AAAA| 三级三久久线久久99久目本WW| 中文无码精品一区二区三区| 97五月天婷婷综合激情网| 99色热| 玖玖婷婷五月天| 丁香婷婷免费| 久99久视频免费观看| 99精品偷自拍| 大香蕉婷婷丁香天堂AV| 五月亭亭综合五码| 天天开心天天色| 午夜九九九九九九| 亚洲乱码日产精品BD| 激情亭亭五月| 99热只有这里才是精品| 综合狠狠伊人| 中文字幕成人影视| 2025超碰| 亚洲色婷婷| 丁香五月欧美午夜视频| 天天综合永久| 26UUU| 91综合在线视频| 97操在线| 禁欲电影完整版在线播放| 9精品在线| 深爱激情六月| 婷婷六月激情啪啪| 99热在线观看| 国产成人AV在线播放| 操91综合网| 婷婷五月花| 九九精品热| 九九99热久久精品66中文字幕| 婷婷激情五月综合在线视频| 天天射夜夜爽| 五月婷婷与六月丁香图片激情| 日美三级| 伊人爱爱日本| 99精品成人无码A片观看金桔| 九九香蕉网| 天天日天天操心| 婷婷五月天激情在线| 久久奄也去色色网站| 人人爽天天莫| www.超碰在线| 精品女人九九九| 99视频在线观看视频| 国产99久| 超碰成人公开| 亚洲乱码日产精品BD| 激情五月影院| 无码啪啪| 国产操碰| 色丁香婷婷| 91丨九色丨熟女丰满| 激情六月色| 久久开心五月天激情| 五月天六月婷婷电影| 狠狠五月天婷婷激情网。| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 日本熟妇乱妇熟色A片蜜桃| 婷婷在线视频| 99色在线视频| 天天日夜夜爽| 激情五月激情综合网| 国产成人亚洲综合A∨婷婷| 武则天精品久久| 丁香九月婷婷综合| 91干| 五月天成人小说| 99这里只有精品|v| 色五月av| 五月天激情小说| 激情五月天婷婷| 成人精品视频99在线观看免费| 婷婷五月天影院| 风流少妇A片一区二区蜜桃 | 五月天激情综合网站| 丁香六月婷婷一区| 婷婷激情综合无月| 激情婷婷丁香色五月综合| 久久五月天黄色五月天色网址| 精品人妻久久久| 思思久久青草热| 天天综合在线网| 六月婷婷八月丁香| 丁香五月综合婷婷| 亚洲男女激情| 99re在线播放| 5月丁香综合图区| 在线免费观看激情视频| 色情五月| 97在线精品视频| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 夜夜撸日日骑| 日本婷婷色日| 亚洲精品视频电影| 人人摸人人搞| 性做爰1一7伦| 色色六月| 九九热99视频在线| 婷婷开心深爱五月天| 天天草天天舔| 天天色综合图片| 69色婷婷| 99色视频在线| 亚洲色就是色色色| xxxx五月天色色| 黄色精品五月婷婷| 性色播| 婷婷五月天色综合| 99热这里只有精品99| 亚洲色婷婷| 午夜精品人妻无码一区二区三区| 5Www色5夜| 97视频91| 26UUU亚洲欧美| 思思热99热| 超碰狠狠操| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 欧美天天性| 精品久久99码| 色五月天在线观看| 五月天丁香久久综合 | 九九九九九九九九九九九九九国产精品| 91人人超碰在线| 婷婷久久夜| 性爱视频久久| 久久婷婷五月综合| 婷婷亚州综合| 色噜噜狠狠色综| 激情婷婷五月天日本系列| 久久久香| 国产乱子轮XXX农村| 91久久电影| 国产Va视频| 亚洲无码99| 精品无码久久久久久久久| 久久区区一二三av| 日韩一区二区在线播放| 五月婷婷真爱激情网| 色婷婷激情| 国产44页| 婷婷五月激情丁香激情| 五月天成人免费视频| 午夜成人片400| 成人永久免费视频在线观看| 免费碰碰视频久| 97干网站| 操啊操av| 中文av网| 丁香五月婷婷99| 五月丁综合在线观看| 51XX午夜影福利| 婷婷六月香| 五月天婷婷三级黄| 婷婷丁香五月婷婷| 中文字幕日本最新乱码视频 | 日本久久色| 狠狠大香婷婷爱| 亚洲五月停停| 久在线88综合| 亚洲激情在线| 欧美综合激情丁香五月六月婷| 欧美精品XXXXBBBB| 五月激情综合网| 99热最新| 男女啪啪做爰高潮无遮挡| 激情综合无码| 色五月av| 1024AV视频| 天天在线天天综合网色| 五月婷婷欧美| www亚洲无码| 婷婷五月丁香伊人网| 激情综合五月天| 久久久久8888| 色亭亭五月天丁香综合AV - 百度 - 百度| 午夜天堂一区人妻| 99色在线| 丁香婷婷六月天| 婷婷色五月天色| 五月天六月婷婷电影| 国产毛多水多女人A片| 久热婷婷| 色玖玖综合| 伊人久久大香线蕉亚洲五月天,| 丁香五月激情综合网激情五月| 成功精品影院| 久久综合爱| 一区视频网站| 99免费偷拍视频| 激情六月综合| 五月 婷 久| 天天综合网亚洲综合网| 农村熟妇高潮精品A片| 五月丁香婷婷爱激情综合网| 99热碰碰热| 久9免费视频| 天天在线XXX| 熟美女麻豆| 婷婷五月花丁香| 五月丁香 狠狠爱| 视色综合| 懂色av粉嫩AV蜜臀AV| 久热中文字幕在线线观看 | 99在线国| 婷婷五月天天| 婷婷色五月情| 日本eVa一区=区视频| 另类激情五月| 桃色成人网| 婷婷中文字幕版| 91无码一区人妻A片蜜| 丁香5月啪啪| 国产婷婷婷| 婷婷激情网五月天| 五月婷婷 激情按摩| 婷激情五月| 天天干天天av天天射| 人人爽亚洲| 97人人操com| 五月婷婷六月天| 中文字幕成| 91成人视频| 99热网站| 91九色网| 激情综合网,婷婷五月天| www.婷婷六月天| 天天干天天日蜜臀av| 五月中旬婷婷丁香六| 黄色av网站在线免费播放| 97色色在线视频| 综合色婷婷| 婷婷五月香蕉| a色色色色色| 秋霞免费视频| 婷婷娱乐丁香综合网| 丁香影院五月综合| 天天干电影| 996er热| 丁香五月欧美| 影音先锋激情网| 婷婷丁香色女人| 人人摸人人澡人人| 91干| 中文字幕人妻熟女在线| 久久机只有这里精品| 精品九九久久| 九月色婷婷综合| 99人妻碰碰碰久久久久禁片| 色色婷婷五月天| 亚洲婷婷成人五月天| 色五月中文字幕| 99热91| 五月丁香在线精品| 影院久久久| 91爱啪啪| 六月婷伊人| 99久久高清视频| 五月婷在线观看| 色国产五月| 中文字幕亚洲-区久久99婷婷| 丁香六月久久| 六月丁香婷婷色综合| 亚洲9久久精品| 欧洲不卡视频| se色99| 色婷婷五月天无码视频| 久久99久久99久久99人受| 九九热99精品在线| 99在线热视频| 色色五月天婷婷| 日韩无码色色| 五月天婷婷xxx| 91久久久久| 天天爽人人综合免费7799| 色 五月俺去也| 九九色院| 99国产精品久久久久久久久久久| 久久性爱视频这里只有精品 | 欧美va视频| 国产精品久久久爽爽爽麻豆色哟哟 | 97日本在线播放| 久久女人天堂| 五月丁香婷婷啪啪综合网| 97婷婷丁香| 亚洲综合色成丁香五月色| 日韩 中文 欧美| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 |