RTX 3090 / ComfyUI環境における、コンテンツ制限に阻まれない自律デスクトップ自動化スタック
2026年現在、大手クラウドAPI(Claude 3.5/3.7 Sonnet, GPT-4o等)のComputer Useは、画面キャプチャ内のNSFW要素(同人ゲーム、成人向けアート、プライベートな創作物など)を検知すると即座にセーフティフィルター(Safety Block)が作動し、制御が停止します。
これを回避するためのプロンプトハックは対策されやすく、アカウントBANのリスクが伴います。そのため、「最初から制限が存在しないローカルVision-Language Model (VLM) + pyautogui」の完全ローカル構成が唯一の現実的な本命解となります。RTX 3090 (24GB) 環境であれば、Qwen2.5-VL (7B/14B) とComfyUIを同一VRAM上で高スループットかつ安全に共存・運用可能です。
2026年時点における、主要クラウドAIモデルのComputer Use(画面操作)機能におけるセーフティ挙動は以下の通りです。
| モデル/API | 検知トリガー | フィルター作動時の挙動 | 規約上のリスク |
|---|---|---|---|
| Anthropic Claude (Sonnet) | 送信されたスクリーンショット内の肌露出、成人向け表現、暴力描写 | APIが 400 Bad Request または Safety Policy Violation を返して即時切断 |
アカウントの即時一時停止、または永久BAN |
| OpenAI GPT-4o / Operator | 入力画像および出力テキスト(DOM解析結果含む)のマルチモーダル検知 | 「このコンテンツはポリシーに反します」等のエラーを返し、実行エージェントが停止 | API利用規約(ToS)違反によるAPIキーの剥奪 |
| Google Gemini (Pro) | Safety Settings(調整可能だがNSFWは完全解除不可)による自動ブロック | レスポンスの finishReason が SAFETY となり、座標データが返らない |
プロジェクト全体の停止措置 |
重要 フィルター回避術(画像のモザイク処理や、プロンプトでの欺瞞)は、APIプロバイダ側のマルチモーダル検知の進化により2026年現在ほぼ無効化されています。また、規約違反によるアカウントBANは、開発・運用パイプライン全体の崩壊を招きます。
フィルター回避ではなく、「最初から検知・制限システムが存在しないローカル設計」との比較です。
| 比較項目 | 大手クラウドAPI構成 (Claude等) | ローカルVLM構成 (Qwen2.5-VL + pyautogui) | 判定 |
|---|---|---|---|
| コンテンツ制限 | 極めて厳格(NSFW、ゲーム画面、個人情報で停止) | 完全無制限(ローカルモデルのため検知機構なし) | ローカル勝利 |
| ランニングコスト | 従量課金(画面送信頻度が高いため、1時間あたり数ドル〜数十ドル) | 電気代のみ(完全無料) | ローカル勝利 |
| 画面認識・座標精度 | 非常に高い(OSWorldベンチマーク上位) | 実用レベル(Qwen2.5-VL-7B/14BはUI座標特定に特化) | クラウド優位 |
| ネットワーク依存 | 必須(オフライン動作不可) | 不要(完全スタンドアロンで動作可能) | ローカル勝利 |
| 初期導入コスト | APIキー取得のみ(即時利用可能) | GPU(RTX 3090等)の用意、環境構築の手間が必要 | クラウド優位 |
VRAM 24GBを搭載した RTX 3090 および ローカルComfyUI 環境に最適化された、2026年現在の推奨オープンソーススタックです。
Qwen2.5-VL-7B-Instruct (または 14B-Instruct-AWQ)
vLLM または Ollama
pyautogui + PyDirectInput
PyDirectInput が必須となります(キーボード/マウス入力のシミュレーション制限を突破するため)。
ComfyUI-to-Python-Extension または WebSocket API
以下は、ローカルで起動したQwen2.5-VLに対してスクリーンショットを送信し、指定した要素(例: 「ログインボタン」)の座標を取得して pyautogui でクリックするPythonコードの実装例です。
import time
import pyautogui
from mss import mss
from openai import OpenAI
# 1. ローカルvLLM / Ollamaサーバーへの接続設定 (OpenAI互換API)
client = OpenAI(
base_url="http://localhost:11434/v1", # Ollamaのデフォルトポート
api_key="local-no-limit"
)
def capture_screen():
with mss() as sct:
# メインモニターのスクリーンショットを取得し保存
monitor = sct.monitors[1]
screenshot = sct.grab(monitor)
img_path = "screenshot.png"
import mss.tools
mss.tools.to_png(screenshot.rgb, screenshot.size, output=img_path)
return img_path, monitor["width"], monitor["height"]
def get_click_coordinate(image_path, target_element):
# Qwen2.5-VL等に対して、座標出力を要求するプロンプト
# モデルは [ymin, xmin, ymax, xmax] の形式(0-1000正規化)で座標を返す特性を持つ
response = client.chat.completions.create(
model="qwen2.5-vl:7b-instruct",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": f"Locate the '{target_element}' on the screen and return its bounding box in [ymin, xmin, ymax, xmax] format."},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{encode_image(image_path)}"}}
]
}
],
temperature=0.0
)
return response.choices[0].message.content
def encode_image(image_path):
import base64
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
# 実行フロー
if __name__ == "__main__":
print("📸 画面をキャプチャ中...")
img, width, height = capture_screen()
target = "Play Button"
print(f"🧠 ローカルVLMで「{target}」の座標を解析中...")
raw_coords = get_click_coordinate(img, target)
# 解析された座標(例: [500, 450, 550, 550])をピクセル座標に変換
# (※ 簡易パース処理は省略。実際には正規表現等で数値を抽出します)
# 仮に中央値が x=0.45, y=0.52 と判定された場合:
target_x = int(width * 0.45)
target_y = int(height * 0.52)
print(f"🖱️ 座標へ移動してクリック: ({target_x}, {target_y})")
pyautogui.moveTo(target_x, target_y, duration=0.5)
pyautogui.click()
RTX 3090環境で「制限なしComputer Use」を構築するための、具体的なステップです。
| フェーズ | 具体的なタスク | 推奨ツール / コマンド | 目的・効果 |
|---|---|---|---|
| 1. 推論基盤の準備 | OllamaまたはvLLMをインストールし、Qwen2.5-VLをローカルにデプロイ | ollama run qwen2.5-vl:7b |
外部APIに依存しない、無制限の画像解析APIサーバーの確保 |
| 2. 操作モジュールの検証 | Python環境で画面キャプチャとマウス制御の疎通テストを実施 | pip install pyautogui mss opencv-python |
指定座標への正確な移動と、ゲーム等での入力検知回避の確認 |
| 3. ComfyUIとの統合 | ComfyUIのAPIモードを有効化し、Pythonスクリプトからワークフローを呼び出す構成を構築 | ComfyUIの「Enable Dev mode」からAPI用JSONを出力 | 画像生成・加工パイプラインと、自動操作エージェントのシームレスな連携 |
| 4. エージェントループ実装 | 「画面キャプチャ ➔ VLM解析 ➔ 操作実行 ➔ 待機」の自律ループを構築 | カスタムPythonスクリプト(上記コードの拡張) | 人間が介入しない、完全自動化タスクの実行 |
※ 本ドキュメントは2026年現在のオープンソースLLM/VLMの仕様およびハードウェア性能に基づき作成されています。
※ ローカル環境での自動化実行時は、対象アプリケーションの利用規約を事前にご確認ください。