裝置上的本地模型
下載一個模型、按下啟用,拔掉網路線之後 AI 還是會回答。
這一篇談什麼
Section titled “這一篇談什麼”#45 是開放式的 Hugging Face 市集:任何 repo、任何量化版本,想裝什麼就裝什麼。這一篇談的是 DuDuClaw OS 裝置開箱 就有的那條窄路:一份查證過的短清單、一鍵下載、再一鍵讓下載好的模型上線。
裝置映像帶了推理引擎,沒帶權重。權重動輒好幾 GB 又會過期,所以做成需要 時才下載,不凍進映像。
六個模型,逐一查證
Section titled “六個模型,逐一查證”清單裡每一列的 repo id、檔名、位元組大小、以及匿名下載是否可行,都在 2026-09-05 對 Hugging Face API 實際查過。沒有一項靠猜,其中兩項查證直接 改變了清單內容:
- Qwen 官方的
Qwen3-1.7B-GGUF完全沒有 Q4_K_M,只有 Q8_0,所以 1.7B 這一列改用unsloth的版本。 - Google 的 Gemma 3 GGUF repo 要人工審核才給檔案,一鍵下載走不通,改用
ggml-org沒有門禁的建置版。
| 模型 | 檔案大小 | 記憶體需求 | 適合 |
|---|---|---|---|
| Qwen3 1.7B | 1.0 GB | 約 2.5 GB | 還撐得住對話的最小選項,中文不錯 |
| Llama 3.2 3B | 1.9 GB | 約 3.4 GB | 小機器上的英文對話 |
| Qwen3 4B | 2.3 GB | 約 3.9 GB | 均衡的預設值 |
| Gemma 3 4B | 2.3 GB | 約 3.9 GB | 多語對話 |
| Qwen2.5-Coder 7B | 4.4 GB | 約 5.9 GB | 讀寫程式碼 |
| Qwen3 8B | 4.7 GB | 約 6.2 GB | 六個裡面最強的 |
六個都是 Q4_K_M。記憶體那一欄是檔案大小加上上下文與引擎工作緩衝,代表 它回答時真正要吃掉多少,跟下載大小不是同一個數字。
本地模型的 context 視窗也比雲端模型小得多——appliance 預設提供 8192 token。agent 的工具迴圈走本地引擎時,gateway 會先向 llama.cpp 問這個視窗(/props),再把請求塞進去:工具依註冊順序裝到預算的 45%(goal loop 依賴的 tasks_* 工具永遠保留),系統提示裝不下就從尾端截短並附可見標記,另保留 1024 token 給回答。沒有這層之前,完整的 agent 提示加上全部 MCP 工具(約 33k token)每一輪都會被伺服器打回。
打開管理 → 本地模型,內建面板就在市集上方。
+---------------------------+ | 挑一個模型 | 綠 / 黃 / 紅 相容燈, | | 依「這台機器現在」算出來 +------------+--------------+ | v +---------------------------+ | 下載 | 背景執行、可續傳, | | 進度直接顯示在卡片上 +------------+--------------+ | v +---------------------------+ | 設為本地模型並啟動 | 存設定、啟動引擎, | | 問答通了橫幅就轉綠 +---------------------------+相容燈拿模型的記憶體需求跟這台機器目前的可用量比。綠色代表跑得舒服, 黃色代表塞得下但沒什麼餘裕,紅色代表裝不下。
橫幅在說什麼
Section titled “橫幅在說什麼”狀態列來自即時探測,不看設定檔寫了什麼。「本地模型回答中」代表引擎剛剛 真的回了一個請求,並報出自己載入的權重名稱。引擎掛了,下一次輪詢橫幅就 會誠實反映。
換模型一樣是兩下:下載另一個,按「設為本地模型並啟動」,引擎會對新檔案 重啟。舊檔案留在硬碟上,要清就從已安裝清單刪掉。
速度。 回答由這台機器自己的處理器與內顯運算。小的本地模型比雲端明顯 慢,慢多少完全看你的硬體。儀表板刻意不顯示 tokens/秒,因為沒有人在你的 機器上實測過。
能力。 4B 模型取代不了雲端旗艦模型的硬推理、長步驟工作或程式碼審查。 它擅長的是佔掉一天大半時間的那些短而重複的回合:分類這則、摘要那段、 翻譯這句、回一個例行問題。
不會憑空生出模型。 還沒下載權重的裝置就會照實說。本地推理會在送出 請求之前直接拒絕並回報「尚未安裝本地模型」,而不是丟出一個注定失敗的 連線錯誤讓人無從處理。
雲端與本地怎麼分工
Section titled “雲端與本地怎麼分工”裝置預設維持 inference_mode = "hybrid"。設定好的雲端 runtime 照樣處理
它比較擅長的工作,本地模型墊在下面,不擋在前面。想更依賴本地模型有兩條
路:
- 單一 agent:在該 agent 的
agent.toml的[model.local]底下設prefer_local = true。簡單的回合先走本地,本地失敗再退回雲端。 - 全域:在
config.toml設inference_mode = "local"。所有請求都送本地 模型,只有信心路由判定該升級時才會碰到雲端。
完全沒設定雲端帳號時,本地模型就是唯一的路——這正是拔掉網路的裝置仍然 可用的原因。
決定哪些請求值得升級到雲端的信心路由,見 #03。 想找這六個以外的模型,見 #45。
- 下載好的權重:裝置自己的模型目錄,跟市集裝的東西放在一起。
- 目前選用的模型:按下「設為本地模型並啟動」時寫入,狀態面板讀回來顯示。
兩者都在裝置的資料區,系統更新之後仍然存在。