「AIエージェントがミスしたら、自動で巻き戻して別のルートを探す」
そんな夢のような技術が、MITから発表されました。
結論から言うと
MITの研究チームが開発したEnCompassというフレームワークを使うと、AIエージェントの精度が15〜40%向上します。しかも、実装に必要なコードは82%削減。
これ、AIエージェント開発のゲームチェンジャーです。
なぜAIエージェントは「使えない」と言われるのか?
正直に言います。
2026年になっても、AIエージェントはまだ信頼できません。
タスク成功率の現実:
- 単純なタスク: 80-90%
- 複雑なタスク: 40-60%
- 本番環境での長時間タスク: 30%以下
理由は単純です。LLMは確率的に間違えるから。
従来のプログラムは「1+1=2」を100回やっても100回正解します。でもLLMは違う。「東京の首都は?」という質問でも、たまに「京都」と答えることがある。
これがエージェントの複数ステップになると、エラーが雪だるま式に増えていく。
# 従来のエージェントの問題
step1: 成功確率 95%
step2: 成功確率 95%
step3: 成功確率 95%
step4: 成功確率 95%
step5: 成功確率 95%
# 全体の成功確率
0.95^5 = 77% # すでに23%失敗!
# 10ステップなら?
0.95^10 = 60% # 40%が失敗
これが「AIエージェントは使えない」と言われる根本原因です。
EnCompassの革命的アプローチ
MITの天才たちが考えたのは、「間違えたら巻き戻す」というシンプルな発想。
ゲームのセーブポイントを思い出してください。
ボス戦で死んだら、セーブポイントからやり直しますよね?EnCompassはAIエージェントに同じことをさせます。
具体的な仕組み
# EnCompassの疑似コード
@branchpoint # ← ここがセーブポイント
def analyze_code(repo):
result = llm.analyze(repo)
# 品質スコアを記録
score = evaluate_quality(result)
record_score(score)
return result
# EnCompassが自動でやってくれること:
# 1. 複数の実行パスを並列で試す
# 2. 各ステップの品質を評価
# 3. 悪いパスは自動で破棄
# 4. 最良のパスだけを採用
3つの核心技術
1. 確率的天使的非決定性(PAN)
難しい名前ですが、要するに「複数の未来を同時に探索する」ということ。
従来のエージェント:
A → B → C → 失敗 😭
EnCompass:
A → B1 → C1 → 成功 ✅
↘ B2 → 失敗 ❌ (破棄)
↘ B3 → C3 → 成功 ✅
2. 自動バックトラック
LLMがミスしても、自動で前のステップに戻って別のアプローチを試す。
3. ビームサーチ戦略
「どのパスを優先的に探索するか」を賢く判断。リソースを最も有望なパスに集中させる。
実際の性能向上
論文の数字を見てください:
| リポジトリ | 従来手法 | EnCompass | 向上率 |
|---|---|---|---|
| リポジトリA | 52% | 67% | +29% |
| リポジトリB | 45% | 63% | +40% |
| リポジトリC | 58% | 73% | +26% |
| リポジトリD | 41% | 56% | +37% |
| リポジトリE | 55% | 70% | +27% |
平均15〜40%の精度向上。これは尋常じゃない数字です。
コード量82%削減の秘密
「すごい技術なのはわかった。でも実装大変でしょ?」
逆です。
従来、探索機能付きエージェントを作るには424行のコードが必要でした。EnCompassなら76行で済む。
# 従来の実装(概念図)
class AgentWithSearch:
def __init__(self):
self.state_history = []
self.branch_manager = BranchManager()
self.score_tracker = ScoreTracker()
# ... 400行以上のボイラープレート
def execute(self, task):
# 複雑な状態管理
# 手動でのバックトラック実装
# スコア追跡ロジック
# 並列実行の管理
# ... 地獄のようなコード
# EnCompassでの実装
@encompass_agent
def my_agent(task):
@branchpoint
def step1():
return llm.process(task)
@branchpoint
def step2(input):
return llm.analyze(input)
return step2(step1())
アノテーションを2つ付けるだけ。
これがEnCompassの威力です。
Claude Code / Codexユーザーへの影響
ここからが本題。
Claude CodeやCodexを使っている人なら、こんな経験ありませんか?
- 「途中まで良かったのに、最後でおかしくなった」
- 「同じプロンプトなのに結果がバラバラ」
- 「長いタスクほど失敗しやすい」
これ、全部EnCompassが解決できる問題です。
将来の統合予測
私の予想では、2026年中にClaude CodeとCodexにEnCompass的な機能が標準搭載される可能性が高い。
なぜなら:
- AnthropicもOpenAIも「エージェントの信頼性」を最重要課題として挙げている
- EnCompassはオープンソースで公開されている
- 実装コストが低い(82%削減)
- 効果が劇的(15-40%向上)
採用しない理由がありません。
今すぐできること
EnCompassを待たなくても、同じ発想でエージェントを改善できます。
1. 自己検証ループを追加
def agent_with_verification(task, max_retries=3):
for attempt in range(max_retries):
result = llm.execute(task)
# 自己検証
verification = llm.verify(
f"以下の結果は正しいですか?\n{result}"
)
if verification.is_valid:
return result
# 失敗したら別のアプローチで再試行
task = f"{task}\n\n前回の問題点: {verification.issues}"
return None
2. 複数パスの並列実行
import asyncio
async def multi_path_agent(task):
# 3つの異なるアプローチを並列実行
paths = await asyncio.gather(
llm.execute(task, style="conservative"),
llm.execute(task, style="creative"),
llm.execute(task, style="detailed"),
)
# 最良の結果を選択
scores = [evaluate(p) for p in paths]
return paths[scores.index(max(scores))]
3. チェックポイント付き実行
def checkpointed_agent(task, steps):
checkpoint = None
for step in steps:
try:
result = step.execute(checkpoint)
checkpoint = result # セーブ
except:
# 失敗したら前のチェックポイントから別ルート
result = step.execute_alternative(checkpoint)
checkpoint = result
return checkpoint
まとめ
EnCompassが示したのは、AIエージェントの信頼性問題には解決策があるということ。
今日の要点
- AIエージェントの失敗は「LLMの確率的エラー」が原因
- EnCompassは「巻き戻し+複数パス探索」で精度15-40%向上
- 実装コードは82%削減(424行→76行)
- Claude Code / Codexへの統合は時間の問題
参考リンク
Helping AI agents search to get the best results out of large language models | MIT News
EnCompass: Enhancing Agent Programming with Search Over Program Execution Paths | arXiv
New MIT Framework Uses Search to Handle LLM Errors in AI Agents - AIwire
この記事が参考になったら、いいねとストックをお願いします!
質問があればコメントで聞いてください。