<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>链路追踪 on CAO ZUOHUA</title><link>https://caozuohua.github.io/tags/%E9%93%BE%E8%B7%AF%E8%BF%BD%E8%B8%AA/</link><description>Recent content in 链路追踪 on CAO ZUOHUA</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Mon, 14 Sep 2026 11:20:00 +0800</lastBuildDate><atom:link href="https://caozuohua.github.io/tags/%E9%93%BE%E8%B7%AF%E8%BF%BD%E8%B8%AA/index.xml" rel="self" type="application/rss+xml"/><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>