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
