<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>OpenTelemetry on AI博士 万戈</title>
        <link>https://www.yesmiracle.net/tags/opentelemetry/</link>
        <description>Recent content in OpenTelemetry on AI博士 万戈</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Thu, 09 Jul 2026 13:00:00 +1000</lastBuildDate><atom:link href="https://www.yesmiracle.net/tags/opentelemetry/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>打开 Agent 的黑盒！用 OpenTelemetry 给 AI Agent 装上仪表盘吧！</title>
        <link>https://www.yesmiracle.net/post/20260709-agent-observability-otel/</link>
        <pubDate>Thu, 09 Jul 2026 13:00:00 +1000</pubDate>
        
        <guid>https://www.yesmiracle.net/post/20260709-agent-observability-otel/</guid>
        <description>&lt;p&gt;这几个月有个数字一直在我脑子里转：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;72% 的企业已经在生产环境运行多 Agent 系统，但只有 37% 的团队在做在线评估。&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;什么意思？意思是大部分人的 Agent 在生产环境里跑着，但到底跑得好不好、为啥挂了、Token 花哪了——没人知道。就像你写了一堆微服务但没上 APM，出了性能问题全靠猜。&lt;/p&gt;
&lt;p&gt;我们这行有个老道理：&lt;strong&gt;你不能优化的东西，你测量不了。你不能测量的东西，你管不了。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;AI Agent 的爆发，正在撕开传统可观测性工具一个巨大的窟窿。&lt;/p&gt;
&lt;h2 id=&#34;传统监控为什么管不了-agent&#34;&gt;传统监控为什么管不了 Agent？&lt;/h2&gt;
&lt;p&gt;先想想传统 APM（Datadog、Prometheus、Grafana 那一套）是干什么的。&lt;/p&gt;
&lt;p&gt;它们假设你的程序是&lt;strong&gt;确定性&lt;/strong&gt;的：同样的输入，同样的代码路径，同样的输出。挂了就看错误栈，重放请求就能复现。这套模型在网络服务和微服务架构上跑了十几年，很成熟。&lt;/p&gt;
&lt;p&gt;Agent 呢？完全不是一回事。&lt;/p&gt;
&lt;p&gt;Agent 的执行路径是&lt;strong&gt;非确定性&lt;/strong&gt;的。同一个 Prompt 发给 GPT-4o 两次，它可能走完全不同的 tool call 顺序。第一次一步步算对了，第二次跳了一步直接给出错误答案。你复现不了——不是因为数据丢了，是因为模型那次采样走了不同的路。&lt;/p&gt;
&lt;p&gt;更麻烦的是级联故障。多 Agent 系统里，Orchestrator 误解了子 Agent 的输出，派错了专家，错误一路放大到最终结果。这种因果链是跨 Agent 边界的，传统日志系统根本连不起来。&lt;/p&gt;
&lt;p&gt;这就像你以前查 Bug 是在一条直路上找到哪个路口拐错了，现在查 Agent Bug 是在一个迷宫里找哪个岔路导致最终走不出去——而且这个迷宫每次进来都不一样。&lt;/p&gt;
&lt;h2 id=&#34;opentelemetry-正在成为-agent-追踪的世界语&#34;&gt;OpenTelemetry 正在成为 Agent 追踪的&amp;quot;世界语&amp;quot;&lt;/h2&gt;
&lt;p&gt;好消息是，行业正在统一。&lt;/p&gt;
&lt;p&gt;2026 年 5 月，OpenTelemetry 正式从 CNCF 毕业。同一个月，它的 &lt;strong&gt;GenAI Semantic Conventions（语义约定）&lt;/strong&gt; 接近稳定版本。这套约定定义了 &lt;code&gt;gen_ai.*&lt;/code&gt; 属性的标准化 schema——LLM 调用的 span 怎么记、Tool 调用怎么记、Retriever 步骤怎么记、Agent 的决策链怎么记——全都有统一的字段名和格式。&lt;/p&gt;
&lt;p&gt;这个事的意义怎么强调都不为过。&lt;/p&gt;
&lt;p&gt;以前你在业务代码里打日志，用什么字段名没人管。&lt;code&gt;user_id&lt;/code&gt;、&lt;code&gt;userId&lt;/code&gt;、&lt;code&gt;customer_id&lt;/code&gt; 混着用，ELK 照样搜。但 Agent 追踪不一样。一个 Agent 调了另一个 Agent，A 系统用 &lt;code&gt;provider.request.model&lt;/code&gt;，B 系统用 &lt;code&gt;llm.model_name&lt;/code&gt;，跨系统关联就断了。&lt;/p&gt;
&lt;p&gt;OTel GenAI 约定就是来解决这个的——它定义了标准的 span attribute 名称：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gen_ai.request.model&lt;/code&gt; — 用的什么模型&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gen_ai.response.token_count&lt;/code&gt; — 吃了多少 Token&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gen_ai.tool.name&lt;/code&gt; — 调了哪个工具&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gen_ai.agent.id&lt;/code&gt; — 哪个 Agent 干的活&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;当所有 Agent 工具链都用同一套 schema 打 trace，你就可以实现一个很性感的事：&lt;strong&gt;用一套仪表盘看所有 Agent 的行为&lt;/strong&gt;，不管它们跑在哪个框架、哪个模型上。&lt;/p&gt;
&lt;h2 id=&#34;2026-年的工具生态三国杀&#34;&gt;2026 年的工具生态：三国杀&lt;/h2&gt;
&lt;p&gt;目前的三巨头分别是 &lt;strong&gt;LangFuse&lt;/strong&gt;、&lt;strong&gt;Arize Phoenix&lt;/strong&gt; 和 &lt;strong&gt;traceAI&lt;/strong&gt;。各自站位很有意思。&lt;/p&gt;
&lt;h3 id=&#34;langfuse最成熟的开源平台&#34;&gt;LangFuse：最成熟的开源平台&lt;/h3&gt;
&lt;p&gt;MIT 协议，19,000+ GitHub Star，2026 年 3 月发布了 V4。架构上做了一个很关键的改动：&lt;strong&gt;从 Trace 为中心变成 Observation 为中心&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;以前一个 Trace 里包着多层子 span，查一次要遍历整个层级树。现在每个 LLM 调用、每个 tool 执行、每个 agent 步骤都是独立行记录，直接查。简单说就是从&amp;quot;文档嵌套&amp;quot;变成了&amp;quot;数据库行&amp;quot;，查询速度快了一个数量级。&lt;/p&gt;
&lt;p&gt;如果你要开源自建，LangFuse 是最稳妥的起点。MIT 协议没有 License 风险，Hobby 层免费给 50,000 单位/月，个人开发者完全够用。&lt;/p&gt;
&lt;h3 id=&#34;arize-phoenixotel-原生选手&#34;&gt;Arize Phoenix：OTel 原生选手&lt;/h3&gt;
&lt;p&gt;Phoenix 的竞争力在于它一开始就建在 OTel 上。它的底层是 OpenInference——Arize 自己开源的 OTel 扩展。这意味着你用 Phoenix 打的 trace，随时可以切到 Jaeger、Grafana Tempo 或者你们公司已有的 Observability 栈。&lt;/p&gt;
&lt;p&gt;对于已经有 OTel 基础设施的团队，Phoenix 是最干净的方案——不需要跑两套 Agent 监控。它在 2026 年 6 月突破了 10,000 GitHub Star，社区活跃度很高。&lt;/p&gt;
&lt;h3 id=&#34;traceai后起之秀专攻多-agent&#34;&gt;traceAI：后起之秀，专攻多 Agent&lt;/h3&gt;
&lt;p&gt;traceAI 是 2025 年底才冒出来的项目，但增长很快。Apache 2.0 协议，主打&lt;strong&gt;多 Agent 系统的跨 Agent 追踪&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;它的核心差异化是：能追踪 Agent 之间的 span 关系。当 Agent A 调了 Agent B，traceAI 可以维护跨 Agent 边界的 parent-child span 关系，让你在一个界面里看到完整的调用链。这个是当前其他工具做得不好的地方——大部分平台还是假设你在一个进程里追踪。&lt;/p&gt;
&lt;p&gt;traceAI 的架构也很有意思：它本身不提供存储和可视化——它是一个 instrumentation 库，专门负责打 trace（支持 Python、TypeScript、Java、C#），数据发给任何 OTel 后端。这让它比 LangFuse 和 Phoenix 轻量得多，也更灵活。&lt;/p&gt;
&lt;h2 id=&#34;至今无人做好的一件事agent-的实时行为审计&#34;&gt;至今无人做好的一件事：Agent 的&amp;quot;实时行为审计&amp;quot;&lt;/h2&gt;
&lt;p&gt;聊完已有的方案，说说我觉得真正的机会在哪。&lt;/p&gt;
&lt;p&gt;现在所有的 Agent 可观测性工具都在做一件事——&lt;strong&gt;事后分析&lt;/strong&gt;。Trace 打出来，人去看 Dashboard，找问题。&lt;/p&gt;
&lt;p&gt;但 Agent 的特殊之处在于：它的行为不是静态的。同一个 Agent 今天可能表现很好，明天换了模型版本就开始出幻觉。更麻烦的是，Agent 的故障模式不是简单的&amp;quot;报错/不报错&amp;quot;，而是&amp;quot;输出质量下降&amp;quot;——这个传统监控系统根本没概念。&lt;/p&gt;
&lt;p&gt;我管这个叫 &lt;strong&gt;Agent Behavior Drift Detection（行为漂移检测）&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;理想中的方案是这样的：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;每个 Agent 部署后，先跑基准场景集，记录&amp;quot;正常&amp;quot;的 trace 模式（tool call 路径、耗时分布、Token 消耗）&lt;/li&gt;
&lt;li&gt;生产环境持续追踪，实时对比当前 trace 和基准 profile 的偏差&lt;/li&gt;
&lt;li&gt;当偏差超过阈值——比如本该调 3 个 tool 的结果只调了 1 个，或者思考链长度突然缩短——自动告警&lt;/li&gt;
&lt;li&gt;支持 trace 级别的 A/B 对比，帮你比较模型升级前后的行为变化&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这其实很像我们这个行业的老朋友——&lt;strong&gt;统计过程控制（SPC）&lt;/strong&gt; 和 &lt;strong&gt;异常检测&lt;/strong&gt;——只不过应用对象从服务器监控变成了 Agent 行为。&lt;/p&gt;
&lt;p&gt;目前没有一个工具做得好这个。LangFuse 有 eval，Phoenix 有 notebook 实验，但都没有&amp;quot;生产环境行为的实时基线对比&amp;quot;。这是蓝海里还没被填上的一个大坑。&lt;/p&gt;
&lt;h2 id=&#34;你可以从今天开始做的一件事&#34;&gt;你可以从今天开始做的一件事&lt;/h2&gt;
&lt;p&gt;如果你做云计算和大数据出身，想在这个方向储备能力，我推荐你从这件事入手：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;给你的一个生产 Agent 接入 OpenTelemetry 追踪。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;不管你现在用的是什么框架——LangChain/LangGraph、CrewAI、OpenAI Agents SDK、Claude Agent SDK——它们现在都有 OTel 集成。挑一个，接上 LangFuse 或者 Arize Phoenix（都是开源免费自托管），跑一周。&lt;/p&gt;
&lt;p&gt;你会很快发现以下问题真实存在：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;你的 Agent 是不是经常&amp;quot;沉默超时&amp;quot;？到底是在思考还是在死循环？&lt;/li&gt;
&lt;li&gt;你的 Tool call 失败率多少？失败后有没有优雅重试？&lt;/li&gt;
&lt;li&gt;Token 消耗大头在哪？是 Context 太大还是无效的反思循环太多？&lt;/li&gt;
&lt;li&gt;多 Agent 场景下，Orchestrator 分配任务是不是均匀的？还是某个子 Agent 一直在干活？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这些问题，没有 trace 之前你是靠猜的。有了 trace，每一行数据都摊在桌面上。&lt;/p&gt;
&lt;p&gt;如果还想深一步，可以自己写一个简单的&lt;strong&gt;行为 Profile 对比器&lt;/strong&gt;——用 Python 把历史 trace 拉下来，聚合成基准分布，再用统计方法对比实时数据。这个项目规模不大（一个人一两周就能出 MVP），但能让你对这个领域有最一线的体感。&lt;/p&gt;
&lt;h2 id=&#34;写在最后&#34;&gt;写在最后&lt;/h2&gt;
&lt;p&gt;Agent 可观测性这个方向，2026 年正处在一个微妙的拐点。&lt;/p&gt;
&lt;p&gt;工具已经有了（LangFuse、Phoenix、traceAI），协议标准正在收敛（OTel GenAI），但真正的工程化实践——异常检测、行为漂移、多 Agent 因果链分析——几乎还是空白。&lt;/p&gt;
&lt;p&gt;对于有分布式系统背景的开发者来说，这是一个天然的优势领域。分布式追踪、时序异常检测、Trace 关联分析——这些基础设施领域的旧知识，在 Agent 世界里找到了全新的应用场景。&lt;/p&gt;
&lt;p&gt;2026 年的 Agent 可观测性，有点像 2016 年的微服务 APM。概念已经在，需求在爆发，但真正好用的工具还没长出来。谁能填上这个坑，谁就能定义下一代基础设施的基座。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;别光看，动起来。给你的 Agent 加上仪表盘——你看到的第一个盲点，就值得写一篇文章。&lt;/strong&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
