これまでの試行錯誤と、この「凄そうなツール」に詰め込んだ機能をすべて盛り込んだ `README.md` を作成しました。 このプロキシは、単なる通信の中継器ではなく、**「リモートサーバーの限界を可視化し、Clineを快適に動かすための管制塔」**としての役割を担っています。 --- ## README.md # Ollama Debugging Proxy (oproxy) リモートサーバー上の Ollama とローカルの Cline を繋ぎ、通信状態やサーバーリソース、モデルの適合性をリアルタイムに可視化するための高機能プロキシツールです。 ### 🌟 主な機能 * **戦力分析 (Startup Scan)**: 起動時にリモートの全モデルをスキャンし、以下の2点から「Clineで動くか」を自動判定します。 * **メモリ判定**: サーバーの空きメモリ(16.8 GiB基準)に収まるか。 * **ツール判定**: Clineの操作に必要な `Tools (Function Calling)` に対応しているか。 * **通信の可視化 (Real-time Logs)**: * `^`: リクエスト送信(Cline → Proxy → Ollama) * `v`: レスポンス受信(Ollama → Proxy → Cline) * `|` / `*`: パケットの区切りと完了を視認。 * **タイムスタンプ**: ミリ秒単位のログで、遅延が発生している箇所を特定。 * **エラー翻訳**: Ollamaが返す不親切な JSON エラーを解析し、Clineのチャット画面上に「何が原因で、どう対策すべきか」の Markdown レポートとして流し込みます。 * **物理的表示の安定性**: 絵文字の幅によるズレを排除した「背景色付きバッジ」システムにより、ターミナル上での完璧な整列を実現。 --- ### 🚀 使い方 #### 1. 起動 ```bash python oproxy.py -r 11433 -l 11434 ``` * `-r`: リモートの Ollama ポート(SSHトンネル等のポート) * `-l`: Cline が接続するローカルポート #### 2. リストの確認 起動時に表示されるリストで **`READY`** と出ているモデルを確認してください。 * `READY` (緑): メモリ・機能ともに合格。 * `TOOL` (黄): メモリは足りるが、ファイル操作等ができない可能性あり。 * `MEM` (赤): メモリ不足でロードに失敗します。 #### 3. Cline の設定 Cline の設定画面で `Base URL` を `http://127.0.0.1:11434` に設定し、リストで確認した最適なモデル名を入力してください。 --- ### 🛠 必要要件 * **Python**: 3.12以上推奨 * **依存ライブラリ**: * `fastapi` * `uvicorn` * `httpx` --- ### 🎨 ログ表示の見方 ```text [HH:MM:SS.ms] READY [TOOL] モデル名 (サイズ) GiB [HH:MM:SS.ms] /api/chat: ^^^^|v:vvvvvvvvv* ``` * `^` が出たまま止まる場合:アップロード(テザリング等の上り)がボトルネック。 * `|` の後に `v` がなかなか出ない場合:サーバー側の推論待ち、またはメモリのロード中。 * `v` が少しずつ出る場合:ストリーミング中。