Concepts 导读

QA overview:先把底下那条暗线看见

QA overview 这页在补地图,不是在发操作说明。看完你应该能指出它埋在系统哪一层、为什么会牵动后面的动作,以及最容易把哪几件事想反。原文最响的一记鼓点,其实是:The private QA stack is meant to exercise OpenClaw in a more realistic, 消息通道-shaped way…。

先听这页的人话版

QA overview

这一页不是在堆术语,它像把“QA overview”这台小机器搬到桌上,当着你的面拆开给你看。你先不用全记住,先抓住它到底在忙什么:The private QA stack is meant to exercise OpenClaw in a more realistic, 消息通道-shaped way than a…。

如果把这页当成“给普通人看的版本”,你最应该带走的是:它到底在教你一件什么事、什么时候要这样做、以及哪里最容易踩坑。

原始路径:/concepts/qa-e2e-automation 章节数量:18 查看原文

第 1 站

Start Here

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

这段在解决什么

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

为什么值得看

你理解的是能力边界,不只是功能名字。

真要动手时

如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The private QA stack is meant to exercise OpenClaw in a more realistic, 消息通道-shaped way than a single unit test can. Cu…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The private QA stack is meant to exercise OpenClaw in a more realistic, 消息通道-shaped way than a single unit test can.

原文小纸条

The private QA stack is meant to exercise OpenClaw in a more realistic, channel-shaped way than a single unit test can.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Current pieces:。

原文小纸条

Current pieces:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:reaction, edit, and delete surfaces.

原文小纸条

reaction, edit, and delete surfaces.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:injecting inbound 小纸条消息s, and exporting a Markdown report.

原文小纸条

injecting inbound messages, and exporting a Markdown report.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:drive a real 消息通道 inside a child QA 门口的小门卫.

原文小纸条

drive a real channel inside a child QA gateway.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:scenarios.

原文小纸条

scenarios.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:need real transports, browser screenshots, VM state, and PR evidence.

原文小纸条

need real transports, browser screenshots, VM state, and PR evidence.

像准备清单

这一串条目别硬背,把它当成“Start Here”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:extensions/qa-消息通道: synthetic 小纸条消息 消息通道…、extensions/qa-lab: debugger UI and QA bus…、extensions/qa-matrix, future runner 新本领插件…、qa/: repo-backed seed assets for the kick…。

原文小纸条
  • extensions/qa-channel: synthetic message channel with DM, channel, thread,
  • extensions/qa-lab: debugger UI and QA bus for observing the transcript,
  • extensions/qa-matrix, future runner plugins: live-transport adapters that
  • qa/: repo-backed seed assets for the kickoff task and baseline QA
  • Mantis: before and after live verification for bugs that

第 2 站

魔法口令 surface

这一节主要在解释“魔法口令 surface”到底是干什么的,以及你什么时候会遇到它。

这段在解决什么

这一节主要在解释“魔法口令 surface”到底是干什么的,以及你什么时候会遇到它。

为什么值得看

如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。

真要动手时

真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Every QA flow runs under pnpm openclaw qa <sub魔法口令>. Many have pnpm qa:* script aliases; both forms are supported.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Every QA flow runs under pnpm openclaw qa <sub魔法口令>. Many have pnpm qa:* script aliases; both forms are supported.

原文小纸条

Every QA flow runs under pnpm openclaw qa <subcommand>. Many have pnpm qa:* script aliases; both forms are supported.

像整理表格

这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。

原文表格
CommandPurpose
qa runBundled QA self-check; writes a Markdown report.
qa suiteRun repo-backed scenarios against the QA gateway lane. Aliases: pnpm openclaw qa suite --runner multipass for a disposable Linux VM.
qa coveragePrint the markdown scenario-coverage inventory (--json for machine output).
qa parity-reportCompare two qa-suite-summary.json files and write the agentic parity report, or use --runtime-axis --token-efficiency to write Codex-vs-Pi runtime parity and token-efficiency reports from one runtime-pair summary.
qa character-evalRun the character QA scenario across multiple live models with a judged report. See Reporting.
qa manualRun a one-off prompt against the selected provider/model lane.
qa uiStart the QA debugger UI and local QA bus (alias: pnpm qa:lab:ui).
qa docker-build-imageBuild the prebaked QA Docker image.
qa docker-scaffoldWrite a docker-compose scaffold for the QA dashboard + gateway lane.
qa upBuild the QA site, start the Docker-backed stack, print the URL (alias: pnpm qa:lab:up; :fast variant adds --use-prebuilt-image --bind-ui-dist --skip-ui-build).
qa aimockStart only the AIMock provider server.
qa mock-openaiStart only the scenario-aware mock-openai provider server.
qa credentials doctor / add / list / removeManage the shared Convex credential pool.
qa matrixLive transport lane against a disposable Tuwunel homeserver. See Matrix QA.
qa telegramLive transport lane against a real private Telegram group.
qa discordLive transport lane against a real private Discord guild channel.
qa slackLive transport lane against a real private Slack channel.
qa mantisBefore and after verification runner for live transport bugs, with Discord status-reactions evidence, Crabbox desktop/browser smoke, and Slack-in-VNC smoke. See Mantis and Mantis Slack Desktop Runbook.

第 3 站

Operator flow

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The current QA operator flow is a two-pane QA site: Run it with: That builds the QA site, starts the Docker-backed 门口的小…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The current QA operator flow is a two-pane QA site:。

原文小纸条

The current QA operator flow is a two-pane QA site:

像准备清单

这一串条目别硬背,把它当成“Operator flow”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:Left: 门口的小门卫 dashboard (Control UI) with…、Right: QA Lab, showing the Slack-ish tran…。

原文小纸条
  • Left: Gateway dashboard (Control UI) with the agent.
  • Right: QA Lab, showing the Slack-ish transcript and scenario plan.
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Run it with:。

原文小纸条

Run it with:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这里在给“pnpm qa”挂牌子,告诉系统它该指向“lab:up”。
原文代码块
pnpm qa:lab:up
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:That builds the QA site, starts the Docker-backed 门口的小门卫 lane, and exposes the QA Lab page where an operator or 自动小闹钟 l…。

原文小纸条

That builds the QA site, starts the Docker-backed gateway lane, and exposes the QA Lab page where an operator or automation loop can give the agent a QA mission, observe real channel behavior, and record what worked, failed, or stayed blocked.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For faster QA Lab UI iteration without rebuilding the Docker image each time, start the stack with a bind-mounted QA La…。

原文小纸条

For faster QA Lab UI iteration without rebuilding the Docker image each time, start the stack with a bind-mounted QA Lab bundle:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa docker-build-image”。它会让电脑去请求、安装或者把东西搭起来。
  • 这里在给“pnpm qa”挂牌子,告诉系统它该指向“lab:build”。
  • 这里在给“pnpm qa”挂牌子,告诉系统它该指向“lab:up:fast”。
原文代码块
pnpm openclaw qa docker-build-image
pnpm qa:lab:build
pnpm qa:lab:up:fast
pnpm qa:lab:watch
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:qa:lab:up:fast keeps the Docker services on a prebuilt image and bind-mounts extensions/qa-lab/web/dist into the qa-lab…。

原文小纸条

qa:lab:up:fast keeps the Docker services on a prebuilt image and bind-mounts extensions/qa-lab/web/dist into the qa-lab container. qa:lab:watch rebuilds that bundle on change, and the browser auto-reloads when the QA Lab asset hash changes.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For a local OpenTelemetry signal smoke, run:。

原文小纸条

For a local OpenTelemetry signal smoke, run:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这里在给“pnpm qa”挂牌子,告诉系统它该指向“otel:smoke”。
原文代码块
pnpm qa:otel:smoke
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:That script starts a local OTLP/HTTP receiver, runs the otel-trace-smoke QA scenario with the diagnostics-otel 新本领插件 en…。

原文小纸条

That script starts a local OTLP/HTTP receiver, runs the otel-trace-smoke QA scenario with the diagnostics-otel plugin enabled, then asserts traces, metrics, and logs are exported. It decodes the exported protobuf trace spans and checks the release-critical shape: openclaw.run, openclaw.harness.run, openclaw.model.call, openclaw.context.assembled, and openclaw.message.delivery must be present; model calls must not export StreamAbandoned on successful turns; raw diagnostic IDs and openclaw.content.* attributes must stay out of the trace. The raw OTLP payloads must not contain the prompt sentinel, response sentinel, or QA session key. It writes otel-smoke-summary.json next to the QA suite artifacts.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For the protected Prometheus scrape smoke, run:。

原文小纸条

For the protected Prometheus scrape smoke, run:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这里在给“pnpm qa”挂牌子,告诉系统它该指向“prometheus:smoke”。
原文代码块
pnpm qa:prometheus:smoke
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:That alias runs the docker-prometheus-smoke QA scenario with diagnostics-prometheus enabled, verifies unauthenticated s…。

原文小纸条

That alias runs the docker-prometheus-smoke QA scenario with diagnostics-prometheus enabled, verifies unauthenticated scrapes are rejected, then checks the authenticated scrape includes release-critical metric families without prompt content, response content, raw diagnostic identifiers, auth tokens, or local paths.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:To run both observability smokes back to back, use:。

原文小纸条

To run both observability smokes back to back, use:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这里在给“pnpm qa”挂牌子,告诉系统它该指向“observability:smoke”。
原文代码块
pnpm qa:observability:smoke
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Observability QA stays source-checkout only. The npm tarball intentionally omits QA Lab, so package Docker release lane…。

原文小纸条

Observability QA stays source-checkout only. The npm tarball intentionally omits QA Lab, so package Docker release lanes do not run qa commands. Use pnpm qa:otel:smoke, pnpm qa:prometheus:smoke, or pnpm qa:observability:smoke from a built source checkout when changing diagnostics instrumentation.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For a transport-real Matrix smoke lane, run:。

原文小纸条

For a transport-real Matrix smoke lane, run:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa matrix --profile fast --fail-fast”。它会让电脑去请求、安装或者把东西搭起来。
原文代码块
pnpm openclaw qa matrix --profile fast --fail-fast
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The full CLI reference, profile/scenario catalog, env vars, and artifact layout for this lane live in Matrix QA. At a g…。

原文小纸条

The full CLI reference, profile/scenario catalog, env vars, and artifact layout for this lane live in Matrix QA. At a glance: it provisions a disposable Tuwunel homeserver in Docker, registers temporary driver/SUT/observer users, runs the real Matrix plugin inside a child QA gateway scoped to that transport (no qa-channel), then writes a Markdown report, JSON summary, observed-events artifact, and combined output log under .artifacts/qa-e2e/matrix-<timestamp>/.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The scenarios cover transport behavior that unit tests cannot prove end to end: mention gating, allow-bot policies, all…。

原文小纸条

The scenarios cover transport behavior that unit tests cannot prove end to end: mention gating, allow-bot policies, allowlists, top-level and threaded replies, DM routing, reaction handling, inbound edit suppression, restart replay dedupe, homeserver interruption recovery, approval metadata delivery, media handling, and Matrix E2EE bootstrap/recovery/verification flows. The E2EE CLI profile also drives openclaw matrix encryption setup and verification commands through the same disposable homeserver before checking gateway replies.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Discord also has Mantis-only opt-in scenarios for bug reproduction. Use --scenario discord-status-reactions-工具小帮手-only…。

原文小纸条

Discord also has Mantis-only opt-in scenarios for bug reproduction. Use --scenario discord-status-reactions-tool-only for the explicit status reaction timeline, or --scenario discord-thread-reply-filepath-attachment to create a real Discord thread and verify that message.thread-reply preserves a filePath attachment. These scenarios stay out of the default live Discord lane because they are before/after repro probes rather than broad smoke coverage. The thread-attachment Mantis workflow can also add a logged-in Discord Web witness video when MANTIS_DISCORD_VIEWER_CHROME_PROFILE_DIR or MANTIS_DISCORD_VIEWER_CHROME_PROFILE_TGZ_B64 is configured in the QA environment. That viewer profile is only for visual capture; the pass/fail decision still comes from the Discord REST oracle.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:CI uses the same 魔法口令 surface in .github/workflows/qa-live-transports-convex.yml. Scheduled and default manual runs exe…。

原文小纸条

CI uses the same command surface in .github/workflows/qa-live-transports-convex.yml. Scheduled and default manual runs execute the fast Matrix profile with live frontier credentials, --fast, and OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS=3000. Manual matrix_profile=all fans out into the five profile shards so the exhaustive catalog can run in parallel while keeping one artifact directory per shard.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For transport-real Telegram, Discord, and Slack smoke lanes:。

原文小纸条

For transport-real Telegram, Discord, and Slack smoke lanes:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa telegram”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一句像在终端上按下启动钮:“pnpm openclaw qa discord”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一句像在终端上按下启动钮:“pnpm openclaw qa slack”。它会让电脑去请求、安装或者把东西搭起来。
原文代码块
pnpm openclaw qa telegram
pnpm openclaw qa discord
pnpm openclaw qa slack
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:They target a pre-existing real 消息通道 with two bots (driver + SUT). Required env vars, scenario lists, output artifacts,…。

原文小纸条

They target a pre-existing real channel with two bots (driver + SUT). Required env vars, scenario lists, output artifacts, and the Convex credential pool are documented in Telegram, Discord, and Slack QA reference below.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For a full Slack desktop VM run with VNC rescue, run:。

原文小纸条

For a full Slack desktop VM run with VNC rescue, run:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa mantis slack-desktop-smoke \”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一行“--gateway-setup \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“--scenario slack-canary \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
pnpm openclaw qa mantis slack-desktop-smoke \
  --gateway-setup \
  --scenario slack-canary \
  --keep-lease
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:That 魔法口令 leases a Crabbox desktop/browser machine, runs the Slack live lane inside the VM, opens Slack Web in the VNC…。

原文小纸条

That command leases a Crabbox desktop/browser machine, runs the Slack live lane inside the VM, opens Slack Web in the VNC browser, captures the desktop, and copies slack-qa/, slack-desktop-smoke.png, and slack-desktop-smoke.mp4 when video capture is available back to the Mantis artifact directory. Crabbox desktop/browser leases provide the capture tools and browser/native-build helper packages up front, so the scenario should only install fallbacks on older leases. Mantis reports total and per-phase timings in mantis-slack-desktop-smoke-report.md so slow runs show whether time went into lease warmup, credential acquisition, remote setup, or artifact copy. Reuse --lease-id <cbx_...> after logging in to Slack Web manually through VNC; reused leases also keep Crabbox's pnpm store cache warm. The default --hydrate-mode source verifies from a source checkout and runs install/build inside the VM. Use --hydrate-mode prehydrated only when the reused remote workspace already has node_modules and a built dist/; that mode skips the expensive install/build step and fails closed when the workspace is not ready. With --gateway-setup, Mantis leaves a persistent OpenClaw Slack gateway running inside the VM on port 38973; without it, the command runs the normal bot-to-bot Slack QA lane and exits after artifact capture.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:To prove native Slack approval UI with desktop evidence, run the Mantis approval checkpoint mode:。

原文小纸条

To prove native Slack approval UI with desktop evidence, run the Mantis approval checkpoint mode:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa mantis slack-desktop-smoke \”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一行“--approval-checkpoints \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“--credential-source convex \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
pnpm openclaw qa mantis slack-desktop-smoke \
  --approval-checkpoints \
  --credential-source convex \
  --credential-role maintainer
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:This mode is mutually exclusive with --门口的小门卫-setup. It runs the Slack approval scenarios, rejects non-approval scenari…。

原文小纸条

This mode is mutually exclusive with --gateway-setup. It runs the Slack approval scenarios, rejects non-approval scenario ids, waits at each pending and resolved approval state, renders the observed Slack API message into approval-checkpoints/<scenario>-pending.png and approval-checkpoints/<scenario>-resolved.png, then fails if any checkpoint, message evidence, acknowledgement, or rendered screenshot is missing or empty. Cold CI leases may still show Slack sign-in in slack-desktop-smoke.png; the approval checkpoint images are the visual proof for this lane.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The operator checklist, GitHub workflow dispatch 魔法口令, evidence-comment contract, hydrate-mode decision table, timing i…。

原文小纸条

The operator checklist, GitHub workflow dispatch command, evidence-comment contract, hydrate-mode decision table, timing interpretation, and failure handling steps live in Mantis Slack Desktop Runbook.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For an 机器人朋友/CV style desktop task, run:。

原文小纸条

For an agent/CV style desktop task, run:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa mantis visual-task \”。它会让电脑去请求、安装或者把东西搭起来。
  • 这里在给“--browser-url https”挂牌子,告诉系统它该指向“//example.net \”。
  • 这一行“--expect-text "Example Domain" \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
pnpm openclaw qa mantis visual-task \
  --browser-url https://example.net \
  --expect-text "Example Domain" \
  --vision-model openai/gpt-5.5
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:visual-task leases or reuses a Crabbox desktop/browser machine, starts crabbox record --while, drives the visible brows…。

原文小纸条

visual-task leases or reuses a Crabbox desktop/browser machine, starts crabbox record --while, drives the visible browser through a nested visual-driver, captures visual-task.png, runs openclaw infer image describe against the screenshot when --vision-mode image-describe is selected, and writes visual-task.mp4, mantis-visual-task-summary.json, mantis-visual-task-driver-result.json, and mantis-visual-task-report.md. When --expect-text is set, the vision prompt asks for a structured JSON verdict and only passes when the model reports positive visible evidence; a negative response that merely quotes the target text fails the assertion. Use --vision-mode metadata for a no-model smoke that proves the desktop, browser, screenshot, and video plumbing without calling an image-understanding provider. Recording is a required artifact for visual-task; if Crabbox records no non-empty visual-task.mp4, the task fails even when the visual driver passed. On failure, Mantis keeps the lease for VNC unless the task had already passed and --keep-lease was not set.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Before using pooled live credentials, run:。

原文小纸条

Before using pooled live credentials, run:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa credentials doctor”。它会让电脑去请求、安装或者把东西搭起来。
原文代码块
pnpm openclaw qa credentials doctor
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The doctor checks Convex broker env, validates endpoint settings, and verifies admin/list reachability when the maintai…。

原文小纸条

The doctor checks Convex broker env, validates endpoint settings, and verifies admin/list reachability when the maintainer secret is present. It reports only set/missing status for secrets.

第 4 站

Live transport coverage

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Live transport lanes share one contract instead of each inventing their own scenario list shape. qa-消息通道 is the broad s…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Live transport lanes share one contract instead of each inventing their own scenario list shape. qa-消息通道 is the broad s…。

原文小纸条

Live transport lanes share one contract instead of each inventing their own scenario list shape. qa-channel is the broad synthetic product-behavior suite and is not part of the live transport coverage matrix.

像整理表格

这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。

原文表格
LaneCanaryMention gatingBot-to-botAllowlist blockTop-level replyRestart resumeThread follow-upThread isolationReaction observationHelp commandNative command registration
Matrixxxxxxxxxx
Telegramxxxx
Discordxxxx
Slackxxxxxxxx
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:This keeps qa-消息通道 as the broad product-behavior suite while Matrix, Telegram, and future live transports share one exp…。

原文小纸条

This keeps qa-channel as the broad product-behavior suite while Matrix, Telegram, and future live transports share one explicit transport-contract checklist.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For a disposable Linux VM lane without bringing Docker into the QA path, run:。

原文小纸条

For a disposable Linux VM lane without bringing Docker into the QA path, run:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline”。它会让电脑去请求、安装或者把东西搭起来。
原文代码块
pnpm openclaw qa suite --runner multipass --scenario channel-chat-baseline
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:This boots a fresh Multipass guest, installs dependencies, builds OpenClaw inside the guest, runs qa suite, then copies…。

原文小纸条

This boots a fresh Multipass guest, installs dependencies, builds OpenClaw inside the guest, runs qa suite, then copies the normal QA report and summary back into .artifacts/qa-e2e/... on the host. It reuses the same scenario-selection behavior as qa suite on the host. Host and Multipass suite runs execute multiple selected scenarios in parallel with isolated gateway workers by default. qa-channel defaults to concurrency 4, capped by the selected scenario count. Use --concurrency <count> to tune the worker count, or --concurrency 1 for serial execution. Use --pack personal-agent to run the personal assistant benchmark pack. The pack selector is additive with repeated --scenario flags: explicit scenarios run first, then pack scenarios run in pack order with duplicates removed. Use --pack observability when a custom QA runner already supplies the OpenTelemetry collector setup and wants the OpenTelemetry and Prometheus diagnostics smoke scenarios selected together. The command exits non-zero when any scenario fails. Use --allow-failures when you want artifacts without a failing exit code. Live runs forward the supported QA auth inputs that are practical for the guest: env-based provider keys, the QA live provider config path, and CODEX_HOME when present. Keep --output-dir under the repo root so the guest can write back through the mounted workspace.

第 5 站

Telegram, Discord, and Slack QA reference

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

这段在解决什么

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

为什么值得看

你理解的是能力边界,不只是功能名字。

真要动手时

如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Matrix has a dedicated page because of its scenario count and Docker-backed home大房子服务器 provisioning. Telegram, Discord,…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Matrix has a dedicated page because of its scenario count and Docker-backed home大房子服务器 provisioning. Telegram, Discord,…。

原文小纸条

Matrix has a dedicated page because of its scenario count and Docker-backed homeserver provisioning. Telegram, Discord, and Slack are smaller - a handful of scenarios each, no profile system, against pre-existing real channels - so their reference lives here.

第 6 站

Shared CLI flags

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:These lanes register through extensions/qa-lab/src/live-transports/shared/live-transport-cli.ts and accept the same fla…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:These lanes register through extensions/qa-lab/src/live-transports/shared/live-transport-cli.ts and accept the same fla…。

原文小纸条

These lanes register through extensions/qa-lab/src/live-transports/shared/live-transport-cli.ts and accept the same flags:

像整理表格

这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。

原文表格
FlagDefaultDescription
--scenario <id>-Run only this scenario. Repeatable.
--output-dir <path><repo>/.artifacts/qa-e2e/{telegram,discord,slack}-<timestamp>Where reports/summary/observed messages and the output log are written. Relative paths resolve against --repo-root.
--repo-root <path>process.cwd()Repository root when invoking from a neutral cwd.
--sut-account <id>sutTemporary account id inside the QA gateway config.
--provider-mode <mode>live-frontiermock-openai or live-frontier (legacy live-openai still works).
--model <ref> / --alt-model <ref>provider defaultPrimary/alternate model refs.
--fastoffProvider fast mode where supported.
`--credential-source <env\convex>`envSee Convex credential pool.
`--credential-role <maintainer\ci>`ci in CI, maintainer otherwiseRole used when --credential-source convex.
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Each lane exits non-zero on any failed scenario. --allow-failures writes artifacts without setting a failing exit code.

原文小纸条

Each lane exits non-zero on any failed scenario. --allow-failures writes artifacts without setting a failing exit code.

第 7 站

Telegram QA

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Targets one real private Telegram 大家一起的房间 with two distinct bots (driver + SUT). The SUT bot must have a Telegram usern…。

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa telegram”。它会让电脑去请求、安装或者把东西搭起来。
原文代码块
pnpm openclaw qa telegram
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Targets one real private Telegram 大家一起的房间 with two distinct bots (driver + SUT). The SUT bot must have a Telegram usern…。

原文小纸条

Targets one real private Telegram group with two distinct bots (driver + SUT). The SUT bot must have a Telegram username; bot-to-bot observation works best when both bots have **Bot-to-Bot Communication Mode** enabled in @BotFather.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Required env when --credential-source env:。

原文小纸条

Required env when --credential-source env:

像准备清单

这一串条目别硬背,把它当成“Telegram QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:OPENCLAW_QA_TELEGRAM_大家一起的房间_ID - numeric…、OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN、OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN。

原文小纸条
  • OPENCLAW_QA_TELEGRAM_GROUP_ID - numeric chat id (string).
  • OPENCLAW_QA_TELEGRAM_DRIVER_BOT_TOKEN
  • OPENCLAW_QA_TELEGRAM_SUT_BOT_TOKEN
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional:。

原文小纸条

Optional:

像准备清单

这一串条目别硬背,把它当成“Telegram QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:OPENCLAW_QA_TELEGRAM_CAPTURE_CONTENT=1 ke…。

原文小纸条
  • OPENCLAW_QA_TELEGRAM_CAPTURE_CONTENT=1 keeps message bodies in observed-message artifacts (default redacts).
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Scenarios (extensions/qa-lab/src/live-transports/telegram/telegram-live.runtime.ts):。

原文小纸条

Scenarios (extensions/qa-lab/src/live-transports/telegram/telegram-live.runtime.ts):

像准备清单

这一串条目别硬背,把它当成“Telegram QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:telegram-canary、telegram-mention-gating、telegram-mentioned-小纸条消息-reply、telegram-help-魔法口令。

原文小纸条
  • telegram-canary
  • telegram-mention-gating
  • telegram-mentioned-message-reply
  • telegram-help-command
  • telegram-commands-command
  • telegram-tools-compact-command
  • telegram-whoami-command
  • telegram-status-command
  • telegram-repeated-command-authorization
  • telegram-other-bot-command-gating
  • telegram-context-command
  • telegram-current-session-status-tool
  • telegram-reply-chain-exact-marker
  • telegram-stream-final-single-message
  • telegram-long-final-reuses-preview
  • telegram-long-final-three-chunks
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The implicit default set always covers canary, mention gating, native 魔法口令 replies, 魔法口令 addressing, and bot-to-bot 大家一…。

原文小纸条

The implicit default set always covers canary, mention gating, native command replies, command addressing, and bot-to-bot group replies. mock-openai defaults also include deterministic reply-chain and final-message streaming checks. telegram-current-session-status-tool remains opt-in because it is only stable when threaded directly after canary, not after arbitrary native command replies. Use pnpm openclaw qa telegram --list-scenarios --provider-mode mock-openai to print the current default/optional split with regression refs.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Output artifacts:。

原文小纸条

Output artifacts:

像准备清单

这一串条目别硬背,把它当成“Telegram QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:telegram-qa-report.md、telegram-qa-summary.json - includes per-r…、telegram-qa-observed-小纸条消息s.json - bodies…。

原文小纸条
  • telegram-qa-report.md
  • telegram-qa-summary.json - includes per-reply RTT (driver send → observed SUT reply) starting with the canary.
  • telegram-qa-observed-messages.json - bodies redacted unless OPENCLAW_QA_TELEGRAM_CAPTURE_CONTENT=1.
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Package RTT comparison uses the same Telegram credential contract while keeping its RTT sample controls on the RTT harn…。

原文小纸条

Package RTT comparison uses the same Telegram credential contract while keeping its RTT sample controls on the RTT harness path:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm rtt openclaw@beta \”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一行“--credential-source convex \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“--credential-role maintainer \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
pnpm rtt openclaw@beta \
  --credential-source convex \
  --credential-role maintainer \
  --samples 20 \
  --sample-timeout-ms 30000
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:When --credential-source convex is set, the RTT Docker wrapper leases a kind: "telegram" credential, exports the leased…。

原文小纸条

When --credential-source convex is set, the RTT Docker wrapper leases a kind: "telegram" credential, exports the leased group/driver/SUT bot env into the installed-package run, heartbeats the lease, and releases it on shutdown. --samples and --sample-timeout-ms still feed OPENCLAW_NPM_TELEGRAM_WARM_SAMPLES and OPENCLAW_NPM_TELEGRAM_SAMPLE_TIMEOUT_MS, so result.json remains comparable across env-backed and Convex-backed RTT runs.

第 8 站

Discord QA

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Targets one real private Discord guild 消息通道 with two bots: a driver bot controlled by the harness and a SUT bot started…。

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa discord”。它会让电脑去请求、安装或者把东西搭起来。
原文代码块
pnpm openclaw qa discord
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Targets one real private Discord guild 消息通道 with two bots: a driver bot controlled by the harness and a SUT bot started…。

原文小纸条

Targets one real private Discord guild channel with two bots: a driver bot controlled by the harness and a SUT bot started by the child OpenClaw gateway through the bundled Discord plugin. Verifies channel mention handling, that the SUT bot has registered the native /help command with Discord, and opt-in Mantis evidence scenarios.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Required env when --credential-source env:。

原文小纸条

Required env when --credential-source env:

像准备清单

这一串条目别硬背,把它当成“Discord QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:OPENCLAW_QA_DISCORD_GUILD_ID、OPENCLAW_QA_DISCORD_消息通道_ID、OPENCLAW_QA_DISCORD_DRIVER_BOT_TOKEN、OPENCLAW_QA_DISCORD_SUT_BOT_TOKEN。

原文小纸条
  • OPENCLAW_QA_DISCORD_GUILD_ID
  • OPENCLAW_QA_DISCORD_CHANNEL_ID
  • OPENCLAW_QA_DISCORD_DRIVER_BOT_TOKEN
  • OPENCLAW_QA_DISCORD_SUT_BOT_TOKEN
  • OPENCLAW_QA_DISCORD_SUT_APPLICATION_ID - must match the SUT bot user id returned by Discord (the lane fails fast otherwise).
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional:。

原文小纸条

Optional:

像准备清单

这一串条目别硬背,把它当成“Discord QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:OPENCLAW_QA_DISCORD_CAPTURE_CONTENT=1 kee…、OPENCLAW_QA_DISCORD_VOICE_消息通道_ID selects…。

原文小纸条
  • OPENCLAW_QA_DISCORD_CAPTURE_CONTENT=1 keeps message bodies in observed-message artifacts.
  • OPENCLAW_QA_DISCORD_VOICE_CHANNEL_ID selects the voice/stage channel for discord-voice-autojoin; without it, the scenario picks the first visible voice/stage channel for the SUT bot.
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Scenarios (extensions/qa-lab/src/live-transports/discord/discord-live.runtime.ts:36):。

原文小纸条

Scenarios (extensions/qa-lab/src/live-transports/discord/discord-live.runtime.ts:36):

像准备清单

这一串条目别硬背,把它当成“Discord QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:discord-canary、discord-mention-gating、discord-native-help-魔法口令-registration、discord-voice-autojoin - opt-in voice sce…。

原文小纸条
  • discord-canary
  • discord-mention-gating
  • discord-native-help-command-registration
  • discord-voice-autojoin - opt-in voice scenario. Runs by itself, enables channels.discord.voice.autoJoin, and verifies the SUT bot's current Discord voice state is the target voice/stage channel. Convex Discord credentials may include optional voiceChannelId; otherwise the runner discovers the first visible voice/stage channel in the guild.
  • discord-status-reactions-tool-only - opt-in Mantis scenario. Runs by itself because it switches the SUT to always-on, tool-only guild replies with messages.statusReactions.enabled=true, then captures a REST reaction timeline plus HTML/PNG visual artifacts. Mantis before/after reports also preserve scenario-provided MP4 artifacts as baseline.mp4 and candidate.mp4.
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Run the Discord voice auto-join scenario explicitly:。

原文小纸条

Run the Discord voice auto-join scenario explicitly:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa discord \”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一行“--scenario discord-voice-autojoin \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“--provider-mode mock-openai”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
pnpm openclaw qa discord \
  --scenario discord-voice-autojoin \
  --provider-mode mock-openai
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Run the Mantis status-reaction scenario explicitly:。

原文小纸条

Run the Mantis status-reaction scenario explicitly:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa discord \”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一行“--scenario discord-status-reactions-tool-only \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“--provider-mode live-frontier \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
pnpm openclaw qa discord \
  --scenario discord-status-reactions-tool-only \
  --provider-mode live-frontier \
  --model openai/gpt-5.5 \
  --alt-model openai/gpt-5.5 \
  --fast
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Output artifacts:。

原文小纸条

Output artifacts:

像准备清单

这一串条目别硬背,把它当成“Discord QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:discord-qa-report.md、discord-qa-summary.json、discord-qa-observed-小纸条消息s.json - bodies…、discord-qa-reaction-timelines.json and di…。

原文小纸条
  • discord-qa-report.md
  • discord-qa-summary.json
  • discord-qa-observed-messages.json - bodies redacted unless OPENCLAW_QA_DISCORD_CAPTURE_CONTENT=1.
  • discord-qa-reaction-timelines.json and discord-status-reactions-tool-only-timeline.png when the status-reaction scenario runs.

第 9 站

Slack QA

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Targets one real private Slack 消息通道 with two distinct bots: a driver bot controlled by the harness and a SUT bot starte…。

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa slack”。它会让电脑去请求、安装或者把东西搭起来。
原文代码块
pnpm openclaw qa slack
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Targets one real private Slack 消息通道 with two distinct bots: a driver bot controlled by the harness and a SUT bot starte…。

原文小纸条

Targets one real private Slack channel with two distinct bots: a driver bot controlled by the harness and a SUT bot started by the child OpenClaw gateway through the bundled Slack plugin.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Required env when --credential-source env:。

原文小纸条

Required env when --credential-source env:

像准备清单

这一串条目别硬背,把它当成“Slack QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:OPENCLAW_QA_SLACK_消息通道_ID、OPENCLAW_QA_SLACK_DRIVER_BOT_TOKEN、OPENCLAW_QA_SLACK_SUT_BOT_TOKEN、OPENCLAW_QA_SLACK_SUT_APP_TOKEN。

原文小纸条
  • OPENCLAW_QA_SLACK_CHANNEL_ID
  • OPENCLAW_QA_SLACK_DRIVER_BOT_TOKEN
  • OPENCLAW_QA_SLACK_SUT_BOT_TOKEN
  • OPENCLAW_QA_SLACK_SUT_APP_TOKEN
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Optional:。

原文小纸条

Optional:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:checkpoints for Mantis. The runner writes <scenario>.pending.json and <scenario>.resolved.json, then waits for matching…。

原文小纸条

checkpoints for Mantis. The runner writes <scenario>.pending.json and <scenario>.resolved.json, then waits for matching .ack.json files.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:acknowledgement timeout. The default is 120000.

原文小纸条

acknowledgement timeout. The default is 120000.

像准备清单

这一串条目别硬背,把它当成“Slack QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:OPENCLAW_QA_SLACK_CAPTURE_CONTENT=1 keeps…、OPENCLAW_QA_SLACK_APPROVAL_CHECKPOINT_DIR…、OPENCLAW_QA_SLACK_APPROVAL_CHECKPOINT_TIM…。

原文小纸条
  • OPENCLAW_QA_SLACK_CAPTURE_CONTENT=1 keeps message bodies in observed-message artifacts.
  • OPENCLAW_QA_SLACK_APPROVAL_CHECKPOINT_DIR enables visual approval
  • OPENCLAW_QA_SLACK_APPROVAL_CHECKPOINT_TIMEOUT_MS overrides the checkpoint
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Scenarios (extensions/qa-lab/src/live-transports/slack/slack-live.runtime.ts):。

原文小纸条

Scenarios (extensions/qa-lab/src/live-transports/slack/slack-live.runtime.ts):

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Requests an exec approval through the 门口的小门卫, verifies the Slack 小纸条消息 has native approval buttons, resolves it, and ve…。

原文小纸条

Requests an exec approval through the gateway, verifies the Slack message has native approval buttons, resolves it, and verifies the resolved Slack update.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Enables exec and 新本领插件 approval forwarding together so 新本领插件 events are not suppressed by exec approval routing, then v…。

原文小纸条

Enables exec and plugin approval forwarding together so plugin events are not suppressed by exec approval routing, then verifies the same pending/resolved native Slack UI path.

像准备清单

这一串条目别硬背,把它当成“Slack QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:slack-canary、slack-mention-gating、slack-allowlist-block、slack-top-level-reply-shape。

原文小纸条
  • slack-canary
  • slack-mention-gating
  • slack-allowlist-block
  • slack-top-level-reply-shape
  • slack-restart-resume
  • slack-thread-follow-up
  • slack-thread-isolation
  • slack-approval-exec-native - opt-in native Slack exec approval scenario.
  • slack-approval-plugin-native - opt-in native Slack plugin approval scenario.
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Output artifacts:。

原文小纸条

Output artifacts:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:OPENCLAW_QA_SLACK_APPROVAL_CHECKPOINT_DIR; contains checkpoint JSON, acknowledgement JSON, and pending/resolved screens…。

原文小纸条

OPENCLAW_QA_SLACK_APPROVAL_CHECKPOINT_DIR; contains checkpoint JSON, acknowledgement JSON, and pending/resolved screenshots.

像准备清单

这一串条目别硬背,把它当成“Slack QA”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:slack-qa-report.md、slack-qa-summary.json、slack-qa-observed-小纸条消息s.json - bodies re…、approval-checkpoints/ - only when Mantis…。

原文小纸条
  • slack-qa-report.md
  • slack-qa-summary.json
  • slack-qa-observed-messages.json - bodies redacted unless OPENCLAW_QA_SLACK_CAPTURE_CONTENT=1.
  • approval-checkpoints/ - only when Mantis sets

第 10 站

Setting up the Slack workspace

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The lane needs two distinct Slack apps in one workspace, plus a 消息通道 both bots are members of: Prefer a Slack workspace…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The lane needs two distinct Slack apps in one workspace, plus a 消息通道 both bots are members of:。

原文小纸条

The lane needs two distinct Slack apps in one workspace, plus a channel both bots are members of:

像准备清单

这一串条目别硬背,把它当成“Setting up the Slack workspace”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:消息通道Id - the Cxxxxxxxxxx id of a 消息通道 bot…、driverBotToken - bot token (xoxb-...) of…、sutBotToken - bot token (xoxb-...) of the…、sutAppToken - app-level token (xapp-...)…。

原文小纸条
  • channelId - the Cxxxxxxxxxx id of a channel both bots have been invited to. Use a dedicated channel; the lane posts on every run.
  • driverBotToken - bot token (xoxb-...) of the **Driver** app.
  • sutBotToken - bot token (xoxb-...) of the **SUT** app, which must be a separate Slack app from the driver so its bot user id is distinct.
  • sutAppToken - app-level token (xapp-...) of the SUT app with connections:write, used by Socket Mode so the SUT app can receive events.
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Prefer a Slack workspace dedicated to QA over reusing a production workspace.

原文小纸条

Prefer a Slack workspace dedicated to QA over reusing a production workspace.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The SUT manifest below intentionally narrows the bundled Slack 新本领插件's production install (extensions/slack/src/setup-s…。

原文小纸条

The SUT manifest below intentionally narrows the bundled Slack plugin's production install (extensions/slack/src/setup-shared.ts:10) to the permissions and events covered by the live Slack QA suite. For the production-channel setup as users see it, see Slack channel quick setup; the QA Driver/SUT pair is intentionally separate because the lane needs two distinct bot user ids in one workspace.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**1. Create the Driver app**。

原文小纸条

**1. Create the Driver app**

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Go to 对话接口.slack.com/apps → _Create New App_ → _From a manifest_ → pick the QA workspace, paste the following manifest,…。

原文小纸条

Go to api.slack.com/apps → _Create New App_ → _From a manifest_ → pick the QA workspace, paste the following manifest, then _Install to Workspace_:

像魔法口令拆解

这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。

  • 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
  • 这里在给“display_information”挂牌子,告诉系统它该指向“{”。
  • 这里在给“name”挂牌子,告诉系统它该指向“OpenClaw QA Driver”。
原文代码块
{
  "display_information": {
    "name": "OpenClaw QA Driver",
    "description": "Test driver bot for OpenClaw QA Slack live lane"
  },
  "features": {
    "bot_user": {
      "display_name": "OpenClaw QA Driver",
      "always_online": true
    }
  },
  "oauth_config": {
    "scopes": {
      "bot": ["chat:write", "channels:history", "groups:history", "users:read"]
    }
  },
  "settings": {
    "socket_mode_enabled": false
  }
}
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Copy the _Bot User OAuth Token_ (xoxb-...) - that becomes driverBotToken. The driver only needs to post 小纸条消息s and iden…。

原文小纸条

Copy the _Bot User OAuth Token_ (xoxb-...) - that becomes driverBotToken. The driver only needs to post messages and identify itself; no events, no Socket Mode.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**2. Create the SUT app**。

原文小纸条

**2. Create the SUT app**

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Repeat _Create New App → From a manifest_ in the same workspace. This QA app intentionally uses a narrower version of t…。

原文小纸条

Repeat _Create New App → From a manifest_ in the same workspace. This QA app intentionally uses a narrower version of the bundled Slack plugin's production manifest (extensions/slack/src/setup-shared.ts:10): reaction scopes and events are omitted because the live Slack QA suite does not cover reaction handling yet.

像魔法口令拆解

这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。

  • 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
  • 这里在给“display_information”挂牌子,告诉系统它该指向“{”。
  • 这里在给“name”挂牌子,告诉系统它该指向“OpenClaw QA SUT”。
原文代码块
{
  "display_information": {
    "name": "OpenClaw QA SUT",
    "description": "OpenClaw QA SUT connector for OpenClaw"
  },
  "features": {
    "bot_user": {
      "display_name": "OpenClaw QA SUT",
      "always_online": true
    },
    "app_home": {
      "home_tab_enabled": true,
      "messages_tab_enabled": true,
      "messages_tab_read_only_enabled": false
    }
  },
  "oauth_config": {
    "scopes": {
      "bot": [
        "app_mentions:read",
        "assistant:write",
        "channels:history",
        "channels:read",
        "chat:write",
        "commands",
        "emoji:read",
        "files:read",
        "files:write",
        "groups:history",
        "groups:read",
        "im:history",
        "im:read",
        "im:write",
        "mpim:history",
        "mpim:read",
        "mpim:write",
        "pins:read",
        "pins:write",
        "usergroups:read",
        "users:read"
      ]
    }
  },
  "settings": {
    "socket_mode_enabled": true,
    "event_subscriptions": {
      "bot_events": [
        "app_home_opened",
        "app_mention",
        "channel_rename",
        "member_joined_channel",
        "member_left_channel",
        "message.channels",
        "message.groups",
        "message.im",
        "message.mpim",
        "pin_added",
        "pin_removed"
      ]
    }
  }
}
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:After Slack creates the app, do two things on its settings page:。

原文小纸条

After Slack creates the app, do two things on its settings page:

像准备清单

这一串条目别硬背,把它当成“Setting up the Slack workspace”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:_Install to Workspace_ → copy the _Bot Us…、_Basic Information → App-Level Tokens → G…。

原文小纸条
  • _Install to Workspace_ → copy the _Bot User OAuth Token_ → that becomes sutBotToken.
  • _Basic Information → App-Level Tokens → Generate Token and Scopes_ → add scope connections:write → save → copy the xapp-... value → that becomes sutAppToken.
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Verify the two bots have distinct user ids by calling auth.test on each token. The runtime distinguishes driver and SUT…。

原文小纸条

Verify the two bots have distinct user ids by calling auth.test on each token. The runtime distinguishes driver and SUT by user id; reusing one app for both will fail mention-gating immediately.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**3. Create the 消息通道**。

原文小纸条

**3. Create the channel**

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:In the QA workspace, create a 消息通道 (e.g. #openclaw-qa) and invite both bots from inside the 消息通道:。

原文小纸条

In the QA workspace, create a channel (e.g. #openclaw-qa) and invite both bots from inside the channel:

像魔法口令拆解

这段像放在桌上的操作卡,谁来照着做,现场就会动起来。

  • 这一行“/invite @OpenClaw QA Driver”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“/invite @OpenClaw QA SUT”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
/invite @OpenClaw QA Driver
/invite @OpenClaw QA SUT
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Copy the Cxxxxxxxxxx id from _消息通道 info → About → 消息通道 ID_ - that becomes 消息通道Id. A public 消息通道 works; if you use a pri…。

原文小纸条

Copy the Cxxxxxxxxxx id from _channel info → About → Channel ID_ - that becomes channelId. A public channel works; if you use a private channel both apps already have groups:history so the harness's history reads will still succeed.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**4. Register the credentials**。

原文小纸条

**4. Register the credentials**

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Two options. Use env vars for single-machine debugging (set the four OPENCLAW_QA_SLACK_* variables and pass --credentia…。

原文小纸条

Two options. Use env vars for single-machine debugging (set the four OPENCLAW_QA_SLACK_* variables and pass --credential-source env), or seed the shared Convex pool so CI and other maintainers can lease them.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For the Convex pool, write the four fields to a JSON file:。

原文小纸条

For the Convex pool, write the four fields to a JSON file:

像魔法口令拆解

这段不是对白,而是一叠设置卡片,像在给系统贴门牌、路线和规矩。

  • 大括号像两只手把同一组设置拢住,意思是“这些东西算一伙”。
  • 这里在给“channelId”挂牌子,告诉系统它该指向“Cxxxxxxxxxx”。
  • 这里在给“driverBotToken”挂牌子,告诉系统它该指向“xoxb-...”。
原文代码块
{
  "channelId": "Cxxxxxxxxxx",
  "driverBotToken": "xoxb-...",
  "sutBotToken": "xoxb-...",
  "sutAppToken": "xapp-..."
}
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:With OPENCLAW_QA_CONVEX_SITE_URL and OPENCLAW_QA_CONVEX_SECRET_MAINTAINER exported in your shell, register and verify:。

原文小纸条

With OPENCLAW_QA_CONVEX_SITE_URL and OPENCLAW_QA_CONVEX_SECRET_MAINTAINER exported in your shell, register and verify:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa credentials add \”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一行“--kind slack \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“--payload-file slack-creds.json \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
pnpm openclaw qa credentials add \
  --kind slack \
  --payload-file slack-creds.json \
  --note "QA Slack pool seed"

pnpm openclaw qa credentials list --kind slack --status all --json
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Expect count: 1, status: "active", no lease field.

原文小纸条

Expect count: 1, status: "active", no lease field.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:**5. Verify end to end**。

原文小纸条

**5. Verify end to end**

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Run the lane locally to confirm both bots can talk to each other through the broker:。

原文小纸条

Run the lane locally to confirm both bots can talk to each other through the broker:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa slack \”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一行“--credential-source convex \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“--credential-role maintainer \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
pnpm openclaw qa slack \
  --credential-source convex \
  --credential-role maintainer \
  --output-dir .artifacts/qa-e2e/slack-local
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:A green run completes in well under 30 seconds and slack-qa-report.md shows both slack-canary and slack-mention-gating…。

原文小纸条

A green run completes in well under 30 seconds and slack-qa-report.md shows both slack-canary and slack-mention-gating at status pass. If the lane hangs for ~90 seconds and exits with Convex credential pool exhausted for kind "slack", either the pool is empty or every row is leased - qa credentials list --kind slack --status all --json will tell you which.

第 11 站

Convex credential pool

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Telegram, Discord, Slack, and WhatsApp lanes can lease credentials from a shared Convex pool instead of reading the env…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Telegram, Discord, Slack, and WhatsApp lanes can lease credentials from a shared Convex pool instead of reading the env…。

原文小纸条

Telegram, Discord, Slack, and WhatsApp lanes can lease credentials from a shared Convex pool instead of reading the env vars above. Pass --credential-source convex (or set OPENCLAW_QA_CREDENTIAL_SOURCE=convex); QA Lab acquires an exclusive lease, heartbeats it for the duration of the run, and releases it on shutdown. Pool kinds are "telegram", "discord", "slack", and "whatsapp".

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Payload shapes the broker validates on admin/add:。

原文小纸条

Payload shapes the broker validates on admin/add:

像准备清单

这一串条目别硬背,把它当成“Convex credential pool”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:Telegram (kind: "telegram"): { 大家一起的房间Id:…、Telegram real user (kind: "telegram-user"…、Discord (kind: "discord"): { guildId: str…、WhatsApp (kind: "whatsapp"): { driverPhon…。

原文小纸条
  • Telegram (kind: "telegram"): { groupId: string, driverToken: string, sutToken: string } - groupId must be a numeric chat-id string.
  • Telegram real user (kind: "telegram-user"): { groupId: string, sutToken: string, testerUserId: string, testerUsername: string, telegramApiId: string, telegramApiHash: string, tdlibDatabaseEncryptionKey: string, tdlibArchiveBase64: string, tdlibArchiveSha256: string, desktopTdataArchiveBase64: string, desktopTdataArchiveSha256: string } - Mantis Telegram Desktop proof only. Generic QA Lab lanes must not acquire this kind.
  • Discord (kind: "discord"): { guildId: string, channelId: string, driverBotToken: string, sutBotToken: string, sutApplicationId: string }.
  • WhatsApp (kind: "whatsapp"): { driverPhoneE164: string, sutPhoneE164: string, driverAuthArchiveBase64: string, sutAuthArchiveBase64: string, groupJid?: string } - phone numbers must be distinct E.164 strings.
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The Mantis Telegram Desktop proof workflow holds one exclusive Convex telegram-user lease for both the TDLib CLI driver…。

原文小纸条

The Mantis Telegram Desktop proof workflow holds one exclusive Convex telegram-user lease for both the TDLib CLI driver and Telegram Desktop witness, then releases it after publishing proof.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:When a PR needs a deterministic visual diff, Mantis can use the same mock 聪明脑袋模型 reply on main and on the PR head while…。

原文小纸条

When a PR needs a deterministic visual diff, Mantis can use the same mock model reply on main and on the PR head while the Telegram formatter or delivery layer changes. Capture defaults are tuned for PR comments: standard Crabbox class, 24fps desktop recording, 24fps motion GIF, and 1920px preview width. Before/after comments should publish a clean bundle that contains only the intended GIFs.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Slack lanes can also use the pool. Slack payload shape checks currently live in the Slack QA runner rather than the bro…。

原文小纸条

Slack lanes can also use the pool. Slack payload shape checks currently live in the Slack QA runner rather than the broker; use { channelId: string, driverBotToken: string, sutBotToken: string, sutAppToken: string }, with a Slack channel id like Cxxxxxxxxxx. See Setting up the Slack workspace for app and scope provisioning.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Operational env vars and the Convex broker endpoint contract live in Testing → Shared Telegram credentials via Convex (…。

原文小纸条

Operational env vars and the Convex broker endpoint contract live in Testing → Shared Telegram credentials via Convex (the section name predates the multi-channel pool; the lease semantics are shared across kinds).

第 12 站

Repo-backed seeds

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Seed assets live in qa/: These are intentionally in git so the QA plan is visible to both humans and the 机器人朋友. qa-lab…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Seed assets live in qa/:。

原文小纸条

Seed assets live in qa/:

像准备清单

这一串条目别硬背,把它当成“Repo-backed seeds”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:qa/scenarios/index.md、qa/scenarios/<theme>/*.md。

原文小纸条
  • qa/scenarios/index.md
  • qa/scenarios/<theme>/*.md
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:These are intentionally in git so the QA plan is visible to both humans and the 机器人朋友.

原文小纸条

These are intentionally in git so the QA plan is visible to both humans and the agent.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:qa-lab should stay a generic markdown runner. Each scenario markdown file is the source of truth for one test run and s…。

原文小纸条

qa-lab should stay a generic markdown runner. Each scenario markdown file is the source of truth for one test run and should define:

像准备清单

这一串条目别硬背,把它当成“Repo-backed seeds”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:scenario metadata、optional category, capability, lane, and…、docs and code refs、optional 新本领插件 requirements。

原文小纸条
  • scenario metadata
  • optional category, capability, lane, and risk metadata
  • docs and code refs
  • optional plugin requirements
  • optional gateway config patch
  • the executable qa-flow
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The reusable runtime surface that backs qa-flow is allowed to stay generic and cross-cutting. For example, markdown sce…。

原文小纸条

The reusable runtime surface that backs qa-flow is allowed to stay generic and cross-cutting. For example, markdown scenarios can combine transport-side helpers with browser-side helpers that drive the embedded Control UI through the Gateway browser.request seam without adding a special-case runner.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Scenario files should be 大家一起的房间ed by product capability rather than source tree folder. Keep scenario IDs stable when…。

原文小纸条

Scenario files should be grouped by product capability rather than source tree folder. Keep scenario IDs stable when files move; use docsRefs and codeRefs for implementation traceability.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The baseline list should stay broad enough to cover:。

原文小纸条

The baseline list should stay broad enough to cover:

像准备清单

这一串条目别硬背,把它当成“Repo-backed seeds”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:DM and 消息通道 chat、thread behavior、小纸条消息 action lifecycle、cron callbacks。

原文小纸条
  • DM and channel chat
  • thread behavior
  • message action lifecycle
  • cron callbacks
  • memory recall
  • model switching
  • subagent handoff
  • repo-reading and docs-reading
  • one small build task such as Lobster Invaders

第 13 站

Provider mock lanes

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:qa suite has two local provider mock lanes: deterministic mock lane for repo-backed QA and parity gates. fixture, recor…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:qa suite has two local provider mock lanes:。

原文小纸条

qa suite has two local provider mock lanes:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:deterministic mock lane for repo-backed QA and parity gates.

原文小纸条

deterministic mock lane for repo-backed QA and parity gates.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:fixture, record/replay, and chaos coverage. It is additive and does not replace the mock-openai scenario dispatcher.

原文小纸条

fixture, record/replay, and chaos coverage. It is additive and does not replace the mock-openai scenario dispatcher.

像准备清单

这一串条目别硬背,把它当成“Provider mock lanes”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:mock-openai is the scenario-aware OpenCla…、aimock starts an AIMock-backed provider 大…。

原文小纸条
  • mock-openai is the scenario-aware OpenClaw mock. It remains the default
  • aimock starts an AIMock-backed provider server for experimental protocol,
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Provider-lane implementation lives under extensions/qa-lab/src/providers/. Each provider owns its defaults, local 大房子服务…。

原文小纸条

Provider-lane implementation lives under extensions/qa-lab/src/providers/. Each provider owns its defaults, local server startup, gateway model config, auth-profile staging needs, and live/mock capability flags. Shared suite and gateway code should route through the provider registry instead of branching on provider names.

第 14 站

Transport adapters

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

这段在解决什么

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

为什么值得看

你理解的是能力边界,不只是功能名字。

真要动手时

如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:qa-lab owns a generic transport seam for markdown QA scenarios. qa-消息通道 is the first adapter on that seam, but the desi…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:qa-lab owns a generic transport seam for markdown QA scenarios. qa-消息通道 is the first adapter on that seam, but the desi…。

原文小纸条

qa-lab owns a generic transport seam for markdown QA scenarios. qa-channel is the first adapter on that seam, but the design target is wider: future real or synthetic channels should plug into the same suite runner instead of adding a transport-specific QA runner.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:At the architecture level, the split is:。

原文小纸条

At the architecture level, the split is:

像准备清单

这一串条目别硬背,把它当成“Transport adapters”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:qa-lab owns generic scenario execution, w…、The transport adapter owns 门口的小门卫 设置说明书,…、Markdown scenario files under qa/scenario…。

原文小纸条
  • qa-lab owns generic scenario execution, worker concurrency, artifact writing, and reporting.
  • The transport adapter owns gateway config, readiness, inbound and outbound observation, transport actions, and normalized transport state.
  • Markdown scenario files under qa/scenarios/ define the test run; qa-lab provides the reusable runtime surface that executes them.

第 15 站

Adding a 消息通道

这一节更像安装或配置步骤,重点不是概念,而是“按什么顺序做才不会卡住”。

这段在解决什么

这一节更像安装或配置步骤,重点不是概念,而是“按什么顺序做才不会卡住”。

为什么值得看

很多文档看起来长,其实是在防你漏掉前置条件。

真要动手时

真正照做时,先找前置条件,再找必填项,最后看验证方法。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Adding a 消息通道 to the markdown QA system requires exactly two things: 1. A transport adapter for the 消息通道. 2. A scenario…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Adding a 消息通道 to the markdown QA system requires exactly two things:。

原文小纸条

Adding a channel to the markdown QA system requires exactly two things:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:1. A transport adapter for the 消息通道. 2. A scenario pack that exercises the 消息通道 contract.

原文小纸条

1. A transport adapter for the channel. 2. A scenario pack that exercises the channel contract.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Do not add a new top-level QA 魔法口令 root when the shared qa-lab host can own the flow.

原文小纸条

Do not add a new top-level QA command root when the shared qa-lab host can own the flow.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:qa-lab owns the shared host mechanics:。

原文小纸条

qa-lab owns the shared host mechanics:

像准备清单

这一串条目别硬背,把它当成“Adding a channel”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:the openclaw qa 魔法口令 root、suite startup and teardown、worker concurrency、artifact writing。

原文小纸条
  • the openclaw qa command root
  • suite startup and teardown
  • worker concurrency
  • artifact writing
  • report generation
  • scenario execution
  • compatibility aliases for older qa-channel scenarios
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Runner 新本领插件s own the transport contract:。

原文小纸条

Runner plugins own the transport contract:

像准备清单

这一串条目别硬背,把它当成“Adding a channel”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:how openclaw qa <runner> is mounted benea…、how the 门口的小门卫 is 设置说明书ured for that tran…、how readiness is checked、how inbound events are injected。

原文小纸条
  • how openclaw qa <runner> is mounted beneath the shared qa root
  • how the gateway is configured for that transport
  • how readiness is checked
  • how inbound events are injected
  • how outbound messages are observed
  • how transcripts and normalized transport state are exposed
  • how transport-backed actions are executed
  • how transport-specific reset or cleanup is handled
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The minimum adoption bar for a new 消息通道:。

原文小纸条

The minimum adoption bar for a new channel:

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:1. Keep qa-lab as the owner of the shared qa root. 2. Implement the transport runner on the shared qa-lab host seam. 3.…。

原文小纸条

1. Keep qa-lab as the owner of the shared qa root. 2. Implement the transport runner on the shared qa-lab host seam. 3. Keep transport-specific mechanics inside the runner plugin or channel harness. 4. Mount the runner as openclaw qa <runner> instead of registering a competing root command. Runner plugins should declare qaRunners in openclaw.plugin.json and export a matching qaRunnerCliRegistrations array from runtime-api.ts. Keep runtime-api.ts light; lazy CLI and runner execution should stay behind separate entrypoints. 5. Author or adapt markdown scenarios under the themed qa/scenarios/ directories. 6. Use the generic scenario helpers for new scenarios. 7. Keep existing compatibility aliases working unless the repo is doing an intentional migration.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The decision rule is strict:。

原文小纸条

The decision rule is strict:

像准备清单

这一串条目别硬背,把它当成“Adding a channel”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:If behavior can be expressed once in qa-l…、If behavior depends on one 消息通道 transport…、If a scenario needs a new capability that…、If a behavior is only meaningful for one…。

原文小纸条
  • If behavior can be expressed once in qa-lab, put it in qa-lab.
  • If behavior depends on one channel transport, keep it in that runner plugin or plugin harness.
  • If a scenario needs a new capability that more than one channel can use, add a generic helper instead of a channel-specific branch in suite.ts.
  • If a behavior is only meaningful for one transport, keep the scenario transport-specific and make that explicit in the scenario contract.

第 16 站

Scenario helper names

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

这段在解决什么

这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。

为什么值得看

你理解的是能力边界,不只是功能名字。

真要动手时

如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Preferred generic helpers for new scenarios: Compatibility aliases remain available for existing scenarios - waitForQa消…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Preferred generic helpers for new scenarios:。

原文小纸条

Preferred generic helpers for new scenarios:

像准备清单

这一串条目别硬背,把它当成“Scenario helper names”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:waitForTransportReady、waitFor消息通道Ready、injectInbound小纸条消息、injectOutbound小纸条消息。

原文小纸条
  • waitForTransportReady
  • waitForChannelReady
  • injectInboundMessage
  • injectOutboundMessage
  • waitForTransportOutboundMessage
  • waitForChannelOutboundMessage
  • waitForNoTransportOutbound
  • getTransportSnapshot
  • readTransportMessage
  • readTransportTranscript
  • formatTransportTranscript
  • resetTransport
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Compatibility aliases remain available for existing scenarios - waitForQa消息通道Ready, waitForOutbound小纸条消息, waitForNoOutb…。

原文小纸条

Compatibility aliases remain available for existing scenarios - waitForQaChannelReady, waitForOutboundMessage, waitForNoOutbound, formatConversationTranscript, resetBus - but new scenario authoring should use the generic names. The aliases exist to avoid a flag-day migration, not as the model going forward.

第 17 站

Reporting

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

这段在解决什么

这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。

为什么值得看

这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。

真要动手时

你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:qa-lab exports a Markdown protocol report from the observed bus timeline. The report should answer: For the inventory o…。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:qa-lab exports a Markdown protocol report from the observed bus timeline. The report should answer:。

原文小纸条

qa-lab exports a Markdown protocol report from the observed bus timeline. The report should answer:

像准备清单

这一串条目别硬背,把它当成“Reporting”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:What worked、What failed、What stayed blocked、What follow-up scenarios are worth adding。

原文小纸条
  • What worked
  • What failed
  • What stayed blocked
  • What follow-up scenarios are worth adding
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For the inventory of available scenarios - useful when sizing follow-up work or wiring a new transport - run pnpm openc…。

原文小纸条

For the inventory of available scenarios - useful when sizing follow-up work or wiring a new transport - run pnpm openclaw qa coverage (add --json for machine-readable output). When choosing focused proof for a touched behavior or file path, run pnpm openclaw qa coverage --match <query>. The match report searches scenario metadata, docs refs, code refs, coverage IDs, plugins, and provider requirements, then prints matching qa suite --scenario ... targets. Treat it as a discovery aid, not a gate replacement; the selected scenario still needs the right provider mode, live transport, Multipass, Testbox, or release lane for the behavior under test.

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For character and style checks, run the same scenario across multiple live 聪明脑袋模型 refs and write a judged Markdown repo…。

原文小纸条

For character and style checks, run the same scenario across multiple live model refs and write a judged Markdown report:

像魔法口令拆解

这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。

  • 这一句像在终端上按下启动钮:“pnpm openclaw qa character-eval \”。它会让电脑去请求、安装或者把东西搭起来。
  • 这一行“--model openai/gpt-5.5,thinking=medium,fast \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
  • 这一行“--model openai/gpt-5.2,thinking=xhigh \”是在给电脑递一张小纸条,告诉它眼下该做哪一步。
原文代码块
pnpm openclaw qa character-eval \
  --model openai/gpt-5.5,thinking=medium,fast \
  --model openai/gpt-5.2,thinking=xhigh \
  --model openai/gpt-5,thinking=xhigh \
  --model anthropic/claude-opus-4-7,thinking=high \
  --model anthropic/claude-sonnet-4-6,thinking=high \
  --model zai/glm-5.1,thinking=high \
  --model moonshot/kimi-k2.5,thinking=high \
  --model google/gemini-3.1-pro-preview,thinking=high \
  --judge-model openai/gpt-5.5,thinking=xhigh,fast \
  --judge-model anthropic/claude-opus-4-7,thinking=high \
  --blind-judge-models \
  --concurrency 16 \
  --judge-concurrency 16
像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The 魔法口令 runs local QA 门口的小门卫 child processes, not Docker. Character eval scenarios should set the persona through SOUL…。

原文小纸条

The command runs local QA gateway child processes, not Docker. Character eval scenarios should set the persona through SOUL.md, then run ordinary user turns such as chat, workspace help, and small file tasks. The candidate model should not be told that it is being evaluated. The command preserves each full transcript, records basic run stats, then asks the judge models in fast mode with xhigh reasoning where supported to rank the runs by naturalness, vibe, and humor. Use --blind-judge-models when comparing providers: the judge prompt still gets every transcript and run status, but candidate refs are replaced with neutral labels such as candidate-01; the report maps rankings back to real refs after parsing. Candidate runs default to high thinking, with medium for GPT-5.5 and xhigh for older OpenAI eval refs that support it. Override a specific candidate inline with --model provider/model,thinking=<level>. --thinking <level> still sets a global fallback, and the older --model-thinking <provider/model=level> form is kept for compatibility. OpenAI candidate refs default to fast mode so priority processing is used where the provider supports it. Add ,fast, ,no-fast, or ,fast=false inline when a single candidate or judge needs an override. Pass --fast only when you want to force fast mode on for every candidate model. Candidate and judge durations are recorded in the report for benchmark analysis, but judge prompts explicitly say not to rank by speed. Candidate and judge model runs both default to concurrency 16. Lower --concurrency or --judge-concurrency when provider limits or local gateway pressure make a run too noisy. When no candidate --model is passed, the character eval defaults to openai/gpt-5.5, openai/gpt-5.2, openai/gpt-5, anthropic/claude-opus-4-7, anthropic/claude-sonnet-4-6, zai/glm-5.1, moonshot/kimi-k2.5, and google/gemini-3.1-pro-preview when no --model is passed. When no --judge-model is passed, the judges default to openai/gpt-5.5,thinking=xhigh,fast and anthropic/claude-opus-4-7,thinking=high.

第 18 站

Related docs

这一节主要在解释“Related docs”到底是干什么的,以及你什么时候会遇到它。

这段在解决什么

这一节主要在解释“Related docs”到底是干什么的,以及你什么时候会遇到它。

为什么值得看

如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。

真要动手时

真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。

先别急着背术语

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。

像准备清单

这一串条目别硬背,把它当成“Related docs”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:Matrix QA、Personal 机器人朋友 benchmark pack、QA 消息通道、Testing。

像讲绘本

如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。

原文小纸条

---

AdSense 连接验证已经放在页面头部;广告单元等站点审批通过后再启用。

google-adsense-account: ca-pub-3833673520933536