🧪

Claude Codeの思考を覗き見!Agentic Searchはコーディング以外でも使えるのか実験してみた

に公開

AIコーディングアシスタントの Claude Code 、使っていますか? その使い心地の良さをつくる特徴は色々ありますが、特に手動でファイルを指定しなくても、コードベース全体を理解してくれる賢さには驚かされます。

この賢さの裏側には 「Agentic Search(エージェント的検索)」 という仕組みがあります。これは、AIエージェントが人間の開発者のように、状況に応じて最適なツールを使い分けながら情報を探し出すというものです。

なぜ、この実験をしようとしたのか

私のチームでは、Claude CodeのようなAIエージェントを、コーディング以外の様々な業務に応用したいと考えています。そのためには、まず成功しているエージェントが「どのように思考し、タスクを解決しているのか」を理解する必要がありました。

そこで、このAgentic Searchがコーディングという得意領域を離れ、一般的なテキスト情報を相手にしたときに、どのように振る舞うのかを観察してみることにしました。

Agentic Searchとは?

実験の前に、「Agentic Search」について簡単におさらいしましょう。

これは広義の RAG(Retrieval-Augmented Generation, 検索拡張生成) の一種ですが、単純なベクトル検索とは一線を画します。RAGの本質が検索(Retrieval)の質にあるとすれば、Agentic Searchはその「質」を極限まで高めたアプローチと言えます。

Claude CodeのAgentic Searchは、以下のような複数の手法を組み合わせたハイブリッドな検索戦略をとっています。

  • キーワード/パターンマッチング: grepglob のような伝統的なコマンドを使い、特定の関数名や構文を正確に探し出す。
  • ファイル全体の読み込み: 深い文脈理解が必要な場合、ファイル全体をコンテキストに読み込む。
  • サブエージェントによる要約: 複数の大きなファイルを調査する際、サブエージェントに要約させて情報を凝縮する。

これにより、コードの微妙な構文的詳細を失うことなく、意味的にも構文的にも正確な理解が可能になります。

属性 伝統的なRAG (ベクトル検索) Claude Code (Agentic Search)
検索手法 ベクトル埋め込み grep, glob, ファイル全体読み込み, サブエージェントによる要約
検索タイプ 意味的 (Semantic) 構文的 (Syntactic) & 意味的 (Semantic)
起動メカニズム 自動的な類似性検索 エージェントによる能動的なツール呼び出し
理想的な用途 概念的に類似したコードやドキュメントの発見 特定の定義、依存関係、構文パターンの正確な特定
長所 曖昧なクエリに対応可能 正確、現実に即している、監査可能
短所 構文の正確性に欠ける場合がある より明示的な指示や計画が必要

さて、この賢い検索エージェントは、構造化されていない自然言語のテキストに対しても力を発揮するのでしょうか?

使ったファイル

実験で使ったのは、クロステック・マネジメント社の採用向けnoteアカウント(https://note.com/xtm_recruit)に掲載されている7つのインタビュー記事です。

これらの記事を自作のスクレイピングツール(もちろんClaude Code作)で取得し、扱いやすいようにMarkdown形式のファイルに変換しました。

ファイルの特徴

各ファイルは以下のような共通の構造を持っています。

  • メタデータ: タイトル、著者、URLなどがファイルの先頭に記述されている。
  • プロフィールセクション: 本文中に 👤PROFILE という絵文字から始まる箇所があり、そこに対象者の経歴が書かれている。

このように、ある程度構造化されたテキストファイル群を対象に、AIがどこまで内容を理解できるかを試しました。

実験の方法

Claude Code に質問したあと「なぜ、その手法で探索したのか」聞いてみる、というシンプルな方法で実験しました。


実験1:記事からの名前抽出

まずは、複数のインタビュー記事から登場人物のフルネームを抽出してもらいました。

1回目の試行:的確なgrepで一発成功!

【依頼】
data/scraped_articles に登場している人をフルネームで教えてください。

【エージェントの思考プロセス】
エージェントはまず、記事のメタデータに author: フィールドがあると考えgrepを実行。しかし、会社名しか取得できず失敗。そこでエージェントは、以前の会話で記事を読んだ際の記憶を頼りに、👤PROFILE という絵文字付きのマーカーの後に名前が記載されているパターンを思い出します。

そして、次のコマンドを実行しました。

grep -h "^👤PROFILE" data/scraped_articles/*.md | sed 's/👤PROFILE//' | sort

この的確な grep により、見事に7名のフルネームを正確に抽出することに成功しました。

ポイント
以前の会話コンテキスト(短期記憶)を元に、ファイル構造を理解し、最適な検索パターンを導き出しています。まさに「エージェント的」な動きです。

2回目の試行:コンテキストなしだと…?

次に、会話履歴をクリアして、エージェントが「記憶」に頼れない状態で同じ依頼をしてみました。

【エージェントの思考プロセス】
エージェントは、今度は一般的な英語名にマッチしそうな正規表現で Search を実行します。

Search(pattern: "[A-Z][a-z]+ [A-Z][a-z]+", path: "tools/note-scraper/data/scraped_articles", output_mode: "content")

驚くべきことに、この正規表現でも偶然にも日本語の名前がいくつかヒットしました。しかし、エージェント自身もなぜヒットしたのか確信が持てていない様子で、その後の動きも少し迷走気味でした。

ポイント
コンテキストがない状態では、エージェントは手探りで一般的なパターンを試すしかありません。結果的に正解にたどり着いたものの、1回目のような的確さはなく、偶然の要素が強いことがわかります。


実験2:記事群から共通の価値観を抽出

次に、同じ記事群から登場人物たちに共通する文化や価値観を尋ねてみました。これは、単純なキーワード検索では難しく、記事全体の内容を深く理解する必要があるタスクです。

1回目の試行:読まずにサボる

【依頼】
これらの人物に共通する文化、哲学、価値観があれば教えてください。

【エージェントの回答】
エージェントは、以前得た断片的な情報だけで、それらしい回答を生成。根拠を尋ねると、「断片的な情報から推測で答えてしまった」と白状しました。追加の ReadSearch をしておらず、明らかにサボっています。

2回目の試行:全部読んでから回答

【依頼】
はい、お願いします!残りの記事をすべて読んで、より具体的な根拠に基づいた共通点を抽出してください。

【エージェントの思考プロセス】
明確な指示を受けると、エージェントは真面目に働き始め、残りの記事ファイルを一つずつ Read していきました。全ての記事を読了後、具体的な発言を根拠として引用しながら、非常に精度の高い共通点を抽出してくれました。

  • 小笠原さんへの深い信頼と共感
    • 根拠:「『この人と一緒にやるのは本当に面白い』という永田氏の発言」
  • 既存システムへの根本的な疑問と変革意志
    • 根拠:「『先生が前に立って講義するという形式は、何百年も前からほとんど変わっていない』という川原崎氏の発言」
  • 「ものづくり」への本質的な愛情
    • 根拠:「『元々"ものづくり"が好きで』という永田氏の発言」

ポイント
曖昧なタスクに対しては、最初は楽をしようとしますが(笑)、明確に指示すれば、全ての情報を読み込んで深い分析を行う能力があることがわかりました。


感想と考察:AIエージェント開発へのヒント

今回の実験の目的は、Claude Codeの思考プロセスを観察し、他の業務でAIエージェントを開発するためのヒントを得ることでした。

対話の途中で「なぜそうしたの?」とエージェントに尋ねた際の回答が、本当にその通りに思考しているのか、それとも後付けの説明(ハルシネーション)なのかは分かりません。それでも、エージェント自身の「内省」を聞くことは、彼らの能力の輪郭や、タスクを成功させるための条件を理解する上で、非常に有益でした。

そこから得られた最大のヒントは、「データクレンジング的な前処理の重要性」です。

  • 構造化と表記揺れのなさが鍵

    • 今回、単なるテキスト(.txt)ではなく、HTMLの構造をある程度反映させたMarkdown形式で記事を保存したことが、エージェントの理解を助けた可能性があります。インタビュー記事の 👤PROFILE のような明確な構造やパターンが存在したことで、エージェントはそれを足がかりに非常に効果的な検索を行えました。
  • コードのように「全文検索」の代わりにはならない

    • 逆に言えば、構造が曖昧で表記揺れが多い非構造化テキストに対しては、grepとglobを活用した Claude Code のAgentic Searchでは文脈を理解できずに的外れな検索をしてしまう可能性があります。

AIに高度な分析をさせるためには、やはり元となるデータの質が重要です。事前に情報を整理し、構造化しておくことで、Agentic Searchの能力を最大限に引き出せるのかもしれません。

結論として、Claude CodeのAgentic Searchは、現時点ではコーディングの文脈で最もその真価を発揮すると言えそうです。しかし、データの持ち方を工夫すれば、自然言語を扱う様々なタスクにも応用できる大きな可能性を秘めていると感じました。

今後の進化が非常に楽しみです!


私たちクロステック・マネジメントでは、 このようなAIエージェント技術を様々な分野に応用してく仲間を募集しています。
https://www.wantedly.com/projects/2090161
https://www.wantedly.com/projects/2142319
https://www.wantedly.com/projects/2141459

ご興味のある方はぜひご連絡ください!

クロステックマネジメント(京都芸術大学)

Discussion