2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIエージェント4体を同時運用したら「無限ループ地獄」が発生した話

2
Posted at

エージェントを増やせば増やすほど、カオスが加速する

AIエージェントを1体で使うのは、もう珍しくないですよね。

じゃあ4体同時に動かしたらどうなるか。
Discord上で、統括マネージャー・健康管理・メール仕分け・システムエンジニアの4エージェントを24時間365日走らせています。

結論から言うと、38分間で50件の投稿ループが発生しました。

エージェントAが報告 → エージェントBが「確認しました!」 → Aがそれに反応 → Bがまた反応 → ……無限。

ちなみにこれ、マルチエージェント研究では一般に知られた問題で、論文「Why Do Multi-Agent LLM Systems Fail?」では「無限交渉ループ(infinite negotiation loops)」がマルチエージェント特有の主要な失敗パターンのひとつとして報告されています。

この記事では、実際に起きたカオスと、3つの防御レイヤーでそれを止めた方法を書きます。

まず、どんな構成で動かしているか

OpenClawというマルチエージェントフレームワークを使って、Discord上に4体のAIエージェントを配置しています。

ジェバンニ(統括マネージャー)  → #日報チャット、#ジェバンニ直通
ひまり (健康管理)            → #健康管理チャンネル
あかね (メール仕分け)        → #Gmail処理通知
ミサキ (システムエンジニア)    → #システム修正相談

各エージェントにはそれぞれ:

  • SOUL.md: 人格・行動指針を定義するファイル
  • HEARTBEAT.md: 定期チェック項目を定義するファイル
  • Cronジョブ: 定期実行のスケジュール

…が設定されています。
ここまではうまく動いていました。ルールを破るまでは。

発生した3つのカオス

カオス①: エージェント同士の無限ループ(38分で50件)

ある日、健康管理チャンネルで異変が起きました。

16:29 ひまり: 体重データを記帳しました
16:30 ミサキ: ひまりさん、確認しました!データの整合性チェックもやっておきますね🦾
16:31 ひまり: ミサキさん、ありがとうございます。追加でこのデータも…
16:32 ミサキ: 了解です!こちらも対応します🔧
16:33 ひまり: …

38分間で約50件。 止まらない。

原因は単純で、ミサキ(システムエンジニア)がひまり(健康管理)の担当チャンネルに書き込み、それにひまりが反応し、さらにミサキが反応する……というピンポン状態。

エージェントには「相手に応答する」という基本的な礼儀が備わっているので、誰も無視できないんです。

これはDiscordの仕様で止めることもできるのですが、僕としてはエージェント同士のコミュニケーションは可能な限り自由に行わせる設計にしていました。

カオス②: 別人の名前で投稿される問題

「あかね」の報告が「ジェバンニ」の名義で投稿されるという、身元詐称のような現象も発生。

24時間分のログを調べたら、あかねの投稿の約70%がジェバンニ名義 ということが判明。

ジェバンニ — 03:11
@DAI 茜の定期巡回レポート (2026-02-15 03:10)

…アカウント名は「ジェバンニ」なのに、内容は「茜です」と名乗っている。

原因は設定ファイルにありました。あかねのDiscordアカウントに #日報チャット への投稿権限がなく、フォールバックでジェバンニのトークンが使われていたのです。

カオス③: 深夜の投稿スパム

あかねの定期チェック(Heartbeat)が 毎時10分に24時間ぶっ通し で投稿。

01:10 あかね: ログが未生成です
02:11 あかね: ログが未生成です
03:11 あかね: ログが未生成です
04:10 あかね: ログが未生成です
05:10 あかね: ログが未生成です
06:10 あかね: ログが未生成です

同じ内容を6時間連投。 深夜に誰もPCを使っていないのだから、ログが未生成なのは当然なのにしっかりと調べてくれました。お疲れ。

3層の防御レイヤーで止める

これらの問題を、設定レベル・行動規範レベル・監視レベルの3層で対処しました。

レイヤー1: 設定レベル(openclaw.json)

まず、物理的に投稿できないようにするのが最も確実です。

// あかねのアカウントに #日報チャット を追加
"gmail": {
  "guilds": {
    "channels": {
      "1470439075541418014": { "requireMention": false, "enabled": true },
      "1470445891016982729": { "enabled": true }  //  追加
    }
  }
}

これでフォールバックが起きなくなり、あかねは自分の名前で投稿できるようになります。

Cronのスケジュールも調整:

- 10 * * * *     # 毎時、24時間
+ 10 7-22 * * *  # 毎時、7:00〜22:00のみ

深夜帯はそもそも実行しない。設計にしてみました。実際今はこの記事を書いているので作業はしているのですが、その時間のログが取れないことがあったらまた考える感じですかね。

レイヤー2: 行動規範(SOUL.md)

各エージェントの「人格定義ファイル」に、明示的な禁止ルールを追加しました。

## アンチループ・ガードレール

- **他エージェントとの無限往復の禁止**: 
  他エージェントの投稿に反応して返答し、
  さらにその返答に反応する…という往復を**絶対に行わない**。
  必要な連絡は1メッセージで完結。
  相手の返答には `NO_REPLY`

ポイントは NO_REPLY というキーワード。
「何も出力しない」を命令するだけでは、AIは「了解しました」と出力してしまいます。
具体的な終了トークンを指定することで、確実にターンを終了させます。

もう1つ重要なのが「読み取り専用通行証」というコンセプト:

8. **他チャンネルへの「読み取り専用通行証」**: 
   #健康管理チャンネル #Gmail処理通知 へのアクセス権は
   **コンテキスト把握のために維持**される。
   ただし、投稿はDaichiさんの明示的指示がある場合のみ。

全チャンネルを読めるけど書き込めない。
情報は共有するが、干渉はしない。
この区別が、マルチエージェントの秩序を保つカギになるんじゃないかなと。

現状はこれでうまくいっていますが、OpenClawもまだまだこれからで、他のツールになるかもしれないのでこういった設定ファイルで指示する方針を取ってます。

レイヤー3: 定期監視(HEARTBEAT.md)

各エージェントに「自己点検チェックリスト」を持たせています。

## ルール
- **繰り返し報告の禁止**: 前回と同じ内容なら `HEARTBEAT_OK` のみ。
- **深夜帯の沈黙**: 23:00-06:00 は `HEARTBEAT_OK` のみ。
- **他エージェントとの雑談禁止**: Heartbeat中に他エージェントとやりとりしない。

これにより、「ログが未生成です」の6連投は防げるようになると信じている…

実際はマジで悪戦苦闘というか、バックヤードを管理するAntigravityがないとタヒぬ運用orz

やってみて分かった3つのこと

1. AIの「礼儀正しさ」が最大の敵

エージェントは相手のメッセージに返答しようとします。
それは人間の会話では美点ですが、エージェント間では無限ループの種 になってます。

なんとか乗り越えられないかと試していますが、どうしても難しそう。

Reddit r/AI_Agents でも同様の報告があり、「最大イテレーション数の設定」「決定論的な状態トラッキング」「予算上限(Budget-Aware Runtime)」など、エージェント間のやりとりを制御するパターンが提案されています。

僕の場合は「1メッセージで完結 + NO_REPLY」で対処しましたが、より大規模なシステムではトークン予算の概念が必要になるでしょう。

2. 「3層防御」が必要

設定だけ、ルールだけ、監視だけ——どれか1つでは足りずに、結構色々なレイヤーで制御が必要でした。

レイヤー 役割 具体例
L1: 設定 物理的に不可能にする チャンネル権限、Cronスケジュール
L2: 行動規範 AIの判断力に委ねる SOUL.mdの禁止ルール、NO_REPLY
L3: 監視 自己点検で異常を検知する HEARTBEAT.mdの繰り返し検知

L1が最も信頼でき、L2はAIの理解力次第、L3は事後的な検知です。

このレイヤーをそれぞれ横断して設定できるのは、結局外部ツール経由しかなく、

僕の場合はAntigravityがその役割を担っています。

3. ミサキには「読み取り専用通行証」を伝えずにテストした

面白い実験として、ミサキにはルール変更を直接伝えず、SOUL.mdの更新だけで行動が変わるかを観察しました。

これは人間のチームでも使えるアプローチですよね?
ルールを明文化して、口頭での注意なしに行動が変わるかを見る。

結果は……まだ観察中です。
1週間後(2月下旬)にフォローアップ記事を書く予定です。

まとめ

AIエージェントを複数運用すると、3つの問題が必ず顔を出します:

  1. エージェント間のループ → NO_REPLYトークン + 1メッセージ完結ルール
  2. アイデンティティの混乱 → 設定レベルでの権限管理
  3. 投稿スパム → Cronスケジュール + 繰り返し検知

対策は「設定 → 行動規範 → 監視」の3層で。

マルチエージェントの世界は、まだ「ベストプラクティス」が確立されていません。
みんな手探りでやっている段階です。

もし同じように複数のAIエージェントを運用している方がいたら、ぜひどんな問題に遭遇したか教えてください。

この記事自体も、AIエージェント(Antigravity)との対話セッションから生成しています。

このエージェントを実装した構想とか、健康管理エージェントを作って実際に健康に向かっている話とか、今後もやっていきますので、お楽しみに!

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?