OpenCodeとOllamaがうまく動かないとき、モデルを変更する前にサーバーエンドポイントと正確なモデルIDを確認してください。両方のチェックが通ったら、小さなファイル編集をテストして、ツール呼び出しの問題と接続の問題を切り分けます。チャットリクエストに応答できるモデルは、コーディングエージェントのワークフローの最初の段階を通過しただけです。

このガイドでは、OllamaとOpenCodeがインストール済みであることを前提としています。インストールとプロバイダーのセットアップについては、OllamaとOpenCodeのセットアップガイドを参照してください。ここでの手順は、動作中の設定を繰り返し変更することなく障害を切り分けるためのものです。

どのリクエストが失敗しているかを特定する

OpenCodeの障害は、推論の前、生成中、またはツール実行時に発生する可能性があります。これらの段階を個別に確認してください。接続拒否は、モデルがJSONのような文章を返すのとは別の問題を示します。設定を変更する前に、エンドポイント、選択したモデル、エラーを記録しておくと、変更で改善したかどうかを判断できます。

観察結果次の確認項目その結果で分かること
接続拒否設定されたホストとポートで/api/versionにリクエストそのOllamaエンドポイントに到達できるかどうか
モデルが見つからない/v1/modelsを読み取り、正確なIDを比較リクエストしたモデルがそのサーバーに存在するかどうか
チャットは動作するがファイルは変更されないツール呼び出しと権限の結果を確認OpenCodeがアクションを試行し完了したかどうか
小さな編集は動作するが大きなタスクは失敗割り当てられたコンテキストとランタイムログを確認大きなタスクが測定可能な制限に遭遇しているかどうか
ローカルは動作するがクラウドがハング2つのルートを個別にテスト障害がクラウドパスに固有かどうか

障害を再現する前にバージョンを記録してください:

opencode --version
ollama --version

この記事のローカルチェックでは、Apple M3 Ultra(96 GBユニファイドメモリ)上でOpenCode 1.19.4とOllama 0.32.9を使用しました。このハードウェアは選択した31Bモデルを実行できますが、より小さいノートPC向けのメモリ推奨ではありません。他のハードウェアでのモデル選択については、Ollamaコーディングモデルガイドを参照してください。

モデルを変更する前にエンドポイントを確認する

OpenCodeが使用するのと同じホストとポートにリクエストしてください。127.0.0.1:11434のローカルサーバーと127.0.0.1:11435のサーバーは異なるエンドポイントです。リクエストが失敗した場合、まずサーバーまたはアドレスを修復してください。モデルを変更しても、拒否されたネットワーク接続は修復できません。

curl --fail-with-body --max-time 5 \
  http://127.0.0.1:11434/api/version

curl --fail-with-body --max-time 5 \
  http://127.0.0.1:11434/v1/models

バージョン応答が返ってくれば、Ollamaが応答したことが確認できます。モデル一覧の応答からは、そのサーバーが公開しているモデルIDが分かります。一覧が空の場合は、サーバーには到達できているもののモデルがリストされていない状態であり、接続エラーとは別の問題です。

Ollamaが停止している場合は、アプリケーションを起動するか、ターミナルでサーバーを実行してください:

ollama serve

ポートがすでに使用中の場合は、別のコピーを起動するのではなく、どのサーバーが実行中かを確認してください。リモートのOllamaインストールにはそのリモートアドレスが必要です。127.0.0.1は常にクライアントを実行しているマシンを指します。

OllamaのOpenCode統合ドキュメントでは、/v1で終わるOpenAI互換のベースURLを使用しています。そのサフィックスはOpenCodeのプロバイダー設定に残してください。/api/versionのようなネイティブの診断ルートはその外側にあります。

設定されたモデルをサーバーの正確なIDと一致させる

サーバーが返すモデルIDをタグを含めて使用してください。あるOllamaサーバーでダウンロードしたモデルは、同じモデルを保有していない別のサーバーでは利用できません。リクエストを再試行する前に、選択されたプロバイダー、そのベースURL、モデル宣言をまとめて確認してください。

これはOpenCode 1.19.4のチェックで使用したプロバイダーの形式です:

{
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "http://127.0.0.1:11434/v1"
      },
      "models": {
        "gemma4:31b": {
          "name": "Gemma 4 31B",
          "limit": {
            "context": 65536,
            "output": 2048
          }
        }
      }
    }
  }
}

gemma4:31bは、サーバーが実際にリストしているIDに置き換えてください。この例はそのモデルをダウンロードしません。OpenCodeの完全なセレクターはプロバイダー名とモデルIDを組み合わせたものです:

opencode run -m ollama/gemma4:31b "Reply with one short sentence."

意図的に存在しないモデルをOllamaの互換エンドポイント経由でリクエストしたところ、not_found_errorを含むHTTP 404が返されました。この結果は、モデル選択のエラーを示しています。メモリ不足やツールパーサーの不具合を示すものではありません。

設定は複数の場所から読み込まれることもあります。OpenCodeの設定ドキュメントでは、設定のマージ方法が説明されています。値が無視されているように見える場合は、解決済みの設定をローカルで確認してください:

opencode debug config

マージ後の設定には認証情報が含まれる可能性があります。診断レポートを共有する前に、関連するプロバイダー設定を抽出し、キーや無関係なアカウントの詳細を削除してください。

使い捨てのコーディングフィクスチャでアクションを検証する

変更されたファイルを確認し、自分でテストを実行してください。OpenCodeに既知のバグが1つある小さなファイルを与え、ファイルの修正を依頼し、その後で独立したチェックを実行します。これにより、診断を小さく保ちながら、ファイルアクセス・編集・実行をテストできます。

新しいディレクトリを作成して移動してください:

mkdir opencode-ollama-check
cd opencode-ollama-check

cat > add.mjs <<'JS'
export function add(a, b) {
  return a - b;
}
JS

cat > check.mjs <<'JS'
import { add } from './add.mjs';
if (add(2, 3) !== 5) throw new Error('Expected add(2, 3) to return 5');
console.log('PASS');
JS

node check.mjs

最初のチェックは失敗するはずです。テスト済みのプロバイダー設定をこの使い捨てディレクトリにコピーしてから、次を実行してください:

opencode run -m ollama/gemma4:31b \
  "Read add.mjs. Fix add so it adds its arguments. Run node check.mjs."

node check.mjs

add.mjsを自分で確認してください。ファイルがまだ減算のままだったり、独立したチェックが失敗したりする場合は、モデルが成功メッセージを返していても信用できません。権限プロンプトを表示したままにして、編集が拒否されたのか、そもそもツール呼び出しが行われなかったのかを区別できるようにしてください。チェック中に、macOSはフィクスチャを/private/tmpとして解決しましたが、ツールはその/tmpエイリアスをリクエストしました。OpenCodeはエイリアスされたパスを外部とみなし、非対話型の実行で拒否しました。解決後のディレクトリパスと相対ファイルパスを使用することで、狭いスコープの権限でフィクスチャを実行できました。

より深い調査には、OpenCodeのCLIがJSON出力をサポートしています:

opencode run --format json -m ollama/gemma4:31b \
  "Read add.mjs and explain the implementation."

実行されたツールとその結果を探してください。関数名やJSONオブジェクトを含むテキストだけでは、OpenCodeが実際に何かを実行したとは言えません。エンドポイントとフィクスチャの権限を修正した後、1回の実行でフィクスチャを読み取り、減算を加算に変更し、独立したNodeチェックに合格しました。2回目の実行では、意図的に存在しないモデルIDを置き換えた後に同じチェックに合格しました。別の直接APIプローブでは、Gemma 4 31Bが65,536コンテキストで構造化されたread_file呼び出しを返しました。この単一の結果はプローブの応答形式を検証するものであり、コーディングタスク全体における信頼性を保証するものではありません。

Ollamaが実際に割り当てたコンテキストを確認する

OpenCodeに表示されるモデルの上限とOllamaのランタイム割り当ては一致している必要があります。クライアント設定の数値を増やしても、サーバーがより多くのコンテキストを割り当てたことにはなりません。リクエスト中に実行中のモデルを確認し、その実際のコンテキストをタスクのプロンプトやツール履歴と比較してください。

Ollamaのコンテキストドキュメントでは、コーディングツールとエージェントに少なくとも64,000トークンを推奨しています。また、大きな割り当てはより多くのメモリを消費することも説明しています。手動で起動したサーバーでは、明示的な割り当てを設定できます:

OLLAMA_CONTEXT_LENGTH=65536 ollama serve

その変数はOllamaを実行しているプロセスに設定してください。OpenCodeを実行しているターミナルでのみエクスポートしても、すでに実行中のOllamaアプリケーションは再設定されません。アプリケーションがサーバーを管理している場合は、アプリケーションのコンテキスト設定を使用してください。

モデルが読み込まれている間に確認してください:

ollama ps

CONTEXT列とPROCESSOR列を確認してください。Ollamaがカスタムホストやポートを使用している場合は、CLIもそのサーバーに向けてください。メモリ不足、CPUオフロード、コンテキストの切り捨て、ツール形式の失敗にはそれぞれ別の証拠が必要です。応答が遅いだけでは、どれが発生したかを特定できません。

ハードウェアが必要なコンテキストに対応できない場合は、ツールをサポートするより小さいモデルを選択し、同じフィクスチャを繰り返してください。異なるタスクを使って2つのモデルを比較し、その差をモデルの品質のせいにするのは避けてください。

有用な障害レポートを残す

有用なレポートは、他の開発者が同じリクエストを再現できるようにするものです。バージョン、サニタイズされたプロバイダー設定、正確なモデルタグ、割り当てられたコンテキスト、まだ失敗する最小のフィクスチャを含めてください。直接リクエストが成功するかどうか、OpenCodeがモデルサーバーに到達するかどうかを記録してください。これらの詳細はメンテナが障害を特定するのに役立ちます。

OpenCodeのトラブルシューティングガイドではログの場所を特定する方法が説明されています。テストしたバージョンでは、このコマンドで設定されたデータパスとログパスを特定できます:

opencode debug paths

ローカルとクラウドの結果は分けて管理してください。ローカルのコーディングテストではOllama Cloudの認証や可用性を検証できず、クラウドの障害はローカルのツール使用の劣化を証明するものではありません。同様に、同じ症状を報告する古いIssueがあっても、そこで提案されている修正方法がインストール済みのバージョンに適用されるとは限りません。

フィクスチャが成功してもリポジトリのタスクが失敗する場合は、動作するフィクスチャを保持し、段階的に複雑さを追加してください:別のファイル、より大きな入力、またはより長いツールシーケンス。障害を再現する最初の変更は、比較なしに両方のアプリケーションを再インストールするよりも有用です。

ローカル診断が完了した後の別のプロバイダー設定については、OpenCodeのカスタムプロバイダーガイドでHaimakerのセットアップを説明しています。プライベートなローカルテストはローカルに留めてください。ワークロードが許せば、プロバイダーの切り替えも次のステップとして検討できます。

よくある質問

Ollamaのチャットが成功すれば、OpenCodeのツールも動作しますか?

いいえ。チャット応答はモデルがテキストを生成できることを示すに過ぎません。OpenCodeには構造化されたツール呼び出し、それらを実行する権限、タスクに十分なコンテキストが必要です。実際のファイル編集とそのテスト結果を確認してください。

OpenCodeのコンテキスト上限を増やすと、Ollamaのメモリも増えますか?

OpenCodeに表示されるコンテキスト上限は、Ollamaがそのコンテキストを割り当てたことを保証しません。Ollamaサーバーを設定し、ollama psで実行中のモデルを確認してください。コンテキストを大きくするとメモリ要件も増加します。

OllamaのモデルがOpenCodeから消えた場合、すべて再インストールすべきですか?

まず、Ollamaが返すモデルIDとOpenCodeの設定で宣言されているモデルを比較してください。どちらかのアプリケーションを再インストールする前に、エンドポイントと選択されたプロバイダーを確認してください。