Matrix (plugin)
- Matrix là một giao thức nhắn tin mở, phi tập trung. 33. OpenClaw kết nối như một người dùng Matrix trên bất kỳ homeserver nào, vì vậy bạn cần một tài khoản Matrix cho bot. 34. Sau khi đăng nhập, bạn có thể DM bot trực tiếp hoặc mời nó vào các phòng (“groups” của Matrix). 35. Beeper cũng là một tùy chọn client hợp lệ, nhưng yêu cầu phải bật E2EE.
- Trạng thái: được hỗ trợ thông qua plugin (@vector-im/matrix-bot-sdk). Tin nhắn trực tiếp, phòng, luồng, media, reaction, thăm dò ý kiến (gửi + poll-start dưới dạng văn bản), vị trí và E2EE (có hỗ trợ crypto).
Yêu cầu plugin
Cài đặt qua CLI (npm registry): Cài đặt qua CLI (npm registry):Thiết lập
-
Cài đặt plugin Matrix:
- Từ npm:
openclaw plugins install @openclaw/matrix - Từ bản checkout cục bộ:
openclaw plugins install ./extensions/matrix
- Từ npm:
-
Tạo một tài khoản Matrix trên homeserver:
- Xem các tùy chọn lưu trữ tại https://matrix.org/ecosystem/hosting/
- Hoặc tự host.
-
Lấy access token cho tài khoản bot:
- Dùng Matrix login API với
curltại homeserver của bạn:
- Thay
matrix.example.orgbằng URL homeserver của bạn. - Hoặc đặt
channels.matrix.userId+channels.matrix.password: OpenClaw gọi cùng endpoint đăng nhập, lưu access token vào~/.openclaw/credentials/matrix/credentials.json, và tái sử dụng ở lần khởi động tiếp theo.
- Dùng Matrix login API với
-
Cấu hình thông tin xác thực:
- Env:
MATRIX_HOMESERVER,MATRIX_ACCESS_TOKEN(hoặcMATRIX_USER_ID+MATRIX_PASSWORD) - Hoặc config:
channels.matrix.* - Nếu cả hai cùng được đặt, config có ưu tiên cao hơn.
- Khi dùng access token: user ID được lấy tự động qua
/whoami. - Khi đặt,
channels.matrix.userIdphải là Matrix ID đầy đủ (ví dụ:@bot:example.org).
- Env:
- Khởi động lại gateway (hoặc hoàn tất onboarding).
-
- Bắt đầu DM với bot hoặc mời nó vào một phòng từ bất kỳ client Matrix nào
(Element, Beeper, v.v.; xem https://matrix.org/ecosystem/clients/). 39. Beeper yêu cầu E2EE,
vì vậy hãy đặt
channels.matrix.encryption: truevà xác minh thiết bị.
- Bắt đầu DM với bot hoặc mời nó vào một phòng từ bất kỳ client Matrix nào
(Element, Beeper, v.v.; xem https://matrix.org/ecosystem/clients/). 39. Beeper yêu cầu E2EE,
vì vậy hãy đặt
Mã hóa (E2EE)
Bật bằngchannels.matrix.encryption: true:
Bật bằng channels.matrix.encryption: true:
- Nếu mô-đun crypto tải thành công, các phòng được mã hóa sẽ tự động được giải mã.
- Nếu access token (thiết bị) thay đổi, một kho mới sẽ được tạo và bot phải được xác minh lại cho các phòng được mã hóa.
- Xác minh thiết bị: Khi E2EE được bật, bot sẽ yêu cầu xác minh từ các phiên khác của bạn khi khởi động.
- Xác minh thiết bị trong một client Matrix khác (Element, v.v.). 41. để bật chia sẻ khóa.
- Nếu mô-đun crypto không thể tải, E2EE sẽ bị tắt và các phòng được mã hóa sẽ không được giải mã; OpenClaw ghi log cảnh báo.
- Nếu bạn thấy lỗi thiếu mô-đun crypto (ví dụ,
@matrix-org/matrix-sdk-crypto-nodejs-*), hãy cho phép build scripts cho@matrix-org/matrix-sdk-crypto-nodejsvà chạypnpm rebuild @matrix-org/matrix-sdk-crypto-nodejshoặc tải binary bằngnode node_modules/@matrix-org/matrix-sdk-crypto-nodejs/download-lib.js.
-
Trạng thái crypto được lưu theo từng tài khoản + access token trong
~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/crypto/(cơ sở dữ liệu SQLite). 43. Trạng thái đồng bộ được lưu cùng với nó trongbot-storage.json. - Nếu access token (thiết bị) thay đổi, một kho mới sẽ được tạo và bot phải được xác minh lại cho các phòng được mã hóa.
- Xác minh thiết bị: Khi E2EE được bật, bot sẽ yêu cầu xác minh từ các phiên khác của bạn khi khởi động.
- Mở Element (hoặc client khác) và chấp thuận yêu cầu xác minh để thiết lập độ tin cậy. Sau khi được xác minh, bot có thể giải mã tin nhắn trong các phòng được mã hóa.
Kiểm soát truy cập (DM)
Hỗ trợ nhiều tài khoản: sử dụngchannels.matrix.accounts với thông tin xác thực riêng cho từng tài khoản và tùy chọn name. Xem gateway/configuration để biết mẫu dùng chung.
Mỗi tài khoản chạy như một người dùng Matrix riêng biệt trên bất kỳ homeserver nào. Cấu hình theo từng tài khoản
kế thừa từ các thiết lập channels.matrix cấp cao nhất và có thể ghi đè bất kỳ tùy chọn nào
(chính sách DM, nhóm, mã hóa, v.v.).
requireMention: falsebật tự động trả lời trong phòng đó.- Biến môi trường (
MATRIX_HOMESERVER,MATRIX_ACCESS_TOKEN, v.v.) chỉ áp dụng cho tài khoản mặc định. - Thiết lập kênh cơ bản (chính sách DM, chính sách nhóm, lọc mention, v.v.) áp dụng cho tất cả tài khoản trừ khi được ghi đè theo từng tài khoản.
- Danh sách cho phép theo từng phòng
userscó thể hạn chế thêm người gửi trong một phòng cụ thể (dùng Matrix user ID đầy đủ). - Trình cấu hình sẽ hỏi danh sách phòng cho phép (room ID, alias hoặc tên) và chỉ phân giải tên khi có khớp chính xác, duy nhất.
Luồng
- Hỗ trợ trả lời theo luồng.
channels.matrix.threadRepliesđiều khiển việc phản hồi có ở trong luồng hay không:
Khả năng
- Mặc định:
channels.matrix.dm.policy = "pairing". 48. Người gửi không xác định sẽ nhận được mã ghép cặp. - Phê duyệt qua:
openclaw pairing list matrixopenclaw pairing approve matrix <CODE>
- DM công khai:
channels.matrix.dm.policy="open"cùng vớichannels.matrix.dm.allowFrom=["*"]. channels.matrix.dm.allowFromchấp nhận ID người dùng Matrix đầy đủ (ví dụ:@user:server). Trình hướng dẫn sẽ phân giải tên hiển thị thành ID người dùng khi tìm kiếm thư mục tìm thấy một khớp chính xác duy nhất.- Không sử dụng display name hoặc localpart trần (ví dụ:
"Alice"hoặc"alice"). Chúng gây mơ hồ và sẽ bị bỏ qua khi khớp allowlist. Sử dụng ID đầy đủ dạng@user:server.
Xử lý sự cố
- Mặc định:
channels.matrix.groupPolicy = "allowlist"(yêu cầu mention). Usechannels.defaults.groupPolicyto override the default when unset. - Cho phép phòng theo danh sách cho phép bằng
channels.matrix.groups(room ID hoặc alias; tên sẽ được phân giải sang ID khi tìm kiếm thư mục cho ra một kết quả khớp chính xác duy nhất):
requireMention: falsebật tự động trả lời trong phòng đó.groups."*"có thể đặt mặc định cho việc giới hạn theo mention trên các phòng.groupAllowFromhạn chế người gửi nào có thể kích hoạt bot trong phòng (Matrix user ID đầy đủ).- Danh sách cho phép theo từng phòng
userscó thể hạn chế thêm người gửi trong một phòng cụ thể (dùng Matrix user ID đầy đủ). - Trình cấu hình sẽ hỏi danh sách phòng cho phép (room ID, alias hoặc tên) và chỉ phân giải tên khi có khớp chính xác, duy nhất.
- Khi khởi động, OpenClaw phân giải tên phòng/người dùng trong danh sách cho phép sang ID và ghi log ánh xạ; các mục không phân giải được sẽ bị bỏ qua khi so khớp danh sách cho phép.
- Lời mời sẽ tự động tham gia theo mặc định; điều khiển bằng
channels.matrix.autoJoinvàchannels.matrix.autoJoinAllowlist. - Để không cho phép phòng nào, đặt
channels.matrix.groupPolicy: "disabled"(hoặc giữ danh sách cho phép trống). - Khóa cũ:
channels.matrix.rooms(cùng cấu trúc vớigroups).
Luồng
- Hỗ trợ trả lời theo luồng.
channels.matrix.threadRepliesđiều khiển việc phản hồi có ở trong luồng hay không:off,inbound(mặc định),always
channels.matrix.replyToModeđiều khiển metadata trả lời khi không trả lời trong luồng:off(mặc định),first,all
Khả năng
| Tính năng | Trạng thái |
|---|---|
| Tin nhắn trực tiếp | ✅ Hỗ trợ |
| Phòng | ✅ Hỗ trợ |
| Luồng | ✅ Hỗ trợ |
| Media | ✅ Hỗ trợ |
| E2EE | ✅ Hỗ trợ (cần mô-đun crypto) |
| Phản ứng | ✅ Hỗ trợ (gửi/đọc qua công cụ) |
| Thăm dò | ✅ Hỗ trợ gửi; poll bắt đầu gửi vào được chuyển thành văn bản (bỏ qua phản hồi/kết thúc) |
| Vị trí | ✅ Hỗ trợ (URI địa lý; bỏ qua độ cao) |
| Lệnh gốc | ✅ Hỗ trợ |
Tham chiếu cấu hình (Matrix)
Cấu hình đầy đủ: Cấu hình- Đã đăng nhập nhưng tin nhắn phòng bị bỏ qua: phòng bị chặn bởi
groupPolicyhoặc danh sách cho phép phòng. - DM bị bỏ qua: người gửi đang chờ phê duyệt khi
channels.matrix.dm.policy="pairing". - Phòng mã hóa thất bại: thiếu hỗ trợ crypto hoặc cấu hình mã hóa không khớp.
Tham chiếu cấu hình (Matrix)
Cấu hình đầy đủ: Cấu hình Tùy chọn nhà cung cấp:channels.matrix.enabled: bật/tắt khởi động kênh.channels.matrix.homeserver: URL homeserver.channels.matrix.userId: Matrix user ID (tùy chọn khi có access token).channels.matrix.accessToken: access token.channels.matrix.password: mật khẩu đăng nhập (token được lưu).channels.matrix.deviceName: tên hiển thị của thiết bị.channels.matrix.encryption: bật E2EE (mặc định: false).channels.matrix.initialSyncLimit: giới hạn đồng bộ ban đầu.channels.matrix.threadReplies:off | inbound | always(mặc định: inbound).channels.matrix.textChunkLimit: kích thước chia đoạn văn bản gửi đi (ký tự).channels.matrix.chunkMode:length(mặc định) hoặcnewlineđể chia theo dòng trống (ranh giới đoạn) trước khi chia theo độ dài.channels.matrix.dm.policy:pairing | allowlist | open | disabled(mặc định: ghép cặp).channels.matrix.dm.allowFrom: DM allowlist (full Matrix user IDs).openrequires"*". Trình hướng dẫn phân giải tên thành ID khi có thể.channels.matrix.groupPolicy:allowlist | open | disabled(mặc định: allowlist).channels.matrix.groupAllowFrom: người gửi được cho phép cho tin nhắn nhóm (Matrix user ID đầy đủ).channels.matrix.allowlistOnly: ép buộc quy tắc allowlist cho DM + phòng.channels.matrix.groups: allowlist nhóm + bản đồ cấu hình theo phòng.channels.matrix.rooms: allowlist/cấu hình nhóm kiểu cũ.channels.matrix.replyToMode: chế độ reply-to cho luồng/thẻ.channels.matrix.mediaMaxMb: giới hạn media vào/ra (MB).channels.matrix.autoJoin: xử lý lời mời (always | allowlist | off, mặc định: luôn).channels.matrix.autoJoinAllowlist: room ID/alias được phép để tự động tham gia.channels.matrix.accounts: cấu hình đa tài khoản được định danh theo account ID (mỗi tài khoản kế thừa các thiết lập cấp cao nhất).channels.matrix.actions: kiểm soát công cụ theo từng hành động (reactions/messages/pins/memberInfo/channelInfo).