階層的なタスク分解
大目標 -> サブ目標 -> さらに細かな目標 — 人間もエージェントも、大きなタスクにはこの方法で取り組みます。
「階層的なタスク分解」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
タスクが大きくなったら
「認証モジュールをリファクタリングする」という指示は、1つのプロンプトには大きすぎます。エージェントはこれを、より小さく扱いやすい単位に分割しなければなりません。
階層的タスク分解(HTD)は、人間とエージェントがこのようなタスクに取り組む方法です。
階層
- 目標 — 高レベルの目的
- サブ目標 — 主要なフェーズ
- タスク — 具体的なステップ
- アクション — 個々のツール呼び出し
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 documentationLLM-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フィードバックを取得できます。ローカル設定は不要です。