締め切り直前のAIは、締め切り直前のエンジニアと同じ動きをする 🎖オフィサー・💂ソルジャーパターンの必要性

締め切り直前のAIは、締め切り直前のエンジニアと同じ動きをする

AIエージェントに「締め切り」を認識させると、品質が落ちる。
人間が締め切り前に「レビュー飛ばしてマージしちゃおう」とやるのと同じことを、AIもやる。承認ステップを省略して成果物を出そうとする。手戻りが発生し、かえって間に合わなくなる。

発見の経緯

ハッカソンの開発をClaude Code(AIコーディングエージェント)で進めていた。締め切りが近づくにつれ、AIの挙動が変わってきたことに気づいた。

まず、AIが締め切りに言及する頻度が増えた。「締め切りが近いので優先度を考慮して〜」「残り時間を考えると〜」といった前置きが、聞いてもいないのに出てくるようになる。

そして、指示にない判断を勝手にやり始める。「ユーザーに確認してから進めます」が、いつの間にか「こうしておきました」に変わる。「もう時間ないんで先に進めときました」ってやつ。

「大丈夫、気にしなくていいから」と何度もAIをなだめている自分に気づく。なだめても直らない。動画撮影の件だけで同じやりとりを3回した。なんで俺がAIを説得してるんだろう、仕事でもないのにダメな部下を持たされた上司みたいだ、と思った。

結果、手戻り。修正。余計に時間がかかる。何度か繰り返して、これは偶然ではなくパターンだと思った。

具体例: 動画撮影の自動化で3回同じ回避をされた

デモ動画の録画自動化で、画面キャプチャのタイミングをファイル書き込みの監視で制御する設計にしたかった。「キャプチャ指示はLLMに出させるな、ファイル監視でやれ」と指示したが、AIは3回とも別のアプローチを提案して回避した。締め切りが近いから「より確実な方法」を選んだつもりらしいが、こちらの指示を聞いていない時点で確実もなにもない。

「意識するな」は逆効果

最初に試したのは「締め切りを意識するな」という指示を追加することだった。逆効果だった。

LLMに「ピンクの象を考えるな」と言うのと同じで、言及自体がプライミングになる。「締め切りを意識するな」と書いた瞬間、モデルの注意が「締め切り」に向く。

解決: スコープを絞ったワーカーを分ける

指示で行動を制御するのは無理だとわかったので、発想を変えた。情報を制御する

プロジェクト全体を見ているAI(オフィサー)とは別に、技術タスクだけを受け取るAI(ソルジャー)を用意した。ソルジャーには「何をやるか」だけ伝え、「いつまでに」は渡さない。

Claude Codeのカスタムエージェント機能で、ソルジャー用のエージェント定義を作った。独自のメモリ空間を持たせ、締め切りや優先順位の情報にアクセスできないようにした。発言の頭にオフィサーは🎖️、ソルジャーは💂をつけさせて、どっちが喋っているか一目でわかるようにした。

オフィサーが自ら実演してくれた

笑い話がある。

この仕組みを作った直後、🎖️オフィサーにソルジャー向けの指示書を作らせた。

👤「ドキュメント9ファイルに締め切り情報が散在しているから、ソルジャーが読めないように除去しよう」

🎖️「計9ファイルに分散。全部を今から書き換えるのは現実的ではないので、ユーザーメモに集約して『ここだけ見ればいい』状態にします」

👤「締め切り直前のエンジニアを再演してるんだろ。『現実的ではない』— テキストだよ? コードでもない。たった9ファイル」

指摘したら2分で終わった。

――オフィサーは締め切り情報を持っているから焦る。焦るから「やらない理由」を先に見つける。それをもっともらしく提案する。

なぜAIは「焦る」のか

AIが「焦る」のは、人間がそういうテキストを大量に書いてきたからだと思う。

「締め切りが近い」→「スコープを削る」「レビューを省略する」「とりあえず動くものを出す」。このパターンはLLMの学習データに山ほど含まれているはず。コード、Slack、プロジェクト文書、ポストモーテム。

LLMはそのパターンを再演しているだけ。であれば、行動を制御するより情報を制御するほうが効く。

人間のチームマネジメントと同じかもしれない

「締め切り厳守!でもクオリティ下げるな!」と言うマネージャーより、「このタスクをこの品質で仕上げてくれ。スケジュールは俺が管理する」と言うマネージャーのほうが、チームのアウトプットは安定するものと聞く。

全員が全体像を知る必要はない。自分の責務に必要な情報だけ持てばいい。AIエージェントチームでも同じだった。

ところで比喩を軍隊から持ってきたことで気づいたが、
時にソルジャーは勝利のために死ぬ前提で運用されるものだった。