Swarm 用于并行处理大量相互独立的条目:先创建一张表,再把工作按行分发出去,最后合并结果。一行代表一个工作单元,批处理由 swarm 自动处理。
主要流程 创建:从文件、glob 模式或已解析记录构建表,一行对应一个条目,返回句柄。 运行:把指令模板派发到各行,结果合并回表中,返回 { completed, failed, skipped, failures }。 聚合:用 rows() 配合普通 JS 做计数、过滤或汇总,不需要再派发子代理。 重试:用 filter: { column: "<col>", exists: false } 只重跑失败行。
数据源选择 使用 glob / filePaths 时,一个文件即一行,行含 { id, file },子代理通过 {file} 占位符自行读取文件。使用 tasks 时直接传入已构建记录,适合数据在 JSONL、CSV 或 JSON 数组文件里的情况;应先读取并解析文件,一条记录一行,不要把多个条目合并到一行。文件较小时可一次解析并创建;文件较大时按每块 500 行读取以避免截断;若文件大到无法在一次 eval 中解析并派发,可拆成两块,只有调用 swarm 函数的那块需要 import。
子代理类型 省略 subagentType 用于分类、抽取、标注等单次模型调用即可完成的任务,这是默认方式,成本更低、速度更快,每次派发是直接模型调用,不带工具、不迭代。任务需要工具、文件访问或多步推理时,设置 subagentType,每次派发会运行完整的代理循环。
指令与上下文 instruction 是带 {column} 占位符的逐项模板,占位符由框架解析。context 是附加到每个子代理提示前的自由文本,用于共享背景、领域术语、分类规则和示例。子代理看不到代理的上下文,所需信息必须放在 instruction 与 context 中。
结构化输出 responseSchema 为必填,是 type 为 object 的 JSON Schema,其属性会成为每行的顶层列,并约束子代理返回内容。
批处理 默认自动批处理,使总派发次数不超过 10;小于等于 10 行时每行一次调用,更大表会自动分组。可用 batchSize 控制:传数字表示统一批大小,batchSize: 1 强制逐行派发;传函数 (row, rowCount) => number 可按行决定批大小,批大小最终被限制在 1 到 50 之间。
聚合与链式处理 run 会就地更新表,可链式调用来累积列。聚合时使用 rows() 和普通 JS,无需额外子代理。对于执行动作而非返回数据的任务,可用带状态或标记字段的简单 schema,exists: false 过滤仍可用于重试。
筛选 支持 { column, equals }、{ column, notEquals }、{ column, in: [...] }、{ column, exists: false } 以及 and / or 组合。
限制与技术说明 只在调用 swarm 函数的代码块中 import @/skills/swarm;数据准备不需要导入,按需解构。控制台输出上限约 5 KB,不要记录原始文件内容,只记录数量和短样本。eval 内的 readFile 返回原始内容,无行号前缀,每次最多请求 500 行,超过时用递增 offset 循环。在 eval 内读文件可让数据留在沙箱中,不进入代理上下文窗口。不要直接写入 .swarm/,始终使用 create()。行 id 必须唯一,tasks 的 id 唯一性由调用方负责,glob / filePaths 的 id 会按父目录自动消歧。若 instruction 引用了未提供该列的行,run() 会在派发任何子代理前抛错。concurrency 默认 10,被限制在 1 到 10 之间。
该技能的具体收费、价格与平台支持等信息暂未提供。