
人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆【免费下载链接】voltagentAI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework项目地址https://gitcode.com/gh_mirrors/vo/voltagent点击查看免费下载Trace Logs 是 VoltOps 可观测平台中与 Waterfall、Node-Based 视图互补的日志面板它以结构化事件的形式呈现与 trace追踪和 span跨度上下文绑定的日志是发生了什么、为什么发生这类问题的最快答案来源。本指南将带你掌握在 VoltAgent 应用中通过 Trace Logs 排查错误、检索元数据、并使用级别过滤与上下文跳转完成端到端定位的完整方法同时结合仓库源码讲清日志如何关联 trace/span、如何被查询与过滤。什么是 Trace Logs在 VoltOps 的追踪体系里一次用户请求从开始到结束对应一条tracetrace 内部每一步操作对应一个spanspan 之间通过 parent-child 关系形成层级结构可参考 Mental Model 中的时序图。当你想知道这条 trace 里到底发生了什么时有两种查看方式Waterfall 视图以时间轴层级展示 span 的时序与执行顺序适合分析耗时分布和重试扇出见 Waterfall 视图Node-Based 视图把同一 trace 渲染为可视化流程图适合一眼把握 Agent、工具、记忆、模型调用之间的连接关系见 Node-Based 视图。Trace Logs 则是第三条路径它不渲染 span 层级而是直接列出绑定到该 trace / span 上下文上的结构化日志事件。其核心价值在于——无需逐个展开 span 就能快速检查错误与元数据。当面对大量 span 时逐层点开每个 span 查看细节显然低效而日志列表能把分散在各步骤中的关键事件错误、警告、自定义元数据集中呈现。什么时候该用 Trace Logs官方文档给出的使用场景非常明确当你需要快速回答发生了什么、为什么时Logs 是最佳选择。典型场景包括一个 Agent 响应不符合预期需要确认是模型调用失败、工具执行出错还是子 Agent 委派环节出问题线上出现错误但 trace 列表里看不出明显失败节点需要先从日志里拿到错误消息再回溯需要核对某个 span 携带的元数据如 user.id、conversation.id、model.name、token 用量而无需进入详情面板。推荐的排查路径是先从错误errors入手再用搜索或级别level过滤缩小范围最后顺着 trace/span 上下文跳到精确的步骤。这与 VoltOps 的整体调试哲学一致——AI Agent 具有非确定性同一提示词可能走出完全不同的路径只有结合 trace 与日志才能还原真实执行过程见 VoltOps 概述。日志与 trace/span 是如何关联的底层数据模型要理解 Trace Logs先要明白日志事件在底层是如何与 trace、span 绑定的。在 packages/core/src/observability/types.ts 中定义了统一的日志记录结构ObservabilityLogRecordexport interface ObservabilityLogRecord { // Core identifiers timestamp: string; // ISO 8601 string traceId?: string; spanId?: string; traceFlags?: number; // Log data severityNumber?: number; severityText?: string; body: any; attributes?: Recordstring, any; // OpenTelemetry metadata resource?: Recordstring, any; instrumentationScope?: { name: string; version?: string; }; }关键字段说明traceId/spanId日志与追踪上下文的关联锚点。系统基于 OpenTelemetry 的 span context 自动填充这两个字段使每条日志都能精确归属到某条 trace 的某个 spanseverityNumber/severityText日志级别。severityNumber遵循 OpenTelemetry 数值规范数字越大越严重severityText是对应的可读文本如ERROR、WARN、INFO、DEBUGUI 中的级别过滤正是基于这两个字段实现body日志正文可以是字符串也可以是任意结构化对象此时会以安全序列化的方式参与全文检索attributes任意附加元数据例如user.id、conversation.id、model.name、usage.total_tokens等业务字段。同一份结构被贯穿用于 WebSocket 传输、本地存储持久化与远程导出保证类型安全且无需多余转换observability/types.ts 注释明确说明了这一点。底层从 OpenTelemetryReadableLogRecord到该统一结构的转换由readableLogRecordToObservabilityLog完成observability/types.ts它读取spanContext中的traceId/spanId与hrTime时间戳这正是日志自动携带 trace/span 上下文的实现来源。上手排查四步法结合文档推荐路径与底层实现一次完整的 Trace Logs 排查可以拆解为四个步骤第一步从错误开始在 trace 详情页打开 Logs 面板后先按级别过滤把ERROR以及FATAL级别的日志筛出来。错误日志通常包含失败原因消息如工具超时、模型调用限流、JSON 解析失败能直接回答哪里坏了。severityText过滤在底层对应LogFilter.severityText字段见下文查询能力表。第二步用搜索缩小范围如果错误日志不止一条使用面板上的搜索框按关键字过滤。搜索针对日志正文body进行包含匹配字符串型正文直接匹配对象型正文会被安全序列化后再匹配见 in-memory-adapter.ts 的bodyContains实现。例如搜索某个工具名、某个模型名、或某段错误码可以快速定位到相关步骤。第三步按级别level过滤除了错误级别还可以按需要查看WARN警告、重试、INFO正常流程乃至DEBUG详细诊断级别。级别过滤与关键字搜索可以组合使用——先筛级别再搜关键字或反过来逐步逼近目标日志。第四步顺着 trace/span 上下文跳到精确步骤每条日志都携带traceId与spanId。当你锁定某条关键日志后可以利用其 span 上下文跳转到对应的 span在 Waterfall 或 Node-Based 视图中高亮该步骤查看该步骤的输入/输出、LLM 配置、记忆配置等细节从而完成日志 → 步骤 → 上下文的闭环。这正是文档所说follow the trace/span context to the exact step的含义也是 Trace Logs 与其余视图协同工作的关键衔接点。Trace Logs 背后的查询能力Trace Logs 面板的搜索与过滤能力在代码层面由统一的LogFilter接口提供observability/types.ts字段类型说明traceIdstring按 trace 过滤即只看这条 trace 的日志spanIdstring按 span 过滤即只看这个步骤的日志severityNumbernumber按级别数值精确过滤severityTextstring按级别文本过滤如ERRORinstrumentationScopestring按埋点来源过滤startTimeMin/startTimeMaxnumber时间范围过滤limitnumber限制返回条数bodyContainsstring正文包含匹配字符串化后检索attributeKey/attributeValueany按元数据键值过滤存储层内存适配器对每个过滤条件都有对应实现getLogsByTraceId与getLogsBySpanId分别依赖按traceId、spanId建立的索引快速取数in-memory-adapter.tsqueryLogs则按上述条件逐个过滤、最后按limit截断in-memory-adapter.ts。同时该适配器会在日志量超过maxLogs时清理并重建索引只保留最新约 80% 的日志in-memory-adapter.ts因此生产环境建议结合下文配置合理的导出参数。让日志更好用日志级别与导出配置控制应用自身的日志级别VoltAgent 的日志级别可通过环境变量控制packages/logger/src/formatters.ts优先级从高到低VOLTAGENT_LOG_LEVEL→LOG_LEVEL→ 环境默认未设置时NODE_ENV production默认error否则默认info日志格式同样可配置VOLTAGENT_LOG_FORMAT支持json生产默认与pretty本地默认敏感字段脱敏默认覆盖password、token、apiKey、secret、authorization、cookie可通过VOLTAGENT_LOG_REDACT追加自定义路径formatters.ts。本地开发调试时把级别调到debug或trace能让 Trace Logs 面板呈现更丰富的诊断事件生产环境保持error则能减少日志噪音与存储压力。连接 VoltOps 并控制导出要让 Trace Logs 出现在 VoltOps 控制台需要先完成 连接 VoltOps配置VOLTAGENT_PUBLIC_KEY与VOLTAGENT_SECRET_KEY环境变量或用VoltOpsClient显式配置。对于高流量生产场景可通过createVoltAgentObservability控制采样与导出节奏setup.md 中的 Advanced OptionsvoltOpsSync.sampling.strategyalways本地开发默认、never、ratio按比例采样生产高流量推荐、parentvoltOpsSync.maxQueueSize导出前队列中最多缓存的 span 数默认2048voltOpsSync.maxExportBatchSize每次导出的最大 span 数默认512voltOpsSync.scheduledDelayMillis两次导出之间的间隔默认5000msvoltOpsSync.exportTimeoutMillis导出超时默认30000ms。合理设置采样率可以在保留足够排障样本的同时控制成本与导出压力。与相关视图协同从日志到完整上下文Trace Logs 不是孤立存在的。一次完整的排障往往需要跨视图协作Trace Filterstrace 列表过滤先用状态、时长、Token 用量/成本、用户 ID/会话 ID 等条件筛出可疑 trace见 Tracing 概述打开 trace 后先用 Waterfall 视图 看失败路径与耗时热点或先看 Node-Based 视图 把握整体走向再用 Trace Logs快速获取错误事件与元数据不逐个展开 span必要时结合 Feedback把人工评价如满意度评分与评论关联到具体 trace验证修复效果、及早发现回归。小结Trace Logs 的价值在于快它把散落在各 span 中的结构化事件集中成列表配合错误优先、搜索缩小、级别过滤、上下文跳转的四步法能在几秒内回答这条 Agent 执行发生了什么、为什么。底层上它是 OpenTelemetry 日志信号与 VoltOps 追踪体系融合的产物——每条日志通过traceId/spanId与追踪上下文绑定并支持按级别、正文、时间、元数据多维过滤。建议在实际排障中把 Logs 与 Waterfall、Node-Based、Feedback 视图组合使用并利用VOLTAGENT_LOG_LEVEL与采样参数把日志信号调节到适合当前环境开发调试 vs 生产高流量的粒度。赞分享人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆【免费下载链接】voltagentAI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework项目地址https://gitcode.com/gh_mirrors/vo/voltagent点击查看免费下载相关推荐co错误日志终极指南结构化日志与高效问题定位技巧co错误日志终极指南结构化日志与高效问题定位技巧 co是一个强大的Node.js基于生成器的控制流库它让异步编程变得更加优雅和直观。然而在使用co处理异步后端开发工具DORA 日志聚合实战利用 dora/logs 虚拟输入收集全数据流结构化日志DORA 日志聚合实战利用 dora/logs 虚拟输入收集全数据流结构化日志 dora/logs 是 DORA 内置的虚拟输入virtual input机器人人工智能ROS消息路由Terraform Docker Provider镜像管理如何自动化构建、推送和版本控制Terraform Docker Provider镜像管理如何自动化构建、推送和版本控制 Terraform Docker Provider是一款强大的工具人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆Agent 工作流AI 评测MCP 服务MCP Clients语音上一篇Casbin默认角色管理标准RBAC实现原理深度解析下一篇Faker::JapaneseMedia::CowboyBebop 使用指南用 Ruby 生成《星际牛仔》风格随机数据创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考