目次を表示する

AI エージェントを動かし続ける ─ 運用工学の地図

HITL の SLA 設計 ─ 承認遅延・エスカレーション・フォールバック

HITL の SLA 設計 ─ 承認遅延・エスカレーション・フォールバック

第2部 ch5 で HITL の 6 箇所 × 6 実装 × 4 リスクを扱った。本章では、それらを運用フェーズで動かし続けるための SLA 設計を扱う。

運用で起きる HITL の問題

業務エージェントを 6 ヶ月運用すると、HITL に関して次の問題が必ず立ち上がる:

  1. 承認 queue overflow:エージェントが大量に approval を要求し、人間側で捌ききれない
  2. 承認遅延:reviewer が出張・休暇で承認が止まる
  3. 承認疲れ:rubber-stamp 化で実質 HITL なし(第2部 ch5 で扱った)
  4. 承認情報のリーク:「誰が何を承認したか」が SOC2 / GDPR の audit に残せていない
  5. エージェント側の暴走:HITL 待ちでセッション state が消える、メモリが膨らむ

これらは設計時には見えにくい。運用が始まって初めて表面化する

SLA の 4 軸

HITL の SLA は 4 つの軸で設計する。

内容
応答時間 SLA承認要求から人間応答までの目標時間High risk 4h、Medium 8h、Low 24h
エスカレーションSLA 違反時に上位者へ自動 escalatereviewer → team lead → executive
フォールバックSLA 違反時のシステム挙動auto-reject / auto-approve(低リスク)/ tasks pause
監査ログ「誰が・いつ・何を・なぜ承認したか」の永続化EU AI Act 対応、7 年保存(金融)

軸 1:応答時間 SLA

リスクティアごとに目標を分ける。

✅ 推奨初期値(業務性質次第で調整)
─────────
Critical(不可逆操作):
  応答時間 SLA: 1h(業務時間内)
  Escalation: 30 min で reviewer → 1h で team lead

High(顧客影響あり):
  応答時間 SLA: 4h
  Escalation: 2h で reviewer → 4h で team lead

Medium(社内操作):
  応答時間 SLA: 8h
  Escalation: 6h で reviewer → 8h で team lead

Low(推奨・suggestion):
  応答時間 SLA: 24h
  Escalation: 16h で reviewer → 24h で auto-handle

これらの SLA は 観測可能でなければならない。Datadog / Hyperping / Prefactor などの監視ツールで HITL queue を可視化する。

軸 2:エスカレーション

SLA 違反が起きたら、自動的に上位者へ通知する。

graph TB
    Req[Approval Request<br/>Risk: High]
    R1[Reviewer<br/>応答 SLA: 4h]
    R2[Team Lead<br/>応答 SLA: 8h]
    R3[Executive<br/>応答 SLA: 24h]
    Auto[Auto-reject after 48h]

    Req --> R1
    R1 -.4h 経過, 応答なし.-> R2
    R2 -.8h 経過, 応答なし.-> R3
    R3 -.24h 経過, 応答なし.-> Auto

重要な設計

  • 各 tier の応答 SLA は明示的
  • Escalation 通知は Slack + email + PagerDuty で多重化
  • 最終的な auto-handle(reject / pause)の挙動を事前に決めておく

軸 3:フォールバック ── SLA 違反時の挙動

「承認が来ない」とき、システムは何をすべきか?

リスクフォールバック挙動
CriticalAuto-reject(安全側に倒す)、HITL 担当者にインシデント通知
HighPause until 承認、ユーザーに「処理中です」を表示
MediumPause → 24h 経過で auto-reject
LowAuto-approve(risk が許容範囲内なら)
✅ Low risk の auto-approve 例
─────────
- 軽微な typo 修正の PR
- 内部通知メールの送信
- アクセスログの集計
→ SLA 24h 経過で auto-approve(spot check で 5% を事後レビュー)

✅ Critical の auto-reject 例
─────────
- 本番 DB の DROP TABLE
- 顧客への送金
- データの export
→ SLA 違反で auto-reject、人間が手動で再起動する必要

「auto-handle の挙動」を事前に明文化することが運用工学の核心。「承認が来ないときどうするか」を曖昧にすると、業務側で混乱が起きる。

軸 4:監査ログ

EU AI Act / SOC2 / GDPR に対応するには、HITL の監査ログを永続化する必要がある。

✅ 必須項目
─────────
- approval_id(一意)
- agent_id(どのエージェントが要求したか)
- task_id(どのタスクで)
- requested_at(要求時刻)
- approver_id(承認者)
- approved_at / rejected_at(応答時刻)
- decision(approve / reject / escalated / auto)
- decision_reason(自由記述、required)
- risk_tier(Critical / High / Medium / Low)
- context_hash(タスク context の hash、後から再現可能に)

保存期間(規制依存):

  • 金融:7 年
  • 医療:5-10 年
  • 一般:3 年(GDPR の最長保管期間に準拠)

重要:「decision_reason」を required にする。ch5 の rubber-stamp 化を防ぐため、承認者は理由を書かなければ approve できない

「速度」ではなく「責任」のための HITL

第2部 ch5 で示した原則を、運用フェーズで再強調する。

AstraSync の試算:AI 50ms vs 人間 180,000ms = 3,600 倍速度減

HITL を「verification(検証)」のためにすべて使うと、scale しない。**「accountability(責任)」**に絞ると設計が収束する。

graph LR
    LR[Low Risk<br/>93% を auto + spot check] --> Done[Done]
    MR[Medium Risk] --> Retro[Retroactive review<br/>事後 spot check]
    HR[High Risk] --> Sync[Synchronous<br/>必須承認]
    UR[Critical / Self-doubt] --> HITL[Tier-based escalation]

Anthropic Auto Mode の 93% 自動承認実態は、業界の方向を示している:「ユーザーが手動承認の 93% を実際に許可している」という事実から、Anthropic は Auto Mode を作った。

Queue overflow の対処

承認 queue が大量に溜まると、システム全体が止まる。これを防ぐには:

1. Queue の hard cap

✅ Queue size cap
─────────
- 1 reviewer あたり pending 50 件まで
- 超過したらエージェント側で「承認 queue 満杯のため 1 時間後に再試行」を返す
- 業務側に visibility(「いま 50 件溜まっています」を可視化)

2. Bulk approval / bulk reject

似た性質のリクエストをまとめて処理できる UI を用意。

例:内部通知メール送信の承認 30 件
→ 1 件ずつ確認するのではなく、
  「送信先一覧を見て、1 クリックで全 approve / 全 reject / 個別選択」

3. 承認権限の委譲

reviewer の出張・休暇時に、自動的に他 reviewer へ委譲する仕組み。

✅ Reviewer status
─────────
- Active:通常モード
- Busy:閾値超過。escalate を即時起動
- OOO(out of office):すべて backup reviewer へ自動 forward

「承認疲れ」を運用で測る

第2部 ch5 で「1 セッション 10 件以下が rubber-stamp 化の閾値」と示した。これを SLI として実装する。

SLI:Approver workload
─────────
- 1 reviewer の per-session 承認数
- 1 reviewer の daily 承認数
- 承認時間中央値(短すぎると rubber-stamp の疑い)
- decision_reason の文字数中央値(短すぎると同上)

閾値:
- per-session 10 件超過:⚠️ Bulk approval UI を提案
- 承認時間 中央値 < 5 秒:⚠️ rubber-stamp 化の疑い
- decision_reason 文字数 中央値 < 20 字:⚠️ 形だけの承認の疑い

これらの閾値超過は、運用の品質劣化の早期警告だ。

SLA を満たし続けるための実装パターン

Durable execution(第1部 ch7)との組み合わせ

HITL gate は durable な step として書く

# ✅ LangGraph での HITL(第2部 ch5 で示した例の再掲)
def review_payment(state):
    decision = interrupt({  # ← workflow を pause、durable に保存
        "question": "$5,000 の支払を承認しますか?",
        "context": state["payment_details"],
        "risk_tier": "Critical",
        "sla_hours": 1,
    })
    return {"approved": decision == "approve"}

# 別のセッションから再開
graph.invoke(
    None,
    config={"configurable": {"thread_id": "..."}},
    resume_command=Command(resume="approve")
)

これで 承認待ちで sandbox / プロセスが消えても OK な構造になる。

SLA 監視

✅ Daily SLA dashboard
─────────
- 各 risk tier の SLA 達成率(Critical 99%、High 95%、Medium 90% など)
- Escalation 発動回数(増えていないか)
- Auto-handle 発動回数(増えすぎていないか)
- 承認者別の workload
- decision_reason の文字数分布

2026 の主要事例

Anthropic Claude Code Auto Mode(2026-03-24)

Sonnet 4.6 ベースの transcript classifier、2 段階フィルタ、3 連続拒否 or 20 累計でエスカレーション。false-negative 17% を「許容可能だが慎重審査の代替ではない」と正直に開示

これは「自動化された HITL の前段フィルタ」。classifier が「危険」と判定したものだけ人間に渡す。これにより人間の承認件数は大幅に減る。

OpenAI Codex Auto-Review(2026-04)

約 99% を auto-approve、200× ユーザー承認削減。「メインエージェントは task 完遂最適化、Auto-review は narrower job」と責任分離(OpenAI alignment 公式、ただし Devin retrospective の数字ではないので注意)

メイン agent の出力を別 agent が retroactive に review」する設計。Auto-Review は narrower な job に特化することで、コスト効率と品質を両立。

ChatGPT Agent watch mode

sensitive sites(メール・金融)で常時監視を要求

これは「人間が常時画面を見ている」モード。SLA は「0 秒」(即時介入可能)。

❌ アンチパターン:「承認待ち中に sandbox が消える」

症状
─────────
- HITL 承認を 6 時間待っている間に sandbox / プロセスが消えて state 喪失
- 承認後に「最初からやり直し」になる
- リソース消費が累積(特に Daytona / Modal の長命 sandbox)

根本原因
─────────
- HITL gate を durable な step として書いていない
- in-process state に依存している
- セッションを 1 プロセスで保持しようとしている

脱出法
─────────
1. LangGraph の interrupt() / Temporal の Signal / Restate の Virtual Object を使う
2. state は外部 storage(postgres / R2)に書き出し
3. 承認後の resume を「セッション外からの API call」として設計
4. Sandbox は短命にし、承認時に新しい sandbox を立ち上げ直す

業務投入の観点で重要な 3 点

  1. SLA は 4 軸で設計:応答時間 / エスカレーション / フォールバック / 監査ログ。1 つでも欠けると運用が破綻する
  2. 「承認疲れ」を SLI として測る:per-session 10 件超過、承認時間 < 5 秒、decision_reason < 20 字 を rubber-stamp 化の早期警告に
  3. HITL gate は durable な step として書く:承認待ちで sandbox / プロセスが消えても OK な構造に。interrupt() / Signal / Virtual Object

次章への接続

ch8 では、エージェントの品質を継続的に検証するContinuous evaluation を扱う。Production traffic 上の eval、tail-based sampling、judge LLM の月次 calibration、A/B テストとカナリアを実装の解像度で扱う。


この章のまとめ

  • HITL の SLA は 4 軸で設計:応答時間 / エスカレーション / フォールバック / 監査ログ
  • 応答時間 SLA はリスクティア別:Critical 1h、High 4h、Medium 8h、Low 24h
  • フォールバック挙動を事前明文化:Critical は auto-reject、Low は auto-approve(spot check 付き)
  • 監査ログは法的義務:EU AI Act、SOC2、GDPR。decision_reason を required に
  • 承認疲れを SLI として測る:per-session 10 件超過、承認時間 < 5 秒、reason 文字数 < 20 字
  • HITL gate は durable な step として書く:承認待ちで sandbox / プロセスが消えても OK