""" 极简 Agent 状态定义 - 只保留真正需要的字段 保留的核心字段: - messages: 对话历史(LangGraph 必需) - user_id: 用户标识 - 记忆相关:turns_since_last_summary, memory_context - 安全限制:current_step, max_steps - 统计:llm_calls, last_token_usage, last_elapsed_time """ from typing import Annotated, Sequence, Optional, Dict, Any, List from dataclasses import dataclass, field from langgraph.graph import add_messages from langchain_core.messages import BaseMessage @dataclass class AgentState: """Agent 状态""" # ========== 核心持久化字段(必需) ========== messages: Annotated[Sequence[BaseMessage], add_messages] = field(default_factory=list) user_id: str = "" # ========== 安全限制字段(防止无限循环) ========== max_steps: int = 10 current_step: int = 0 # ========== 记忆相关字段(保留) ========== turns_since_last_summary: int = 0 memory_context: str = "" # ========== 统计字段(保留) ========== llm_calls: int = 0 last_token_usage: Dict[str, Any] = field(default_factory=dict) last_elapsed_time: float = 0.0 # ========== 新增字段: 工具调用历史 ========== tool_call_history: List[dict] = field(default_factory=list) tool_result_history: List[str] = field(default_factory=list) # ========== 新增字段: 停止控制 ========== stop: bool = False stop_reason: str = "" # ========== 新增字段: 本轮使用的工具 ========== tools_used: List[str] = field(default_factory=list)