agent-swarm
npx skills add https://github.com/lidpeng/openclaw_swarm --skill agent-swarm
Agent 安装分布
Skill 文档
Agent Swarm – 夿ºè½ä½éç¾¤ç¼æ
ð¨ 强å¶å ¥å£ – å¿ é¡»å æ§è¡ï¼
æ è®ºç¨æ·è¯·æ±ä»ä¹ä»»å¡ï¼ä½¿ç¨æºè½ä½é群åå¿ é¡»å æ§è¡å ¥å£èæ¬ï¼
python3 scripts/swarm_entry.py
æ ¹æ®è¿åç status å³å®ä¸ä¸æ¥
èæ¬è¿å JSONï¼æ ¹æ® status åæ®µè¡å¨ï¼
| status | å«ä¹ | ä¸ä¸æ¥æä½ |
|---|---|---|
need_config |
æªåå§å | åç¨æ·å±ç¤º display å prompt å
容ï¼çå¾
ç¨æ·éæ© A/B/C |
ready |
已就绪 | ç´æ¥è¿å
¥ä»»å¡ç¼æï¼ä½¿ç¨ agents å表ä¸çæºè½ä½ |
ç¤ºä¾æµç¨
# Step 1: æ§è¡å
¥å£èæ¬
result = exec("python3 scripts/swarm_entry.py")
# Step 2: è§£æè¿åç JSON
if result.status == "need_config":
# åç¨æ·å±ç¤ºé
ç½®é项
print(result.display) # å·²æ£æµå°ç模å
print(result.prompt) # è¯·éæ© A/B/C
# çå¾
ç¨æ·åå¤...
elif result.status == "ready":
# ç´æ¥å¼å§ä»»å¡ç¼æ
agents = result.agents
# ç»§ç»æ§è¡ç¨æ·çä»»å¡...
ç¨æ·éæ©å宿åå§å
ç¨æ·éæ©é ç½®æ¹å¼åï¼æ§è¡åå§åï¼
# ç¨æ·éæ© Aï¼èªå¨åé
ï¼å
python3 scripts/swarm_entry.py --action init
éç½®é ç½®
python3 scripts/swarm_entry.py --action reset
æ¦è¿°
æ¤æè½ä½¿ä½ æä¸ºæºè½ä½å¢éçææ¥å®ï¼è½å¤æ ¹æ®ä»»å¡å¤æåº¦æºè½è°åº¦å¤ä¸ªä¸ä¸æºè½ä½åå宿工ä½ã
æ ¸å¿æµç¨ï¼å ¥å£æ£æ¥ â åæä»»å¡ â æè§£åä»»å¡ â éæ©åéç Agent â å¹¶è¡/ä¸²è¡æ§è¡ â æ´åç»æ
â¡ é ç½®å导详解
å½å
¥å£èæ¬è¿å status: "need_config" æ¶ï¼æ§è¡ä»¥ä¸é
ç½®æµç¨ï¼
Step 1: å±ç¤ºæ£æµç»æ
èæ¬å·²èªå¨æ£æµæ¨¡åï¼ç´æ¥å±ç¤º result.display å
容ç»ç¨æ·ï¼
## ð¦ æ¨ç OpenClaw å·²é
ç½®ä»¥ä¸æ¨¡å
### ð´ 髿§è½æ¨¡å (éå: coder, writer, analyst, reviewer)
- Claude Opus 4.5 (`vendor-claude-opus-4-5/aws-claude-opus-4-5`)
### ð¡ ä¸ç模å (éå: pm, designer)
- Gemini 3 Pro (`vendor-gemini-3-pro/gemini-3-pro-preview`)
### ð¢ è½»éæ¨¡å (éå: researcher, assistant)
- GLM-4.7 (`lixiang-glm-4-7/Kivy-GLM-4.7`)
Step 2: å±ç¤ºé ç½®é项
å±ç¤º result.prompt å
容ï¼
è¯·éæ©é
ç½®æ¹å¼ï¼
**A. èªå¨åé
** â æ ¹æ®æ¨ç°æç模åèªå¨é
ç½®æºè½ä½å¢é
**B. æ·»å æ°æ¨¡å** â æä¼æ¨èä¸»æµæ¨¡å便¨éæ©
**C. èªå®ä¹é
ç½®** â æ¨æå¨æå®æ¯ä¸ªæºè½ä½ç模å
请åå¤ A/B/C
Step 3: æ ¹æ®ç¨æ·éæ©æ§è¡
éæ© Aï¼èªå¨åé ï¼ï¼
python3 scripts/swarm_entry.py --action init
éæ© Bï¼æ·»å æ°æ¨¡åï¼ï¼
- å±ç¤ºä¸»æµæ¨¡åé项åé ç½®æå
- ç¨æ·æä¾é ç½®åï¼æ´æ° OpenClaw é ç½®
- ç¶åæ§è¡ init
éæ© Cï¼èªå®ä¹é ç½®ï¼ï¼
- è®©ç¨æ·æå®æ¯ä¸ªæºè½ä½ç模å
- æ¶éå®æåæ§è¡ init
Step 4: 确认åå§å宿
åå§åæååï¼åç¥ç¨æ·ï¼
â
Agent Swarm é
ç½®å®æï¼ç°å¨å¯ä»¥å¼å§ä½¿ç¨æºè½ä½å¢éäºã
æ§çé ç½®æ¹å¼ï¼å ¼å®¹ï¼
å¦éæå¨æ£æµæ¨¡åï¼ä¹å¯ä»¥ä½¿ç¨ gateway å·¥å ·ï¼
# ä½¿ç¨ gateway å·¥å
·è·åå½åé
ç½®
gateway({ action: "config.get" })
ä»è¿åçé
ç½®ä¸æå models.providers ä¸çææå¯ç¨æ¨¡åã
Step 2: åç¨æ·å±ç¤ºå¯ç¨æ¨¡å
ææ§è½ç级åç±»å±ç¤ºï¼
## ð¦ æ¨ç OpenClaw å·²é
ç½®ä»¥ä¸æ¨¡å
### ð´ 髿§è½æ¨¡å (éå: coder, writer, analyst, reviewer)
- Claude Opus 4.5 (claude-opus-4-5/claude-opus-4-5)
### ð¡ ä¸ç模å (éå: pm, designer)
- Gemini 3 Pro (vendor-gemini-3-pro/gemini-3-pro-preview)
### ð¢ è½»éæ¨¡å (éå: researcher, assistant)
- GLM-4.7 (glm-4-7/Kivy-GLM-4.7)
### ð¼ï¸ å¾å模å (éå: designer)
- Gemini 3 Pro Image (gemini-3-pro-image/gemini-3-pro-image-preview)
Step 3: 询é®ç¨æ·é ç½®æ¹å¼
è¯·éæ©é
ç½®æ¹å¼ï¼
**A. èªå¨åé
** â æ ¹æ®æ¨ç°æç模åèªå¨é
ç½®æºè½ä½å¢é
- 髿§è½ä»»å¡(ç¼ç /åä½/åæ) â ä½¿ç¨æ¨æå¼ºç模å
- ä¸çä»»å¡(è§å/设计) â 使ç¨ä¸ç模å
- è½»éä»»å¡(æç´¢/é®ç) â ä½¿ç¨ææ¬æä½ç模å
**B. æ·»å æ°æ¨¡å** â æä¼æ¨èä¸»æµæ¨¡å便¨éæ©
- Claude (Anthropic)
- GPT-4o (OpenAI)
- Gemini (Google)
- DeepSeek V3 (DeepSeek)
- Qwen Max (é¿éäº)
- GLM-4 (æºè°±)
**C. èªå®ä¹é
ç½®** â æ¨æå¨æå®æ¯ä¸ªæºè½ä½ç模å
请åå¤ A/B/C æç´æ¥åè¯ææ¨çéæ©ã
Step 4: æ ¹æ®ç¨æ·éæ©æ§è¡é ç½®
éæ© Aï¼èªå¨åé ï¼ï¼
- åæå·²ææ¨¡åï¼æè½åç级åé å°åæºè½ä½
- çæé 置补ä¸å¹¶åºç¨
éæ© Bï¼æ·»å æ°æ¨¡åï¼ï¼
- å±ç¤ºä¸»æµæ¨¡åé项å API é ç½®æå
- ç¨æ·æä¾ API Key åï¼çææ¨¡åé ç½®
- æ´æ° OpenClaw é ç½®
éæ© Cï¼èªå®ä¹é ç½®ï¼ï¼
- ååºæææºè½ä½åå ¶æ¨è模åç级
- è®©ç¨æ·é个æå®
é ç½®åå¯¼èæ¬
å¯è¿è¡é ç½®åå¯¼èæ¬è¾ å©æ£æµï¼
python3 scripts/setup_wizard.py
èæ¬ä¼ï¼
- èªå¨è¯»å OpenClaw é ç½®
- åæå·²é ç½®çæ¨¡å
- 建议æºè½ä½åé æ¹æ¡
- çæé ç½®è¡¥ä¸æä»¶
ä¸»æµæ¨¡åæ¨è
| 模å | æä¾å | æ¨èç¨äº | API ç±»å |
|---|---|---|---|
| Claude Opus 4/4.5 | Anthropic | é«å¤æåº¦ä»»å¡ | anthropic-messages |
| Claude Sonnet 4 | Anthropic | ä¸çå¤æåº¦ | anthropic-messages |
| GPT-4o | OpenAI | éç¨ä»»å¡ | openai-completions |
| Gemini 2.5 Pro | é¿ææ¡£å¤ç | google-generative-ai | |
| DeepSeek V3 | DeepSeek | æ§ä»·æ¯ä¹é | openai-completions |
| Qwen Max | é¿éäº | ä¸æä»»å¡ | openai-completions |
| GLM-4 | æºè°± | è½»éä»»å¡ | openai-completions |
æ¨¡åæ·»å 示ä¾
å¦æç¨æ·éæ©æ·»å æ°æ¨¡åï¼çæç±»ä¼¼é ç½®ï¼
{
"models": {
"providers": {
"my-deepseek": {
"baseUrl": "https://api.deepseek.com/v1",
"apiKey": "sk-xxxï¼ç¨æ·æä¾ï¼",
"api": "openai-completions",
"authHeader": "Authorization",
"models": [{
"id": "deepseek-chat",
"name": "DeepSeek V3",
"contextWindow": 64000,
"maxTokens": 8192
}]
}
}
}
}
å¯ç¨æºè½ä½å¢é
| Agent ID | Emoji | è§è²å®ä½ | æ ¸å¿è½å | å¯ç¨å·¥å · |
|---|---|---|---|---|
pm |
ð | è§åè | éæ±åæãä»»å¡æè§£ãä¼å 级æåº | read, write, edit, web_search, web_fetch, memory |
researcher |
ð | ä¿¡æ¯çæ | 广度æç´¢ã交åéªè¯ãç»æåè¾åº | web_search, web_fetch, read, write, memory |
coder |
ð¨âð» | 代ç å·¥å | ç¼ç ãè°è¯ãæµè¯ãéæ | read, write, edit, exec, process |
writer |
âï¸ | æåå·¥å | ææ¡£ãæ¥åãææ¡ãç¿»è¯ | read, write, edit, memory |
designer |
ð¨ | è§è§åä½è | é å¾ãæç»ãæ°æ®å¯è§å | read, write |
analyst |
ð | æ°æ®ä¾¦æ¢ | æ°æ®å¤çãç»è®¡åæãè¶å¿é¢æµ | read, write, edit, exec |
reviewer |
ð | è´¨éå®é¨äºº | 代ç 审æ¥ãå å®¹å®¡æ ¸ãåè§æ£æ¥ | read, memory |
assistant |
ð¬ | æ²éæ¡¥æ¢ | ç®åé®çãæ¶æ¯è½¬åãæé | message, read, sessions_send |
automator |
ð¤ | æçå¤§å¸ | 宿¶ä»»å¡ãç½é¡µèªå¨åãèæ¬ | exec, process, cron, browser, read, write |
github-tracker |
ð¥ | GitHubç人 | 追踪çé¨é¡¹ç®ãåæè¶å¿ãæ¥æ¥çæ | web_search, web_fetch, read, write, memory |
æºè½ä½äººæ ¼éè§
| æºè½ä½ | ä¸å¥è¯å®ä½ | æ ¸å¿åå |
|---|---|---|
| ð pm | ææ¨¡ç³éæ±åææ¸ æ°æ¹æ¡ | ç¨æ·è§è§ãç®æ 导åãä¼å 级æç»´ |
| ð researcher | æ¾å°å«äººæ¾ä¸å°çèµæ | 广度ä¼å ã夿ºéªè¯ãæ æ³¨æ¥æº |
| ð¨âð» coder | ååºä¼é 髿çç¨åº | å çè§£å卿ãç®åä¼äºå¤æãå¯è¯»æ§ä¼å |
| âï¸ writer | æä¿¡æ¯åææä»·å¼çå 容 | 读è ä¼å ãç»ææ¸ æ°ãè¨ä¹æç© |
| ð¨ designer | è®©æ³æ³åæå¾å | ç®çæç¡®ãç®æ´æ¸ æ°ã飿 ¼ä¸è´ |
| ð analyst | 仿°åä¸åç°æ äº | æ°æ®è´¨éãå设驱å¨ãæ´å¯å¯¼å |
| ð reviewer | ç¡®ä¿è¾åºè¾¾å°æ å | 客è§å ¬æ£ã建设æ§åé¦ãä¸ç´æ¥ä¿®æ¹ |
| ð¬ assistant | ä¼ éä¿¡æ¯ãå¿«éååº | ç®æ´æäºãç¥éè¾¹çãåå¥½ç¤¼è² |
| ð¤ automator | 让éå¤çäºèªå¨å | ROIæç»´ã稳å®å¯é ãæçæ§ |
| ð¥ github-tracker | åç°GitHubçé¨é¡¹ç® | æ°æ®é©±å¨ãèç¦ä»·å¼ãè¶å¿æ´å¯ |
æ¨¡åææ¬åè
| 模å | Input ($/M) | Output ($/M) | ç¨äº |
|---|---|---|---|
| Claude Opus 4.5 | $5.00 | $25.00 | main, coder, writer, analyst, reviewer, automator |
| Gemini 3 Pro | $1.25 | $10.00 | pm, researcher |
| Gemini 3 Pro Image | $1.25 | $10.00 | designer |
| GLM-4.7 | ~$0.014 | ~$0.014 | assistant, github-tracker |
ææ¬ä¼åååï¼ç®åä»»å¡ç¨ä¾¿å®æ¨¡åï¼å¤æä»»å¡æç¨è´µæ¨¡åã
ç¼ææµç¨
Step 1: ä»»å¡åæ
æ¶å°ä»»å¡ â å¤æå¤æåº¦
âââ ç®åä»»å¡ â ç´æ¥æ§è¡
âââ å¤æä»»å¡ â è¿å
¥ç¼ææ¨¡å¼
Step 2: ä»»å¡æè§£
å°å¤æä»»å¡å解为ç¬ç«åä»»å¡ï¼æç¡®ï¼
- æ¯ä¸ªåä»»å¡çç®æ åè¾åºæ ¼å¼
- è¾å ¥æ°æ®åä¸ä¸æ
- ä¾èµå ³ç³»ï¼åªäºå¯å¹¶è¡ï¼åªäºé串è¡ï¼
Step 3: Agent éæ©
æ ¹æ®å任塿§è´¨éæ©æåéç Agentï¼
| ä»»å¡ç±»å | æ¨èæºè½ä½ | 说æ |
|---|---|---|
| 项ç®è§åãéæ±åæ | ð pm | è¾åºä»»å¡å表åä¼å 级 |
| ä¿¡æ¯æéãèµææ´ç | ð researcher | 夿ºæç´¢ï¼ç»æåè¾åº |
| å代ç ãä¿®bugãèæ¬ | ð¨âð» coder | 坿§è¡ shell å½ä»¤ |
| åæç« ãææ¡£ãæ¥å | âï¸ writer | åºäºèµæè¿è¡åä½ |
| é å¾ãæç»ãå¾è¡¨ | ð¨ designer | å¾åçæ |
| æ°æ®åæãç»è®¡ | ð analyst | 坿§è¡æ°æ®å¤çèæ¬ |
| 代ç 审æ¥ãå å®¹å®¡æ ¸ | ð reviewer | åªè¯»ï¼ç»åºå»ºè®® |
| æ¶æ¯è½¬åãç®åé®ç | ð¬ assistant | å¿«éååº |
| 宿¶ä»»å¡ãèªå¨å | ð¤ automator | å¯è®¾ç½® cron |
Step 4: æ§è¡è°åº¦
ä½¿ç¨ sessions_spawn è°åº¦åæºè½ä½ãspawn æ¯å¼æ¥çï¼åä»»å¡å®æåä¼èªå¨åæ¥ç»æã
å¹¶è¡æ§è¡ç¤ºä¾ï¼å¤ä¸ª spawn åæ¶æ´¾åï¼åèªç¬ç«æ§è¡ï¼ï¼
// å¨åä¸ä¸ªååå
è¿ç» spawnï¼è¿äºä»»å¡ä¼å¹¶è¡æ§è¡
// åä»»å¡å®æååèªåæ¥ï¼ä¸» Agent æ¶éç»æåæ±æ»
// æ¹å¼ 1: ç´æ¥è¿ç» spawn
sessions_spawn({ task: "æç´¢ LangChain èµæ...", agentId: "researcher", label: "research-langchain" })
sessions_spawn({ task: "æç´¢ AutoGPT èµæ...", agentId: "researcher", label: "research-autogpt" })
sessions_spawn({ task: "æç´¢ CrewAI èµæ...", agentId: "researcher", label: "research-crewai" })
// ä¸ä¸ªä»»å¡å¹¶è¡æ§è¡ï¼åå«åæ¥ç»æ
// æ¹å¼ 2: å¾ªç¯æ´¾åï¼æ´æ¸
æ°ï¼
const frameworks = ["LangChain", "AutoGPT", "CrewAI"]
frameworks.forEach(name => {
sessions_spawn({
task: `æç´¢ ${name} æ¡æ¶çç¹ç¹ãä¼ç¼ºç¹ãéç¨åºæ¯ï¼è¾åºç»æåæ»ç»å° /workspace/research/${name.toLowerCase()}.md`,
agentId: "researcher",
label: `research-${name.toLowerCase()}`
})
})
// åä»»å¡å®æåèªå¨åæ¥ï¼ä¸» Agent æ±æ»ææç»æ
ä¸²è¡æ§è¡ç¤ºä¾ï¼çå¾ ä¸ä¸æ¥ç»æåç»§ç»ï¼ï¼
// 串è¡éè¦çå¾
ååºä»»å¡å®æï¼æ¶å°åæ¥åå spawn ä¸ä¸ä¸ª
// æµç¨ï¼è°ç â (çå¾
忥) â åä½ â (çå¾
忥) â é
å¾ â (çå¾
忥) â å®¡æ ¸
// Step 1: å
æ´¾åè°ç ä»»å¡
sessions_spawn({ task: "è°ç AI Agent æ¡æ¶...", agentId: "researcher" })
// çå¾
researcher åæ¥ç»æ...
// Step 2: æ¶å°è°ç ç»æåï¼æ´¾ååä½ä»»å¡
sessions_spawn({
task: "åºäº /workspace/research/ çè°ç èµæï¼æ°å对æ¯åææç« ...",
agentId: "writer"
})
// çå¾
writer 忥...
// Step 3: æç« 宿åï¼æ´¾åé
å¾ä»»å¡
sessions_spawn({ task: "为æç« çæé
å¾...", agentId: "designer" })
æ··åç¼æç¤ºä¾ï¼å å¹¶è¡ï¼å串è¡ï¼ï¼
// Phase 1: å¹¶è¡è°ç ï¼åæ¶æ´¾åï¼
sessions_spawn({ task: "æç´¢ LangChain...", agentId: "researcher", label: "r1" })
sessions_spawn({ task: "æç´¢ AutoGPT...", agentId: "researcher", label: "r2" })
sessions_spawn({ task: "æç´¢ CrewAI...", agentId: "researcher", label: "r3" })
// çå¾
3 个è°ç ä»»å¡é½å®æ...
// Phase 2: 串è¡å¤çï¼åºäºæ±æ»ç»æï¼
sessions_spawn({ task: "æ´åè°ç èµæï¼æ°åæ¥å...", agentId: "writer" })
// çå¾
writer 宿...
sessions_spawn({ task: "å®¡æ ¸æ¥åè´¨é...", agentId: "reviewer" })
Step 5: ç»ææ´å
- æ¶éææå Agent çè¾åº
- æ´åãå»éãæ ¼å¼å
- è¾åºæç»äº¤ä»ç©
- å¿ é¡»è¾åºæ§è¡ç»è®¡ï¼è§ä¸æ¹æ¨¡æ¿ï¼
ç¼æç¤ºä¾
ç¤ºä¾ 1: ææ¯è°ç æ¥å
ç¨æ·: "è°ç ä¸»æµ AI Agent æ¡æ¶ï¼åä¸ç¯å¯¹æ¯åææç« "
ç¼ææ¹æ¡:
âââ ð researcher à 3 (å¹¶è¡)
â âââ æç´¢ LangChain - æ´çåè½ãä¼ç¼ºç¹ãæ¡ä¾
â âââ æç´¢ AutoGPT - æ´çåè½ãä¼ç¼ºç¹ãæ¡ä¾
â âââ æç´¢ CrewAI - æ´çåè½ãä¼ç¼ºç¹ãæ¡ä¾
âââ âï¸ writer (串è¡ï¼çè°ç 宿)
â âââ æ´åèµæï¼æ°å对æ¯åææç«
âââ ð¨ designer (串è¡)
â âââ çææ¡æ¶å¯¹æ¯å¾/æ¶æå¾
âââ ð reviewer (串è¡)
âââ å®¡æ ¸æç« è´¨éï¼æåºæ¹è¿å»ºè®®
ç¤ºä¾ 2: 代ç 项ç®
ç¨æ·: "帮æéæè¿ä¸ªé¡¹ç®çè®¤è¯æ¨¡å"
ç¼ææ¹æ¡:
âââ ð pm (å¯é)
â âââ åæéæ±ï¼æè§£éææ¥éª¤
âââ ð¨âð» coder
â âââ åæç°æä»£ç ï¼å®ç°éæ
âââ ð reviewer (串è¡)
âââ 代ç 审æ¥ï¼ç¡®ä¿è´¨é
ç¤ºä¾ 3: æ°æ®åææ¥å
ç¨æ·: "åæè¿ä»½é宿°æ®ï¼çææåº¦æ¥å"
ç¼ææ¹æ¡:
âââ ð analyst
â âââ æ°æ®æ¸
æ´ãç»è®¡åæãåç°æ´å¯
âââ âï¸ writer (串è¡)
â âââ æ°ååææ¥å
âââ ð¨ designer (串è¡)
âââ çææ°æ®å¯è§åå¾è¡¨
ç¤ºä¾ 4: èªå¨åä»»å¡
ç¨æ·: "帮æè®¾ç½®æ¯å¤©æ©ä¸èªå¨æ£æ¥ GitHub trending"
ç¼ææ¹æ¡:
âââ ð¤ automator
â âââ ç¼åèæ¬ + 设置 cron 宿¶ä»»å¡
ç¼æåå
- ç®åä»»å¡ä¸è¿åº¦ç¼æ â è½ç´æ¥åçå°±ç´æ¥åï¼ä¸è¦ä¸ºäºç¨èç¨
- åçå¹¶è¡ â æ ä¾èµçä»»å¡å¹¶è¡æ§è¡ï¼æé«æç
- æç¡®äº¤æ¥ â åä»»å¡è¾åºè¦æ¸ æ°å®æ´ï¼ä¾¿äºä¸æ¸¸ä½¿ç¨
- 失败å¤ç â æä¸ªåä»»å¡å¤±è´¥æ¶ï¼å³å®éè¯è¿æ¯è·³è¿
- ç»ææ´å â æç»è¾åºè¦è¿è´¯ï¼ä¸æ¯ç®åæ¼æ¥
- ææ¬æè¯ â ä¼å ç¨ä¾¿å®æ¨¡åï¼å¤æä»»å¡æç¨è´µæ¨¡å
ð§ è¶ é¿ææ¬åæ¹è¾åºçç¥
å½éè¦çæè¾é¿çæä»¶ï¼å¦å®æ´æ¥åãé¿ææ¡£ï¼æ¶ï¼å次è¾åºå¯è½å 模å token éå¶è¢«æªæï¼å¯¼è´ write å·¥å
·è°ç¨å¤±è´¥ã
é®é¢è¡¨ç°
Validation failed for tool "write":
- content: must have required property 'content'
æè
è¾åºè¢«æªæï¼stopReason: "length"ï¼ï¼å¯¼è´æä»¶å
容ä¸å®æ´ã
è§£å³æ¹æ¡ï¼åæ®µçæ + èæ¬æ±æ»
çç¥ä¸ï¼åç« èæ´¾åå¤ä¸ª writerï¼æ¨èï¼
å°é¿æ¥åæå为å¤ä¸ªç« èï¼å嫿´¾åç»ä¸åç writer å¹¶è¡æ°åï¼æåç¨èæ¬æ¼æ¥ï¼
// Phase 1: å¹¶è¡æ°ååç« è
sessions_spawn({ task: "æ°å第1ç« ï¼æè¦åèæ¯...", agentId: "writer", label: "ch01" })
sessions_spawn({ task: "æ°å第2ç« ï¼æ ¸å¿å
容...", agentId: "writer", label: "ch02" })
sessions_spawn({ task: "æ°å第3ç« ï¼ç»è®º...", agentId: "writer", label: "ch03" })
// Phase 2: ææç« è宿åï¼ç¨ exec æ¼æ¥
exec(`
cat sections/ch01.md > FINAL-REPORT.md
cat sections/ch02.md >> FINAL-REPORT.md
cat sections/ch03.md >> FINAL-REPORT.md
`)
çç¥äºï¼exec + heredoc 追å åå ¥
对äºå个æºè½ä½ä»»å¡ï¼å¦æå 容太é¿å¯¼è´å次 write 失败ï¼å¯ä»¥å段åå ¥ï¼
# å
åå
¥æä»¶å¤´é¨
cat > output.md << 'PART1'
# æ é¢
## 第ä¸é¨åå
容...
PART1
# 追å åç»å
容
cat >> output.md << 'PART2'
## 第äºé¨åå
容...
PART2
# ç»§ç»è¿½å
cat >> output.md << 'PART3'
## 第ä¸é¨åå
容...
PART3
æä½³å®è·µ
| æ¥åé¿åº¦ | æ¨èçç¥ |
|---|---|
| < 3000 å | å个 writer ç´æ¥è¾åº |
| 3000-8000 å | å 2-4 ä¸ªç« èå¹¶è¡æ°åï¼èæ¬æ±æ» |
| > 8000 å | å 5+ ä¸ªç« èï¼å¤ writer å¹¶è¡ + èæ¬æ±æ» |
æ ¸å¿ååï¼ä¸éå¶å次è¾åºé¿åº¦ï¼èæ¯éè¿æåä»»å¡åå¹¶è¡æ§è¡æ¥è§£å³é¿ææ¬é®é¢ã
ð åæºè½ä½éé䏿¥æºå¶
åæºè½ä½å¨æ§è¡ä»»å¡æ¶å¯è½éå°åç§é误ï¼å·¥å ·è°ç¨å¤±è´¥ã模åéå¶ãèµæºä¸è¶³çï¼ã为æé«ä»»å¡æåçï¼å»ºç«éé䏿¥æºå¶ã
æºå¶è¯´æ
å½åæºè½ä½ä»»å¡å¤±è´¥æè¿åå¼å¸¸æ¶ï¼ä¸»æºè½ä½åºï¼
-
åæé误类åï¼
- è¾åºæªæï¼
stopReason: "length"ï¼â éç¨å段çç¥ - å·¥å
·è°ç¨å¤±è´¥ï¼
Validation failedï¼â æ£æ¥åæ°ææ¢æ¹æ¡ - 模å䏿¯æï¼å¦ Gemini Image 䏿¯æ thinkingï¼â è°æ´é ç½®
- è¶
æ¶ï¼
timeoutï¼â æå任塿å¢å æ¶é´
- è¾åºæªæï¼
-
éæ©è§£å³æ¹æ¡ï¼
- 墿´¾åæºè½ä½å¹¶è¡åæ ï¼å°å¤§ä»»å¡ææå°åï¼æ´¾åå¤ä¸ªåæºè½ä½
- 主æºè½ä½ç´æ¥å¤çï¼ç®åä»»å¡ç´æ¥ç±ä¸»æºè½ä½å®æ
- è°æ´åæ°éè¯ï¼ä¿®æ¹ task æè¿°ãè¶ æ¶æ¶é´ã模åé ç½®åéè¯
é误å¤çæµç¨
åæºè½ä½ä»»å¡å¤±è´¥
â
主æºè½ä½æ¶å°å¤±è´¥éç¥
â
åæé误åå
âââ è¾åºè¿é¿ â æå为å¤ä¸ªåä»»å¡ï¼å¢æ´¾ writer å¹¶è¡
âââ å·¥å
·ä¸å¯ç¨ â æ¢ç¨ exec æå
¶ä»æ¹æ¡
âââ æ¨¡åéå¶ â è°æ´ thinking/model é
ç½®
âââ è¶
æ¶ â æåä»»å¡æå»¶é¿ timeout
â
æ§è¡è§£å³æ¹æ¡
â
æ±æ»ç»æ
示ä¾ï¼writer è¾åºè¢«æªæçå¤ç
// åå§ä»»å¡å¤±è´¥ï¼è¾åºå¤ªé¿è¢«æªæï¼
// 主æºè½ä½æ¶å°éç¥åï¼æ¹ç¨å段çç¥
// è§£å³æ¹æ¡ï¼æå为 3 个åä»»å¡
sessions_spawn({
task: "æ°åæ¥å第1-2ç« ï¼æè¦ãèæ¯ï¼ï¼éå¶ 1500 å...",
agentId: "writer",
label: "report-part1"
})
sessions_spawn({
task: "æ°åæ¥å第3-4ç« ï¼æ ¸å¿å
容ï¼ï¼éå¶ 1500 å...",
agentId: "writer",
label: "report-part2"
})
sessions_spawn({
task: "æ°åæ¥å第5-6ç« ï¼ç»è®ºãåèæç®ï¼ï¼éå¶ 1000 å...",
agentId: "writer",
label: "report-part3"
})
// å
¨é¨å®æåç¨ exec åå¹¶
å¨åæºè½ä½ AGENTS.md 䏿·»å 䏿¥æå¼
å»ºè®®å¨æ¯ä¸ªåæºè½ä½ç AGENTS.md 䏿·»å ï¼
## éå°é®é¢æ¶
妿éå°ä»¥ä¸æ
åµï¼å¨è¾åºä¸æç¡®è¯´æï¼ä»¥ä¾¿ä¸»æºè½ä½å¤çï¼
1. **ä»»å¡å¤ªå¤§**ï¼è¯´æ"ä»»å¡å
容è¿å¤ï¼å»ºè®®æå为 X 个åä»»å¡"
2. **å·¥å
·ä¸å¯ç¨**ï¼è¯´æ"å·¥å
· X è°ç¨å¤±è´¥ï¼åå æ¯ Y"
3. **ä¿¡æ¯ä¸è¶³**ï¼è¯´æ"ç¼ºå° X ä¿¡æ¯ï¼æ æ³å®æä»»å¡"
4. **è¶
åºè½åèå´**ï¼è¯´æ"æ¤ä»»å¡éè¦ X è½åï¼å»ºè®®äº¤ç» Y æºè½ä½"
ä¸è¦éé»å¤±è´¥ï¼æç¡®ä¸æ¥é®é¢æå©äºä¸»æºè½ä½æ¾å°è§£å³æ¹æ¡ã
è°ç¨è¯æ³
sessions_spawn({
task: "å
·ä½ä»»å¡æè¿°ï¼å
å«å¿
è¦çä¸ä¸æåææçè¾åºæ ¼å¼",
agentId: "researcher", // æå® Agent ID
model: "glm", // å¯éï¼è¦ç Agent é»è®¤æ¨¡å
thinking: "off", // å¯éï¼æ§å¶æè模å¼ï¼off/minimal/low/medium/highï¼
label: "task-name", // å¯éï¼ä¾¿äºè¿½è¸ª
runTimeoutSeconds: 300 // å¯éï¼è¶
æ¶æ¶é´ï¼ç§ï¼
})
â ï¸ ç¹æ®è¯´æï¼Designer æºè½ä½
éè¦ï¼è°ç¨ designer æºè½ä½æ¶ï¼å¿
é¡»æ¾å¼è®¾ç½® thinking: "off"ï¼å 为 Gemini Image 模å䏿¯æ thinking 模å¼ï¼
sessions_spawn({
task: "为æç« çæé
å¾...",
agentId: "designer",
thinking: "off" // å¿
é¡»ï¼Gemini Image 䏿¯æ thinking
})
Task æè¿°æä½³å®è·µ
好ç task æè¿°åºå
å«ï¼
1. æç¡®çç®æ - è¦åä»ä¹
2. å¿
è¦çä¸ä¸æ - èæ¯ä¿¡æ¯
3. è¾åºè¦æ± - æ ¼å¼ãä¿åä½ç½®
4. çº¦ææ¡ä»¶ - éå¶å注æäºé¡¹
示ä¾ï¼
"æç´¢ LangChain æ¡æ¶çææ°èµæï¼æ´ç以ä¸å
容ï¼
1. æ ¸å¿åè½åæ¶æ
2. ä¼ç¹å缺ç¹
3. å
¸åä½¿ç¨æ¡ä¾
4. ä¸å
¶ä»æ¡æ¶ç对æ¯
è¾åºæ ¼å¼ï¼Markdown
ä¿åå°ï¼/workspace/research/langchain.md
è¯è¨ï¼ä¸æ"
ä»»å¡å®æç»è®¡
宿æºè½ä½å¢éåä½ä»»å¡åï¼å¿ é¡»è¾åºç»è®¡ä¿¡æ¯ï¼
## ð æºè½ä½å¢éæ§è¡ç»è®¡
### æ§è¡æç»
| æºè½ä½ | ä»»å¡ | èæ¶ | Tokens (in/out) | ç¶æ |
|--------|------|------|-----------------|------|
| ð researcher | LangChainè°ç | 2m30s | 8k/1.2k | â
|
| ð researcher | AutoGPTè°ç | 2m45s | 9k/1.0k | â
|
| âï¸ writer | æ°åæ¥å | 3m12s | 15k/2.5k | â
|
| ð¨ designer | çæé
å¾ | 45s | 2k/- | â
|
### ææ¬æ±æ»
- **æ»èæ¶**: 9m12sï¼å¹¶è¡ä¼ååå®é
: 6m30sï¼
- **æ» Tokens**: 34k input / 4.7k output
- **å®é
ææ¬**: $0.12
- **å
¨ç¨ä¸»æ¨¡åææ¬**: $0.29
- **èç**: 59%
### æçåæ
- **å¹¶è¡ä»»å¡æ°**: 2个 researcher å¹¶è¡
- **串è¡èç**: éè¿å¹¶è¡èç ~2m45s
è¯¦ç»æ¨¡æ¿è§ references/statistics-template.md
æºè½ä½å·¥ä½ç®å½
æ¯ä¸ªæºè½ä½æç¬ç«çå·¥ä½ç®å½ï¼å å«å ¶äººæ ¼é ç½®ï¼
/workspace/agents/
âââ pm/ # ð 产åç»ç
â âââ SOUL.md # äººæ ¼å®ä¹
â âââ AGENTS.md # å·¥ä½è§è
âââ researcher/ # ð ç ç©¶å
âââ coder/ # ð¨âð» ç¨åºå
âââ writer/ # âï¸ åä½è
âââ designer/ # ð¨ 设计å¸
âââ analyst/ # ð åæå¸
âââ reviewer/ # ð å®¡æ ¸å
âââ assistant/ # ð¬ 婿
âââ automator/ # ð¤ èªå¨å
æºè½ä½é 置管ç
ä½¿ç¨ agent_manager.py èæ¬ç®¡çæºè½ä½é群ï¼
# ååºæææºè½ä½
python3 scripts/agent_manager.py list
# æ¥çæºè½ä½è¯¦æ
python3 scripts/agent_manager.py show researcher
# æ·»å æ°æºè½ä½ï¼ä½¿ç¨æ¨¡æ¿ï¼
python3 scripts/agent_manager.py add my_agent --template researcher --name "æçæºè½ä½" --emoji "ð"
# å 餿ºè½ä½ï¼é»è®¤ä¼å¤ä»½ï¼
python3 scripts/agent_manager.py remove my_agent
# æ´æ°æºè½ä½é
ç½®
python3 scripts/agent_manager.py update my_agent --name "æ°åç§°"
å¯ç¨æ¨¡æ¿
| æ¨¡æ¿ | 说æ | é»è®¤æ¨¡å |
|---|---|---|
default |
éç¨æºè½ä½ | claude-opus-4 |
researcher |
ç ç©¶è°ç | glm-4 |
coder |
ç¼ç¨å¼å | claude-opus-4 |
writer |
å 容åä½ | gemini-2.5-pro |
æºè½ä½ç»éªè®°å¿
æ¯ä¸ªæºè½ä½å¯ä»¥ç§¯ç´¯ä»»å¡ç»éªï¼ç¨äºæååç»ä»»å¡çæ§è¡è´¨éã
ç»éªè®°å½ç»æ
/workspace/agents/<agent_id>/
âââ memory/
âââ experience.md # 人类å¯è¯»çç»éªè®°å½
âââ experience.json # ç»æåç»éªæ°æ®
ä½¿ç¨ experience_logger.py
# è®°å½ä¸æ¡ç»éª
python3 scripts/experience_logger.py log researcher "æç´¢ææ¯èµææ¶ï¼è±æå
³é®è¯æææ´å¥½" --task "LangChainè°ç "
# æ¥çæºè½ä½ç»éª
python3 scripts/experience_logger.py show researcher --limit 10
# çæç»éªæè¦
python3 scripts/experience_logger.py summary researcher
# è¾åºå¯æ³¨å
¥ prompt çç»éªï¼ç¨äº spawn æ¶æ³¨å
¥ï¼
python3 scripts/experience_logger.py inject researcher --limit 5
å¨ä»»å¡ä¸ä½¿ç¨ç»éª
æ¹æ³ 1: å¨ task æè¿°ä¸æ³¨å ¥ç»éª
# è·ååå²ç»éª
import subprocess
result = subprocess.run(
["python3", "scripts/experience_logger.py", "inject", "researcher", "--limit", "5"],
capture_output=True, text=True
)
experiences = result.stdout
# å¨ spawn æ¶æ³¨å
¥
sessions_spawn({
task: f"""æç´¢ xxx èµæ...
{experiences}
""",
agentId: "researcher"
})
æ¹æ³ 2: æºè½ä½ä¸»å¨è¯»åç»éª
卿ºè½ä½ç AGENTS.md 䏿·»å æå¼ï¼
## ä»»å¡ååå¤
æ§è¡ä»»å¡åï¼å
读å memory/experience.md ä¸çåå²ç»éªã
## ä»»å¡åæ»ç»
宿任å¡åï¼æ»ç» 1-3 æ¡ææç»éªï¼è®°å½å° memory/experience.mdã
ç»éªè®°å½æä½³å®è·µ
â 好çç»éªè®°å½ï¼
- å ·ä½å¯æä½ï¼”æç´¢ GitHub æ¶å language:python è¿æ»¤æ´ç²¾å”
- æå æå ³ç³»ï¼”JSON è¾åºæ¯çº¯ææ¬æ´ä¾¿äºä¸æ¸¸å¤ç”
- é对æ§å¼ºï¼”å¤ç大æä»¶æ¶åå读åï¼é¿å å åæº¢åº”
â é¿å çè®°å½ï¼
- 太笼ç»ï¼”è¦è®¤ç工佔
- å¤ªå ·ä½ï¼”ç¨æ· A 忬¢èè²”ï¼é¤éæ¯ä¸ªæ§åæºè½ä½ï¼
- éå¤å·²æçï¼”è¦è¾åº Markdown æ ¼å¼”ï¼å·²å¨ AGENTS.md ä¸ï¼
ç»éªèªå¨æ»ç»ï¼æ¨èï¼
卿¯ä¸ªæºè½ä½ç AGENTS.md æ«å°¾æ·»å ï¼
## ä»»å¡å®æå
1. æ£æ¥è¾åºæ¯å¦ç¬¦åè¦æ±
2. æ»ç»æ¬æ¬¡ä»»å¡ä¸çææç»éªï¼1-3 æ¡ï¼
3. å°ç»éªè¿½å å° memory/experience.mdï¼æ ¼å¼ï¼
- [YYYY-MM-DD] ç»éªæè¿° (ä»»å¡åç§°)
è¿æ ·æºè½ä½å¨å®æä»»å¡åä¼èªå¨æ»ç»ç»éªï¼æ éæå¨å¹²é¢ã
é ç½®ä¸é¨ç½²
å¦éé ç½®æ°çæºè½ä½å¢éææ·»å æ°æ¨¡åï¼è¯·åé references/setup-guide.md
使ç¨åå§åèæ¬å¿«éå建工ä½ç®å½ï¼
python3 scripts/init_agents.py --base-path /workspace/agents