跳到主要内容

workflow-code json

workflow-code jsonrun --json 使用相同执行路径,但默认输出完整执行报告。它适合调试节点顺序、错误信息、output node 结果和会话 ID。

该命令只支持 Workflow 和 Conversation。Kanban 不产生 run report,调用时会返回“不支持 workflow 执行”的明确错误。

命令格式

workflow-code json [workflow-dir] [--entrypoint <id>] [--run-id <id>] [--conversation-id <id>] [--file-store-dir <dir>] [--related-project <alias>=<absolute-project-dir>] [--resolved-user-inputs-json <json>] [--tool-permissions-json <json>] [--] [...args]

参数

参数说明
workflow-dirworkflow 项目目录。不传时使用当前目录。
args所选入口(Conversation 则为 executor)的 createInput({ args }) 可读取的原始参数数组。

选项

选项说明
--entrypoint <id>运行指定 Workflow 入口;省略时使用默认入口。Conversation 不接受非空值。
--run-id <id>指定本次执行 ID。用于恢复 waiting_for_input run 时保持同一个 runId。
--conversation-id <id>指定会话 ID。
--file-store-dir <dir>指定本地文件 store 目录。未传时读取 WORKFLOW_FILE_STORE_DIR
--related-project <alias>=<绝对项目目录>显式提供一个双方已确认的关联项目;可重复指定,不扫描其它目录。
--resolved-user-inputs-json <json>注入已提交的用户输入答案数组。每项包含 requestIdnodeNamevaluessubmittedAt
--tool-permissions-json <json>宿主专用参数。Desktop/server 可用它传入工具权限覆盖值;普通 CLI 不传时完全使用 executor tools 注册默认值。
--json兼容选项;该命令已经默认输出 JSON。

报告结构

字段说明
runId本次本地执行 ID。
workflowName实际执行的 workflow 名称。
entrypointId / entrypointTitleWorkflow 实际入口及其标题快照;Conversation 中省略。
statusrunningwaiting_for_inputsuccessfailedabortedtimed_out
definedNodes静态分析到的节点定义。
registryexecutor 注册的 debug node 列表。
nodes实际执行过的节点报告。
outputs名为 output 的成功 output node 结果。
pendingUserInputwaiting_for_input 时的等待请求,包含表单 params 和默认值。
resolvedUserInputs本 run 已提交并注入 runtime 的用户输入答案。
resultworkflow 最终结果或标准错误。

Runtime event 输出

配置行为
WORKFLOW_DESKTOP_RUNTIME_EVENTS=1在最终 JSON 前额外输出带前缀的 runtime event 行。
未设置只输出最终 JSON 报告。

runtime event 前缀是 __WORKFLOW_CODE_RUNTIME_EVENT__,用于 Desktop 消费流式运行事件。普通脚本解析最终 JSON 时应关闭该环境变量。

PersistentValue

workflow-code json 按项目 dataStorage.mode 配置存储。context.storage.local.kv 使用 WORKFLOW_KV_STORE_DIRcontext.storage.local.persistentValue 与本地知识库使用 WORKFLOW_PERSISTENT_VALUE_STORE_DIR;两类数据均按项目 UUID 隔离且互不重叠。context.storage.server 使用顶层项目 UUID 和 WORKFLOW_SERVER_URL / WORKFLOW_SERVER_ADMIN_KEY 或 workspace CLI 登录态 workflow-auth.json。两端互不回退或同步;禁止或缺少后端的位置会报错。关联项目通过 --related-project 显式绑定,并严格跟随当前调用的 local/server 位置。context.files.createFile(...) 仍使用服务器连接生成 server-backed 文件。

示例

workflow-code json .
workflow-code json . --entrypoint validate -- --message "只校验"
workflow-code json ./conversation-project --conversation-id demo -- --message "继续"
workflow-code json . --related-project inventory=/srv/workflows/inventory -- --message "读取库存"
WORKFLOW_KV_STORE_DIR="$PWD/.workflow-kv" \
WORKFLOW_PERSISTENT_VALUE_STORE_DIR="$PWD/.workflow-persistent-values" \
workflow-code json workspace/workflow/conversation-knowledge --conversation-id demo -- --message "记录今天的结论"
workflow-code json workspace/workflow/hello -- --message "hello"
workflow-code json workspace/workflow/runtime-timer -- --title "Fixture Timer" --milliseconds 2000

runtime-timer 示例的报告会包含一条 success 状态的 timers 记录,durationMs 会跟传入的 --milliseconds 接近一致。

恢复用户输入节点

CLI 不会从 stdin 交互式读取用户输入。遇到 workflow.createUserInputNode(...) 时,报告会进入 waiting_for_input 并包含 pendingUserInput

workflow-code json . -- --message "deploy"

工具审批

当 workflow 使用 executor.toolsworkflow.createToolApprovalGate() 注册工具审批时,CLI 默认只按注册默认值执行。若工具启用但未自动批准,CLI 会像普通 user-input 一样输出 waiting_for_inputpendingUserInput,调用方再用相同 runId--resolved-user-inputs-json 恢复。Desktop 和 server runner 会额外使用 --tool-permissions-json 传递本次 run 的策略快照,并在恢复 user-input 时继续传入同一份策略,避免审批后恢复丢失用户选择。

提交答案后,用相同 runIdrequestId 恢复:

workflow-code json . \
--run-id 20260604-abcd \
--resolved-user-inputs-json '[{"requestId":"demo:20260604-abcd:approval","nodeName":"approval","values":{"approved":true},"submittedAt":"2026-06-04T10:00:00.000Z"}]' \
-- --message "deploy"

退出码

情况退出码
workflow 成功,且 payload errCode00
workflow 暂停为 waiting_for_input1;报告 payload 的 errCode202,可用同一 runId 恢复。
workflow 抛错或执行失败1
payload errCode01