Run, watch, debug, extend, or explain OpenClaw qa-lab and qa-channel scenarios, artifacts, and live lanes.
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-openclaw-qa-testing-4ea2c7e03c67 ,按照其中的说明把「openclaw-qa-testing」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
Use this skill for qa-lab / qa-channel work. Repo-local QA only.
docs/concepts/qa-e2e-automation.mddocs/help/testing.mddocs/channels/qa-channel.mdqa/README.mdqa/scenarios/index.yamlextensions/qa-lab/src/suite.tsextensions/qa-lab/src/character-eval.ts--model, --alt-model, or --fast by default. Omitted
--fast does not mean fast is disabled; fast behavior is source-owned.execution.summary is authoritative
and overrides generic default guidance, including when it requires other
flags. Add explicit provider/model pins only when
execution.config.requiredProvider or requiredModel requires them.mock-openailive-frontierpnpm openclaw qa suite \
--provider-mode live-frontier \
--output-dir .artifacts/qa-e2e/run-all-live-frontier-<tag>
.artifacts/qa-e2e/run-all-live-frontier-<tag>/qa-suite-summary.json.artifacts/qa-e2e/run-all-live-frontier-<tag>/qa-suite-report.mdopenclaw-qa listen port and report http://127.0.0.1:<port>.For local QA-lab OpenTelemetry validation, use:
pnpm qa:otel:smoke
This starts a local OTLP/HTTP trace receiver, runs the otel-trace-smoke
scenario through qa-channel, decodes the emitted protobuf spans, and verifies
the exported trace names and privacy contract. It does not require Opik,
Langfuse, or external collector credentials.
op only inside tmux for QA secret lookup in this repo.op account list
OpenClawTelegram E2EOPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKENOPENCLAW_QA_TELEGRAM_SUT_BOT_TOKENOPENCLAW_QA_PROVIDER_MODEOPENCLAW_NPM_TELEGRAM_PACKAGE_SPECOpenClawOPENCLAW_QA_CONVEX_SITE_URLOPENCLAW_QA_CONVEX_SECRET_MAINTAINEROPENCLAW_QA_CONVEX_SECRET_CIPrivateOPENCLAW QA, Convex, TelegramOPENCLAW_QA_TELEGRAM_GROUP_ID may be stored separately from Telegram E2EOPENCLAW_QA_TELEGRAM_GROUP_IDOpenClaw/OPENCLAW_QA_CONVEX_SITE_URL; if that is stale or unclear, ask for the active pool URL before runningOPENCLAW_QA_TELEGRAM_GROUP_ID="..." \
OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN="..." \
OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN="..." \
OPENCLAW_QA_PROVIDER_MODE="mock-openai" \
OPENCLAW_NPM_TELEGRAM_PACKAGE_SPEC="openclaw@beta" \
pnpm test:docker:npm-telegram-live
scripts/e2e/npm-telegram-live-runner.ts reads OPENCLAW_NPM_TELEGRAM_PROVIDER_MODEOPENCLAW_QA_PROVIDER_MODE is consumed by that wrapperOPENCLAW_QA_PROVIDER_MODE, map it explicitly to OPENCLAW_NPM_TELEGRAM_PROVIDER_MODE before running the Docker lanepnpm test:docker:npm-telegram-live passed with:
OPENCLAW_QA_CREDENTIAL_SOURCE=convexOPENCLAW_QA_CREDENTIAL_ROLE=maintainerOPENCLAW_QA_CONVEX_SITE_URLOPENCLAW_QA_CONVEX_SECRET_MAINTAINEROPENCLAW_NPM_TELEGRAM_PROVIDER_MODE=mock-openaiop signin blocks, prefer dispatching the manual GitHub lane because the qa-live-shared environment already has Convex CI credentials:gh workflow run "NPM Telegram Beta E2E" --repo openclaw/openclaw --ref main \
-f package_spec=openclaw@YYYY.M.D-beta.N \
-f package_label=openclaw@YYYY.M.D-beta.N \
-f provider_mode=mock-openai
gh run view --json artifacts is not supported; list artifacts with:gh api repos/openclaw/openclaw/actions/runs/<run-id>/artifacts
Use this when setting up or replacing Convex kind=whatsapp credentials.
groupJid; otherwise the group mention-gating scenario should be skipped by default and fail when explicitly requested..tgz payload fields and add a new active Convex credential row. Prefer adding a fresh row and disabling stale/broken rows over overwriting credentials in place.driverPhoneE164, sutPhoneE164, driverAuthArchiveBase64, sutAuthArchiveBase64, and optional groupJid.pnpm openclaw qa whatsapp --credential-source convex --credential-role maintainer --provider-mode mock-openai and preserve artifact paths plus redacted pass/fail summaries.Use qa character-eval for style/persona/vibe checks across multiple live models.
pnpm openclaw qa character-eval \
--output-dir .artifacts/qa-e2e/character-eval-<tag>
pnpm build omits QA Lab + qa-channel by design (source-checkout
only). To exercise openclaw qa/qa-channel from a built dist, build with
OPENCLAW_BUILD_PRIVATE_QA=1 pnpm build (emits dist/plugin-sdk/qa-lab.js,
qa-runtime.js, dist/extensions/{qa-lab,qa-channel}) or run via pnpm dev.--model provider/model,thinking=<level>[,fast|,no-fast|,fast=<bool>]
or --judge-model ... only to replace the corresponding inventory explicitly.--model-thinking; keep that flag as legacy compatibility only.--concurrency <n> and --judge-concurrency <n> to override when local gateways or provider limits need a gentler lane.qa/scenarios/: use index.yaml and
per-scenario *.yaml files with top-level title, scenario, and optional
flow. Never add fenced qa-scenario / qa-flow Markdown files.SOUL.md and blank IDENTITY.md in the scenario flow. Use SOUL.md + IDENTITY.md only when intentionally testing how the normal OpenClaw identity combines with the character.SOUL.md, then normal user turns such as chat, workspace help, and small file tasks; do not ask "how would you react?" or tell the model it is in an eval.Use model refs shaped like codex-cli/<codex-model> whenever QA should exercise Codex as a model backend.
Examples:
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_HOME so Codex CLI auth/config works while keeping HOME and OPENCLAW_HOME sandboxed.CODEX_HOME.CODEX_HOME,
relevant secret-backed auth, and gateway child logs before changing
scenario assertions.codex-cli/<codex-model> as another candidate in qa character-eval; the report should label it as an opaque model name.qa/scenarios/index.yaml and
qa/scenarios/<theme>/*.yaml.extensions/qa-lab/src/suite.tsextensions/qa-lab/src/lab-server.tsextensions/qa-lab/src/gateway-child.tsextensions/qa-channel/extensions/qa-lab/src/suite.tsrepo/... inside seeded workspaceqa/scenarios/; do not add .md scenario
files or fenced YAML blocks.qa/scenarios/index.yaml alignedextensions/qa-lab/src/suite.ts.artifacts/qa-e2e/