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 金鑰,並瀏覽模型目錄

取得你的 HAIMAKER 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 設定指南以新增更多模型。