Community코딩 & 개발github.com

OpenClaw QA 테스팅

OpenClaw QA-Lab 및 QA-Channel 시나리오, 아티팩트, 실시간 실행을 실행, 관찰, 디버깅, 확장 또는 설명합니다.

OpenClaw QA 테스팅란 무엇인가요?

이 스킬은 OpenClaw의 QA-Lab 및 QA-Channel을 활용한 엔드투엔드(E2E) 테스트 전반을 지원합니다. 사용자는 로컬 QA 환경에서 시나리오 스위트를 실행하고, 실시간 UI를 관찰하며, 실패 시 근본 원인을 파악하여 수정할 수 있습니다. 주요 기능으로는 모의(mock)와 실시간(live) 공급자 모드를 선택한 스위트 실행, OpenTelemetry(OTEL) 스모크 테스트, 캐릭터 평가(character-eval)를 통한 스타일/페르소나 검증, Codex CLI 모델 테스트, WhatsApp 및 Telegram 자격 증명 관리 등이 있습니다. 이 스킬은 Convex와 1Password를 통한 안전한 자격 증명 관리 방식을 따르며, 비밀 값이 로그나 증명물에 노출되지 않도록 주의합니다. 기본 워크플로는 시나리오 팩과 스위트 구현을 읽고, 적절한 실행 차선(lane)을 결정한 후 `pnpm openclaw qa suite` 명령어로 테스트를 실행하고 결과를 관찰하는 것입니다. 캐릭터 평가를 위한 `qa character-eval` 명령어와 Codex CLI 모델을 사용한 `codex-cli/<codex-model>` 참조도 지원합니다. 이 스킬은 OpenClaw 저장소 로컬 QA에 한정되며, CI 환경에서의 Convex 자격 증명 임대, Docker 실행, GitHub Actions 워크플로 디스패치 등 고급 시나리오도 포함합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/openclaw-qa-testing

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

OpenClaw QA 테스팅은(는) 무엇을 하나요?

이 스킬은 qa-lab / qa-channel 작업에 사용합니다. 저장소 로컬 QA만 해당됩니다.

먼저 읽기

  • docs/concepts/qa-e2e-automation.md
  • docs/help/testing.md
  • docs/channels/qa-channel.md
  • qa/README.md
  • qa/scenarios/index.yaml
  • extensions/qa-lab/src/suite.ts
  • extensions/qa-lab/src/character-eval.ts

모델 정책

  • 일반 실시간 스위트 실행은 QA Lab의 소스 및 인증 인식 기본값을 사용합니다.
  • 기본적으로 --model, --alt-model 또는 --fast를 전달하지 마십시오. --fast를 생략한다고 fast가 비활성화되는 것은 아닙니다. fast 동작은 소스가 소유합니다.
  • 시나리오별 실행의 경우 execution.summary가 권위를 가지며, 다른 플래그가 필요한 경우를 포함하여 일반 기본 지침을 재정의합니다. execution.config.requiredProvider 또는 requiredModel에서 요구하는 경우에만 명시적 제공자/모델 핀을 추가하십시오.

기본 워크플로

  1. 시나리오 팩과 현재 스위트 구현을 읽습니다.
  2. 실행 차선을 결정합니다:
    • mock/dev: mock-openai
    • 실시간 검증: live-frontier
  3. 일반 실시간 스위트의 경우 다음을 사용합니다:
pnpm openclaw qa suite \
  --provider-mode live-frontier \
  --output-dir .artifacts/qa-e2e/run-all-live-frontier-<tag>
  1. 출력을 관찰합니다:
    • 요약: .artifacts/qa-e2e/run-all-live-frontier-<tag>/qa-suite-summary.json
    • 보고서: .artifacts/qa-e2e/run-all-live-frontier-<tag>/qa-suite-report.md
  2. 사용자가 실시간 UI를 관찰하려면 현재 openclaw-qa 수신 포트를 찾아 http://127.0.0.1:<port>를 보고합니다.
  3. 시나리오가 실패하면 제품 또는 하네스의 근본 원인을 수정한 후 전체 차선을 다시 실행합니다.

OTEL 스모크

로컬 QA-Lab OpenTelemetry 검증을 위해 다음을 사용합니다:

pnpm qa:otel:smoke

이 명령은 로컬 OTLP/HTTP 트레이스 수신기를 시작하고, otel-trace-smoke 시나리오를 qa-channel을 통해 실행하며, 내보낸 protobuf 스팬을 디코딩하고, 내보낸 트레이스 이름과 개인정보 보호 계약을 검증합니다. Opik, Langfuse 또는 외부 수집기 자격 증명이 필요하지 않습니다.

QA 자격 증명 및 1Password

  • 이 저장소에서 QA 비밀 조회를 위해 tmux 내에서만 op을 사용합니다.
  • tmux 내에서 빠른 인증 확인:
op account list
  • 승인된 1Password 항목 및 필드 참조를 확인합니다:
    • OPENCLAW_QA_CONVEX_SITE_URL
    • OPENCLAW_QA_CONVEX_SECRET_MAINTAINER (유지보수자 역할)
    • OPENCLAW_QA_CONVEX_SECRET_CI (CI 역할)
  • 필요한 참조가 누락되었거나 오래된 경우, 현재 항목 및 필드 참조를 유지보수자/운영자에게 문의하십시오. 채팅에 비밀 값을 요청하거나 로그 또는 증명 아티팩트에 복사하지 마십시오.
  • npm Telegram Docker 차선은 Convex 자격 증명 임대가 필요합니다. 임대는 Telegram E2E userbot에 정의된 Test Server SUT 봇, QA 사용자 권한 부여 및 테스트 그룹 메타데이터를 제공합니다. 직접 Telegram 토큰 변수는 필요한 Convex 구성을 대체하지 않습니다.
  • 승인된 사이트 URL 및 역할별 비밀을 승인된 비밀 소스를 통해 명령어 환경에 로드합니다. 사전 점검에는 Docker 실행 전에 사이트 URL과 일치하는 역할 비밀이 필요합니다.
  • 유지보수자 구성이 로드된 상태에서 다음을 실행합니다:
OPENCLAW_NPM_TELEGRAM_CREDENTIAL_SOURCE=convex \
OPENCLAW_NPM_TELEGRAM_CREDENTIAL_ROLE=maintainer \
OPENCLAW_NPM_TELEGRAM_PROVIDER_MODE=mock-openai \
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC="openclaw@beta" \
pnpm test:docker:npm-telegram-live
  • scripts/e2e/npm-telegram-live-runner.ts는 OPENCLAW_NPM_TELEGRAM_PROVIDER_MODE를 읽으며, OPENCLAW_QA_PROVIDER_MODE를 읽지 않습니다.
  • 승인된 호스팅 증명의 경우, qa-live-shared 환경에 유효한 Convex CI 구성이 있을 때 기존 수동 차선을 사용합니다. 디스패치는 자격 증명을 프로비저닝하거나 자격 증명 거부를 우회하지 않습니다.
ghx workflow run "NPM Telegram Beta E2E" --repo openclaw/openclaw --ref main \
  -f [email protected] \
  -f [email protected] \
  -f provider_mode=mock-openai
  • 디스패치 URL에서 정확한 실행 ID를 폴링합니다. gh run view --json artifacts는 지원되지 않습니다. 다음을 사용하여 아티팩트를 나열합니다:
gh api repos/openclaw/openclaw/actions/runs/<run-id>/artifacts

WhatsApp 실시간 자격 증명

Convex kind=whatsapp 자격 증명을 설정하거나 교체할 때 사용합니다.

  • WhatsApp QA 자격 증명은 생성된 픽스처가 아닌 운영자 소유의 실시간 계정으로 취급합니다.
  • 두 개의 전용 WhatsApp 지원 테스트 번호(드라이버 계정 1개, SUT 계정 1개)를 사용합니다. 개인 번호나 공유 풀의 개인 OpenClaw WhatsApp 계정을 사용하지 마십시오.
  • WhatsApp 또는 WhatsApp Business로 각 계정을 수동으로 등록하고 연결하며, 웹 인증만 저장소 외부의 격리된 로컬 인증 디렉토리에 저장합니다.
  • 그룹 커버리지를 위해 두 QA 계정을 모두 포함하는 전용 테스트 그룹을 만들고 해당 JID를 groupJid로 저장합니다. 그렇지 않으면 그룹 멘션 게이팅 시나리오는 기본적으로 건너뛰어야 하며 명시적으로 요청될 때 실패해야 합니다.
  • 두 개의 Baileys 인증 디렉토리를 base64 .tgz 페이로드 필드로 패키징하고 새 활성 Convex 자격 증명 행을 추가합니다. 자격 증명을 제자리에서 덮어쓰는 것보다 새 행을 추가하고 오래된/손상된 행을 비활성화하는 것이 좋습니다.
  • 예상 페이로드 필드: driverPhoneE164, sutPhoneE164, driverAuthArchiveBase64, sutAuthArchiveBase64, 선택적 groupJid.
  • 자격 증명 자료를 저장소, 로그, PR 및 스크린샷에 보관하지 마십시오. 운영자가 로컬 디버깅을 명시적으로 요청하지 않는 한 전화번호를 숨깁니다.
  • pnpm openclaw qa whatsapp --credential-source convex --credential-role maintainer --provider-mode mock-openai로 검증하고 아티팩트 경로와 편집된 통과/실패 요약을 보존합니다.
  • WhatsApp이 연결된 웹 세션을 만료하거나 무효화하는 경우 로컬에서 다시 연결하고, 새 인증 아카이브를 패키징하고, 새 Convex 행을 추가한 다음 오래된 행을 비활성화합니다.

캐릭터 평가

qa character-eval을 사용하여 여러 실시간 모델에 걸친 스타일/페르소나/바이브 검사를 수행합니다.

pnpm openclaw qa character-eval \
  --output-dir .artifacts/qa-e2e/character-eval-<tag>
  • 로컬 QA 게이트웨이 자식 프로세스를 실행하며 Docker를 사용하지 않습니다.
  • 패키징된 pnpm build는 설계상 QA Lab + qa-channel을 생략합니다(소스 체크아웃 전용). 빌드된 dist에서 openclaw qa/qa-channel을 실행하려면 OPENCLAW_BUILD_PRIVATE_QA=1 pnpm build로 빌드하거나(dist/plugin-sdk/qa-lab.js, qa-runtime.js, dist/extensions/{qa-lab,qa-channel} 생성) pnpm dev를 통해 실행합니다.
  • 모델 플래그가 없으면 캐릭터 평가는 현재 소스 정의된 후보, 판사, 사고 및 빠른 기본값을 사용합니다.
  • --model provider/model,thinking=<level>[,fast|,no-fast|,fast=<bool>] 또는 --judge-model ...을 반복하여 해당 인벤토리를 명시적으로 교체할 때만 사용합니다.
  • 별도의 --model-thinking을 사용하여 새 예제를 추가하지 마십시오. 해당 플래그는 레거시 호환성으로만 유지합니다.
  • 보고서에는 판사 순위, 실행 통계, 기간 및 전체 대화 내용이 포함됩니다. 원시 판사 응답은 포함하지 마십시오. 기간은 벤치마크 컨텍스트이며 채점 신호가 아닙니다.
  • 후보 및 판사 동시 실행 기본값은 16입니다. --concurrency <n> 및 --judge-concurrency <n>을 사용하여 로컬 게이트웨이 또는 제공자 제한이 더 완만한 차선이 필요할 때 재정의합니다.
  • 시나리오 소스는 qa/scenarios/ 아래에 YAML 전용입니다: index.yaml과 시나리오별 *.yaml 파일을 title, scenario, 선택적 flow와 함께 사용합니다. qa-scenario / qa-flow 펜스 처리된 Markdown 파일을 추가하지 마십시오.
  • 격리된 캐릭터/페르소나 평가를 위해 시나리오 흐름에서 페르소나를 SOUL.md에 쓰고 IDENTITY.md를 비워 둡니다. 일반 OpenClaw 아이덴티티가 캐릭터와 결합되는 방식을 의도적으로 테스트할 때만 SOUL.md + IDENTITY.md를 사용합니다.
  • 프롬프트를 자연스럽고 작업 지향적으로 유지합니다. 후보 모델은 SOUL.md를 통해 캐릭터 설정을 받은 다음 채팅, 작업 공간 도움말, 작은 파일 작업과 같은 일반 사용자 턴을 수행해야 합니다. "어떻게 반응하겠습니까?"라고 묻거나 모델에게 평가 중임을 알리지 마십시오.
  • 작은 작업 공간 아티팩트를 생성하거나 편집하는 등 최소한 하나의 실제 작업을 선호하여 대화 내용이 순수한 롤플레이 대신 정상적인 도구 사용에서 캐릭터를 포착하도록 합니다.

Codex CLI 모델 차선

QA가 모델 백엔드로 Codex를 실행해야 할 때마다 codex-cli/<codex-model> 형태의 모델 참조를 사용합니다.

예시:

pnpm openclaw qa suite \
  --provider-mode live-frontier \
  --model codex-cli/<codex-model> \
  --alt-model codex-cli/<codex-model> \
  --scenario <scenario-id> \
  --output-dir .artifacts/qa-e2e/codex-<tag>
pnpm openclaw qa manual \
  --model codex-cli/<codex-model> \
  --message "Reply exactly: CODEX_OK"
  • 구체적인 Codex 모델 이름은 사용자/구성 입력으로 취급합니다. 소스, 문서 예제 또는 시나리오에 하드코딩하지 마십시오.
  • 실시간 QA는 CODEX_HOME을 보존하여 Codex CLI 인증/구성이 작동하도록 하면서 HOME 및 OPENCLAW_HOME은 샌드박싱된 상태로 유지합니다.
  • 모의 QA는 CODEX_HOME을 정리해야 합니다.
  • Codex가 매 턴마다 폴백/인증 텍스트를 반환하는 경우 시나리오 어설션을 변경하기 전에 먼저 CODEX_HOME, 관련 비밀 기반 인증 및 게이트웨이 자식 로그를 확인합니다.
  • 모델 비교를 위해 qa character-eval에 codex-cli/<codex-model>을 다른 후보로 포함합니다. 보고서는 이를 불투명한 모델 이름으로 레이블을 지정해야 합니다.

저장소 정보

  • 시드 시나리오는 qa/scenarios/index.yaml 및 qa/scenarios/<theme>/*.yaml에 있습니다.
  • 주요 실시간 실행기: extensions/qa-lab/src/suite.ts
  • QA 랩 서버: extensions/qa-lab/src/lab-server.ts
  • 자식 게이트웨이 하네스: extensions/qa-lab/src/gateway-child.ts
  • 합성 채널: extensions/qa-channel/

"완료"의 의미

  • 요청된 차선에 대해 전체 스위트가 통과(녹색)입니다.
  • 사용자는 다음을 받습니다:
    • 해당되는 경우 감시 URL
    • 통과/실패 횟수
    • 아티팩트 경로
    • 수정된 사항에 대한 간결한 메모

일반적인 실패 패턴

  • 실시간 시간 제한이 너무 짧음:
    • extensions/qa-lab/src/suite.ts에서 실시간 대기 시간을 늘립니다.
  • 검색이 저장소 파일을 찾을 수 없음:
    • 시드된 작업 공간 내에서 repo/...에 프롬프트를 지정합니다.
  • 하위 에이전트 증명이 너무 취약함:
    • 일시적인 자식 세션 목록보다 안정적인 최종 응답 증거를 선호합니다.
  • 하네스 "재빌드" 지연:
    • 더티 트리는 실행 전 빌드를 트리거할 수 있습니다. 포트가 나타나기 전에 이를 예상합니다.

시나리오 추가 시

  • qa/scenarios/ 아래에 시나리오 YAML을 추가하거나 업데이트합니다. .md 시나리오 파일이나 펜스 처리된 YAML 블록을 추가하지 마십시오.
  • qa/scenarios/index.yaml의 시작 기대치를 정렬합니다.
  • extensions/qa-lab/src/suite.ts에 실행 가능한 커버리지를 추가합니다.
  • 모의 전용 검사보다 종단 간 어설션을 선호합니다.
  • 출력을 .artifacts/qa-e2e/ 아래에 저장합니다.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Grok Build, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills and agent Templates when requested; add Templates; install, verify, update, uninstall, publish, or sync skills.

관련 스킬