海洋保護AI「Shippy」の信頼性を支えるアーキテクチャ、開発元がその設計思想を公開
要点
-
海洋監視プロジェクト「Skylight」のチームが、高リスクな意思決定を支援するAIエージェント「Shippy」の設計アーキテクチャを公開した。
-
エージェントの構成を「魂(soul)」「スキル(skills)」「設定(config)」の3要素に役割を分割して設計している。
-
違法性の法的判断やデータに基づかない推測を禁止する境界線を、システムプロンプトにより明示的に定義している。
-
非決定的な挙動をするLLMに対し、専用のCLIツールを介してAPIと通信させることで、ツールの予測可能性を確保している。
-
海洋環境の保護活動を支援する「Skylight」プロジェクトのチームは2026年7月15日、実世界の意思決定を支援する海洋AIエージェント「Shippy」のアーキテクチャと、その開発から得られた設計思想をブログで公開した。Shippyは、衛星や船舶の信号といった、日々刻々と更新されるライブデータを用いてリアルタイムに動作するAIシステムである。パトロール船の誤派遣など、高リスクな運用環境で発生し得る深刻なエラーを防ぐため、システム全体の信頼性と制御のしやすさに重点を置いて構築されている。
意思決定のリスクと信頼性の必要性
海洋保護の現場における意思決定は、現実世界に直接的な影響を及ぼす。例えば、監視中のAIエージェントが誤った回答を出力した場合、貴重な巡視船を間違った方向に何マイルも派遣することになりかねない。これはすでに逼迫している人員や資金といったリソースを浪費するだけでなく、乗組員を危険にさらす可能性もある。
このため、Skylightのチームは、単なる静的データではなく、随時更新される最新のライブデータに基づいて正確に行動し、設定された限界を厳格に守り通す信頼性の高いシステムとしてShippyを設計した。
3つの要素で構成されるエージェントの解剖学
開発チームは、AIエージェントの構成を「soul(魂)」「skills(スキル)」「config(設定)」の3つに分類して捉えている。
まず「soul(魂)」は、エージェントのペルソナや行動の境界線を定義するシステムプロンプト(AIへの基本命令文)である。Shippyのsoulには、明示的な制限が課されている。例えば、船舶が違法行為を行っているかどうかの法的判断は人間の領域であるとし、エージェント自身には判断させない。また、データが十分に揃っていない場合に憶測で推測することも禁止している。これらの制約はモデルの追加学習(ファインチューニング)ではなく、プロンプトで明示されているため、第三者が監査しやすく、修正も容易である。
次に「skills(スキル)」は、特定の要求に対してどう処理するかを記述したテキストファイルである。フロントマター(ファイルの先頭に記述されるメタデータ)を含むMarkdown形式で定義され、開発ツール「Claude Code」や「Codex」でも採用されている「agent-skills spec」仕様に準拠している。これにより、各スキルの可読性やバージョン管理が容易になる。Shippyには現在、主に以下のスキルが組み込まれている。
- 船舶の行動イベントや詳細データを取得する「Skylight APIのクエリ」
- 排他的経済水域(EEZ:沿岸国が水産資源などの管轄権を持つ水域)や海洋保護区(MPA:生態系保護のために開発や漁業が制限されている海域)の境界データを検索する機能
- 船舶の航跡データを解釈する機能(Skylightの「Atlantes」などのモデルが生成した活動分類をベースにする)
- 分析者がすぐに地図上で確認できる「インタラクティブなマップリンクの生成」
これらは単独または複数組み合わせて機能する。例えば、「Cordillera de Coiba海洋保護区の近くで活動している船舶はいるか」という質問に対しては、領域データの検索、APIクエリ、航跡データの解釈という複数のスキルが1回の会話の中で同時に呼び出される。その際、パートナーである「ProtectedSeas」のデータベースも活用される。
最後に「config(設定)」は、エージェントを実行するフレームワーク「OpenClaw」(オープンソースのエージェント向け開発基盤)や、使用する大規模言語モデル(現在は「Claude Opus 4.6」)、および起動時の各種パラメータを指す。APIキーなどの秘密情報は実行時に注入される仕組みになっており、使用するモデルやフレームワークを変更する際は、コードの再ビルドを伴わずに設定ファイルを書き換えるだけで済むように設計されている。
非決定的なエージェントを制御する決定論的なツール
大規模言語モデルは「非決定論的(同じ入力に対しても毎回異なる挙動をし得ること)」であるため、エージェントの行動を完璧にコントロールすることは難しい。そこで開発チームは、エージェントが利用するツール側の挙動を「決定論的(常に予測可能)」にすることを目指した。
初期のプロトタイプでは、Shippyに直接生のAPIコールを作成させて通信を行っていた。しかし、APIが持つ複雑なフィルターやページネーション(データを分割して取得する処理)、ポリゴン形式の座標エンコードなどに対応しきれず、データの一部が抜け落ちたり、誤ったクエリを作成したりするバグが多発した。
この問題を解決するため、チームはエージェントとAPIの間に、専用のコマンドラインインターフェース(CLI)ツールを挟む構成を採用した。Shippyは skylight events search などのシンプルなコマンドを実行するだけでよく、APIキーによる認証やページネーションの処理、座標データの整理はすべてCLI側が自動で処理する。また、このCLIはヘルプコマンド(--help)や詳細なエラーメッセージを出力するように作られており、エージェントが自らエラーの原因を特定して修正行動を取れるよう設計されている。
さらに、コマンドの出力結果はシェルのパイプラインを通じて直接他のプログラムに送るのではなく、一度ローカルのJSONファイルとして書き出される。これにより、大量のデータが出力された際にバッファ上限に達してシステムが停止するリスクを回避している。
補足
Shippyのデータ元には、Skylightが自社で解析する衛星データのほか、Global Fishing WatchやTMTといった外部パートナーから提供される船舶情報も含まれており、これらの複合的な情報を組み合わせることで高精度な分析を可能にしている。