Skip to main content

tiny_agent/state/
mod.rs

1use serde::{Deserialize, Serialize};
2use uuid::Uuid;
3
4/// agent 在一次运行中的可持久化状态。
5///
6/// 注意:**工具批次进度**不在这里——它属于状态机变体
7/// `Agent::ToolExecuting(_, ToolRunState)` 的载荷;**等待用户输入**则由
8/// `Agent::WaitingForUser(_, UserInteraction)` 显式承载。此处只放跨状态延续的
9/// 标量计数与最终回复,避免出现第二份易发散的工具状态。
10#[derive(Deserialize, Serialize, Debug, Clone)]
11pub struct AgentState {
12    pub session_id: String,
13    pub steps_count: u32,
14    pub consecutive_fail_count: u32,
15    pub final_resp: Option<String>,
16}
17
18impl AgentState {
19    pub fn new(session_id: Option<String>) -> Self {
20        Self {
21            session_id: session_id.unwrap_or_else(|| Uuid::new_v4().to_string()),
22            steps_count: 0,
23            consecutive_fail_count: 0,
24            final_resp: None,
25        }
26    }
27}