OpenCode 是一款終端機程式開發助理,可以串接任何與 OpenAI 相容的 API。只要讓它連上本機執行 Gemma 4 的 Ollama,你就有一個完全免費、程式碼不外流的程式開發助理。
以下是在 Apple Silicon Mac 上的完整設定流程:安裝 Ollama、拉取 Gemma 4、接入 OpenCode。
你需要什麼
- 配備 Apple Silicon(M1/M2/M3/M4/M5)且至少 16GB 統一記憶體的 Mac
- 已安裝 Homebrew 的 macOS
- 已安裝 OpenCode(請見 opencode.ai 或透過你的套件管理器安裝)
Gemma 4 預設的 8B 模型載入後約使用 9.6GB,因此 16GB 統一記憶體足以同時執行 Ollama 和 OpenCode,不成問題。
步驟 1:安裝 Ollama
brew install --cask ollama-app
這會將 Ollama.app 安裝到 /Applications/,並將 ollama CLI 安裝到 /opt/homebrew/bin/ollama。
步驟 2:啟動 Ollama
open -a Ollama
等待選單列圖示出現,然後確認伺服器正在運作:
ollama list
步驟 3:拉取 Gemma 4
ollama pull gemma4
這會下載約 9.6GB。完成後確認:
ollama list
# NAME ID SIZE MODIFIED
# gemma4:latest ... 9.6 GB ...
測試一下:
ollama run gemma4:latest "Hello, what model are you?"
檢查 GPU 加速:
ollama ps
# Should show CPU/GPU split, e.g. 14%/86% CPU/GPU
Ollama v0.19+ 在 Apple Silicon 上會自動使用 Apple 的 MLX 框架來加速推論。
步驟 4:設定 OpenCode 使用 Gemma 4
OpenCode 的設定檔位於 ~/.config/opencode/opencode.jsonc。請將 Ollama 新增為自訂 provider:
{
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"gemma4:latest": {}
}
}
}
}
由於 Ollama 在本機執行,你不需要 API 金鑰。但 OpenCode 仍需要在 ~/.local/share/opencode/auth.json 中有一筆 auth 設定,所以請新增一筆佔位設定:
{
"ollama": {
"type": "api",
"key": "ollama"
}
}
重新啟動 OpenCode,然後使用 /models 切換到 ollama/gemma4:latest。
步驟 5:保持 Gemma 4 載入
Ollama 預設會在閒置 5 分鐘後釋放模型。如果你整天都會用到它,這樣會造成不必要的冷啟動。
將 keep-alive 設為永久:
launchctl setenv OLLAMA_KEEP_ALIVE "-1"
重新啟動 Ollama 讓設定生效。若要在重新開機後仍保持此設定,請加到 ~/.zshrc:
export OLLAMA_KEEP_ALIVE="-1"
啟用登入時啟動:點擊 Ollama 選單列圖示 → 登入時啟動。
開機時自動預載
建立一個 LaunchAgent,讓 Gemma 4 在每次重新開機後都預先載入完成、立即可用:
cat << 'EOF' > ~/Library/LaunchAgents/com.ollama.preload-gemma4.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.ollama.preload-gemma4</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/ollama</string>
<string>run</string>
<string>gemma4:latest</string>
<string></string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>300</integer>
<key>StandardOutPath</key>
<string>/tmp/ollama-preload.log</string>
<key>StandardErrorPath</key>
<string>/tmp/ollama-preload.log</string>
</dict>
</plist>
EOF
launchctl load ~/Library/LaunchAgents/com.ollama.preload-gemma4.plist
這會每 5 分鐘向模型發送一次空提示來 ping 它,讓它保留在記憶體中。
Gemma 4 搭配 OpenCode 的適用情境
Gemma 4 8B 免費且在本機執行,對日常程式開發工作來說出乎意料地好用:
- 程式碼解釋。 詢問某個函式做了什麼、某個模組的結構如何,或某個正規表示式會匹配什麼。答案清晰,對標準程式碼庫通常也很準確。
- 快速編輯。 修正錯字、更新 import、在型別定義新增欄位、重新命名變數。單檔修改是它的強項。
- 樣板程式碼產生。 設定設定檔、測試存根、API 路由骨架、Dockerfile 模板。不需要太多推理的常見模式。
- Shell 指令輔助。 忘了
git的旗標或jq的過濾器?Gemma 4 直接給你指令,省去你跑一趟 Stack Overflow 的功夫。
它的不足之處
- 多步驟推理。 需要跨多個檔案規劃或理解複雜控制流程的任務,往往會產生不完整的結果。
- 大規模重構。 如果你需要在整個程式碼庫中進行協調一致的修改,8B 模型會失去連貫性。它能逐檔處理,但無法掌握全貌。
- 邊角案例與細微 bug。 Gemma 4 能發現明顯的問題,但會漏掉需要深入領域知識或仔細推敲各種邊角案例才能發現的 bug。
更進一步:新增 Haimaker 使用雲端模型
本機的 Gemma 4 涵蓋了基本需求。當你遇到它無法處理的情況——複雜除錯、多檔重構、任何需要深度推理的任務——你就需要雲端模型。Haimaker 讓你用一個 API 金鑰就能存取 Claude Opus、GPT-5、Gemini Pro 等模型。
將 Haimaker 新增為第二個 provider,與 Ollama 並存:
{
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"gemma4:latest": {}
}
},
"haimaker": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://api.haimaker.ai/v1"
},
"models": {
"anthropic/claude-sonnet-4-6": {},
"openai/gpt-5": {},
"google/gemini-2.5-pro": {}
}
}
}
}
將你的 Haimaker API 金鑰加到 ~/.local/share/opencode/auth.json:
{
"ollama": {
"type": "api",
"key": "ollama"
},
"haimaker": {
"type": "api",
"key": "YOUR_HAIMAKER_API_KEY"
}
}
現在你可以在 OpenCode 中使用 /models 在本機和雲端模型之間切換。簡單任務交給 Gemma 4,任務變難時再切換到 Sonnet 或 GPT-5。
到 haimaker.ai 註冊取得你的 API 金鑰,並瀏覽模型目錄。
疑難排解
provider 沒有出現在 /models 中。 編輯設定檔後請重新啟動 OpenCode。OpenCode 執行期間不會套用 opencode.jsonc 的變更。
「找不到模型」錯誤。 確保設定檔中的模型 ID 與 Ollama 回報的完全一致。執行 ollama list,並使用顯示的名稱——通常是 gemma4:latest。
Ollama 的驗證錯誤。 雖然 Ollama 不需要驗證,但 OpenCode 的 provider 系統預期 auth.json 中會有一筆設定。填入佔位用的 "key": "ollama" 即可。
回應緩慢。 確保你使用 Ollama v0.19+,才能在 Apple Silicon 上獲得 MLX 加速。執行 ollama --version 來檢查。同時也要關閉會占用統一記憶體的應用程式——開啟大量分頁的瀏覽器通常是元凶。
上下文視窗問題。 Gemma 4 支援大型上下文視窗,但在 16GB 硬體上,請將輸入保持在 32K tokens 以內,以維持穩定的輸出品質。如果你發現回應品質在長提示時下降,大概就是這個原因。
實用的 Ollama 指令
| 指令 | 說明 |
|---|---|
ollama list | 列出已下載的模型 |
ollama ps | 顯示執行中的模型和記憶體使用量 |
ollama run gemma4:latest | 互動式聊天 |
ollama stop gemma4:latest | 從記憶體釋放模型 |
ollama pull gemma4:latest | 更新到最新版本 |
ollama rm gemma4:latest | 刪除模型 |
已經在使用 Haimaker 搭配 OpenCode?參閱完整的自訂 provider 設定指南以新增更多模型。