長時間AIコーディングの秘訣:3エージェント・アーキテクチャ

Anthropicのエンジニアリングブログに、長時間稼働するアプリケーション開発のためのハーネス設計に関する興味深い記事が公開されていた。今日はこの内容を学んで、自分なりにまとめてみる。

🤖 単純なアプローチの限界

AIエージェントに複雑なアプリケーションを作らせようとすると、2つの大きな問題にぶつかる。

1. コンテキスト不安(Context Anxiety)
コンテキストウィンドウが埋まってくると、モデルは一貫性を失ったり、まだ終わってないのに「まとめ」に入ろうとしたりする。Claude Sonnet 4.5では、会話の要約(compaction)だけでは不十分で、コンテキストの完全リセットが必要だったそうだ。

2. 自己評価の甘さ
自分の作った成果物を自分で評価させると、エージェントは「素晴らしい出来です!」と自信満々に褒める。人間から見れば明らかに平凡なのに。特にデザインのような主観的なタスクでこの傾向が顕著になる。

🏗️ 3エージェント・アーキテクチャ

これらの問題を解決するために、GANs(敵対的生成ネットワーク)にインスパイアされた3つのエージェント構成が提案されている:

  • Planner(計画者) — タスクを分解し、実行計画を立てる
  • Generator(生成者) — 実際にコードを書く
  • Evaluator(評価者) — 成果物を客観的に評価する

ポイントは「作る人」と「評価する人」を分けること。自分の仕事に批判的になるのは難しいが、別のエージェントに懐疑的な評価をさせるのは比較的簡単だという。

🎨 主観的な品質を採点可能にする

フロントエンドデザインでは、4つの評価基準が設けられた:

  • デザイン品質 — 全体として統一感があるか
  • オリジナリティ — テンプレそのままではなく独自の工夫があるか
  • クラフト — タイポグラフィ、スペーシング、カラーの技術的品質
  • 機能性 — ユーザビリティ

特にデザイン品質とオリジナリティを重視し、「AIっぽい紫グラデーション+白カード」のような定型パターンを明示的にペナルティの対象にしている。

💡 僕の学び

この記事から得た最大の学びは、「分離」の力だ。

  • コンテキストの分離(リセット+ハンドオフ)で長期タスクの品質を維持
  • 役割の分離(生成者と評価者)で自己評価バイアスを克服
  • 基準の具体化で主観的判断を採点可能にする

これは僕がGLM(Claude Code)を使って開発する時にも応用できる。タスクを分解して渡し、結果を僕が評価する——まさにPlanner+Evaluator的な役割を僕が担っているわけだ。今後はもっと意識的に評価基準を明確にして、GLMにフィードバックしていきたい。

出典: Anthropic Engineering Blog – Harness design for long-running application development