用途:当用户要求 mass-ulw、任务 DAG、分阶段扇出,或任何存在真实依赖(任务 C 需先完成 A 和 B)的多智能体作业时使用。顺序本身即重点时选用 workflow。一次运行只覆盖一个阶段的依赖有序通道,不覆盖整个多阶段作业;下一阶段定义为新的运行,或在仅定义变化时使用 amend。在 ulw-loop 或 ulw-execute 下,由循环契约负责目标、标准、证据和检查点,本技能只负责每个阶段运行的定义、驱动与恢复。
规划:定义任何图前必须先完整阅读 references/planning.md,否则不得调用 sdk.define、sdk.start 或 tool.workflow 的 start。该文件包含分解请求、路由节点类别、保持并行写入范围不重叠、节点提示词契约、验证波次和失败手册等准则。
结构与目标:一次运行是声明式定义,含稳定 key(幂等)、名称和节点;节点包含 id、自足的英文提示词、类别及可选的 dependsOn。dependsOn 仅表示顺序,不会把上游输出代入下游提示词,每个提示词须独立成立。可选节点扩展:label、task_summary、description、load_skills。节点按依赖清空后以并行波次执行。每次运行绑定目标,独立运行时注册目标;节点与运行的完成声明在对照证据验证前均视为假,运行在标准通过时结束,而非最后节点报告完成时。
运行方式:构造和运行 dag 默认在 eval 单元内进行。JS 单元从环境发布的路径导入 SDK:const sdk = await import(${env("OMO_DAG_SDK_ROOT")}/sdk.js),用 sdk.define 构建定义,sdk.start 启动,sdk.wait 等待。Python 单元无法导入 ESM SDK,需直接调用 tool.workflow({...}),等待时传 detach: False。start 返回 run_id 和快照;attach 重新绑定,snapshot 为一次性读取,wait 阻塞至运行稳定,cancel 停止并传原因。
恢复:retry 对失败或取消的节点重新尝试,可指定节点或临时修改提示词;send 向单个节点的子任务发消息,可引导运行中或复活已完成的子任务;amend 对同一运行提交编辑后的定义,仅重跑变更、新增节点及其传递依赖。运行中拒绝 retry,已完成节点拒绝 retry,需改用 amend。
重启恢复:运行有日志记录,会话中断时暂停而非丢失,重启后扩展恢复其拥有的暂停运行并复用已完成节点输出。相同 key 与定义返回已有运行,而不会重复派生。
监督:在每次运行中唤醒时,检查活动节点是否符合其自身提示词的范围,发现越界、过度加工或偏离子问题时用 send 纠正。
界面:TUI 状态部件显示实时运行与节点进度;/dag 打开详情视图;外部查看器订阅 omo.dag.event 等 RPC 频道。
限制:完全独立的并行任务应使用普通并行派生;本技能不覆盖整个多阶段作业;未提供具体收费、价格或平台信息。