LangSmith调试获取工具 langsmith-fetch

该技能用于调试LangChain和LangGraph代理,通过从LangSmith Studio获取执行轨迹进行深度分析。关键词:LangSmith、调试、AI代理、执行轨迹、错误检测、性能优化、开发工具、追踪分析。

AI智能体 0 次安装 0 次浏览 更新于 3/6/2026

id: “cb806b75-172f-5948-8588-661d3e8c7718” name: langsmith-fetch description: 通过从LangSmith Studio获取执行轨迹来调试LangChain和LangGraph代理。用于调试代理行为、调查错误、分析工具调用、检查内存操作或检查代理性能时使用。自动获取最近的轨迹并分析执行模式。需要安装langsmith-fetch CLI。

LangSmith 获取 - 代理调试技能

通过从LangSmith Studio直接获取执行轨迹来调试LangChain和LangGraph代理,在终端中进行。

何时使用此技能

当用户提到以下内容时自动激活:

  • 🐛 “调试我的代理” 或 “出了什么问题?”
  • 🔍 “显示最近的轨迹” 或 “发生了什么?”
  • ❌ “检查错误” 或 “为什么会失败?”
  • 💾 “分析内存操作” 或 “检查长时记忆”
  • 📊 “回顾代理性能” 或 “检查令牌使用”
  • 🔧 “调用了哪些工具?” 或 “显示执行流程”

前提条件

1. 安装 langsmith-fetch

pip install langsmith-fetch

2. 设置环境变量

export LANGSMITH_API_KEY="您的langsmith_api_key"
export LANGSMITH_PROJECT="您的项目名称"

验证设置:

echo $LANGSMITH_API_KEY
echo $LANGSMITH_PROJECT

核心工作流程

工作流程 1: 快速调试最近活动

当用户问: “刚刚发生了什么?” 或 “调试我的代理”

执行:

langsmith-fetch traces --last-n-minutes 5 --limit 5 --format pretty

分析并报告:

  1. ✅ 找到的轨迹数量
  2. ⚠️ 任何错误或失败
  3. 🛠️ 调用的工具
  4. ⏱️ 执行时间
  5. 💰 令牌使用

响应格式示例:

在过去5分钟内找到3个轨迹:

轨迹 1: ✅ 成功
- 代理: memento
- 工具: recall_memories, create_entities
- 持续时间: 2.3秒
- 令牌: 1,245

轨迹 2: ❌ 错误
- 代理: cypher
- 错误: "Neo4j连接超时"
- 持续时间: 15.1秒
- 失败于: search_nodes工具

轨迹 3: ✅ 成功
- 代理: memento
- 工具: store_memory
- 持续时间: 1.8秒
- 令牌: 892

💡 发现的问题: 轨迹2因Neo4j超时而失败。建议检查数据库连接。

工作流程 2: 深入分析特定轨迹

当用户提供: 轨迹ID或说"调查那个错误"

执行:

langsmith-fetch trace <trace-id> --format json

分析JSON并报告:

  1. 🎯 代理试图做什么
  2. 🛠️ 调用了哪些工具(按顺序)
  3. ✅ 工具结果(成功/失败)
  4. ❌ 错误消息(如果有)
  5. 💡 根本原因分析
  6. 🔧 建议的修复

响应格式示例:

深入分析 - 轨迹 abc123

目标: 用户问 "在Neo4j中查找所有项目"

执行流程:
1. ✅ search_nodes(query: "projects")
   → 找到24个节点

2. ❌ get_node_details(node_id: "proj_123")
   → 错误: "未找到节点"
   → 这是失败点

3. ⏹️ 执行停止

根本原因:
search_nodes工具返回的节点ID在数据库中不再存在,
可能由于最近删除。

建议修复:
1. 在get_node_details工具中添加错误处理
2. 在搜索结果中过滤已删除的节点
3. 更新缓存失效策略

令牌使用: 1,842 令牌 ($0.0276)
执行时间: 8.7 秒

工作流程 3: 导出调试会话

当用户说: “保存此会话” 或 “导出轨迹”

执行:

# 创建带时间戳的会话文件夹
SESSION_DIR="langsmith-debug/session-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$SESSION_DIR"

# 导出轨迹
langsmith-fetch traces "$SESSION_DIR/traces" --last-n-minutes 30 --limit 50 --include-metadata

# 导出线程(对话)
langsmith-fetch threads "$SESSION_DIR/threads" --limit 20

报告:

✅ 会话成功导出!

位置: langsmith-debug/session-20251224-143022/
- 轨迹: 42 文件
- 线程: 8 文件

您现在可以:
1. 查看单个轨迹文件
2. 与团队分享文件夹
3. 使用外部工具分析
4. 归档以供将来参考

会话大小: 2.3 MB

工作流程 4: 错误检测

当用户问: “显示错误” 或 “什么失败了?”

执行:

# 获取最近轨迹
langsmith-fetch traces --last-n-minutes 30 --limit 50 --format json > recent-traces.json

# 搜索错误
grep -i "error\|failed\|exception" recent-traces.json

分析并报告:

  1. 📊 总错误数量
  2. ❌ 错误类型和频率
  3. 🕐 错误发生时间
  4. 🎯 哪个代理/工具失败
  5. 💡 常见模式

响应格式示例:

错误分析 - 过去30分钟

总轨迹: 50
失败轨迹: 7 (14%失败率)

错误细分:
1. Neo4j连接超时 (4次出现)
   - 代理: cypher
   - 工具: search_nodes
   - 首次发生: 14:32
   - 末次发生: 14:45
   - 模式: 在高峰负载时发生

2. 内存存储失败 (2次出现)
   - 代理: memento
   - 工具: store_memory
   - 错误: "Pinecone速率限制超限"
   - 发生: 14:38, 14:41

3. 工具未找到 (1次出现)
   - 代理: sqlcrm
   - 尝试工具: "export_report"(不存在)
   - 发生: 14:35

💡 推荐:
1. 为Neo4j超时添加重试逻辑
2. 为Pinecone实施速率限制
3. 修复sqlcrm工具配置

常见用例

用例 1: “代理不响应”

用户说: “我的代理什么都不做”

步骤:

  1. 检查是否存在轨迹:

    langsmith-fetch traces --last-n-minutes 5 --limit 5
    
  2. 如果未找到轨迹:

    • 追踪可能已禁用
    • 检查: 环境中的 LANGCHAIN_TRACING_V2=true
    • 检查: 是否设置了 LANGCHAIN_API_KEY
    • 验证代理是否实际运行
  3. 如果找到轨迹:

    • 查看错误
    • 检查执行时间(是否挂起?)
    • 验证工具调用是否完成

用例 2: “调用了错误工具”

用户说: “为什么调用了错误工具?”

步骤:

  1. 获取特定轨迹
  2. 查看执行时的可用工具
  3. 检查代理选择工具的原因
  4. 检查工具描述/指令
  5. 建议提示或工具配置改进

用例 3: “内存不工作”

用户说: “代理不记得东西”

步骤:

  1. 搜索内存操作:

    langsmith-fetch traces --last-n-minutes 10 --limit 20 --format raw | grep -i "memory\|recall\|store"
    
  2. 检查:

    • 是否调用了内存工具?
    • 回忆是否返回结果?
    • 内存是否实际存储?
    • 是否使用了检索到的内存?

用例 4: “性能问题”

用户说: “代理太慢”

步骤:

  1. 导出元数据:

    langsmith-fetch traces ./perf-analysis --last-n-minutes 30 --limit 50 --include-metadata
    
  2. 分析:

    • 每轨迹执行时间
    • 工具调用延迟
    • 令牌使用(上下文大小)
    • 迭代次数
    • 最慢操作
  3. 识别瓶颈并建议优化


输出格式指南

美化格式(默认)

langsmith-fetch traces --limit 5 --format pretty

用于: 快速视觉检查,向用户展示

JSON格式

langsmith-fetch traces --limit 5 --format json

用于: 详细分析,语法高亮查看

原始格式

langsmith-fetch traces --limit 5 --format raw

用于: 管道传递到其他命令,自动化


高级功能

基于时间的过滤

# 在特定时间戳后
langsmith-fetch traces --after "2025-12-24T13:00:00Z" --limit 20

# 最近N分钟(最常用)
langsmith-fetch traces --last-n-minutes 60 --limit 100

包含元数据

# 获取额外上下文
langsmith-fetch traces --limit 10 --include-metadata

# 元数据包括: 代理类型、模型、标签、环境

并发获取(更快)

# 加速大型导出
langsmith-fetch traces ./output --limit 100 --concurrent 10

故障排除

“未找到符合标准的轨迹”

可能原因:

  1. 在时间范围内无代理活动
  2. 追踪已禁用
  3. 错误的项目名称
  4. API密钥问题

解决方案:

# 1. 尝试更长的时间范围
langsmith-fetch traces --last-n-minutes 1440 --limit 50

# 2. 检查环境
echo $LANGSMITH_API_KEY
echo $LANGSMITH_PROJECT

# 3. 尝试获取线程
langsmith-fetch threads --limit 10

# 4. 验证代码中追踪是否启用
# 检查: LANGCHAIN_TRACING_V2=true

“项目未找到”

解决方案:

# 查看当前配置
langsmith-fetch config show

# 设置正确的项目
export LANGSMITH_PROJECT="正确的项目名称"

# 或永久配置
langsmith-fetch config set project "您的项目名称"

环境变量未持久化

解决方案:

# 添加到shell配置文件(~/.bashrc 或 ~/.zshrc)
echo 'export LANGSMITH_API_KEY="您的密钥"' >> ~/.bashrc
echo 'export LANGSMITH_PROJECT="您的项目"' >> ~/.bashrc

# 重新加载shell配置
source ~/.bashrc

最佳实践

1. 定期健康检查

# 更改后快速检查
langsmith-fetch traces --last-n-minutes 5 --limit 5

2. 有组织存储

langsmith-debug/
├── sessions/
│   ├── 2025-12-24/
│   └── 2025-12-25/
├── error-cases/
└── performance-tests/

3. 记录发现

找到错误时:

  1. 导出有问题的轨迹
  2. 保存到 error-cases/ 文件夹
  3. 在README中记录出错点
  4. 与团队分享轨迹ID

4. 与开发集成

# 提交代码前
langsmith-fetch traces --last-n-minutes 10 --limit 5

# 如果发现错误
langsmith-fetch trace <error-id> --format json > pre-commit-error.json

快速参考

# 最常用命令

# 快速调试
langsmith-fetch traces --last-n-minutes 5 --limit 5 --format pretty

# 特定轨迹
langsmith-fetch trace <trace-id> --format pretty

# 导出会话
langsmith-fetch traces ./debug-session --last-n-minutes 30 --limit 50

# 查找错误
langsmith-fetch traces --last-n-minutes 30 --limit 50 --format raw | grep -i error

# 包含元数据
langsmith-fetch traces --limit 10 --include-metadata

资源


给 Claude 的笔记

  • 运行命令前始终检查是否安装了 langsmith-fetch
  • 验证环境变量是否设置
  • 使用 --format pretty 输出人类可读格式
  • 使用 --format json 当需要解析和分析数据时
  • 导出会话时,创建有组织的文件夹结构
  • 始终提供清晰分析和可操作见解
  • 如果命令失败,帮助排除配置问题

版本: 0.1.0 作者: Ahmad Othman Ammar Adi 许可证: MIT 仓库: https://github.com/OthmanAdi/langsmith-fetch-skill