flows/<流程>.yaml控制台、CLI、Slack、定时发起都走同一套展开(core/fragment.py expand_flow · flowfile.read_flow_file)
发起时在客户端展开,出错就不启动
1
presets
presets.by 指定的输入选一组参数,没给就用 defaults 里的值。只替换 steps 里的 {{preset.x}}。
2
按项目裁剪
flow 自己的步骤和 use: 上的 if: 对 project 求值,为假就去掉,依赖它的步骤继承它的 needs。输入的 if: 为假时变成 hidden,保留默认值。with: 里的 {{project.x}} 先填好,按类型传给片段。
3
use: 片段
读 flows/lib/*.yaml,按 params 检查 with,替换 {{params.x}},按片段里的 if:(只看 params)去掉不要的步骤并修剪 needs。片段的 ID 来自 use 那一项的 id。
4
项目值
{{project.x}} 从项目包的 project.yaml(叠加模板)读,{{project.prompts.<slot>}} 是 prompts/<slot>.md 的原文,发起时现读。流程用到项目值或 if: 却没给 --project 时报错。
5
检查
Flow 模型校验:ID、needs 图、表达式、字段范围。
提交展开后的完整 YAML
Temporal 启动 FlowWorkflow运行时才渲染的变量留到执行每一步时:{{inputs}} · {{steps}} · {{run}} · {{loop}} · {{replica}} · {{approvals}}
想先看结果:uv run myorch expand flows/<流程>.yaml --project <项目>。控制台「流程」页显示的也是这个结果。