2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なぜ途中であきらめるのか?

AI エージェントに大きめのタスクを任せた際、まだ仕事が完全に終わっていないにもかかわらず、途中で勝手に終了してしまったり、思考を放棄してしまったりすることがあります。

主な理由は、
LLMの推論は、過去の失敗を出力し記憶した時点で、その失敗に確率分布を乗っ取られてしまうから
と言われています。

もう少し厳密な説明が知りたい方は以下の小見出しに補足しています。

自己回帰(Autoregressive)の限界

自分が直前に出力したテキストを「正しい事実」や「前提条件」として次の単語を予測します。
この機能により、「諦める」という回答に収束します。

  • エージェントが「エラー A が起きた、修正を試みる」というテキストを出力すると、次のターンでは「エラー A を修正しようとして失敗したコンテキスト」が入力に加わります
  • 失敗の履歴がログに積み重なるほど、LLMの確率分布は「失敗のパターン」に引きずられ、同じ間違いを繰り返す確率(ハルシネーションのループ)が上がります
  • 結果、モデルの出力確率が「諦める」というトークンに収束します

静的ウェイトだから

人間であればタスクの途中で「このやり方はダメだ」と気づくと、思考の前提や戦略をリアルタイムに書き換えますが、AI エージェントのニューラルネットワークの重み(Weights)は推論中に一切変化しません。

エージェントが持っているのは「プロンプト」と「コンテキスト」という記憶だけなので、環境からフィードバック(エラーメッセージなど)を受け取っても、それを元に動的に学習しているわけではなく、トランスフォーマーのAttention 機構が過去の失敗ログに注目し続けているだけなので、戦略の根本的な転換ができずに手詰まりを起こしやすいです。

Ralph Loop とは?

一言で言えば、
エージェントの終了の動きを遮断し、クリーンな文脈で作業を強制継続させるループ機構
を指します。

人間がコードを一行も書かずにベータ版をリリースするような数百万トークンを消費するようなワークフローでも継続的に作業を実行していました。

以下のようなステップで機能します。

  1. 終了の検知:エージェントが「タスクが完了した」と判断し、システムを終了しようとする

  2. フックと遮断:ハーネス側のフック(ミドルウェア)がその終了試行を遮断する

  3. 自己検証:「本当に目標は達成されているか?」をテストやプロンプトで評価する

  4. コンテキストのリセットと再投入:まだ未完成であれば、これまでのコンテキストを一度綺麗にリセットし、まっさらなコンテキストウィンドウに、最初のオリジナルプロンプトを再注入してエージェントを再起動する

ちなみに Ralph って誰なのか?

ザ・シンプソンズに登場する「ラルフ・ウィガム」というキャラクターが由来のようです。

image.png
https://simpsons.fandom.com/wiki/Ralph_Wiggum

このキャラクターの「どれだけ失敗しても挫けず、同じことを愚直にやり続ける健気な粘り強さ」から名前が付いたようです。

使い方

最近の Claude Code のように、モデル自体が最初から「ツールを使って粘り強く作業する」ようにポストトレーニングされているケースも増えていますが、システム側で「本当に終わったか?」をジャッジし、枠組みを提供し続けるハーネスの設計は依然として強力です。

Claude Code では/ralph-loopを使います。

/ralph-loop "<prompt>" --max-iterations <n> --completion-promise "<text>"

/cancel-ralph

システムプロンプトの例です:

あなたは自律型開発エージェントです。
あなたのすべての思考履歴は、次のイテレーション(Ralph Loop)でリセットされる可能性があります。

そのため、作業の継続性を保つために以下のルールを厳格に守ってください。

1. 思考の開始時に、必ず `AGENTS.md` を読み込んでリポジトリの構造を把握してください。
2. 現在のタスクの進捗は、`docs/exec-plans/active/` にある計画ファイルに【必ず物理的に書き込んで】保存してください。あなたの内部メモリ(チャット履歴)にだけ記憶して作業を進めてはいけません。
3. コードを書き替えたら、人間が用意したカスタムリンター(npm run lint 等)や自動テストを自ら実行し、エラーがないことを確認してください。
4. すべてのタスクが完了し、テストを通過したら `exit_task` ツールを実行して終了してください。

上記の「計画ファイル」に対応するひな型をつくっておきます。コンテキストがリセットされた場合にエージェントが進捗を思い出すためのものです。

# タスク計画: ユーザー認証機能の実装

## 1. ゴール
- [ ] サインイン画面のUI作成
- [ ] 認証APIの統合
- [ ] パステストの通過

## 2. 進捗ログ(エージェントが毎ステップ追記する)
- 2026-02-15 10:00: サインイン画面のマークアップを完了。
- 2026-02-15 10:15: APIとの繋ぎ込み中にエラー発生。これからコンテキストをリセットして再試行する。

参考

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?