0Pricing
AI Agents · レッスン

階層的なタスク分解

大目標 -> サブ目標 -> さらに細かな目標 — 人間もエージェントも、大きなタスクにはこの方法で取り組みます。

「階層的なタスク分解」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

タスクが大きくなったら

「認証モジュールをリファクタリングする」という指示は、1つのプロンプトには大きすぎます。エージェントはこれを、より小さく扱いやすい単位に分割しなければなりません。

階層的タスク分解(HTD)は、人間とエージェントがこのようなタスクに取り組む方法です。

階層

  1. 目標 — 高レベルの目的
  2. サブ目標 — 主要なフェーズ
  3. タスク — 具体的なステップ
  4. アクション — 個々のツール呼び出し

Example Decomposition

Goal: Refactor authentication module to use OAuth.

  Sub-goal 1: Set up OAuth dependencies
    Task: Add dependency to requirements.txt
    Task: Configure OAuth client

  Sub-goal 2: Replace existing auth flow
    Task: Replace login endpoint
    Task: Replace session middleware
    Task: Update tests

  Sub-goal 3: Migration and rollout
    Task: Write migration script
    Task: Update documentation

LLM-Driven Decomposition

DECOMPOSE_PROMPT = '''
Decompose this goal into 3-6 sub-goals. For each sub-goal, list 2-5 concrete tasks.
Return JSON: {sub_goals: [{name, tasks: [str]}]}

Goal: {goal}
'''

再帰的な分解

タスクがまだ大きすぎる場合は、さらに分解してください。1回のLLMステップ(約3~5回のツール呼び出し)に収まるまで続けます。

分解を止めるタイミング

判断の目安:

  • タスクの説明が1文に収まる
  • タスクに明確な受け入れ基準がある
  • タスクが触れるファイル数が少ない
  • 特定のテストで検証できる

ツリー構造

分解をツリーとして表現します。各ノードは、説明、ステータス(pending/running/done/failed)、子ノードを持つタスクです:

@dataclass
class TaskNode:
    description: str
    status: Literal['pending', 'running', 'done', 'failed']
    children: list['TaskNode']
    result: str | None = None

深さ優先で実行する

ツリーを深さ優先でたどります。次に進む前に、各リーフを完了させてください:

def execute(node):
    if node.children:
        for child in node.children:
            execute(child)
    else:
        node.status = 'running'
        try:
            node.result = run_leaf(node)
            node.status = 'done'
        except Exception as e:
            node.status = 'failed'

結果を集約する

子ノードが完了したら、親ノードで結果を集約します:

def aggregate(parent):
    summaries = [c.result for c in parent.children if c.status == 'done']
    parent.result = llm.invoke(f'Summarise these sub-task results: {summaries}').content

ツリーをユーザーに表示する

長時間実行するエージェントでは、ライブのステータス更新とともにツリーをユーザーに表示してください。信頼と透明性につながります:

[x] Add OAuth dependency
[x] Configure OAuth client
[~] Replace login endpoint   <-- in progress
[ ] Replace session middleware
[ ] Update tests

ツリーの編集を許可する

パワーユーザーは、タスクのスキップ、追加、並べ替えを望む場合があります。計画ツリーを手動で編集できるようにしてください。

失敗したら再計画する

サブタスクが繰り返し失敗した場合は、親ノードに戻して再分解してください:

if failed_count(node) > 2:
    parent = node.parent
    parent.children = llm_replan(parent, failure_context=node.last_error)

分解のコスト

分解するたびにLLMの呼び出しが発生します。キャッシュが役立ちます。同じ目標 -> 同じ初期分解となるためです。

分割を止めるタイミング

エージェントは、いつタスクの分解を止めるべきですか?

まとめ

目標 -> サブ目標 -> タスク -> アクション。ツリーを構築し、深さ優先で実行し、結果を集約し、失敗したら再計画します。長期的な作業の標準パターンです。

よくある質問

「階層的なタスク分解」レッスンは無料ですか?

はい。「階層的なタスク分解」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。

「階層的なタスク分解」で何を学びますか?

大目標 -> サブ目標 -> さらに細かな目標 — 人間もエージェントも、大きなタスクにはこの方法で取り組みます。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Agentsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「階層的なタスク分解」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Agentsレッスンでコードを書いて実行できますか?

はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 階層的なタスク分解
  2. 目標スタックとバックトラッキング
  3. ワールドモデルと先読み
  4. リフレクションと自己批評のループ
← AI Agentsに戻る