>

意外と知らないAIエージェントの仕組み|ハーネスがないと品質が保てない理由 ~Claude CodeとCursorを例に~

意外と知らないAIエージェントの仕組み|ハーネスがないと品質が保てない理由 ~Claude CodeとCursorを例に~

要約

Web版のClaude/GeminiとClaude Code/Gemini CLIを使うことの違いは「AIエージェントのハーネス」にある。モデル性能は高止まりしており、実用的な精度の差を生むのはモデル単体ではなく、それを制御・活用するためのハーネスである。本記事では、ハーネスの概念とClaude Codeを教材にした具体的な実装例を解説する。

対象読者: AIエージェントを業務に活用したいエンジニア、AIの実用的な使い方を知りたい開発者

この記事を読むことで得られるメリット

この記事を読むことで以下のことが分かる:

  • モデル性能だけでは実用的なAI活用ができない理由
  • AIエージェントの「ハーネス」とは何か、その役割
  • Claude CodeやCursorに実装されている具体的なハーネスの例
  • 低品質なアウトプットを避けるためのベストプラクティス

この記事を読むのにかかる時間

約12分

環境

  • MacOS Apple M4 Max Sequoia 15.1
  • Claude Code

Web版AIとAIエージェントツールの違いを認識することの重要性

Web版のClaude/GeminiやClaude Code/Gemini CLIを使うことは、同じ「AI」でありながらかなり異なる体験である。この違いを認識しないと、以下のような問題が起こりやすい。

前者はチャットという親しみやすさ、使いやすさを重視しており、後者はハーネス(AIをうまく制御するための仕組み、基盤)を重視している

そのため、そもそもできることやアウトプットの品質の差異を認識しておくことが重要と考えている

よくある失敗パターン

  1. うまく使えず低品質なアウトプットを量産 - 適切なコンテキストなしにAIを使い、期待はずれの結果に
  2. レビュー負担の増加 - 低品質なアウトプットのレビューを押し付けられた人が疲弊
  3. AIへの過小評価 - 「ああ、こんな程度のことしかできないのか」と「AI」という大きな主語でくくってしまい、積極的に使わなくなる

これらの問題の根本原因は、「モデルの性能=AIの性能」という誤解にある。

モデル性能の高止まりと競争の変化

各社の最上位(フロンティア級)の主力モデルの性能は十分に優れており、2025年現在、以下のような状況になっている。

  • GPT-5.2
  • Claude Opus 4.5
  • Gemini 3 Pro

これらのモデル間の差は、「どれを頻繁に触っているか」「どれを触った時に成功体験が多かったか」「自分の好みと照らし合わせて良いと感じるか」程度の差になってきている。

重要な事実: 現時点でのモデル単体(イメージとしては「Web版のClaudeやGemini」を使うこと)では、実業務を根本的に改革するほどの能力はない。

OpenAIとAnthropicの戦略の違い

2025年、両社は異なる戦略を取ってきた。

会社

重視したこと

OpenAI

モデルの性能向上、細かいチューニング機能

Anthropic

ハーネスの充実(モデル性能向上と並行して)

もちろんグラデーションがあるが、この方向性の違いは明確である。

ハーネスとは何か

NECのCTOの言葉を借りると、「それまで野生だった馬がなぜ人間に使われるようになったかというと、人間が馬具を発明したからだ」という比喩が分かりやすい。馬具(鞍、鐙、手綱、轡、蹄鉄など)の発明により、人間は馬をコントロールして使えるようになった。もともと馬は人間の何十倍もの力を持っていたが、馬具なしでは活用できなかった。

AIも同じである。Claude Codeというプロダクトは、Claudeというモデルと、Claude Codeというハーネスの両方で成り立っている。

ハーネスのレイヤー構造

ハーネスには階層がある。

低レイヤーのハーネス(Claude Code側)

長期にわたるエージェントのための効果的なハーネス。Claude Codeが提供する基盤機能。

高レイヤーのハーネス(ユーザー側)

ユーザーが何か作業を達成したいことを実現するためのハーネス。以下のような機能を使って利用者が構築する。

※低レイヤー、高レイヤーというのはあくまでわかりやすくするための便宜上の表現なので注意

具体的なハーネスの例

コンテキスト管理

CLAUDE.md

会話開始時に自動的にコンテキストに読み込まれ、プロジェクト固有のルールと知識をAIに伝えるファイル。ポイントはざっと以下

  • 可能な限り普遍的に適用可能であること
  • 少なければ少ないほどいい(目安:100行未満)
  • 細かくマークダウンを分け、その参照のみをCLAUDE.mdに書く
  • @path/to/import構文を使用して追加ファイルをインポート
  • プロジェクトのWHY、WHAT、HOWのみを簡潔に定義
    • WHY: プロジェクトの存在意義、対象者、言語
    • WHAT: 技術スタック、スキル一覧、ディレクトリ構造
    • HOW: 開発コマンド、環境変数、変更ログの仕組み

注意: /initコマンドで自動生成するのはおすすめしない。エッジケースを全て網羅しようとすると、関係の薄い内容が常に含まれることになり、性能が低下しやすい傾向にある(書いていても無視されやすくなる)。

Agent Skills

専門的なタスクをこなすための機能。段階的開示(Progressive Disclosure)によるコンテキスト最適化を実現する。最近MCPに続いて標準化された。

MCP(Model Context Protocol)

まだベータ版だが、ツール検索ツールが使えるようになり、コンテキストを最適化しながら動的にツールをロードできるようになった。段階的開示によるコンテキスト最適化の一例。

サブエージェント

  • 最大10並列、独立コンテキストでメインのエージェントのコンテキストを汚染することなくサブエージェントごとに必要なコンテキストを与えることができる

Planモード

ゴールまでの計画を常にユーザーに確認することで齟齬を減らす役割に加え、todoを更新するたび目標がコンテキスト末尾に再配置されるようになっており、「Lost in the Middle」問題を回避できる

フック

任意のタイミングで権限・安全制御を行う。settings.jsonとHooksシステムにより、以下を細かく設定できる:

  • どのツールを許可するか
  • 機密ファイルへのアクセスをどう制限するか
  • 破壊的操作前に人間の承認を求めるか

たとえばコーディング後にセキュリティチェックを行なったり、自動テストを行ったりすることを強制できる。Cursorも同様の機能を実装している。

AIエージェントに品質基準・検証方法を教える

Hooks

自動テスト

クラスや関数などについて自動テストコードを用意し、実装のたびに実行させることで品質を担保できる

APIテスト

APIをテストするためのCurlコマンドを認識させ、どんなレスポンスが返れば成功なのか、基準を明確に定義し、それを検証するための手順をAIエージェントに教える。

モックアップの活用

完成系のスクリーンショットを元にデザインを確認させることで、品質を担保する。

また、Agent Skillsを使ってアウトプットの品質基準とそれをクリアするための専門知識と検証方法を教えることもとても重要

こういった品質担保のための仕組み化をする前に使うと「ゴミ」が量産されてしまったり、レビューする人の負担が増える。また再現性もなく一回限りのガチャになる。

Cursorの成功事例

CursorがSaas史上最速の成長と言われている要因は「モデルの賢さではなく、開発者ワークフローへの統合度の高さ」と言われている。これはまさにハーネスの重要性を示す好例である。

まとめ

  • モデルのベンチマークなどの性能を見ているだけでは本当に実用的かわからない
  • ハーネスは単なる「設定ファイル」ではなく、AIエージェントの能力と信頼性を決定するアーキテクチャそのものである
  • Web版ClaudeとClaude Codeの差は「AIが賢くなった」のではなく、「賢いAIが適切な道具を持った」という違い
  • Anthropicが提供するClaude Codeは、ハーネスの具体的な実装例として最適な教材
  • CLAUDE.md、Agent Skills、MCP、フックなどを活用して、自分のワークフローに合ったハーネスを構築することで、AIエージェントの実用的な精度を大幅に向上させることができる