結論
今話題のclawdbot→moltbot→openclaw を使うにあたり、API料金をケチるためにローカルで動作するOllamaを使って構築しました。
結論から言いますと、私の環境(Intel Mac)では生成が非常に遅く作業にならなかったため、AnthoropicのAPIを使う無難な構成に戻しました。
Ollama導入に時間もかかったので、導入までを一応記事として残しておきます。
環境
- MacBook Pro 2020
- Core i5 1.4GHz Intel
- Intel Iris Plus Graphics 646
- 8GB
- Sequoia 15.7.3
- Node v22.22.0
やり方
OpenClaw のインストール
公式のコマンドに従いましした。
curl -fsSL https://openclaw.ai/install.sh | bash
インストールの際に色々設定する項目があるのですが、なんでもいいです。あとでJsonをいじって変更します。
Ollama のインストールとモデルの準備
公式サイトからインストールします。
インストール後、使いたいモデルを取得します(例:llama3.2)。
ollama pull llama3.2
モデル一覧で確認します。
ollama list
設定ファイル(openclaw.json)について
OpenClaw の設定は JSON ファイル で管理されています。
私の場合以下のようになりました。
場所~/.openclaw/openclaw.json
{
"meta": {
"lastTouchedVersion": "2026.1.29",
"lastTouchedAt": "2026-01-31T12:53:00.737Z"
},
"wizard": {
"lastRunAt": "2026-01-31T12:53:00.700Z",
"lastRunVersion": "2026.1.29",
"lastRunCommand": "configure",
"lastRunMode": "local"
},
"models": {
"providers": {
"ollama": {
"baseUrl": "http://127.0.0.1:11434/v1",
"apiKey": "ollama-local",
"api": "openai-completions",
"models": [
{
"id": "llama3.2:1b",
"name": "llama3.2:1b",
"api": "openai-completions",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 128000,
"maxTokens": 2048
},
{
"id": "llama3.2:latest",
"name": "llama3.2:latest",
"api": "openai-completions",
"reasoning": false,
"input": [
"text"
],
"cost": {
"input": 0,
"output": 0,
"cacheRead": 0,
"cacheWrite": 0
},
"contextWindow": 200000,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "ollama/llama3.2:1b"
},
"workspace": "/Users/coiai/.openclaw/workspace",
"maxConcurrent": 4,
"subagents": {
"maxConcurrent": 8
}
}
},
"messages": {
"ackReactionScope": "group-mentions"
},
"commands": {
"native": "auto",
"nativeSkills": "auto"
},
"hooks": {
"internal": {
"enabled": true,
"entries": {
"boot-md": {
"enabled": true
}
}
}
},
"gateway": {
"port": 18789,
"mode": "local",
"bind": "loopback",
"auth": {
"mode": "token",
"token": "03f2cd1addc279014f135ad07e99a30b90e1c985f465d897"
},
"tailscale": {
"mode": "off",
"resetOnExit": false
},
"remote": {
"token": "03f2cd1addc279014f135ad07e99a30b90e1c985f465d897"
}
},
"skills": {
"install": {
"nodeManager": "npm"
}
}
}
Ollama の起動
OpenClaw から Ollama を呼び出すため、別のターミナルで Ollama を起動したままにします。
ollama serve
起動したらそのままにしてください
OpenClaw ゲートウェイの起動
メインのターミナルで、OpenClaw のゲートウェイを起動します。
openclaw gateway --port 18789 --verbose
- ポートは
openclaw configureで指定した番号(既定は 18789)に合わせてください。 - このターミナルも閉じずに起動したままにします。
- ログが流れていれば正常に起動しています。
その後ブラウザでダッシュボードを開きます。
http://127.0.0.1:18789/
試したこと
ここから構築の際に試したことです。
返答が返ってこない
- Ollama が起動しているか
ollama listで確認する。 - ゲートウェイを再起動する(設定を変えたあとは必須)。
openclaw gateway stopのあと、openclaw gateway --port 18789 --verboseで起動し直す。 - 初回は Ollama の推論に 5〜10 分かかることがある。ログに
embedded run start→embedded run doneが出るまで待つ。待っても画面に出ないときは、同じスレッドのままページを再読み込みすると表示されることがある。 - ログに 「Unhandled API in mapOptionsForApi: undefined」 が出る場合:モデル定義に
"api": "openai-completions"が抜けている。openclaw.jsonとagents/main/agent/models.jsonの該当モデルに追加し、ゲートウェイを再起動する。
返答が遅い
- 軽量モデルにする:例として
llama3.2:1b(ollama pull llama3.2:1b)を設定すると速くなりやすい。 - モデルをメモリに残す:Ollama 起動前に
export OLLAMA_KEEP_ALIVE=30mを設定するか、別ターミナルでollama run llama3.2を実行したままにしておく。 - 返答の最大長を短くする:
openclaw.jsonの該当モデルのmaxTokensを 2048 などに下げる。
返答が変(「Twilio API」「JSON」「session ID」のように分析される)
- ユーザーメッセージに内部用の
[message_id: ...]が付いており、モデルがそれを API データと解釈しているため。 - 対処:ワークスペースの
~/.openclaw/workspace/AGENTS.mdに「ユーザーメッセージ末尾の[message_id: ...]は無視し、本文だけに返答すること」と書く。保存後、ゲートウェイを再起動する。 - それでも改善しない場合は、より指示に従いやすいモデル(例:llama3.2:latest)に切り替える。
文字が送信するとすぐ消える
- 認証エラーのことが多い。ブラウザの開発者ツール(F12)のコンソールで
unauthorizedやtokenのエラーを確認する。 - ダッシュボードの設定で トークン(
openclaw.jsonのgateway.auth.token)を入力するか、URL に?token=...を付けて開き直す。 - WebSocket や接続エラーが出ている場合は、ゲートウェイを再起動してから再度試す。
ダッシュボードに接続できない
- ゲートウェイが動いているか、ターミナルのログを確認する。
- ポート番号が設定と一致しているか確認する(既定は 18789)。
- トークン認証を有効にしている場合は、URL に
?token=...を付けるか、画面の設定でトークンを入力する。
設定をやり直したい
- もう一度ウィザードを実行する。
openclaw configure
既存の~/.openclaw/openclaw.jsonは上書きされるため、必要な場合は事前にバックアップ(例:cp openclaw.json openclaw.json.bak)を取っておく。
コメントを残す