Newer
Older
Local-LLM-as-coding-agent / README.md

Open WebUI を使用したコーディングエージェントへの接続

Cline は、Ollama でバックアップされたセルフホスト型 Open WebUI インスタンスを使用し、商用 API ではなくラボでホストされたモデルに対してアジャナイティックなコーディングを実行します。

設定手順は以下の通り: Open WebUI は avogadro.nakaguchi.org:3000 で動作し、Ollama を介して qwen3-coder:30b を提供しています。


前提条件

  • VS Code
  • Open WebUI インスタンスのアカウント
  • サーバーへのネットワークアクセス(プライベートアドレス 10.44.104.23 に解決されるため、キャンパスネットワークまたは VPN が必要です — VPN なしでは家から動作しません)
  • WSL の推奨(既知の問題を参照)

ステップ 1 — 認証トークンを取得

  1. Chrome または Firefox で Open WebUI にログイン
  2. F12Application タブを押す
  3. Cookies を展開 → Open WebUI のオリジンをクリック
  4. token という名前のクッキーの値をコピー

これは eyJ で始まる長い文字列で、2つのドットを含みます。

注意: このトークンは有効期限があります — デフォルトでは4週間で、SSO の場合より早く失効します。エージェントが401エラーを返すようになったら、再びコピーしてください。管理者に実際の API キーを要求することでこの問題を回避できます。


ステップ 2 — トークンを確認

CMD で実行し、1行で:

curl -H "Authorization: Bearer YOUR_TOKEN" http://avogadro.nakaguchi.org:3000/api/models

JSON のモデル一覧が表示されれば成功です。

一般的な間違い

間違い結果
Bearer の単語を省略{"detail":"Not authenticated"}
PowerShell で curl を実行Invoke-WebRequest にエイリアス化されているため、curl.exe を使用する
トークンの周囲に引用符を含める401

curl では Bearer が必要です(生のヘッダーを書いているため)。Cline の API キー欄では Bearer 接頭辞は不要 です。Cline が自動的に追加します。


ステップ 3 — モデル ID を確認

上記の JSON から "id" フィールドを見つけます。フレンドリーな表示名ではなく、正確な文字列を使用してください。

curl -H "Authorization: Bearer YOUR_TOKEN" http://avogadro.nakaguchi.org:3000/api/models | findstr "\"id\""

モデルが "capabilities":["completion","tools"] を報告していることを確認してください。tools がないとアジャナイティックな使用は動作しません — モデルはチャットできますがファイルや端末操作を呼び出しません。


ステップ 4 — Cline を設定

VS Code の拡張機能パネルから Cline をインストールし、設定の歯車アイコンを開きます:

フィールド
API プロバイダーOpenAI Compatible
ベース URLhttp://avogadro.nakaguchi.org:3000/api
API キートークン — Bearer 接頭辞は不要
モデル IDqwen3-coder:30b またはワークスペースのバリアント

URL は /api で終わるのに注意してください。/v1 ではありません


ステップ 5 — 確認

Cline チャットで hi を送信します。

成功: 入力/出力数を示すトークン使用量の行付きで返答が表示されます。

最初のリクエストは遅いです。 モデルが "loaded":false と表示される場合、Ollama はディスクから 18.5 GB をロードする必要があります。失敗と誤認しないように2分間待ってください。事前に curl コマンドで温めることで、設定の問題と誤認することを避けられます。

エージェントループのテスト

接続とアジャナイティックな動作は別のものです。実際のプロジェクトフォルダを開いて次のように尋ねてください:

このフォルダ内のファイルを読み取り、プロジェクトが何をするか要約してください

ツール呼び出しボックス — "Cline は src/main.py を読みたい" — が表示され、承認/拒否ボタンがあるはずです。これでツール呼び出しが動作することを確認できます。もし実行する予定のことをしか述べない場合は、ステップ4を見直してください。


既知の問題

WSL では動作しますが、Windows の VS Code では動作しません

この設定中に発見された問題: 同じ設定で WSL Remote ウィンドウでは正常に返答するが、ネイティブ Windows VS Code では無限に待機します。

除外済み: プロキシ (ProxyEnable = 0x0, AutoConfigURL なし) や Test-NetConnection avogadro.nakaguchi.org -Port 3000TcpTestSucceeded : True を返すことを確認しました。

最も可能性が高い原因: WSL Remote ウィンドウの拡張機能は、ローカル Windows インストールとは別のストレージを使用します。設定は引き継がれません。Windows ウィンドウでは4つのフィールドが入力されていることを確認してください。

診断: ヘルプ → 開発者ツールの切り替え → ネットワーク で、クリアしてからメッセージを送信します。ホストへのリクエストがない場合、リクエストが構築されていないため、設定または拡張機能状態の問題です。ネットワークの問題ではありません。

推奨: WSL で作業してください。Cline は端末コマンドを実行するため、実際の bash シェルは PowerShell の引用符の癖やパス変換を回避します。WSL: Open Folder in WSL を使用してプロジェクトを開き、ファイルを /mnt/c/ ではなく ~/ に保管してください。後者はファイルを多数読むと非常に遅くなるため、エージェントが動作するのに苦労します。

リクエストのキャンセル

キャンセルボタン、Escape、または 開発者: ウィンドウの再読み込み を使用してください。クライアント側でのキャンセルは Ollama の生成を停止しません — 共有マシンでリトライを積み重ねるのは避けてください。


追加項目

以下のセクションを 既知の問題 の後ろに追加してください:


PowerShell バージョン — curl の動作が異なる

Windows PowerShell 5.1(青いアイコン、事前にインストール)は curlInvoke-WebRequest にエイリアス化しており、実際の curl とは -H を受け付けません。ヘッダーは無視され、{"detail":"Not authenticated"} やパラメータバインディングエラーが発生します(トークンが正しい場合でも)。

PowerShell 7+ はそのエイリアスを削除しました。curl は本物の curl.exe を呼び出すため、この README のコマンドはそのまま動作します。

どのバージョンを使用しているか確認:

$PSVersionTable.PSVersion

5.1.x が古いバージョンです。7.x が最新版です。

更新方法:

winget install --id Microsoft.PowerShell --source winget

これは Windows PowerShell を置き換えるのではなく、別途インストールされます — PowerShell 7(黒いアイコン)がスタートメニューに表示されます。winget が利用できない場合は、github.com/PowerShell/PowerShell/releases から MSI をダウンロードしてください。

更新しない場合: 明示的に curl.exe を呼び出す:

curl.exe -H "Authorization: Bearer YOUR_TOKEN" http://avogadro.nakaguchi.org:3000/api/models

または CMD でコマンドを実行します。Windows 10 と 11 ではデフォルトで実際の curl が含まれています。

設定以外での重要性: Cline はエージェントループの一部として端末コマンドを実行し、VS Code のデフォルトシェルを使用します。Windows の場合通常は PowerShell 5.1 であり、そのエイリアスと引用符はモデルが学習した bash 構文とは異なります。エージェントが作成するコマンドはコードとは無関係な理由で失敗することがあります。PowerShell 7 への更新が役立ちます。WSL での作業は問題を完全に回避します。


5.1 を使用している場合に知っておくと良い2つの違い: Test-NetConnection は両方のバージョンで動作するため、診断は影響を受けません。また、5.1 は wgetls も PowerShell コマンドレットにエイリアス化しており、過去に貼り付けたシェルスニペットが同じように問題を引き起こします。