Domain 1 / 全7項目 / 主戦場: S1 サポート・S3 調査・S4 生産性

エージェント設計とオーケストレーション(配点27%)

最大配点ドメイン。エージェントの心臓部(ループ)から、複数エージェントの協働、hookによる強制、セッション管理まで。うちの組織の Lead/Worker 運用がそのまま出題範囲。

Task Statement 1.1エージェントループの設計(自律実行のしくみ)

AIエージェントの正体は「依頼を送る → 返事の止まり方を見る → ツールを実行して結果を返す → 繰り返す」という単純なループ。続けるか止めるかは、モデルが返すフラグ stop_reason だけで判定する。
試験が問うこと
  • ループの一生:リクエスト送信 → stop_reason を確認 →「tool_use(ツールを使いたい)」なら要求されたツールを実行して結果を返す →「end_turn(話し終わった)」ならループ終了
  • ツールの実行結果は会話履歴に追記して次のループに渡す。これでモデルが新しい情報を踏まえて次の一手を考えられる
  • 「モデル駆動の判断(Claudeが文脈から次のツールを選ぶ)」と「事前に固定した分岐(if文の決定木)」の違い。前者がエージェントの本質
うちの組織の実物

Claude Code のターンそのもの。ツールを呼んでは結果を読み、また次のツールを呼ぶ動きの裏側が全部このループ。rules/workflow-cycle.md の停止条件(試行N回・CRITICAL到達で止める)は、このAPIレベルのループの上に載せた業務レベルの安全網という関係。試験ではまずAPIレベル(stop_reason)で答える。

ひっかけ(誤答として出るパターン)
  • 「応答テキストに『完了しました』が含まれるかでループ終了を判定する」→ 自然言語のパースは不可。stop_reason で判定する
  • 「無限ループ防止のため反復回数の上限を主要な停止手段にする」→ 上限は保険であって主要判定ではない
  • 「アシスタントのテキスト出力があるか=完了」→ テキストとツール要求は同時に来ることがある

Task Statement 1.2コーディネーター・サブエージェント型(ハブ&スポーク)

複数のAIを協働させるときは、まとめ役(コーディネーター)1体がすべての通信を仲介する車輪のハブのような形にする。子エージェント同士を直接会話させない。
試験が問うこと
  • ハブ&スポーク構造:エージェント間通信・エラー処理・情報の流れをすべてコーディネーターが管理する
  • サブエージェントは独立したコンテキストで動く。親(コーディネーター)の会話履歴を自動では引き継がない
  • コーディネーターの仕事=タスク分解・委譲・結果集約・「どの子を呼ぶか」の動的選択。毎回全員を呼ぶのではなく、依頼の複雑さに応じて選ぶ
  • 分解を細かくしすぎるリスク:広い調査テーマなのに狭いサブタスクに切りすぎて、カバー漏れが起きる(サンプル問題Q7はこれ。「AI×クリエイティブ産業」をビジュアルアート3分野にしか分解せず、音楽・文筆・映画が丸ごと欠けた例)
  • 統合結果に穴があれば、コーディネーターが再委譲して再統合する反復ループ
うちの組織の実物

rules/lead-worker-orchestration.md がこのパターンの実装。「Lead は判定・分解・委譲・統合のみ」「Worker間の直接通信は禁止(必ずLeadを介す)」は、試験用語でいうハブ&スポークと情報ルーティングの一元化。rules/audit-independence.md の盲検原則は「サブエージェントのコンテキスト独立性」を監査品質に応用したもの。

ひっかけ
  • 「効率のためサブエージェント同士に直接結果を共有させる」→ 観測不能・エラー処理不能になる。誤答の定番
  • 「すべての依頼を常に全サブエージェントのフルパイプラインに通す」→ 動的選択が正解
  • 「出力に穴がある=下流(統合係・検索係)の性能問題」→ まずコーディネーターの分解の質を疑う(Q7の正解筋)

Task Statement 1.3サブエージェントの起動・コンテキスト受け渡し

子エージェントは白紙の状態で生まれる。親が知っていることを使わせたければ、依頼文(プロンプト)に明示的に書いて渡すしかない。
試験が問うこと
  • サブエージェントを起動する仕組みは Task ツール。コーディネーターが子を呼ぶには、許可ツールリスト allowedTools"Task" が含まれている必要がある
  • 子は親の会話履歴もメモリも自動継承しない。必要な文脈はプロンプトに全部書く
  • AgentDefinition:各サブエージェントの型定義(説明文・システムプロンプト・使えるツールの制限)
  • 親から子へ渡すデータは、本文とメタ情報(出典URL・文書名・ページ番号)を構造化して分離する→出典の追跡が壊れない
  • 並列実行は「1回の応答の中で複数のTask呼び出しをまとめて出す」。ターンをまたいで1体ずつ呼ぶのではない
  • 子への指示は手順書ではなくゴールと品質基準で書く→子が状況に適応できる
うちの組織の実物

CLAUDE.md の「怠惰な委譲の禁止(具体的なファイルパス・行番号・変更内容を含むプロンプトで委譲)」=明示的コンテキスト渡しの運用ルール化。agents/*.md の frontmatter(description / model / tools)が AgentDefinition に相当。「独立タスクは1メッセージで並列に投げる」運用もそのまま試験の正解パターン。

ひっかけ
  • 「サブエージェントは親の会話を参照できるので要点だけ渡せばよい」→ 継承しない。全文脈を明示的に渡す
  • 「検索結果の要約だけを統合係に渡す」→ 出典メタデータが失われる。構造化して渡すのが正解
  • 「子エージェントへの指示は詳細な手順書ほどよい」→ ゴール+品質基準型が正解(適応性が失われるため)

Task Statement 1.4多段ワークフローの「強制」とハンドオフ

「絶対に守らせたい順序」はプロンプトのお願い文では守られない(非ゼロの失敗率がある)。プログラムで物理的にブロックする=決定論的な強制を使う。
試験が問うこと
  • プログラムによる強制(hooks・前提条件ゲート)とプロンプトによる誘導の使い分け。このドメインで最重要の対立軸
  • 本人確認が済むまで金融操作をさせない、のような「決定論的コンプライアンスが必要」な場面では、プロンプト指示だけでは足りない
  • 例:get_customer で顧客IDが確認されるまで process_refund の呼び出しをブロックする前提条件ゲート(サンプル問題Q1の正解そのもの)
  • 複数の要望が混ざった依頼は、個別の論点に分解して並列に調べ、統合した1つの解決策にまとめる
  • 途中で人間へエスカレーションするときの構造化ハンドオフ:顧客情報・原因分析・推奨アクションをセットで渡す(会話ログを読めない人でも引き継げる形)
うちの組織の実物

この対立軸は rules/extension-layer-decision.md の「影響(確率的・お願い)か保証(決定論的・強制)か」そのもの。実装例は hooks/larc-approval-gate.sh(本番書込みを承認なしでは通さない)と hooks/git-identity-guard.sh(identity不一致のcommitをブロック)。構造化ハンドオフは rules/handoff-memory.md の引き継ぎテンプレ(確証/未確証/残り)が同じ思想。

ひっかけ
  • 「システムプロンプトに『必ず本人確認を先に行うこと』と書けば保証される」→ 確率的。保証にはならない(Q1の誤答B/C)
  • 「エスカレーション時は会話ログのURLを渡せば十分」→ 相手はログにアクセスできない前提。構造化サマリーを渡す

Task Statement 1.5hooks によるツールコール介入とデータ正規化

hooks は、ツールの呼び出しや結果に割り込む検問所。「結果をモデルに見せる前に整形する」「ルール違反の操作を実行前に止める」の2方向で使う。
試験が問うこと
  • PostToolUse 型:ツールの実行結果に割り込み、モデルが読む前に変換する。例:MCPツールごとにバラバラな日付形式(Unixタイムスタンプ / ISO 8601)や数値ステータスコードを統一フォーマットに正規化
  • 発信側への割り込み:ポリシー違反のツールコールを実行前にブロックする。例:500ドルを超える返金をブロックして人間エスカレーションのフローに迂回させる
  • 判断基準:ビジネスルールが「保証されたコンプライアンス」を要求するなら hooks、ベストエフォートでよいならプロンプト
うちの組織の実物

実行前ブロック型の実物が hooks/larc-approval-gate.sh(Lark本番書込みを検問、exit 2でブロック)と hooks/git-identity-guard.sh。PostToolUse型は scripts/hooks/session-budget-breaker.js(トークン消費の監視)。「$500超の返金ブロック」は larc の広告予算変更ゲートと同型の問題として読める。

ひっかけ
  • 「データ形式の正規化はシステムプロンプトで『ISO形式に直して解釈せよ』と指示する」→ 確率的で漏れる。PostToolUse hookで機械的に変換
  • 「高額返金の禁止はツールの説明文(description)に書く」→ descriptionは選択の参考情報であって強制力がない

Task Statement 1.6タスク分解の戦略(固定パイプライン vs 動的分解)

手順が予測できる仕事は固定の直列パイプライン(プロンプトチェイニング)、掘ってみないと分からない仕事は途中の発見に応じてサブタスクを生む動的分解。どちらを選ぶかが問われる。
試験が問うこと
  • プロンプトチェイニング:決まった多段レビューを順番に流す(例:ファイルを1つずつ分析→最後にファイル横断の統合パスを1回)。注意力の希釈(attention dilution)を防ぐ
  • 動的・適応的分解:「レガシーコードにテストを網羅的に足す」のようなオープンエンドな仕事は、まず構造を把握→重要領域を特定→依存関係の発見に応じて計画を更新
  • 選択基準:「予測可能な多面レビュー→チェイニング」「先が読めない探索→動的分解」
うちの組織の実物

CLAUDE.md のバッチ処理パターンが同じ判断軸:「各タスクが独立→並列」「相互依存→ループ」「対象が動的・大規模→動的ワークフロー」。rules/audit-independence.md の直列監査(editorial-checker → geo-auditor)はプロンプトチェイニングの実例。rules/lead-worker-orchestration.md の Competing Hypotheses(仮説ごとに検証Workerを立てる)は動的分解の実例。

ひっかけ
  • 「柔軟性が高いので常に動的分解を選ぶ」→ 予測可能なレビューには過剰でコスト高。固定チェインが正解になる
  • 「1回の巨大プロンプトで全ファイルレビューを済ませる」→ 注意力が薄まり一貫性が崩れる。段階分割が正解(Q12)

Task Statement 1.7セッション管理 — 再開と分岐(resume / fork)※完全版ガイドのみに載っている項目

長い調査は「名前を付けたセッション」として中断・再開できる。ただし古い調査結果が混ざったまま再開するより、要約を渡して新規セッションを始めた方が確実な場面がある。この判断が問われる。
試験が問うこと
  • --resume <セッション名>:名前付きセッションの再開。数日がかりの調査を続きから
  • fork_session:共通の分析結果を土台に、独立した枝を複数作って別アプローチを比較する(例:2つのリファクタ方針を同じ土台から試す)
  • 再開 vs 新規+要約の判断:前回のコンテキストがまだ概ね有効なら再開、前回のツール実行結果が古くなっている(コードが変わった等)なら「構造化した要約を注入して新規セッション」の方が信頼できる
  • 再開時は「前回から変わったファイル」を明示的に伝えて、狙った再分析をさせる(全部をゼロから探索し直させない)
うちの組織の実物

この「新規+構造化サマリー」がまさに rules/handoff-memory.md のセッション引き継ぎ(確証済み/未確証/残り の3分割で次セッションに渡す)。memory/project-*.md の「次回の続き」セクションは、試験用語でいう structured summary injection。fork は Agent tool の subagent_type: "fork" で日常的に使っている機能。

ひっかけ
  • 「常にセッション再開が効率的」→ ツール結果が陳腐化していたら、古い前提で推論する。要約→新規が正解になる場面がある
  • 「再開すれば自動で変更を検知してくれる」→ しない。変わったファイルは明示的に伝える

用語ミニ辞書(Domain 1)

stop_reason (ストップリーズン)

Claudeの応答が「なぜそこで止まったか」を示すフラグ。tool_use=ツールを使いたいから一時停止(→ループ継続)、end_turn=言い終わった(→ループ終了)。エージェントループの制御はこれ一本で行う。

エージェントループ / agentic loop

「送信 → stop_reason確認 → ツール実行 → 結果を履歴に追記 → 再送信」の反復。エージェントと呼ばれるものすべての心臓部。

ハブ&スポーク / hub-and-spoke

車輪のように、中心(コーディネーター)とだけ各エージェントがつながる構造。子同士の直接通信を禁じることで、観測・エラー処理・情報の流れを一元管理できる。

Task ツール / allowedTools

Task=サブエージェントを生成する公式の仕組み。allowedTools=そのエージェントが使ってよいツールの許可リスト。コーディネーターの allowedTools に "Task" が入っていないと子を呼べない。

AgentDefinition

サブエージェントの型定義。説明文(いつ使う子か)・システムプロンプト・ツール制限を含む。うちの agents/*.md の frontmatter に相当。

コンテキスト分離 / isolated context

サブエージェントは親の会話履歴・記憶を自動継承しない、という仕様。渡したい情報はプロンプトに明示的に書く。試験全体で繰り返し問われる大前提。

PostToolUse / ツールコール介入 hook

ツール実行の後/前に割り込む検問所。Post=結果の正規化・監視、実行前介入=ポリシー違反のブロック。「プロンプトは確率的、hookは決定論的」という対比で覚える。

プロンプトチェイニング / prompt chaining

大きな仕事を固定の直列ステップに割り、前段の出力を次段の入力にする方式。手順が予測できる多段レビュー向き。

--resume / fork_session

resume=名前付きセッションの再開。fork=共通の土台から独立した複数の枝を分岐。「前回のツール結果が古いなら、要約を渡して新規セッション」が試験の推し判断。

構造化ハンドオフ / structured handoff

人間や別エージェントへ引き継ぐときに、顧客ID・原因分析・推奨アクションなど決まった項目のセットで渡すこと。「会話ログを読めない相手」が前提。

仕上げチェックリスト(30秒で説明できたらチェック)

← ホーム D2 ツール設計とMCP統合 →