Configuration
Nhóm phát sóng
Tổng quan
Nhóm phát sóng cho phép nhiều tác tử xử lý và phản hồi cùng một tin nhắn đồng thời. Điều này cho phép bạn tạo các nhóm tác tử chuyên biệt cùng làm việc trong một nhóm WhatsApp hoặc DM duy nhất — tất cả đều dùng một số điện thoại.
Phạm vi hiện tại: chỉ WhatsApp (kênh web).
Nhóm phát sóng được đánh giá sau danh sách cho phép của kênh và quy tắc kích hoạt nhóm. Trong các nhóm WhatsApp, điều này nghĩa là phát sóng diễn ra khi OpenClaw thường sẽ phản hồi (ví dụ: khi được nhắc đến, tùy thuộc vào cài đặt nhóm của bạn).
Trường hợp sử dụng
1. Nhóm tác tử chuyên biệt
Triển khai nhiều tác tử với các trách nhiệm nguyên tử, tập trung:
Group: "Development Team"
Agents:
- CodeReviewer (reviews code snippets)
- DocumentationBot (generates docs)
- SecurityAuditor (checks for vulnerabilities)
- TestGenerator (suggests test cases)
Mỗi tác tử xử lý cùng một tin nhắn và đưa ra góc nhìn chuyên biệt của mình.
2. Hỗ trợ đa ngôn ngữ
Group: "International Support"
Agents:
- Agent_EN (responds in English)
- Agent_DE (responds in German)
- Agent_ES (responds in Spanish)
3. Quy trình đảm bảo chất lượng
Group: "Customer Support"
Agents:
- SupportAgent (provides answer)
- QAAgent (reviews quality, only responds if issues found)
4. Tự động hóa tác vụ
Group: "Project Management"
Agents:
- TaskTracker (updates task database)
- TimeLogger (logs time spent)
- ReportGenerator (creates summaries)
Cấu hình
Thiết lập cơ bản
Thêm một phần broadcast cấp cao nhất (bên cạnh bindings). Các khóa là ID peer của WhatsApp:
- trò chuyện nhóm: JID nhóm (ví dụ
[email protected]) - DM: số điện thoại E.164 (ví dụ
+15551234567)
{
"broadcast": {
"[email protected]": ["alfred", "baerbel", "assistant3"]
}
}
Kết quả: Khi OpenClaw sẽ phản hồi trong cuộc trò chuyện này, nó sẽ chạy cả ba tác tử.
Chiến lược xử lý
Kiểm soát cách tác tử xử lý tin nhắn:
parallel (mặc định)
Tất cả tác tử xử lý đồng thời:
{
"broadcast": {
"strategy": "parallel",
"[email protected]": ["alfred", "baerbel"]
}
}
sequential
Tác tử xử lý theo thứ tự (mỗi tác tử chờ tác tử trước hoàn tất):
{
"broadcast": {
"strategy": "sequential",
"[email protected]": ["alfred", "baerbel"]
}
}
Ví dụ hoàn chỉnh
{
"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"]
}
}
Cách hoạt động
Luồng tin nhắn
Tin nhắn đến
Một tin nhắn nhóm WhatsApp hoặc DM đến.
Kiểm tra phát sóng
Hệ thống kiểm tra xem ID peer có trong broadcast hay không.
Nếu có trong danh sách phát sóng
- Tất cả tác tử được liệt kê xử lý tin nhắn.
- Mỗi tác tử có khóa phiên riêng và ngữ cảnh tách biệt.
- Tác tử xử lý song song (mặc định) hoặc tuần tự.
Nếu không có trong danh sách phát sóng
Áp dụng định tuyến bình thường (binding khớp đầu tiên).
Tách biệt phiên
Mỗi tác tử trong một nhóm phát sóng duy trì hoàn toàn riêng biệt:
- Khóa phiên (
agent:alfred:whatsapp:group:120363...so vớiagent:baerbel:whatsapp:group:120363...) - Lịch sử hội thoại (tác tử không thấy tin nhắn của các tác tử khác)
- Workspace (sandbox riêng nếu được cấu hình)
- Quyền truy cập công cụ (danh sách cho phép/từ chối khác nhau)
- Bộ nhớ/ngữ cảnh (IDENTITY.md, SOUL.md, v.v. riêng)
- Bộ đệm ngữ cảnh nhóm (các tin nhắn nhóm gần đây dùng làm ngữ cảnh) được chia sẻ theo từng peer, vì vậy tất cả tác tử phát sóng thấy cùng một ngữ cảnh khi được kích hoạt
Điều này cho phép mỗi tác tử có:
- Tính cách khác nhau
- Quyền truy cập công cụ khác nhau (ví dụ: chỉ đọc so với đọc-ghi)
- Mô hình khác nhau (ví dụ: opus so với sonnet)
- Skills khác nhau đã cài đặt
Ví dụ: phiên tách biệt
Trong nhóm [email protected] với các tác tử ["alfred", "baerbel"]:
Ngữ cảnh của Alfred
Session: agent:alfred:whatsapp:group:[email protected]
History: [user message, alfred's previous responses]
Workspace: /Users/user/openclaw-alfred/
Tools: read, write, exec
Ngữ cảnh của Bärbel
Session: agent:baerbel:whatsapp:group:[email protected]
History: [user message, baerbel's previous responses]
Workspace: /Users/user/openclaw-baerbel/
Tools: read only
Thực hành tốt nhất
1. Giữ tác tử tập trung
Thiết kế mỗi tác tử với một trách nhiệm duy nhất, rõ ràng:
{
"broadcast": {
"DEV_GROUP": ["formatter", "linter", "tester"]
}
}
✅ Tốt: Mỗi tác tử có một nhiệm vụ. ❌ Không tốt: Một tác tử "dev-helper" chung chung.
2. Dùng tên mô tả rõ
Làm rõ mỗi tác tử làm gì:
{
"agents": {
"security-scanner": { "name": "Security Scanner" },
"code-formatter": { "name": "Code Formatter" },
"test-generator": { "name": "Test Generator" }
}
}
3. Cấu hình quyền truy cập công cụ khác nhau
Chỉ cấp cho tác tử những công cụ chúng cần:
{
"agents": {
"reviewer": {
"tools": { "allow": ["read", "exec"] }
},
"fixer": {
"tools": { "allow": ["read", "write", "edit", "exec"] }
}
}
}
reviewer chỉ đọc. fixer có thể đọc và ghi.
4. Giám sát hiệu năng
Với nhiều tác tử, hãy cân nhắc:
- Dùng
"strategy": "parallel"(mặc định) để tăng tốc độ - Giới hạn nhóm phát sóng ở 5-10 tác tử
- Dùng mô hình nhanh hơn cho các tác tử đơn giản hơn
5. Xử lý lỗi một cách mềm dẻo
Tác tử thất bại độc lập. Lỗi của một tác tử không chặn các tác tử khác:
Message → [Agent A ✓, Agent B ✗ error, Agent C ✓]
Result: Agent A and C respond, Agent B logs error
Khả năng tương thích
Nhà cung cấp
Nhóm phát sóng hiện hoạt động với:
- ✅ WhatsApp (đã triển khai)
- 🚧 Telegram (đã lên kế hoạch)
- 🚧 Discord (đã lên kế hoạch)
- 🚧 Slack (đã lên kế hoạch)
Định tuyến
Nhóm phát sóng hoạt động cùng với định tuyến hiện có:
{
"bindings": [
{
"match": { "channel": "whatsapp", "peer": { "kind": "group", "id": "GROUP_A" } },
"agentId": "alfred"
}
],
"broadcast": {
"GROUP_B": ["agent1", "agent2"]
}
}
GROUP_A: Chỉ alfred phản hồi (định tuyến bình thường).GROUP_B: agent1 VÀ agent2 phản hồi (phát sóng).
Khắc phục sự cố
Tác tử không phản hồi
Kiểm tra:
- ID tác tử tồn tại trong
agents.list. - Định dạng ID peer chính xác (ví dụ
[email protected]). - Tác tử không nằm trong danh sách từ chối.
Gỡ lỗi:
tail -f ~/.openclaw/logs/gateway.log | grep broadcast
Chỉ một tác tử phản hồi
Nguyên nhân: ID peer có thể nằm trong bindings nhưng không nằm trong broadcast.
Cách sửa: Thêm vào cấu hình phát sóng hoặc xóa khỏi bindings.
Vấn đề hiệu năng
Nếu chậm với nhiều tác tử:
- Giảm số lượng tác tử trên mỗi nhóm.
- Dùng mô hình nhẹ hơn (sonnet thay vì opus).
- Kiểm tra thời gian khởi động sandbox.
Ví dụ
Ví dụ 1: Nhóm đánh giá mã
{
"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"] } }
]
}
}
Người dùng gửi: Đoạn mã.
Phản hồi:
- code-formatter: "Đã sửa thụt lề và thêm gợi ý kiểu"
- security-scanner: "⚠️ Lỗ hổng SQL injection ở dòng 12"
- test-coverage: "Độ bao phủ là 45%, thiếu kiểm thử cho các trường hợp lỗi"
- docs-checker: "Thiếu docstring cho hàm
process_data"
Ví dụ 2: Hỗ trợ đa ngôn ngữ
{
"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" }
]
}
}
Tham chiếu API
Lược đồ cấu hình
interface OpenClawConfig {
broadcast?: {
strategy?: "parallel" | "sequential";
[peerId: string]: string[];
};
}
Trường
strategy"parallel" | "sequential"Cách xử lý tác tử. parallel chạy tất cả tác tử đồng thời; sequential chạy chúng theo thứ tự trong mảng.
[peerId]string[]JID nhóm WhatsApp, số E.164 hoặc ID peer khác. Giá trị là mảng ID tác tử sẽ xử lý tin nhắn.
Hạn chế
- Số tác tử tối đa: Không có giới hạn cứng, nhưng 10+ tác tử có thể chậm.
- Ngữ cảnh chia sẻ: Tác tử không thấy phản hồi của nhau (theo thiết kế).
- Thứ tự tin nhắn: Phản hồi song song có thể đến theo bất kỳ thứ tự nào.
- Giới hạn tốc độ: Tất cả tác tử đều tính vào giới hạn tốc độ của WhatsApp.
Cải tiến trong tương lai
Các tính năng đã lên kế hoạch:
- [ ] Chế độ ngữ cảnh chia sẻ (tác tử thấy phản hồi của nhau)
- [ ] Điều phối tác tử (tác tử có thể gửi tín hiệu cho nhau)
- [ ] Chọn tác tử động (chọn tác tử dựa trên nội dung tin nhắn)
- [ ] Mức ưu tiên tác tử (một số tác tử phản hồi trước các tác tử khác)