Skip to main content

MergeStrategy

Trait MergeStrategy 

Source
pub trait MergeStrategy<S>: Send + Sync {
    // Required methods
    fn merge(branches: Vec<S>) -> Result<S, WorkflowError>;
    fn default_instance() -> Self;
}
Expand description

并行分支合并策略 — Graph 层职责,非 State 内建属性。

将多个并行分支执行后产生的状态合并为一个。 合并规则由 Graph 编排层决定,而非 State 自身。

§职责边界

  • State = 数据
  • BranchState = Overlay
  • ChangeLog = Observability + Checkpoint
  • MergeStrategy = 并行语义
  • Executor = 调度
  • Node = Effect Producer

§示例

// 为 AgentState 定义合并策略
pub struct AgentStateMerge;
impl MergeStrategy<AgentState> for AgentStateMerge {
    fn merge(branches: Vec<AgentState>) -> Result<AgentState, WorkflowError> {
        // messages: concat, iterations: max, tokens: sum
    }
}

// ParallelNode 使用
ParallelNode::builder()
    .merge_strategy(AgentStateMerge)
    .branch("search", search_node)
    .branch("analyze", analyze_node)
    .build();

Required Methods§

Source

fn merge(branches: Vec<S>) -> Result<S, WorkflowError>

合并多个并行分支的状态。

branches 按注册顺序排列(与 ParallelNode 的 branch 注册顺序一致)。

Source

fn default_instance() -> Self

创建策略的默认实例(供 ParallelNodeBuilder 使用)。 对于无状态策略(如 StateMerge、LastWriteWins),直接返回自身。

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§