免费国产精品自在自线-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
返回資訊列表
中文字幕综合网| 黄色91在线观看| 五月婷婷m| 色噜噜五月天| 天天爽曰日爽| 亚洲AV人人操| 色婷婷操逼网| 国产乱子轮XXX农村| 五月婷婷丁香狠狠撸久久| .comwww在线观看免费操| 91人操| 草草视频91| 五月丁香婷婷色| 好色婷婷| 色综合五月| 欧美人人草| 伊人超碰| 操逼巨乳91| 天天操天天干天天日| 丁香五月23111| 伊人激情啪啪| 色色色区| 九月久久婷婷| 91在线人| 色综合五月| 久热久| 五月天婷婷成人资源站| 激情深爱婷婷网| 五月天婷婷久草丁香| 97色色视频| 婷婷五月天开心网| 婷婷六月天激情| 色久婷婷网| 欧美S码亚洲码精品M码| 99这里只有精品|v| 色九九综合| 色婷婷视频在线| 国产精品噜噜在线视频| 91丨熟女丨首页| 亚洲色婷婷五月天| 人人九色| 国内一级精品| 91在线日| 国产伦理精品高清在线观看网站一区二区 | 丁香五月婷婷激情中文| 国产精品蜜臀99| 五月份婷婷| 影音先锋91资源站| 亚洲超级碰| 狠狠色成人影片| 99熟女| 久碰久| 亚洲黄网AV| 噼里啪啦在线观看免费完整版视频| 亚洲另类婷婷综合| 久久只有18视频| 九九99久久| 性天天中文网| 亚洲色热| 99免费| 久久WW| 99精品小视频| 六月婷婷啪啪| 欧美在线视频99| 久久Xx| 亚洲在线综合| 色婷婷中文字母五月丁香| 五月天激情四射网站| 69精品人妻不卡视频| 日本久碰| 91人人爽狠狠狠| 国产精品成人AV在线| 日本欧美999久久久三级片| 超碰2021| 六月婷婷久久| 日韩一区二区在线播放| 五月婷婷丁香色吧网| 俺五月| 秋霞电影理论| 五月天综合在线观看| 丁香九月婷婷色| 色五月婷婷五月丁香五月| 91婷婷五月天综合视频| www.久热| 丁香六月婷| 亚洲爆乳无码精品AAA片蜜桃| 国自产拍偷拍精品啪啪一区二区| 91丁香婷婷综合久久欧美| 免费91久久精品| 色吊丝99| 超碰天堂网| 五月丁香亭亭电影久久| 色婷婷播放| 成人毛片在线免费观看| 婷婷永久在线| 欧美啪啪9| 97干在线| 久久婷网| 这里只有精品免费观看网占| 99热这里只有精品2| 99热这里都是精品| 超碰在线网站| 色插综合网| 99久久玖玖| 熟女网站久久| 色天使久久综合| 成年视频免费观看| 色婷婷五月亚洲| 97香蕉碰碰人妻国产欧美| 99久久久免费| 五月婷婷六月丁香色| 色五月婷婷91| 丁香婷婷五月天成人| 看全色黄大色大片| 婷婷五月精品中文字幕| 深爱五月激情| 中文字幕av在线播放| 日本a片网址| 午夜婷婷五月天| 亚洲国产成人在线| 懂色av蜜臀av粉嫩av永陈冠希| 99久久精彩视频。| 精品人人操| 欧美顶级少妇做爰HD| Caoub青青超碰| 激情欧美婷婷| 色综合色欲综合天天免费| 五月婷婷激情综合网| 99精品在这里| 五月天丁香网站| 婷婷色五月色妇| 九月婷婷| www.99久久久| 玖玖婷婷综合| 青青草原伊人网| 六月婷婷色五月| 亚洲欧美另类在线23p| 黄网免费观看| 久久92| 婷婷丁香五月天在线| 婷婷中文在线| 亚洲精品影视| 操久久网| 婷婷的久久网站| 婷婷五月亚洲一本在线丁香| 欧美97超碰| 97超美国视频在线观看| 亚洲久久婷婷丁香五月天| 五月天综合图片| 久久久精品人妻| 久久婷婷五月天激情| 免费观看的AV| 五月婷九月| 激情五月六月婷婷综合啪啪| 精品一二三区久久AAA片| 久久五月婷婷电影| 六月丁香五月婷婷| 丁香六月狠狠| 日本啪啪视频HD| 在线99色| 色色丁香婷婷| 开心六月婷| 99riAv1国产在线观看| 国产亚洲成人综合| 色婷婷精品视频| 婷婷五月天堂| 麻豆雪千夏| 五月激情婷婷丁香天堂| 91九色欧美| 天天爱天天做天天操| 精品热九九| 色香五月天| 超碰免费在线| 色丁香六月| avh片在线观看| www.五月婷婷久久.com| 久久婷婷五| 激情五月丁香六月综合AVXXXX| 5月丁香综合图区| 亚州精品久久久久AV无码| 亚洲九九99精品视频在线播放| 色五月婷婷丁香婷婷| 粉嫩AV久久一区二区三区| 91无码色色| 丁香五月在线观看综合| 狠狠色网| 久久五月综合| 色色网站在线| 丁香五月影院| 国产亚洲99久久精品熟| 另类 在线| 亚洲一级色电影| 婷婷精品在线| 激情黄色小说五月天| 性爱激情五月| 婷婷丁香五月综合| 五月丁香无码视频| 亚洲久热| 久久五月天免费网站| www.26uuu.com亚洲电影| 九九久久腿| 五月亭亭六月色| www夜夜操| 婷婷在线操| 久久久婷婷五月天| 九九色热| 婷婷综合爱| 欧美日比视频| 91a片爽| 婷婷五月天综合小说网| 亚洲五月天第一综合干| 亚洲自拍天堂| 日韩人妻AV在线| 五月天婷婷在线播放| 玖玖综合色| 亚洲精品国产A久久久久久| 亚洲人妻五月丁香婷婷| 国在线激情网| 婷婷六月视频| 五月四色激情| 婷婷精品视频| 97碰久久| 日韩AV大全| av网址在线| 日韩精品视频中文字幕| 99热在线精品观看| 婷婷综合一二三| 日本女va| 综合激情五月丁香| 久久精品91视频| 色五月激情网| 色啪网| 五月激情久久综合网| 综合网狠狠| 亚洲精品无人区| www.99久久久| 婷婷五月天综合AV| 婷婷五月六月| 欧美VA在线| 亚洲激情五月婷婷日日| 粉嫩av蜜桃av蜜臀av| 99在线看视频| seuuu婷婷| 夜夜撸日日操| 色婷婷狠| 日本三久久| 丁香激情五月少妇| www,五月天激情| 狠狠看狠狠| 五月天婷婷伊人| 久久44| 这里只有精品久久| 99这里有精品视频| 日日日日日| 操97| 激情五月丁香婷婷| 开心激情婷婷| 怡红院AV亚洲一区二区三区H| 思思热在线播放| 精品99视频| 亚洲激情婷婷| 中文字幕成人影视| 国产avapp 网| 99久热| 79色色色色| 丁香五月天激情综合网| 六月丁香婷婷六月激情综合| 国产欧美va| 亚洲色亚洲精品| 丁香五月激情性色郤| 五月天开心成人网| 婷婷五月天综合色| 天天摸天天透天天舔| 久久这里只| 永久地址 色| 婷婷五月激情欧美大胆视频| 亚洲色婷婷五月| 久色国产| 成人电影在线免费试看| 久操人妻| 九九操屄| 一级二级色大片| 9有码中文| 久久99久久99精品免观看粉嫩| 91超级碰在线| 九九视频这里是精品五月| 五月六月丁香婷婷在线观看| 五月婷婷自拍| 五月婷婷六月天| 日本色道视频网站| 久久精品国产AV一区二区三区 | 激情五月天免费视频| wwccc久久久| 天天拍久久| www.成人婷婷综合| 五月婷婷五月天| 亚洲激情综合| 亚洲视频在线观看区| 9精品一区| 亚洲旡码| 这里只有免费的精品| 五月婷婷AV| 久久久无码精品成人A片小说 | 五月婷婷六月色| 婷婷大香蕉| 黄色三级毛片中字| 操逼视频一区| 婷婷伊人五月| 六月婷婷综合| 日韩啪图| 丁香五月天偷拍| 丁香婷婷五色月| 丁香婷婷六月| 色狠狠色噜噜AV天堂五区| 99re久热| 99极品视频| 五月丁香亚洲综合| 欧洲第一无人区观看| 影音先锋91视频| 久操大香蕉| 99热精品一区| 中文字幕在线日亚州9| 99re热视频这里只精品| 99热伊人| 欧美黄色韩日网| 丁香婷婷激情| 丁香婷婷五月综合影院| 婷婷五月六月激情| 国产精品人成A片一区二区| 婷婷综合另类| 思思久久思思| 97五月天| 色色激情| 激情综合99| 97干干干丁香| 狠狠88综合久久久久噜噜噜| 91丨九色丨熟女|新版| 婷婷五月欧美综合| 欧美亚洲999| 五月丁香综合中文| 超碰色人妾| 热无码A∨| www.久久久久久久| 91亚洲视频| 综合亚洲五月天| 激情五月天偷拍综合网| 国产性av| 97久久超视频| 国语精品探花| 超碰婷婷色| 99这里是99在线视频| 思思热在线精品视频| 久久99久久99精品免观看粉嫩| 久9精品视频在线| 大香蕉久操| 五月丁香六月婷婷激情网| 丁香五月激情五月色综合| 影音先锋色婷婷| 99亚州综合精品成人网| 男人的天堂99| 夜夜躁爽日| 九九婷婷五月天| 九九成人高清视频| 丁香婷婷综合激情五月色| 五月丁香激情综合| 婷婷五月天久久| 婷婷五月亚洲综合| 狠狠干狠狠色| 六月婷婷五月丁香首页| 色色色综合| 激情五婷精品网在线观看网址| 亚洲成人AV在线播放| 综合激情专区| 五月婷中文字幕| 偷拍91九色| 久久思思热| 嫩草视频观看| 粉嫩av懂色av蜜臀av熟妇| 中文字幕人妻AV| 丁香五月精品| 韩国19 主播内部福利vip免费播放| 26uuu亚洲精品国产| 999热在线观看视频| 五月天堂在线| 狠狠久综合| 99热骚货| 激情五月婷婷啪啪| 激情五月婷婷网| 久久久妻人人人| 超碰99在线观看| 色丁香在线视频| 亚洲日韩久久婷婷伊人| 99热九九在线| 精品99视频| 色呦呦美女| 久久综合五月婷婷| 中文字幕在线日亚洲9| 思思久久网| 中文字幕人妻熟女在线| 五月的色婷婷高潮| 日91高清无玛| 五月丁香六月婷婷不卡免费无码| 91九色 熟| 天天干天天拍| 婷婷激情五月天色| 欧美精品A片一区在线观看| 综合激情五月婷婷| 五月天欧美 另类小说| 区欧美日韩成人| 婷婷五月天激情开心网| 伊人青草成人| 91九色白丝| 99色在线观看视频| 久 久9 9 热 视 频| 超碰激情网| 热99玖玖99玖玖99九九| 久草热在线视频| 日日日天天干| 五月天色婷婷激情综合| 日韩精品无码AV| 在线观看免费狠狠色丁香香综合| 色狠狠伊人久久五月丁香| 久久久潮喷-久久久九九-成人AV| 天天操婷婷| 激情婷婷综合五月少妇| 亚洲婷婷五月天在线激情综合网| 熟妇天天综合| 国产看真人毛片爱做A片| 五月丁香综合激情网| 九九99在线免费在线观看视频| 亚洲激情在线| 激情久久五月天| 狠狠色狠狠色综合日日91| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 色狠狠色| 日韩成人综合| 五月天婷婷婷| 婷婷久久五月丁香| 激情文学五月丁香六月婷婷| 五月丁香WWW| 激情五月色综合网| 午夜婷婷| 亚洲成人五月天| 激情五月小说婷婷| 婷婷五月天在婷| 99热9| 性爱五月婷| 国产午夜精品AV一区二区麻豆 | 狠狠爱综合| 少妇高潮呻吟A片免费看软件| 久久婷婷五月综合色和| 激情婷婷人妻| 五月婷婷新网站| 丁香婷婷五月综合欧美另类| 五月婷婷激情网| 五月丁香六月激情啪| 久久久久久草黄色片AV在线观看| 91色综合| 丁香六月啪啪| 99色视频在线| 丁香婷婷六月| 亚洲色99| 九九婷婷综合| 91avse| 播五月,色五月,开心五月播放器| se99视频| 激情五月天www| AV天堂淫乩| 天天艹天天综合网| 日本99在线| 狠狠久久婷婷| 午夜日日| 在线视频你懂得| 人妻操逼视频。| www.色婷婷| site:pzdcoin.com| 婷婷五月天日日日干干干| 伊人综合网4| 五月丁香欧美综合免费视频| 五月激情婷婷丁香| 色碰碰| 五月婷精品| 九九热欧美| 五月天com| 99成人| 99久久超级| 亚洲热久| 久久五月天婷婷视频| 五月婷婷就去色| 婷婷香五月综合激情| 婷婷五月激情视频| 超碰人人操在线| AV人人操| 五月丁香婷婷狠狠操| 99热销国产这里有精品| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 综合网色综合| 思思久久99热| av性爱网站| 91在线日| 日韩99无码| www.97干视频| 天天日夜夜夜操操操操| 天天射影院| 亚洲精品99| 日本色99网站| 婷婷色中文字幕| 婷婷久久六月费| 狠狠操狠狠操AV| 9l视频自拍9l九色成人| 草榴视频黄色网| 婷婷丁香在线| 五月丁香六月婷婷综合网站| 色五月AV| 日亚二欧美| 激情网站综合五月天| 色五月激情五月| 丁香色色网| 日韩AV中文字幕在线| 亚洲色色色色色| 婷婷五月激情天| 五月综合激情网| 大香蕉伊然在亚洲90| 婷婷五月天最新综合你懂的 | 激情五月天开心| 农村熟妇高潮精品A片| 99热这里只有精品3| 成人国产网| 久久色五月天| 日韩欧美颜射| 婷五月天六| 婷婷五月天AV激情| 99久久9| 五月丁香婷婷老司机| 天天弄天天爽| 日韩成人av在线| 91综合在线观看首页| 操逼福利视频| 欧美在线视频99| 97香蕉久久超级碰碰高清版 | 婷婷丁香五月综合| 另类图片五月天激情| 色情丁香五月天| 91狠狠色丁香婷婷综合久久精品| 人人操女人| 色丁香影院| 亚洲日本韩国| 丁香五月色播中文在线播放| 激情丁香五月| 操操操操操操婷婷五月天| 综合性爱网| 99热一本久道| 丁香五月激情婷婷婷婷在线观看| 日本三级第一页| 天天拍夜夜爽日日| 五月婷婷第四色| www.91av.com| 狠狠操狠狠干综合| 九月性爱网| 五月天激情开心网| 亚洲精品无码A片一区二区| 狠狠色丁香99| 超碰在线50| 99色视频在线观看| 665566 无码| 我要射综合| 热热色色五月天婷婷| 激情婷婷丁香色情五月天| 精品人妻伦九区久久AAA片| site:hcxsz888.com| 99热这里精品| 婷婷天天插天天爱| 潘金莲AAAAAAAAAA| 午夜五月天| 六月婷婷最新网址| 97精品在线| 五月激情婷婷综合| 天天天天干| www色婷婷久久综合久色| 婷婷亚洲综合| 深爱五月亚洲| 五月婷综合激情| 日本va欧美va国产激情| 婷婷射图五月天| 婷婷五月天av| 五月丁香综合精品欧美| 色色综合色| 91婷婷五月丁香碰| 日本色色网| 99丁香五月婷| 丁香五月瑟瑟| 玖玖爱综合网| 日本色婷婷久久99精品91| 91人人人人人| 天天噜| 激情网站五月| 蒲京久久无码视频| 9色在线| 五月丁香婷婷无码A∨| 黄色中文字目| 久久丝袜婷婷| 激情五月天在线| chaopeng在线人人| 久久9精品| 天天做天天爱天天爽在| 欧美色色日韩| 日本天天操| 四月婷婷丁香| 五月天激情综合在线| 久久艹 五月天| 偷偷操99| 五月色婷婷AV| 99久久久久久| 99在线视频观看| 91丨九色丨白浆秘| 成人性爱精品视频| 涩五月婷婷| 丁香婷婷综合影院| 99爱爱| 色婷婷狠狠| 深爱五月激情网| 九九综合五月欧美| 国产亚洲精品AAAA片APP| 五月婷婷激情综合网| 亚洲激情综合色站| 久久亚洲无码| 激情综合五月丁香六月婷婷| 五月婷婷激情| 婷婷涩五月| 婷婷五月天六月| 99热这里只有精品26| 五月婷婷性爱视频| 色爆五月| 啊v视频在线观看| 五月天狠狠| 四色 爱 婷婷 精品 亚洲 五月天| 成人色图情色成人网 www.5b5b5bcom 五月天 | 久久机热思思热| 久久婷婷五月天激情新地址| 97色操| 天天综合网~91| 丁香五月天激情综合| 色色狼人综合| 99色在线| 99精品热| 婷婷六月啪啪| 色色色色av色色色色| 色色aⅤ網| 成人精品一区二区三区四区五区| 婷婷情色五月天| 狠狠色婷| 亚洲无码影片| 婷色影院| 久久九网| 丁香五月婷婷国产av| 亚洲亚洲人成综合网络| 99九九久久| 亚洲综合色色| 99久久9| 五月丁香久久综合| 色一情一乱一乱一区91| 激情综合网五月丁香| 久久视频婷婷| 婷婷五月综合网| WWW,五月| 欧洲亚洲免费视频9| 六月婷婷综合| 婷婷射图| 日本高清久久| 婷婷在线视频| 丁香五月成人| 第四色在线观看| 久久精品99国产精品日本| 亚洲成av人影院| 国产偷人爽久久久久久老妇APP| 色五月婷婷中文字幕| 五月天另类激情在线| 99热综合| 疯狂做受XXXX高潮A片| 中字幕视频在线永久在线观看免费 | 婷婷丁香综合网| www五月婷婷88导航| 婷婷中文字幕欧美| 狠狠 久久| 色婷婷久久视屏| 超碰免费大香蕉| 97干在线视频| henhencao国产在线| 丁香五月老师| 丁香五月天啪啪a日本| 色 色 色综合com| 一起草无码| 久久婷婷五月天| 少妇人妻人伦A片| 伊人大综合| 成人一区在线观看| 亚洲第一黄网| 五月婷丁香久久久| 草综合14| 日日杆天天| 91av传媒高清在线视频网| 99综合99| 五月天激情四射| 五月天色综合服务平台| www夜夜| 久久xxxx| 色九九中文字幕| 亚洲成人中心| 国内婷婷丁香社区在线播放| 裸体美女丁香五月天。| 久久99网| 丁香青青五月天| 亚洲另类在线观看| 可似看的AV| 99热超碰| 色约约视频一区二区三区四区五区| www.久久综合| 人妻肉射免费观看| 天天肏视频| 影音先锋秋秋五月婷婷| 亚洲成人在线免费| 五月丁香婷婷俺| 丁香六月欧美| 婷婷丁香五月天大香蕉| 欧美激情五月天在线观看| 精品久久99码| 大地资源色婷婷视频在线| 亚洲成人网站在线| 激情网开心网| www.99热视频| 色婷婷瘦婷婷日韩| 婷婷成人五月天一区| 9l视频自拍九色9l视频自拍九色9l社区| 日本不卡高字幕在线2019| 亚洲综合另类| 伊人五月丁香| 无码AV免费精品一区二区三区| 9999热在线免费观看| 国产精品久久久60086| 狠狠干婷婷| 日本久久9| 26uuu欧美亚洲日韩| 99热综合| 激情九月天天天天婷婷| 五月天综合影院| 八戒青柠影视剧在线观看| 久综合| 99精色| 最近中文字幕2019视频1| 亚洲AV人人操| 五月天激情四射网站| 丁香五月激情综合久久| 先锋男人99资源| 婷婷网五月天| 九九碰九九爱97| 天天舔天天摸| 1024亚洲| 久久金品黃色| 97涩婷婷| 五月草影视| 天天日色情| 99精品在| 草草女人亚洲| 婷婷深爱五月亚洲综合| 久久久婷| 26uuu.| 丁香五月自拍| 激情五月天啪啪视频| 人人摸人人搞| 久/久精品99看9| 丁香九月激情| 思思热这里只有精品视频666| 99在线69| 激情婷婷五月天。| 五月综合激情| 九九热只有这里是精品| 亚洲妇女熟BBW| 天天草天天舔| 天天激情站| 婷婷射图五月天| 97超级碰人人| 这里有精品2| 五月丁了香蕉综合| www.9797国产| 99热国产精品| 国产激情久久久| 五月丁香综合伦理片| 嫩草AV久久伊人妇女超级A| 日日操日日干| 色五月开心久久网| 夜色综合网| YJLZZJLZZ亚洲乱熟无码| 久热9| 色99亚洲| 色婷婷中文| 深爱激情婷| 综合一区二区三区| 可以直接看的av| 五月天播播综合| 欧美97超碰| 六月丁香啪啪啪| 人人操人人操919999| 午夜丁香婷婷| 天天摸日日舔狠狠添婷婷婷| 91seAV| 婷婷伊人综合中文字幕| 婷婷五月黄色激情在线| 亚洲丁香花五月丁香花| 五月婷婷激情网| 一级片sese片.COM| 色婷婷很很丝袜| 丁香六月婷婷综合| 五月六月丁香激情视频| 综合色七七| 久久五月天色婷婷| 婷婷免费成人视频| 亚洲免费电影2| 久久大香蕉| 久久这里99| 97婷婷在线| 五月天色五月| 另类激情中文| mmm1717.6dbm人人爱人人操| 综合九色| 中文字幕在线免费观看视频| 婷婷色爱| 草综合网| 日韩成人综合| 九月丁香婷婷| 综合五月天| www.狠狠操.con| 五月天激情啪啪| 国产成人片| 婷婷涩涩五月天| 亚洲综合色丁香婷婷六月| 婷婷五月丁香欧洲| 亚洲偷| 色九月| 26uuu精品国产| 天天综合色丁香| 大香蕉人人人| 天天射天天插天天干| 久久婷婷成人| 婷婷丁香五月高清| 人妻乱码久久久| 色色五月天婷婷丁香| 六月丁香色婷婷| 成人天天爽| 狠狠操之狠狠操| 色婷婷亚洲六月婷婷中文字幕| 五月天综合在线观看| 色色亚洲无码| 原琪琪色影院| 亚洲天堂碰碰婷婷| 无码AV免费精品一区二区三区| 五月色婷婷中文字幕| 国产色99| 激情婷婷另类| 婷婷欧美色| 五月天成人综合| 激情婷| 春色激情| 无码少妇高潮喷水A片免费| 欧美影院婷婷| 丁香五月婷婷基地| 99re这里只有精品视频了| 色月视频| 色之综合网| 色欲婷婷五月天| 在线观看996精品| 中文字幕久久婷九女同| 久久久宗合视频88| AV片一区在线观看| 日韩中文字幕| 九九热九九| 五月激情六月综合| 国产成人AV在线| 欧美天堂久久| 狠狠人人婷婷| 人妻精品一区二区三区| 亚洲va在线| 久久这里99| 襙逼网| 桔色成人官方网站| 色五月激情五月丁香五月婷婷啪啪综合 | 久久只这里有精品| 精品无码色| 日本无va视频| 呦呦v线| 五月综合六月丁| 狠狠操在线视频| 99性感视频| 久久机只有这里精品| 婷婷六月插屄激情| 丁香六月爱综合| 婷婷成人小说综合| 日日操天天| 婷婷五月激情天| 五月婷婷中文字幕| 天天操综合网| 97碰在线| 五月天婷婷基地| 五月婷综合网| 色色综合色| 久狠狠狠| 婷婷中文在线| 欧美性爱五月天| 精品一二三区久久AAA片| 天久综合91综合首页| 亚洲传媒在线观看| 九九中文字幕九| 武则天精品久久| 国产乱码久久| 丁香五月激情六月综合| 99热在线观看精品| 精品成人在线观看| 色五月婷婷久久| 午夜天天精品视频| www.刺激色网站www.| 99ri国产在线| 五月天亚洲最大成人| 伊人深爱综合| 操逼视频一区| 五月丁香久久| 伊人大香久久| 99ri国产在线| 97色伦另类图片小说视频 | 亚洲精品99| 亚洲av电影网站| 久久精品综合色| 久久综合激情五月天| 色五月色综合| 婷婷色在线播放| 99热国产| 婷婷五月综合免费在线| 成人在线精品| 噜噜噜噜在线| 综合色影院| 激情第四色| 久久激情综合| 五月丁香婷婷色啪| www.91在线观看| 色色丁香五月婷婷| 婷婷丁香六月天| 97五月天| 久久五月天激情婷婷| 色一情一乱一乱一区91Av| 国产高清RV综合aVa| 五月婷啪啪| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 丁香五月天天久久综合小说| 伊人玖玖网| 婷婷丁香第一页| 婷婷色片| 久久五月婷婷综合网| 99在线69| 婷婷开心激情五月激情网| 色婷婷影视| txt五月激情四射网综合俺也来了 五月天婷婷丁香人人操91 | 99色在线视频| 色五月大香蕉婷婷| 日在线V视频在线播放| 99狠狠色| 99视频日韩| 情婷婷五月天在线| 丁香五月91| 欧亚中文A V| 夜夜天天久久婷婷| 色五月婷婷中文字幕| 日日操夜夜操中国无码| 久久丁香五月综合六月激情红杏视频| 婷婷色狠狠| 熟妇人妻中文字幕无码老熟妇| 97操视频| 天天爽天天爽| 九热视频在线伦| 天天操天天操综合| 夜夜撸夜夜骑| 五月亭亭直播| www.五月天婷婷| 激情五月,激情综合网| 欧美丰满熟妇BBB久久久| 五月婷婷丁香综合| 久久999久久999久久999久久| 8050一级网| 婷婷五月天成人动漫 | BlACKEDRAW视频一区二区| 激情婷婷五月天网址| www.yw尤物| 久久婷婷五月综合激情国产| 丁香婷婷成人网| 久久九九Com| 六月丁香五月激情网| 婷婷丁香六月| 天天人人综合| 久久五月天婷婷| 婷婷五月天综合网| 日本99在线| 超级碰碰碰碰视频| 狠狠色成人影片| 野外99热| 五月婷激情| 97在线日本| 婷婷性爱五月天| 丁香五月婷婷影院| 五月天另类视频| 丁香五月婷婷少妇| 色播激情五月天| 亚洲成人中文字幕| 99热在这里只有精品| 亚洲图色五月天| 青草少妇激情| 色婷婷女优有码五月亭| 久久a热| 91人碰| 综合色影院| 人人操97| 亚洲天天操| 天天插综合在线| 欧美成人精品三区综合A片| 一个色的综合| 久久se 综合网 | 久热精彩视频98| 久久九九色| 色碰碰| 99在线观看精品视频| 日本激情ⅩXX免费视频| 激情第四色| 蜜臀嫩草| www.91在线看| 九九精品99| eeuus五月婷| 激情五月黄色| 精a品a| 激情久久肏屄视频| 人人操av| 婷婷 月 丁香| 99ri精品在线| 丁香五月社区| 激情五月天色爱| 99在线视频女女视频| 操人无码| 另类小说五月天综合网| 91精品丝袜久久久久久久久粉嫩| 超碰9| 丁香 婷婷五月| av免费在线观看0| 99精品一二三四视频| 丁香五月AV综合| 色婷婷av综合网| 琪琪色五月天| 六月丁香深深爱| 日韩在线一级| www.丁香五月| 久久一热| www,五月天com| 伊人大香蕉爱聚| 在线99热| 亚洲精品国产精品乱码不99| 日本啪啪网| 国产一级片色色| 五月天丁香成人| 丁香五月激情月| 五夜丁香| 亚洲视频一区| 99精品在线观看视频| 精品99爱免费视频在线观看| 五月婷婷七月丁香| 久久AAAA片一区二区| 影音先锋偷偷色男人站| 婷婷五月天,影院| 天天爽人人综合免费7799| 亚洲色无码| 五月天婷婷黄色视频| 一本九九色| 久久婷色| 五月婷婷丁香| 丁香五月 六月婷婷首页| 五月婷婷激情性爱| 亚洲AV成人在线观看| 丁香色五月天| 高清无码视频网址| 思思久久精品视频| 国产精品视频免费看| 91人人爱| 人人播| 99在线资源| 五月婷天天搞视频| 五月色 亚洲| 婷婷亚洲天堂| 人妻激情视频| 操97在线观看| 久久五月综合| 天堂A∨在线| 久久激情网| 色欲五月婷婷| 狠狠操天天操综合| 久久婷婷五月天激情新地址| 啪啪操操| 日噜噜色| 成人.在线日韩| 婷婷五月天影院| 亚洲不卡欧洲| 99热在线播放| 青青草原福利在线| 亚洲激情视频网| 六月丁香五月激情亚洲AV| WWW99热| 九九热婷婷| 免费看片在线观看| 在线超碰免费| 综合久久十三| 色综合久久之分久久| 色丁香五月婷婷| 这里只有精品免费视频| 五月婷婷激情久久| 国产成人AV在线播放| 激情五月丁香亭亭| 日韩在线婷婷五月天综合| 99免费视频精品| 国产一级婬片毛片| 五月 丁香 欧美| 九月婷婷综合八月丁香在线观看| 99热免费精品热久久66| www99热| 另类在线| 人妻性爱av网站| 久热这里只精品| 99婷婷| 久热久色| 久久丁香五月天| 色婷婷五月综合| 国产片天天爽夜夜爽| 亚洲激情综合| 精热在线综合网| 五月天色播网| 日本的α片xxxwww| 天天色综合色色色色色。| 电影蜘蛛女| 婷婷丁香一月| 婷婷婷久久久| 91精品综合久久婷婷九色| 黄色激情久久| 91丨九色丨熟女高潮| 婷五月天天| 五月婷婷开心色伊人| 狠狠久综合| 五月婷在线视频免费播放| 色狠狠综合入口| 九九热最新| 99精品国产热久久91色欲| 五月在线| 国产成人精品一区二三区熟女在线| 91夫妻视频| 变态另类色图| 99久久99视频| 天天色月| 婷婷五月天激情视频| 久久人妻视步| 五月丁香无码| 亚洲综合在线视频| 亚洲九九99精品视频在线播放| 激情五月天福利| 欧美在线看| 九热在线这里有精品6| 26uuu亚洲欧美| 婷婷丁香五月激情密臀av| 丁香五月综合福利视频导航| 久久综合九色综合97婷婷| 超碰免费电影| 天堂中文国产| 千人斩操逼| 丁香六月五月天| 久久xx| 亚洲V国产V欧美V久久久久久| www.ywav| 人妻精品在线| 97色色色色色色色色色色色色色| 婷婷五月天成人小说| 激情五月综合网最新| 国产午夜精品一区二区三区嫩草| 黄色成人AV在线| 婷婷丁香在线| www.夜夜.com| 久久五月视频| 182tv992tv人之初午夜免费观看| 亚洲小电影在线观看黄999| 婷婷五月成年人| 丁香五月Av| 色999亚洲人成色| 色五月中文字幕| 五月婷婷内射网| 五月丁香综合激情| 午夜不卡久久精品无码免费 | 五月丁香啪啪啪免费看| 五月六月婷婷| 九热视频| 亚洲无aV在线中文字幕 | 91seAV| 激情六月丁香综合| 五月天开心网| caop视频| 亚洲免费看片| 激情五月天电影| 欧洲色区| 99精品久久久| 婷婷五月丁香手机在线视频| 亚洲激情综合| 天天肏高清在线| 婷婷五月天激情综合网| 亚洲色五月天| 99人人精品| 狠狠干五码| 天天插天天插| 热五月婷婷| 色小说五月天| 91人人人人人| 欧美va亚洲va| 五月天丁香综合| 91日本在线免费| 五月丁花色综合网| 久久怕怕视频| 五月婷在线影院| 超碰在线观看9| 色播婷婷五月天| 性做爰1一7伦| 日韩色色网| 激情综合色网| AV成人在线播放| 五月花激情| 婷婷伊人欧美| 欧美噜一噜| 色色亚洲| 国产VA播放| 思思热视频在线观看| 在线观看亚洲视频影院| 亚洲色网络| 亚洲欧洲小视频9| 激情婷婷网| 久久91久久精品久久| 精品99爱免费视频在线观看| 五月丁香久久| 婷婷丁香射射| 色色射| 99精品自拍| 亚洲成人综合在线| 成人五月丁香社区| 色噜噜狠狠色综合网| 日韩另类在线观看| 丁香五月成人婷婷| 91视频人人做97| 99色色| 综合久久久| 久久婷婷网站| 九色91国产| 91精品久久久久久| 色综合色五月| 亚洲色五月| 丁香九月综合| 五月丁香六月婷综合成人综合| 久久久这里都是精品| 99精品视频免费观看| 激情综合五月激情XXXX| 五月婷婷综合网| 天天日,夜夜爽| 超碰免费人人肏|