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
Chapter 20Managing State Across Interactions › Debugging State Issues
Reading section 9 of 13 · Debugging State Issues · 1 minSection 9 of 13 · 1 min

Book contents

Section 9 of 13 · 1 min read

Managing State Across Interactions › Debugging State IssuesOne section · Sections in this chapter9 / 13 ↓

When your agent behaves strangely, state problems are often the culprit. Here's how to debug:

Add state inspection methods:

In[15]:
Code
def 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]:
Code
def _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]:
Code
def 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"