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
返回資訊列表
天天综合亚洲综合| 99热无码| 91婷婷色 | 国产暴力强伦轩1区二区小说| 九月av在线| 最新五月天婷婷影| 热婷婷av| 玖玖综合色| 五月婷婷六月丁香首页| 综合色五月| 丁香色婷婷| 久久9精品| 欧美激情五月天婷婷| 婷婷六月激情| 久久精品国产AV一区二区三区 | 大香蕉久久久久| 欧美日韩国产一区二区| 久久综合婷婷| http://www.lingjunshare.com/| 狠狠色丁香婷婷| 色婷婷国色天香综合| 五月丁香色综合| 中文字幕av在线| 婷婷六月综合激情| 婷婷综合网站| 欧美爆乳一区二区三区| 五月婷婷免费视频| 5月婷婷6月丁香aV| 人人操碰| 五月天com| 亚洲欧洲色色| 欧美日韩成人在线网| 99热日韩| 三级三久久线久久99久目本WW| 战争与艾拉电影免费观看| 久久99久久99www| 很很干天天干| WWW.婷婷| 五月丁香六月婷婷成人电影| 色情激情五月| 丁香五月婷婷天激情| 色射影院| 《诡秘之主》在线观看| 婷婷综合网性| 1024亚洲无码| 免费亚洲婷婷中文字幕| 日本五月婷婷| 久色五月| 丁香五月另类小说| 天天日婷婷| 婷婷五月电影| 五月丁香激情怕怕| 久久久久久久久久91| 少妇性按摩无码中文A片| 日本 @ va 免费| 丁香午月AV中文字幕| 五月天久久小说| 丁香五月欧美| 综合色、色综合| 色女伊人| 人人爱天天摸摸天天爱| 亚州激情网| 超碰人妻在线| 婷婷午夜精品久久久| 日本激情综合| 中文字幕丰满孑伦无码专区| 丁香五月综合| 日韩综合成人| 激情久久 婷婷| 欧美性爱中文字幕| 97日本在线| 色色热日| www久久久| 丁香六月色| 涩丁香91| 99re视频精品| 丁香五月情| 婷婷综合亚洲| 婷婷五月精品中文字幕| 色五月涩涩婷婷| 九九热精品| 欧美在线视频99| 激情五月天婷婷免费观看| 91九色最新视频| 99久久极情精品一区| 国产日日操夜夜操的肉棒视频| 五月丁香婷婷综合激情基地| 99热99干| 婷婷色九月| 天天舔天天摸天天透| 五月丁香六月激情狠狠| 综合久久高清| 99网址在线观看| 欧洲色| 精品人妻伦九区久久AAA片| 97婷婷狠狠| 99热只有这里有精品| 五月丁香六月婷婷婷婷| 国产激情在线| 99精品自拍| 九九自拍网| 26UUU| 五月丁香狠狠| 97视频91| 国产色色小草视频| 欧美日本黄色| 亚洲激情色色| 丁香婷婷人妻综合网| 亚洲国产网站| 九色视频入口91| 丁香婷色| 色XX综合网| 色婷婷亚洲精品天天综| 久久天天天| 婷婷综合干| 97资源欧美日韩大香蕉超碰一区| 五月丁香六月婷婷中合网| 26UUU欧美| 亚洲天堂久久| 婷婷天堂伊人| 大地9中文在线观看免费高清| 人妻在线观看视频| 久久机只有这里精品| 色婷另类| 伊人五月天97| 99久久大片| 五月开心久久| 99热欧美在线观看| 九九热这里只有精品6| 99精品久久| 国产99久| 欧美情月伍月天| 99热在线只有精品| 日本视频不卡123区| 国产老熟妇亲子乱对白| 天天操夜夜操| 奇米网大香蕉| 婷婷色色丁香五月天| 超碰狠狠干99| 天天看夜夜看| 99热伊人综合| 亚州婷婷五月激情综合| 国产在线aaa片一区二区99| 久久婷婷亚洲| www.com在线操视频免费观看| 激情99。| 十一月婷婷激情四射| 国产67194| 色99欧洲色19| 67194中文字幕| 99青青草99| 亚洲色爽| 大色鬼综合| 婷婷五月天激情网址| 91丨九色丨高潮丰满日本| 殴美97色| 五月丁香色综合| 日日操夜夜操中国无码| 狠狠色综合久久| 亚州第一黄网| 91se在线观看| 婷婷伊人五月丁香天堂网| 日本精品。999| 99久在线精品99re5热视频| 99热免费| 热这里| 成人网在线观看视频| 五月婷婷这里都是精品| 七七久久婷婷| 日本操碰碰| 婷婷久久久久| 午夜天堂一区人妻| 丁香五月亚洲| 九九热中文| 欧洲毛片基地c区| 狠狠色婷婷色| 色婷婷免费视频| 午夜婷婷久久 | 噜噜久| 综合色七七| 婷婷五月天激情五月天网站| 99热亚洲精品| 夜夜嗨一区二区三区直播内容 | 九九碰九九爱97超碰| 森林影视大全,最好看的2019年视频 | 大香网伊人久久综合| 伊人激情综合网| 91操在线视频| 久久婷婷五月综合激情国产 | 婷婷狠狠综合网入口| 激情五月四色| 色婷婷丁香网| 六月激情丁香一道本7777| 日日日日日| 亚洲韩国日产综合AV| 伊人日日干| 色哟哟精品| 五月婷婷av| 久久五月丁香| 久久这里有精品视频在线免费观看| 婷婷五月天久草在线| 色婷婷裸体色性在线| 婷婷99丁香| 久久激情综合| 色婷婷久综合久久一本国产AV| 91九色中文字幕女在线观看| 日本女色人人| 中文av网| 激情丁香五月| 五月天激情AV| 五月激情婷婷六月丁香| 天天综合精品| 99热国产精品| 五月天停婷基地| 色哟哟精品| 天天免费成年人视频| 狠狠色噜噜色狠狠狠综合久久成人波 | 久久探花91swag| www,8050,午夜三级| AV成人在线网站| 狠狠做六月爱婷婷综合aⅴ| 九一娱乐在线观看视频| 狠狠色噜噜狠狠狠狠综合| 五月婷丁香| 操老逼综合网| 91丨九色丨熟女高潮| 欧美α√| 久久这里有精品视频| 91日本在线观看| 丁香五月天激情四射网络不好 | 超碰AV在线| 婷婷五月成年人| 激情99| 天天天操天天天爰| 99玖玖人人| 国产伦亲子伦亲子视频观看| 色播五月天激情| 五月丁花六月丁香综合| 日韩爱操视频| 九九爱激情| 六月丁香深深爱| 丁香五月婷婷啪| 99久热精品在线| 五月综合激情网| 久久在线视频免费观看| 狠狠操狠狠| 五月噜噜| 久久这里99| 国产色色网站网址| 五月婷婷深爱六月| 欧美成人精品一区二区 | 777.色色| 99这里只有精品在线观看| 最新日本A片| 成人看片网站| 日韩成人网站精品久久大全| 天天日人人爽| 丁香五月婷婷啪啪| 日本色色网| 欧美日韩99| 9999三级片| 99色在线| www.久久久久| 色综合激情图区| 99热婷婷| 五月丁香综合激情| 久久ri精品| 久久六月婷婷| Www.狠狠| 成人噜噜网| 欧美激情伊人| 婷婷午夜综合| 六月婷久久| 色婷天天| 激情五月激情综合俺也去婷婷小说| 亚洲丁香花色| 五月天六月丁香| 亚洲av骚货| 91九色首页| 色五月涩涩婷婷| 成人丁香婷婷| 五月婷婷黄色| 玖月婷婷爱丁香| bbwcuckold精品熟妇| 五月婷婷黄色| 99热6这里之有精品| 99在线精品观看99| 久久婷婷一级片| 操操操B| 国产日产亚系列精品版优势| 五月天综合色| 99热这里都是精品| 五月人人丁香婷婷五月人人丁香| 婷婷五月在线播放| 五月婷婷色色色| 99热久| 亚洲综合网区| 久久婷婷五月综合伊人| 五月丁香少妇网| 丁香五月激情啪啪| 婷婷五月天久草在线| 久久久久久久久久婷婷| 天天干电影| 五月天激情国产综合婷婷婷| 激情婷婷22月间| 牛牛色av| 啪啪色激情五月天| 久久激情视频| 色五月综合激情| 婷婷五月激情六月| 激情五月天色播| 五月桃花网综合| 五月丁香网站| 丁香婷婷成人在线播放| 日韩AV大全| 少妇2做爰HD韩国电影| 99re资源在线视频导航| 欧美噜噜久久久XXX| www.人人操人人看人人想人人摸 人人人人操,COM| 精品怡红九九九| 综合网啪| 天海翼中文字幕高| 天天天久久久| 日韩黄色电影| 伊大人久久| 中文字幕AV网址| 98色花堂98t.R| er99免费视频在线| 久热这里只有精品性色AV| 婷婷免费无视频| 碰97久久| 丁香婷婷激情四射五月| 国产密乳av一区二区三区四区| 午夜九九九九九九九九九九九九九| 五月婷婷影| 狠狠干狠狠干| 9|无码久久久久久| 激情丁香五月婷| 日日色五月天| 精品久久99码| 欧美日本黄色| 婷婷社区五月天| 婷婷五月天狠狠色| 少妇水多A片太爽了| 91日韩美女被插视频| www.狠狠操.con| 久99视频在线观看| 国产99久9在线| 激情综合网 激情五月天| 99热免| 亚洲国产网站| 亚城区在线| 天天插天天爽| 婷婷五月天免费小说| 99久在线精品99re8| 成人国产欧美大片一区| 欧洲亚洲最新精品| 国产免费一区二区在线A片视频| 香蕉久久五月| 婷色成人| 国产真人做爰视频免费| 99在线er热| 99九九热在线观看| 伊人久久大香蕉网| 久久久久9999| 国产1区2区3区在线观| 日本高清久| 欧美亚洲成人在线| 久久嘟嘟丁香| 成人免费网站免费看| 欧美毛片www| 开心五月婷婷激情| 高清无码 一区 二区 三区| 97精品综合久久| 亚洲AV综合网| 色色操| 婷婷爱在线观看| 激情久久五月天| 超碰99在线观看| 大香蕉精品视频| 五月丁香六月综合基地| 99色热| 婷婷五月色情天| 五月婷婷之综合激情| 日韩婷婷五月| 亚洲熟妇AV乱码在线观看| 激情网狠狠干| 色网站9| 婷婷五月色情| 99精品激情| 这里有精品| 人人爽在线视频综合网| 中文字幕av在线| www.天天色综合| 久久天天| 丁香五月天成人| 久在线综合69| 天天在线XXX| 琪琪色五月天| 日本一级淫| 日韩精品二三区| 亚洲无码猫咪| 狠狠色综合网| 99精色| 另类 在线| 99热在线播放| 婷婷综合色五月天| 婷婷五月天中文字幕.| 色爱综合网| www.夜夜騎夜夜狠| 99网址在线看| 超碰2021| 中文字幕成人| 久热A| 在线观看亚洲AV| 九九色逼| 欧美黄色AA片哗啦啦啦| 日本久久99| 亚洲综合色婷| 国产成人网| 久久久99精品| 九玖视频这里只有精品| 《久久综合九色综合97婷婷| www.天天干| 天天视频亚洲| 免费试看小视频 99| www激情网站| 欧美激情综合| 2017人人操| 色婷婷中文字母五月丁香| 欧洲区自拍| 日本三级大片| 天天做天天爱天天爽| 六月丁香婷婷拍拍| www色色com| 色综合激情图区| 亚洲天堂99| 亚洲99在线| 99ri国产精品| 伊人大香蕉毛片| 99re思思久久| 99久精品视频| 日日日日操| 美女婷婷六月色| 91狠狠综合网| 亚洲Av成人在线观看| 国产做A爰片毛片A片美国| 色婷操逼| 五月婷婷激情网| 五月婷婷综合色啪首页| 五月婷婷五月天激情视频| 殴美日韩成人| 色www.con| 99九九这里有免费视频| 99ER热精品视频| 激情六月丁香| 丁香五月性| 色综合伊人网| 激情都市丁香婷婷| 五月丁香六月婷婷无码| 九九热这里只有精品6| 99.色| 国产暴力强伦轩1区二区小说| 五月婷婷六月丁香综合在线| 婷婷五月天激情综合| 五月婷婷干干干| 停停五月色宗合| 久久99草五月婷婷| 国产99久| 4399欧美另类视频| 国产资源在线视频| 五月丁香婷婷啪啪综合| 免费97碰碰| 国产精品人妻在线网址| 九九青草热| 欧美成综合在线观看| 麻豆AV一区二区三区| 欧美激情综合| 4399在线观看免费高清毛片| 99九九精品视频推荐| 日本三级成人秘书精品片| 天天爽天天| 99re欧美精品| 综合 蜜月 婷婷| 五月色情精品| 婷婷趴趴| 丁香婷婷五月天校园春色| 五月天婷婷xxx| 欧美内射AA| 第四色激情网| 成人免费120分钟啪啪| 玖玖色资源| 操操自拍| 婷婷五月色| 婷婷久久综合| 伊人五月婷| 丁香五月婷婷天堂大香蕉| 99热天堂| 天天噜天天插| 精品成人无码A片观看香草视频| 欧美狠狠地| 91午夜激情| 久久婷婷内射| 九月丁香| 99久超碰| 美女主播野战视步页| 伊人网色婷婷五月天| 天天色综合网1| 五月久久婷婷丁香| 99精品偷自拍| 婷婷五月综合色中文字幕| 亚洲天堂爱爱| 五月色综合网| 99热都是精品| 丁香六月激情国产| 色五月激情视频在线综合| 色狠狠图片| a久久| 天天日夜夜| 亚洲综合五月天婷婷| 91干在线视频| 777久久综合视频| 丁香婷婷色五月天| 噜噜视频| 色偷偷色婷婷| 丁香六月爱综合| 人人操人人干AV| 婷婷成人视频| 激情綜合網址| 九九久久五月天综合伊人| 五月天久久综合婷婷| 亚洲视频99| 日韩精品电影| 99免费视频精品| 日韩一级网站| 91嫩草国产线观看亚洲一区二区| 色婷婷婷av | 五月婷婷之综合激情在线| www.婷婷六月天| 91dy.av| 成人综合AV| 大香伊人久色| 色五月久久成人婷婷| 99精品在这里| 草草色情综合网| Av大香蕉| 久久激情综合| 超碰99资源站| 激情五月丁香综合网站| 国产AV国片偷人妻麻豆| 婷婷激情肏屄网| 天堂五月婷婷| se婷97| 国产一级片| 啪啪黄页网| 日本三级第一页| 玖玖资源站国产| 四月婷婷丁香五月| 九九99九九精品视频| 激情五月丁香色婷婷| 啪啪91| 综合激情婷婷| 五月色婷婷中文字幕| 六月丁香开心婷婷欧美| 日本性激情色播| 精品人妻午夜一区二区三区四区| 欧美啪啪9| 天天舔天天爽| 久久五月天精品视频| 久热最新视频| 欧洲电影在线观看免费版英语版 | BlACKEDRAW视频一区二区| 五月婷婷免费| 久草婷婷在线| 色婷婷色久综| 人妻无码视频网| 国产又黄又爽又激情不遮挡视频在线观看| 99精品视频免费观看| 亚洲激情综合网| 欧洲亚洲午夜| 久碰视频| 五月婷婷激情网| 久久五月天婷婷视频| 婷婷色色五月天| 五月色婷婷在线观看| 日日杆天天| 丁香五月天欧洲在线| 久久精彩视频| 狠狠色精品综合| 丁香五月欧美婷婷| 欧美五月婷婷| 五月婷色| 五月天啪啪| hd五月婷婷在线| 大香蕉久久综合网| 网站免费一站二站| 99热青青草| 丁香五月天啪啪| 玖玖视频福利| 久久久久久久91| 《蜘蛛女》梁铮1995| 亚洲色色五月| 婷婷五月六月| 久久综合伊人综合在线| 亚洲中文字幕在线电影| 天天操夜夜操| 天天综合插插| 人人草碰| 色色A| 开心五月激情五月丁香五月婷婷| 五月天丁香啪啪啪啪| 丁香激情五月天| 六月婷婷综合| 婷婷亚洲在线| 91婷婷色五月| 五月天成人网婷婷| 思思9久久| 97色啪| 伍月婷婷免费视频| 九色激情| 国产毛片精品一区二区色欲黄A片| 色婷婷丁香AV综合| 人妻久久婷婷| 色色欧美色色色| 日韩在线视频中文字幕| 涩涩五| 伊人久久大香天蕉亚洲特级| 国产真人做爰视频免费| 99爱在线视频| 日本色婷婷五月天成人电影| 99超碰在线免费| 五月丁香啪啪网| 新激情五月开心五月婷婷五月丁香五月| 青青999| 色婷婷成人做爰A片免费看网站| 伊人色欲五月天| 日本熟妇精品99| 免费看欧美成人A片无码| 91婷婷丁香| 五月丁香六月婷婷久久久综合| 91婷婷色五月| 欧美综合五月丁香五月天| 国产 亚洲 在线| 色综合五月天| 播五月,色五月,开心五月播放器| 日本色婷婷五月天成人电影| 超碰人人91| 亚洲韩国日产综合AV| 日韩999| 久机视频这只有精品| 六月五月久久丁香| 五夜婷婷| 日韩专区五月天婷婷丁香| 久久九色| 午夜成人AV在线| 亚洲欧美999| 国产寻花在线| 婷婷色五月综合丁香| 吊色AV男人的天堂| g00d人体西西| 31色区视频免费看| 内射爽无广熟女亚洲| 人人爱国产| 激情 婷婷 丁香五月天| 热久久77777| 亚洲免费看片| 亚洲五月天色| 九九色精品| 黄网在线观看免费| 天堂中文国产| 五月丁香综合成人社区| 婷婷五月在线| 天天日天天久久青青| 久99综合婷婷| 美欧日韩国产成人在战| 97色啪| 婷婷王月天影院| 婷婷色五月色妇| 色婷婷4| 五月天成人在线视频丁香| 99极品视频| 五月天国产成人| 国产欧美日韩性爱| 婷婷97狠狠干| 三区激情四射av| 婷丁香久综合| 亚洲中文乱字字幕线在永久| 人人做人人看人人摸| 五月天婷婷青青| 婷婷五月色影视先锋| 另类小说五月天激情| 99久久综合精品五月天| 天天操综合网站| 第一区久久网站| 天天爽天天摸人妻综合网| 99热在线观看亚洲区| 激情综合网激情五月丁香| WWW,五月| 色噜噜狠狠色综无码久久合欧美| 亚韩在线视频| 高清无码网址| 激情五月天婷婷| 免费视频WWW在线观看网站| 国产精品第一国产精品| 五月丁香婷婷色播无码| 黄色五月婷| 久热黄色| 内射丰满人妻| 亚洲婷婷免费| 五月婷婷色色色| 五月天婷婷成人网| 久综合九综合99| 97婷婷丁香五月综合| 97碰| 综合网激情五月天| 色综合综合色| 丁香五月婷婷色| 大地9中文在线观看免费高清| 99国产在线精品视频| 冬月かえでAV无码播放| 欧美日综合| 这里只有精品在线播放| 亚洲成人高清在线| WWW.国产| aaaa.黄| av第一二区| 干婷婷五月天| 国产精品久久久海的味道| 五月天播播中文字幕| 久久99视频| 精品视频网| sewuyuetingtingiii| 亚洲激情无码久久| 天天在线XXX| 97超碰人人操| 日韩有码一区| 9九热视频| 五月婷婷影| 午夜少妇在线观看视频| 久久婷中文字幕| 色激情综合狠狠婷婷| 五月婷婷六月天| 精品色色| 久操激情| 婷婷丁香五月亚洲| 久久久久人妻| 激情综合国产| 性日本精品| 五月丁香六月婷| 丁香九月综合在线| 欧美色小说婷婷| 五月激情啪啪| 激情久久综合网| 丁香婷停五月激情综合深爱| 大香蕉九九| 97色碰碰公开视频| 五月丁色AV| 操97免费超级视频| 日韩激情网站| 激情婷婷狠狠干| 任你草| 99在线视频免费| 色综合网综合| 五月天久久久| 激情5月舔| 激情综合在线观看| 丁香花五月天社区| 婷婷亚洲欧美丁香五月| 99re欧美精品| 色色色在线播放| 99热这里只有精品55| 综合性爱网| 婷婷色五月天在线观看| 激情五月婷婷色色| 狠狠狠五月婷婷六月丁香| 久久丁香| 五月丁香视频在线观看| 这里只有精品视频免费在线观看| 综久久久| 综合在线色婷婷| 操比激情五月| 久久538| 99视频日韩| 丁香六月天之亚州热女| 丁香五月婷婷国产在线| 日撸夜撸日操| 色五月噜噜| 婷婷射丁香| 五月天久草| 五月丁香六月婷婷开心网| 国产超碰av| 亚州色色色| 热久69| 久久五月婷婷丁香| 成人午夜免费电影| 97干在线| 色婷婷成人丁香| 婷婷爱五月天| 天天摸日日舔狠狠添婷婷婷 | 丁香五月色欲| 91天堂网综合| 日韩99视频| 天天综合色丁香| 色啪综合| 丁香五月天婷婷在线视频| 色色色欧美| 97激情五月天| 欧美三级视频| 激情综合五| caop在线视频| 五月激情在线| 五月婷婷六月丁香在线视频| 人人操大| www.久久久.com| 思思久久精品视频| 碰99在线| 91丨九色丨首页| 色婷婷精品| 欧美久人人| 婷婷色导航| 色婷婷激情小说网| 婷婷激情五月天桃花网| 丁香婷婷网| 思思久久精品视频| 五月做爱| 天天狠狠夜夜狠狠2023| 亚洲色婷婷网站| 五月天激情综合网| 97人人草| 九九热短视频在线观看| 五月天色色婷婷| 婷婷色香六月综合激情| 九九亚洲| 人妻爽爽爽久久久久久久久| 日本nghangse中文字幕| 秋霞成人毛片一级A片| 久久五月天黄色五月天色网址| 啪啪五月婷婷| 色色免费网站| 丁香五月开心五月激情| 天天色丁香| 琪琪狠狠干| 色五月综合激情| 色五月激情综合| 女婷久久| 人妻有码乱操| 五月天婷婷综合网| 成人狠狠成人狠狠成人狠狠成人狠狠| 国产AV不卡福利| 亚洲精品无AMM毛片| 99re热视频这里只精品| 久久草人妻| 五月激情婷婷国产精品久久久久久| 丁香五月人妻| 开心激情婷婷| 五月激情综合五月| www久久艹| 婷婷五月丁香综合瑟瑟| 99热这里只有精品4| 青青操丝袜美腿| 久久在线视频免费观看| 91精品久久久久久久久| 婷婷五月深爱五月| 99色6爱9热| 九九热在线视频观看免费10| 日本不卡高字幕在线2019| 99在线视频资源| 五月丁香六月婷婷综合网站| 99热这里有精品6| 99精品人人| yazhochengrenavwang| EEUSS鲁片一区二区三区| 免费婷婷| 亚州色色色| 777精品成人a v久久| 五月丁香六月色婷婷综合五月天| av在线不卡播放| 99婷婷综合| 婷婷久久综合| 九月激情网| 欧美大香蕉视频| 激情伊人五月天| 亚洲五月丁| 九九伊人网| 激情视频综合| 婷婷丁香五月色偷偷| 麻豆忘忧草午夜| 少妇人妻丰满做爰XXX| 色婷婷狠狠| 99色在线观看视频| 九九成人| 九九99精品视频在线观看| 色五月婷婷内射| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 丁香婷婷啪啪啪| 亚洲五月天综合| 男人天堂亚洲综合| 五月丁香六月婷婷啪啪综合 | 婷婷五月天影院| 五月天色区| 婷婷五月另类网站| 狠狠狠色激情综合适合| 五月成人天| 国产色色色色| 久久怡红院| 五月丁香影视| 综激情网| 99久久久久| 五月婷婷丁香网| 狠狠操狠狠插| 99在线热视频| 久久婷婷五月天| 欧美黄色AA片哗啦啦啦| 久久丁香五月天| 久久婷婷五月综合| 99爱在线视频| 日B日潘金莲BB| 日韩日比视频在线| 国产午夜精品一区二区| 六月撸婷婷| 色狠狠色| 日本WwW色偷偷丁香花久久久京东热| 精品人妻伦九区久久AAA片| 日本黄色一级| 精品自拍99| 久热99热| 色色综合色视频| 99精品这里只有免费视频| 五月天激情综合首页| 色五月六月| h在线看免费版在线看| 综合五月天完整| 色婷婷狠狠久久综合五月| 丁香久色| renre人人操国产超碰在线| 日本五月丁香| 激情五月婷婷综合| 久99久视频精品| 精品色色| 国产日日夜夜操| 亚洲六月色| 原琪琪色影院| 亚洲婷婷丁香| 天天肏屄夜夜爽| 99在线视频在线观看| 激情六月婷| 大香蕉婷婷丁香天堂AV| 99色热| 五月天婷婷激情| Www.狠狠| 丁香六月婷婷开心| 五月综合激情视频在线| 97 A I色色| www.1024久久| 五月丁香婷婷色色| 99热伊人| Www.se.久久| 97色色婷婷| 婷婷精品综合| 丁香五月电影| 五月丁香花激情啪啪网| 色噜噜狠狠色综合日日| 欧美成人A片AAA片在线播放| 亚洲综合色色| 欧美成人猛片AAAAAAA| 99热在线观看精品| 亚洲五月综合色播| 色吧五月婷婷| 亚州成人综合在线| 色五月激情问网站| 五月婷婷六月激情| 婷婷狠狠操| 久操97| 激情五月丁香在线观看直播| 五月丁香婷婷基地| 婷婷影视久久| 2025中文在线视频字幕免费观看| 天天插天天爽| 色婷婷色综合久久精品V| 日本啪啪天堂| 777丁香六月青青草婷婷综合久月| 色碰碰| 七七久久婷婷| 只有久久精品免费| 色婷婷香蕉丁丁网| 欧美日韩成人在线网| 五月天天天色| 99热这里有精品| 五月激情视频| 丁香五月婷婷五月天| 在线不卡AC| 色婷婷欧美在线| 任你爽精品免费视频6| 日韩不卡123| 777久久综合视频| 五月天另类视频| 99精品国产在热久久婷婷| 99热精品免费在线观看| 狼人久草| 色婷婷香蕉| 六月婷婷视频| 殴美97色| 五月婷婷六月丁| 六月婷婷激情| 五月婷性爱| 噜噜噜噜在线| 色吧婷婷五月亚洲| 啪啪婷婷五月天激情| 欧美婷婷五月| 婷婷五月天激情在线观看| 在线可以看的av网址| 一起草AV入口| 成人超碰AV| 婷婷99| 色婷婷婷av| 久久92| 丁香五月综合| 日韩综合天堂| 激情五月天视频| 丁香婷婷六月天| 成人五月丁香社区| 六月婷婷激情| 五月丁香六月婷婷亚洲天堂网站| 欧洲毛片基地c区| 色婷婷丁香网| 色色色色热| 袁子仪视频观看| 亚洲激情av| 91视屏在线观看com.wwwvv| 欧美激情性做爰免费视频| 春色激情第四色| ..真实国产乱子伦对白在线_欧| 五月丁香在线视频观看| 99热这里只有精品9| 九九自拍网| 欧美婷婷综合| 无码一区二区日韩| 国产成人精品一区二三区熟女在线| 色婷婷在线综合色播网| 成人AV片播放| 丁香色五月婷婷| 在线观看中文字幕亚洲| 狠狠干综合| 亚洲精品操一操、噜一噜、摸一摸、爽 | 日熟女| 天天色天天操天天射| 久热这里这里有精品| 色99综合色88| 五月草视频| 丁香花五月天激情| 99热免费| 婷婷基地成人五月天| 97精品人人A片免费看| 五月天另类小说久久小说网| av超碰在线| 9热视频在线观看| 婷婷激情综合无月| 九九久99免费视频| www久久99| 亚洲第一色色色色| 91亚洲免费片| 婷婷网五月天| 婷婷.com| 亚洲精品国产setv| 丁香五月影| 婷婷色五月婷| va婷婷在线| AV中文字幕夜夜操b天天摸bb | 97在线日韩| 九九99在线免费在线观看视频| 婷婷五月成人有| 婷婷久久在线| 天天插综合| 久热播这里只有精品| www999日韩精品| 婷婷丁香日韩五月| 国产白丝在线一区| 99热777| 人人摸人人操人人爽| 成人在线观看国产| 超碰99资源站| 婷婷五月天成人基地| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 五月丁香在线| 五月丁花色综合网| 日本一毛片| 婷婷在线日韩综合| 99热国内精品| 天天天操天天天日| 97视频.干com| AV网址大全在| 国产激情久久| 国产色色色色| 婷婷玉月丁香五月在线视频| www.日本91| 五月天天综合网色婷婷| 天天操天天曰| 色欲婷婷五月天丁香| 国产欧美日韩一区二区三区| 久久久婷婷婷| 九九美女视频| 最新无毒无码AV| 亚洲丁香花色| 99精品网| 天天夜天天色天天| 婷婷区日本| 殴美激情综合网| 久99久视频精选| 亚洲精品无人区| 天天操综合网| 五月天久久久| 亚洲第一综合| 玖玖资源在线视频| 九月婷婷丁香| 色五月丁香激情| 天天操夜夜爽天天操| 无码区婷婷五月花开| 久久精品99久久久久久久久| 九九爱精品网站| 女人高潮内射99精品| 99热这里只有精品5| 91精品久久久久久久久| 亚洲综合色网| 人人色性网| 成人羞羞啪啪 全 视频| 婷婷免费精品视频| 大香蕉五月天婷婷| www.婷婷六月天| 99.N在线视频| 日本色久| www91久久| 天天肏高清在线| 久久区区一二三av| 久久婷婷的综合色丁香五月| 99综合网| 办公室少妇激情呻吟A片在线观看| 五月天啪啪| 亚洲超碰在线| 国产精品大香蕉| 天天综合色| 99∨VTV| 九九色色| 激情内射人妻1区2区3区| 91操人视频| 天天骑天天操| 色婷婷99| 图片区 小说区 区 亚洲五月| 北京熟妇搡BBBB搡BBBB| 少妇性按摩无码中文A片| 午夜一区| 日本猛少妇色XXXXX猛叫| 九九人人操| 色色色综合| 爱久久小说下载网| 久久婷综合| 欧美激情综合| 深爱激情五月天| 婷婷91| 中文字幕 中文字幕明步| 伊人激情| 丁香五月性爱| 亚洲无码99| 97操视频| 婷婷丁香色情| 人妻啪啪啪| 激情都市另类| 九九Y精品热播| 伊人久久大香线蕉av一区| 五月成人综合| 红桃91人妻爽人妻爽| 东北熟女高潮99综合99| 免费日本aⅴ中文字幕| 五月 激情视频| 午夜微拍福利| 婷婷射综合| 99re热精品视频国| 99久久思思| 26uuu成人网| 激情AV| 色五月婷婷777| 人人操操| 五月色在线| 日日爱699| 日韩操逼大片| 成人精品一区日本无码网| 影音先锋AV资源男人站| 欧洲综合视频| 婷婷五月丁香伊人网| 五月天天爽| 婷婷99狠狠| 五月婷婷久久大片| 4399在线日本A片| 热九九精品| 米奇影视五月天| 久热91| 少妇搡BBBB搡BBB搡毛茸茸| 色月丁| 91人人超碰在线| 天色综合网站| 丁香九月婷| 九九99久久精品| 51成人| 五月天激情美女久久| 久久久网站| 99在线播放| 九九视频免费| 精品久久这里热66| 精品色色| 五月综合激情| 激情开心五月天婷婷基地丁香社区| 99热99精品| 天天综合网~91| 色色丁香| 激情五月六月| 精品一区久热| 欧美99| 久9无码视频| 67194中文在线| 青青.com| 久久婷婷色综合| 五月四色激情| 色五月婷婷成人视频| 色婷婷久久久| 人妻在线观看视频| 激情综合色五月六月婷婷| 婷婷午夜综合| 五月天综合色| 五月天狠狠干| 日韩人妻无码专区| 亚洲在线综合| 国产精品美女| 碰超亚洲| 韩国婷婷丁香五月| 五月天婷婷基地| 久久98热re| 五月天婷婷激情在线色图| 三男玩一女三A片| 天天摸.天天mo| 婷婷五月无码| 99原创自拍视频在线观看| 五月天婷a在线| 97色片| 欧美色图天堂网色| 色五月成人| 欧美精品狠狠色丁香婷婷| 97婷婷丁香五月| 人妻熟女一区二区AV| 亭亭玉立国色天香| 久久久18| 狼人婷婷综合| 91精品久久久久久久久| 欧美日韩五月婷婷| 天天操天天日天天操| seuuu婷婷| 韩国久久少妇视屏| 亚洲乱码日产精品BD| 伊人久久婷婷五月天激情四射| 国产精产国品一二三在观看| 天天插天天玩天天干| 99re思思久久| www.99热视频| 99久热这里只有精品| 天天操夜夜爽天天操| 久热九九| 亚洲综合视频天天精品|