最近、 Vitest の新しいバージョン4.1がリリースされました。
その中の特筆すべき機能として、AIコーディングエージェントのトークン使用量を減らすために最小限の出力にする Agent Reporter をリリースしました。
ドキュメントには以下のように書かれています
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コーディングエージェントのみならずランタイムや環境などの検出もできるようです。
そして、AIコーディングエージェントの検出は最近マージされた機能のようで以下のPRでマージされています。
実際にコードを見てみるとシンプルさにビックリします。どうやら、AIコーディングエージェントごとに固有の環境変数が設定されているようでこの値で判別しているようです。
例えば、 Claude Code なら CLAUDECODE や CLAUDE_CODE、Gemini なら GEMINI_CLI のような感じです。
面白いですね。
ちなみに
@vercel/detect-agent でも同じ実装をしているらしいです。コード見てみた感じいかにもそうですね。