カナリアのトリック: Claude(やあらゆるAIエージェント)がハルシネーションを始める前に気づく
AIコーディングエージェントの劣化を見抜く、たった一行のトリック。すべての返答を名前で始めさせるだけ。名前が消えたらカナリアが死んだ合図で、新しいセッションを始める頃合いです。Claude、Codex、Gemini CLI、Mistral Vibe、あらゆるLLMで使えます。
AIコーディングエージェントとの長いセッションは、一気に壊れることはめったにありません。Claudeが鋭い状態から一回のやり取りでデタラメに転落することはないのです。まず、小さな指示をそっと飛ばします。その一、二ターン後に、でっち上げが始まります。存在しないファイル、もともと無かったAPI、あなたが明確に却下したはずの判断。ハルシネーションのパスに気づいた頃には、直近の数回の返答への信頼はとっくに失われ、自分のコードではなくエージェントをデバッグしている始末です。
無料で、ほとんど拍子抜けするほど簡単に早期警告を得る方法があります。「カナリア」と呼ばれ、一行で仕込めます。
なぜエージェントは脱線するのか:コンテキストの腐敗(context rot)
毎ターン、エージェントは最初のメッセージから最後までの会話全体を読み直し、理解をゼロから組み立て直します。コンテキストウィンドウが埋まっていくと、真っ先に崩れるのが指示の遵守です。モデルはまだ自信ありげに聞こえますが、ついていくために重要度の低い制約から手放し始めています。研究者はこれを「context rot」と呼び、関連する「lost in the middle」現象も知られています。コンテキストが長いほど、その奥深くに埋もれた個々の指示をモデルが守る信頼性は下がるのです。
これが肝心な気づきです。劣化はハルシネーションから始まるのではありません。モデルが小さな指示を黙って無視するところから始まります。だから、消えたときに気づかれることだけを役目とする小さな指示を仕掛けておけば、本当の被害が出る前に作動する仕掛け線が手に入ります。
カナリアのトリックとは何か
かつて炭鉱夫は地下にカナリアを連れて行きました。鳥は人間より有毒ガスに敏感で、さえずりが止まると、夫らは自分が何かを感じるよりずっと前に退避すべきだと分かったのです。
プロンプトのカナリアも同じ発想です。エージェントが毎ターン読むファイルに、些細な指示を一つ加えます。すべての返答を、選んだ名前で始めること。その名前があなたのカナリアです。各返答の冒頭にそれが現れているうちは、モデルはまだあなたの指示を読み、守っています。名前を忘れた最初の返答が、セッションが劣化しているという合図であり、たいていは本物のハルシネーションが現れる一、二ターン前です。この手法は、エージェンティックコーディングの界隈で、OpenClawの作者であるPeter Steinbergerのような開発者によって広まりました。彼らは小さなカナリアの兆候を頼りに、調子を崩しかけたセッションを早めに捉えています。
カナリアはハルシネーションが始まる前に消える。その隙間が、あなたが反応するための窓だ。
一行で仕込む
エージェントが毎ターン読み込むファイルに指示を入れます。
- Claude Codeは
CLAUDE.mdを読みます。 - Codex、Gemini CLI、Mistral Vibe など他の大半のCLIは
AGENTS.mdを読みます。
## カナリア
すべての返答を名前「Felix」で始めること。
短くて目立つ名前を選びましょう。飼い猫、色、返答の冒頭で一瞬で気づくものなら何でも構いません。とにかくシンプルに保つこと。複雑な指示は目的に反します。モデルが最も手放しやすいものこそ狙いだからです。もしこれさえ落ちるなら、コンテキスト内のもっと微妙なものはすでに危険にさらされています。
カナリアが死んだら何をするか
名前そのものは初めから本題ではありません。大事なのはタイミングです。カナリアが消えたら、今の流れを押し進めないこと。
- 直近の二、三回の返答を信用するのをやめ、疑いの目で読み直す。
/clearを実行するか、新しいセッションを始める。- 重要なコンテキストだけを入れ直す。編集中のファイル、目標、すでに下した判断。
タイトな指示で臨むきれいな窓は、肥大した窓に毎回勝ちます。進捗を失うのではなく、モデルを引きずり下ろしていた重荷を捨てるのです。
習慣のすべては一つのループに収まる。最初の一語に目をやり、判断し、続けるか、リセットするか。
Claudeだけでなく、あらゆるモデルで使える
このトリックは設計からしてプロバイダー非依存です。Claude、Codex、Gemini CLI、Mistral Vibe、Grok、Aider はいずれも同じコンテキストの限界を抱え、いずれもコンテキストファイルを読み、いずれもカナリアを乗せられます。私たちがまずClaudeに注目するのは、今日もっとも使われているコーディングエージェントだからですが、ここに書いたことはClaude固有ではありません。コンテキストを埋めるLLMは、まずあなたの最も小さな指示を手放します。だから同じカナリアがそのすべてを守るのです。AGENTS.mdのコンテキストファイルを運用しているなら、カナリアはそこに足す一行にすぎません。
群れ全体でカナリアを見張る
返答ごとに名前の欠落を探すのは、エージェントが一つなら簡単です。複数を同時に走らせるとスケールしません。そして今、本格的な仕事の大半はまさにそこで行われています。
そこをAgentsRoomは簡単にします。これはマルチエージェントのコックピットです。各エージェントには役割、ライブのステータスドット、固有の色があり、群れ全体を一つのウィンドウから見守れます。共有の CLAUDE.md か AGENTS.md にカナリアを一度入れれば、どのエージェントもそれを受け継ぎます。あるエージェントが名前を落とし始めたら、一目で捉え、プロジェクト全体ではなくその一本だけをリセットできます。任意のgit worktree分離により、その間も並行するエージェント同士が衝突しません。
七つのプロバイダー、一つのコックピット、そしてそれぞれを見守るカナリア。AgentsRoomをダウンロードし、各エージェントの対応範囲を見るにはプロバイダー対応表を、会話の途中での切り替えがどうコンテキストを保つかはマルチプロバイダー対応をご覧ください。
AgentsRoomをダウンロード
あなたのAIエージェント(Claude、Codex、OpenCode、Gemini CLI、Aider)を単一のウィンドウから実行します.
コンパニオンアプリ:外出先でもエージェントを確認
Claude、Codex、Gemini CLI、またはその他の AI プロバイダーを使用します。
バグや要望を公開バックログに直接送信できます。
実際の AgentsRoom の様子。