跳到主要内容

defineProject

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

签名​

workflow.defineProject<Input, Output>(
workflow: Definition<Input, Output>,
): Definition<Input, Output>

参数​

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

Definition 字段​

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

run 入参​

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

返回值​

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

执行关系​

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

示例​

import type { RunPayload } from "steamharness";

interface Input {
message: string;
}

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

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

注意事项​

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