Запускайте кілька ізольованих агентів — кожен із власним робочим простором, каталогом стану (Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
agentDir) та історією сесій — а також кілька облікових записів каналів (наприклад, два WhatsApp) в одному запущеному Gateway. Вхідні повідомлення маршрутизуються до потрібного агента через прив’язки.
Агент тут — це повна область окремої персони: файли робочого простору, профілі автентифікації, реєстр моделей і сховище сесій. agentDir — це каталог стану на диску, який містить цю конфігурацію для кожного агента за шляхом ~/.openclaw/agents/<agentId>/. Прив’язка зіставляє обліковий запис каналу (наприклад, робочий простір Slack або номер WhatsApp) з одним із цих агентів.
Що таке «один агент»?
Агент — це повністю ізольований «мозок» із власними:- Робочим простором (файли, AGENTS.md/SOUL.md/USER.md, локальні нотатки, правила персони).
- Каталогом стану (
agentDir) для профілів автентифікації, реєстру моделей і конфігурації для кожного агента. - Сховищем сесій (історія чатів + стан маршрутизації) у
~/.openclaw/agents/<agentId>/sessions.
sessions_history і тут є безпечнішим шляхом пригадування між сесіями: він повертає обмежене, очищене представлення, а не сирий дамп стенограми. Пригадування асистента видаляє теги мислення, каркас <relevant-memories>, XML-навантаження викликів інструментів у простому тексті (зокрема <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, <function_calls>...</function_calls> і обрізані блоки викликів інструментів), понижений каркас викликів інструментів, витіклі ASCII/повноширинні керівні токени моделі та некоректний XML викликів інструментів MiniMax перед редагуванням/обрізанням.~/.openclaw/skills, а потім фільтруються за ефективним allowlist Skills агента, якщо його налаштовано. Використовуйте agents.defaults.skills для спільної бази та agents.list[].skills для заміни на рівні агента. Див. Skills: на рівні агента чи спільні і Skills: allowlist Skills агента.
Gateway може розміщувати одного агента (стандартно) або багатьох агентів поруч.
Нотатка про робочий простір: робочий простір кожного агента є стандартним cwd, а не жорсткою пісочницею. Відносні шляхи розв’язуються всередині робочого простору, але абсолютні шляхи можуть діставатися інших місць хоста, якщо пісочницю не ввімкнено. Див. Пісочниця.
Шляхи (швидка мапа)
- Конфігурація:
~/.openclaw/openclaw.json(абоOPENCLAW_CONFIG_PATH) - Каталог стану:
~/.openclaw(абоOPENCLAW_STATE_DIR) - Робочий простір:
~/.openclaw/workspace(або~/.openclaw/workspace-<agentId>) - Каталог агента:
~/.openclaw/agents/<agentId>/agent(абоagents.list[].agentDir) - Сесії:
~/.openclaw/agents/<agentId>/sessions
Режим одного агента (стандартно)
Якщо ви нічого не змінюєте, OpenClaw запускає одного агента:agentIdстандартно має значенняmain.- Сесії ключуються як
agent:main:<mainKey>. - Робочий простір стандартно має шлях
~/.openclaw/workspace(або~/.openclaw/workspace-<profile>, коли встановленоOPENCLAW_PROFILE). - Стан стандартно має шлях
~/.openclaw/agents/main/agent.
Помічник агента
Використайте майстер агентів, щоб додати нового ізольованого агента:bindings (або дозвольте майстру зробити це), щоб маршрутизувати вхідні повідомлення.
Перевірте за допомогою:
Швидкий старт
Create each agent workspace
Використайте майстер або створіть робочі простори вручну:Кожен агент отримує власний робочий простір із
SOUL.md, AGENTS.md і необов’язковим USER.md, а також окремий agentDir і сховище сесій у ~/.openclaw/agents/<agentId>.Create channel accounts
Створіть один обліковий запис на агента у вибраних каналах:Див. посібники каналів: Discord, Telegram, WhatsApp.
- Discord: один бот на агента, увімкніть Message Content Intent, скопіюйте кожен токен.
- Telegram: один бот на агента через BotFather, скопіюйте кожен токен.
- WhatsApp: прив’яжіть кожен номер телефону для кожного облікового запису.
Add agents, accounts, and bindings
Додайте агентів у
agents.list, облікові записи каналів у channels.<channel>.accounts і з’єднайте їх за допомогою bindings (приклади нижче).Кілька агентів = кілька людей, кілька особистостей
З кількома агентами коженagentId стає повністю ізольованою персоною:
- Різні номери телефонів/облікові записи (для кожного каналу
accountId). - Різні особистості (файли робочого простору для кожного агента, як-от
AGENTS.mdіSOUL.md). - Окрема автентифікація + сесії (без перетину, якщо його явно не ввімкнено).
Пошук QMD-пам’яті між агентами
Якщо один агент має шукати в стенограмах QMD-сесій іншого агента, додайте додаткові колекції вagents.list[].memorySearch.qmd.extraCollections. Використовуйте agents.defaults.memorySearch.qmd.extraCollections лише тоді, коли кожен агент має успадковувати ті самі спільні колекції стенограм.
Один номер WhatsApp, кілька людей (розділення DM)
Ви можете маршрутизувати різні DM WhatsApp до різних агентів, залишаючись на одному обліковому записі WhatsApp. Зіставляйте за відправником E.164 (наприклад,+15551234567) з peer.kind: "direct". Відповіді все одно надходять із того самого номера WhatsApp (без окремої ідентичності відправника для кожного агента).
Прямі чати згортаються до основного ключа сесії агента, тому справжня ізоляція потребує одного агента на людину.
- Контроль доступу DM є глобальним для облікового запису WhatsApp (сполучення/allowlist), а не для кожного агента.
- Для спільних груп прив’яжіть групу до одного агента або використовуйте групи розсилання.
Правила маршрутизації (як повідомлення вибирають агента)
Прив’язки є детермінованими, і найспецифічніша перемагає:Tie-breaking and AND semantics
Tie-breaking and AND semantics
- Якщо кілька прив’язок збігаються на тому самому рівні, перемагає перша в порядку конфігурації.
- Якщо прив’язка задає кілька полів збігу (наприклад,
peer+guildId), потрібні всі указані поля (семантикаAND).
Account-scope detail
Account-scope detail
- Прив’язка, яка пропускає
accountId, збігається лише зі стандартним обліковим записом. - Використовуйте
accountId: "*"для резервного варіанта на весь канал для всіх облікових записів. - Якщо пізніше ви додасте ту саму прив’язку для того самого агента з явним ідентифікатором облікового запису, OpenClaw оновить наявну прив’язку лише на рівні каналу до обмеженої обліковим записом, а не дублюватиме її.
Кілька облікових записів / номерів телефонів
Канали, що підтримують кілька облікових записів (наприклад, WhatsApp), використовуютьaccountId для ідентифікації кожного входу. Кожен accountId можна маршрутизувати до іншого агента, тож один сервер може розміщувати кілька номерів телефонів без змішування сесій.
Якщо вам потрібен стандартний обліковий запис на рівні каналу, коли accountId пропущено, задайте channels.<channel>.defaultAccount (необов’язково). Якщо його не задано, OpenClaw повертається до default, якщо він є, інакше до першого налаштованого ідентифікатора облікового запису (відсортовано).
Поширені канали, що підтримують цей шаблон, включають:
whatsapp,telegram,discord,slack,signal,imessageirc,line,googlechat,mattermost,matrix,nextcloud-talkzalo,zalouser,nostr,feishu
Поняття
agentId: один «мозок» (робочий простір, автентифікація для кожного агента, сховище сесій для кожного агента).accountId: один екземпляр облікового запису каналу (наприклад, обліковий запис WhatsApp"personal"проти"biz").binding: маршрутизує вхідні повідомлення доagentIdза(channel, accountId, peer)і необов’язково ідентифікаторами гільдії/команди.- Прямі чати згортаються до
agent:<agentId>:<mainKey>(«main» для кожного агента;session.mainKey).
Приклади платформ
Discord bots per agent
Discord bots per agent
Кожен обліковий запис бота Discord зіставляється з унікальним
accountId. Прив’яжіть кожен обліковий запис до агента й зберігайте allowlist окремо для кожного бота.- Запросіть кожного бота до гільдії та ввімкніть Message Content Intent.
- Токени зберігаються в
channels.discord.accounts.<id>.token(обліковий запис за замовчуванням може використовуватиDISCORD_BOT_TOKEN).
Боти Telegram для кожного агента
Боти Telegram для кожного агента
- Створіть по одному боту для кожного агента через BotFather і скопіюйте кожен токен.
- Токени зберігаються в
channels.telegram.accounts.<id>.botToken(обліковий запис за замовчуванням може використовуватиTELEGRAM_BOT_TOKEN).
Номери WhatsApp для кожного агента
Номери WhatsApp для кожного агента
Прив’яжіть кожен обліковий запис перед запуском gateway:
~/.openclaw/openclaw.json (JSON5):Поширені шаблони
- Щоденна робота у WhatsApp + глибока робота в Telegram
- Той самий канал, один співрозмовник до Opus
- Family agent bound to a WhatsApp group
Розділіть за каналом: спрямовуйте WhatsApp до швидкого повсякденного агента, а Telegram — до агента Opus.Примітки:
- Якщо у вас кілька облікових записів для каналу, додайте
accountIdдо прив’язки (наприклад,{ channel: "whatsapp", accountId: "personal" }). - Щоб спрямувати один DM/групу до Opus, залишивши решту в chat, додайте прив’язку
match.peerдля цього співрозмовника; збіги за співрозмовником завжди мають перевагу над правилами для всього каналу.
Конфігурація пісочниці та інструментів для кожного агента
Кожен агент може мати власні обмеження пісочниці та інструментів:setupCommand розміщується в sandbox.docker і запускається один раз під час створення контейнера. Перевизначення sandbox.docker.* для окремого агента ігноруються, коли визначена область дії дорівнює "shared".- Ізоляція безпеки: обмежуйте інструменти для ненадійних агентів.
- Контроль ресурсів: запускайте певних агентів у пісочниці, залишаючи інших на хості.
- Гнучкі політики: різні дозволи для кожного агента.
tools.elevated є глобальним і залежить від відправника; його не можна налаштовувати для окремого агента. Якщо вам потрібні межі для кожного агента, використовуйте agents.list[].tools, щоб заборонити exec. Для націлювання на групи використовуйте agents.list[].groupChat.mentionPatterns, щоб @згадки чітко зіставлялися з потрібним агентом.Пов’язане
- Агенти ACP — запуск зовнішніх середовищ кодування
- Маршрутизація каналів — як повідомлення маршрутизуються до агентів
- Присутність — присутність і доступність агента
- Сесія — ізоляція та маршрутизація сесій
- Підагенті — запуск фонових виконань агентів