OpenClawセットアップ:Docker、Chromium、noVNCを使用したヒューマンインザループブラウザ自動化

r/openclawの開発者が、自動化されたブラウザセッション中にCAPTCHA解決や承認などの人間参加型タスクをOpenClawで処理できる設定を文書化しました。このソリューションは、必要時にリモート介入を可能にするため、Chromium、noVNC、および関連ツールを備えたDockerコンテナを使用します。
仕組み
エージェントはChrome DevTools Protocol(CDP)を介してヘッドレスブラウザを操作します。CAPTCHAに遭遇したり、人間の承認が必要な場合、Telegram通知を送信します。ユーザーはスマートフォンやノートパソコンでnoVNCのURLを開き、ブラウザを表示して操作した後、「完了」と返信してエージェントに続行させます。この設定には約300MBのRAMと3秒のコールドスタート時間が必要です。
実用的な応用
開発者は、OpenClawに宅配便の集荷を予約させることでこの設定をテストしました。送り状やメールの写真を提供した後、エージェントはオンラインフォームに入力し、日付を選択して送信し、開発者はnoVNC経由で監視しました。Claude Opus 4.6のChromiumウィジェットは同じタスクでナビゲーションループに陥りましたが、OpenClawは予約を完了したと指摘しています。
技術的な実装
Dockerコンテナは以下を実行します:
- 仮想ディスプレイ用のXvfb
- Playwrightを備えたChromium
- リモート表示用のx11vncとnoVNC
- プロセス管理用のsupervisord
ボットはコンテナ内からCDP経由でChromiumを制御し、ユーザーはnoVNC経由で任意のデバイスからブラウザを表示します(アプリは不要)。
セキュリティ対策
- noVNCはTailscale経由でのみアクセス可能(クライアントデバイスはtailnetの一部である必要あり)
- CDPポートはlocalhostのみにバインド
- コンテナはホストのファイルシステムにアクセス不可
- Chromiumは非特権で実行
- パスワード/2FAはnoVNCクリップボードパネルで直接処理
追加の強化
- Dockerヘルスチェック:30秒ごとにCDPをポーリング、3回のリトライ後に異常と判定
- リソース制限:1GB RAM + 2 CPU
- タブプルーナー:最大5タブを維持、空白タブを閉じる、5分ごとに実行
- コンテナはホストマウントなしで隔離されたまま
Docker設定
DockerfileはUbuntu 24.04を使用し、以下をインストールします:
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
ENV DISPLAY=:99
ENV RESOLUTION=1920x1080x24
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates xvfb x11vnc fonts-liberation \
dbus-x11 supervisor curl gnupg websockify novnc \
&& rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& npx playwright install --with-deps chromium \
&& rm -rf /var/lib/apt/lists/*
RUN useradd -m -s /bin/bash browser \
&& mkdir -p /home/browser/.cache \
&& cp -r /root/.cache/ms-playwright /home/browser/.cache/ \
&& chown -R browser:browser /home/browser
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY start-chromium.sh /usr/local/bin/start-chromium.sh
RUN chmod +x /usr/local/bin/start-chromium.sh
RUN ln -sf /usr/share/novnc/vnc.html /usr/share/novnc/index.html
EXPOSE 6080 9222
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor/conf.d/supervisord.conf"]
supervisord.confは4つのプロセスを管理します:Xvfb、Chromium、x11vnc、noVNC/websockify。
start-chromium.shスクリプトは、CDPアクセスのための--remote-debugging-port=9222 --remote-debugging-address=0.0.0.0を含む特定のフラグでChromeを起動します。
今後の課題
開発者は、noVNCにトークン認証を追加し、アイドルタイムアウト後の自動停止機能を実装する予定です。
📖 完全なソースを読む: r/openclaw
👀 See Also

ChatGPTの履歴をOpenClawメモリシステムにエクスポート
Redditユーザーが、ai-chat-md-exportツールを使用してChatGPTの数年にわたる会話履歴をエクスポートし、OpenClawのメモリシステムにインポートするプロセスを共有しています。これにより、ローカルのAIエージェントが過去のコンテキストにアクセスできるようになります。

多段階AIエージェントにおける状態ドリフトを軽減する実践的手法
開発者がマルチエージェントワークフローにおける状態ドリフトを修正する具体的な方法を共有します。これには、スナップショットベースの読み取り、追加のみの書き込み、状態とコンテキストの分離が含まれます。これらのアプローチにより、実行の再現性が向上し、デバッグが追跡可能になりました。

OpenCLAWメモリの実際の仕組み:エージェントの「忘れ」を修正する
OpenCLAWエージェントは会話間で永続的なメモリを持たず、各セッションでSOUL.md、USER.md、MEMORY.mdなどのファイルからコンテキストを再構築します。一般的な「忘れる」問題は、セッションの肥大化、構造化されていないメモリファイル、チャット履歴と永続ストレージの混同に起因します。

SOUL.mdルールは、長時間のAIエージェントセッションでドリフトする問題とその修正方法
SOUL.mdのルールは最初の10〜15メッセージでは完璧に機能しますが、会話のコンテキストが初期のシステムプロンプトを上書きするため、メッセージ20〜30あたりからずれ始めます。解決策は、個別のタスクごとにセッションをリセットするため、/newをより積極的に使用することです。