Skip to content

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 房间权限模型,只能在有权限的房间操作

相关文档

基于 MIT 许可发布