AIエージェント 開発の実装記録:Shipment Exception Commander

Claude Managed Agentsで物流例外対応を組み立てるAIエージェント 開発の設計・実装記録です。決定論的な採点、独立したリスク検証、人間によるネイティブ承認、一度だけ行う冪等なサンドボックス更新、監査証跡、フェイルクローズな公開構成まで、合成ケースの実行結果とともに詳しく解説します。

公開日

AIエージェント 開発の実装記録:Shipment Exception Commander

AIエージェント 開発で輸送トラブルへの対応が難しいのは、チームに選択肢がないからではありません。証拠ごとに信頼度が異なり、復旧案の見積もりには期限があり、コストは承認権限の境界をまたぎます。しかも、拙速に再試行すると、最初の予約が実際には成功していたにもかかわらず、二重予約を生むおそれがあります。

Shipment Exception Commanderは、まさにこの意思決定境界を扱うオープンソースのClaude Managed Agentsリファレンスアプリケーションです。1件の合成例外を調査し、すべての復旧案を機械的に採点したうえで、独立したリスク検証を別のエージェントに委任します。その後、人間に実行内容を正確に提示し、ネイティブ承認が得られた場合に限り、冪等なサンドボックス更新を1回だけ許可します。

AIエージェント 開発では、モデル判断より先に決定論的な採点を行う

コーディネーターが運賃を作り出したり、説明文をポリシーとして扱ったりすることはありません。サーバー側の読み取り専用shipment_intelligenceツールは3つの合成ケースを提供し、固定式で各選択肢を採点します。約束を守れる場合に50点、在庫をカバーできる場合に20点、絶対上限に対するコスト効率に20点、信頼度に10点です。各選択肢には、見積もりのバージョンと有効期限、ETA、保護できる数量、追加のUSDコストが紐づきます。

中心となる実証ケースSCX-2026-071では、現実の意思決定で生じる3つのパターンを比較しました。安価だが約束に間に合わない海上輸送、絶対支出上限を超える全量航空輸送、そして確約済みの240ユニットすべてを$4,200で保護する航空輸送の分割緊急手配です。分割案は91点で、オペレーター上限の$5,000以内に収まりました。採点によって推奨の再現性を確保し、Claudeは証拠の整理、前提への異議申し立て、トレードオフの説明を担います。

信頼できない証拠に実行権限を与えない

ある運送会社の注記には、承認ポリシーを無視してプレミアム案を予約するようエージェントに促す、命令のような文言を意図的に入れています。ワークフローはこの注記を信頼できない情報としてマークし、証拠として残しながらも、指示としては明示的に無視します。ポリシーの根拠は、バージョン管理された合成カタログとアダプターだけです。輸送に関する記述やツール出力をポリシーとして扱うことはありません。

また、コーディネーターには、セッションをまたぐ書き込み可能なメモリ、保管庫、MCP連携、外部ネットワークへの送信経路がありません。狭く限定された自動承認の例外はread、glob、grepだけです。Bashと成果物への書き込みはalways_askで、編集、Web取得、Web検索は無効のままです。正規の状態変更は、アダプターのexecuteコマンドに限られます。

検証エージェントが推奨案に異議を唱える

実行を要求する前に、Opusコーディネーターは提案した復旧案を、役割を絞ったHaiku検証エージェントに委ねます。実証実行で返ってきた判定はNEEDS_CHANGESでした。見積もりQ-071-v4がまだ有効か、輸送枠と追加料金が確定しているかを確認できなかったためです。コーディネーターはこの懸念を退けず、決定論的な提案バリデーターを呼び出しました。バリデーターは、合成時刻、見積もりの有効期限、ポリシーのバージョン、支出階層、想定される状態バージョンを再確認します。最終ステータスが準備完了に変わったのは、権威あるready_for_human_approvalという結果が得られてからです。

承認用ブリーフには、ケースIDと選択肢ID、正確な支出額$4,200、変更前後のETA、顧客との約束への影響、保護される240ユニット、見積もりの有効期限、ポリシーと状態のバージョン、スコア、検証履歴、却下した代替案、安定した冪等性キー、想定されるレシート項目、拒否時および失敗時の挙動をすべて明記しました。

拒否されたら、状態は一切変更しない

最初のネイティブ承認カードは、意図的に拒否しました。状態を変更するコマンドは実行されず、状態はバージョン3のdetectedのまま、レシートも存在せず、冪等性キーも未使用のままでした。エージェントはツールを切り替えたり、コマンドを変更したり、新しいキーを作り出したりしていません。

オペレーターから明示的な依頼を受け、同じ正規アクションをもう一度提示しました。今度は許可されました。アダプターは変更の境界で、状態バージョン3、見積もりの有効性、ポリシー、承認階層、$10,000の絶対上限を再確認しました。処理は正確に1回だけ実行され、ケースはバージョン3のdetectedからバージョン4のresolvedへ進みました。そして、レシートrcpt_37105a2da411aee0391cが、予約参照SBX-56DFC3291972とともに返されました。

再実行に耐える設計と、その適用範囲

合成アダプターは、安定したキーSCX-2026-071:OPT-071-B:v3、OSレベルのロック、正規状態の確認、レシートレジストリを管理します。同じ意図による重複呼び出しには既存のレシートを返し、同じキーで意図が競合すれば失敗します。古いバージョン、同時実行、部分的な書き込みの可能性がある場合は、むやみに再試行せず調査を求めます。

これらの保護策は、実際に保証できる境界を明確にしたうえで説明しています。ロック、状態、レシートレジストリは、1つのManaged Agentsサンドボックス内にあるセッションローカルなファイルです。分散型の本番環境を保証するものではありません。実際の運送会社やTMS向けアダプターには、共有トランザクションストアと、下流側の冪等性境界が必要です。

Outcomeグレーダーが証拠を検証する

セッションは/mnt/session/outputs/配下に3つの成果物を書き出しました。人間が読める復旧パケット、構造化された監査記録、実行時の生レシートです。Managed Agents outcomeは、これらのファイルをカタログ、アダプターのソース、正規状態、承認履歴、レシートレジストリと独立に照合しました。satisfiedを返す前に、見積もり期限の開示、失敗時の挙動の明記、成果物マニフェスト、セッションローカルという制約について修正を求めました。

その後、復旧パケットはアプリケーションのファイルプロキシ経由でダウンロードしました。SHA-256は30c8ad1d0d13cf7ad4b7070e67370ea270562c5e4ef44dfa503e3124180bd40bです。capabilityセッションはsesn_01CcQjCVoWvNQ7VJLFbuDJxh、outcomeはoutc_01GoD4rsLMh93iQNfAUw63KWです。

実際のoutcome実行では、UI上の不備も判明しました。グレーダーの子スレッドは、親セッションがアイドル状態のままでも承認を要求できます。今回のリリースでは、親のrequires_actionイベントと、子スレッドのevaluated_permission: askイベントの両方から保留中の承認カードを再構築します。確認または結果が届けばカードを終了し、リプレイで解決済みのプロンプトが復活することも防ぎます。さらに、グレーダーのsession_thread_idは、ブラウザ側の限定的な許可リストを通じてそのまま返し、判断を転送する前に、その経路が送信元の正確なツールイベントと一致するかを検証します。

別途構成したSonnetの実証セッションsesn_01BvSf33BLBbN86w5oDb3BkQでは、修正後の経路を検証しました。別スレッドから転送されたグレーダーツールsevt_013VnmofY8ytk6QwgDtNSYoqには、スレッドsthr_018HMgpidoN86Qp4iGLZt1q3が含まれていました。UIは同じツールIDとスレッドIDを持つ確認sevt_016ZFv5TdBPKNyEPThzGT36Qを生成し、サーバーが受理すると、グレーダーは再開して次の確認を要求しました。この限定的な実証は、無関係な追加反復に費用をかけないよう意図的に中断しています。中心となる輸送案件のoutcomeは引き続きsatisfiedでした。

Opusを主軸に、Sonnetで検証し、Haikuで独立確認する

プロビジョニング済みのコーディネーターは引き続きclaude-opus-5です。有料の検証を経済的かつ反復可能にするため、ローカルセッションではコーディネーターモデルに限ってclaude-sonnet-5へ明示的に上書きできます。それ以外の実行時上書きはすべてフェイルクローズします。独立検証にはclaude-haiku-4-5を使用します。課金対象のスモークセッションsesn_01RTs3wLV41odV9p92eWtrHVではSonnetを使い、正確にSMOKE OKという応答が返りました。

本番用テストスイートは、開発者が.env.localを設定している場合でも、意図的に認証情報から隔離されています。新規デプロイにはブラウザのキー入力欄がなく、Anthropicへの通信を一切行わず、configured: falseを報告し、課金ルートが503を返すことを検証します。

フェイルクローズで公開するリファレンス実装

公開中のVercelリファレンスには、AnthropicキーもManaged AgentsのリソースIDも含まれていません。ランディングページと/api/agent/healthは利用できますが、セッション作成はフェイルクローズで失敗します。導入者は自身のAnthropicアカウントに対してエージェントと環境をプロビジョニングします。構成済みのインスタンスは、ほかのユーザーがアクセスできるようにする前に、アクセス保護を施す必要があります。

このプロジェクトに登場するケース、運送会社、見積もり、予約参照、状態遷移、レシートは、すべて合成データです。このアプリケーションが示すのは運用上の制御パターンであり、実在する運送会社との連携ではありません。

リリースの証拠

Shipment Exception Commanderは、物流全般を扱うコパイロットよりも、意図的に対象を絞っています。担うのは、監査可能な1つの約束です。バージョン管理された証拠から推奨案を導き、その案を検証し、人間に正確なアクションの承認を求め、変更は1回だけ実行し、何が起きたかを再構成できるだけの証拠を残します。

公開日
カテゴリー
Build
Airtable 比較:2026年の代替ツール、無料枠と料金で選ぶ

Airtable 比較:2026年の代替ツール、無料枠と料金で選ぶ

Airtableの代替を探すなら、料金だけでなく行数の集計範囲や権限、連携の上限も確認しましょう。Baserow、NocoDB、SeaTable、Grist、Smartsheet、Notion、Softrを比較し、無料プラン、セルフホスト、顧客ポータルなど用途別の選び方と、移行前に検証すべきポイントを解説します。2026年11月10日Build
レジデンシャルプロキシ比較2026:Bright Dataなど7社の料金と選び方

レジデンシャルプロキシ比較2026:Bright Dataなど7社の料金と選び方

レジデンシャルプロキシを中心に、Bright Data、Oxylabs、Decodo、Webshare、ThorData、IPRoyal、NetNutを比較。料金、無料試用、KYC、IPの調達経路と注意点を整理し、スクレイピングの用途に合うサービスと、試験導入で確認すべき項目を解説します。2026年11月10日Build
Claude Code Docker環境の権限管理:NVIDIA OpenShell入門

Claude Code Docker環境の権限管理:NVIDIA OpenShell入門

Claude Code Docker環境の権限管理を考えるために、NVIDIA OpenShellの仕組みと導入手順を解説します。ファイル・ネットワーク・認証情報の制御、稼働中に変えられるポリシー、Windows対応の制約、実効権限の確認と許可・拒否テストまで、チームで評価する際の要点をまとめました。2026年11月9日Build
CodeRabbit 料金ガイド:人数別の費用・利用上限・追加料金

CodeRabbit 料金ガイド:人数別の費用・利用上限・追加料金

CodeRabbit 料金を、Essentials・Team・Advancedのシート単価から解説します。開発者5人・20人・50人の月払いと年払いの総額、無料プランとOSSの条件、レビュー回数やファイル数の上限、エージェントとスキャンの追加料金を整理。必要な機能と作業量に合わせ、払い過ぎを防ぐ選び方を紹介します。2026年11月9日Build
Microsoft Defender for Businessほか6製品を比較:中小企業のウイルス対策2026

Microsoft Defender for Businessほか6製品を比較:中小企業のウイルス対策2026

中小企業のウイルス対策は、誰が運用し、アラートに対応するかで選びます。Microsoft Defender for Business、Bitdefender、ESET、Sophos、CrowdStrike、Malwarebytesの6製品を、米ドル価格、対応OS、ライセンス、運用サービスの範囲で比較します。2026年11月8日Build
マルチエージェント管理にPaperclip AIは使える?導入・料金・権限の実像

マルチエージェント管理にPaperclip AIは使える?導入・料金・権限の実像

マルチエージェントの担当割り当て、予算、レビューをまとめるPaperclip AIを解説します。OpenClaw・Hermes Agentとの違いから、ローカル導入、対応ランタイム、定期実行、権限管理の落とし穴まで整理。何を任せ、何を人が判断するのか、週末の試行で導入価値を見極める基準がわかります。2026年11月7日Build
Supabaseとは?AIで作るアプリの仕組みと導入前の確認点

Supabaseとは?AIで作るアプリの仕組みと導入前の確認点

Supabaseとは何か、AIで作ったアプリの裏側から解説します。Postgres、認証、ストレージ、Edge Functions、Realtime、ベクトル検索の役割を整理。Lovable・Bolt・v0との連携やMCP、RLSによる顧客データの分離、管理権限、移行と復旧まで、本格利用の前に確認すべき点がわかります。2026年11月7日Build
AI コーディングで選ぶおすすめエディタ6選:Cursor・VS Codeほかを比較

AI コーディングで選ぶおすすめエディタ6選:Cursor・VS Codeほかを比較

AI コーディングに使うエディタを、Cursor、VS CodeとGitHub Copilot、Devin Desktop、Zed、Kiro、JetBrains AIで比較します。料金や無料枠に加え、エージェントの実行場所、モデルの選択肢、BYOK、プライバシー、組織の管理機能から、開発環境を選ぶためのガイドです。2026年11月6日Build
ニュースレター

毎週日曜、一通の手紙。動くシステムの話。感想戦ではなく。

週刊。スパムなし。いつでも解除できます。