Workflow Create:在适合任务的任一界面编写工作流。
一、选择编写界面
MCP 工作流模板 —— 一种可持久化的定义,带有暂停/恢复生命周期。适用于长期存在、需要人工把关、可恢复的流水线。
原生 .claude/workflows/*.js —— 一种命令式编排脚本,用于扇出子代理。适用于大规模扇出场景(评审、审计、迁移、调研),在代码中聚合结构化结果。
二、A 路径:MCP 工作流模板
列出模板 —— 调用 mcp__plugin_ruflo-core_ruflo__workflow_template 查看可用模板。
创建工作流 —— 调用 mcp__plugin_ruflo-core_ruflo__workflow_create,提供步骤、条件与执行顺序。
列出工作流 —— 调用 mcp__plugin_ruflo-core_ruflo__workflow_list 查看所有已定义的工作流。
检查状态 —— 调用 mcp__plugin_ruflo-core_ruflo__workflow_status 监控工作流。
清理 —— 调用 mcp__plugin_ruflo-core_ruflo__workflow_delete 删除不再使用的工作流。
特性:顺序/并行步骤、条件分支、模板继承、暂停/恢复审批关卡。
三、B 路径:原生 .claude/workflows/*.js
在 .claude/workflows/ 下编写一个 .js 文件。它必须以纯字面量的 export const meta 块开头;正文在异步包装器内运行(顶层 await/return 合法),并注入以下钩子:
钩子与用途:agent(prompt, opts) 派生一个子代理,传入 opts.schema(JSON Schema)可拿回经过校验的结构化输出;parallel(thunks) 以屏障方式并发运行 thunks,对结果 .filter(Boolean);pipeline(items, ...stages) 让每个 item 独立流过各阶段,优先使用它而非屏障;phase(title) / log(msg) 用于进度分组 / 叙述。
示例结构:
export const meta = {
name: 'my-workflow', // becomes the invocable name — must be a pure literal
description: 'one line',
phases: [{ title: 'Find' }, { title: 'Verify' }],
}
const SCHEMA = { type: 'object', required: ['ok'], properties: { ok: { type: 'boolean' } }, additionalProperties: false }
phase('Find')
const found = await agent('find the things', { schema: SCHEMA, agentType: 'tester' })
phase('Verify')
const checked = await parallel((found.items || []).map((it) => () =>
agent(verify ${it}, { schema: SCHEMA })))
return { found, checked: checked.filter(Boolean) }
规则:meta 必须是纯字面量(不能有变量/调用/插值);优先使用 pipeline 而非 parallel;绝不使用 Date.now()/Math.random()(它们会抛错 —— 改用索引来制造差异)。校验语法(正文是 ESM-in-async-wrapper,不是裸模块):
node -e 'const fs=require("fs");let s=fs.readFileSync(".claude/workflows/my-workflow.js","utf8").replace(/^export\s+const\s+meta/m,"const meta");fs.writeFileSync("/tmp/wf.mjs","let agent,parallel,pipeline,phase,log,args,budget,workflow;async function __wf(){\n"+s+"\n}")'
&& node --check /tmp/wf.mjs && echo OK
使用 workflow-run 技能或 Workflow({ name: 'my-workflow' }) 运行它。参考:.claude/workflows/plugin-contract-audit.js。另见 ADR-0002。
四、适用场景
MCP 模板适合长期运行、需要人工审批关卡、需中断后续跑的流水线;原生脚本适合一次性的批量扇出任务,如代码评审、审计、迁移与调研,并在代码中汇总各子代理返回的结构化结果。
五、限制
meta 必须为纯字面量,不得使用变量、函数调用或插值;不得使用 Date.now() 与 Math.random(),否则会抛错,需要按索引制造差异;默认应优先 pipeline 而非 parallel;脚本需按上述 ESM-in-async-wrapper 方式做语法校验,不能当作普通模块直接检查。
(收费、价格、平台支持等事实暂未提供。)