你在本機聊天視窗慢慢打完一題,按下 Enter,電腦才開始忙。這篇 MAFDET 教學要解決的問題是:既然你打字時電腦已經看得到半句話,能不能先做一部分工作,少等一點?
本文專為第一次接觸本機 LLM 的讀者寫。LLM 是大型語言模型,可先把它當成會接續文字的助理;你不用先懂程式設計。我們從 Windows 安裝、選模型、看狀態列開始,再教你分辨「提前讀取」與「提前推理」,最後留下一份能自己核對的測量工作單。
以下核對至 2026 年 10 月 25 日,固定專案提交 0e4ac56。本文依官方程式、模型文件與公開測量資料整理;本站未在 Windows/NVIDIA 上執行 MAFDET。作者的速度數字會清楚歸屬作者,操作練習也會與已觀察到的結果分開。
先說結論:少等=把工作搬到打字期間,不等於少算
少等=把工作搬到打字期間,不等於少算。像餐廳店員聽你點餐,先拿盤子、先備料;你最後改口,備好的盤子可能留得住,切好的食材卻可能用錯。MAFDET 的兩條路,剛好對應這兩種情況。
- Read-ahead「先讀」:先算目前確定的輸入,修改時找回共同開頭,重算後面。重點是快取對齊。
- Think-ahead「先想」:模型先對未完成的句子寫推理筆記,修改後再接著想。重點是最後答案是否仍符合新題目。
- 先看送出後第一個答案字的等待,再看整段互動時間與總工作量;只報一個變快的秒數,資訊不夠。
一、MAFDET 教學:先認識三個零件
MAFDET 是建立在 llama.cpp 上的本機聊天應用。llama.cpp 是執行模型的引擎;GGUF 是它常用的模型檔案格式;MAFDET 負責介面、模型選擇與打字期間的排程。下載的是工具與模型兩件東西,裝好介面後還要準備模型檔。
① 「讀題」Prefill:把你目前的提示轉成模型可用的中間結果。② 「暫存筆記」KV cache:保留先前算過的注意力資料,像讀書時夾好的書籤。③ 「逐字寫答案」Decode:一次接續產生下一個 token;token 是文字切成的小片段,不必然等於一個中文字。
最重要的界線是:同一段前綴能重用,不代表改完的整句仍是同一題。例如先打「每本 12 元」,後來改成「每本 20 元」,程式應保留修改處之前的共同部分,重算後面。這與 長對話前綴快取的概念相接,但本篇處理的是你尚未送出的草稿。

同時接收輸入與推理也是研究方向:LiveMind研究未完成輸入的推論,Asynchronous Reasoning研究非同步接收、思考與輸出。它們提供理解問題的背景,各自的模型、任務與方法不同,論文成績不能直接當成 MAFDET 的效能。
二、MAFDET 教學上手:五步先讓應用跑通
①「先查工作桌」:確認平台與容量
官方 需求說明以 Windows 為已測目標,NVIDIA 路徑的參考機是 RTX 2060;也提供 CPU 路徑。Python 需要 3.10 以上,作者測試 3.12;CPU 或模型超出顯示記憶體時建議 16 GB RAM。RAM 是主記憶體,VRAM 是顯示卡記憶體,兩者不能混算成一個可直接裝模型的容量。
先在 PowerShell 輸入 py --version,記下 Windows 版本、CPU、RAM、顯卡與可用 VRAM,再看模型下載大小。官方目前把 Linux 標為未測,macOS Metal 與 AMD 放在路線圖;這篇不把那些路徑寫成已驗證安裝流程。只有 4 GB 顯卡時,先挑能容納的小模型或 CPU 路徑,不能用作者那張 6 GB 卡的成績替自己的機器背書。
②「取回工具箱」:固定版本再啟動
到 官方 GitHub下載 ZIP 並解壓縮;先讀 start_mafdet.bat 與 pyproject.toml,再雙擊啟動檔。它會建立專案內的 Python 環境並安裝依賴,後續引導下載執行引擎與模型。首次下載要計入準備時間,不要混進暖機後的聊天速度。
如果已裝 Git、想保留與本文相同版本,依序執行 git clone https://github.com/TheLastOxygen/mafdet.git、cd mafdet、git checkout 0e4ac566cb655c6db25c7d78ccf49867f7cbc506,再開 .\start_mafdet.bat。固定提交是為了讓操作與資料對得上;日後升級時,另記新提交,不要把兩版結果接成同一組。
啟動後選視窗版;偏好終端機也可選 TUI(文字介面)。終端機安裝路線則是建立虛擬環境後執行 pip install -e .,再輸入 mafdet。遇到安全軟體攔截或下載來源與官方專案不同,先查原因,不用關閉系統保護來換取啟動成功。
③「挑同一顆大腦」:固定模型與量化
進入 Models,選一個能負擔的 Qwen3 模型,再記下完整檔名、量化、Context 與裝置。量化像把數字用較省空間的精度儲存;同為 Qwen3-4B,Q4 與 Q8 仍是不同條件。Context 是一次能容納的文字額度,也會占記憶體。先完成一個小模型的聊天,再考慮較大的版本。

目錄上的估計與你的實際測量要分開。官方提供 Measure 讓已下載模型取得本機數值;先確認模型檔名一致,再讀估計或測量標記。Qwen3 官方說明也把 thinking 與 non-thinking 分成不同模式;別把換模式後的更快回答,全算成排程帶來的效果。
④「看見備料」:觀察草稿狀態與答案
進入 Chat,慢慢輸入「小明有 100 元,買了三本每本 12 元的筆記本,還剩多少?」送出前先看狀態列是否顯示讀取或提前推理;送出後展開推理,再核對答案 64。這題是自製練習,標準答案由 100 − 3 × 12 = 64 算出,不是跑分結果。

接著新開對話,把 12 改成 20,答案應變成 40;再試最後補上「不要算餘額,只回答總花費」,應回答 60。先寫下預期答案,再輸入完整修改過程。你的檢查目標是「最後題目有沒有被遵守」,不是推理區看起來忙不忙。
⑤「知道怎麼收回」:分清關閉推理與關閉提前運算
在 Settings → Reasoning 關閉 Reason while I type,會走 不推理、直接回答的模式;官方設定文字有明說這個效果。若也不想在停頓時先寫答案,把 Answer written ahead 設為 0。這兩步仍不能推論「所有提前讀取已停用」。
改設定後等模型重新載入完成,另開對話再試同一題。這是回到較單純工作流的實用操作,卻不是保持推理能力不變的科學對照。--no-think 同樣會改推理模式;--think-ahead 0 在這版也不能當成完全關閉開關,程式允許停頓時繼續推理。
三、先查快取,再查答案:內建工具各管什麼?
安裝環境啟用後,先跑 mafdet doctor 查看硬體、引擎與模型,再看 mafdet judge --help。以下指令明確選用 Qwen3-4B 的 Q4_K_M 檔;只有已確認該模型能負擔時才執行。若先前選了其他模型,請把兩條指令的 --gguf 值一起換成同一份已下載模型的完整路徑。要走 llama.cpp 測量路徑,明確加 --backend llama;這版 CLI的測量命令預設 backend 是 hf,與桌面聊天預設不同。省略這個選項,可能走到另一套依賴。
模型已備妥時,可執行 mafdet judge --backend llama --gguf Qwen/Qwen3-4B-GGUF:Qwen3-4B-Q4_K_M.gguf --trials 20 --seed 0。它會對隨機刪字、插字、貼上等狀態做增量快取與從頭計算的比較。要留存輸出,PowerShell 可加 2>&1 | Tee-Object -FilePath judge.txt。看到 ERROR,就先保留模型、版本與完整紀錄,停止把該配置當成已通過。
0 errors 不是整份答案品質證書。judge 原始碼還分別報告快取重用差異與 greedy continuation(每次選最高分 token 的接續)差異;量化運算的分塊與捨入也可能造成數值差異。更重要的是,這份測試建立的是不推理模板,不能替保留舊推理筆記的 think-ahead 保證正確率。
要看提前讀取的時間,可執行 mafdet hunt --backend llama --gguf Qwen/Qwen3-4B-GGUF:Qwen3-4B-Q4_K_M.gguf --scenario clean messy paste --seed 0 --out results-mafdet。clean 是順打,messy 加入修改,paste 是貼文件再打問題。它把真實 prefill 耗時放到模擬打字時間線,不是把每個按鍵按實際時間重播的真人操作測試。CSV 與 judge 文字檔分開保存。
四、真的比較快嗎?先把三本帳分開
第一本是送出後等待:從 Enter 到第一個非推理答案字。推理區先吐出文字,不代表讀者已拿到答案。第二本是整段互動:從第一個按鍵到答案完成,包含打字時間;模型首次載入另記。第三本是總工作量:Enter 前後的運算、被修改丟棄的內容與重算都要記。
可以用螢幕錄影標出第一個按鍵、Enter、第一個答案字與答案完成四個時間點。若要比較電力,另用同一個能量量測工具記整段焦耳數;只有 GPU 使用率或 token 數,不能直接換算成省電。這份工作單供你自行測量,本文不填入本站未執行的數值。
作者公開了 逐題結果與 產生資料的腳本。固定提交中的 Qwen3-4B 資料,兩種設定各有 24 題;我們重新加總作者記錄,得到圖中的平均等待。這是資料重算,沒有重新執行模型。作者條件包括 RTX 2060、Q4_K_M、義大利文數學題與有停頓的打字過程。

數據值得追,但它回答的是這組題目與設定的等待。腳本以答案末段是否含預期數字判定正確,並非逐步審閱推理或全面檢查指令遵循;而「no ahead」仍可能先做讀取,因此這組數字也不能改寫成「完全沒有任何提前運算」對上「全部開啟」。
公平設計可以分 A「送出後才讀與想」、B「只提前讀,送出後才想」、C「提前讀與想」三組。但要固定同一模型、量化、提示、推理模式、輸出上限、暖機與打字事件。這版現成開關會改變多項行為,不能只點三次設定就宣稱已隔離所有因素;若未建立能控制這些條件的測量程式,先做上面內建工具與逐題核對即可。
五、四種輸入練習:專門找提前筆記的破綻
- 順打:100 元、三本、每本 12 元,問餘額;預期 64。先確認模型本身能答對。
- 刪改金額:打出 12 後停一下,再改成 20,問餘額;預期 40。保留修改時間與最後全文。
- 最後改問題:沿用每本 20 元,最後補「不要算餘額,只回答總花費」;預期 60,檢查舊筆記是否把任務帶回餘額。
- 改數量與貼上:先打三本再改成兩本,每本 20 元,問餘額;預期 60。另做一次貼上相同全文,觀察提前運算機會改變後的等待。
每題新開對話,保存最終全文、修改順序、停頓時間、畫面、答案與失敗項目;相同最終文字但不同打字過程,也值得分開比較。重複多次、輪換設定順序,再看中位數、較慢案例與答對數。不要只留下最快的那次,也不要為了看見加速刻意拉長每次停頓。
這與 Speculative Decoding不同:後者主要在生成階段提出候選再驗證;MAFDET 這裡先動的是送出前的工作時間。看跑分時可搭配 本機 LLM 測量評分卡,把讀取、答案延遲、生成與品質分帳,才知道你真正改善哪一段。
常見問題:八個先講答案的判讀
1. 軟體免費,就代表運算沒有成本?
不是。專案採 Apache-2.0;模型仍要占儲存、記憶體、電力與時間。先查模型本身的授權與下載大小,再決定要裝哪個檔案。
2. 4 GB 顯卡可以照抄作者成績?
不能推定。先依模型目錄的放置估計選小模型,再做本機 Measure;作者 6 GB 卡的速度不是你的硬體測量。
3. Read-ahead 可以保證每個字都一樣?
要限定條件。共同前綴同步是設計目標,量化數值與接續差異要看 judge 的完整輸出;別把快取測試擴張成所有生成設定的逐字保證。
4. Think-ahead 改完題目就一定答對?
不一定。筆記來自中途版本,最後題目才是答案本。用改金額、改數量與補否定句檢查,才知道自己的任務是否承受得住。
5. 關掉 Reason while I type 就是公平基準?
不是。它會切到不推理模式;變快可能同時來自較少推理。記錄這項差異,不要把它包裝成只改排程的對照。
6. hunt 是完整 think-ahead 正確率測試?
不是。它主要測增量 prefill 的模擬打字時間線;推理筆記的答案品質,需要有標準答案的另一組題目。
7. 能直接接進我現有的 Agent API 嗎?
先查介面契約。這版官方展示桌面/終端機工作流;程式雖有供自身視窗使用的本機 API,不能據此推定它是可直接替換任意聊天後端的公開整合介面。想接系統,先讀 ChatService並核對草稿事件、送出與快取生命週期。
8. 哪些人值得先試?
願意在本機聊天、輸入較長且有自然停頓、能自己核對答案的人。若多半貼上短題就立刻送出,提前工作的時間較少;先記錄自己的使用方式,再決定是否保留。
給新手的三個重點
- 先跑通一個能容納的模型,把模型、量化、裝置與版本記完整。
- 先用 judge 查快取,再用已知答案查修改後的行為;兩張考卷分開過。
- 看 Enter 後等待,也看全程時間與總工作量;讓操作習慣決定功能值不值得開。
接著閱讀
左右滑動查看更多推薦
下一步:先改一個數字,看它是否真的聽見
回到那題 100 元的練習:先確認 64,再把每本價格改成 20,確認 40,最後把問題改成總花費,確認 60。少等=把工作搬到打字期間,不等於少算;更不等於改題後仍答對。先拿到自己的完整紀錄,再決定要不要開提前推理。想把這些判讀連到更多日常工具,可從 AI 文章總覽接著讀,或到 AlphaLab 課程安排下一段學習。
