Actor と kind
SNA がメッセージを actor と kind に分けて正規化する理由。
SNA が OpenAI 形式または Anthropic 形式のどちらかを内部標準にする選択肢も ありました。ですが、この 2 つの形式はフィールド名だけが違うわけでは ありません。ツール呼び出しの並列処理、role の意味、thinking や tool result の表現方法が異なります。どちらか一方のモデルをそのまま採用すると、 もう一方のランタイムの意味を無理に押し込むことになります。
SNA の哲学は、各ネイティブエージェントが持つ機能をできるだけ活かすことです。 あるランタイムで機能が足りなければ可能な範囲で迂回路を用意しますが、 意味を削って合わせることはしません。そのため、正規化レイヤは特定 ランタイムの wire shape を複製する層ではなく、複数ランタイムの差分を 保ちながら、どちらにも偏らない中立的な層である必要があります。
actor と kind を分けている理由もここにあります。actor は誰がその
ブロックを作ったかを表し、kind はそのブロックが何を意味するかを表します。
OpenAI と Anthropic の role 体系はそれぞれの API では自然ですが、SNA が
扱うクロスランタイム履歴では十分に中立的ではありません。そのため SNA は、
両方の良い点を取り込みつつ、どちらか一方の role モデルを内部標準にしない
ように意図して設計されています。