家裡一台桌機、一台 Mac mini、一台 Raspberry Pi 都跑得動本機模型,你想把它們接成一個 AI 幫手。這時最容易混淆的是:三台模型共用一個網址,和一件工作拆給三台完成,其實是兩個不同問題。這篇「三台本機 AI 協作」教學,帶你分開建置、逐層驗收。
本文寫給已經能在至少一台裝置啟動本機模型、但第一次碰 Gateway 與 Agent 派工的讀者。你會拿到一張三機拓樸、一份 LiteLLM 設定範本、一個 Planner/Worker 工作追蹤,以及斷線時的驗收方法;範例中的機型、模型與私網位址請換成自己的。
先說結論:三台本機 AI 協作有兩層
一句話記住:Gateway 決定「這次模型呼叫送去哪台」;Harness 決定「整件任務拆成哪些工作、誰做、怎樣驗收」。前者像總機,把一通電話接到指定分機;後者像專案負責人,先拆工作、派人、檢查結果,再決定要不要重做。
- 只想讓不同 App 共用一個 OpenAI 相容入口:先做 Gateway。
- 想讓桌機規劃、Mac 摘要、Pi 分類:另加 Planner/Worker 流程。
- 想要斷線仍能交付:同時設計模型呼叫的回退,以及任務層的重新指派與驗收。
2026 年 9 月的一則 r/LocalLLaMA 三機提問 把痛點說得很具體,但它只是一個案例,不能代表普遍需求。以下方法以 LiteLLM 官方 Gateway 文件、LiteLLM 的 Ollama 接法 與 Ollama 網路設定 為準。
先畫三台機器:能力、位址、故障邊界
別先問哪個模型「最聰明」。先為每台裝置寫一張能力卡:它能穩定處理的任務、實際模型名稱、私網位址、誰會在它斷線時接手。以下是示意配置,不是硬體效能測量,也不是對任何模型能力的評分。
- 桌機 A:
192.168.1.10:11434;規劃與最後整合。先用你已驗收的較強模型。 - Mac mini B:
192.168.1.11:11434;長文摘錄與摘要。保留原文段落位置,讓桌機核對。 - Raspberry Pi C:
192.168.1.12:11434;有限標籤分類。先用有標準答案的小樣本檢查。 - Gateway:放在能連到三台裝置的電腦,例子為桌機 A 的
127.0.0.1:4000。它本身也形成一個故障點。
先從 Gateway 主機逐一讀 http://192.168.1.10:11434/api/tags、B 與 C 的同一路徑,確認網路可達、模型名稱確實存在。Ollama 官方說預設綁在 127.0.0.1:11434;跨機連線要設定 OLLAMA_HOST,並按 macOS 或 Linux 的服務啟動方式重啟。只在可信私網開放對應連接埠,別把未加保護的模型服務直接暴露到公網。

第一步:用 LiteLLM 把三台本機 AI 接成單一 API
先在各機跑好 Ollama,確認 ollama list 顯示你實際下載的模型名稱。LiteLLM 使用 model_name 當對外別名,litellm_params.model 指向後端模型。官方 Ollama provider 文件 建議聊天請求採 ollama_chat/ 前綴,並用 api_base 指向服務位址。
在 Gateway 主機把下面內容存成 litellm_config.yaml。YOUR_DESKTOP_MODEL 等三個值必須換成各機 ollama list 所見的完整名稱;私網 IP 也要換成自己的。
model_list:
- model_name: desktop
litellm_params:
model: ollama_chat/YOUR_DESKTOP_MODEL
api_base: http://192.168.1.10:11434
- model_name: mac
litellm_params:
model: ollama_chat/YOUR_MAC_MODEL
api_base: http://192.168.1.11:11434
- model_name: pi
litellm_params:
model: ollama_chat/YOUR_PI_MODEL
api_base: http://192.168.1.12:11434
依 LiteLLM 官方 CLI quick start,可用 uv tool install 'litellm[proxy]' 安裝後執行 litellm --config litellm_config.yaml。先從 Gateway 主機用 127.0.0.1:4000 發送測試請求,並用主機防火牆限制外部連入;要讓其他 App 從網路連進來,再依 官方 Gateway quickstart 配置認證與部署。
用同一個網址連續送三次請求,只換 model 為 desktop、mac、pi;對外 API 形狀相同,目標機器不同。
curl http://127.0.0.1:4000/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"mac","messages":[{"role":"user","content":"請把這句話縮成十字內:三台電腦各自跑本機模型。"}]}'
如果你設定了 LiteLLM master key,請依官方文件加上 Authorization: Bearer <你的 key>。先逐台確認返回的是合法回應,再進入派工;三個 model alias 都可呼叫,只證明路由通了,還不代表任務能協作。
第二步:讓 Planner/Worker 真正派工
用一個「整理三份會議紀錄」的任務來看差別。桌機上的 Planner 先寫出任務清單:Mac 對每份紀錄各產生一段摘要並標明段落;Pi 只把每份紀錄分成「決策/待辦/背景」;桌機最後拿原文核對並整合。每個 Worker 回傳的是工作成果,不是直接把下一步權力交給另一台模型。
把任務拆成 5 個有收據的動作
- ① 建立任務:記下任務 ID、輸入檔案雜湊、預期輸出與截止時間。原文仍保存在受控工作目錄。
- ② 路由呼叫:Planner 對 Gateway 的
mac別名送摘要請求,對pi送分類請求。Gateway 只處理這些獨立模型呼叫。 - ③ Worker 回報:每個結果附任務 ID、模型別名、開始/結束時間、成功或錯誤、引用的原文片段位置。
- ④ 人工可驗收:桌機對照原文,檢查摘要有沒有漏決策、分類是否符合事先寫好的標準答案。錯誤要能回到原片段。
- ⑤ 完成或重派:只有檢查通過才標成完成。Mac 失聯時,Planner 可以把摘要改派桌機;Pi 分類失敗則先保留「待人工判定」。
這是流程偽程式碼,刻意省略了佇列持久化、併發控制、逾時後重複執行防護與檔案權限;要落地時應在每個 Worker 呼叫前後補齊這些控制。Agent Harness 實作篇把工作狀態與停止條件拆得更細。
job = save_job(input_hash, acceptance_rules)
summary = call_gateway(model="mac", task=job.summary_task)
labels = call_gateway(model="pi", task=job.label_task)
if summary.error: summary = call_gateway(model="desktop", task=job.summary_task)
if labels.error: labels = mark_for_human_review(job)
result = verify_against_original(summary, labels, acceptance_rules)
save_receipt(job.id, result)
特別留意 verify_against_original:它是應用程式與人的驗收步驟,不是多呼叫一次模型就能自動保證正確。若任務涉及改檔、送信或交易,還要另設權限與人工核准。
第三步:分開驗證路由回退與任務接力
LiteLLM 官方 fallback 文件 區分模型群組內的 retry,與失敗後轉到另一模型群組的 fallback;請求也可附 fallbacks 清單。你可先在低風險測試輸入中,請求 mac 並指定 desktop 作備援,關閉 Mac 服務後觀察回應與 Gateway 紀錄。
但回退成功,只代表某次呼叫拿到答案。如果 Mac 正在替整份文件分段摘要,原來的工作切片、已完成段落與接受標準仍由 Harness 保存;它應決定重派哪一段、如何避免重複、是否需要重新驗收。小模型也不能只因 API 相容就接手原先更難的任務。
- 測路由:三個別名逐一成功;指定一台關閉後,記錄 HTTP 狀態、實際回退目標與總耗時。
- 測派工:讓 Mac 在第二份摘要前失聯;檢查只重派未完成工作,最後能說明每段由誰完成。
- 測品質:準備有人工標註答案的少量固定樣本,逐項核對摘要遺漏和 Pi 的錯誤分類。
- 測延遲:同一批輸入分別跑單機與派工流程,各自記錄排隊、模型生成、網路與重試時間;不要只比一個總秒數。
本文沒有三台機器的第一手速度或正確率數值;讀者應保留自己的設定、版本、樣本與收據後再比較。LLM 故障演練教你把 5xx、429 與串流中斷放進同一張驗收表。
怎麼選:你需要 Gateway、Harness,還是兩者?
- 只想統一入口:用 LiteLLM 的模型別名連三台,先驗收單次請求。
- 想讓多台各做一段工作:要一個保存任務、結果與驗收規則的 Harness;Gateway 只是它呼叫模型的入口。
- 想在一台失聯後仍完成:同時設計請求層 fallback 與任務層重新指派,並用故障注入驗收。
這也解釋了為什麼「三台都能回答」與「三台一起把事做對」距離很遠。Agent Harness 是什麼從單一 Agent 的循環說明執行層;LiteLM 路由教學則對照應用內 library 與完整 Gateway 的責任邊界。
常見的 4 個坑
- 把 0.0.0.0 當成安全設定:它會讓服務綁到網路介面;先縮在可信私網,限制能連入的主機,再設 Gateway 認證。
- 把別名當成任務角色:
model_name: mac只是一個路由名稱。要有工作拆解、狀態與驗收,才談得上派工。 - 只看回答內容不看路徑:回退後應記錄實際模型、錯誤、耗時與輸入版本,不然很難分析品質漂移。
- 讓小模型硬接難題:先用固定任務與標準答案檢驗。失敗時保留待人工判定,也是一種正確系統行為。
FAQ:三台本機 AI 協作的 8 個問題
LiteLLM 會自動把一個任務拆成三份嗎?
不會由上述 Gateway 設定做到。它把模型呼叫導向對應後端;任務拆分要在 Harness 裡寫清楚。
一定要三台機器嗎?
不用。一台機器開多個模型別名也能先練路由與派工流程;跨機才多了網路故障邊界。
三台平行跑一定比較快嗎?
不一定。最慢工作、網路、排隊、重試與整合驗收都影響完成時間。
Pi 的小模型能當分類 Worker 嗎?
先驗收再決定。拿固定標籤樣本測錯誤分類,達不到接受標準就保留人工流程。
模型別名和實際模型名稱一樣嗎?
不一樣。model_name 是 Gateway 對外名稱;litellm_params.model 是指向後端的模型標識。
Mac 斷線時 fallback 和重派有何不同?
fallback 補的是一次請求。重新指派還要判斷整件工作有哪些片段完成、哪些要重試。
可以把 Ollama 直接開在網際網路嗎?
先別這樣部署。跨機測試只需要受控私網;對外服務須另設認證、網路隔離與監控。
怎樣知道派工真的改善了系統?
拿同一批標準答案比較。同時記錄完成時間、正確率、失敗恢復與人工介入量。
給新手的 3 個重點
- Gateway 是「這通電話接哪台」;Harness 是「整件工作誰做、怎樣交付」。
- 先逐台驗收模型呼叫,再加任務狀態、收據與故障注入。
- 比較派工價值時,把品質與恢復能力和延遲一起看。
接著閱讀
左右滑動查看更多推薦
結語:先接通,再派工,最後故意斷一次線
回到開頭那句話:Gateway 管一次呼叫的去向,Harness 管整件工作的拆分與驗收。今天先畫出你家三台裝置的能力卡,讓同一個 Gateway URL 逐一叫到三個模型別名;明天再拿一份可人工核對的小文件做 Planner/Worker 練習,最後關掉其中一台,確認收據能說清楚系統發生了什麼。想繼續系統學習,可從 AI 主題文章 與 AlphaLab 課程 挑下一步。
