用途
Swarm from Markdown 用于将一个 Markdown 清单文件(如 todo.md、checklist.md 或其他包含 - [ ] 复选框条目的文件)转换为一个自组织的 Claude Code swarm 任务池。每个未勾选的 - [ ] 条目会变成一次 TaskCreate 调用和一个派生的工作代理;已勾选条目(- [x]、- [X])会被自动跳过。
适用场景包括:拥有含 - [ ] 复选框的 Markdown 文件;希望将独立的清单条目作为并行 swarm 任务派发;需要避免手工将长任务列表展开为 TaskCreate 循环;任务列表随时间变化,且希望使用稳定的 worker ID 以便恢复。
主要能力
- 使用 marko GFM AST(非正则)解析 Markdown 文件。
- 遍历 AST,收集子段落 checked 属性为 False 的 ListItem 节点。
- 仅为未勾选条目分配从 0 开始的索引,命名 worker-{index}。
- 根据文件名主干派生团队名:swarm-{stem}。
- 输出 JSON 或人类可读结果,展示 TaskCreate 序列和 worker 数量。
- 当条目仅在末尾追加时,worker ID 保持稳定;若勾选(完成)靠前条目,后续未勾选条目的索引会整体前移。
使用方式
快速开始示例:给定 tasks.md:
- [ ] Implement the login endpoint
- [x] Already done — skip this
- [ ] Write unit tests for auth
- [ ] Update API documentation
运行解析器: uv run scripts/markdown_to_task_pool.py tasks.md --json
输出 JSON 包含 team_name、items(index、worker_id、text)与 worker_count。随后编排 swarm:
- TeamCreate({ team_name: "swarm-tasks" })
- 为每个未勾选条目创建任务:TaskCreate({ subject: ..., description: ..., activeForm: ... })
- 为每个任务派生一个 worker(或用 --workers N 限制并发):Agent({ team_name: "swarm-tasks", name: "worker-0", subagent_type: "general-purpose", prompt: "...", run_in_background: true })
- 观察任务池状态:TaskList()
CLI 脚本参考: uv run scripts/markdown_to_task_pool.py <markdown_file> [--workers N] [--json] [-h] 参数说明:markdown_file 为含复选框条目的 Markdown 文件路径;--workers N 指定派生的 worker 代理数量(默认等于未勾选条目数);--json 输出 JSON 而非人类可读输出;-h 显示帮助。示例: uv run scripts/markdown_to_task_pool.py todo.md uv run scripts/markdown_to_task_pool.py tasks.md --json uv run scripts/markdown_to_task_pool.py tasks.md --json --workers 3 --workers N 覆盖 worker 数量但条目数不变,用于在条目多时限制并发。
Worker 提示模板:每个 worker 收到 8 步自组织提示,参数为 {team_name} 和 {worker_id}:1. TaskList() 查看任务池;2. 找到 status 为 'pending' 且未设置 owner 的任务;3. 用 TaskUpdate 设置 owner 与 status='in-progress' 认领;4. 重读描述并执行;5. 用 TaskUpdate 设置 status='complete' 并添加结果摘要;6. SendMessage 向 team-lead 发送发现;7. 重复直到无待认领任务;8. 发送 shutdown_acknowledgment。所有 worker 使用相同提示,竞相认领任务并自然负载均衡,无需中央协调者。
输出契约:--json 输出 schema 包含 team_name(swarm- 前缀 + 文件主干,无扩展名)、items(仅未勾选条目,含 index、worker_id、text)、worker_count(默认 len(items),可由 --workers N 覆盖)。退出码:成功为 0(包括零条目),文件不存在或解析失败为 1。
限制
使用带引号的复选框需要 marko GFM 扩展;AST 解析不得调用 md()(会返回 HTML)。勾选靠前条目前不要恢复部分执行的 swarm,因为索引会移位。关于收费、价格、平台支持等信息,资料暂未提供。