用途
本技能面向 Agently TriggerFlow 中的子流程(sub flow)能力,核心是 to_sub_flow(...)。它适用于需要在 TriggerFlow 内部构建隔离的、函数式子工作流边界的场景,尤其是可复用的嵌套工作流。
主要能力
- 使用
to_sub_flow(...)将嵌套工作流封装为隔离的子流程。 - 判断一个子工作流应当隔离为子流程,还是保持内联。
- 父子数据交接:通过
capture从父流程的 value、runtime_data、flow_data 和 resources 传入子流程。 - 通过
write_back将子流程结果写回父流程的 value、runtime_data 和 flow_data。 - 子流程状态隔离:子流程状态与父流程、以及可复用子模板相互隔离。
- 父流程运行时流可见性:子流程的流事件会桥接到父流程的运行时流中。
- 了解当前子流程的限制,例如子流程暂停/恢复支持。
核心心智模型
子流程是 TriggerFlow 内部一个类似函数的子工作流边界。父流程决定通过 capture 传入什么;子流程作为独立执行运行;父流程只能通过显式的 write_back 获得子流程的变化。当嵌套工作流结构与显式的父子边界比全部内联在一个流程中更重要时,应使用子流程。
选择规则
- 一个嵌套工作流应表现为可复用的隔离单元 ->
to_sub_flow(...) - 父流程输入或状态必须显式复制进子流程 ->
capture - 子流程结果或子流程派生状态必须显式写回 ->
write_back - 子流程需要父流程资源(如 logger 或服务客户端)-> 通过 capture resources 传入子流程
- 子流程流事件应出现在父流程执行流中 -> 使用子流程并消费父流程运行时流
- 子工作流可能为人工输入或外部恢复而暂停 -> 不要将子流程作为最终设计;改用 agently-triggerflow-interrupts-and-stream
- 导出、加载或可视化包含子流程的流程 -> 结合 agently-triggerflow-config 使用
重要边界
capture复制选定的父流程数据,不是实时共享引用契约。write_back是显式的;子流程的修改不会自动改变父流程。- 子流程的 flow_data 与可复用子流程模板隔离,除非显式写回。
- 子流程运行时流事件会桥接到父流程的运行时流。
- 当前运行时中,通过
to_sub_flow(...)不支持子流程暂停/恢复与外部重入。
工作流程
- 先阅读 references/subflow-boundaries.md,判断工作流应保持内联还是变为隔离的子流程。
- 若任务涉及父子数据交接,阅读 references/capture-and-write-back.md。
- 若任务涉及子流程状态隔离、流传播或当前限制,阅读 references/isolation-stream-and-limits.md。
- 若任务涉及导出或恢复已包含子流程的流程定义,切换到 agently-triggerflow-config。
- 若任务涉及子流程等待、外部重入或人工审批,切换到 agently-triggerflow-interrupts-and-stream。
- 若行为仍不正确,使用 references/troubleshooting.md。
不在范围内
- 普通线性流程构建、分支、
batch(...)、for_each(...)、collect(...) - 提供商设置或模型配置
- 以 chunk 内的模型请求为主要问题
- 子流程边界之外的显式中断设计
- 流程配置导出/导入或 Mermaid 生成
- 执行保存/加载或重启后恢复持久化
前提条件
Agently >= 4.0.8.5。
参考资料
- references/source-map.md
- references/subflow-boundaries.md
- references/capture-and-write-back.md
- references/isolation-stream-and-limits.md
- references/troubleshooting.md