![[小ネタ] Claude Codeの@ファイル検索で曖昧検索をする方法](https://images.ctfassets.net/ct0aopd36mqt/3KBTm8tdpO9RJJuaVvVzod/a9964bb03097b448b2327edc6920bf9f/Claude.png?w=3840&fm=webp)
[小ネタ] Claude Codeの@ファイル検索で曖昧検索をする方法
はじめに
超小ネタです。Claude Codeでは立ち上げたプロジェクトで、@マークをつけてファイルを検索、指定が可能です。これはコードベースが大きくなってきたときや、モノレポでアプリやパッケージ同士のディレクトリが分かれているケースでコンテキストにファイルを明示的に指定する場合に重宝します。
@シンボル検索ははripgrepがnpmに格納されているソースの中に含まれているので、文字列一致による検索が可能ですが、曖昧検索をしたい人も多いと思います。
方法
Claude Codeはファイル提案設定をスクリプトへ変更することが可能です。
Configure a custom command for @ file path autocomplete. The built-in file suggestion uses fast filesystem traversal, but large monorepos may benefit from project-specific indexing such as a pre-built file index or custom tooling.
@ ファイルパスの自動補完のためにカスタムコマンドを設定します。組み込みのファイル補完機能は高速なファイルシステム探索を使用しますが、大規模なモノレポでは、事前に構築されたファイルインデックスやカスタムツールのようなプロジェクト固有のインデックス作成が役立つ場合があります。
Claude Code設定ファイルの追加箇所は以下の通りです。Hooks機能と似ています。Claude Codeが標準入力経由でJSONをシェルスクリプト側に渡して、ファイル候補を標準出力で返す形です。
"fileSuggestion": {
"type": "command",
"command": "~/dotfiles/home-manager/programs/claude/file-suggestion.sh"
},
曖昧検索といえばfzfなので、パイプで渡します。シェルスクリプトは以下のようになります。クエリを抽出して、Cloude Codeが起動しているプロジェクトへ遷移し、ファイル検索結果を標準出力へ返します。
#!/bin/bash
query=$(cat | jq -r '.query')
cd "$CLAUDE_PROJECT_DIR"
rg --files --hidden | fzf --filter="$query" | head -20
では部分一致検索と曖昧検索で結果を比較してみます。
部分一致検索結果

曖昧検索結果
home と gh がうまく曖昧に検索出来ており、ファイルがヒットしていることがわかります。

実際にコマンド実行した結果がClaude Codeの@シンボル検索に反映されていることがわかります。
$ rg --files --hidden | fzf --filter="home gh" | head -20
home-manager/programs/gh/default.nix
home-manager/programs/claude/commands/gemini-search.md
home-manager/home.nix
home-manager/programs/haskell/default.nix
home-manager/programs/claude/hooks/notify.ts
home-manager/programs/claude/hooks/format.ts
home-manager/programs/vhs/default.nix
home-manager/programs/zsh/.zshrc
home-manager/programs/zsh/default.nix
home-manager/programs/claude/file-suggestion.sh
home-manager/programs/mise/.default-python-packages
home-manager/programs/alacritty/catppuccin-mocha.toml
さいごに
ベクトル化して意味類似で検索してみても面白そうですね!







