コンテンツにスキップ
LinkedInX

状態管理と引き継ぎ

対象読者: 複数工程の途中で情報が失われる問題を解決したい方、工程間の受け渡しを設計したい方
前提知識: オーケストレーションとは の基礎

複数工程のワークフローでは、工程の切れ目で情報が失われがちです。何を保持し、何を次へ渡すかを決めることが状態管理です。

会話履歴に頼らない

もっとも簡単な引き継ぎは、会話履歴をそのまま次工程へ持ち越す方法です。しかし履歴が長くなるほど必要な情報が埋もれ、失敗した工程だけを再実行することもできません。

方式部分再実行情報の見つけやすさ
会話履歴のみできない履歴が長いほど困難
明示的な状態管理できる構造化されていて明確
この表は横方向にスクロールできます。キーボードでは、表にフォーカスして左右の矢印キーを使用してください。

何を状態として保持するか

graph LR
    S1["工程1"] -->|成果物 + 前提| State["状態"]
    State -->|必要分のみ| S2["工程2"]
    S2 -->|成果物 + 前提| State

保持するのは次の3種類です。

種類
成果物生成したファイル、調査結果、決定事項
判断の前提却下した案とその理由、確認済みの制約
進捗完了した工程、残っている工程、失敗回数
この表は横方向にスクロールできます。キーボードでは、表にフォーカスして左右の矢印キーを使用してください。

一方、保持しなくてよいのは、試行錯誤の途中経過や、使い終わった中間データです。

引き継ぎの形式を決める

受け取る側が解釈に迷わないよう、形式をあらかじめ決めます。形式が固定されていれば、工程の中身を差し替えても前後に影響しません。

# 工程間で受け渡す形式の例
status: completed | failed | needs_review
output: 生成した成果物への参照
decisions: この工程で確定した事項
open_issues: 次工程へ持ち越す未解決事項

open_issues を持たせておくと、判断できなかった点が黙って消えるのを防げます。

進捗を残すと再実行できる

どの工程まで完了したかを状態として持てば、失敗した工程から再開できます。これは失敗検知とリカバリの前提でもあります。全体をやり直す設計では、後半の工程で失敗するたびに最初からになります。

まとめ

  • 会話履歴だけの引き継ぎでは、情報が埋もれ部分再実行もできない
  • 状態として保持するのは、成果物・判断の前提・進捗の3種類
  • 引き継ぎ形式を固定すると、工程の差し替えが容易になる
  • 進捗を状態に持つことで、失敗した工程から再開できる

関連リンク

クイズ