
NATS용 오픈소스 에이전트 프로토콜은 서로 다른 프레임워크와 실행 환경의 에이전트를 하나의 메시징 시스템에서 검색하고 호출하며 상태를 확인하도록 규칙을 정한다. 런타임이나 에이전트 프레임워크를 제공하는 제품은 아니며, NATS를 사용하는 시스템에서 에이전트 간 통신을 표준화하는 계약이다.
프로토콜은 검색, 대화, 생존 상태 확인을 다룬다. 에이전트는 NATS 마이크로서비스 agents로 등록하고, 호출자는 $SRV.PING.agents 또는 $SRV.INFO.agents를 통해 접근 가능한 에이전트와 엔드포인트 정보를 얻는다. 호출자는 엔드포인트 주제를 직접 만들지 않고 $SRV.INFO에서 읽어야 한다. 중앙 레지스트리나 별도의 조정 프로세스는 필요하지 않다.
호출자는 에이전트의 엔드포인트로 요청을 보내고, 응답은 {type, data} 형식의 JSON 청크로 받는다. 응답 스트림은 작업 전송 확인을 나타내는 ack 상태 청크로 시작해야 하며, 응답 내용은 response, 중간 질문은 query 청크로 전달한다. 성공 여부와 관계없이 스트림은 헤더와 본문이 없는 0바이트 메시지로 끝난다. 기본 전달 방식은 최대 한 번(at-most-once)이므로 호출자는 스트림별 비활성 시간 제한을 적용해야 한다. 권장 기본값은 마지막 청크를 받은 뒤 60초다.
각 에이전트는 기본 30초 간격으로 agents.hb.{agent}.{owner}.{name}에 하트비트를 보낸다. 세 번 연속 하트비트를 놓치면 오프라인으로 간주하는 것이 권장된다. 호출자는 하트비트 와일드카드를 먼저 구독한 뒤 에이전트를 검색해 경합을 피할 수 있다. 즉시 상태가 필요할 때는 status 요청·응답 엔드포인트를 이용한다.
프로토콜은 에이전트가 어떤 모델을 쓰는지, 어떻게 추론하거나 메모리를 저장하는지, 도구와 과금을 어떻게 처리하는지는 정하지 않는다. 보안은 NATS 계정·사용자·주제 권한에 맡기며, 종단 간 암호화와 강한 에이전트 신원 확인은 초기 범위에 포함되지 않았다. 대용량 첨부 파일 전송, JetStream 기반 최소 한 번 전달, 영속 상태와 감사 추적 등은 향후 확장 후보로 제시됐다.
TypeScript와 Python용 참조 SDK가 제공되며, NATS CLI로도 프로토콜을 직접 사용할 수 있다. 명세와 SDK 및 테스트 도구는 다음 저장소에서 확인할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요