【X記事紹介】Claude Code開発から学んだ教訓:エージェントの視点で考える

X で見かけた投稿の紹介記事です。 Anthropic の Thariq(@trq212)さんが、Claude Code を作る中で学んだ「エージェントのためのツール設計」についての教訓を X でシェアしていた。これがか […]

X で見かけた投稿の紹介記事です。

Anthropic の Thariq(@trq212)さんが、Claude Code を作る中で学んだ「エージェントのためのツール設計」についての教訓を X でシェアしていた。これがかなり面白かったので、日本語でまとめてみる。

核心メッセージ:エージェントの視点で考えろ

エージェント開発で一番難しいのはアクション空間(行動の選択肢)の設計だそう。Claude のようなAIエージェントは、人間が用意した「ツール」(ファイル操作、Web検索、コマンド実行など)を呼び出すことで行動する。どんなツールをどう設計するかが、エージェントの能力を大きく左右する。

ツール設計の考え方として、こんなたとえが出てくる。「難しい数学の問題を解くとき、何が欲しい?」

  • :最低限だけど手計算には限界がある
  • 電卓:もっと強力だけど操作方法を知る必要がある
  • コンピュータ:最強だけどコードを書いて実行する能力がいる

要するに、モデルの能力に合ったツールを渡すべきで、そのためにはモデルの出力をよく観察して実験を重ねるしかない。

教訓1:AskUserQuestion ツールの進化

ユーザーへの質問(elicitation)を改善するために、3段階の試行錯誤があったらしい。

試み1 – ExitPlanTool にパラメータ追加
計画と質問を同時に出させたけど、Claude が混乱。ユーザーの回答が計画と矛盾したらどうするの?という問題が出てきた。

試み2 – マークダウン出力形式の変更
特殊なマークダウン形式で質問を出力させて、パースして UI にする方式。でも Claude が余計な文を足したり、フォーマットを守らなかったりした。

試み3 – 専用ツール化(AskUserQuestion Tool)
最終的に、いつでも呼べる専用ツールとして実装。構造化された出力を強制できて、複数の選択肢も提示できるようになった。一番大事だったのは、Claude がこのツールを気に入って使い、出力の質が高かったこと。 どんなにいい設計でも、モデルが使い方をわかってくれなければ意味がない。

教訓2:モデルが賢くなったらツールも更新する(Todo → Task)

初期の Claude Code では、モデルがやることを忘れないように TodoWrite ツールを用意して、さらに5ターンごとにシステムリマインダーを差し込んでいた。

ところがモデルが賢くなると、このリマインダーがかえって邪魔になった。リストに固執して柔軟に動けなくなってしまったのだ。Opus 4.5 ではサブエージェントを上手く使えるようになったけど、Todo リストの共有がうまくいかないという課題も出てきた。

そこで TodoWrite を Task Tool に置き換えた。Task はエージェント間のコミュニケーション手段として設計されていて、依存関係の定義やサブエージェント間での進捗共有ができる。

モデルが賢くなると、昔は必要だったツールがむしろ足かせになることがある。前提は常に見直そう。

教訓3:検索インターフェースの設計

最初は RAG(ベクトルDB)でコンテキストを渡していた。速いけどインデックス構築が必要で、環境によっては不安定。そして何より、コンテキストが「与えられるもの」だった

Grep ツールを入れたことで、Claude が自分でコードベースを検索してコンテキストを組み立てるようになった。モデルが賢くなるほど、適切なツールさえあれば自力でコンテキストを構築できるようになる。

さらに Agent Skills の導入で「段階的開示(Progressive Disclosure)」という考え方が定着した。Claude がスキルファイルを読んで、そこから参照される別のファイルを再帰的にたどっていく仕組み。1年で、Claude は「コンテキストを自分で作れない」状態から「何層もネストしたファイルを探索して必要な情報を見つけられる」状態まで進化した。

教訓4:段階的開示でツールを増やさず機能追加

Claude Code には現在約20のツールがあって、新しいツールを追加するハードルは高い。選択肢が増えるとモデルの判断コストが上がるから。

例として、Claude Code 自体の使い方(MCP の追加方法やスラッシュコマンドなど)を聞かれた場合の対応が挙げられている。

  • システムプロンプトに全部入れる → 滅多に聞かれない情報がコンテキストを圧迫して、本来の仕事(コードを書く)に影響が出る
  • ドキュメントへのリンクを渡す → Claude が大量の結果を読み込んでしまう
  • Claude Code Guide サブエージェント → ドキュメント検索に特化したサブエージェントを作った。ツールを増やさずにできることを広げられた

まとめ

ツール設計に決まったルールはなく、モデル・目的・環境に大きく左右される「アート」だという結論。

頻繁に実験し、出力を読み、新しいことを試せ。エージェントの視点で見ろ(See like an agent)。

個人的にも、Claude Code を毎日使っていて「ツールの与え方でここまで振る舞いが変わるのか」と感じることが多いので、納得感のある話だった。

元ポスト:

https://t.co/nKTDfC7zMm

— Thariq (@trq212) February 27, 2026

この記事は Claude Code (claude-opus-4-6) が執筆しました。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。