Matrix 桥接 (matrix)
Headless 命令 — 不依赖桌面 GUI,直接使用核心包运行。适用于服务器、CI/CD、容器化等无桌面环境。
核心特性
- 🔐 登录认证: 连接 Matrix 主服务器并获取访问令牌
- 🏠 房间管理: 查看已加入的房间列表及成员信息
- 💬 消息发送: 向指定房间发送消息
- 📨 消息获取: 获取房间内的历史消息
- 🚪 房间加入: 加入新的 Matrix 房间
概述
ChainlessChain CLI Matrix 桥接模块实现了与 Matrix 去中心化通信协议的集成。Matrix 是一个开放标准的实时通信协议,支持端到端加密(E2EE)、联邦式架构和丰富的房间管理功能。
通过 login 连接到 Matrix 主服务器(默认 matrix.org),获取访问令牌。rooms 列出已加入的房间,join 加入新房间。send 向指定房间发送消息,messages 获取房间内的历史消息。所有消息传输均支持端到端加密。
命令参考
matrix login — 登录
bash
chainlesschain matrix login -u <user-id> -p <password>
chainlesschain matrix login -u "@alice:matrix.org" -p "my-password"
chainlesschain matrix login -s "https://my-homeserver.com" -u "@bob:my-homeserver.com" -p "pass"登录到 Matrix 主服务器。--server 指定主服务器 URL(默认 https://matrix.org)。
matrix rooms — 房间列表
bash
chainlesschain matrix rooms
chainlesschain matrix rooms --json列出已加入的房间,显示房间 ID、名称、成员数和是否加密。
matrix send — 发送消息
bash
chainlesschain matrix send <room-id> <message>
chainlesschain matrix send "!abc123:matrix.org" "Hello from ChainlessChain!"
chainlesschain matrix send "!room:server.com" "通知消息" -t m.text向指定房间发送消息。--type 指定消息类型(默认 m.text)。
matrix messages — 获取消息
bash
chainlesschain matrix messages <room-id>
chainlesschain matrix messages "!abc123:matrix.org" -n 20
chainlesschain matrix messages "!room:server.com" --json获取指定房间的历史消息。--limit 限制返回数量(默认 50)。
matrix join — 加入房间
bash
chainlesschain matrix join <room-id>
chainlesschain matrix join "!newroom:matrix.org"加入指定的 Matrix 房间。
数据库表
| 表名 | 说明 |
|---|---|
matrix_rooms | 房间记录(房间 ID、名称、成员数、加密状态、加入时间) |
matrix_events | 事件/消息记录(事件 ID、房间 ID、发送者、类型、内容、时间戳) |
系统架构
用户命令 → matrix.js (Commander) → matrix-bridge.js
│
┌────────────────────────┼────────────────────────┐
▼ ▼ ▼
认证管理 房间管理 消息引擎
(登录/令牌管理) (列出/加入房间) (发送/获取消息)
▼ ▼
matrix_rooms matrix_events关键文件
packages/cli/src/commands/matrix.js— 命令实现packages/cli/src/lib/matrix-bridge.js— Matrix 桥接库
测试
bash
npx vitest run __tests__/unit/matrix-bridge.test.js
# 22 tests, all pass使用示例
场景 1:登录并发送消息
bash
# 登录到 Matrix
chainlesschain matrix login \
-u "@alice:matrix.org" \
-p "my-secure-password"
# 查看已加入的房间
chainlesschain matrix rooms
# 发送消息
chainlesschain matrix send "!abc123:matrix.org" \
"来自 ChainlessChain CLI 的消息"
# 获取房间消息
chainlesschain matrix messages "!abc123:matrix.org" -n 10场景 2:加入新房间
bash
# 加入公开房间
chainlesschain matrix join "!newroom:matrix.org"
# 查看房间列表确认
chainlesschain matrix rooms --json
# 在新房间发送消息
chainlesschain matrix send "!newroom:matrix.org" "大家好!"故障排查
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 登录失败 | 用户名或密码错误 | 检查 Matrix 用户 ID 格式(@user:server) |
| "No rooms joined" | 未加入任何房间 | 使用 matrix join 加入房间 |
| 消息发送失败 | 未登录或令牌过期 | 重新执行 matrix login |
| 房间 ID 无效 | 格式错误 | Matrix 房间 ID 格式:!roomid:server.com |
安全考虑
- 端到端加密: 支持 Matrix E2EE,消息在客户端加密,服务器无法读取
- 访问令牌: 登录令牌存储在加密数据库中,不明文暴露
- 联邦架构: 支持自托管主服务器,数据主权完全可控
- 房间权限: 遵循 Matrix 房间权限模型,只能在有权限的房间操作
