VitestはどうやってAIコーディングエージェントを検出しているのか

最近、 Vitest の新しいバージョン4.1がリリースされました。

その中の特筆すべき機能として、AIコーディングエージェントのトークン使用量を減らすために最小限の出力にする Agent Reporter をリリースしました。

vitest.dev

vitest.dev

ドキュメントには以下のように書かれています

This reporter is automatically enabled when no reporters option is configured and Vitest detects it is running inside an AI coding agent.

レポーターオプションが設定されておらず、かつVitestがAIコーディングエージェント内で実行されていることを検出した場合、このレポーターは自動的に有効になります。

ここで言う、レポーターオプションとは --reporter=agent の変数だったり AI_AGENT=copilot のような環境変数のことです。これらのオプションを指定しなくても自動的に有効になるのはめちゃくちゃ便利です。

ですが、ここで疑問です。この機能はどうやってAIコーディングエージェントを検出しているのでしょうか?調査してみます。

std-env

ドキュメントを読むと検出には std-env が使われているようです。GitHub の README を見るとこのパッケージはAIコーディングエージェントのみならずランタイムや環境などの検出もできるようです。

github.com

そして、AIコーディングエージェントの検出は最近マージされた機能のようで以下のPRでマージされています。

github.com

実際にコードを見てみるとシンプルさにビックリします。どうやら、AIコーディングエージェントごとに固有の環境変数が設定されているようでこの値で判別しているようです。

github.com

例えば、 Claude Code なら CLAUDECODECLAUDE_CODE、Gemini なら GEMINI_CLI のような感じです。 面白いですね。

ちなみに

@vercel/detect-agent でも同じ実装をしているらしいです。コード見てみた感じいかにもそうですね。

github.com