跳到主要内容

workflow-code run

workflow-code run 在本地设备加载一个 workflow 目录,安装全局 workflow runtime API,执行所选入口(Conversation 则为 executor)的 createInput 和 workflow run,并按普通 CLI 模式输出结果。

该命令只支持 Workflow 和 Conversation。Kanban 是静态 HTML 项目,调用时会返回“不支持 workflow 执行”的明确错误;请使用 workflow-code structure 检查项目,并在 Desktop 或已发布的 Embed 中预览。

命令格式

workflow-code run [workflow-dir] [--entrypoint <id>] [--json] [--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 }) 可读取的原始参数数组。

选项

选项说明
--json切换为 JSON 报告输出。行为接近 workflow-code json
--entrypoint <id>运行指定 Workflow 入口;省略时使用 defaultEntrypoint。Conversation 传入非空值会失败。
--run-id <id>指定本次执行 ID。用于恢复 waiting_for_input run 时保持同一个 runId。
--conversation-id <id>指定会话 ID。仅对声明 executor.projectType: "conversation" 的项目有状态读写意义。
--file-store-dir <dir>指定本地文件 store 目录。未传时读取 WORKFLOW_FILE_STORE_DIR
--related-project <alias>=<绝对项目目录>显式提供一个关联项目目录;可重复指定。只接受双方 package 已确认、UUID 和 alias 匹配的关系。
--resolved-user-inputs-json <json>注入已提交的用户输入或工具审批答案数组。
--tool-permissions-json <json>宿主传入工具权限覆盖策略;普通手动 CLI 调试通常不需要传。

执行流程

阶段说明
解析目录workflow-dir 缺省时使用当前目录。
加载环境执行前加载 workflow 目录下 .env
选择入口Workflow 按 --entrypointdefaultEntrypoint 选择执行配置;Conversation 使用 executor 本身。
创建输入调用所选入口或 Conversation executor 的 createInput(context)
执行 workflow只调用所选配置的 workflow.run(input, context),普通节点会触发 CLI 输出 hooks。
设置退出码workflow 失败、暂停等待输入或 payload errCode0 时退出码为 1

输出

情况输出
成功且未传 --jsonoutput node 的内容写到 stdout。
失败且未传 --json完整 JSON 执行报告写到 stderr。
waiting_for_input 且未传 --json不会交互式读取 stdin;建议改用 workflow-code json 查看 pendingUserInput 并恢复。
传入 --json完整 JSON 执行报告写到 stdout。

示例

workflow-code run .
workflow-code run . --entrypoint validate -- --message "只校验"
workflow-code run workspace/workflow/hello -- --message "hello"
workflow-code run workspace/workflow/runtime-timer -- --title "Fixture Timer" --milliseconds 2000
workflow-code run . --conversation-id demo -- --message "继续"
workflow-code run . --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 run workspace/workflow/conversation-knowledge --conversation-id demo -- --message "记录今天的结论"
workflow-code run . --json -- --message "debug"

注意事项

场景建议
workflow 参数以 -- 开头使用分隔符 --,分隔符后的参数会原样传给 workflow。
workflow 也定义了 --entrypoint 参数CLI 的入口选择放在分隔符前;分隔符后的同名参数原样进入业务 args
需要检查节点报告使用 --json 或改用 workflow-code json
需要恢复用户输入或工具审批使用相同 --run-id--resolved-user-inputs-json;调试时优先使用 workflow-code json
需要稳定会话显式传 --conversation-id,否则会话 ID 可能由 runtime 根据输入生成。
workflow 调用 PersistentValue 或知识库 helper必须传入 context.storage.local.server。本地位置使用 WORKFLOW_PERSISTENT_VALUE_STORE_DIR;服务器位置使用项目 UUID 与 WORKFLOW_SERVER_URL / WORKFLOW_SERVER_ADMIN_KEY 或 workspace 登录态。禁止或不可用的位置直接报错,不会回退或同步。
workflow 调用关联项目 KV为每个直接关系重复传入 --related-project。CLI 校验目录、UUID、alias 和双方当前声明;单边待确认关系不可用,也不会递归解析目标项目的其它关系。
workflow 调用 context.files.createFile(...)本地运行会读取同一 server 连接并上传到 server 文件 API;未连接 server 时调用会报错,不会写入本地文件 store。