ほとんどの人が認識する状況がある:職場のチームはSlackでコミュニケーションし、親しい友人はWhatsAppにいて、ゲームコミュニティはDiscordに住み、個人の連絡先はTelegramを好む。4つのアプリが開き、4つの通知ストリーム、管理する4つの別々のコンテキストになる。
AIアシスタントがそれらすべてで同時に動いたら——共有メモリで、TelegramでAIに伝えたことをDiscordで聞いたときに覚えている——どうだろう。1つのアシスタント、すでにいるすべての場所に。
それがZeroClawのマルチチャンネルアーキテクチャが可能にすることで、セットアップは思ったよりシンプルだ。
内部の仕組み
ZeroClawのチャンネルシステムはRustトレイトで構築されている。各チャンネル——Telegram、Discord、WhatsApp、Signal、Matrix、IRC——は同じインターフェースを実装する独立したアダプターだ。それらはすべて単一のAIプロバイダー接続、単一のメモリデータベース、単一の設定ファイル、1つのバイナリとして動く単一のプロセスを共有する。
実際的な結果は、TelegramでボットにAIに何かを伝えると、Discordで聞いたときに覚えているということだ。メモリはチャンネルに依存しない。ZeroClawは各メッセージがどのチャンネルから来たかのメタデータと共に会話を統一されたSQLiteデータベースに保存するが、検索はすべてのチャンネルにわたって機能する。コンテキストがついてくる。
Telegramのセットアップ
TelegramでBotFatherにメッセージを送って新しいボットを作成し、トークンを取得する。次にuserinfobot にメッセージを送ってユーザーIDを取得する。設定に追加:
```toml [channels.telegram] token = "123456:ABCdefGHIjklMNO" allowed_users = [your_user_id] ```
`allowed_users`リストは重要——あなた(または指定した人)だけがボットとやり取りできることを保証する。
Discordのセットアップ
discord.com/developersに行き、アプリケーションを作成し、ボットを追加し、トークンをコピーする。ボット設定でMessage Content Intentを有効にする——これなしではボットはメッセージを読めない。OAuth2 URLジェネレーターを使ってボットをサーバーに招待する。
```toml [channels.discord] token = "MTk4NjIz..." guild_ids = [your_server_id] allowed_roles = ["ai-users"] ```
`allowed_roles`フィールドはどのDiscordユーザーがボットとやり取りできるかを制限できる——共有サーバーに追加する場合に便利だ。
WhatsAppのセットアップ
ZeroClawは特別なAPIアクセスなしで動くWhatsApp Webブリッジを使う:
```toml [channels.whatsapp] enabled = true allowed_numbers = ["+1234567890"] ```
最初の起動時、ZeroClawはターミナルにQRコードを表示する。スマートフォンのWhatsAppでスキャンしてペアリングする。その後、自動的に接続を維持する。
すべてを起動する
```bash zeroclaw start ```
1つのコマンド。3つのチャンネルが同時に接続する:
``` [INFO] Telegram channel connected [INFO] Discord channel connected (1 guild) [INFO] WhatsApp channel paired [INFO] ZeroClaw ready — 3 channels active ```
実際の共有メモリ
クロスチャンネルメモリは、単に技術的に面白いだけでなく本当に便利にする機能だ。実際の様子:
Telegramでメッセージを送る: > 「プロジェクトの締め切りが3月15日だと覚えておいて」 > 「了解です——プロジェクトの締め切りは3月15日ですね。」
後で、Discordで: > 「締め切りはいつ?」 > 「先ほどおっしゃっていたように、プロジェクトの締め切りは3月15日です。」
ボットは再度伝える必要がなかった。同じチャンネルにいる必要もなかった。メモリはZeroClawインスタンス全体で共有されている。
チャンネルごとの動作調整
プラットフォームによって慣習が異なる。Discordユーザーはマークダウン形式と簡潔なレスポンスを期待する。WhatsAppの会話はよりカジュアルでマークダウンをレンダリングしない。Telegramはより長く詳細な返信をサポートする。ZeroClawはチャンネルごとに動作を調整できる:
```toml [channels.discord] token = "..." system_prompt_append = "You are in a Discord server. Keep responses concise. Use markdown formatting." max_response_length = 1500
[channels.telegram] token = "..." system_prompt_append = "You are in a private Telegram chat. Be conversational and detailed." max_response_length = 4000
[channels.whatsapp] enabled = true system_prompt_append = "You are on WhatsApp. Keep responses short — no markdown, plain text only." max_response_length = 500 ```
同じAI、同じメモリ、プラットフォームごとに異なるパーソナリティ。
アクセスコントロール
ボットが複数のチャンネルでアクセス可能な場合、アクセスコントロールが重要だ。ZeroClawはチャンネルごとのコントロールを提供する:
```toml [channels.telegram.permissions] tools = ["web_search", "file_read", "file_write"]
[channels.discord.permissions] tools = ["web_search"] # 公開サーバーでは読み取り専用 ```
プライベートTelegramチャットにはフルツールアクセスを許可しながら、Discordボットをウェブ検索のみに制限できる。権限はユーザーレベルではなくチャンネルレベルで強制される。
さらにチャンネルを追加する
ZeroClawは30以上のチャンネルをサポートする。別のチャンネルを追加するのは設定を追加するだけ:
```toml [channels.slack] token = "xoxb-..." channels = ["C01234567"]
[channels.signal] enabled = true phone_number = "+1234567890"
[channels.matrix] homeserver = "https://matrix.org" username = "@zeroclaw:matrix.org" password = "..." ```
追加のチャンネルごとに約0.5MBのRAMが追加される。10チャンネルを同時に動かしても合計10MB未満だ。
大きな絵
マルチチャンネルセットアップは本物の問題を解決する:人生は1つのアプリで起きるわけではなく、AIアシスタントもそうであるべきではない。1つのバイナリ、1つの設定ファイル、1つのメモリデータベース、そしてアシスタントは使っているすべての会話プラットフォームに存在する——すべてのチャンネルにわたってコンテキストを覚えながら、単一のブラウザタブより少ないRAMを使って。
マイクロサービスなし。メッセージキューなし。コンテナオーケストレーションなし。30の異なるチャットプロトコルを話す単一のプロセスだけ。