Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
เลน QA ของ Matrix รัน Plugin @openclaw/matrix ที่บันเดิลมากับโฮมเซิร์ฟเวอร์ Tuwunel แบบใช้แล้วทิ้งใน Docker พร้อมบัญชี driver, SUT และ observer ชั่วคราว รวมถึงห้องที่เตรียมข้อมูลไว้แล้ว นี่คือความครอบคลุมแบบสดที่ใช้ทรานสปอร์ตจริงสำหรับ Matrix
นี่เป็นเครื่องมือสำหรับผู้ดูแลเท่านั้น รีลีส OpenClaw แบบแพ็กเกจจะจงใจไม่รวม qa-lab ดังนั้น openclaw qa จึงใช้ได้จากซอร์สเช็กเอาต์เท่านั้น ซอร์สเช็กเอาต์จะโหลดรันเนอร์ที่บันเดิลมาโดยตรง - ไม่ต้องมีขั้นตอนติดตั้ง Plugin
สำหรับบริบทของเฟรมเวิร์ก QA ที่กว้างขึ้น โปรดดู ภาพรวม QA
เริ่มต้นอย่างรวดเร็ว
pnpm openclaw qa matrix --profile fast --fail-fast
pnpm openclaw qa matrix แบบธรรมดาจะรัน --profile all และจะไม่หยุดเมื่อเจอความล้มเหลวแรก ใช้ --profile fast --fail-fast สำหรับเกตของรีลีส; แบ่งแค็ตตาล็อกด้วย --profile transport|media|e2ee-smoke|e2ee-deep|e2ee-cli เมื่อรันอินเวนทอรีทั้งหมดแบบขนาน
สิ่งที่เลนทำ
- จัดเตรียมโฮมเซิร์ฟเวอร์ Tuwunel แบบใช้แล้วทิ้งใน Docker (อิมเมจเริ่มต้น
ghcr.io/matrix-construct/tuwunel:v1.5.1, ชื่อเซิร์ฟเวอร์ matrix-qa.test, พอร์ต 28008)
- ลงทะเบียนผู้ใช้ชั่วคราวสามราย -
driver (ส่งทราฟฟิกขาเข้า), sut (บัญชี Matrix ของ OpenClaw ที่อยู่ระหว่างการทดสอบ), observer (บันทึกทราฟฟิกจากบุคคลที่สาม)
- เตรียมห้องที่สถานการณ์ที่เลือกต้องใช้ (main, threading, media, restart, secondary, allowlist, E2EE, verification DM ฯลฯ)
- เริ่ม Gateway ลูกของ OpenClaw พร้อม Plugin Matrix จริงที่จำกัดขอบเขตไว้กับบัญชี SUT;
qa-channel จะไม่ถูกโหลดในลูก
- รันสถานการณ์ตามลำดับ โดยสังเกตเหตุการณ์ผ่านไคลเอนต์ Matrix ของ driver/observer
- ปิดโฮมเซิร์ฟเวอร์ เขียนรายงานและอาร์ติแฟกต์สรุป แล้วจึงออก
CLI
pnpm openclaw qa matrix [options]
แฟล็กทั่วไป
| แฟล็ก | ค่าเริ่มต้น | คำอธิบาย |
|---|
--profile <profile> | all | โปรไฟล์สถานการณ์ ดู โปรไฟล์ |
--fail-fast | ปิด | หยุดหลังจากเช็กหรือสถานการณ์แรกล้มเหลว |
--scenario <id> | - | รันเฉพาะสถานการณ์นี้ ทำซ้ำได้ ดู สถานการณ์ |
--output-dir <path> | <repo>/.artifacts/qa-e2e/matrix-<timestamp> | ตำแหน่งเขียนรายงาน สรุป เหตุการณ์ที่สังเกตได้ และล็อกเอาต์พุต พาธสัมพัทธ์จะถูก resolve เทียบกับ --repo-root |
--repo-root <path> | process.cwd() | รากของรีโพซิทอรีเมื่อเรียกจากไดเรกทอรีทำงานที่เป็นกลาง |
--sut-account <id> | sut | ID บัญชี Matrix ภายในคอนฟิก Gateway ของ QA |
แฟล็กผู้ให้บริการ
เลนใช้ทรานสปอร์ต Matrix จริง แต่สามารถกำหนดค่าผู้ให้บริการโมเดลได้:
| แฟล็ก | ค่าเริ่มต้น | คำอธิบาย |
|---|
--provider-mode <mode> | live-frontier | mock-openai สำหรับการ dispatch แบบ mock ที่กำหนดผลได้ หรือ live-frontier สำหรับผู้ให้บริการ frontier แบบสด alias เดิม live-openai ยังใช้ได้ |
--model <ref> | ค่าเริ่มต้นของผู้ให้บริการ | ref หลัก provider/model |
--alt-model <ref> | ค่าเริ่มต้นของผู้ให้บริการ | ref สำรอง provider/model เมื่อสถานการณ์สลับระหว่างการรัน |
--fast | ปิด | เปิดใช้งานโหมดเร็วของผู้ให้บริการในที่ที่รองรับ |
Matrix QA ไม่รับ --credential-source หรือ --credential-role เลนจะจัดเตรียมผู้ใช้แบบใช้แล้วทิ้งภายในเครื่อง จึงไม่มีพูลข้อมูลประจำตัวร่วมให้เช่าใช้
โปรไฟล์
โปรไฟล์ที่เลือกจะกำหนดว่าสถานการณ์ใดจะรัน
| โปรไฟล์ | ใช้สำหรับ |
|---|
all (ค่าเริ่มต้น) | แค็ตตาล็อกทั้งหมด ช้าแต่ครอบคลุมครบถ้วน |
fast | ชุดย่อยสำหรับเกตของรีลีสที่ทดสอบสัญญาทรานสปอร์ตจริง: canary, mention gating, allowlist block, reply shape, restart resume, thread follow-up, thread isolation, reaction observation และการส่งมอบเมทาดาทาการอนุมัติ exec |
transport | สถานการณ์ระดับทรานสปอร์ตเกี่ยวกับ threading, DM, room, autojoin, mention/allowlist, approval และ reaction |
media | ความครอบคลุมไฟล์แนบรูปภาพ เสียง วิดีโอ PDF และ EPUB |
e2ee-smoke | ความครอบคลุม E2EE ขั้นต่ำ - การตอบกลับที่เข้ารหัสพื้นฐาน, thread follow-up, bootstrap สำเร็จ |
e2ee-deep | สถานการณ์ E2EE แบบครอบคลุมเกี่ยวกับการสูญเสีย state, backup, key และ recovery |
e2ee-cli | สถานการณ์ CLI ของ openclaw matrix encryption setup และ verify * ที่ขับผ่าน QA harness |
การแมปที่แน่นอนอยู่ใน extensions/qa-matrix/src/runners/contract/scenario-catalog.ts
สถานการณ์
รายการ ID สถานการณ์ทั้งหมดคือ union MatrixQaScenarioId ใน extensions/qa-matrix/src/runners/contract/scenario-catalog.ts:15 หมวดหมู่ประกอบด้วย:
- threading -
matrix-thread-*, matrix-subagent-thread-spawn
- top-level / DM / room -
matrix-top-level-reply-shape, matrix-room-*, matrix-dm-*
- streaming และความคืบหน้าของเครื่องมือ -
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, chunked fallback, deny reactions, threads และการ routing แบบ target: "both")
- restart และ 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 และ 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-* (การตอบกลับพื้นฐาน, thread follow-up, bootstrap, วงจรชีวิต recovery key, ตัวแปร state-loss, พฤติกรรม server backup, device hygiene, การยืนยัน SAS / QR / DM, restart, การ redact อาร์ติแฟกต์)
- E2EE CLI -
matrix-e2ee-cli-* (encryption setup, การตั้งค่าแบบ idempotent, bootstrap failure, วงจรชีวิต recovery-key, หลายบัญชี, gateway-reply round-trip, self-verification)
ส่ง --scenario <id> (ทำซ้ำได้) เพื่อรันชุดที่เลือกเอง; รวมกับ --profile all เพื่อไม่สนใจ profile gating
ตัวแปรสภาพแวดล้อม
| ตัวแปร | ค่าเริ่มต้น | ผลกระทบ |
|---|
OPENCLAW_QA_MATRIX_TIMEOUT_MS | 1800000 (30 นาที) | ขอบเขตเวลาสูงสุดแบบเด็ดขาดสำหรับการรันทั้งหมด |
OPENCLAW_QA_MATRIX_CANARY_TIMEOUT_MS | 45000 | ขอบเขตเวลาสำหรับการตอบกลับ canary เริ่มต้น CI สำหรับรีลีสจะเพิ่มค่านี้บนรันเนอร์ที่ใช้ร่วมกัน เพื่อไม่ให้เทิร์น Gateway แรกที่ช้าทำให้ล้มเหลวก่อนเริ่มครอบคลุมสถานการณ์ทดสอบ |
OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS | 8000 | ช่วงเวลาเงียบสำหรับการยืนยันเชิงลบแบบไม่มีการตอบกลับ ถูกจำกัดไว้ที่ ≤ เวลาหมดอายุของการรัน |
OPENCLAW_QA_MATRIX_CLEANUP_TIMEOUT_MS | 90000 | ขอบเขตเวลาสำหรับการรื้อถอน Docker พื้นผิวความล้มเหลวจะรวมคำสั่งกู้คืน docker compose ... down --remove-orphans |
OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE | ghcr.io/matrix-construct/tuwunel:v1.5.1 | แทนที่อิมเมจ homeserver เมื่อตรวจสอบกับ Tuwunel เวอร์ชันอื่น |
OPENCLAW_QA_MATRIX_PROGRESS | เปิด | 0 ปิดบรรทัดความคืบหน้า [matrix-qa] ... บน stderr 1 บังคับให้เปิด |
OPENCLAW_QA_MATRIX_CAPTURE_CONTENT | ปกปิดแล้ว | 1 เก็บเนื้อหาข้อความและ formatted_body ใน matrix-qa-observed-events.json ค่าเริ่มต้นจะปกปิดเพื่อให้อาร์ติแฟกต์ CI ปลอดภัย |
OPENCLAW_QA_MATRIX_DISABLE_FORCE_EXIT | ปิด | 1 ข้าม process.exit แบบกำหนดแน่นอนหลังเขียนอาร์ติแฟกต์ ค่าเริ่มต้นบังคับให้ออก เพราะแฮนเดิลคริปโตเนทีฟของ matrix-js-sdk อาจทำให้ event loop ยังทำงานต่อหลังอาร์ติแฟกต์เสร็จสมบูรณ์ |
OPENCLAW_RUN_NODE_OUTPUT_LOG | ไม่ได้ตั้งค่า | เมื่อตั้งค่าโดยตัวเรียกใช้งานภายนอก (เช่น scripts/run-node.mjs) Matrix QA จะใช้พาธบันทึกนั้นซ้ำแทนการเริ่ม tee ของตัวเอง |
อาร์ติแฟกต์ผลลัพธ์
เขียนไปยัง --output-dir:
matrix-qa-report.md - รายงานโปรโตคอล Markdown (สิ่งที่ผ่าน ล้มเหลว ถูกข้าม และเหตุผล)
matrix-qa-summary.json - สรุปแบบมีโครงสร้างที่เหมาะสำหรับการแยกวิเคราะห์ของ CI และแดชบอร์ด
matrix-qa-observed-events.json - เหตุการณ์ Matrix ที่สังเกตได้จากไคลเอนต์ไดรเวอร์และไคลเอนต์ผู้สังเกตการณ์ เนื้อหาจะถูกปกปิด เว้นแต่ OPENCLAW_QA_MATRIX_CAPTURE_CONTENT=1; เมตาดาต้าการอนุมัติจะถูกสรุปด้วยฟิลด์ที่ปลอดภัยที่เลือกไว้และตัวอย่างคำสั่งที่ตัดให้สั้นลง
matrix-qa-output.log - stdout/stderr รวมจากการรัน หากตั้งค่า OPENCLAW_RUN_NODE_OUTPUT_LOG จะใช้บันทึกของตัวเรียกใช้งานภายนอกซ้ำแทน
ไดเรกทอรีผลลัพธ์เริ่มต้นคือ <repo>/.artifacts/qa-e2e/matrix-<timestamp> เพื่อให้การรันต่อเนื่องไม่เขียนทับกัน
เคล็ดลับการคัดแยก
- การรันค้างใกล้จุดจบ: แฮนเดิลคริปโตเนทีฟของ
matrix-js-sdk อาจมีอายุนานกว่าฮาร์เนส ค่าเริ่มต้นจะบังคับ process.exit แบบสะอาดหลังเขียนอาร์ติแฟกต์; หากคุณยกเลิกการตั้งค่า OPENCLAW_QA_MATRIX_DISABLE_FORCE_EXIT=1 คาดได้ว่าโปรเซสจะค้างต่อ
- ข้อผิดพลาดการล้างข้อมูล: มองหาคำสั่งกู้คืนที่พิมพ์ออกมา (การเรียกใช้
docker compose ... down --remove-orphans) แล้วรันด้วยตนเองเพื่อปล่อยพอร์ต homeserver
- ช่วงเวลาการยืนยันเชิงลบไม่เสถียรใน CI: ลด
OPENCLAW_QA_MATRIX_NO_REPLY_WINDOW_MS (ค่าเริ่มต้น 8 วินาที) เมื่อ CI เร็ว; เพิ่มค่านี้บนรันเนอร์ที่ใช้ร่วมกันที่ช้า
- ต้องการเนื้อหาที่ปกปิดแล้วสำหรับรายงานบั๊ก: รันซ้ำด้วย
OPENCLAW_QA_MATRIX_CAPTURE_CONTENT=1 แล้วแนบ matrix-qa-observed-events.json ให้ถือว่าอาร์ติแฟกต์ที่ได้เป็นข้อมูลอ่อนไหว
- Tuwunel เวอร์ชันอื่น: ชี้
OPENCLAW_QA_MATRIX_TUWUNEL_IMAGE ไปยังเวอร์ชันที่กำลังทดสอบ เลนจะตรวจเฉพาะอิมเมจค่าเริ่มต้นที่ปักหมุดไว้เท่านั้น
สัญญาการขนส่งแบบสด
Matrix เป็นหนึ่งในสามเลนการขนส่งแบบสด (Matrix, Telegram, Discord) ที่ใช้เช็กลิสต์สัญญาเดียวกันซึ่งกำหนดไว้ใน ภาพรวม QA → การครอบคลุมการขนส่งแบบสด qa-channel ยังคงเป็นชุดสังเคราะห์แบบกว้าง และตั้งใจให้ไม่เป็นส่วนหนึ่งของเมทริกซ์นั้น
ที่เกี่ยวข้อง
- ภาพรวม QA - สแต็ก QA โดยรวมและสัญญาการขนส่งแบบสด
- QA Channel - อะแดปเตอร์ช่องทางสังเคราะห์สำหรับสถานการณ์ที่อิงกับรีโป
- การทดสอบ - การรันการทดสอบและการเพิ่มความครอบคลุม QA
- Matrix - Plugin ช่องทางที่อยู่ระหว่างการทดสอบ