SUPER DOLPHINHARNESS DRIVER DOCS

PERSISTENT WORKFLOWS

Workflow、DAG 与调度

让有依赖的任务跨进程持续运行,并用持久状态、租约与幂等边界恢复。

先说结论

持久 Workflow 适合有依赖、需调度或必须在进程重启后恢复的工作。即时 Agent 运行、Thread/Turn 记录与 Workflow/DAG 是三个层次:Agent 执行工作,Thread/Turn 保存交互,DAG 保存任务拓扑、运行和恢复状态。

怎么理解

对象作用
DAG template保存 dag_key、标题、节点、依赖、默认重试、超时、并发和 fail-fast 策略
RunDAG 的一次执行实例
NodeAgent 或 automation 工作单元,包含 reads、writes、assignee 与 execution 配置
Wakeup让 ready 节点进入调度的持久队列项
Worker lease防止多个 worker 同时拥有同一调度工作

节点完成不是普通字段覆盖:done 会在同一持久化流程中推进可运行的下游;failed 可根据策略重试,或触发 fail-fast 级联取消。拓扑修改使用带版本保护的 typed ops,并在提交前做环检测。

怎么使用

  1. task_create_dag 创建模板,显式给出节点依赖、执行类型和默认策略。
  2. 启动 Run。无依赖节点进入 ready;调度器把到期 wakeup claim 为 dispatching
  3. Agent 节点启动对应 Thread;automation 节点解析 command_ref,且必须具备可信 workspace roots。
  4. 成功派发后 wakeup 标为 sent,并把运行节点与 Turn 绑定。
  5. 节点进入 done 后,系统原子推进满足依赖的下游节点;最终节点完成后 Run 收口。

Cron scheduler 可以按计划创建运行,但仍走同一套持久状态、去重与 Turn 执行边界。它不是一个绕过生命周期的定时 shell。

常见问题

  • 创建或修改形成环:Kahn 环检测返回涉及的节点,拓扑不落库。
  • automation 缺少可信 CWD/workspace roots:创建入口 fail-fast,不把错误推迟到 dispatcher。
  • 派发暂时失败:按 DAG 默认策略或节点覆盖重试;永久失败进入节点失败路径。
  • worker 在 dispatching 中失租:reclaimer 把过期 wakeup 退回 pending,下一轮重新 claim。
  • done 前进程中断:持久 Node、Wakeup、Turn binding 与幂等键用于恢复,不能只看内存 Agent 列表。

适用范围

  • DAG 解决依赖与恢复,不代替业务验收;节点输出仍需定义明确的证据。
  • task_update_node 修改的是某个 Run 中的节点,不是 DAG 模板。
  • done 节点的执行配置不可随意改写;运行中拓扑操作受状态与 OCC 约束。
  • Cron 精度和外部 Provider 可用性不构成硬实时保证。

延伸阅读

阅读代码理解与多语言 LSP,为 Agent 和 Workflow 提供受 workspace 约束的代码证据。