この記事は、AIエージェントの運用に関する事故録シリーズの1本である。自社が運用する、探索型ゲームを遊ぶAIキャラクターの運用記録から、一時的な理由で「通れない」と学習した情報が蓄積し、本来通れる経路そのものを塞いでしまった事故を検証する。
この記事で分かること
- 「押しても動かなかった」という記録がどのように「壁」として固定化されたか
- なぜ必須の通り道ほど誤って塞がれやすいのか
- 予防と修復、両方の具体的な対策
この記事で分からないこと(正直に書く)
- 同種の学習機構が、この記事で扱った箇所以外にどれだけ残っているか
何をした/何が起きた
ある区画で移動先を追加したところ、狭い通り道の手前で1フレームごとの往復が131回続き、先へ進めなくなった。仕様から起こした通行可能性の表では、その通り道は明らかに通れることになっていた(出所: 自社の運用記録、確認日2026-09-06)。
調べると、「押しても動かなかった」と判定される理由は、通行不可能な壁だけではなく、少なくとも3種類あることが分かった。1つは会話用の画面が開いている場合、1つはある種の演出が始まった場合、そしてもう1つは、通らざるを得ない位置で他のキャラクターの視線に入ってしまった場合である。
3つ目が今回の原因だった。この通り道は幅が狭く、複数のキャラクターが左右から交互に視線を向けているため、通過する際に誰かの視線に入ってしまう。その数フレームは押しても動かないため「通れない」として記録され、蓄積した結果、本来通れる通り道が表のうえで完全に塞がれてしまった。通り道が塞がると、最終手段として実際には歩けない経路を返す処理に落ち、一歩ごとに違う方向を提示するため、同じ8マスを回り続けていた。同じ型の問題は、渡れる境界を判定する別の表にもあった。会話画面を閉じるための入力までもが「渡れなかった」に数えられてしまうため、実際には何度も渡っている境界が誤って通行不可として扱われていた。
なぜ気づけなかったか
「押しても動かなかった」という記録を、原因を区別せずにそのまま「壁」として蓄積する設計だったため、一時的な理由による記録と恒久的な壁による記録を見分ける手段がなかった。しかも、一時的な理由(視線)は通らなければならない狭い通り道ほど頻繁に発生するため、最も重要な経路から優先的に塞がれるという、直感に反した壊れ方をした。原因が否定的な情報の蓄積にあると気づくまで、経路計算そのものを疑い続けていた。
どう直したか
予防策として、演出や会話画面の開始が確認できたタイミングでは、直近の「通れなかった」という記録を取り消すようにした。演出や会話が始まったなら、それは壁が原因ではないと判断できるためである。
修復策として、読み込み時に、仕様上は通行可能で、かつ固定された障害物もない位置に付いている「通れない」の記録を破棄するようにした。加えて、実際に歩けた経路の実測データを、仕様の表よりも優先して採用する仕組みを設けた。この結果、同じ保存状態・同じ経路で、到達に30,000フレームかかっていたものが4,031フレームに短縮し、往復回数も131回から6回に減った(出所: 自社の運用記録、確認日2026-09-06)。
さらに検証すると、この否定的な学習は読み込み時に一度掃除しても、セッション中に再び蓄積することが分かった。移動する他のキャラクターがいる区画では、通り道が数分単位で1本ずつ消えていく。そこで、一定回数以上「通れない」と記録された経路は消去するのではなく、通行コストを大きく引き上げる方式に変更し、避けはするが行き止まりを作らないようにした。
再発防止の具体的な手順
- 否定的な学習(「通れない」という記録)には、それが本当に壁によるものかを判定する門番を設ける
- 演出や会話画面の開始が確認できたら、直近の否定的な記録を取り消す
- 否定的な記録には上限を設けるか、蓄積するほどコストが上がる方式にし、無条件に増やし続けない
- 仕様上の表と実際に歩けた実測データが食い違った場合は、実測を優先して上書きする
- 同じ種類の停止が複数回発生した場所では否定的な記録そのものを疑い、原因を壁以外にも広げて確認する
処理そのものが死んでいたのに正常に見えた別の事故(処理が止まっているのに正常に見えた記事)と同じ運用記録からは、一晩の複数の停止が同じ構造に由来していた事例(一晩で直した4つの停止が同じ形をしていた記事)も見つかっている。批評だけでは判断の誤りを防げないという点は、判断批評がすべて失敗した記事とも通じる。
自社が運用するAIエージェントの経路探索・学習設計について相談したい場合は、お問い合わせから編集部まで連絡してほしい。
よくある質問
Q1. なぜ通れるはずの通り道が塞がれてしまったのか
通行不可の記録を蓄積する仕組みが、視線などの一時的な理由による「動かなかった」と、恒久的な壁による「動かなかった」を区別していなかったため。
Q2. なぜ必須の通り道ほど塞がれやすいのか
一時的な理由(視線など)は、通らなければならない狭い場所ほど頻繁に発生する。結果として、最も重要な経路から優先的に否定的な記録が蓄積した。
Q3. 対策の効果はどの程度だったか
同じ保存状態・同じ経路で、到達フレーム数が30,000から4,031に短縮し、同じ通り道での往復回数は131回から6回に減った。
Q4. 読み込み時に一度直せば十分か
不十分だった。移動する他のキャラクターがいる区画では、セッション中に否定的な記録が再び蓄積するため、記録を消去する方式から、蓄積するほどコストが上がる方式に変更した。