langsmith-fetch
通过从LangSmith Studio获取执行轨迹来调试LangChain和LangGraph智能体。适用于调试智能体行为、排查错误、分析工具调用、检查记忆操作或评估智能体性能的场景。自动获取近期轨迹并分析执行模式。需预先安装langsmith-fetch命令行工具。
LangSmith Fetch - Agent Debugging Skill
Debug LangChain and LangGraph agents by fetching execution traces directly from LangSmith Studio in your terminal.
When to Use This Skill
Automatically activate when user mentions:
Prerequisites
1. Install langsmith-fetch
pip install langsmith-fetch2. Set Environment Variables
export LANGSMITH_API_KEY="your_langsmith_api_key"
export LANGSMITH_PROJECT="your_project_name"Verify setup:
echo $LANGSMITH_API_KEY
echo $LANGSMITH_PROJECTCore Workflows
Workflow 1: Quick Debug Recent Activity
When user asks: "What just happened?" or "Debug my agent"
Execute:
langsmith-fetch traces --last-n-minutes 5 --limit 5 --format prettyAnalyze and report:
Example response format:
Found 3 traces in the last 5 minutes:Trace 1: ✅ Success
Agent: memento
Tools: recall_memories, create_entities
Duration: 2.3s
Tokens: 1,245 Trace 2: ❌ Error
Agent: cypher
Error: "Neo4j connection timeout"
Duration: 15.1s
Failed at: search_nodes tool Trace 3: ✅ Success
Agent: memento
Tools: store_memory
Duration: 1.8s
Tokens: 892 💡 Issue found: Trace 2 failed due to Neo4j timeout. Recommend checking database connection.
Workflow 2: Deep Dive Specific Trace
When user provides: Trace ID or says "investigate that error"
Execute:
langsmith-fetch trace <trace-id> --format jsonAnalyze JSON and report:
Example response format:
Deep Dive Analysis - Trace abc123Goal: User asked "Find all projects in Neo4j"
Execution Flow:
✅ search_nodes(query: "projects")
→ Found 24 nodes❌ get_node_details(node_id: "proj_123")
→ Error: "Node not found"
→ This is the failure point⏹️ Execution stopped Root Cause:
The search_nodes tool returned node IDs that no longer exist in the database,
possibly due to recent deletions.
Suggested Fix:
Add error handling in get_node_details tool
Filter deleted nodes in search results
Update cache invalidation strategy Token Usage: 1,842 tokens ($0.0276)
Execution Time: 8.7 seconds
Workflow 3: Export Debug Session
When user says: "Save this session" or "Export traces"
Execute:
# Create session folder with timestamp
SESSION_DIR="langsmith-debug/session-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$SESSION_DIR"Export traces
langsmith-fetch traces "$SESSION_DIR/traces" --last-n-minutes 30 --limit 50 --include-metadataExport threads (conversations)
langsmith-fetch threads "$SESSION_DIR/threads" --limit 20Report:
✅ Session exported successfully!Location: langsmith-debug/session-20251224-143022/
Traces: 42 files
Threads: 8 files You can now:
Review individual trace files
Share folder with team
Analyze with external tools
Archive for future reference Session size: 2.3 MB
Workflow 4: Error Detection
When user asks: "Show me errors" or "What's failing?"
Execute:
# Fetch recent traces
langsmith-fetch traces --last-n-minutes 30 --limit 50 --format json > recent-traces.jsonSearch for errors
grep -i "error\|failed\|exception" recent-traces.jsonAnalyze and report:
Example response format:
Error Analysis - Last 30 MinutesTotal Traces: 50
Failed Traces: 7 (14% failure rate)
Error Breakdown:
Neo4j Connection Timeout (4 occurrences)
- Agent: cypher
- Tool: search_nodes
- First occurred: 14:32
- Last occurred: 14:45
- Pattern: Happens during peak loadMemory Store Failed (2 occurrences)
- Agent: memento
- Tool: store_memory
- Error: "Pinecone rate limit exceeded"
- Occurred: 14:38, 14:41Tool Not Found (1 occurrence)
- Agent: sqlcrm
- Attempted tool: "export_report" (doesn't exist)
- Occurred: 14:35💡 Recommendations:
Add retry logic for Neo4j timeouts
Implement rate limiting for Pinecone
Fix sqlcrm tool configuration Common Use Cases
Use Case 1: "Agent Not Responding"
User says: "My agent isn't doing anything"
Steps:
langsmith-fetch traces --last-n-minutes 5 --limit 5- Tracing might be disabled
- Check:
LANGCHAIN_TRACING_V2=true in environment- Check:
LANGCHAIN_API_KEY is set- Verify agent actually ran
- Review for errors
- Check execution time (hanging?)
- Verify tool calls completed
Use Case 2: "Wrong Tool Called"
User says: "Why did it use the wrong tool?"
Steps:
Use Case 3: "Memory Not Working"
User says: "Agent doesn't remember things"
Steps:
langsmith-fetch traces --last-n-minutes 10 --limit 20 --format raw | grep -i "memory\|recall\|store"- Were memory tools called?
- Did recall return results?
- Were memories actually stored?
- Are retrieved memories being used?
Use Case 4: "Performance Issues"
User says: "Agent is too slow"
Steps:
langsmith-fetch traces ./perf-analysis --last-n-minutes 30 --limit 50 --include-metadata- Execution time per trace
- Tool call latencies
- Token usage (context size)
- Number of iterations
- Slowest operations
Output Format Guide
Pretty Format (Default)
langsmith-fetch traces --limit 5 --format prettyUse for: Quick visual inspection, showing to users
JSON Format
langsmith-fetch traces --limit 5 --format jsonUse for: Detailed analysis, syntax-highlighted review
Raw Format
langsmith-fetch traces --limit 5 --format rawUse for: Piping to other commands, automation
Advanced Features
Time-Based Filtering
# After specific timestamp
langsmith-fetch traces --after "2025-12-24T13:00:00Z" --limit 20Last N minutes (most common)
langsmith-fetch traces --last-n-minutes 60 --limit 100Include Metadata
# Get extra context
langsmith-fetch traces --limit 10 --include-metadataMetadata includes: agent type, model, tags, environment
Concurrent Fetching (Faster)
# Speed up large exports
langsmith-fetch traces ./output --limit 100 --concurrent 10Troubleshooting
"No traces found matching criteria"
Possible causes:
Solutions:
# 1. Try longer timeframe
langsmith-fetch traces --last-n-minutes 1440 --limit 502. Check environment
echo $LANGSMITH_API_KEY
echo $LANGSMITH_PROJECT3. Try fetching threads instead
langsmith-fetch threads --limit 104. Verify tracing is enabled in your code
Check for: LANGCHAIN_TRACING_V2=true
"Project not found"
Solution:
# View current config
langsmith-fetch config showSet correct project
export LANGSMITH_PROJECT="correct-project-name"Or configure permanently
langsmith-fetch config set project "your-project-name"Environment variables not persisting
Solution:
# Add to shell config file (~/.bashrc or ~/.zshrc)
echo 'export LANGSMITH_API_KEY="your_key"' >> ~/.bashrc
echo 'export LANGSMITH_PROJECT="your_project"' >> ~/.bashrcReload shell config
source ~/.bashrcBest Practices
1. Regular Health Checks
# Quick check after making changes
langsmith-fetch traces --last-n-minutes 5 --limit 52. Organized Storage
langsmith-debug/
├── sessions/
│ ├── 2025-12-24/
│ └── 2025-12-25/
├── error-cases/
└── performance-tests/3. Document Findings
When you find bugs:
error-cases/ folder4. Integration with Development
# Before committing code
langsmith-fetch traces --last-n-minutes 10 --limit 5If errors found
langsmith-fetch trace <error-id> --format json > pre-commit-error.jsonQuick Reference
# Most common commandsQuick debug
langsmith-fetch traces --last-n-minutes 5 --limit 5 --format prettySpecific trace
langsmith-fetch trace <trace-id> --format prettyExport session
langsmith-fetch traces ./debug-session --last-n-minutes 30 --limit 50Find errors
langsmith-fetch traces --last-n-minutes 30 --limit 50 --format raw | grep -i errorWith metadata
langsmith-fetch traces --limit 10 --include-metadataResources
Notes for Claude
langsmith-fetch is installed before running commands--format pretty for human-readable output--format json when you need to parse and analyze dataVersion: 0.1.0
Author: Ahmad Othman Ammar Adi
License: MIT
Repository: https://github.com/OthmanAdi/langsmith-fetch-skill