Telegram Crabbox E2E Proof は何をしますか?
ボット間の証明だけでは不十分な、TelegramのPRレビューやバグ再現に使用します。目的は、エージェントが満足するまで実際のTelegramユーザーセッションを維持し、その後視覚的な証拠を添付できるようにすることです。
個人アカウントは使用しないでください。認証情報をリポジトリ、プロンプト、アーティファクトバンドルに追加しないでください。ランナーはConvexから共有バーナーアカウントをリースします。
開始
テスト対象のOpenClawリポジトリとブランチで実行します:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" start \
--tdlib-url http://artifacts.openclaw.ai/tdlib-v1.8.0-linux-x64.tgz \
--output-dir .artifacts/qa-e2e/telegram-user-crabbox/pr-review
これにより、1つの保持セッションが開始されます:
- 排他的な
telegram-userConvex認証情報をリース - 同じユーザーアカウントでTDLibとTelegram Desktopを復元
- 現在のチェックアウトからモックのOpenClaw Telegram SUTを起動
- 表示されているLinuxデスクトップで設定されたTelegramチャットを選択
- 24fpsのデスクトップ録画を開始
.artifacts/qa-e2e/telegram-user-crabbox/pr-review/session.jsonに書き込み
調査中はセッションをアクティブに保ってください。エージェントが数分間テストし、いくつかのコマンドを実行し、WebVNCを使用し、トランスクリプトを検査し、動作を理解した時点で終了することが有効です。
決定論的な視覚的な再現のためには、正確なモックモデルの応答をファイルに保存し、それを start に渡します:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" start \
--tdlib-url http://artifacts.openclaw.ai/tdlib-v1.8.0-linux-x64.tgz \
--mock-response-file .artifacts/qa-e2e/telegram-user-crabbox/reply.txt \
--output-dir .artifacts/qa-e2e/telegram-user-crabbox/pr-review
ランナーのデフォルトは --class standard、--record-fps 24、--preview-fps 24、--preview-width 1920 です。証明に特別な要件がない限り、これらのデフォルトを維持してください。
テスト中
視覚的な証拠のために、まず下部のマーカーメッセージを送信または特定し、メッセージIDでグループ/トピックを直接開きます:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" view \
--session .artifacts/qa-e2e/telegram-user-crabbox/pr-review/session.json \
--message-id <message-id>
これは xdg-open ではなく、tg://privatepost を使用してTelegram Desktopを直接操作します。また、テスト対象のデスクトップ位置でTelegramのサイズを 650x1000 に変更し、Telegramが分割/サイドバーレイアウトを維持していても、クロップでチャットペインを分離できるようにします。この後にEscapeキーを押さないでください。Escapeキーは選択したチャットを閉じる可能性があります。
下部の動作が重要です:
- 最新のメッセージへのディープリンクはTelegramを下部に固定するため、後続のメッセージが録画にライブで表示されます
- 古いメッセージへのディープリンクは新しいメッセージの自動スクロールを行いません。下矢印をクリックする代わりに、最新/最終マーカーに再度リンクしてください
- クロップされたGIFは意図的にチャットペインを使用し、デスクトップ全体やTelegramウィンドウ全体ではありません
実際のTelegramユーザーとして送信:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" send \
--session .artifacts/qa-e2e/telegram-user-crabbox/pr-review/session.json \
--text /status
スラッシュコマンドの場合は、ボットのユーザー名を省略します。ランナーはSUTボットをターゲットにします。
Crabbox上で任意のコマンドを実行:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" run \
--session .artifacts/qa-e2e/telegram-user-crabbox/pr-review/session.json \
-- bash -lc 'source /tmp/openclaw-telegram-user-crabbox/env.sh && python3 /tmp/openclaw-telegram-user-crabbox/user-driver.py transcript --limit 20 --json'
便利なリモートユーザードライバコマンド:
source /tmp/openclaw-telegram-user-crabbox/env.sh
python3 /tmp/openclaw-telegram-user-crabbox/user-driver.py status --json
python3 /tmp/openclaw-telegram-user-crabbox/user-driver.py chats --json
python3 /tmp/openclaw-telegram-user-crabbox/user-driver.py transcript --limit 20 --json
python3 /tmp/openclaw-telegram-user-crabbox/user-driver.py send --text '/status@{sut}'
python3 /tmp/openclaw-telegram-user-crabbox/user-driver.py probe --text '@{sut} Reply exactly: USER-E2E-{run}' --expect USER-E2E-
セッションを終了せずに現在のデスクトップをキャプチャ:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" screenshot \
--session .artifacts/qa-e2e/telegram-user-crabbox/pr-review/session.json
リース状態を確認し、WebVNCコマンドを取得:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" status \
--session .artifacts/qa-e2e/telegram-user-crabbox/pr-review/session.json
終了
常に終了するか、明示的にボックスを保持します:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" finish \
--session .artifacts/qa-e2e/telegram-user-crabbox/pr-review/session.json \
--preview-crop telegram-window
finish は録画を停止し、モーショントリムされたMP4/GIFアーティファクトを作成し、最終スクリーンショットとログをキャプチャし、Convex認証情報を解放し、ローカルSUTを停止し、Crabboxリースを停止します。--preview-crop telegram-window は、テスト済みのTelegram証明ウィンドウから固定ジオメトリのGIFを作成し、クリーンなサイドバイサイドのPRテーブルを実現します。完全なデスクトップビデオ/GIFはアーティファクトディレクトリに残ります。認証情報が解放された後、人間がVNCデバッグを続行する必要がある場合にのみ --keep-box を渡します。
障害や中断後は、クリーンアップを確認します:
crabbox list --provider aws
セッションファイルが存在し、認証情報がまだリースされている可能性がある場合は、再試行する前にそのセッションファイルで finish を実行します。
証明を添付
ログが必要でない限り、有用な視覚アーティファクトのみをPRに添付します。ランナーはデフォルトでGIFのみです:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" publish \
--session .artifacts/qa-e2e/telegram-user-crabbox/pr-review/session.json \
--pr <pr-number> \
--summary 'Telegram real-user Crabbox session motion GIF'
これにより、有用なGIFのみが一時的な公開バンドルにコピーされ、そのGIFがコメントされます。finish --preview-crop telegram-window がクロップされたGIFを生成した場合は、publishがそれを使用します。そうでない場合は telegram-user-crabbox-session-motion.gif を使用します。PRにログやJSON出力が必要な場合にのみ --full-artifacts を使用します。認証情報ペイロード、ローカルのenvファイル、TDLibデータベース、Telegram Desktopプロファイル、または生のセッションアーカイブを公開しないでください。
before/after証明の場合は、main で1つのセッション、PRヘッドでもう1つのセッションを実行し、クリーンなバンドルから目的のGIFのみを公開します:
mkdir -p .artifacts/qa-e2e/telegram-user-crabbox/pr-123/comparison
cp <main-output>/telegram-user-crabbox-session-motion-telegram-window.gif \
.artifacts/qa-e2e/telegram-user-crabbox/pr-123/comparison/main-before.gif
cp <pr-output>/telegram-user-crabbox-session-motion-telegram-window.gif \
.artifacts/qa-e2e/telegram-user-crabbox/pr-123/comparison/pr-after.gif
crabbox artifacts publish \
--repo openclaw/openclaw \
--pr 123 \
--dir .artifacts/qa-e2e/telegram-user-crabbox/pr-123/comparison \
--summary 'Telegram before/after proof' \
--no-comment
その後、これら2つのURLを含む簡潔なマークダウンテーブルを投稿します。スクリーンショット、生のビデオ、ログ、セッションJSON、またはクロップ実験を含む作業ディレクトリは、それらのアーティファクトが明示的に必要でない限り公開しないでください。
クイックスモーク
高速なワンショットチェックには、以下を使用します:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" --text /status
これはstart/send/finishのショートカットです。PRレビュー、問題再現、またはエージェントが複数回試行する必要があるタスクには、保持セッションを推奨します。