跳到內容

信心路由器與本地推論引擎

智慧模型選擇,節省 80% 以上 API 費用。


每間公司都有分級的差旅制度:

  • 經濟型:國內航班、商務旅館。例行出差用。
  • 商務型:好一點的座位、好一點的飯店。重要客戶會議用。
  • 頭等艙:只有執行長見財星 500 大合作夥伴時才用。

沒人會搭頭等艙去參加內部站會。差旅審核員看的是這趟出差的重要性,然後分配適當的等級。

DuDuClaw 的信心路由器就是 LLM 查詢的差旅審核員,評估每個查詢的複雜度,然後將它路由到能勝任的最便宜模型。


層級 處理者 使用時機 成本
LocalFast 小型本地模型(例如 7B 參數) 簡單查詢、問候、事實查找 免費(本地運算)
LocalStrong 較大本地模型(例如 13B+ 參數) 中等複雜度、摘要、翻譯 免費(本地運算)
CloudAPI Claude API 複雜推理、創意任務、多步驟分析 按 token 計費

查詢到達時,路由器用輕量啟發式規則計算信心分數:

查詢到達
|
v
+-----------------------+
| 計算 token 數量 | <-- 較短的查詢通常較簡單
| 偵測複雜度關鍵字 | <-- 「分析」、「比較」、「設計」
| | 等關鍵字暗示較高複雜度
| 估算 CJK 比例 | <-- 中日韓文字有不同的
| | token 密度(約 1.5 字元/token
| | vs 英文約 4 字元/token)
+-----------------------+
|
v
信心分數 (0.0 - 1.0)
|
+---> > 高閾值 --> LocalFast
|
+---> > 低閾值 --> LocalStrong
|
+---> <= 低閾值 --> CloudAPI

評分完全是規則式的:不需要 LLM 呼叫來決定使用哪個 LLM。閾值和關鍵字列表皆可設定。

對 CJK(中日韓)使用者來說,這是個微妙但重要的細節。英文文字平均約 4 字元/token,但 CJK 文字平均約 1.5 字元/token。一則 100 字元的中文訊息消耗大約 67 個 token,而 100 字元的英文訊息只消耗約 25 個。

路由器在估算查詢複雜度時會考慮這個差異。若缺乏 CJK 感知,系統會系統性地低估中文查詢的複雜度,將它們路由到能力不足的模型。


路由器背後是一個透過單一介面支援多個後端的統一推論引擎:

llama.cpp — C++ 主力引擎。支援跨平台硬體加速:

  • Apple Metal(macOS)
  • NVIDIA CUDA(Linux/Windows)
  • Vulkan(跨平台 GPU)
  • CPU 降級(任何平台)

mistral.rs — Rust 原生引擎,具備進階功能:

  • ISQ(原位量化):無需預處理即可即時量化模型
  • PagedAttention:長上下文的高效記憶體管理
  • Speculative Decoding:用小模型草擬 token,由主模型驗證

OpenAI 相容 HTTP — 連接任何使用 OpenAI chat completions API 的伺服器:

  • Exo 分散式叢集
  • llamafile 單檔案伺服器
  • vLLM、SGLang 等推論框架

MLX Bridge — 給 Apple Silicon 使用者的 Python 子行程,呼叫 mlx_lm

  • 不需 API 呼叫的本地反思
  • 支援 LoRA adapter,可微調 Agent 人格
  • 反思在本地跑,省下 API token

系統不會只選擇一個後端就固定不動。InferenceManager 維護一個帶自動容錯的優先鏈:

優先 1:Exo P2P 叢集(多機器匯集 GPU 記憶體——可執行 235B+ 模型)
|
v (不可用或不健康?)
優先 2:llamafile(單檔案零安裝)
|
v (不可用?)
優先 3:Direct Backend(llama.cpp 或 mistral.rs 程序內載入)
|
v (無本地 GPU / 模型太大?)
優先 4:OpenAI 相容伺服器(外部 vLLM、SGLang 等)
|
v (無外部伺服器可用?)
優先 5:Cloud API(Claude——最後防線,永遠可用)

每個後端有定期健康檢查。當後端變得不健康(當機、記憶體不足、回傳錯誤),管理器自動降級到下一層。後端恢復時,自動升回。


llamafile 值得特別介紹。這是 Mozilla 的專案,將 LLM 模型和推論引擎打包成一個可執行檔。DuDuClaw 以子程序方式管理 llamafile:

使用者請求本地推論
|
v
llamafile 正在執行嗎?
|
+--+--+
| |
是 否
| |
| v
| 啟動 llamafile 子程序
| 等待健康檢查(就緒輪詢)
| |
v v
將查詢路由到 localhost:{port}
|
v
回傳回應

管理器處理完整生命週期:啟動、健康監控、停止。llamafile 伺服器在 localhost 上暴露 OpenAI 相容 API,因此路由器像對待其他後端一樣對待它。

結果:跨 macOS、Linux、Windows、FreeBSD 等平台的可攜式零安裝本地推論。


最直接的好處:不需要 Claude 完整推理能力的查詢不會被送到 Claude。「東京現在幾點?」這類查詢在本地處理時成本為零。每日數千次查詢累積下來,節省 80% 以上。

本地模型的回應時間是毫秒級,而非秒級。對簡單查詢,使用者幾乎即時獲得回應,無需等待雲端往返。

本地處理的查詢永遠不會離開機器。對敏感資料或受法規限制的環境,這是關鍵優勢。

如果雲端 API 當機、限速或緩慢,本地模型讓系統持續運作。多層級容錯確保永遠有模型可用來處理查詢。


推論引擎完全可透過 MCP 工具管理:

工具 用途
model_list 列出 ~/.duduclaw/models/ 底下的 GGUF 檔案
model_load / model_unload 載入/卸載模型生命週期
inference_status 目前載入的模型、硬體、記憶體用量、後端類型
hardware_info GPU 自動偵測、VRAM、RAM、建議設定
route_query 預覽路由決策而不實際生成
inference_mode 目前模式(exo-cluster / llamafile / direct / cloud-only)
model_search 依 RAM 條件搜尋 HuggingFace + 精選模型庫
model_download 下載到 ~/.duduclaw/models/,支援斷點續傳與 mirror 容錯
model_recommend 依硬體條件建議適合的模型

  • 帳號輪替:本地推論處理的查詢不消耗任何 API 帳號,延長配額使用期限。
  • CostTelemetry:追蹤每個查詢由哪個層級處理,使營運人員能調整閾值以達最佳成本/品質平衡。快取效率低於 30% 時,自適應路由會自動偏向本地。
  • 演化引擎:路由器的決策回饋到預測引擎的準確度指標。
  • Multi-Runtime:信心路由器位在 runtime 層之下;它決定模型,而 runtime 決定 CLI 後端。

不是每個問題都需要最昂貴的答案。信心路由器確保每個查詢獲得能勝任的最便宜模型。多後端引擎則確保永遠有模型可用,從筆電 GPU 到分散式叢集到雲端。