Matrix — 분산형 채팅 네트워크
Matrix — Decentralized Chat Network — easy-to-understand guide based on official docs
Matrix — 분산형 채팅 네트워크
누군가의 서버에 종속되지 않는 채팅 네트워크를 원한 적이 있다면, 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는 방 안에서 사용자별로 세션 기록을 분리합니다. 같은 방에 있는 두 사람이 명시적으로 비활성화하지 않는 한 하나의 대화록을 공유하지 않습니다. |
프로 팁: 봇의 Matrix 사용자를 아무 방에나 초대하기만 하면, 봇이 자동으로 참여해서 응답을 시작합니다.
Hermes가 Matrix에서 할 수 있는 것
어댑터 선언에서 가져온 전체 기능 목록입니다:
- 텍스트 — 지원
- 스레드 — 지원
- 리액션 — 지원
- 승인 — 지원
- 모델 선택기 — 지원
- 사고 패널 — 지원
- 이미지 — 지원 (여러 이미지 포함)
- 파일 — 지원
- 음성/오디오 — 지원
- 비디오 — 지원
- E2EE — 끄기 / 선택 / 필수 (모드 기반)
- 진단 — 지원
Matrix의 세션 모델
기본적으로 Hermes는 모든 것을 깔끔하게 분리합니다:
- 각 DM은 고유한 세션을 갖습니다
- 각 스레드는 고유한 세션 네임스페이스를 갖습니다
- 공유 방의 각 사용자는 해당 방 안에서 고유한 세션을 갖습니다
이 동작은 config.yaml로 제어됩니다:
group_sessions_per_user: true
방 전체에서 하나의 공유 대화를 명시적으로 원하는 경우에만 false로 설정하세요:
group_sessions_per_user: false
공유 세션은 협업 방에 유용할 수 있지만 주의할 점이 있습니다: 사용자들이 컨텍스트 증가와 토큰 비용을 공유하게 되고, 한 사람의 길고 도구 중심적인 작업이 다른 사람들의 컨텍스트를 부풀릴 수 있으며, 한 사람의 진행 중인 실행이 다른 사람의 후속 작업을 방해할 수 있습니다.
멘션 및 스레드 구성
환경 변수나 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