runNode

workflow.runNode() 执行普通节点。它负责中断检查、节点开始/结束 hook、执行信息记录和错误包装。

签名

workflow.runNode<Input, Output>(
  node: NodeDefinition<Input, Output>,
  input: Input,
  context: NodeContext,
): Promise<Output>

参数

参数类型说明
nodeNodeDefinition<Input, Output>要执行的节点对象,通常来自节点工厂。
inputInput节点输入。
contextNodeContextruntime 上下文,用于 hooks、provider、KV、files、abortSignal。

NodeDefinition

字段说明
name节点名。必填。
standardName标准节点类型名,例如 inputllmoutput
metadata结构图和 UI 元信息。
run节点执行函数,接收 inputNodeContext。必填。

执行过程

步骤说明
1. 检查中断如果 context.abortSignal 已中断,抛出 execution_aborted
2. 发送开始事件触发节点开始 hook,并记录 executionId、nodeName、metadata 和 startedAt。
3. 执行节点调用 node.run(input, context)
4. 发送完成事件记录 output、duration 和 executionInfo,并触发完成 hook。
5. 错误包装失败时转换为 WorkflowError 并写入报告。

返回值

返回类型说明
节点输出Promise<Output>成功时返回 node.run 的结果。

错误

情况错误类型说明
执行前或执行中中断execution_aborted来自 context.abortSignal
节点抛错node_execution未知错误会包装为 WorkflowError;已有 WorkflowError 会保留并补充上下文。

示例

const parsed = await workflow.runNode(inputNode, input, context);
const answer = await workflow.runNode(llmNode, parsed, context);
const output = await workflow.runNode(outputNode, answer, context);

runStreamNode 的区别

方法节点类型返回
runNodeNodeDefinition单个 Output
runStreamNodeStreamNodeDefinition{ chunks, output }