Matrix — 分散型チャットネットワーク
Matrix — Decentralized Chat Network — easy-to-understand guide based on official docs
Matrix — 分散型チャットネットワーク
誰かのサーバーに縛られずに使えるチャットネットワークが欲しいと思ったことはありませんか?Matrix がその答えです。オープンで連合型のメッセージングプロトコル — 例えるなら、インスタントメッセージング版の電子メールです。自分でホームサーバーを運用することも、matrix.org のような公開サーバーを使うこともできます。どちらにしても、会話の主導権はあなたの手にあります。
Hermes Agent は mautrix Python SDK を使って Matrix に直接接続します。つまり、あなたのボットが Matrix 経由でチャットでき、ツール使用、メモリ、推論、リアルタイム応答など、おなじみの Hermes の全機能をそのまま使えます。テキスト、ファイル、画像、音声、動画、さらにはオプションのエンドツーエンド暗号化(E2EE)にも対応しています。
そして何より素晴らしいのは、Hermes はあらゆる Matrix ホームサーバーで動作するということ。Synapse、Conduit、Dendrite、あるいは matrix.org の大規模な公開サーバー — お好みでどうぞ。
Hermes の動作について
接続が完了すると、Hermes はいくつかのスマートなデフォルト設定で動作します。簡単にまとめると次のとおりです。
| コンテキスト | 動作 |
|---|---|
| DM | Hermes はすべてのメッセージに返信します。@メンションは不要です。各 DM には個別のセッションが割り当てられます。 |
| ルーム | デフォルトでは、Hermes は @メンションを受けてから応答します。MATRIX_REQUIRE_MENTION=false で変更するか、MATRIX_FREE_RESPONSE_ROOMS に特定のルームを追加できます。ルームへの招待は自動的に承認されます。 |
| スレッド | Hermes は Matrix のスレッドを完全にサポートしています。スレッド内で返信すると、Hermes はそのコンテキストをメインのルームタイムラインから分離して保持します。ボットがすでに参加しているスレッドではメンションは不要です。 |
| 自動スレッド化 | デフォルトでは、Hermes はルーム内の各応答に対して自動的にスレッドを作成します。これにより会話が整理され、分離されます。MATRIX_AUTO_THREAD=false でオフにできます。 |
| コマンド | 通常の /commands は期待どおりに動作します。クライアントが / をローカルコマンド用に予約している場合は、!commands を使ってください — Hermes がそれらのエイリアスを自動的に正規化します。 |
| インタラクティブ操作 | 危険なコマンドの承認や /model の選択に Matrix のリアクションを使用できます。承認リアクションをアクションをリクエストしたユーザーだけに制限することも可能です。 |
| 思考とツールのアクティビティ | ゲートウェイの進捗が有効な場合、Hermes は思考とツールのアクティビティにスレッド化された編集可能なペインを使用します。メインのタイムラインが更新情報で埋め尽くされることはもうありません。 |
| 共有ルーム | デフォルトでは、Hermes はルーム内のユーザーごとにセッション履歴を分離します。同じルームにいる2人が1つのトランスクリプトを共有することはありません(明示的に無効にしない限り)。 |
プロのヒント: ボットの Matrix ユーザーを任意のルームに招待するだけで、ボットが参加して自動的に応答を開始します。
Hermes が Matrix でできること
アダプターの宣言による全機能リストは次のとおりです。
- テキスト — 対応
- スレッド — 対応
- リアクション — 対応
- 承認 — 対応
- モデルピッカー — 対応
- 思考ペイン — 対応
- 画像 — 対応(複数画像を含む)
- ファイル — 対応
- 音声/オーディオ — 対応
- 動画 — 対応
- E2EE — オフ / オプション / 必須(モードベース)
- 診断 — 対応
Matrix でのセッションモデル
デフォルトでは、Hermes はセッションをきれいに分離します:
- 各 DM は独自のセッションを取得
- 各スレッドは独自のセッション名前空間を取得
- 共有ルーム内の各ユーザーは、そのルーム内で独自のセッションを取得
これは config.yaml で制御されます:
group_sessions_per_user: true
ルーム全体で1つの共有会話を明示的にしたい場合のみ false に設定します:
group_sessions_per_user: false
共有セッションはコラボレーションルームには便利ですが、注意点もあります:ユーザー間でコンテキストの増大とトークンコストを共有することになり、1人のユーザーの長いツール多用タスクが他の全員のコンテキストを肥大化させる可能性があり、また1人の実行中タスクが別のユーザーのフォローアップを中断する可能性があります。
メンションとスレッドの設定
環境変数または config.yaml ですべてを調整できます。YAML バージョンは次のとおりです:
matrix:
require_mention: true # ルームで @メンションを必須にする(デフォルト: true)
allowed_users: # エージェントのターンをトリガーできる Matrix ユーザー
- "@alice:matrix.org"
allowed_rooms: # エージェントのターンをトリガーできる Matrix ルーム
- "!abc123:matrix.org"
free_response_rooms: # メンション要件が免除されるルーム
- "!abc123:matrix.org"
ignore_user_patterns: # 無視するブリッジ/アプリサービスのゴーストユーザー
- "^@telegram_"
- "^@whatsapp_"
process_notices: false # m.notice をデフォルトで無視
session_scope: room # auto|room|thread; プロジェクトルームでは room を推奨
auto_thread: true # 応答用にスレッドを自動作成(デフォルト: true)
dm_mention_threads: false # DM で @メンションされたときにスレッドを作成(デフォルト: false)
max_message_length: 16000 # 送信チャンクサイズ(文字数)(デフォルト: 16000、最大: 65535)
または環境変数で:
MATRIX_REQUIRE_MENTION=true
MATRIX_ALLOWED_USERS=@alice:matrix.org
MATRIX_ALLOWED_ROOMS=!abc123:matrix.org
MATRIX_FREE_RESPONSE_ROOMS=!abc123:matrix.org,!def456:matrix.org
MATRIX_IGNORE_USER_PATTERNS='^@telegram_,^@whatsapp_'
MATRIX_PROCESS_NOTICES=false
MATRIX_SESSION_SCOPE=room # 安定したプロジェクトルームコンテキストに推奨
MATRIX_AUTO_THREAD=true
MATRIX_DM_MENTION_THREADS=false
MATRIX_REACTIONS=true # デフォルト: true — 処理中の絵文字リアクション
MATRIX_ALLOW_ROOM_MENTIONS=false
ヒント: MATRIX_REACTIONS=false にすると、ボットが受信メッセージに投稿する処理ライフサイクルの絵文字リアクション(👀/✅/❌)がオフになります。リアクションイベントがノイズになる、またはサポートされていないルームに便利です。
もうひとつのヒント: Hermes は @alice:example.org のような明示的な ID に対して構造化された Matrix ユーザーメンションを送信します。ルーム全体への @room メンションは別途制御されます。
以上が Matrix の全体像です。自分でホームサーバーを運用している場合でも、プライバシーを尊重する分散型チャットを求めている場合でも、Hermes が対応します。ボットをルームに招待して、実際の動作を確認してみてください!
📖 公式ドキュメント
この記事は Hermes Agent の公式ドキュメントに基づいています:公式ドキュメント › user-guide/messaging/matrix