多代理协作
- 作者仓库星标 0
- 作者仓库 skills-registry
Swarm — Multi-Agent Orchestration Protocol
You are now part of a swarm — a team of AI agents collaborating through a shared filesystem. You will communicate with other agents by reading and writing files in a .swarm/ directory. Follow this protocol exactly.
How You Were Launched
The user pasted the same goal to multiple agents. You are one of them. The user designated one agent as the orchestrator and the rest as workers. Determine your role:
- If the user said you are the orchestrator: You lead. Follow the Orchestrator Instructions below.
- If the user did NOT say you are the orchestrator: You are a worker. Follow the Worker Instructions below.
Critical Rule: NEVER STOP
You MUST run in a continuous loop until the swarm completes. Do NOT stop. Do NOT ask the user for input. Do NOT wait for user confirmation. Your loop:
WHILE .swarm/state.json "current_phase" != "completed":
1. Read .swarm/state.json
2. Read your inbox: .swarm/messages/{your-id}.jsonl (new lines only)
3. Read .swarm/messages/broadcast.jsonl (new lines only)
4. Check .swarm/tasks/index.json for tasks assigned to you or unclaimed
5. ACT — do whatever the current phase and your role require
6. Update your heartbeat: write current timestamp to .swarm/agents/{your-id}.json
7. If nothing to do, re-read from step 1
REPEAT
When the phase becomes "completed", write a final acknowledgment to broadcast and stop.
Orchestrator Instructions
Step 1: Initialize the Swarm
Create the .swarm/ directory structure:
.swarm/
├── .gitignore (contents: single line "*")
├── state.json
├── agents/
├── board/
├── tasks/
├── messages/
│ └── broadcast.jsonl
└── locks/
Write state.json:
{
"swarm_id": "<generate-a-short-uuid>",
"project_name": "<infer-from-goal>",
"current_phase": "registration",
"phase_history": [{"phase": "registration", "started_at": "<now-ISO8601>"}],
"goal": "<the user's goal verbatim>",
"orchestrator_id": "<your-agent-id>",
"agent_count": 0,
"created_at": "<now-ISO8601>"
}
Register yourself — write .swarm/agents/{your-id}.json:
{
"id": "<your-id>",
"name": "<descriptive-name>",
"role": "orchestrator",
"provider": "<your-provider>",
"capabilities": ["code-write", "code-read", "file-write", "file-read"],
"has_shell": true,
"status": "active",
"registered_at": "<now-ISO8601>",
"last_heartbeat": "<now-ISO8601>",
"is_orchestrator": true
}
Your agent ID format: orchestrator-<provider>-<session-number> (e.g., orchestrator-claude-1).
Add "bash" to capabilities if you can execute shell commands. Set "has_shell" accordingly.
Step 2: Wait for Workers to Register
Poll .swarm/agents/ directory for new agent files. When workers register:
- Read each new agent file
- Decide their role based on the goal (see Roles Reference)
- Write a
role-assignmentmessage to their inbox (.swarm/messages/{agent-id}.jsonl) - Update
agent_countinstate.json
Wait until you have at least 1 worker registered and assigned a role, or 30 seconds have passed (proceed with whoever registered).
Step 3: Advance Through Phases
Transition phases by updating state.json and broadcasting a phase-change message. Follow this sequence:
| Phase | Name | What Happens |
|---|---|---|
| 0 | registration |
Agents register and get roles |
| 1 | prd |
Create and approve the PRD |
| 2 | tasks |
Break PRD into tasks, assign them |
| 3 | implementation |
Agents build the feature |
| 4 | review |
Testing and code review |
| 5 | pr |
Create the pull request |
| done | completed |
Swarm shuts down |
See Phases Reference for detailed entry/exit criteria.
Phase transition protocol:
- Update
state.jsonwith newcurrent_phaseand append tophase_history - Write a
phase-changebroadcast message - Wait for
phase-ackmessages from all active agents before proceeding with phase work
Step 4: Monitor the Swarm
On every loop iteration:
- Check agent heartbeats. If any agent's
last_heartbeatis >60 seconds old, mark them"stale"and reclaim their tasks - Track task completion. When a blocking task completes, update dependent tasks in
index.json - Handle messages from workers (questions, completion reports, review results)
Worker Instructions
Step 1: Register
Check if .swarm/ directory exists. If not, wait and re-check (the orchestrator creates it).
Once it exists, read state.json to understand the goal. Then register yourself — write .swarm/agents/{your-id}.json:
{
"id": "<your-id>",
"name": "<descriptive-name>",
"role": "pending",
"provider": "<your-provider>",
"capabilities": ["code-write", "code-read", "file-write", "file-read"],
"has_shell": false,
"status": "active",
"registered_at": "<now-ISO8601>",
"last_heartbeat": "<now-ISO8601>",
"is_orchestrator": false
}
Your agent ID format: worker-<provider>-<session-number> (e.g., worker-codex-2).
Create your inbox file: .swarm/messages/{your-id}.jsonl (empty file).
Write a registration announcement to broadcast.jsonl:
{"id":"<uuid>","from":"<your-id>","to":"all","type":"registration","phase":"registration","content":"Agent <your-id> registered and ready for role assignment.","references":[],"timestamp":"<now-ISO8601>"}
Step 2: Wait for Role Assignment
Poll your inbox for a role-assignment message. When received:
- Update your agent file with the assigned
role - Write a
phase-ackmessage to the orchestrator's inbox - Begin acting according to your role (see Roles Reference)
Step 3: Follow the Loop
Execute the main loop described in Critical Rule: NEVER STOP above. On each iteration:
During prd phase:
- Read the PRD draft from
.swarm/board/ - Write your review based on your role's expertise
- Send
approvalorrevision-requestto orchestrator
During tasks phase:
- Read task assignments from your inbox
- Acknowledge with a
task-updatemessage
During implementation phase:
- Work on your assigned tasks
- Write actual code to the project (not to .swarm/)
- Send
task-updateon start,task-completeon finish - If blocked, send a
discussionmessage to the orchestrator
During review phase:
- If you're a reviewer: review completed code, write feedback
- If you're an implementer: address review feedback, fix issues
During pr phase:
- Acknowledge the PR creation
- Provide any final input if requested
Message Format
Every message is a single JSON line appended to a .jsonl file. Format:
{"id":"<uuid>","from":"<sender-id>","to":"<recipient-id-or-all>","type":"<message-type>","phase":"<current-phase>","content":"<message-text>","references":[],"timestamp":"<ISO8601>"}
To send a message: Append one JSON line to .swarm/messages/{recipient-id}.jsonl
To broadcast: Append to .swarm/messages/broadcast.jsonl
To read messages: Read your inbox file, process only lines you haven't seen before (track line count)
Message Types
| Type | Direction | Purpose |
|---|---|---|
registration |
Worker → Broadcast | Announce presence |
role-assignment |
Orchestrator → Worker | Assign a role |
phase-change |
Orchestrator → Broadcast | Announce phase transition |
phase-ack |
Worker → Orchestrator | Acknowledge phase transition |
task-assignment |
Orchestrator → Worker | Assign a task |
task-update |
Worker → Orchestrator | Report progress |
task-complete |
Worker → Orchestrator | Mark task done |
review-request |
Any → Any | Request review |
review-response |
Any → Any | Provide review feedback |
approval |
Any → Orchestrator | Approve a document or task |
revision-request |
Any → Orchestrator | Request changes |
discussion |
Any → Any | Free-form discussion |
shutdown |
Orchestrator → Broadcast | Swarm is done |
See Protocol Reference for full JSON schemas.
Task System
Tasks live in .swarm/tasks/. The orchestrator creates them during the tasks phase.
index.json — Master list (only orchestrator writes this):
{
"tasks": [
{"id": "task-001", "title": "...", "status": "pending", "assigned_to": null, "blocked_by": []},
{"id": "task-002", "title": "...", "status": "pending", "assigned_to": null, "blocked_by": ["task-001"]}
],
"last_updated": "<ISO8601>"
}
Individual task files (task-001.json, etc.) — contain full details. See Protocol Reference for schema.
Claiming a Task
- Check that no
.swarm/locks/task-{id}.lockfile exists - Create
.swarm/locks/task-{id}.lockcontaining your agent ID - If the file already exists (another agent claimed it), skip and find another task
- Update the task file with your ID and
"status": "in_progress" - Send a
task-updatemessage to the orchestrator
Generating Your Agent ID
Use this format to avoid collisions:
- Orchestrator:
orchestrator-<provider>-1(e.g.,orchestrator-claude-1) - Workers:
worker-<provider>-<N>where N is the count of existing agent files + 1
Determine your provider from your model:
- Claude Code →
claude - Codex →
codex - Cursor →
cursor - Gemini CLI →
gemini - Aider →
aider - Other →
agent
Consensus Rules
- PRD approval: Majority of agents approve → proceed. Max 2 revision rounds. After round 2, orchestrator finalizes and notes unresolved concerns.
- Code review: All designated reviewers must approve before PR phase.
- Task completion: Task is complete when implementer marks it done AND reviewer approves.
Quick Reference
| What | Where |
|---|---|
| Global state | .swarm/state.json |
| Agent registration | .swarm/agents/{id}.json |
| Your inbox | .swarm/messages/{your-id}.jsonl |
| Broadcast channel | .swarm/messages/broadcast.jsonl |
| Board documents | .swarm/board/ |
| Task list | .swarm/tasks/index.json |
| Task details | .swarm/tasks/task-{id}.json |
| Lock files | .swarm/locks/task-{id}.lock |
| PRD template | templates/prd.md |
| Task template | templates/task.md |
| Full protocol | references/PROTOCOL.md |
| Role details | references/ROLES.md |
| Phase details | references/PHASES.md |
| Examples | references/EXAMPLES.md |
<!-- tomevault:4.0:skill_md:2026-05-23 -->Source: BO5AMIS/swarm — distributed by TomeVault.
- 流狐分类
- AI 智能
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 88 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @tomevault-io · 未声明 license
- 流狐 Token 估算
- 较高消耗
- 流狐接入估算
- 需简单配置
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- 未声明
- 底层运行要求
- 未声明
- 检测到的文件与系统行为
-
- 只读
- 允许写入 / 修改
- Shell 执行
- 检测到的网络行为
- 仅限本地
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 Create the .swarm/ directory structure: Write state.json: Register yourself — write .swarm/agents/{your-id}.json:
Poll .swarm/agents/ directory for new agent files. When workers register: Read each new agent file Decide their role based on the goal (see Roles Reference)
Transition phases by updating state.json and broadcasting a phase-change message. Follow this sequence: Phase · Name · What Happens 0 · registration · Agents register and get roles
On every loop iteration: Check agent heartbeats. If any agent's lastheartbeat is >60 seconds old, mark them "stale" and reclaim their tasks Track task completion. When a blocking task completes, update dependent tasks in index.json
Check if .swarm/ directory exists. If not, wait and re-check (the orchestrator creates it). Once it exists, read state.json to understand the goal. Then register yourself — write .swarm/agents/{your-id}.json: Your agent ID format:…
Poll your inbox for a role-assignment message. When received: Update your agent file with the assigned role Write a phase-ack message to the orchestrator's inbox
# Swarm — Multi-Agent Orchestration Protocol
You are now part of a **swarm** — a team of AI agents collaborating through a shared filesystem. You will communicate with other agents by reading and writing files in a `.swarm/` directory. Follow this protocol exactly.
## How You Were Launched
The user pasted the same goal to multiple agents. You are one of them. The user designated **one agent as the orchestrator** and the rest as **workers**. Determine your role:
- **If the user said you are the orchestrator**: You lead. Follow the **Orchestrator Instructions** below.
- **If the user did NOT say you are the orchestrator**: You are a worker. Follow the **Worker Instructions** below.
---
## Critical Rule: NEVER STOP
You MUST run in a continuous loop until the swarm completes. **Do NOT stop. Do NOT ask the user for input. Do NOT wait for user confirmation.** Your loop:
```
WHILE .swarm/state.json "current_phase" != "completed":
1. Read .swarm/state.json
2. Read your inbox: .swarm/messages/{your-id}.jsonl (new lines only)
3. Read .swarm/messages/broadcast.jsonl (new lines only)
4. Check .swarm/tasks/index.json for tasks assigned to you or unclaimed
5. ACT — do whatever the current phase and your role require
6. Update your heartbeat: write current timestamp to .swarm/agents/{your-id}.json
7. If nothing to do, re-read from step 1
REPEAT
```
When the phase becomes `"completed"`, write a final acknowledgment to broadcast and stop.
---
## Orchestrator Instructions
### Step 1: Initialize the Swarm
Create the `.swarm/` directory structure:
```
.swarm/
├── .gitignore (contents: single line "*")
├── state.json
├── agents/
├── board/
├── tasks/
├── messages/
│ └── broadcast.jsonl
└── locks/
```
Write `state.json`:
```json
{
… 作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> How You Were Launched → Critical Rule: NEVER STOP → Orchestrator Instructions → Step 1: Initialize the Swarm → Step 2: Wait for Workers to Register → Step 3: Advance Through Phases
要点 -> swarm · one agent as the orchestrator · workers · If the user said you are the orchestrator · Orchestrator Instructions · If the user did NOT say you are the orchestrator · Worker Instructions · Do NOT stop. Do NOT ask the user for input. Do NOT wait for user confirmation.
文件/命令 -> .swarm/ · "completed" · state.json · .swarm/agents/{your-id}.json · orchestrator-<provider>-<session-number> · orchestrator-claude-1 · "bash" · "hasshell"
内容 SHA-256 -> 1e3a16772e2e
方法与流程
适用与边界
原文中的明确线索
.swarm/、"completed"、state.json、.swarm/agents/{your-id}.json、orchestrator-<provider>-<session-number>、orchestrator-claude-1、"bash"、"hasshell"