Skip to main content

WorkflowState

Trait WorkflowState 

Source
pub trait WorkflowState:
    Clone
    + Send
    + Sync
    + Serialize
    + DeserializeOwned {
    type Effect: Effect;

    // Required method
    fn apply(&mut self, effect: Self::Effect);

    // Provided methods
    fn apply_batch(&mut self, effects: impl IntoIterator<Item = Self::Effect>) { ... }
    fn apply_branch_change(&mut self, _change: &ChangeRecord) { ... }
    fn initial() -> Self
       where Self: Default { ... }
}
Expand description

工作流状态 — 编译期类型安全的状态容器。

替代 HashMap<String, Value> 动态模型。 每个工作流定义自己的 State struct 和 Effect enum, 实现此 trait 以声明状态转换规则。

Merge 职责已从 WorkflowState 剥离到 MergeStrategy 并行合并是 Graph 层的执行语义,不是 State 层的内建属性。

§示例

pub enum AgentEffect {
    AppendMessage(Message),
    IncrementIteration,
    RecordOutputTokens(usize),
}

pub struct AgentState {
    pub messages: Vec<Message>,
    pub iterations: usize,
    pub output_tokens: usize,
}

impl WorkflowState for AgentState {
    type Effect = AgentEffect;

    fn apply(&mut self, effect: Self::Effect) {
        match effect {
            AgentEffect::AppendMessage(msg) => self.messages.push(msg),
            AgentEffect::IncrementIteration => self.iterations += 1,
            AgentEffect::RecordOutputTokens(n) => self.output_tokens += n,
        }
    }
}

Required Associated Types§

Source

type Effect: Effect

与此状态关联的 Effect 类型。

Required Methods§

Source

fn apply(&mut self, effect: Self::Effect)

应用一个 Effect 到状态。

Provided Methods§

Source

fn apply_batch(&mut self, effects: impl IntoIterator<Item = Self::Effect>)

批量应用 Effect(默认逐个 apply)。

Source

fn apply_branch_change(&mut self, _change: &ChangeRecord)

应用一个 BranchState 变更记录到状态(backward compat)。

默认实现:no-op(纯 Effect 驱动的状态不需要此方法)。 State(HashMap wrapper)覆盖此方法,将 ChangeRecord 转换为 StateEffect。

Source

fn initial() -> Self
where Self: Default,

创建默认/初始状态。

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementors§