跳到主要内容

parseConversationDefaultInputArgs

workflow.parseConversationDefaultInputArgs(args) 解析 conversation 默认输入框写入的固定参数。它只读取 --message--images--files,不会自动读取 WorkflowContext,也不会替代 executor 的 createInput

当 workflow 在 executor.conversation.defaultInput 中启用共享默认输入框时,Desktop、server embed 和外部嵌入会把输入内容序列化为这三组参数。workflow 需要在 createInput({ args }) 中显式调用本 helper。

签名

workflow.parseConversationDefaultInputArgs(
args: string[],
): {
message: string;
images: WorkflowFileReference[];
files: WorkflowFileReference[];
}

解析规则

参数行为
--message <text>读取最后一次出现的值,并执行 trim();未传时返回空字符串。
--images <value>每次出现都会解析为一个或多个 WorkflowFileReference,最终合并为数组。
--files <value>每次出现都会解析为一个或多个 WorkflowFileReference,最终合并为数组。
缺少值该 flag 会被忽略。
其它参数保留给业务代码自行解析,本 helper 不处理。

--images--files 复用文件引用协议,支持 JSON 字符串、文件引用对象、文件引用数组或本地路径字符串。解析逻辑与文件输入节点相同,底层使用 parseWorkflowFileReferences()

executor 配置

export const executor = workflow.defineExecutor<Input, OutputPayload>({
projectType: "conversation",
workflow: conversationWorkflow,
conversation: {
defaultInput: {
enabled: true,
attachments: {
images: true,
files: true,
},
},
},
createInput({ args, conversationId }) {
const defaults = workflow.parseConversationDefaultInputArgs(args);
return {
conversationId,
message: defaults.message,
images: defaults.images,
files: defaults.files,
};
},
});

与文件输入节点配合

helper 只把参数解析成 WorkflowFileReference[]。如果需要读取文件内容,再把引用传给 workflow.createFileInputNode()

const imageInputNode = workflow.createFileInputNode({
name: "images",
accept: ["image/png", "image/jpeg", "image/webp"],
multiple: true,
});

const images = await workflow.runNode(imageInputNode, input.images, context);
const imageParts = await Promise.all(images.map((file) => file.toLLMImagePart()));

注意事项

场景说明
多次传 --message返回最后一个值,适合宿主用后一次输入覆盖前一次草稿。
多次传附件--images / --files 会合并所有出现次数。
启用默认输入框仍需要在 createInput 中显式调用 helper。
CLI 手动调试可以直接传 --message--images--files 模拟默认输入框。