OpenClawSkills
GitHub
コア概念 • 5分で読める

グループチャット

グループ挙動:メンション制御、グループコンテキスト注入、allowlist、ルーティング。

OpenClawのグループチャットモデルは:デフォルトで公開ルームで「常時オン」にしないことです。ほとんどのチャンネルはデフォルトで@mention(またはmention patternsの一致)を必要とし、グループ会話は独立したsession keyを使用して、DMのメインセッションを汚染することを防ぎます。

これにより大幅に削減されます:

- ノイズ(ボットの割り込み)

- prompt injection攻撃面(見知らぬ人がボットをツールとして使用できる)

- 多人数会話のコンテキストの混乱

Tutorial.step

Session Isolation

グループチャットは独立したsession keysを使用します。例:

- WhatsApp: ''agent:<agentId>:whatsapp:group:<jid>''

- Telegram: ''agent:<agentId>:telegram:group:<chatId>'' (topics append '':topic:<threadId>'')

- Discord: ''agent:<agentId>:discord:channel:<channelId>'' (threads append '':thread:<threadId>'')

- Slack: ''agent:<agentId>:slack:channel:<channelId>''

DMはデフォルトでagentのmain sessionに折りたたまれます(''/concepts/session''を参照)。

Tutorial.step

Mention Gating

デフォルト戦略:OpenClawはグループで言及された場合のみagent runをトリガーします。

トリガーソース(チャンネル機能により異なります):

- ネイティブmentions(Telegram/Discord/Slack/WhatsAppの一部のシナリオ)

- ''messages.groupChat.mentionPatterns''(グローバル)

- ''agents.list[].groupChat.mentionPatterns''(agentごとのオーバーライド)

グループでmention gatingがメッセージをブロックした場合、OpenClawはそれをpending history buffer(以下を参照)に配置し、次回のトリガー時に最近のメッセージをコンテキストとして注入します。

グループごとにrequireMentionを無効にできます(そのグループをalways-onにする):

- Telegram: ''channels.telegram.groups.<chatId>.requireMention=false''

- WhatsApp: ''channels.whatsapp.groups.<jid>.requireMention=false''

- Discord: ''channels.discord.guilds.<guildId>.channels.<channel>.requireMention=false''

- Slack: ''channels.slack.channels.<channel>.requireMention=false''

セキュリティのヒント:「見知らぬ人がいる可能性がある」ルームでは、''requireMention=true''を維持してください。

Tutorial.step

グループAllowlists

allowlistの形式はチャンネルによって異なりますが、原則は一貫しています:''groups/guilds/channels''を明示的に設定し始めると、通常はallowlistになります。

- Telegram:

- ''channels.telegram.groups''を書かない:すべてのグループを許可(その後、mention gatingがトリガーするかどうかを決定します)。

- ''channels.telegram.groups''を書く:リストされたグループまたは''"*"''のみを許可します。

- WhatsApp:

- ''channels.whatsapp.groups''はグループallowlistです(''"*"''を使用してすべてのグループを許可します)。

- Discord:

- ''channels.discord.guilds''はguild allowlistです。guild内で''channels''が定義されている場合、そのguildはリストされたチャンネルのみを許可します。

- Slack:

- ''channels.slack.groupPolicy'' + ''channels.slack.channels''がchannel allowlistを制御します。

Tutorial.step

グループで誰がトリガーできるか

多くのチャンネルには2層のグループアクセス制御があります:

- どのグループ/チャンネルが許可されているか(上記のallowlist)

- ''許可されたグループで、どの送信者がトリガーできるか''(''groupPolicy'' + ''groupAllowFrom''またはルームごとの''users'')

Telegramの例:

Json5
{
  channels: {
    telegram: {
      groupPolicy: "allowlist",
      groupAllowFrom: ["123456789"],
      groups: {
        "-1001234567890": { requireMention: true }
      }
    }
  }
}

''groupPolicy="allowlist"''で''groupAllowFrom''がない場合、デフォルトでブロックされます(fail-closed)。

Tutorial.step

グループ履歴コンテキスト注入

グループメッセージが返信をトリガーしない場合(mentionなし/allowlistによってブロック)、OpenClawはこれらのメッセージをpendingとして保存し、次回のトリガー時にpromptに注入します:

Terminal
[Chat messages since your last reply - for context]
...
[/Chat messages since your last reply - for context]

[Current message - respond to this]
...
[/Current message - respond to this]

重要な特性:

- pending-only:「最後の返信後だが処理されていない」メッセージのみを注入します。

- transcriptに書き込まれたメッセージを再注入しません。

- 現在のメッセージはdirective strippingを受けます。履歴ブロックは変更されません。

Limits:

- グローバル:''messages.groupChat.historyLimit''

- チャンネルオーバーライド:''channels.telegram.historyLimit'' / ''channels.slack.historyLimit'' / ''channels.whatsapp.historyLimit''など

- ''0''に設定して無効にします。

Tutorial.step

Activation

一部のチャンネルは''/activation''コマンドをサポートしています(現在のセッションにのみ影響):

- ''/activation mention'':mentionが必要(デフォルト)

- ''/activation always'':すべてのメッセージに返信

Notes:

- このコマンドは通常、認証された送信者(owner/allowlist)に対してのみ機能します。

Tutorial.step

マルチエージェントグループルーティング

グループメッセージはモデルに「誰が返信するかを決定」させません。代わりに、決定論的ルーティングは''bindings''を通じて行われます。

一般的な戦略:

- 「1グループ1エージェント」:''bindings''で、''peer.kind="group"'' + ''peer.id''で特定のエージェントを指します。

- 「チャンネルアカウントごとにエージェントを割り当て」:''accountId''で一致します。

- 「ブロードキャストグループ」:同じトリガーメッセージが複数のエージェントを実行します(''/broadcast-groups''を参照)。

Tutorial.step

一般的な落とし穴

- ''requireMention=false''を設定したがまだ返信しない:ほとんどの場合、''groupPolicy="allowlist"''で''groupAllowFrom'' / グループallowlistが設定されていません。

- Discord:''requireMention''は''channels.discord.guilds''または特定のチャンネルの下に記述する必要があります。トップレベルの''channels.discord.requireMention''は無視されます。

- Telegram:BotFatherプライバシーモードを無効にした後、設定を有効にするには、ボットをグループから削除して再追加する必要があります。

Tutorial.step

さらに読む