<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tracing on CAO ZUOHUA</title><link>https://caozuohua.github.io/tags/tracing/</link><description>Recent content in Tracing on CAO ZUOHUA</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 19 Sep 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://caozuohua.github.io/tags/tracing/index.xml" rel="self" type="application/rss+xml"/><item><title>Agent 评测与可观测性术语地图：从 Eval、Trace 到 Replay</title><link>https://caozuohua.github.io/posts/2026-09-19-agent-evaluation-observability-glossary/</link><pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate><guid>https://caozuohua.github.io/posts/2026-09-19-agent-evaluation-observability-glossary/</guid><description>&lt;p&gt;Agent 评测领域最容易造成误解的，不是某个指标怎么算，而是同一个词在不同框架里常常指向不同层级。&lt;/p&gt;&#10;&lt;p&gt;有人把一次模型调用叫 Run，有人把整个工作流叫 Run；有人说 Replay，实际只是重新发送 prompt；有人把 Trace 当日志，也有人把它当成一棵有父子关系、可以定位耗时与错误的执行树。术语没有先对齐，评测报告里的“成功率 95%”“支持恢复”“全链路可追踪”就很难验证。&lt;/p&gt;&#10;&lt;p&gt;这篇文章不按字母顺序背词典，而是沿着一条完整链路解释这些概念：Agent 怎样运行，怎样留下证据，怎样用数据集和评估器打分，又怎样把失败样本变成回归测试。&lt;/p&gt;&#10;&lt;h2 id="先看全局一次运行如何变成一次评测"&gt;先看全局：一次运行如何变成一次评测&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Dataset 中的一条 Case&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │ 输入 + 可选 Ground Truth&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ▼&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Workflow 启动一个 Run&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── Span：模型调用&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── Span：Tool Call&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── Span：Guardrail 检查&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── Checkpoint：保存 State&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── HITL：暂停并等待人工决定&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ▼&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Trace：串起本次执行的完整证据&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; │&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── Evaluator 打分&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── Offline Eval 批量比较&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ├── Online Eval 生产监控&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; └── Replay / Regression Eval 复现与防回退&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里可以先记住三句话：&lt;/p&gt;</description></item><item><title>不仅是日志：构建企业级 Agent 的全链路可观测性</title><link>https://caozuohua.github.io/posts/2026-09-14-agent-observability/</link><pubDate>Mon, 14 Sep 2026 11:20:00 +0800</pubDate><guid>https://caozuohua.github.io/posts/2026-09-14-agent-observability/</guid><description>&lt;h1 id="不仅是日志构建企业级-agent-的全链路可观测性"&gt;不仅是日志：构建企业级 Agent 的全链路可观测性&lt;/h1&gt;&#10;&lt;p&gt;在企业级应用中，Agent 不再是一个黑盒模型，而是一个需要被持续审视的决策系统。如果 Agent 的决策链路不可见，其执行失控的风险将成倍增加。&lt;/p&gt;&#10;&lt;h2 id="1-可观测性的分层设计"&gt;1. 可观测性的分层设计&lt;/h2&gt;&#10;&lt;p&gt;我们必须将 Agent 的运行视为三个不同维度的流：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;执行层 (Action Layer)&lt;/strong&gt;：系统指标（CPU/内存/网络/IO）。这是最底层的基础保障，通过 &lt;code&gt;htop&lt;/code&gt;/&lt;code&gt;eBPF&lt;/code&gt; 等工具获取。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;交互层 (Interaction Layer)&lt;/strong&gt;：MCP 工具调用记录。记录所有 Tool 的输入、输出参数及执行耗时。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;认知层 (Cognitive Layer)&lt;/strong&gt;：模型推理过程。记录 Prompt 上下文、思考过程（Thought）及最终决策逻辑。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="2-三阶段观测策略"&gt;2. 三阶段观测策略&lt;/h2&gt;&#10;&lt;p&gt;企业级 Agent 应在不同生命周期注入观测点：&lt;/p&gt;&#10;&lt;h3 id="第一阶段感知-perception"&gt;第一阶段：感知 (Perception)&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;观测重点&lt;/strong&gt;：输入清洗后的上下文数据质量。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;策略&lt;/strong&gt;：记录原始 Prompt 到优化后的 Prompt 的转换差值，评估输入信息的信噪比。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="第二阶段决策-decision"&gt;第二阶段：决策 (Decision)&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;观测重点&lt;/strong&gt;：模型意图与规划路径。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;策略&lt;/strong&gt;：使用“追踪标记” (Tracing Markers) 记录模型在复杂任务分解过程中的逻辑分支。建议将决策链序列化为 JSON 存储，支持后续复盘。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="第三阶段执行-execution"&gt;第三阶段：执行 (Execution)&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;观测重点&lt;/strong&gt;：工具调用成功率与异常处理。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;策略&lt;/strong&gt;：&lt;strong&gt;标准化 MCP 接口&lt;/strong&gt;。通过 MCP 封装所有外部工具调用，注入拦截器记录 &lt;code&gt;request_id&lt;/code&gt;，实现从决策到内核级系统调用的全链路追踪。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="3-企业级参考架构基于-mcp-的观测流"&gt;3. 企业级参考架构：基于 MCP 的观测流&lt;/h2&gt;&#10;&lt;p&gt;在复杂环境中，不要直接在 Agent 中硬编码观测逻辑，推荐采用**“旁路观测”**模式：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;接口标准化 (MCP Wrapper)&lt;/strong&gt;：利用 MCP 协议作为 Agent 与外部世界的标准接口，所有 Tool 调用统一接入该层，自动注入 &lt;code&gt;Correlation-ID&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;异步数据流&lt;/strong&gt;：观测数据不应同步发送（避免阻塞 Agent 决策）。使用 Unix Domain Socket 将 JSON 格式的指标流实时推送到 Sidecar 进程，由 Sidecar 负责数据的聚合与上报（至 Prometheus/Jaeger）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;决策快照&lt;/strong&gt;：在发生错误（如 Tool 返回 Error）时，自动触发“现场快照”，记录当前的 Prompt、工具参数、中间变量、以及系统栈信息，供研发离线回溯。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// 企业级观测接口示例 (标准化 JSON)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;request_id&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;req_550e8400-e29b&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;component&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;tool_executor&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;action&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;execute_tool&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;tool_name&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;docker_compose_up&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;status&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;failure&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;metadata&amp;#34;&lt;/span&gt;: {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;latency_ms&amp;#34;&lt;/span&gt;: &lt;span style="color:#ae81ff"&gt;1245&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;system_load&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;0.85&amp;#34;&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;trace_parent&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;trace_a9928&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; },&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;#34;error_msg&amp;#34;&lt;/span&gt;: &lt;span style="color:#e6db74"&gt;&amp;#34;Timeout after 1000ms&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#10;&lt;h2 id="4-故障演练故障降级策略"&gt;4. 故障演练：故障降级策略&lt;/h2&gt;&#10;&lt;p&gt;一旦观测系统检测到异常：&lt;/p&gt;</description></item></channel></rss>