這篇文章在講什麼?簡單來說,黃醫師在開發 ACHEOFF 醫療設備軟體時,遇到了一個問題:AI 輔助工具要花錢,但免費額度用完就沒了。於是我參考了網路上的方法——讓 AI 自動在「免費」和「花錢」之間切換,就像手機訊號不好時會自動切換網路一樣。

🎯 黃醫師遇到什麼問題?

在開發 ACHEOFF 醫療設備軟體時,需要 AI 幫忙寫程式碼。一開始使用 MiniMax M2.5(很強的 AI 模型),但免費額度用完後就不能用了。

大多數人的選擇:

付費繼續使用(但金額會累積) 改用免費但較弱的 AI(但速度慢、能力有限)

不想多花錢的黃醫師選擇第三條路:兩個都要!

🛠️ 硬體設備

配備 規格

電腦 Mac Mini M4(2024 年版本)

記憶體 16GB 統一記憶體

系統 macOS 15+

一台普通的 Mac Mini,不是特別貴的那種。

💡 核心概念:「本地優先,雲端補位」

這句話聽起來很專業,但其實概念很簡單:

想像你在開車出遊:

油箱滿的時候(雲端額度夠)→ 開快一點,用更強的 AI 油快用完的時候(雲端額度不足)→ 切換到省油模式,用本地端的 AI

本地端 AI 就像「自行車」,隨時可用但速度慢一點 雲端 AI 就像「跑車」,很快但需要花錢加油

🔧 系統設定說明(白話版)

  1. 在家裡放一個「AI 服務生」

黃醫師在 Mac Mini 裡安裝了一個叫做 oMLX 的軟體,這個軟體專門用來「跑」AI 模型。

因為電腦只有 16GB 記憶體(RAM),所以選擇了一個比較「輕量」的模型叫做 Qwen3.5-9B,這個模型大約佔用 5.82GB 的記憶體,還剩空間給其他程式用。

  1. 設定「自動切換開關」

寫了一個小小的程式(叫做 auto_switch.sh),每當 MiniMax 雲端的額度低於 20 次時,系統就會自動切換:

「唉呀!免費額度快用完了,切換到本地端的 Qwen3.5 模型吧!」

等到下個月額度重置後,又會自動切回 MiniMax M2.5。

  1. 讓手機通知他

還設定了 Telegram 機器人,每當 AI 切換模式的時候,手機會收到通知,就像這樣:

🔄 會話啟動!目前使用:Qwen3.5-9B,內容使用率:97%

📊 效果如何?

之前 之後

用另一個類似軟體(ollama)跑同樣的查詢 23 分鐘

用 oMLX + Qwen3.5 幾秒鐘就完成

速度提升超級多! 從 23 分鐘變成幾秒鐘,這是因為 oMLX 這個軟體特別優化過,能更有效地利用 Mac Mini 的硬體。

🎁 這樣做有什麼好處?

 

省錢:免費額度用完後,自動切到本地端 AI,不用花冤枉錢

 

不停工:AI 額度用完不會突然就不能用,系統會無縫切換

 

速度快:本地端 AI 反應比雲端快(不用等網路傳輸)

 

隱私安全:某些程式碼可以完全在本地端處理,不會傳到網路上

🔑 總結

這方法結合了「雲端 AI」(厲害但要花錢)和「本地 AI」(較弱但免費),並寫了一個自動切換系統,讓我們在開發軟體時既能用到最強的 AI,又不會因為額度用完而中斷工作。

**啟發是:**如果你的工作需要用到 AI 程式輔助,可以參考這個概念——不要把所有雞蛋放在同一個籃子裡,免費的和付費的搭配使用,才能兼顧效能和成本。

這就是這篇技術文章的通俗解說版本,希望對你有幫助!

下面是技術性較高的正文 (其實黃醫師也不全瞭解---拜Vibe Coding所賜😅)

為了在進行 ACHEOFF 醫療設備開發時擁有高效且不間斷的 AI 輔助,我設計了一套「本地優先,雲端補位」的系統。當 MiniMax 雲端額度充足時,利用其強大的推理能力;當額度用罄或需離線處理時,自動切換至優化過的本地 Qwen3.5 模型。

混合 AI 算力架構:在 Mac Mini M4 上整合 oMLX 與 MiniMax

為了在進行 ACHEOFF 醫療設備開發時擁有高效且不間斷的 AI 輔助,我設計了一套「本地優先,雲端補位」的系統。當 MiniMax 雲端額度充足時,利用其強大的推理能力;當額度用罄或需離線處理時,自動切換至優化過的本地 Qwen3.5 模型。

硬體環境: 機型:Mac Mini M4 (2024) 記憶體:16GB 統一記憶體 (Unified Memory) 系統:macOS 15+

一、 本地端配置:oMLX 與 Qwen3.5 9B

參考了 freedidi.com 的部署建議,針對 16GB RAM 的限制,我選擇了 4-bit 量化的 Qwen3.5-9B-MLX。透過 oMLX 伺服器,我們能精準控制記憶體邊界並啟用高效快取。

oMLX 關鍵設定

{ “max_memory”: “11.52GB”, // 預留空間給系統與其他應用 “hot_cache_max_size”: “8.00GB”, // 提升 KV Cache 回應速度 “max_context_window”: 32768, // 兼顧深度與記憶體穩定性 “paged_ssd_cache”: “Enabled” // 當 RAM 壓力過大時,自動分頁至 SSD }

這種配置下,Qwen3.5 9B 模型實際佔用約 5.82GB RAM,配合 11.7GB 的程序限制,能確保系統在高負載下依然穩定。

二、 OpenClaw 整合設定

OpenClaw 作為核心調度器,負責連接 oMLX 提供的 OpenAI 相容接口以及 MiniMax 雲端 API。

openclaw.json 配置摘要

{ “models”: { “providers”: { “minimax”: { “baseUrl”: “https://api.minimax.io/v1”, “apiKey”: “sk-cp-xxxxxxxxxxxx”, // 雲端 Coding Plan Key “models”: [{ “id”: “MiniMax-M2.5”, “contextWindow”: 204800 }] }, “omlx”: { “baseUrl”: “http://127.0.0.1:8000/v1”, “apiKey”: “local-auth”, “models”: [{ “id”: “Qwen3.5-9B-MLX-4bit”, “contextWindow”: 49152 }] } } }, “agents”: { “defaults”: { “model”: { “primary”: “minimax/MiniMax-M2.5” } } } }

三、 自動化切換腳本:auto_switch.sh

為了避免 MiniMax Coding Plan 超量導致工作中斷,我撰寫了一個 Bash 腳本,每隔一段時間檢查雲端餘額,並在必要時自動修改 OpenClaw 配置並重啟 Gateway。

#!/bin/bash

檢查 MiniMax 餘額並自動切換模型

API_KEY=“sk-cp-xxxxxxxxxxxx” THRESHOLD=20 # 剩餘次數低於此值則切換

1. 獲取剩餘額度

BODY=$(curl -s “https://api.minimax.io/v1/api/openplatform/coding_plan/remains” -H “Authorization: Bearer $API_KEY”) REMAINS=$(echo “$BODY” | jq -r ‘.model_remains[0] | .current_interval_total_count - .current_interval_usage_count’)

2. 判定邏輯

if [ “$REMAINS” -lt “$THRESHOLD” ]; then # 切換至本地 oMLX openclaw config set agents.defaults.model.primary “omlx/Qwen3.5-9B-MLX-4bit” openclaw gateway restart else # 額度充足則保持或換回 MiniMax openclaw config set agents.defaults.model.primary “minimax/MiniMax-M2.5” openclaw gateway restart fi

四、 Telegram 狀態監控:從靜態配置到動態通知

為了確保在 ACHEOFF 開發過程中能即時掌握系統狀態,我實作了兩層級的 Telegram 監控:系統級通訊埠配置任務級動態狀態回報

  1. 系統級:OpenClaw Channel 配置

首先在 openclaw.json 中啟用原生 Telegram Channel 支援。這允許我直接透過 Telegram 手機端對 Agent 下達指令,同時定義了存取權限 white-list。

“channels”: { “telegram”: { “enabled”: true, “botToken”: “873359xxxx:AAFC0rRa…”, // 向 @BotFather 申請的憑證 “allowFrom”: [“11064xxxxx”], // 限制僅限我的 Chat ID 存取 “streaming”: “partial” } }

  1. 邏輯級:自動切換通知 (Shell Integration)

我在 auto_switch.sh 腳本中整合了 Telegram Bot API。當系統偵測到 MiniMax 額度低於門檻並觸發切換至本地 oMLX/Qwen3.5 時,會同步發送 Push Notification。

在 auto_switch.sh 中加入的通知邏輯

if [[ “$CURRENT_MODEL” != “$LOCAL_MODEL”