workflow-code json
workflow-code json 与 run --json 使用相同执行路径,但默认输出完整执行报告。它适合调试节点顺序、错误信息、output node 结果和会话 ID。
命令格式
参数
| 参数 | 说明 |
|---|---|
workflow-dir | workflow 项目目录。不传时使用当前目录。 |
args | executor.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> | 注入已提交的用户输入答案数组。每项包含 requestId、nodeName、values、submittedAt。 |
--tool-permissions-json <json> | 内部宿主参数。App/server 可用它传入工具权限覆盖值;普通 CLI 不传时完全使用 executor tools 注册默认值。 |
--json | 兼容选项;该命令已经默认输出 JSON。 |
报告结构
| 字段 | 说明 |
|---|---|
runId | 本次本地执行 ID。 |
workflowName | 实际执行的 workflow 名称。 |
status | running、waiting_for_input、success、failed、aborted 或 timed_out。 |
definedNodes | 静态分析到的节点定义。 |
registry | executor 注册的 debug node 列表。 |
nodes | 实际执行过的节点报告。 |
outputs | 名为 output 的成功 output node 结果。 |
pendingUserInput | waiting_for_input 时的等待请求,包含表单 params 和默认值。 |
resolvedUserInputs | 本 run 已提交并注入 runtime 的用户输入答案。 |
result | workflow 最终结果或标准错误。 |
Runtime event 输出
| 配置 | 行为 |
|---|---|
WORKFLOW_APP_RUNTIME_EVENTS=1 | 在最终 JSON 前额外输出带前缀的 runtime event 行。 |
| 未设置 | 只输出最终 JSON 报告。 |
__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。
示例
runtime-timer 示例的报告会包含一条 success 状态的 timers 记录,durationMs 会跟传入的 --milliseconds 接近一致。
恢复用户输入节点
CLI 不会从 stdin 交互式读取用户输入。遇到workflow.createUserInputNode(...) 时,报告会进入 waiting_for_input 并包含 pendingUserInput:
工具审批
当 workflow 使用executor.tools 和 workflow.createToolApprovalGate() 注册工具审批时,CLI 默认只按注册默认值执行。若工具启用但未自动批准,CLI 会像普通 user-input 一样输出 waiting_for_input 和 pendingUserInput,调用方再用相同 runId 与 --resolved-user-inputs-json 恢复。App 和 server runner 会额外使用内部 --tool-permissions-json 传递本次 run 的策略快照,并在恢复 user-input 时继续传入同一份策略,避免审批后恢复丢失用户选择。
提交答案后,用相同 runId 和 requestId 恢复:
退出码
| 情况 | 退出码 |
|---|---|
workflow 成功,且 payload errCode 为 0 | 0 |
| workflow 抛错或执行失败 | 1 |
payload errCode 非 0 | 1 |