AI・機械学習
MacでOllamaとsbxを使ったOpenCodeの設定
Setting up OpenCode with Ollama and sbx on Mac (tensorsandtokens.com)
要約
この記事では、Mac上でローカルLLM開発環境を構築するために、Ollama、Docker Sandbox (sbx)、およびOpenCodeを連携させる方法を解説しています。Apple Silicon搭載MacでQwen 3.8やGemma 4といった大規模モデルを効率的に実行し、Webアプリケーション開発に活用するための具体的な手順が示されています。
全文翻訳
ローカルLLM開発が現実のものとなりました。Qwen 3.8やGemma4のような強力なモデルを使えば、これらのモデルをWebアプリケーション開発に活用できるようになります。私はApple Macbook pro m5 48GBモデルを使用しています。これはローカル開発において、十分なコンテキストサイズで30Bモデルを実行できるスイートスポットだと考えています。
なぜOllamaを使うのか。\n率直に言って、簡単だからです。MLXが追加されたため、Apple Silicon上では高速です。モデルディレクトリもかなり充実しています。また、非常に安定しており、クラッシュしません。
なぜOpencodeを使うのか。\nこのブログを始めるにあたって、どこかから始める必要があり、Opencodeは素晴らしいハーネス(実行環境)です。もう一つ私が使うツールがあります。それはDocker Sandbox、別名sbxです。私は職場でフロンティアモデルを使用しており、それらのハーネスをサンドボックス化する必要があります。また、ローカルモデルをコンテナで実行するのが好きです。なぜなら、意図しない幻覚(hallucination)によってコンピュータを簡単に台無しにされる可能性があるからです。
ツールのインストール
Docker Sandboxのインストール: brew trust docker/tap && brew install docker/tap/sbx
Opencodeのインストール: brew install anomalyco/tap/opencode
Ollamaのインストール: Ollamaをインストールするには、https://ollama.com/ にアクセスし、アプリをダウンロードしてインストールしてください。
モデルのインストール
モデルについては、2つのモデルをプルします。まず、Ollamaが実行されていることを確認してください。
Qwen 3.8 27B mxfp8 (32GB): これは優れたワークホースモデルで、ほとんどの長時間実行タスクを処理でき、Opencode内で数時間 undisturbed で実行できます。
ollama pull qwen3.8:27b-mxfp8
Gemma 4 31b mxfp8 (34GB): これは、より大きなモデルが必要な場合に最適な、大きくて密度の高いモデルです。
ollama pull gemma4:31b-mxfp8
注意: 48GBのAppleマシンをお持ちでない場合は、標準モデルをプルできます: qwen3.8:27b-mlx および gemma4:31b-mlx。
プロジェクトの設定
このセットアップでは、プロジェクトごとにsbxキットを設定する必要があります。キットはサンドボックスをカスタマイズする方法です。以下のフォルダとファイルを作成してください:
./sbx-kit/files/home/.config/opencode-local.json
./sbx-kit/spec.yaml
spec.yaml
schemaVersion: "2"
kind: mixin
name: local-ollama-opencode
version: "0.1.0"
displayName: Local Ollama for OpenCode
description: Configure OpenCode in Docker Sandboxes to use Ollama running on the Mac host.
requires:
agent: opencode
environment:
variables:
OPENCODE_CONFIG: /home/agent/.config/opencode-local.json
permissions:
network:
allow:
- localhost:11434
- localhost:5173
- localhost:4000
agentInstructions:
content: |
Local Ollama runs on the host machine.
Default model: qwen3.8:27b-mxfp8
Deep file analysis / reasoning: gemma4:31b-mxfp8
opencode-local.yaml
{
"$schema": "https://opencode.ai/config.json",
"model": "ollama/gemma4:31b-mxfp8",
"small_model": "ollama/gemma4:31b-mxfp8",
"lsp": false,
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Mac Ollama",
"options": {
"baseURL": "http://host.docker.internal:11434/v1"
},
"models": {
"qwen3.8:27b-mxfp8-64K": {
"id": "qwen3.8:27b-mxfp8",
"name": "Qwen 3.8 27B MXFP8 [31 GB] [64K ctx]",
"limit": {
"context": 65536,
"output": 8192
},
"variants": {
"low": {
"reasoningEffort": "low"
},
"medium": {
"reasoningEffort": "medium"
},
"high": {
"reasoningEffort": "high"
},
"xhigh": {
"reasoningEffort": "xhigh"
}
}
},
"gemma4:31b-mxfp8": {
"name": "Gemma 4 31B MXFP8 [33 → ~50 GB] [256K ctx]",
"limit": {
"context": 262144,
"output": 8192
}
}
}
}
}
}
Qwenモデルでは、コンテキストを64kに制限しました。これにより、メモリ不足でシステムがロックアップするのを防ぐことができます。サンドボックス用に3GBのメモリも必要です。
Opencodeの実行
Opencodeを実行するには、以下を実行します:
sbx run opencode --kit ./sbx-kit/
これにより、Qwenが選択された状態でOpencodeが起動します。/models コマンドで "low" に変更したことを確認してください。これで準備完了です。
注意: sbxを実行するにはDockerにログインする必要があります。この機能は開発コミュニティであまり好まれていませんが、他に方法はありません。
← 最新記事に戻る