Fundamentals
การประกันคุณภาพ Matrix
เลน 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 ช่องทางที่อยู่ระหว่างการทดสอบ