Multi agent dispatch
Skill xuluoforcainiao/multi-agent-dispatch/multi-agent-dispatch
Coordinate tasks between multiple AI agents (wukong and qoderwork) using a shared DingTalk AI spreadsheet as the message bus. Use when dispatching tasks across agents, checking pending agent tasks, or setting up inter-agent collaboration workflows.From its SKILL.md
npx -y skills add xuluoforcainiao/multi-agent-dispatch --skill multi-agent-dispatchAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.1 KB, ~1.8k tokens by cl100k_base, as published. Nobody here has run it
Multi-Agent Task Dispatch
Overview
This skill defines the protocol for task dispatch and collaboration between multiple AI agents using a shared DingTalk AI spreadsheet as the communication backbone.
Key principle: Agents do not communicate via HTTP API or group chat. They communicate exclusively through a shared spreadsheet where one agent writes tasks and the other polls and executes them.
Architecture
Agent A (wukong) ──writes task──▶ Shared Spreadsheet ──polls──▶ Agent B (qoderwork)
│ │
│◀────────reads result───────────────────────────────────────┘
Human-in-the-loop: Agent B (qoderwork) can be triggered manually or via a scheduled cron job (disabled by default to save tokens).
Polling Mechanism
A QoderWork cron job QW悟空协调 (ID: 955c8b4b-4727-44c2-b224-00c069e1fc83) runs every 1 minute to auto-detect and execute pending tasks.
| Property | Value |
|---|---|
| Cron Name | QW悟空协调 |
| Cron ID | 955c8b4b-4727-44c2-b224-00c069e1fc83 |
| Interval | Every 60 seconds |
| Default State | Disabled |
On/Off Switch Protocol
To avoid idle token consumption, the cron job is disabled by default and must be explicitly enabled when tasks are pending.
Turn ON (when Agent A dispatches tasks):
- Agent A writes tasks to the spreadsheet
- Agent A notifies in the group: "@浩正 新任务已下发,请打开小Q的定时任务"
- User enables the cron job via QoderWork chat
Task Execution (Agent B cron auto-polls):
- Cron job queries spreadsheet every 60 seconds for pending tasks
- For each pending task: claim (in_progress) → execute → report (done/failed)
- After ALL tasks in the batch are processed: Agent B performs auto-shutdown:
- Re-queries spreadsheet to confirm no pending or in_progress tasks remain
- Calls
qoder_cron disableto auto-disable itself - Sends IM notification to user: "全部任务已完成,定时任务已自动关闭"
Turn OFF (auto-shutdown, no manual step):
- Agent B auto-disables the cron job after confirming all tasks are done/failed
- Agent B sends IM notification: "全部任务已完成,定时任务已自动关闭"
- User notifies Agent A in the group: "小Q任务做完了"
- Agent A updates task status to
confirmed
Boundary rule: Do NOT auto-shutdown when the first task finishes. Wait until every single task in the batch is done or failed. Re-query the spreadsheet before disabling to avoid race conditions with new tasks.
Enable Command (user to qoderwork):
- "打开定时任务" or "启用 QW悟空协调"
Disable is now automatic — Agent B auto-shuts down after all tasks are completed. User only needs to disable manually as an emergency stop.
Spreadsheet Configuration
| Property | Value |
|---|---|
| Base Name | Agent协作任务队列 |
| Base ID | dQPGYqjpJYZnRbNYCZEdqbn68akx1Z5N |
| Table Name | 任务队列 |
| Table ID | MBsdvCs |
| Spreadsheet URL | https://docs.dingtalk.com/i/nodes/dQPGYqjpJYZnRbNYCZEdqbn68akx1Z5N |
Task Protocol
Field Schema
The spreadsheet has 12 custom fields plus 4 system fields:
| Field | Type | Purpose |
|---|---|---|
| 任务标题 | primaryDoc | Task one-line summary |
| 任务ID | text | Unique identifier |
| 任务类型 | singleSelect | Task category |
| 任务描述 | richText | Detailed description |
| 优先级 | singleSelect | P0 / P1 / P2 |
| 状态 | singleSelect | Task lifecycle state |
| 发起方 | singleSelect | wukong / qoderwork |
| 接收方 | singleSelect | wukong / qoderwork |
| 回调地址 | url | Optional callback URL (currently unused) |
| 结果摘要 | richText | Execution result |
| 结果附件 | attachment | Result files |
| 完成时间 | date | Completion timestamp |
System fields (auto-managed): 创建时间, 最后编辑时间, 创建人, 最后编辑人.
Task Types
data_collection— Data collectionreport_generation— Report generationdata_analysis— Data analysisfile_processing— File processingnotification— Notificationping— Connectivity test
Status Flow
pending → in_progress → done / failed → confirmed
Task ID Format
{from}_{timestamp}_{seq}
Examples: wk_20260518_001 (wukong), qq_20260518_001 (qoderwork)
Operation Flow (v1.1)
1. Agent A Dispatches Task
- Create a new row in the spreadsheet
- Set status =
pending - Set 接收方 to the target agent
- Fill in task details (ID, type, description, priority)
2. Agent A Notifies User
Agent A sends group message: "@浩正 新任务已下发,请打开小Q定时任务"
3. User Enables Agent B
User manually enables the cron job via QoderWork chat: "打开定时任务"
4. Agent B Auto-Polls and Executes
- Cron queries spreadsheet every 60 seconds for pending tasks
- For each pending task: claim (
in_progress) → execute → report (done/failed) - After ALL tasks are processed: Agent B auto-shutdowns
5. Agent B Auto-Shuts Down
- Re-queries spreadsheet to confirm no
pendingorin_progresstasks remain - Calls
qoder_cron disableto stop itself - Sends IM to user: "全部任务已完成,定时任务已自动关闭"
6. User Notifies Agent A
User sends group message: "小Q任务做完了"
7. Agent A Confirms
- Polls spreadsheet for updated status
- Reads results
- Updates status to
confirmed
Human touch points: Only steps 3 (enable) and 6 (notify) require human action. Step 5 is fully automated.
Querying Pending Tasks
Use MCP tool mcp__钉钉 AI 表格__query_records:
- baseId:
dQPGYqjpJYZnRbNYCZEdqbn68akx1Z5N - tableId:
MBsdvCs - Filter: 接收方 =
qoderworkAND 状态 =pending
For exact field IDs and option IDs, see reference.md.
Updating Task Status
Use MCP tool mcp__钉钉 AI 表格__update_records:
- baseId:
dQPGYqjpJYZnRbNYCZEdqbn68akx1Z5N - tableId:
MBsdvCs - Pass recordId and cells to update
For singleSelect fields, pass option objects like {"id": "OPTION_ID", "name": "OPTION_NAME"}.
Known Limitations
- No DingTalk group chat: qoderwork does not support DingTalk group chat (only direct messages). Group notifications are one-way (Agent A can send, qoderwork cannot receive).
- No HTTP callbacks: Neither agent exposes public HTTP endpoints.
- Auto-shutdown: The cron auto-disables after all tasks are completed. Manual disable is only needed for emergency stop.
Future Improvements
- Expand task type enum based on real collaboration scenarios
- Auto-upload result files to DingTalk cloud drive
Additional Resources
- For complete field IDs and option IDs, see reference.md
What ships with it: 2 files
4.6 KB alongside SKILL.md
- README.md767 B
- reference.md3.8 KB