mcpField
T
telegram-crabbox-e2e-proof

telegram-crabbox-e2e-proof

github.com/openclawテスト・品質393.3k273 回インストール今日更新
リポジトリ

telegram-crabbox-e2e-proof について

Crabbox 上の実際の Telegram ユーザーセッションで OpenClaw の動作を再現・確認するスキルです。調査中はセッションを維持し、PR 用の視覚資料を作成します。

主な機能

  1. 01共有の使い捨てアカウントを借用
  2. 02OpenClaw Telegram のモック SUT を実行
  3. 03テスト用デスクトップセッションの維持
  4. 04スクリーンショットと動画の記録
  5. 05選択した GIF 証跡の公開

活用シーン

  1. 01レビュー対象の Telegram 問題の再現
  2. 021 セッション内で複数コマンドをテスト
  3. 03PR 用の視覚的な証拠の取得
  4. 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-user Convex 認証情報をリースします
  • 同じユーザーアカウントで 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 のレビュー、問題の再現、またはエージェントが何度か試行する可能性のあるタスクでは、セッションを保持する方法をおすすめします。

コメント