ローカルAIデスクトップエージェント最新2026_自律アプリ操作_OSS_NSFW

cc3 / dr_gemini / 2026-06-03


2026年現在、ローカルLLM/VLM(視覚言語モデル)の進化により、API不要・完全ローカルで動作する自律デスクトップAIエージェントの実用性は極めて高くなっています。

特にRTX 3090(VRAM 24GB)という個人最高峰の環境において、**クリスタ(Clip Studio Paint)のような「OSのアクセシビリティツリーが効かない(独自UIの)グラフィックソフト」を操作する場合、選択すべきOSSとモデルはほぼ一択**に絞られます。

以下、主要OSSの比較と、RTX 3090環境における最適解、および具体的な導入手順を解説します。

---

### 1. 主要OSS・モデルの比較(2026年最新基準)

RTX 3090(VRAM 24GB)でローカル実行することを前提とした比較です。

| 項目 | **UI-TARS (最有力)** | **Open Interpreter** | **Agent-S** | **Self-Operating Computer** | **OpenAdapt** |
| :--- | :--- | :--- | :--- | :--- | :--- |
| **導入難易度** | **中** (Python/vLLM構築) | **低** (pip install中心) | **高** (OSWorld依存) | **中** (API/ローカル混在) | **中** (RPA的UI) |
| **必要GPU (24GB)**| 7B/8Bモデルで余裕 (12〜16GB) | 使用するVLMに依存 | VLM+エージェントで高負荷 | 7Bクラスで動作可能 | 比較的軽量 |
| **画面認識精度** | **極めて高い** (ピクセル座標直撃) | 中〜高 (VLM依存) | 高 (HTML/OSツリー併用) | 中 (Grid選択方式) | 低〜中 (RPA記録ベース) |
| **ダイアログ堅牢さ**| **極めて高い** (視覚的に対処) | 中 (エラーコード対処) | 高 (OS連携時) | 中 | 低 (位置ズレに弱い) |
| **NSFW画像扱い** | **完全可** (検閲なし) | **完全可** (ローカル時) | **完全可** | **完全可** | **完全可** |
| **クリスタ操作性** | **実用レベル** (GUI特化) | 低〜中 (コード操作主体) | **実用不可** (ツリー取得不可)| 低 (細かい操作不可) | 低 (自動マクロレベル) |
| **ローカル完結** | **完全ローカル完結** | 完全ローカル完結可 | 完全ローカル完結可 | 完全ローカル完結可 | 完全ローカル完結可 |

#### 各OSSの2026年における立ち位置と特徴
* **UI-TARS (ByteDance/Byterum)**: GUI操作(クリック、ドラッグ、テキスト入力)に特化してファインチューニングされたVLM(Llama-3.2-VisionやQwen2.5-VLベース)。画面のスクリーンショットからダイレクトにマウスクリック座標 `(x, y)` を出力するため、クリスタのような独自UIに最も強い。
* **Open Interpreter (OS Mode)**: コード実行(Python)による自動化は最強ですが、クリスタ内の「ペンで描く」「カラーサークルから色を選ぶ」といった直感的な操作は、コード生成だけでは困難です。
* **Agent-S**: OSWorldで高スコアを記録していますが、OSのアクセシビリティ(UI Automation等)に依存するため、クリスタのキャンバス内や独自ツールバーの情報を取得できず、クリスタ操作には不向きです。
* **Self-Operating Computer**: 画面にグリッド(番号)を投影して選択させる古典的アプローチ。クリスタのような微細なスライダー操作やドラッグ操作には精度が足りません。

---

### 2. RTX 3090個人前提での「一番実用的な構成」

**結論:【UI-TARS-7B/8B-SFT】をバックエンドにし、Pythonの軽量エージェント(PyAutoGUI連携)で操作する構成。**

#### なぜこれが最適なのか?
1. **クリスタの独自UIを突破できる**: クリスタはボタンやキャンバスの内部構造をOSに開示していません。UI-TARSは「人間と同じように目で見て(Vision)、その座標をクリックする」ため、クリスタでもブラウザでも全く同じように操作できます。
2. **RTX 3090 (24GB) にジャストフィット**: UI-TARSの7B/8Bモデル(INT4/AWQ量子化)は、VRAMを約8GB〜12GBしか消費しません。推論速度も1秒以下と高速で、残りのVRAM(12GB以上)をクリスタや、ローカルの画像生成AI(Stable Diffusion XL / Flux等)の同時起動に回せます。
3. **完全ローカル・NSFW不問**: 外部API(OpenAI等)を一切通さないため、描画中のNSFW(成人向け)コンテンツがBANされる心配がありません。

---

### 3. 具体的な導入手順(UI-TARSによるローカルエージェント構築)

Windows 11(WSL2)またはLinux環境のRTX 3090を想定した、最も打率の高い導入手順です。

#### ステップ1: 仮想環境の作成と依存ライブラリのインストール
Cuda 12.xがインストールされている前提で、ターミナルを開きます。

```bash
# 仮想環境の作成
conda create -n ui-tars python=3.10 -y
conda activate ui-tars

# PyTorchとvLLM(高速推論エンジン)のインストール
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
pip install vllm

# 画面操作用ライブラリのインストール
pip install pyautogui opencv-python pillow
```

#### ステップ2: UI-TARSモデルのローカル起動 (vLLMを使用)
RTX 3090のVRAMを最適化するため、Qwen2.5-VLまたはLlama-3.2ベースの「UI-TARS-7B-SFT-DPO」の量子化版(AWQ等)をローカルサーバーとして起動します。

```bash
# vLLMを使用してOpenAI互換APIサーバーをローカルで起動
python -m vllm.entrypoints.openai.api_server \
--model bytedance-research/UI-TARS-7B-SFT-DPO \
--quantization awq \
--port 8000 \
--gpu-memory-utilization 0.5 \
--max-model-len 4096 \
--trust-remote-code
```
※ `--gpu-memory-utilization 0.5` にすることで、RTX 3090のVRAMの半分(12GB)だけを消費し、残りを別作業(クリスタや画像生成)に温存します。

#### ステップ3: エージェント実行スクリプトの作成
UI-TARSは、画面のスクリーンショットを受け取り、次に行うべきアクションを `click(x, y)` や `type("text")` などのテキストで返します。これを解釈して実行するPythonスクリプト(`agent.py`)を作成します。

```python
import os
import time
import re
import base64
from openai import OpenAI
from PIL import ImageGrab
import pyautogui

# PyAutoGUIの安全装置(画面の端にマウスを動かすと停止)
pyautogui.FAILSAFE = True

# ローカルのvLLMサーバーに接続
client = OpenAI(api_key="local-token", base_url="http://localhost:8000/v1")

def capture_screen():
# 画面全体をキャプチャして一時保存
screenshot = ImageGrab.grab()
screenshot.save("screenshot.png")
with open("screenshot.png", "rb") as f:
return base64.b64encode(f.read()).decode("utf-8")

def parse_action(action_str):
# UI-TARSの出力(例: "click(x=350, y=420)")を解析
click_match = re.search(r"click\(x=(\d+),\s*y=(\d+)\)", action_str)
type_match = re.search(r"type\(\"(.+?)\"\)", action_str)
drag_match = re.search(r"drag\(start_x=(\d+),\s*start_y=(\d+),\s*end_x=(\d+),\s*end_y=(\d+)\)", action_str)

if click_match:
x, y = map(int, click_match.groups())
return "click", (x, y)
elif type_match:
text = type_match.group(1)
return "type", text
elif drag_match:
x1, y1, x2, y2 = map(int, drag_match.groups())
return "drag", (x1, y1, x2, y2)
return "wait", None

def run_agent(instruction):
print(f"タスク開始: {instruction}")

while True:
b64_img = capture_screen()

# UI-TARSに指示と現在の画面を送信
response = client.chat.completions.create(
model="bytedance-research/UI-TARS-7B-SFT-DPO",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": f"Task: {instruction}. What is the next action? Output only the raw action code (e.g., click(x=100, y=200))."},
{"type": "image_url", "image_url": {"url": f"data:image/png;base64,{b64_img}"}}
]
}
],
max_tokens=100
)

action_str = response.choices[0].message.content.strip()
print(f"AIの思考結果: {action_str}")

if "finish" in action_str or "stop" in action_str:
print("タスクが完了しました。")
break

action_type, params = parse_action(action_str)

# 画面解像度とPyAutoGUIの座標スケーリング(必要に応じて調整)
if action_type == "click":
x, y = params
# UI-TARSは通常1000x1000の相対座標で出力するため、実解像度に変換
screen_w, screen_h = pyautogui.size()
real_x = int(x * screen_w / 1000)
real_y = int(y * screen_h / 1000)
pyautogui.click(real_x, real_y)
elif action_type == "type":
pyautogui.write(params)
elif action_type == "drag":
x1, y1, x2, y2 = params
# 同様に実解像度へ変換してドラッグ
screen_w, screen_h = pyautogui.size()
pyautogui.moveTo(int(x1 * screen_w / 1000), int(y1 * screen_h / 1000))
pyautogui.dragTo(int(x2 * screen_w / 1000), int(y2 * screen_h / 1000), duration=1.0)

time.sleep(2) # 操作間の待機(クリスタの描画・反応を待つ)

# 実行例
if __name__ == "__main__":
# クリスタを開いた状態にして実行
run_agent("クリスタで、新規キャンバスを作成し、ペンツールを選択して、画面中央に円を描いてください。")
```

### 4. クリスタ操作における「ダイアログ処理」と「堅牢さ」のコツ

クリスタ特有の挙動に対処するため、以下のハックをプロンプトやシステムに組み込むと実用性が跳ね上がります。

1. **「保存しますか?」等のポップアップ対策**:
UI-TARSは「ポップアップが出ている状態」のスクリーンショットを見れば、自動的に「保存しない」や「はい」のボタンを認識してクリックします。これは従来の座標固定RPAと異なり、ポップアップが画面のどこに出現しても視覚的に追跡できるため極めて堅牢です。
2. **キーボードショートカットの活用**:
「ペンツールを選択する」ためにツールバーを画像認識で探すより、「キーボードの 'P' を押す」方が確実です。UI-TARSへのシステムプロンプトに「クリスタを操作する際は、可能な限りショートカットキー(`press('ctrl+z')`など)を使って効率化せよ」と指示しておくと、動作の安定性が劇的に向上します。
3. **NSFW/プライバシーの担保**:
完全ローカル動作のため、クリスタで作成中のイラストがどれほど過激(NSFW)であっても、外部サーバーのフィルタリング(OpenAIのポリシー違反等)に引っかかることはなく、アカウントBANのリスクはゼロです。