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
이 명령은 하나의 유지된 세션을 시작합니다:
- 독점
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는 그 GIF를 사용합니다. 그렇지 않으면 telegram-user-crabbox-session-motion.gif를 사용합니다. PR에 로그나 JSON 출력이 필요한 경우에만 --full-artifacts를 사용하십시오. 자격 증명 페이로드, 로컬 env 파일, TDLib 데이터베이스, Telegram Desktop 프로필 또는 원시 세션 아카이브를 게시하지 마십시오.
전후 증명을 위해, main에서 한 세션과 PR 헤드에서 한 세션을 실행한 다음, 깨끗한 번들에서 의도된 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
그런 다음 해당 두 URL로 간결한 마크다운 테이블을 게시하십시오. 명시적으로 필요하지 않은 경우 스크린샷, 원시 비디오, 로그, 세션 JSON 또는 크롭 실험이 포함된 작업 디렉토리를 게시하지 마십시오.
빠른 확인
빠른 일회성 확인을 위해 다음을 사용하십시오:
proof_cmd="${OPENCLAW_TELEGRAM_USER_PROOF_CMD:-openclaw-telegram-user-crabbox-proof}""$proof_cmd" --text /status
이는 start/send/finish 단축키입니다. PR 리뷰, 문제 재현 또는 에이전트가 여러 번 시도해야 할 수 있는 작업에는 유지된 세션을 선호하십시오.