workflow-code json

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

命令格式

workflow-code json [workflow-dir] [--run-id <id>] [--conversation-id <id>] [--file-store-dir <dir>] [--resolved-user-inputs-json <json>] [--tool-permissions-json <json>] [--] [...args]

参数

参数说明
workflow-dirworkflow 项目目录。不传时使用当前目录。
argsexecutor.createInput({ args }) 可读取的原始参数数组。

选项

选项说明
--run-id <id>指定本次执行 ID。用于恢复 waiting_for_input run 时保持同一个 runId。
--conversation-id <id>指定会话 ID。
--file-store-dir <dir>指定本地文件 store 目录。未传时读取 WORKFLOW_FILE_STORE_DIR
--resolved-user-inputs-json <json>注入已提交的用户输入答案数组。每项包含 requestIdnodeNamevaluessubmittedAt
--tool-permissions-json <json>内部宿主参数。App/server 可用它传入工具权限覆盖值;普通 CLI 不传时完全使用 executor tools 注册默认值。
--json兼容选项;该命令已经默认输出 JSON。

报告结构

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

Runtime event 输出

配置行为
WORKFLOW_APP_RUNTIME_EVENTS=1在最终 JSON 前额外输出带前缀的 runtime event 行。
未设置只输出最终 JSON 报告。
runtime event 前缀是 __WORKFLOW_CODE_RUNTIME_EVENT__,用于 App 消费流式运行事件。普通脚本解析最终 JSON 时应关闭该环境变量。

PersistentValue

workflow-code json 是本地执行路径,普通 context.kv 仍使用本地 KV store。workflow 调用 context.persistentValue 时,CLI 会优先读取 WORKFLOW_SERVER_URL / WORKFLOW_SERVER_ADMIN_KEY,否则回退到 workspace CLI 登录态 workflow-auth.json,把请求代理到 server 背后的数据库;workflow 调用 context.files.createFile(...) 时也会使用同一 server 连接生成 server-backed 文件。未连接 server 时,这两类调用会在运行时报错,不会落到本地 KV 或本地文件 store。

示例

workflow-code json .
workflow-code json workspace/workflow/conversation --conversation-id demo -- --message "继续"
workflow-code json workspace/workflow/conversation-knowledge --conversation-id demo -- --dry-run --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 恢复。App 和 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 抛错或执行失败1
payload errCode01