Configuration
گروههای پخش
نمای کلی
گروههای پخش به چند عامل امکان میدهند یک پیام واحد را همزمان پردازش کنند و به آن پاسخ دهند. این قابلیت به شما اجازه میدهد تیمهایی از عاملهای تخصصی بسازید که در یک گروه WhatsApp یا پیام مستقیم واحد با هم کار میکنند — همه با استفاده از یک شماره تلفن.
دامنه فعلی: فقط WhatsApp (کانال وب).
گروههای پخش پس از فهرستهای مجاز کانال و قواعد فعالسازی گروه ارزیابی میشوند. در گروههای WhatsApp، این یعنی پخشها زمانی انجام میشوند که OpenClaw در حالت عادی پاسخ میداد (برای مثال: هنگام اشاره، بسته به تنظیمات گروه شما).
موارد استفاده
1. Specialized agent teams
چند عامل را با مسئولیتهای اتمیک و متمرکز مستقر کنید:
Group: "Development Team"
Agents:
- CodeReviewer (reviews code snippets)
- DocumentationBot (generates docs)
- SecurityAuditor (checks for vulnerabilities)
- TestGenerator (suggests test cases)
هر عامل همان پیام را پردازش میکند و دیدگاه تخصصی خود را ارائه میدهد.
2. Multi-language support
Group: "International Support"
Agents:
- Agent_EN (responds in English)
- Agent_DE (responds in German)
- Agent_ES (responds in Spanish)
3. Quality assurance workflows
Group: "Customer Support"
Agents:
- SupportAgent (provides answer)
- QAAgent (reviews quality, only responds if issues found)
4. Task automation
Group: "Project Management"
Agents:
- TaskTracker (updates task database)
- TimeLogger (logs time spent)
- ReportGenerator (creates summaries)
پیکربندی
راهاندازی پایه
یک بخش سطحبالای broadcast اضافه کنید (کنار bindings). کلیدها شناسههای همتای WhatsApp هستند:
- گپهای گروهی: JID گروه (مثلاً
[email protected]) - پیامهای مستقیم: شماره تلفن E.164 (مثلاً
+15551234567)
{
"broadcast": {
"[email protected]": ["alfred", "baerbel", "assistant3"]
}
}
نتیجه: وقتی OpenClaw در این گپ پاسخ میداد، هر سه عامل را اجرا میکند.
راهبرد پردازش
نحوه پردازش پیامها توسط عاملها را کنترل کنید:
parallel (default)
همه عاملها همزمان پردازش میکنند:
{
"broadcast": {
"strategy": "parallel",
"[email protected]": ["alfred", "baerbel"]
}
}
sequential
عاملها بهترتیب پردازش میکنند (هرکدام منتظر پایان عامل قبلی میماند):
{
"broadcast": {
"strategy": "sequential",
"[email protected]": ["alfred", "baerbel"]
}
}
مثال کامل
{
"agents": {
"list": [
{
"id": "code-reviewer",
"name": "Code Reviewer",
"workspace": "/path/to/code-reviewer",
"sandbox": { "mode": "all" }
},
{
"id": "security-auditor",
"name": "Security Auditor",
"workspace": "/path/to/security-auditor",
"sandbox": { "mode": "all" }
},
{
"id": "docs-generator",
"name": "Documentation Generator",
"workspace": "/path/to/docs-generator",
"sandbox": { "mode": "all" }
}
]
},
"broadcast": {
"strategy": "parallel",
"[email protected]": ["code-reviewer", "security-auditor", "docs-generator"],
"[email protected]": ["support-en", "support-de"],
"+15555550123": ["assistant", "logger"]
}
}
نحوه کارکرد
جریان پیام
Incoming message arrives
یک پیام گروهی یا پیام مستقیم WhatsApp میرسد.
Broadcast check
سیستم بررسی میکند که آیا شناسه همتا در broadcast وجود دارد یا نه.
If in broadcast list
- همه عاملهای فهرستشده پیام را پردازش میکنند.
- هر عامل کلید جلسه و زمینه جداگانه خودش را دارد.
- عاملها بهصورت موازی (پیشفرض) یا ترتیبی پردازش میکنند.
If not in broadcast list
مسیریابی عادی اعمال میشود (اولین binding منطبق).
جداسازی جلسه
هر عامل در یک گروه پخش موارد زیر را کاملاً جداگانه نگه میدارد:
- کلیدهای جلسه (
agent:alfred:whatsapp:group:120363...در برابرagent:baerbel:whatsapp:group:120363...) - تاریخچه گفتگو (عامل پیامهای عاملهای دیگر را نمیبیند)
- فضای کاری (sandboxهای جداگانه در صورت پیکربندی)
- دسترسی ابزار (فهرستهای مجاز/ممنوع متفاوت)
- حافظه/زمینه (
IDENTITY.md،SOUL.mdو غیره جداگانه) - بافر زمینه گروه (پیامهای اخیر گروه که برای زمینه استفاده میشوند) برای هر همتا مشترک است، بنابراین همه عاملهای پخش هنگام فعالشدن همان زمینه را میبینند
این به هر عامل امکان میدهد موارد زیر را داشته باشد:
- شخصیتهای متفاوت
- دسترسی ابزار متفاوت (مثلاً فقطخواندنی در برابر خواندنی-نوشتنی)
- مدلهای متفاوت (مثلاً opus در برابر sonnet)
- Skills نصبشده متفاوت
مثال: جلسههای جداشده
در گروه [email protected] با عاملهای ["alfred", "baerbel"]:
Alfred's context
Session: agent:alfred:whatsapp:group:[email protected]
History: [user message, alfred's previous responses]
Workspace: /Users/user/openclaw-alfred/
Tools: read, write, exec
Bärbel's context
Session: agent:baerbel:whatsapp:group:[email protected]
History: [user message, baerbel's previous responses]
Workspace: /Users/user/openclaw-baerbel/
Tools: read only
بهترین شیوهها
1. Keep agents focused
هر عامل را با یک مسئولیت واحد و روشن طراحی کنید:
{
"broadcast": {
"DEV_GROUP": ["formatter", "linter", "tester"]
}
}
✅ خوب: هر عامل یک کار دارد. ❌ بد: یک عامل عمومی "dev-helper".
2. Use descriptive names
روشن کنید هر عامل چه کاری انجام میدهد:
{
"agents": {
"security-scanner": { "name": "Security Scanner" },
"code-formatter": { "name": "Code Formatter" },
"test-generator": { "name": "Test Generator" }
}
}
3. Configure different tool access
فقط ابزارهایی را که عاملها نیاز دارند به آنها بدهید:
{
"agents": {
"reviewer": {
"tools": { "allow": ["read", "exec"] }
},
"fixer": {
"tools": { "allow": ["read", "write", "edit", "exec"] }
}
}
}
reviewer فقطخواندنی است. fixer میتواند بخواند و بنویسد.
4. Monitor performance
با تعداد زیادی عامل، موارد زیر را در نظر بگیرید:
- استفاده از
"strategy": "parallel"(پیشفرض) برای سرعت - محدودکردن گروههای پخش به ۵ تا ۱۰ عامل
- استفاده از مدلهای سریعتر برای عاملهای سادهتر
5. Handle failures gracefully
عاملها مستقل از هم شکست میخورند. خطای یک عامل، دیگران را مسدود نمیکند:
Message → [Agent A ✓, Agent B ✗ error, Agent C ✓]
Result: Agent A and C respond, Agent B logs error
سازگاری
ارائهدهندهها
گروههای پخش در حال حاضر با موارد زیر کار میکنند:
- ✅ WhatsApp (پیادهسازیشده)
- 🚧 Telegram (برنامهریزیشده)
- 🚧 Discord (برنامهریزیشده)
- 🚧 Slack (برنامهریزیشده)
مسیریابی
گروههای پخش در کنار مسیریابی موجود کار میکنند:
{
"bindings": [
{
"match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } },
"agentId": "alfred"
}
],
"broadcast": {
"GROUP_B": ["agent1", "agent2"]
}
}
GROUP_A: فقط alfred پاسخ میدهد (مسیریابی عادی).GROUP_B: agent1 و agent2 پاسخ میدهند (پخش).
عیبیابی
Agents not responding
بررسی کنید:
- شناسههای عامل در
agents.listوجود داشته باشند. - قالب شناسه همتا درست باشد (مثلاً
[email protected]). - عاملها در فهرستهای ممنوع نباشند.
اشکالزدایی:
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
Only one agent responding
علت: شناسه همتا ممکن است در bindings باشد اما در broadcast نباشد.
رفع: آن را به پیکربندی پخش اضافه کنید یا از bindings حذف کنید.
Performance issues
اگر با تعداد زیادی عامل کند است:
- تعداد عاملها در هر گروه را کاهش دهید.
- از مدلهای سبکتر استفاده کنید (sonnet بهجای opus).
- زمان راهاندازی sandbox را بررسی کنید.
مثالها
Example 1: Code review team
{
"broadcast": {
"strategy": "parallel",
"[email protected]": [
"code-formatter",
"security-scanner",
"test-coverage",
"docs-checker"
]
},
"agents": {
"list": [
{
"id": "code-formatter",
"workspace": "~/agents/formatter",
"tools": { "allow": ["read", "write"] }
},
{
"id": "security-scanner",
"workspace": "~/agents/security",
"tools": { "allow": ["read", "exec"] }
},
{
"id": "test-coverage",
"workspace": "~/agents/testing",
"tools": { "allow": ["read", "exec"] }
},
{ "id": "docs-checker", "workspace": "~/agents/docs", "tools": { "allow": ["read"] } }
]
}
}
کاربر ارسال میکند: قطعه کد.
پاسخها:
- code-formatter: "تورفتگی را اصلاح کردم و اشارههای نوع را اضافه کردم"
- security-scanner: "⚠️ آسیبپذیری تزریق SQL در خط 12"
- test-coverage: "پوشش 45٪ است، آزمونها برای حالتهای خطا وجود ندارند"
- docs-checker: "docstring برای تابع
process_dataوجود ندارد"
Example 2: Multi-language support
{
"broadcast": {
"strategy": "sequential",
"+15555550123": ["detect-language", "translator-en", "translator-de"]
},
"agents": {
"list": [
{ "id": "detect-language", "workspace": "~/agents/lang-detect" },
{ "id": "translator-en", "workspace": "~/agents/translate-en" },
{ "id": "translator-de", "workspace": "~/agents/translate-de" }
]
}
}
مرجع API
طرحواره پیکربندی
interface OpenClawConfig {
broadcast?: {
strategy?: "parallel" | "sequential";
[peerId: string]: string[];
};
}
فیلدها
strategy"parallel" | "sequential"نحوه پردازش عاملها. parallel همه عاملها را همزمان اجرا میکند؛ sequential آنها را بهترتیب آرایه اجرا میکند.
[peerId]string[]JID گروه WhatsApp، شماره E.164، یا شناسه همتای دیگر. مقدار، آرایهای از شناسههای عاملهایی است که باید پیامها را پردازش کنند.
محدودیتها
- حداکثر عاملها: حد سختی وجود ندارد، اما بیش از ۱۰ عامل ممکن است کند باشد.
- زمینه مشترک: عاملها پاسخهای یکدیگر را نمیبینند (طبق طراحی).
- ترتیب پیامها: پاسخهای موازی ممکن است با هر ترتیبی برسند.
- محدودیتهای نرخ: همه عاملها در محدودیتهای نرخ WhatsApp حساب میشوند.
بهبودهای آینده
ویژگیهای برنامهریزیشده:
- [ ] حالت زمینه مشترک (عاملها پاسخهای یکدیگر را میبینند)
- [ ] هماهنگی عاملها (عاملها میتوانند به یکدیگر سیگنال دهند)
- [ ] انتخاب پویای عامل (انتخاب عاملها بر اساس محتوای پیام)
- [ ] اولویتهای عامل (برخی عاملها پیش از دیگران پاسخ میدهند)