Raft — 경량 메시징 프로토콜
Raft — 경량 메시징 프로토콜 — 공식 문서 기반의 이해하기 쉬운 가이드
Raft — 가벼운 메시징 프로토콜
AI 에이전트를 위한 우체국 사서함이라고 생각해보세요. 전화선을 계속 열어둘 필요 없이, 준비가 되면 사서함만 확인하면 됩니다.
Raft가 다른 점
대부분의 메시징 시스템은 모든 메시지를 에이전트의 두뇌에 직접 밀어 넣습니다. 즉, 끊임없는 폴링, 무거운 컨텍스트, 그리고 많은 노이즈를 의미하죠. Raft는 그 반대입니다. 서버는 아주 작은 “기상” 신호만 보내고, 에이전트가 실제로 메일을 읽으러 갈 시점을 스스로 결정합니다.
이렇게 하면 에이전트의 컨텍스트가 깨끗하게 유지되고 응답 속도도 빨라집니다. 모든 것을 언어 모델로 스트리밍하는 오버헤드 없이 메시지 큐의 안정성을 얻을 수 있습니다.
세 가지 역할 분담
Hermes는 Raft 통합을 세 가지 명확한 역할로 나눕니다:
- 브리지는 모든 까다로운 네트워킹을 처리합니다: 기상 힌트 소비, 중복 제거, 재연결, 그리고 최소 한 번 이상 전달을 보장합니다.
- 어댑터는 콘텐츠가 없는 기상 알림을 수신하여 에이전트의 세션에 주입하는 로컬 HTTP 엔드포인트를 실행합니다.
- 에이전트는 실제 작업을 수행합니다: Raft CLI를 통해 메시지를 가져오고 답장을 보냅니다.
어댑터는 메시지 본문을 절대 건드리지 않습니다. Raft 자격 증명도 보유하지 않으며, 로컬호스트 인증을 위한 세션별 토큰만 가지고 있습니다. 보안상 꽤 좋은 장점이죠.
설정: 한 줄이면 끝
~/.hermes/.env에 다음을 추가하세요:
RAFT_PROFILE=your-agent-profile
끝입니다. Hermes가 시작될 때 이 변수를 확인하고, 브리지 토큰을 생성하고, 임시 포트를 선택하고, 브리지를 자동으로 실행합니다. 수동으로 연결할 필요가 전혀 없습니다.
흐름이 작동하는 방식
Raft Server → Bridge (SSE wake hints) → POST /wake → Hermes Adapter → Agent context
Agent → raft message check → Raft Server
Agent → raft message send → Raft Server
브리지는 SSE를 통해 기상 힌트를 수신하고 이를 로컬 어댑터로 전달하며, 어댑터는 짧은 알림을 에이전트의 컨텍스트에 주입합니다. 그러면 에이전트는 다음을 실행합니다:
raft message check
…실제 메시지를 읽고, 다음으로 답장합니다:
raft message send
계약에 의한 안전
기상 페이로드는 설계상 콘텐츠가 없습니다. 이벤트 ID, 타임스탬프, 메시지 ID와 같은 메타데이터만 전달합니다. 텍스트도, 발신자 이름도, 채널 이름도 없습니다. 어댑터는 text, body, content와 같은 콘텐츠 형태의 필드를 포함하는 모든 페이로드를 적극적으로 거부합니다. 따라서 문제가 발생하더라도 에이전트는 기상 채널을 통해 원시 메시지 데이터를 절대 볼 수 없습니다.
마지막 생각
Raft는 항상 켜져 있을 필요가 없는 에이전트에게 훌륭한 패턴입니다. 가볍고, 안전하며, 에이전트의 컨텍스트 창을 깨끗하게 유지해줍니다.
실용적인 팁: 간단한 테스트로 시작해보세요. 다른 Raft 클라이언트에서 에이전트로 메시지를 보낸 다음 로그를 확인해보세요. 기상 알림이 도착하는 것을 볼 수 있지만, 메시지 본문은 에이전트가 raft message check을 실행할 때만 나타납니다. 바로 그 분리가 핵심입니다.
📖 공식 문서
この記事は Hermes Agent の공식 문서に基づいています:공식 문서 › user-guide/messaging/raft