ローカルプロトコル · 06
stdout上の二つのKataGo言語:GTPとJSONL
標準入出力を使う点は同じでも、GTP v2とAnalysis Engine JSONLは状態、区切り、対象クライアントが異なります。
GTPは状態を持つ命令と応答
GUIはboardsize、komi、play、kata-analyzeなどを一行ずつ送り、エンジンが現在の盤面を保持します。成功は=、失敗は?で始まり、空行で応答が終わります。Sabaki、q5Go、Lizzieなど従来型GUIに向きます。
GTP応答は末尾の空行で区切られ、以前の命令が盤面状態を順に作ります。 Analysis Engineは一行一JSON
JSONLでは各要求を一行JSONで書き、結果も行ごとに返します。要求自身が局面とidを持つため、一括処理、サービス接続、プログラム解析に向きます。同じidへ探索中の結果が複数届く場合があります。
改行がメッセージ境界です。端末プロンプト、進捗文字、色付きログを混ぜられません。 stdoutはプロトコル、stderrは診断専用
どちらのモードでも機械向け出力はstdoutだけに置きます。接続状態、再試行、使用量、エラー詳細はstderrへ出します。混在するとGUIはログをGTP応答と誤認し、スクリプトは無効なJSONを受け取ります。
stdoutは機械、stderrは人、終了コードはプロセス結果という役割分担です。
仕様
接続前確認
- GUIはGTP、スクリプトはJSONL
- 行・空行の区切りを守る
- 診断はstderrだけへ出す
- 必要な命令を事前確認する