모든 다중 에이전트 시스템(multi-agent system)은 결국 같은 난처한 질문에 직면합니다. 바로 '이 에이전트는 누구이며, 어떻게 그것을 증명할 수 있는가?'입니다.
우리는 이 문제에 대한 답으로 이메일을 선택했습니다. 이메일 자체가 우아해서가 아니라, 지구상의 모든 서비스가 이미 받아들이고 있는 유일한 식별자 기본 요소(identity primitive)이기 때문입니다.
공유 받은 편지함의 문제점
첫 번째 버전은 간단했습니다. 하나의 메일박스, 하나의 API 키를 사용하고 에이전트는 헤더로 식별되었습니다. 하지만 이는 세 가지 예측 가능한 방식으로 실패했습니다.
- 출처 추적(Attribution). 세 개의 에이전트가 같은 주소에서 발송할 경우, 수신자는 그들을 구분할 수 없으며, 로그 기록 역시 마찬가지입니다.
- 폭발 반경(Blast radius). 하나의 키가 유출되면 모든 에이전트의 메일이 노출됩니다. 이 키를 순환(rotating)하려면 모든 것을 재배포해야 합니다.
- 속도 제한 및 평판(Rate limits and reputation). 소음이 심한 에이전트 하나가 전체 메일박스의 전송 가능성(deliverability)을 떨어뜨립니다.
에이전트별 일회용 주소(Per-agent disposable addresses)
우리가 정착시킨 규칙은 다음과 같습니다. 에이전트당 하나의 주소를 사용하며, 필요할 때 생성하고 독립적으로 취소할 수 있어야 합니다.
- 주소는 등록되는 것이 아니라 생성됩니다. 에이전트가 프로비저닝(provisioned)되는 순간
[email protected]이 존재합니다.
- 각 주소는 자체적인 자격 증명(credential)을 가집니다. 하나의 에이전트를 취소해도 다른 에이전트에는 영향을 미치지 않습니다.
- 수신과 발신은 동일한 네임스페이스를 사용하므로, 에이전트는 자신이 가입하는 주소에서 인증 코드를 받을 수 있습니다.
- 주소는 기본적으로 일회용입니다. 작업을 마친 에이전트는 묻어버리고 그 주소를 폐기할 수 있습니다.
OTP 흐름에 이것이 중요한 이유
미묘한 함정은 **타이밍(timing)**입니다. 코드는 만료됩니다. 만약 에이전트가 다른 에이전트들로부터 온 40개의 읽지 않은 메시지가 있는 메일박스를 폴링(polls)한다면, 오래된 코드(stale code)를 기꺼이 가져갈 것입니다. 우리의 새로운 규칙은 다음과 같습니다: 주소는 가입 요청보다 먼저 생성되어야 하며, 해당 타임스탬프 이후에 도착한 메시지만을 수락합니다.
이메일이 무료로 제공하는 것들
- 다른 채널이 갖지 못한 전달 의미론(Delivery semantics). 에이전트가 전화번호, OAuth 동의, 앱 설치가 없을 때 작동합니다.
- 기록 추적(A paper trail). 모든 메시지는 나중에 감사할 수 있는 불변의 기록이며, 사람이 "이 에이전트가 왜 그랬나요?"라고 물을 때 중요합니다.
- 연합(Federation). 아무도 당신과 통합할 필요가 없습니다. 당신의 주소는 그저 주소일 뿐입니다.
비용 (What it costs you)
- 전달 가능성(Deliverability)은 실제 업무입니다. SPF, DKIM, DMARC 및 웜업 계획(warm-up plan)은 선택 사항이 아닙니다.
- 스팸도 수신(inbound) 측면에서 발생합니다. 공개된 주소는 스크래핑됩니다. 에이전트별 주소는 실제로 여기서 도움이 됩니다: 사용하고, 새것을 만듭니다(burn it, mint a new one).
- 이메일은 대기열(queue)이 아닙니다. SMTP를 메시지 버스(message bus)로 취급하면 중복 및 순서 재배치 문제가 발생합니다. 우리는 내부 대기열을 유지하고 이메일은 오직 엣지(edge)에서만 사용합니다.
우리가 지키고 싶은 설계 원칙 (The design rule we would keep)
신원은 낯선 사람에게 건넬 수 있고, 생성하는 데 비용이 들지 않으며, 파괴하는 데도 비용이 들지 않는 문자열이어야 합니다.
이메일 주소가 이를 충족합니다. 헤더의 UUID는 그렇지 않습니다. 이는 검증자(verifier)에게 아무 의미가 없습니다. 외부 세계와 접촉하는 에이전트를 구축한다면, ID가 아닌 주소를 생성해 주세요(mint them addresses, not IDs).
우리는 이와 정확히 일치하는 서비스(AI 에이전트를 위한 일회용 사서함)를 운영하고 있지만, 위에서 설명한 설계는 공급업체에 관계없이 우리가 다시 구축할 것인 방식입니다.