實現(xiàn)多個 Agent 之間的協(xié)同工作。我們將以“研發(fā) Agent 請求運維 Agent 提供 Hive 機器信息”的典型場景為例,逐步說明配置方法和操作流程。
1. 前置條件
已安裝并運行 OpenClaw 核心服務(版本 ≥ 2026.03)。
具備基本配置文件(openclaw.json)的編輯權限。
了解 Agent、技能(Skill)、綁定(Binding)和鉤子(Hook)的基本概念。
已接入至少一個消息渠道(如 WhatsApp、飛書、Slack),用于測試。
2. 整體架構
[用戶消息] → Gateway (路由表) → 研發(fā) Agent
│
│ (通過 assign_task 技能)
▼
Gateway (Hook 調度)
│
│ (啟動運維 Agent)
▼
運維 Agent → 執(zhí)行技能 (查架構/機器信息)
│
│ (結果存入共享記憶 或 通過 Hook 回調)
▼
研發(fā) Agent → 整合結果 → 回復用戶
協(xié)作方式采用 Agent Teams(顯式編排):研發(fā) Agent 作為協(xié)調者,通過任務分配觸發(fā)運維 Agent 工作。
3. 配置步驟
3.1 定義 Agent
在 openclaw.json 的 agents.list 中分別定義研發(fā) Agent 和運維 Agent。
{
"agents": {
"list": [
{
"id": "研發(fā)-協(xié)調者",
"name": "研發(fā)負責人",
"model": {
"provider": "openai",
"name": "gpt-4-turbo"
},
"tools": {
"allow": ["assign_task"] // 允許使用任務分配技能
},
"workspace": "./workspaces/dev" // 獨立工作區(qū)(可選)
},
{
"id": "運維-執(zhí)行者",
"name": "運維專家",
"model": {
"provider": "anthropic",
"name": "claude-3-haiku"
},
"tools": {
"allow": [
"query_hive_architecture",
"get_machine_info"
]
},
"workspace": "./workspaces/ops"
}
]
}
}
3.2 配置消息路由(Bindings)
將外部消息(如來自飛書的特定群組)路由給研發(fā) Agent。
{
"bindings": [
{
"agentId": "研發(fā)-協(xié)調者",
"match": {
"channel": "feishu",
"peer": {
"kind": "group",
"id": "oc_xxxxx" // 實際群 ID
}
}
}
]
}
3.3 創(chuàng)建 Agent 技能(Skills)
每個技能對應一個 Markdown 文件,放在 ~/.openclaw/skills/ 目錄下。
assign_task 技能(研發(fā) Agent 使用)
文件:~/.openclaw/skills/assign_task/SKILL.md
# assign_task
## 描述
當你需要其他專家 Agent(如運維)協(xié)助時,使用此技能分配任務。
## 參數(shù)
- `target_agent_id`: 目標 Agent 的 ID(字符串)
- `task_description`: 清晰的任務描述(字符串)
## 工作流程
1. 明確需要哪個 Agent 做什么事。
2. 調用底層工具 `sessions_send`,將任務信息發(fā)送到內部總線。
- 消息格式:`{ "type": "task_assignment", "targetAgentId": "...", "taskDescription": "..." }`
3. 告知用戶任務已分配,請稍候。
## 示例
用戶要求獲取 Hive 架構圖時,應設置:
- `target_agent_id`: "運維-執(zhí)行者"
- `task_description`: "請?zhí)峁┥a環(huán)境 Hive 機器的架構圖和以下 IP 的詳細信息:10.0.1.10, 10.0.1.11"
實際調用 sessions_send 的細節(jié)由 OpenClaw 運行時自動處理,技能作者只需描述參數(shù)和意圖。
運維 Agent 技能
文件:~/.openclaw/skills/query_hive_architecture/SKILL.md
# query_hive_architecture
## 描述
獲取 Hive 集群的架構圖和相關機器信息。
## 工作流程
1. 調用內部 CMDB API 獲取最新架構圖。
2. 解析返回的 JSON 數(shù)據(jù),生成 Markdown 格式的報告。
3. 將結果寫入共享記憶,鍵名為 `hive_architecture_<會話ID>`。
文件:~/.openclaw/skills/get_machine_info/SKILL.md
# get_machine_info
## 參數(shù)
- `ip_list`: 以逗號分隔的 IP 地址列表
## 描述
查詢指定機器的 CPU、內存、磁盤等詳細信息。
## 工作流程
1. 調用內部監(jiān)控 API 獲取實時指標。
2. 整理成表格返回。
3.4 配置任務分發(fā) Hook
在 openclaw.json 的 hooks 數(shù)組中添加規(guī)則,使 Gateway 能夠監(jiān)聽 sessions_send 發(fā)出的任務分配事件,并啟動對應的 Agent。
{
"hooks": [
{
"event": "internal:message", // 內部消息事件
"condition": {
"field": "payload.type",
"operator": "eq",
"value": "task_assignment" // 僅處理類型為 task_assignment 的消息
},
"action": {
"type": "start_agent",
"agentId": "{{payload.targetAgentId}}", // 從事件中動態(tài)獲取目標 Agent ID
"payload": {
"kind": "agentTurn",
"message": "{{payload.taskDescription}}",
"sessionTarget": "isolated" // 隔離會話,避免污染原對話
}
}
}
]
}
3.5 (可選)配置共享記憶
如果希望運維 Agent 的結果能被研發(fā) Agent 自動感知,可以啟用共享記憶插件(如 @openclaw/memory-plugin)。
在 Agent 配置中添加記憶相關設置:
{
"agents": {
"list": [
{
"id": "研發(fā)-協(xié)調者",
"memory": {
"provider": "sqlite",
"autoRecall": true, // 自動召回相關記憶
"namespace": "shared" // 與其他 Agent 共享的命名空間
}
},
{
"id": "運維-執(zhí)行者",
"memory": {
"provider": "sqlite",
"autoStore": true, // 自動存儲結果
"namespace": "shared"
}
}
]
}
}
此時運維 Agent 的執(zhí)行結果會自動存入共享記憶,研發(fā) Agent 在后續(xù)回復時會自動召回這些信息。
4. 操作流程(用戶視角)
用戶提出問題:在已綁定的飛書群中發(fā)送:“生產環(huán)境 Hive 查詢變慢,研發(fā)幫忙看看?”
研發(fā) Agent 接收:Gateway 根據(jù) Binding 將消息發(fā)給研發(fā) Agent。
研發(fā) Agent 分析:
識別到需要 Hive 架構圖和機器信息。
調用 assign_task 技能,參數(shù)為:
target_agent_id: 運維-執(zhí)行者
task_description: “請?zhí)峁┥a環(huán)境 Hive 機器的架構圖和以下 IP 的詳細信息:10.0.1.10, 10.0.1.11”
技能內部通過 sessions_send 發(fā)送內部消息。
研發(fā) Agent 回復用戶:“正在調取運維數(shù)據(jù),請稍候...”
Gateway 調度:Hook 監(jiān)聽到內部消息,根據(jù) targetAgentId 啟動運維 Agent,并將任務描述作為輸入。
運維 Agent 執(zhí)行:
調用 query_hive_architecture 技能獲取架構圖。
調用 get_machine_info 技能獲取指定 IP 的機器信息。
將結果(Markdown 格式)通過 sessions_send 發(fā)送回 Gateway(或存入共享記憶)。
結果返回:
如果配置了共享記憶,研發(fā) Agent 在下一輪回復時會自動召回數(shù)據(jù),直接生成最終答案。
或者 Gateway 可以通過另一個 Hook 將結果轉發(fā)給研發(fā) Agent(需要額外配置)。
研發(fā) Agent 整合并回復:生成包含架構圖和機器信息的完整分析報告,回復給用戶。
5. 驗證與調試
檢查 Agent 日志:每個 Agent 的運行日志默認在 ~/.openclaw/logs/ 下,可查看調用過程。
測試技能:可以在 Agent 工作區(qū)中手動執(zhí)行技能,確保技能本身能正常工作。
模擬內部消息:使用 openclaw-cli 工具發(fā)送測試內部消息,驗證 Hook 是否觸發(fā)。
查看共享記憶:如果使用了記憶插件,可查詢數(shù)據(jù)庫確認數(shù)據(jù)是否成功存儲。
6. 注意事項
任務分配不要循環(huán):確保 Hook 配置不會導致 Agent 互相無限觸發(fā)(例如研發(fā) Agent 分配任務給運維,運維完成后又分配任務給研發(fā))??稍谌蝿肇撦d中加入唯一 ID 或會話標記,避免重復處理。
隔離會話:使用 sessionTarget: "isolated" 確保運維 Agent 的執(zhí)行環(huán)境與用戶對話隔離,防止混淆。
技能參數(shù)格式:確保技能定義的參數(shù)格式與 Agent 實際調用時一致。建議使用 JSON 或明確的分隔符。
權限控制:不同 Agent 可使用不同的 API 密鑰,避免跨 Agent 權限濫用。
監(jiān)控與告警:對關鍵 Agent 的任務執(zhí)行時間、失敗率設置監(jiān)控,及時發(fā)現(xiàn)異常。
7. 擴展:其他協(xié)作模式
事件驅動 + 共享記憶:如果不需要顯式任務分配,可以讓 Agent 將結果存入共享記憶,其他 Agent 通過自動召回獲取信息。此模式耦合度更低,適合信息查詢類場景。
多 Agent 輪詢:通過 Hook 鏈式觸發(fā)多個 Agent,實現(xiàn)流水線處理(如數(shù)據(jù)采集 → 分析 → 報告生成)。