SNA

Actor와 kind

SNA가 메시지를 actor와 kind로 나눠 정규화하는 이유.

SNA가 OpenAI 방식이나 Anthropic 방식 중 하나를 내부 표준으로 삼는 선택지도 있었습니다. 하지만 두 포맷은 필드 이름만 다른 게 아닙니다. 툴 호출의 병렬 처리 방식, role의 의미, thinking이나 tool result를 표현하는 방식이 다릅니다. 어느 한쪽 모델을 그대로 쓰면 다른 런타임의 의미를 억지로 끼워 맞추게 됩니다.

SNA의 철학은 각 네이티브 에이전트가 가진 기능을 최대한 살리는 것입니다. 어떤 런타임에 기능이 부족하면 가능한 범위에서 우회 경로를 제공하되, 의미를 지워서 맞추지는 않습니다. 따라서 정규화 계층은 한 런타임의 wire shape를 복제하는 층이 아니라, 여러 런타임의 차이를 보존하면서도 어느 한쪽에 치우치지 않는 중립 계층이어야 합니다.

actorkind를 분리한 이유도 여기에 있습니다. actor는 누가 만든 블록인지, kind는 그 블록이 무엇을 뜻하는지 표현합니다. OpenAI와 Anthropic의 role 체계는 각각의 API에서는 자연스럽지만, SNA가 다루는 크로스 런타임 히스토리에서는 충분히 중립적이지 않습니다. 그래서 SNA는 양쪽의 좋은 점을 담되 어느 한쪽의 role 모델을 내부 표준으로 삼지 않도록 의도적으로 설계했습니다.