アンビエントエージェントの仕組み

LLM101

Ryo Nakagami

2026年04月22日

アンビエントエージェントとは?

人が毎回話しかけるのではなく,イベントストリームを常時監視するエージェント

  • チャット型のように人が毎回話しかけるのではなく,カレンダー・Slackなどのイベントストリームを常時監視するエージェント
  • ほとんどのタスクは裏側で自律処理し,必要な時だけ人に通知・質問・承認を求める
  • 1度に1会話しか扱えないチャット型と違い,複数タスクを並列処理できるため,人の注意資源を重要判断に集中できる

従来のチャット型 = 人の起動待ちで並列性なし

  1. 人が毎回メッセージ送信しないと起動しない
  2. 1度に1会話しか処理できない
  3. 待機中の時間は活用されない
  4. 人の注意は常時必要 ⇔ スケールしない
  5. 入力が来るまでエージェントは何もしない

アンビエント型 = イベント駆動で並列処理可能

起動の仕組み

  • イベントが起点(メール / Slack / Cron 等)
  • 人が話しかけなくても自律的に動く

処理の特徴

  • 複数タスクを並列処理できる
  • 人の注意は重要な時だけ使う
  • 長期メモリで判断が改善されていく

アンビエントエージェントの動作フロー

イベント検知 → 判断 → 自動実行 or 人に相談 → 長期メモリで学習

イベント発生

  • メール / Slack / Cron
  • カレンダー / Webhook

Agentが検知・判断

  • 処理すべきか判定
  • 必要な情報を収集

自動実行 or 人に相談

  • 安全な操作は自動実行
  • 重要判断はHITLへ

長期メモリで学習

  • 判断結果を蓄積
  • 次回以降に反映
イベント駆動ループ:人の介入は「重要な時だけ」

REMARKS: チャット型との違いをフロー視点で整理1

  • 起点: チャット型は人のメッセージ送信で起動するが,アンビエント型は外部イベント(メール / Slack / Cron)が起点になる
  • 並列度: チャット型は1会話ずつ逐次処理するのに対し,アンビエント型は複数タスクを並列処理できる
  • 人の関与: チャット型は毎ターン対話が必要だが,アンビエント型は Notify / Question / Review の3点のみ
  • 記憶: チャット型はセッション内に閉じるが,アンビエント型は長期メモリで判断を継続改善する

Human-in-the-loop:人との関わり方3パターン

すべてを自動化しない,人の判断を組み込む3つの型

  • アンビエントエージェントは全自動ではない ── 適切なタイミングで人の判断を組み込む
  • 関与の型は Notify(通知) / Question(質問) / Review(承認) の3つに整理できる
  • 型を区別することで,どの操作を自動化し,どこで人を介在させるかを設計できる

🔔 Notify(通知)

  • 重要だがAgentが処理できない事を人に知らせる
  • 人の行動をブロックしない. 見逃し防止が目的
  • 通知先は Agent Inbox や Slack など

例: 受信箱のDocuSign書類

❓ Question(質問)

  • 情報が不足している時,憶測せずに人へ確認
  • 間違った前提で実行するより停止して聞く方が安全
  • 回答はメモリに蓄積され次回以降の判断に活用

例: この会議に出席しますか?

✅ Review(承認)

  • 危険な操作は人が承認・編集・差戻し
  • 外部に影響が出る不可逆操作(送信・決済等)が対象
  • 承認前なら書き換えや中止が可能

例: 送信前のメール草稿

HITLパターンの選び方

3段階の判定で Notify / Question / Review / 自動実行 に振り分け

  • 受信したイベントに対し,Agentは3段階の判断を経て動作モードを決定する
  • 重要度 / 情報量 / 影響範囲に応じて,人の関与レベルを最小限に抑える

意思決定フロー

HITLパターン判定フロー: Agent処理可否・情報十分性・可逆性の3段階判定

4パターンの選択基準

🔔 Notify: 重要なイベントを知らせる

ユーザーが判断すべき事実を通知(Agentは特段アクションは取らない)

❓ Question — 情報不足

処理は可能だが判断に必要な情報が欠けている.憶測せず人に聞く

✅ Review — 不可逆・外部影響

情報は十分だが失敗が取り返せない操作(送信・決済等)は人が承認

⚡ 自動実行 — 可逆 + 情報十分

失敗しても戻せる & 必要情報が揃う操作は人を介さず自走

アンビエントエージェントを支える基盤1

LangGraphが永続化・HITL・長期メモリ・Cronを内蔵

  • アンビエント型はチャット型と違い,バックグラウンドで走り続ける基盤が必要
  • LangGraphは,永続化 / Human-in-the-Loop / 長期メモリ / Cronをランタイム機能として提供
  • 人との対話は Agent Inbox に集約し,複数エージェントからの通知・質問・承認を一元管理する

LangGraphが提供するランタイム機能

regmonkey_abstract_summary:
  title_fontsize: 1em
  bullet_fontsize: 0.8em
  keystat_fontsize: 0.8em
  children:
    - title: 永続化
      description:
        - 長時間動作する状態を保存
        - 再起動・クラッシュにも耐える
      width: [25,75]

    - title: HITL
      description:
        - Notify / Question / Review をAPIで表現
        - 中断・再開可能なワークフロー
      width: [25,75]

    - title: 長期メモリ
      description:
        - 過去の判断・回答を蓄積
        - 次回以降の自動判断精度を改善
      width: [25,75]

    - title: Cron
      description:
        - 定期的なイベントを自前で発火
        - 外部イベントがない時も動ける
      width: [25,75]

Agent Inboxによる対話集約

複数エージェントからの通知を一元管理

Notify / Question / Review はすべてInboxに集まり,人は1か所で確認・回答できる

人の回答がエージェントへ戻る

Inboxでの承認・回答は長期メモリに蓄積され,次回以降の判断に反映される

エージェントの横断運用が可能

メール対応・カレンダー調整・Slackトリアージ等,複数エージェントを同じInboxで運用できる

アンビエントエージェント with Claude Code

CLI + Hooks + Schedule + Subagents でClaude Codeをアンビエント化する

  • Claude Code では,Hooks / Schedule / Headlessモードを組み合わせると,外部イベントを起点に自走させられる
  • 人との対話はAskUserQuestion / Permission Prompt / ExitPlanModeで4パターン(Notify / Question / Review / Auto)に対応可能

HITL 4パターン → Claude Code機能マッピング

HITLパターン Claude Code の実現手段
🔔 Notify Stop / Notification Hook で Slack / デスクトップ通知を発火
Question AskUserQuestion ツール.Headlessなら Slack DM 等にリレー
Review Permission Prompt / ExitPlanMode で実行前に人が承認
Auto --dangerously-skip-permissions / allowlist / auto-accept で自走

ユースケース例

PRレビューの自動化 (/ultrareview)

GitHub Webhook → Claude Code → マルチエージェント並列レビュー → PR コメント投稿

定期タスクの Headless 実行

claude -p "check open PRs & summarize" を cron で日次実行.結果は Slack に Notify

ビルド監視・自動修復

CI failure → Claude Code が原因解析 → 修正パッチをドラフト PR → 人が Review で承認