うちの経営ダッシュボードには、チャットAIが住んでいる。

数字の確認もタスクの操作も、このチャットに話しかければ済む。そして改修依頼——「この画面にグラフ足して」——も同じチャットに投げると、AI自身がダッシュボードのコードを書き換える。

ここに構造的な罠がある。そのAIは、ダッシュボードのWebサーバー(Next.js)の中で動いている。 つまり自分でビルドしてサーバーを再起動すると、親プロセスごと自分が死ぬ。会話のターンは中断し、「直しました、再起動します」の直後に無言になる。文字通りの自殺だ。

初期は実際にこれをやっていた。修正は反映されるのに完了報告が来ないので、毎回こちらから「状況は?」と聞く羽目になる。反映されたのか失敗したのか、本人はもういないから分からない。

解決の骨子はシンプルで、ビルドと再起動をOS側(launchd)の別ジョブに切り出した

AIがやることは「リビルドをトリガーする」コマンドを打って即終了するだけ。実際のビルド→検証→再起動は、切り離された別プロセスが担う。そのプロセス自身はOS管理なので、ダッシュボードが再起動しても巻き添えにならない。進行状態はJSONファイルに書き出し、ダッシュボードのUI上部のバナーが数秒間隔でポーリングして「更新中→再起動中→反映完了」を表示し、完了したら画面を自動リフレッシュする。ビルド中に新しい変更が来たら並列ビルドせず、最新1件だけをキューして合流させる。

これで「AIが自分を更新する」は一応成立した。

でも、運用してみると全然足りなかった。ここから安全装置が4つ増えることになる。全部、実際に壊れたから増えた装置だ。