VoltAgent User Analytics:按用户分组 Trace、按会话聚合并联动反馈信号的排查方法
人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆【免费下载链接】voltagentAI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework项目地址https://gitcode.com/gh_mirrors/vo/voltagent点击查看免费下载在 VoltAgent 的 VoltOps 可观测平台中User Analytics用户分析页面把零散的 trace 按用户维度重新组织让你从感觉哪里不对劲快速定位到具体的用户、会话session/conversation乃至单条 trace。本文基于官方文档 User Analytics 展开并结合仓库中 OpenTelemetry 埋点与导出的源码实现讲清楚用户与会话标识是如何进入 trace 体系的、Users 页面上三大模块Key Metrics、User Feedback、Conversations各自解决什么问题以及如何设计一次从指标异常到单条 trace 的完整排查路径。为什么需要按用户维度看 Trace单条 trace 回答的是这一次请求内部发生了什么而用户问题往往跨越多次请求某个用户连续三天不满意、某类会话成本异常高、某个版本发布后特定用户群的成功率下降。Users 页面正是为此设计的聚合视图——它按 user 分组 trace帮助你判断问题影响了谁、集中在哪里which user is impacted and where issues concentrate。排查路径因此被压缩为三级跳转用户 → 会话Conversation/Session→ 单条 Trace。这与 Tracing 总览 中的过滤器设计一脉相承总览页提供 Status、Duration、Token usage / Cost、User ID / Conversation ID 等过滤条件其中User ID / Conversation ID过滤器就是专门用来钻进某一个用户旅程的入口与 Users 页面形成互补。前置条件让 trace 带上用户与会话标识Users 页面的分组能力依赖于每条 trace 上携带用户与会话信息。在 VoltAgent 中这一步通过agent.run的运行选项完成参考 Observability Setup 文档const agent new Agent({ name: Support Agent, model: openai(gpt-4), instructions: Help users with their questions, }); await agent.run(Hello, { userId: user-123, conversationId: conv-456, });字段说明userId将 trace 关联到具体用户Associates traces with a specific userconversationId按会话对 trace 进行分组Groups traces by conversation从源码结构看这两个选项最终落成 OpenTelemetry 的 span 属性并且是公共属性——在 trace-context.ts 中TraceContext构造时会把user.id、conversation.id以及operation.id、父 agent 信息等写入commonAttributes被该次运行的所有子 span 继承// Store common attributes once - these will be inherited by all child spans const commonAttributes: Recordstring, any { ...(options.userId { user.id: options.userId }), ...(options.conversationId { conversation.id: options.conversationId }), ...(parentAgentId { agent.parent.id: parentAgentId }), ...(parentAgentName { agent.parent.name: parentAgentName }), operation.id: options.operationId, };这意味着无论一次运行中发生多少次 LLM 调用、多少次工具执行用户与会话标识都会随整条 trace 链路一起上报为后续按用户/会话聚合提供了数据基础。数据如何到达观测平台两条上报路径根据部署形态trace 可以走两条路径二者在用户/会话如何映射为 trace 级字段上的逻辑是文档排查的关键VoltOps 托管路径自动检测在 Setup 文档 中说明配置VOLTAGENT_PUBLIC_KEYpk_xxxx与VOLTAGENT_SECRET_KEYsk_live_xxxx两个环境变量后VoltAgent 会自动检测并连接 VoltOps无需额外观测代码需要更细粒度控制时可用VoltOpsClient显式传入密钥或用createVoltAgentObservability配置服务名、采样策略always/never/ratio/parent、队列与批量导出参数等。Langfuse 自托管路径LangfuseExporter 作为 OpenTelemetrySpanExporter实现把 span 批转换为 Langfuse 的 trace/span/generation通过 README 中的示例挂载到VoltAgent的telemetryExporterimport { Agent, VoltAgent } from voltagent/core; import { LangfuseExporter } from voltagent/langfuse-exporter; const langfuseExporter new LangfuseExporter({ publicKey: process.env.LANGFUSE_PUBLIC_KEY, secretKey: process.env.LANGFUSE_SECRET_KEY, baseUrl: process.env.LANGFUSE_BASE_URL, // 可选默认 Langfuse Cloud // debug: true, // 可选开启导出器详细日志 }); new VoltAgent({ agents: { myAgent }, telemetryExporter: langfuseExporter, });LangfuseExporter在export时按traceId将本批 span 分组逐 trace 调用processTraceSpans其中的extractTraceInfo负责从任意 span 的属性里提取 trace 级信息用户与会话的取值优先级值得注意exporter.ts用户 ID优先enduser.id其次user.id会话 ID优先session.id其次conversation.idtrace 名称优先voltagent.agent.name其次entity.name另外还会提取tags、langfuseTraceId、langfuseUpdateParent。当updateParent为真默认值时buildTraceParams会把userId、sessionId、tags、输入输出、metadata 与模型名写入 trace 记录exporter.ts。这也解释了为什么在应用侧只传userId/conversationId两个字段平台侧就拥有了 Users 页面所需的分组键。Users 页面模块一Key Metrics关键指标Key Metrics 提供对**请求量volume、成功率success rate、延迟latency、成本cost**随时间变化的快速纵览。官方文档给出的使用定位是用它判断当前问题属于质量、性能还是花费中的哪一类并把回归regression关联到模型切换等变更上。实操建议是把 Key Metrics 当作排查的第一道分诊台成功率下跌→ 优先在 trace 列表用 Status 过滤器隔离失败或重试较多的运行再进入具体 trace 的 Waterfall 视图看哪一步失败延迟抬升→ 结合 Duration 过滤器找慢 trace关注 LLM 调用的首 chunk 延迟与工具调用耗时成本突增→ 用 Token usage / Cost 过滤器定位高价运行并核对是否与模型切换、prompt 变长相关——这正是文档强调link regressions to model switches的场景。Users 页面模块二User Feedback用户反馈User Feedback 模块把用户情绪转化为可跟踪的信号一方面用于确认修复是否真正改善了体验对比修复前后另一方面用于看清用户最在意哪些问题。文档说明该模块的图表可以呈现反馈量feedback volume、情绪趋势sentiment trends、评分聚集score clusters、主导反馈键dominant feedback keys以及用户留下评论的时间点。这与单条 trace 级的 Trace Feedback 文档构成总—分关系trace 级反馈关注三个要点——History 与来源确认这条 trace 被评过分、评分来自 app/API/model 哪一端、Key 与 Score保持信号一致例如统一使用 satisfaction 键以便跨运行比较、Comments用简短上下文说明输出为何好或坏。排查时的组合打法是在 Users 页的反馈图表中发现某类反馈键差评聚集再通过反馈源/反馈键过滤器下钻到具体 trace核对评论与当时的模型输出。Users 页面模块三Conversations会话视图Conversations 模块按 session会话分组 trace让你能端到端地跟随一条用户流程。每个会话以卡片形式呈现四个字段Status该会话内运行是否出现失败Time range会话的时间跨度帮助区分长对话与一次性请求Model会话中使用的模型便于关联模型切换带来的行为差异Cost会话累计成本用于发现异常昂贵的对话流。文档给出的使用手法很直接从卡片中挑出最可疑的会话然后把 trace 列表过滤到该会话路径上继续分析。结合前文源码部分可知会话卡片的数据基础正是运行选项conversationId写入的conversation.id属性——若你的应用没有为多轮对话维持稳定的conversationIdConversations 视图就无法把多轮 trace 归并为一个会话这一点在集成时值得优先保证。一次典型排查路径从指标到 trace综合上述模块可以沉淀出如下可复现的排查流程分诊在 Users 页 Key Metrics 中确认异常维度成功率 / 延迟 / 成本与时间范围定位用户查看受影响用户列表找到问题集中的用户定位会话在 Conversations 中按 Status / Time range / Model / Cost 四张卡片锁定最可疑会话下钻 trace把 trace 列表过滤到该会话结合 总览文档 中的 Status、Duration、Token usage / Cost 过滤器找到失败或昂贵的单条运行归因与验证打开 Waterfall / Node-Based 视图定位失败步骤并检查 User Feedback 与 trace 级 Feedback来源、key、score、comment修复后再回到 Key Metrics 与反馈趋势图验证指标与情绪是否回升。小结与适用前提Users 页面的三大模块各有分工Key Metrics 判断问题类型User Feedback 判断用户感受Conversations 定位具体哪条会话路径分组能力的前提是应用侧在agent.run中正确传入userId与conversationId它们在 trace-context.ts 中成为全链路继承的公共属性上报路径支持 VoltOps 环境变量自动接入与LangfuseExporter自托管两种形态自托管路径的用户/会话字段映射逻辑可在 exporter.ts 中直接查阅本文描述的行为以当前仓库文档与源码为准控制台的展示细节如图表具体样式可能随平台版本演进建议以实际 Setup 后在控制台中观察到的界面为准。赞分享人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆【免费下载链接】voltagentAI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework项目地址https://gitcode.com/gh_mirrors/vo/voltagent点击查看免费下载相关推荐es-toolkit 的 invertBy 使用指南反向映射对象键值并按组聚合es toolkit 的 invertBy 使用指南反向映射对象键值并按组聚合 invertBy 是 es toolkit 的 lodash 兼容层 es前端后端agno 如何读取 Agent 运行轨迹的 trace 并聚合按天的 metrics 指标agno 如何读取 Agent 运行轨迹的 trace 并聚合按天的 metrics 指标 在 agno 的 AgentOS 上运行 Agent 后你会经常人工智能大模型AI AgentAgent 框架多智能体工具调用RAGAgent 工作流Agent 记忆Hugo Pages.GroupByPublishDate 方法详解按发布时间分组页面并排序Hugo Pages.GroupByPublishDate 方法详解按发布时间分组页面并排序 本文是 Hugo 页面集合方法系列中的一篇聚焦于 Pages.开发工具前端CLI上一篇Obsidian中文社区论坛免费开源5 分钟跑起来的 Markdown 论坛下一篇m4s转mp4保姆级教程3 步合并B站缓存视频换设备也能随时看创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

RAG系统学习

RAG系统学习

参考:1.从零拆解一个 RAG 系统:纯 API 调用、无需 GPU|基于 LangChain Chroma DeepSeek 的学习笔记_通过api调用rag-CSDN博客 一、RAG 到底在解决什么问题? 大模型有两个硬伤: 训练数据有截止日期,不知…

2026/9/25 16:14:57 阅读更多 →
KytyPS5内核模拟揭秘:用C++20重建PS5虚拟内存、文件系统和pthread同步原语的底层设计

KytyPS5内核模拟揭秘:用C++20重建PS5虚拟内存、文件系统和pthread同步原语的底层设计

KytyPS5内核模拟揭秘:用C20重建PS5虚拟内存、文件系统和pthread同步原语的底层设计 【免费下载链接】KytyPS5 PlayStation 5 emulator for Windows, Linux and MacOS 项目地址: https://gitcode.com/gh_mirrors/ky/KytyPS5 KytyPS5 是一款免费的开源 PS5 模拟…

2026/9/25 16:14:57 阅读更多 →
VMware Workstation安装CentOS 7.9实战指南

VMware Workstation安装CentOS 7.9实战指南

1. 项目概述:为什么现在还要手把手教VMware装Linux?“VMware虚拟机安装Linux教程(超详细)”——这个标题看起来像十年前的老古董,但现实是:我上周刚帮三位刚转行的运维新人重装了第5台CentOS 7.9虚拟机&…

2026/9/25 16:13:56 阅读更多 →

最新新闻

基于SpringBoot的个人健康与运动习惯追踪系统设计与实现

基于SpringBoot的个人健康与运动习惯追踪系统设计与实现

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 1. 项目背景与意义 随着生活节奏的加快和工作压力的增大,久坐、缺乏运动、作息不规律等不良生活习惯日益普遍,亚健康状态成为现代人面临的突出问…

2026/9/25 16:53:19 阅读更多 →
用 Dify 打造数据可视化图表:从数据接入到图表输出的完整配置指南

用 Dify 打造数据可视化图表:从数据接入到图表输出的完整配置指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/25 16:53:18 阅读更多 →
为什么 4 卡生成快了近 5 倍?MiniMax-H3-Comfy-NPU 多 NPU 并行 1/2/4 卡配置全解

为什么 4 卡生成快了近 5 倍?MiniMax-H3-Comfy-NPU 多 NPU 并行 1/2/4 卡配置全解

为什么 4 卡生成快了近 5 倍?MiniMax-H3-Comfy-NPU 多 NPU 并行 1/2/4 卡配置全解 【免费下载链接】MiniMax-H3-Comfy-NPU 项目地址: https://ai.gitcode.com/Ascend-SACT/MiniMax-H3-Comfy-NPU MiniMax-H3-Comfy-NPU 是一个让 MiniMax-H3 视频音频联合生成…

2026/9/25 16:53:18 阅读更多 →
Scoop:Windows软件包管理神器

Scoop:Windows软件包管理神器

文章目录scoopBucketscoop scoop是Windows上的命令行安装器,和Windows自带的Winget相比,Scoop奉行绿色便携的哲学,它下载的大多是压缩包,解压到用户目录(~\scoop\apps)即用。不写注册表,不往系统盘塞垃圾。卸载时直接…

2026/9/25 16:53:18 阅读更多 →
easyocr:基于Pytorch的光学字符识别神器

easyocr:基于Pytorch的光学字符识别神器

文章目录安装并下载模型试用类和方法安装并下载模型 easyocr是基于PyTorch的光学字符识别(Optical Character Recongnition, OCR)工具,开箱即用,支持从自然场景图像到密集文档的文本提取。在确认安装Pytorch之后,用pip安装即可。 pip insta…

2026/9/25 16:53:18 阅读更多 →
MES生产执行系统全流程:工厂车间到底怎么实现数字化管理

MES生产执行系统全流程:工厂车间到底怎么实现数字化管理

1. 为什么工厂车间需要 MES很多工厂已经上了 ERP,计划部门能在系统里排单、算物料、看库存,但计划一旦下达到车间,后面的事情往往就变成“拍脑袋”和“靠人追”。今天生产了多少、哪台设备在停机、这批料是谁领的、质量异常卡在哪个工序&…

2026/9/25 16:52:18 阅读更多 →

日新闻

AI元人文:从工具使用到思维重构的深度探索

AI元人文:从工具使用到思维重构的深度探索

最近半年我一直在琢磨一件事:AI元人文到底是什么?说白了,就是“用元视角重新审视人与AI的关系”,也在“探索AI如何反向逼着我们发现自己的思考边界”。标题里的“元探索”,在我看就是一层套一层的追问——当你用AI解决…

2026/9/25 0:00:41 阅读更多 →
Python+CNN车牌识别实战:从数据预处理到模型训练与部署

Python+CNN车牌识别实战:从数据预处理到模型训练与部署

简介:基于Python与卷积神经网络的车牌识别项目,面向计算机视觉初学者及智能交通开发者,目标是帮助用户掌握从数据预处理、模型构建到实际部署的完整流程。压缩包共25个文件,包含jpg/png图像样本、py训练脚本、md说明文档、dat数据…

2026/9/25 0:00:41 阅读更多 →
Vim基础操作全攻略:保存退出、模式切换与高频命令实战

Vim基础操作全攻略:保存退出、模式切换与高频命令实战

1. 项目概述1.1 核心需求解析今天聊聊Vim。写这个题目的原因是:几乎每个后端开发者、运维人员、数据工程师某天都会遇到一个场景——深夜加班,服务器登录界面只有黑底白字,编辑器只有vi/vim,你必须在五分钟内完成一次配置修改并保…

2026/9/25 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/24 14:34:13 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/25 11:15:26 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/24 14:33:56 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/24 12:50:34 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/24 14:33:48 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/24 12:49:17 阅读更多 →