Managing State Across Interactions › Debugging State Issues
Michael BrenndoerferJuly 11, 20251 min read
AI Agent HandbookAll chapters Part 7 of 15Agent State and Architecture - Putting It All Together
Managing State Across Interactions › Debugging State IssuesOne section · Sections in this chapter9 / 13 ↓
Sections in this chapter13
When your agent behaves strangely, state problems are often the culprit. Here's how to debug:
Add state inspection methods:
In[15]:
Codedef inspect_state(self) -> Dict[str, Any]:
"""Return a readable view of all state"""
return {
"ephemeral": self.ephemeral_state,
"session": {
"messages": len(self.session_state["conversation_history"]),
"start": self.session_state["session_start"],
"goal": self.session_state["current_goal"]
},
"persistent": {
"preferences": self.persistent_state["preferences"],
"facts_count": len(self.persistent_state["facts"]),
"history_count": len(self.persistent_state["history"])
}
}Log state changes:
In[16]:
Codedef _save_persistent_state(self):
"""Save with logging"""
print(f"[State] Saving persistent state for user {self.user_id}")
print(f"[State] Preferences: {len(self.persistent_state['preferences'])}")
with open(f"user_{self.user_id}_state.json", "w") as f:
json.dump(self.persistent_state, f, indent=2)Test state boundaries:
In[17]:
Codedef test_state_lifecycle():
"""Test that state clears at the right times"""
agent = StatefulAgent(user_id="test")
# Test ephemeral state
agent.start_task("test task")
assert agent.ephemeral_state != {}
agent.complete_task()
assert agent.ephemeral_state == {}
# Test session state
agent.run("Hello")
assert len(agent.session_state["conversation_history"]) > 0
agent.end_session()
assert len(agent.session_state["conversation_history"]) == 0
# Test persistent state survives
agent.persistent_state["preferences"]["test"] = "value"
agent._save_persistent_state()
agent2 = StatefulAgent(user_id="test")
assert agent2.persistent_state["preferences"]["test"] == "value"