跳到主要内容

defineWorkflow

workflow.defineWorkflow<Input, Output>() 用来定义业务流程本体。它只返回传入的定义对象,真正的执行由 executor、CLI、Desktop 或 server runtime 完成。

签名

workflow.defineWorkflow<Input, Output>(
workflow: WorkflowDefinition<Input, Output>,
): WorkflowDefinition<Input, Output>

参数

参数类型说明
workflowWorkflowDefinition<Input, Output>可执行 workflow 定义,包含名称和主执行函数。

WorkflowDefinition 字段

字段类型说明
namestringworkflow 的稳定名称。server、Desktop、日志和结构分析都会使用。
run(input, context) => Output主执行函数。通常在这里调用 workflow.runNodeworkflow.runStreamNode

run 入参

名称说明
input业务输入,Workflow 来自所选入口的 createInput(context),Conversation 来自 executor.createInput(context)
contextruntime 注入的 WorkflowContext,包含 providers、KV、conversation、files、metadata、nodeHooks 和 abortSignal。

返回值

返回类型说明
workflow 定义WorkflowDefinition<Input, Output>原样返回定义对象,供 executor 引用。
run 的结果Output执行时由 runtime 读取。项目约束要求输出 payload 继承 WorkflowPayload

执行关系

阶段输入结果
executorCLI args、表单数据、server payloadInput
workflow runInputWorkflowContextOutput
runtime reportOutput标准执行报告和最终 payload

示例

import type { WorkflowPayload } from "workflow-code";

interface Input {
message: string;
}

interface Output extends WorkflowPayload {
items: Array<{
id: string;
title: string;
content: unknown;
contentType?: "markdown" | "text" | "json" | "audio";
collapsed?: boolean;
}>;
}

export const exampleWorkflow = workflow.defineWorkflow<Input, Output>({
name: "example",
async run(input, context) {
const parsed = await workflow.runNode(inputNode, input, context);
return workflow.runNode(outputNode, parsed, context);
},
});

注意事项

规则说明
不要从 "workflow-code" 导入 runtime API业务 workflow 由平台注入全局 workflow
Output 需要继承 WorkflowPayload成功时统一返回 errCode: 0errMessage: ""
异常会被 runtime 包装run 中抛出的未知错误会转换成 WorkflowError 并进入执行报告。