遠隔プロトコル · 05

WSSは棋力ではない:KataGo JSONの遠隔経路

Read19の暗号化WebSocketセッションを説明します。各テキストフレームは標準のKataGo Analysis Engine JSONで、探索中にも更新されます。

  1. 暗号化された双方向経路へ接続する

    クライアントは wss://read19.com/v1/katago/<API_KEY> へ接続します。WSSはTLS上のWebSocketです。パス中のAPI Keyは認証情報なので、ログ、画像、公開例へ残しません。接続後は同じセッションで双方が送信できます。

    TLSハンドシェイク後も双方向セッションが残ります。完全なURLをパスワード同様に扱います。
  2. 各フレームへKataGo JSONを一つ入れる

    要求には一意のidとmoves、initialStones、rules、komi、boardXSize、boardYSize、analyzeTurnsを含めます。探索中の更新にはreportDuringSearchEveryを使い、Read19では0.1〜5秒を指定できます。

    WSSは輸送層で、本文はAnalysis Engine JSONです。独自の棋譜形式ではありません。
  3. isDuringSearchで完了を判断する

    探索中の応答はisDuringSearch: trueで、候補手やグラフを更新できます。falseがそのidの最終応答です。局面変更時はaction: terminateとterminateIdを送り、接続を保ったまま対象要求だけを止めます。

    同じidへ複数の途中状態と一つの最終状態が届きます。terminateはソケット全体ではなく要求を指します。

根拠

  1. Read19 API文書
  2. KataGo Analysis Engine文書

実装確認

  • API Keyをログへ出さない
  • 要求idを一意にする
  • isDuringSearchで状態更新する
  • 局面変更時に旧idを停止する
stdoutの記事を読む