yoi/tickets/spawn-inherit-provider.md

1.8 KiB
Raw Blame History

SpawnPod が親の provider 設定を引き継ぐ

背景

SpawnPod ツールは子 Pod に渡す overlay TOML に pod.name / worker.instruction / scope のみを含め、provider を含めない(crates/pod/src/spawn_pod.rs::build_overlay_toml)。

子 Pod は起動時に manifest cascade を一からやり直すため、デフォルトのインストラクション ($insomnia/default) を使うと provider.kind が見つからず failed to resolve manifest cascade: missing required field: provider.kind で起動失敗する。結果として SpawnPod ツールがデフォルト引数では事実上使えない状態になっている。

ゴール

SpawnPod で起動した子 Pod が、特に指定なしで親 Pod と同じ provider 設定kind, model, api_key 等)を使って起動できる。

必要な変更

  • 親 Pod の resolved provider を SpawnPodTool から参照できるようにする(SpawnPodTool::new の引数追加 等)
  • build_overlay_toml が overlay に provider を含める
  • ツール入力 (SpawnPodInput) からの provider 指定は今回は不要(範囲外を参照)

完了条件

  • SpawnPodprovider 指定なしで呼び出すと、子 Pod が親と同じ provider 設定で起動し、Method::Run を受けて応答できる
  • 既存の spawn_pod 統合テスト (crates/pod/tests/spawn_pod_test.rs) が引き続きパス
  • 親が provider を持たないケース(あり得るなら)の挙動が定まっている

範囲外

  • ツール入力からの provider overrideモデルだけ差し替えたい等のマルチエージェント用途。将来別チケットで SpawnPodInput に optional provider override を追加する形で扱う
  • インストラクションファイル側で provider を指定する仕組み