Concepts 导读
Matrix QA:先把底下那条暗线看见
Matrix QA 这页在补地图,不是在发操作说明。看完你应该能指出它埋在系统哪一层、为什么会牵动后面的动作,以及最容易把哪几件事想反。原文最响的一记鼓点,其实是:The Matrix QA lane runs the bundled @openclaw/matrix 新本领插件 against a disposable Tuwunel…。
先听这页的人话版
Matrix QA
这一页不是在堆术语,它像把“Matrix QA”这台小机器搬到桌上,当着你的面拆开给你看。你先不用全记住,先抓住它到底在忙什么:The Matrix QA lane runs the bundled @openclaw/matrix 新本领插件 against a disposable Tuwunel home大房子…。
如果把这页当成“给普通人看的版本”,你最应该带走的是:它到底在教你一件什么事、什么时候要这样做、以及哪里最容易踩坑。
第 1 站
Start Here
这一节更像安装或配置步骤,重点不是概念,而是“按什么顺序做才不会卡住”。
这一节更像安装或配置步骤,重点不是概念,而是“按什么顺序做才不会卡住”。
很多文档看起来长,其实是在防你漏掉前置条件。
真正照做时,先找前置条件,再找必填项,最后看验证方法。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The Matrix QA lane runs the bundled @openclaw/matrix 新本领插件 against a disposable Tuwunel home大房子服务器 in Docker, with temp…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The Matrix QA lane runs the bundled @openclaw/matrix 新本领插件 against a disposable Tuwunel home大房子服务器 in Docker, with temp…。
The Matrix QA lane runs the bundled @openclaw/matrix plugin against a disposable Tuwunel homeserver in Docker, with temporary driver, SUT, and observer accounts plus seeded rooms. It is the live transport-real coverage for Matrix.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:This is maintainer-only 工具小帮手ing. Packaged OpenClaw releases intentionally omit qa-lab, so openclaw qa is only availabl…。
This is maintainer-only tooling. Packaged OpenClaw releases intentionally omit qa-lab, so openclaw qa is only available from a source checkout. Source checkouts load the bundled runner directly - no plugin install step is needed.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:For broader QA framework context, see QA overview.
For broader QA framework context, see QA overview.
第 2 站
Quick start
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Plain pnpm openclaw qa matrix runs --profile all and does not stop on first failure. Use --profile fast --fail-fast for…。
这是一串终端口令,像你站在控制台前,一下下按按钮让机器醒过来。
- 这一句像在终端上按下启动钮:“pnpm openclaw qa matrix --profile fast --fail-fast”。它会让电脑去请求、安装或者把东西搭起来。
pnpm openclaw qa matrix --profile fast --fail-fast
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Plain pnpm openclaw qa matrix runs --profile all and does not stop on first failure. Use --profile fast --fail-fast for…。
Plain pnpm openclaw qa matrix runs --profile all and does not stop on first failure. Use --profile fast --fail-fast for a release gate; shard the catalog with --profile transport|media|e2ee-smoke|e2ee-deep|e2ee-cli when running the full inventory in parallel.
第 3 站
What the lane does
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:1. Provisions a disposable Tuwunel home大房子服务器 in Docker (default image ghcr.io/matrix-construct/tuwunel:v1.5.1, 大房子服务器…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:1. Provisions a disposable Tuwunel home大房子服务器 in Docker (default image ghcr.io/matrix-construct/tuwunel:v1.5.1, 大房子服务器…。
1. Provisions a disposable Tuwunel homeserver in Docker (default image ghcr.io/matrix-construct/tuwunel:v1.5.1, server name matrix-qa.test, port 28008). 2. Registers three temporary users - driver (sends inbound traffic), sut (the OpenClaw Matrix account under test), observer (third-party traffic capture). 3. Seeds rooms required by the selected scenarios (main, threading, media, restart, secondary, allowlist, E2EE, verification DM, etc.). 4. Starts a child OpenClaw gateway with the real Matrix plugin scoped to the SUT account; qa-channel is not loaded in the child. 5. Runs scenarios in sequence, observing events through the driver/observer Matrix clients. 6. Tears down the homeserver, writes report and summary artifacts, then exits.
第 4 站
CLI
这一节主要在解释“CLI”到底是干什么的,以及你什么时候会遇到它。
这一节主要在解释“CLI”到底是干什么的,以及你什么时候会遇到它。
如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。
真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。
这一小段像旁白,在提醒我们镜头已经切到下一站。
这段像放在桌上的操作卡,谁来照着做,现场就会动起来。
- 这一句像在终端上按下启动钮:“pnpm openclaw qa matrix [options]”。它会让电脑去请求、安装或者把东西搭起来。
pnpm openclaw qa matrix [options]
第 5 站
Common flags
这一节主要在解释“Common flags”到底是干什么的,以及你什么时候会遇到它。
这一节主要在解释“Common flags”到底是干什么的,以及你什么时候会遇到它。
如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。
真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。
这一小段像旁白,在提醒我们镜头已经切到下一站。
这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。
| Flag | Default | Description |
|---|---|---|
--profile <profile> | all | Scenario profile. See Profiles. |
--fail-fast | off | Stop after the first failed check or scenario. |
--scenario <id> | - | Run only this scenario. Repeatable. See Scenarios. |
--output-dir <path> | <repo>/.artifacts/qa-e2e/matrix-<timestamp> | Where reports, summary, observed events, and the output log are written. Relative paths resolve against --repo-root. |
--repo-root <path> | process.cwd() | Repository root when invoking from a neutral working directory. |
--sut-account <id> | sut | Matrix account id inside the QA gateway config. |
第 6 站
Provider flags
这一节主要在解释“Provider flags”到底是干什么的,以及你什么时候会遇到它。
这一节主要在解释“Provider flags”到底是干什么的,以及你什么时候会遇到它。
如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。
真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The lane uses a real Matrix transport but the 聪明脑袋模型 provider is 设置说明书urable: Matrix QA does not accept --credential-so…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The lane uses a real Matrix transport but the 聪明脑袋模型 provider is 设置说明书urable:。
The lane uses a real Matrix transport but the model provider is configurable:
这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。
| Flag | Default | Description |
|---|---|---|
--provider-mode <mode> | live-frontier | mock-openai for deterministic mock dispatch or live-frontier for live frontier providers. The legacy alias live-openai still works. |
--model <ref> | provider default | Primary provider/model ref. |
--alt-model <ref> | provider default | Alternate provider/model ref where scenarios switch mid-run. |
--fast | off | Enable provider fast mode where supported. |
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Matrix QA does not accept --credential-source or --credential-role. The lane provisions disposable users locally; there…。
Matrix QA does not accept --credential-source or --credential-role. The lane provisions disposable users locally; there is no shared credential pool to lease against.
第 7 站
Profiles
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The selected profile decides which scenarios run. The exact mapping lives in extensions/qa-matrix/src/runners/contract/…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The selected profile decides which scenarios run.
The selected profile decides which scenarios run.
这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。
| Profile | Use it for |
|---|---|
all (default) | Full catalog. Slow but exhaustive. |
fast | Release-gate subset that exercises the live transport contract: canary, mention gating, allowlist block, reply shape, restart resume, thread follow-up, thread isolation, reaction observation, and exec approval metadata delivery. |
transport | Transport-level threading, DM, room, autojoin, mention/allowlist, approval, and reaction scenarios. |
media | Image, audio, video, PDF, EPUB attachment coverage. |
e2ee-smoke | Minimum E2EE coverage - basic encrypted reply, thread follow-up, bootstrap success. |
e2ee-deep | Exhaustive E2EE state-loss, backup, key, and recovery scenarios. |
e2ee-cli | openclaw matrix encryption setup and verify * CLI scenarios driven through the QA harness. |
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The exact mapping lives in extensions/qa-matrix/src/runners/contract/scenario-catalog.ts.
The exact mapping lives in extensions/qa-matrix/src/runners/contract/scenario-catalog.ts.
第 8 站
Scenarios
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The full scenario id list is the MatrixQaScenarioId union in extensions/qa-matrix/src/runners/contract/scenario-catalog…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The full scenario id list is the MatrixQaScenarioId union in extensions/qa-matrix/src/runners/contract/scenario-catalog…。
The full scenario id list is the MatrixQaScenarioId union in extensions/qa-matrix/src/runners/contract/scenario-catalog.ts:15. Categories include:
这一串条目别硬背,把它当成“Scenarios”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:threading - matrix-thread-*, matrix-sub机器…、top-level / DM / room - matrix-top-level-…、一边说一边送ing and 工具小帮手 progress - matrix-roo…、media - matrix-media-type-coverage, matri…。
- threading -
matrix-thread-*,matrix-subagent-thread-spawn - top-level / DM / room -
matrix-top-level-reply-shape,matrix-room-*,matrix-dm-* - streaming and tool progress -
matrix-room-partial-streaming-preview,matrix-room-quiet-streaming-preview,matrix-room-tool-progress-*,matrix-room-block-streaming - media -
matrix-media-type-coverage,matrix-room-image-understanding-attachment,matrix-attachment-only-ignored,matrix-unsupported-media-safe - routing -
matrix-room-autojoin-invite,matrix-secondary-room-* - reactions -
matrix-reaction-* - approvals -
matrix-approval-*(exec/plugin metadata, chunked fallback, deny reactions, threads, andtarget: "both"routing) - restart and replay -
matrix-restart-*,matrix-stale-sync-replay-dedupe,matrix-room-membership-loss,matrix-homeserver-restart-resume,matrix-initial-catchup-then-incremental - mention gating, bot-to-bot, and allowlists -
matrix-mention-*,matrix-allowbots-*,matrix-allowlist-*,matrix-multi-actor-ordering,matrix-inbound-edit-*,matrix-mxid-prefixed-command-block,matrix-observer-allowlist-override - E2EE -
matrix-e2ee-*(basic reply, thread follow-up, bootstrap, recovery key lifecycle, state-loss variants, server backup behavior, device hygiene, SAS / QR / DM verification, restart, artifact redaction) - E2EE CLI -
matrix-e2ee-cli-*(encryption setup, idempotent setup, bootstrap failure, recovery-key lifecycle, multi-account, gateway-reply round-trip, self-verification)
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Pass --scenario <id> (repeatable) to run a hand-picked set; combine with --profile all to ignore profile gating.
Pass --scenario <id> (repeatable) to run a hand-picked set; combine with --profile all to ignore profile gating.
第 9 站
Environment variables
这一节主要在解释“Environment variables”到底是干什么的,以及你什么时候会遇到它。
这一节主要在解释“Environment variables”到底是干什么的,以及你什么时候会遇到它。
如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。
真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。
这一小段像旁白,在提醒我们镜头已经切到下一站。
这段是在把几种选项排成表格,左边像标签,右边像说明。手机上可以横向滑动原文表格。
| Variable | Default | Effect |
|---|---|---|
OPENCLAW_QA_MATRIX_TIMEOUT_MS | 1800000 (30 min) | Hard upper bound on the entire run. |
OPENCLAW_QA_MATRIX_CANARY_TIMEOUT_MS | 45000 | Bound for the initial canary reply. Release CI raises this on shared runners so a slow first gateway turn does not fail before scenario coverage starts. |
OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS | 8000 | Quiet window for negative no-reply assertions. Clamped to ≤ the run timeout. |
OPENCLAW_QA_MATRIX_CLEANUP_TIMEOUT_MS | 90000 | Bound for Docker teardown. Failure surfaces include the recovery docker compose ... down --remove-orphans command. |
OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE | ghcr.io/matrix-construct/tuwunel:v1.5.1 | Override the homeserver image when validating against a different Tuwunel version. |
OPENCLAW_QA_MATRIX_PROGRESS | on | 0 silences [matrix-qa] ... progress lines on stderr. 1 forces them on. |
OPENCLAW_QA_MATRIX_CAPTURE_CONTENT | redacted | 1 keeps message body and formatted_body in matrix-qa-observed-events.json. Default redacts to keep CI artifacts safe. |
OPENCLAW_QA_MATRIX_DISABLE_FORCE_EXIT | off | 1 skips the deterministic process.exit after artifact write. The default forces exit because matrix-js-sdk's native crypto handles can keep the event loop alive past artifact completion. |
OPENCLAW_RUN_NODE_OUTPUT_LOG | unset | When set by an outer launcher (e.g. scripts/run-node.mjs), Matrix QA reuses that log path instead of starting its own tee. |
第 10 站
Output artifacts
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Written to --output-dir: The default output dir is <repo>/.artifacts/qa-e2e/matrix-<timestamp> so successive runs do no…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Written to --output-dir:。
Written to --output-dir:
这一串条目别硬背,把它当成“Output artifacts”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:matrix-qa-report.md - Markdown protocol r…、matrix-qa-summary.json - Structured summa…、matrix-qa-observed-events.json - Observed…、matrix-qa-output.log - Combined stdout/st…。
matrix-qa-report.md- Markdown protocol report (what passed, failed, was skipped, and why).matrix-qa-summary.json- Structured summary suitable for CI parsing and dashboards.matrix-qa-observed-events.json- Observed Matrix events from the driver and observer clients. Bodies are redacted unlessOPENCLAW_QA_MATRIX_CAPTURE_CONTENT=1; approval metadata is summarized with selected safe fields and truncated command preview.matrix-qa-output.log- Combined stdout/stderr from the run. IfOPENCLAW_RUN_NODE_OUTPUT_LOGis set, the outer launcher's log is reused instead.
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:The default output dir is <repo>/.artifacts/qa-e2e/matrix-<timestamp> so successive runs do not overwrite each other.
The default output dir is <repo>/.artifacts/qa-e2e/matrix-<timestamp> so successive runs do not overwrite each other.
第 11 站
Triage tips
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这一节在讲规则和边界:什么默认允许、什么必须显式打开、什么被禁止。
这种内容决定了 OpenClaw 是“能做”还是“现在还不能做”,读懂它比记术语更重要。
你可以把这一节当成权限说明书,真正配置时优先盯住 default、required、allow、deny 这几个词。
这一小段像旁白,在提醒我们镜头已经切到下一站。
这一串条目别硬背,把它当成“Triage tips”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:**Run hangs near the end:** matrix-js-sdk…、**Cleanup error:** look for the printed r…、**Flaky negative-assertion windows in CI:…、**Need redacted bodies for a bug report:*…。
- **Run hangs near the end:**
matrix-js-sdknative crypto handles can outlive the harness. The default forces a cleanprocess.exitafter artifact write; if you have unsetOPENCLAW_QA_MATRIX_DISABLE_FORCE_EXIT=1, expect the process to linger. - **Cleanup error:** look for the printed recovery command (a
docker compose ... down --remove-orphansinvocation) and run it manually to release the homeserver port. - **Flaky negative-assertion windows in CI:** lower
OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS(default 8 s) when CI is fast; raise it on slow shared runners. - **Need redacted bodies for a bug report:** rerun with
OPENCLAW_QA_MATRIX_CAPTURE_CONTENT=1and attachmatrix-qa-observed-events.json. Treat the resulting artifact as sensitive. - **Different Tuwunel version:** point
OPENCLAW_QA_MATRIX_TUWUNEL_IMAGEat the version under test. The lane checks in only the pinned default image.
第 12 站
Live transport contract
这一节主要在解释“Live transport contract”到底是干什么的,以及你什么时候会遇到它。
这一节主要在解释“Live transport contract”到底是干什么的,以及你什么时候会遇到它。
如果你是第一次接触 OpenClaw,这一节最值得看的不是术语本身,而是它背后的使用场景和限制。
真正动手时,先看它有没有默认值、有没有必须打开的选项、以及会不会影响安全边界。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Matrix is one of three live transport lanes (Matrix, Telegram, Discord) that share a single contract checklist defined…。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:Matrix is one of three live transport lanes (Matrix, Telegram, Discord) that share a single contract checklist defined…。
Matrix is one of three live transport lanes (Matrix, Telegram, Discord) that share a single contract checklist defined in QA overview → Live transport coverage. qa-channel remains the broad synthetic suite and is intentionally not part of that matrix.
第 13 站
Related
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
这一节在讲一类能力是怎么工作的:它能做什么、不能做什么、适合在什么场景下调用。
你理解的是能力边界,不只是功能名字。
如果这节里同时出现命令、配置和例子,优先先看例子,再回头看配置。
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
这一串条目别硬背,把它当成“Related”门口贴出来的几张便签就行。它们在提醒你先备好什么、别漏掉什么、哪里最容易走错:QA overview - overall QA stack and live t…、QA 消息通道 - synthetic 消息通道 adapter for repo…、Testing - running tests and adding QA cov…、Matrix - the 消息通道 新本领插件 under test。
- QA overview - overall QA stack and live transport contract
- QA Channel - synthetic channel adapter for repo-backed scenarios
- Testing - running tests and adding QA coverage
- Matrix - the channel plugin under test
如果把这一段摆成一个小场景,你会看到几样东西正在互相打招呼、拦路或者传东西。别急着记名词,先抓住它此刻到底在发生什么:---。
---
AdSense 连接验证已经放在页面头部;广告单元等站点审批通过后再启用。
google-adsense-account: ca-pub-3833673520933536