9.9 KiB
9.9 KiB
Single Agent Debug Streaming
Version: 1.0.0 Date: 2025-11-01 Status: ✅ Production Ready
🔍 Overview
Track a single agent's complete lifecycle with detailed visibility into every operation, decision, and state change.
Perfect for: Understanding agent behavior, debugging issues, performance tuning, learning how agents work.
✨ What You Get
Agent Lifecycle Tracking
- Spawning → Initializing → Ready → Working → Idle → Shutting Down → Dead
- Automatic phase transitions
- Timestamp every change
- Context for each phase
Task Execution Tracing
- Task start/complete/fail
- Individual step tracking
- Duration measurement
- Result capture
- Error logging
Decision Logging
- What decisions the agent makes
- Available options
- Selected choice
- Reasoning
- Confidence scores
Communication Tracking
- Messages sent
- Messages received
- Target agents
- Message types and sizes
Performance Metrics
- Operation timing
- Step duration
- Task completion time
- Average/min/max calculations
- Automatic aggregation
Timeline Visualization
- Chronological event log
- Elapsed time markers
- Complete agent history
🚀 Quick Start
Basic Usage
import { createAgentDebugStream, DebugLevel } from 'agentic-flow/federation/debug/agent-debug-stream';
// Create debug stream for your agent
const agentDebug = createAgentDebugStream({
agentId: 'my-agent-001',
tenantId: 'my-team',
level: DebugLevel.VERBOSE,
timeline: true,
});
// Track lifecycle
agentDebug.logInitialization({ type: 'researcher' });
agentDebug.logReady();
// Track task
agentDebug.startTask('task-001', 'Research AI safety');
agentDebug.logTaskStep('task-001', 0, 'web_search', { query: '...' });
agentDebug.completeTaskStep('task-001', 0, 200);
agentDebug.completeTask('task-001', { findings: [...] });
// Track decision
agentDebug.logDecision(
'select_source',
[{ name: 'arxiv', score: 0.95 }, { name: 'scholar', score: 0.87 }],
{ name: 'arxiv', score: 0.95 },
'Highest relevance',
0.95
);
// Track communication
agentDebug.logCommunication('send', 'other-agent', { type: 'data', payload: {...} });
// Print summary
agentDebug.printSummary();
agentDebug.printTimeline();
📊 Sample Output
Phase Transitions
[2025-11-01T14:00:00.000Z] BASIC AGENT_LIFECYCLE phase_initializing
Data: {
"old_phase": "spawning",
"new_phase": "initializing",
"config": { "type": "researcher" }
}
📍 Phase Change: spawning → initializing
Task Execution
[2025-11-01T14:00:01.000Z] VERBOS TASK task_start
Data: {
"taskId": "research-001",
"description": "Research AI safety frameworks"
}
[2025-11-01T14:00:01.050Z] VERBOS TASK_STEP web_search
Data: {
"taskId": "research-001",
"step": 0,
"query": "AI safety frameworks 2024"
}
[2025-11-01T14:00:01.250Z] VERBOS TASK_STEP step_complete
Data: {
"taskId": "research-001",
"step": 0,
"duration": 200,
"results_found": 15
}
Decision Logging
[2025-11-01T14:00:02.000Z] VERBOS DECISION decision_made
Data: {
"context": "select_papers_to_analyze",
"options_count": 3,
"selected": { "title": "Paper A", "relevance": 0.95 },
"reasoning": "Highest relevance score",
"confidence": 0.95
}
🤔 Decision Made: select_papers_to_analyze → {"title":"Paper A","relevance":0.95}
Agent Summary
============================================================
📊 Agent Summary: research-agent-001
============================================================
Uptime: 1.68s
Tasks Completed: 2
Tasks Failed: 0
Decisions Made: 1
Messages Sent: 1
Messages Recv: 1
Performance Metrics:
------------------------------------------------------------
step_web_search 1x avg: 200.0ms min: 200.0ms max: 200.0ms
step_analyze_document 1x avg: 300.0ms min: 300.0ms max: 300.0ms
memory_store 1x avg: 15.0ms min: 15.0ms max: 15.0ms
task_completion 2x avg: 538.0ms min: 151.0ms max: 925.0ms
============================================================
Timeline View
============================================================
📅 Agent Timeline
============================================================
+0.000s | phase_change | {"from":"spawning","to":"initializing"}
+0.100s | phase_change | {"from":"initializing","to":"ready"}
+0.200s | phase_change | {"from":"ready","to":"working"}
+0.250s | task_start | {"taskId":"research-001"}
+1.100s | task_complete | {"taskId":"research-001","duration":925}
+1.150s | phase_change | {"from":"working","to":"idle"}
============================================================
🎯 Use Cases
1. Debug a Failing Agent
const debug = createAgentDebugStream({
agentId: 'buggy-agent',
level: DebugLevel.TRACE, // Maximum detail
trackDecisions: true,
});
// When task fails, you'll see:
// - Exact phase when failure occurred
// - All decisions leading to failure
// - Complete stack of operations
// - Performance metrics showing slow operations
2. Understand Agent Behavior
const debug = createAgentDebugStream({
agentId: 'learning-agent',
timeline: true,
});
// After agent runs:
debug.printTimeline(); // See complete sequence of events
3. Performance Profiling
const debug = createAgentDebugStream({
agentId: 'slow-agent',
level: DebugLevel.DETAILED,
});
// Track every operation with timing
// Metrics show which operations are slow
debug.printSummary(); // See performance breakdown
4. Multi-Agent Coordination
// Track each agent individually
const agent1Debug = createAgentDebugStream({ agentId: 'agent-1' });
const agent2Debug = createAgentDebugStream({ agentId: 'agent-2' });
const agent3Debug = createAgentDebugStream({ agentId: 'agent-3' });
// See exactly how they interact
agent1Debug.logCommunication('send', 'agent-2', {...});
agent2Debug.logCommunication('receive', 'agent-1', {...});
🔧 Configuration
AgentDebugConfig Options
interface AgentDebugConfig {
agentId: string; // Required: Agent identifier
tenantId?: string; // Optional: Tenant ID
level?: DebugLevel; // Verbosity level (default: VERBOSE)
format?: 'human' | 'json' | 'compact' | 'timeline';
output?: 'console' | 'file' | 'both';
outputFile?: string; // File path for output
colorize?: boolean; // Color-coded output (default: true)
trackState?: boolean; // Track state changes (default: true)
trackDecisions?: boolean; // Log decisions (default: false)
trackCommunication?: boolean; // Log messages (default: false)
timeline?: boolean; // Build timeline (default: false)
}
Environment Variables
DEBUG_LEVEL=VERBOSE # Verbosity level
DEBUG_FORMAT=human # Output format
DEBUG_OUTPUT=console # Output destination
DEBUG_TRACK_DECISIONS=true # Enable decision tracking
DEBUG_TRACK_COMMUNICATION=true # Enable communication tracking
DEBUG_TIMELINE=true # Enable timeline
📚 API Reference
AgentDebugStream Methods
Lifecycle
logAgentPhase(phase, data?)- Log phase changelogInitialization(config)- Log agent initializationlogReady(capabilities?)- Log agent readylogShutdown(reason?)- Log shutdown
Tasks
startTask(taskId, description, data?)- Start tracking tasklogTaskStep(taskId, step, operation, data?)- Log task stepcompleteTaskStep(taskId, step, duration, data?)- Complete stepcompleteTask(taskId, result?)- Complete taskfailTask(taskId, error)- Mark task as failed
Decisions & Communication
logDecision(context, options, selected, reasoning?, confidence?)- Log decisionlogCommunication(type, target, message)- Log send/receivelogMemoryOperation(operation, data, duration?)- Log memory opslogThought(thought, context?)- Log reasoning
Reporting
printSummary()- Print agent summaryprintTimeline()- Print chronological timelinegetState()- Get current stategetTasks()- Get task historygetDecisions()- Get decision historygetCommunications()- Get communication history
🎓 Best Practices
Development
# Maximum visibility
DEBUG_LEVEL=TRACE \\
DEBUG_TIMELINE=true \\
DEBUG_TRACK_DECISIONS=true \\
DEBUG_TRACK_COMMUNICATION=true \\
npm start
Debugging
// Enable all tracking
const debug = createAgentDebugStream({
agentId: agent.id,
level: DebugLevel.TRACE,
trackDecisions: true,
trackCommunication: true,
timeline: true,
});
// Subscribe to events
debug.on('phase_change', (data) => {
if (data.to === 'failed') {
console.error('AGENT FAILED!', data);
}
});
Production
# Minimal overhead
DEBUG_LEVEL=BASIC \\
DEBUG_FORMAT=json \\
DEBUG_OUTPUT=file \\
DEBUG_OUTPUT_FILE=/var/log/agent.log \\
npm start
✅ Summary
Single Agent Debug Streaming provides:
✅ Complete lifecycle tracking (spawn → shutdown) ✅ Task execution tracing with steps ✅ Decision logging with reasoning ✅ Communication tracking (send/receive) ✅ Memory operation logging ✅ Performance metrics (automatic) ✅ Timeline visualization ✅ Automatic summaries ✅ Event subscriptions ✅ Production-ready
Perfect for:
- Debugging agent behavior
- Understanding decision-making
- Performance profiling
- Learning how agents work
- Multi-agent coordination debugging
Version: 1.0.0 Last Updated: 2025-11-01 Status: ✅ Production Ready
🔍 Track your agents with complete visibility!