目標スタックとバックトラッキング
サブ目標をスタックに積み、完了したら取り出し、行き詰まったらバックトラックします — 古典的なAI計画です。
「目標スタックとバックトラッキング」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
目標のスタック
古典的なAI計画では、目標スタックを使用します。サブ目標に出会ったらプッシュし、完了したらポップします。エージェントも同じデータ構造を利用できます:
goal_stack = []
def push(goal):
goal_stack.append(goal)
def pop():
return goal_stack.pop() if goal_stack else None
def current():
return goal_stack[-1] if goal_stack else None
# --- demo ---
push('write the report')
push('collect the data')
print(f'Current goal: {current()}')
print(f'Popped: {pop()}')
print(f'Current goal after pop: {current()}')
Example: Refactoring Workflow
push('Refactor auth')
while current():
g = current()
if g == 'Refactor auth':
if not done('add_oauth_dep'):
push('Add OAuth dependency')
elif not done('replace_login'):
push('Replace login endpoint')
else:
pop() # done
elif g == 'Add OAuth dependency':
# ...actually do the work...
mark_done('add_oauth_dep')
pop()バックトラッキング
目標が失敗した場合:
- 失敗としてマークする
- 親に戻る
- 別の方法(異なるサブ目標)を試す
Backtracking Example
def attempt(goal):
for approach in [oauth, saml, custom_token]:
try:
return run_with(goal, approach)
except FailedException:
continue
raise NoApproachWorked(goal)試したアプローチを追跡する
同じ失敗したアプローチを再試行しないようにしてください。目標ごとに、何を試したかを追跡します:
{
'goal_id': 'refactor-auth',
'tried': ['oauth', 'saml'],
'remaining_options': ['custom_token']
}目標の選択にLLMを使う
次に何をプッシュするかをLLMに決定させます:
next_goal = llm.invoke(f'Current goal: {current()}. Done so far: {done_list}. What sub-goal next?').content
push(next_goal)前提条件と効果
STRIPS計画から考え方を借りましょう。各アクションには、前提条件(真でなければならないこと)と効果(真になること)があります:
action = {
'name': 'replace_login',
'preconditions': ['oauth_dep_installed'],
'effects': ['login_endpoint_replaced']
}計画と実行のループ
2段階のアプローチ:
- 計画 — 記号プランナーが目標スタックを構築する
- 実行 — エージェントがスタックの最上位を実行し、世界の状態を更新し、必要に応じて再計画する
記号処理とLLMのハイブリッド
前提条件が明確なタスク(ファイル操作、デプロイ)には記号プランナーを使います。曖昧な部分にはLLMを使います。両者を組み合わせることで堅牢性を高められます。
行き止まり
エージェントが、どのアクションも役に立たない状態に到達することがあります。行き止まりを認識し、さらに戻ってやり直してください:
if no_progress_in_n_steps(5):
pop_to_parent()
try_different_approach()バックトラッキングの深さを制限する
制限のないバックトラッキングは、永遠にループする可能性があります。深さと合計反復回数に上限を設けてください:
MAX_BACKTRACKS = 10
if backtrack_count >= MAX_BACKTRACKS:
escalate_to_human()バックトラッキングをユーザーに示す
エージェントがバックトラッキングするときは、「OAuth はうまくいかなかったため、SAML を試します」とユーザーに伝えてください。信頼を維持し、ユーザーが早い段階で介入できるようにします。
バックトラッキングのトリガー
エージェントは、いつサブ目標からバックトラッキングすべきですか?
まとめ
目標スタックは、エージェントが「今どこにいるか」を追跡します。サブ目標をプッシュし、完了したものをポップし、行き止まりではバックトラッキングします。記号計画とLLMの判断を組み合わせてください。
よくある質問
「目標スタックとバックトラッキング」レッスンは無料ですか?
はい。「目標スタックとバックトラッキング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「目標スタックとバックトラッキング」で何を学びますか?
サブ目標をスタックに積み、完了したら取り出し、行き詰まったらバックトラックします — 古典的なAI計画です。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「目標スタックとバックトラッキング」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 階層的なタスク分解
- 目標スタックとバックトラッキング
- ワールドモデルと先読み
- リフレクションと自己批評のループ