telegram-crabbox-e2e-proof について
Crabbox 上の実際の Telegram ユーザーセッションで OpenClaw の動作を再現・確認するスキルです。調査中はセッションを維持し、PR 用の視覚資料を作成します。
主な機能
- 01共有の使い捨てアカウントを借用
- 02OpenClaw Telegram のモック SUT を実行
- 03テスト用デスクトップセッションの維持
- 04スクリーンショットと動画の記録
- 05選択した GIF 証跡の公開
活用シーン
- 01レビュー対象の Telegram 問題の再現
- 021 セッション内で複数コマンドをテスト
- 03PR 用の視覚的な証拠の取得
- 04main と PR ブランチの動作比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ openclaw/ openclaw --skill telegram-crabbox-e2e-proofインストール後、Claude Code で/telegram-crabbox-e2e-proofを入力して読み込まれたか確認します。
詳細
Telegram Crabbox E2E の証拠
ボット同士のやり取りだけでは不十分な場合に、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
シナリオで Telegram のリンクプレビューを明示的に有効または無効にする必要がある場合は、Gateway の起動前に SUT の設定を指定します。
"$proof_cmd" start \
--tdlib-url http://artifacts.openclaw.ai/tdlib-v1.8.0-linux-x64.tgz \
--link-preview false \
--mock-response-chunk-delay-ms 1200 \
--mock-response-file .artifacts/qa-e2e/telegram-user-crabbox/reply.txt \
--output-dir .artifacts/qa-e2e/telegram-user-crabbox/pr-review
生成された設定を編集したり、保持中のセッションの Gateway を再起動してこの設定を適用したりしないでください。これはランナーのライフサイクル管理とクリーンアップの責任を迂回します。チャンク遅延により、設定された返信が 2 つのストリーミングデルタに分割されるため、録画には最初のプレビューと、その後のインプレース編集を表示できます。
ランナーのデフォルトは --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 ではなく、Telegram Desktop で tg://privatepost を直接使用します。また、テスト対象のデスクトップ上の位置で Telegram のサイズを 650x1000 に変更するため、Telegram が分割/サイドバーのレイアウトを維持していても、チャットペインだけを切り抜けます。この後に 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 証拠ウィンドウから、PR の比較表に適した固定ジオメトリの GIF も作成します。デスクトップ全体の動画/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 が生成されている場合はそれが公開され、そうでない場合は telegram-user-crabbox-session-motion.gif が使われます。PR にログや JSON 出力が必要な場合に限り、--full-artifacts を使用してください。認証情報のペイロード、ローカルの環境ファイル、TDLib データベース、Telegram Desktop プロファイル、生のセッションアーカイブは絶対に公開しないでください。
変更前と変更後の証拠を用意するには、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 を記載した簡潔な Markdown テーブルを投稿してください。スクリーンショット、生の動画、ログ、セッション JSON、トリミングの試行データを含む作業ディレクトリは、それらの成果物が明示的に必要な場合を除き、公開しないでください。
簡易スモークテスト
手早く 1 回だけ確認するには、次を使用します。
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}"
"$proof_cmd" --text /status
これは start/send/finish をまとめて実行するショートカットです。PR のレビュー、問題の再現、またはエージェントが何度か試行する可能性のあるタスクでは、セッションを保持する方法をおすすめします。