Agent Bridge API docs 1.0.0English

AI接続方式を追加する

接続拡張はゲーム側の宣言と外部Bridge JVMで動くbackendに分かれます。ゲーム側のルートが設定と同梱backendの宣言を持ち、ProviderFactoryが選択された接続の所有者を生成します。backendにMinecraftのクラスを持ち込まないでください。

宣言と同梱

ExtensionRegistrar.connectionへConnectionDefinitionとConnectionOptionsを登録します。対応するAPI_VERSIONを使ってください。backendのfactory IDは<自分のMOD ID>:<接続名>と完全一致させます。同梱JARのリソースとhashはBackendResourceで指定します。

backendはagent-bridge-provider-apiと、その依存である診断APIに対してコンパイルします。本体APIを同梱しないでください。実装と依存ライブラリのprivateなパッケージを分離し、META-INF/services/dev.miyomiyo.agentbridge.provider.ProviderFactoryへfactoryの完全修飾名を記載します。

discovery・コンストラクタ・createでは接続を始めません。createは新しい所有者を返し、connectがモデル入力を送らずに接続を開始します。繰り返した接続の観測は同じ試行を参照します。ワールド/プレイヤー識別子、会話の保存先、表示名、ツール、オプション、終了待機予算はProviderConfigurationで渡されます。

本体のサービスを使う

状態変更と順序のあるイベントにはProviderHost.executor()を使います。待機を伴うI/Oはworkerへ移します。通知からproviderへ再入する場合があるため、publishの前に状態を確定してください。本体のexecutorを停止してはいけません。

現在のツール一覧はhost.tools()から取得します。ReportsやNavigationを固定で組み込んだり、モデル要求をまたいで一覧をキャッシュしたりしないでください。拡張が未導入でも、provider固有の分岐を加える必要はありません。

異なる事実を分ける

確認する事実 API
今、入力を開始/合流できるか InputOpportunity
この入力が受理されたか InputResult
runが終わったか ExecutionEvent
中断を要求したか Interruption
ハーネスが人の操作を待っているか approvals/questionsとHostWait
終了処理が実際に完了したか closeの結果

run開始のイベントだけでは、特定の入力が受理されたと分かりません。結果が曖昧な場合はRejectedではなくUnconfirmedを返します。本体がその入力を無条件に再送してはいけないためです。観測futureの取消で、受理済みコマンドや後片付けを取り消さないでください。中断するrunは本体が指定したIDに限定します。

接続中の入力IDと受付結果は本体が保持します。処理中・受理済み・結果不明の入力を、同じIDでproviderへ再送しません。明確に拒否した入力だけ、明示的に再試行されることがあります。provider側に接続中の全受付結果を重複保存する必要はありません。nativeの永続化と再接続時の照合は引き続きproviderの責任です。

活動・コンテキスト圧縮・終了にはproviderの構造化したイベントを使います。モデルの文章や翻訳済みエラーから状態を推測しないでください。未対応機能は利用不能を表す値で返します。任意機能はprovider名による分岐ではなく公開APIの値で表します。

closeでは先に受付を閉じ、所有する接続試行・run・保存・プロセスの終了を待ちます。タイムアウトを回収成功と扱ってはいけません。認証と利用料の検査はproviderの責任です。拡張の導入だけで有料方式への切替を許可するものではありません。