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}