# Agent 全链路可观测体系建设调研分析报告

**版本：** v1.5  
**更新日期：** 2026-10-15  
**发布范围：** 公开  
**适用对象：** Agent 应用研发、平台工程、SRE、安全治理和技术决策人员  
**文档性质：** 公开技术调研。架构、阈值和验收口径为工程建议，不代表任何组织已经部署或验证。

## 摘要

Agent 的结果由模型、编排、工具、检索、记忆、推理服务和外部系统共同决定。请求成功不等于任务完成，更不等于答案正确或操作获准。多智能体失效研究在 150 条执行记录中归纳出 14 类失效模式，并提供跨 7 种框架的 1600 余条标注记录；另一项针对个人助理类运行时的单作者预印本，在 8 周内记录 22 起事件。两项研究说明失效机制可能跨越组件边界，但样本不能外推为行业故障率。[[1]](#ref-1) [[2]](#ref-2)

本报告以**任务结果、执行路径、运行状态与性能、资源成本、安全控制、遥测健康**六类证据为统一分析口径。推荐以 OpenTelemetry（OTel）/OTLP 连接异构组件，以应用任务账本和受控生命周期契约确认业务事实，以评估和人工反馈检验质量，以独立核对机制标出遥测缺失。调研覆盖埋点、Trace 后端和 Agent 评估平台；产品能力只以公开官方资料为依据，选型结论须由同一工作负载的验证形成。[[3]](#ref-3)

**核心结论：** 全链路可观测应同时具备业务事实、调用关联、质量验证和遥测可信性。业务终态由权威账本裁决；Trace、评估分数和采样后的记录分别提供受限证据。本文提出以下可执行建议，其具体阈值与部署效果须在目标环境验证：

| 可执行建议 | 对应章节 |
|---|---|
| 固定 OTel 语义及埋点版本，分别验证上下文传播、字段映射和异构系统查询 | [§3](#sec-3) |
| 分开维护 Run 与 Attempt；补齐重试、接管、人工等待、拒绝/超时及旧执行者隔离 | [§4.1](#sec-4-1) |
| 以独立清单核对预期与实收身份，分列活性、完整性、未覆盖及采样排除 | [§4.2–4.3](#sec-4-2) |
| 对实际业务结果和副作用作断言，重置评测状态，隔离评分资产并审计 Judge 风险 | [§5.2](#sec-5-2) |
| 固定 SLI 分母、判定期限和责任人，使未评分、未知、超时及成本缺数可见 | [§5.1–5.3](#sec-5-1)、[§6.4](#sec-6-4) |
| 用变更记分卡、重复可靠性及匹配依赖结构的统计方法放行，不以单次成功或未显著作结论 | [§5.4](#sec-5-4) |
| 用模型、依赖和端到端探针分诊漂移；结合版本、输入及轨迹证据确证，并区分正常轮询与无进展 | [§5.5–5.6](#sec-5-5) |
| 分别验证 SDK、批处理、持久化队列和尾采样的耐久边界及租户归属，核算业务与评估总成本 | [§6](#sec-6) |
| 默认关闭全文捕获；对内容引用、读取、脱敏、删除和实际交付标识保存过程与结果证据 | [§7](#sec-7) |
| 用代表性任务比较候选路线，通过 26 项关键反例形成范围明确的验收证据 | [§8–10](#sec-8) |

## 章节导读

| 阅读目标 | 建议阅读 |
|---|---|
| 了解研究范围、概念和整体架构 | [§1](#sec-1)、[§2](#sec-2) |
| 设计接入、异构关联和任务状态协议 | [§3](#sec-3)、[§4](#sec-4) |
| 建立指标、可信评估和运营闭环 | [§5.1 指标](#sec-5-1)、[§5.2 评估](#sec-5-2)、[§5.3 SLO](#sec-5-3) |
| 进行变更放行与质量治理 | [§5.4 放行与归因](#sec-5-4)、[§5.5 漂移](#sec-5-5)、[§5.6 循环](#sec-5-6)、[§5.7 基准](#sec-5-7) |
| 验证容量、故障恢复和治理边界 | [§6](#sec-6)、[§7](#sec-7) |
| 开展选型、验收和类似背景下的实施 | [§8](#sec-8)、[§9](#sec-9)、[§10](#sec-10) |

<a id="sec-1"></a>
## 1. 范围、方法与术语

报告讨论生产 Agent 系统的数据契约、采集与查询、质量评估、运营告警、安全治理、候选项目及验收证据。模型训练与具体业务审批规则不在范围内。标准资料用于确认接口定义，产品文档用于确认公开能力，论文只支持其研究样本中的观察；本文提出的状态协议、架构及门禁属于工程建议。未进行产品压测或生产上线验证，不给出性能收益、成本节省比例和产品排名。文中各方案表、数据字段与验收反例除明确引用标准定义或研究结果外，均为本文工程建议；其适用负载、阈值及部署条件须由实施方确认。

| 术语 | 本文含义 |
|---|---|
| Run／任务运行 | 一个业务目标从受理到业务终态的权威记录，可包含多个尝试 |
| Attempt／尝试 | Run 的一次执行代次；重试产生新尝试，不改写旧尝试事实 |
| 分布式 Trace／Span | OTel 中的调用关联单元；不直接代表完整 Run |
| Agent 执行记录 | Run、步骤、决策、工具、结果及证据的组合，可能横跨多个 Trace |
| 代次 epoch | 由权威调度器签发的单调版本，用于拒绝旧执行者写入；可作为 fencing token 的组成部分 |
| 决策域 | 对同一 Trace 的全部片段作尾部采样决定的处理范围 |
| 唯一内容写入服务 | 唯一可将敏感正文写入受控内容存储的授权组件 |
| 活性与完整性判定 | 活性按执行状态分别检查执行者心跳或调度器的等待记录；完整性表示指定范围的预期 Span 是否到齐。两者均独立于业务状态 |
| 六类证据 | 任务结果、执行路径、运行状态与性能、资源成本、安全控制、遥测健康；用于组织事实和调查依据 |
| 变更记分卡 | 质量、成本、时延、效率、工具健康、用户侧体验等决策维度；不与证据分类一一对应 |
| Harness／执行编排环境 | 调度、工具发现与执行、状态恢复、产物验证等承载模型完成任务的软件及配置组合；按具体评测或应用定义版本 |
| Judge／评判器 | 用于评分的模型或评估组件；其分数需校准，不是业务结果权威 |
| 执行段 segment | 长 Run 中有界、连续执行的阶段，具独立 Trace 和封闭范围；以 Run ID 与 Link 关联其他段 |
| 探针与遥测角色 | 受控探针提供固定条件下的测试证据；本地 org.telemetry.role 区分 subject、evaluator、probe、unknown，由受信组件赋值 |

<a id="sec-2"></a>
## 2. 对象、证据与参考架构

| 证据类 | 要回答的问题 | 典型证据来源 |
|---|---|---|
| 任务结果 | 是否达成目标、最终产物是否有效 | 业务任务账本、结果系统、用户确认 |
| 执行路径 | 哪个 Agent、模型、检索源与工具促成结果 | Trace、步骤记录、版本清单 |
| 运行状态与性能 | 当前在运行、等待、失联还是终止；耗时是否达标 | 调度器状态、生命周期事件、Trace、推理服务时延 |
| 资源成本 | Token、工具和评估调用的可计费消耗是多少 | 网关或计费源、工具计费源、价格版本 |
| 安全控制 | 谁授权、阻断、审批或读取了什么 | 身份服务、策略执行点和审计记录 |
| 遥测健康 | 这些证据是否完整、及时、可信 | SDK、Collector、存储、清单核对服务 |

~~~mermaid
flowchart LR
    A[Agent／工作流／工具] -->|OTLP 遥测| W[接收鉴权与租户网关]
    M[模型网关／推理服务] -->|OTLP／指标| W
    W --> C[Collector 与处理层]
    C --> T[Trace／Log 存储]
    C --> G[指标与告警]
    C --> H[管道健康]
    G --> N[告警路由／值班]
    H --> N
    A -->|生命周期事件| L[专用 API／耐久消息队列]
    L --> B[业务任务账本／结果系统]
    A -->|完整性清单分块| K[清单对象存储]
    B --> R[独立核对服务]
    L --> R
    K --> R
    T --> R
    R --> U[Run 视图／调查界面]
    T --> U
    T --> E[评估器／人工标注]
    B --> E
    E --> D[版本化数据集／评估结果]
    D --> U
    D --> Q[回归测试／发布门禁]
    Q -->|发布准入／回滚| A
    A --> P[唯一内容写入服务]
    P --> X[受控内容存储]
    X -->|服务端对象授权| U
    X -->|服务端对象授权| E
~~~

业务账本、专用生命周期通道和清单对象存储应位于普通 OTLP 管道之外，至少跨独立故障域持久化；否则不能作为核对“未观察到的任务”的独立证据。内容存储的对象键只能用于定位，读取仍需服务端鉴权。评估从任务结果和执行证据取样；其分数不能替代业务结果。闭环是**生产信号 → 评估和反馈 → 版本化数据集 → 回归验证 → 发布门禁 → 生产监测**，每一环应保留输入、版本、判定和责任人。

<a id="sec-2-1"></a>
### 2.1 观测对象与运行层次

观测范围应包括业务 Agent 和子 Agent、编排框架、工具/MCP、RAG 与长期记忆、沙箱、模型网关、外部模型 API、自建推理服务，以及被调用的业务服务和算力基础设施。模型网关提供路由、降级、预算和护栏事实；推理服务提供排队、prefill/decode、缓存与抢占事实；宿主/GPU 信号用于解释资源约束。应用调用耗时不能独立证明推理服务或 GPU 的瓶颈，需通过请求、实例与部署版本关联。vLLM 的可用指标及名称按目标版本核验。[[4]](#ref-4)

评估执行器和供 Agent 查询的可观测接口也属于被观测对象：前者需独立记录用量与故障，后者需审计调用主体、范围与读取用途。观测链路的排队、清单和质量信号健康不能依赖被诊断的同一条故障通道。

<a id="sec-2-2"></a>
### 2.2 公开实践与可借鉴边界

阿里云公开方案包含接入、统一数据模型、分析及 Agentic Ops，并提供拓扑、链路、会话、指标与告警视图，可作为会话聚合、场景化分析和评估闭环的信息架构参考；产品宣传不能作为性能或治理效果的实测证据。[[5]](#ref-5)

Anthropic 的多 Agent 研究系统实践强调生产追踪对排障的价值，并描述了监测决策模式和交互结构、同时不监测单个会话正文的隐私取舍。该做法说明结构化证据可以服务诊断，但其效果只适用于该公开案例，不能推出所有场景都无需受控内容取证。[[6]](#ref-6)

PawBench 的评测工程实践将 Model 与 Harness 分开比较，并提供任务标签、混合评分和执行记录；可借鉴任务切片和配置交互分析。它提供评测环境中的证据，不是生产可观测平台部署案例；生产诊断仍需匹配业务状态、权限和环境。[[7]](#ref-7)

<a id="sec-3"></a>
## 3. OTel 映射与跨链路关联

<a id="sec-3-1"></a>
### 3.1 标准、版本与字段

以 2026-09-10 合并的 0c875949 提交为规范基线，OTel GenAI 的 Span、Metric、Event 约定均处于 **Development**，不能把名称稳定性视为已承诺。实施须固定规范提交、SDK 和自动埋点版本，维护字段映射表；升级先双读或映射旧新属性，再灰度双写和回放典型查询，最后切换报表并记录回退条件。OTLP 互通并不保证产品的索引、UI、语义约定映射或多租户语义互通。[[3]](#ref-3) [[8]](#ref-8)

| 含义 | 优先使用的 OTel 字段／关系 | 本地契约与注意点 |
|---|---|---|
| 分布式调用 | trace_id、span_id、parent、Span Link | 只证明关联；不证明任务完成或权限 |
| Agent 身份和操作 | gen_ai.agent.id、gen_ai.operation.name | 保留实际 Agent 实例、版本和操作语义 |
| 多轮会话 | gen_ai.conversation.id | 条件必填；仅在应用真实拥有会话 ID 时设置，不用随机 UUID、trace_id 或哈希兜底 |
| Run、Attempt | 无通用强制字段 | 使用组织命名空间，如 org.agent.run_id、org.agent.attempt_id；禁止占用 gen_ai.* |
| 结果和请求模型 | gen_ai.response.id、请求/响应模型属性 | 分别记录请求别名和实际响应模型；以网关事实校准 |
| 工具与工作流 | execute_tool、invoke_workflow、plan 等操作 Span | 工具服务补充授权结果、参数契约和业务结果 ID |
| 评估结果 | gen_ai.evaluation.result 事件 | 标准字段与本地评估器版本、样本来源分开记录 |

标准对 Agent、工作流、工具及模型 Span 的定义见固定提交。[[8]](#ref-8) 业务 ID 不宜默认放进 W3C Baggage：Baggage 可跨信任边界传播，接收端不得把它当授权凭据。跨异步队列、人工等待和多 Agent 协作时，优先由受鉴权的任务信封传递 Run/Attempt、租户与代次；仅传递最小关联标识，并校验发送者、租户和重放。W3C Trace Context 用于同步调用的 Trace 续链，跨独立阶段使用 Span Link 连接原因关系。[[9]](#ref-9)

除基线之外，业界并存其他开放语义约定，须在字段映射表中显式处理。OpenInference（Arize 维护）以必需属性 openinference.span.kind 标注操作类型（LLM、AGENT、CHAIN、TOOL、RETRIEVER、RERANKER、EMBEDDING、GUARDRAIL、EVALUATOR、PROMPT 等），并以 llm.*、tool.*、agent.* 等命名空间记录属性，是 Phoenix 的原生数据约定；其规范明确每个 OpenInference Trace 都是有效 OTLP Trace，AI 语义由属性约定赋予。[[10]](#ref-10) Phoenix 自 arize-phoenix 15.10.0 起在摄入时将 gen_ai.* 自动转换为 OpenInference（已有 OpenInference 属性优先、转换只补齐缺失），该转换的版本门槛、覆盖清单与优先级须按目标版本验证；不具备自动转换能力的消费端或 Collector 归一化环节必须显式映射，并对未映射属性做丢弃审计。双约定并行的管道须验证：模型、Token、消息与工具参数等关键字段在两个方向均可恢复且映射可回放。

<a id="sec-3-2"></a>
### 3.2 长时 Run、MCP、RAG 与流式输出

短时、连续执行的 Run 可以由一个 Trace 表示。跨小时或跨天的等待、异步分支及人工审批应按**有界执行段**各建一个 Trace，用相同 Run ID 及 Span Link 关联前后段；等待本身记录为任务账本状态和时间区间，不能为等待数天而保持开放 Span。尾部采样仅在每个有界段内决策，并验证片段汇聚和等待时间；Run 视图不得因为某段未采样而显示“完整”。[[9]](#ref-9)

MCP 客户端和服务端应分别记录操作 Span、端点、工具身份、版本、耗时、错误及授权判定。OTel MCP 约定建议将已配置传播器生成的 traceparent、tracestate 注入请求的 params._meta，服务端默认以提取到的上下文为父上下文；如启用 Baggage 传播器，Baggage 也会进入 params._meta。HTTP 传输上下文与 MCP 消息上下文分别验证。面向第三方 MCP 服务端，应在出站方向限制传播器或剥离 Baggage，并验证敏感信息不会外传。A2A 或其他多 Agent 协议也须保存发送/接收主体、消息 ID、因果关联和授权结果，但不应将协议元数据直接赋权。RAG 和长期记忆应记录检索索引/快照版本、文档来源与权限、召回片段 ID、写入/污染检测和删除链路；正文只在受控存储中按需留存。[[11]](#ref-11)

流式响应须区分客户端首块到达时间（time_to_first_chunk）与服务端首 Token 生成时间（time_to_first_token）；网络缓冲、排队和前后处理会使两者不同。首块时间、完整响应耗时和中断比例应分别统计，未收到首块时标记缺失而非零。[[12]](#ref-12)

<a id="sec-3-3"></a>
### 3.3 埋点接入与可替换性

| 接入方式 | 适用对象 | 需核验的边界 |
|---|---|---|
| 原生 OTel SDK／自动埋点库 | 模型客户端、Agent 框架、工具与数据库 | Provider/框架版本覆盖、异步上下文、属性截断、重复插桩及语义映射 |
| 库级 Observation／Listener 桥接 | Java AI 应用及具有扩展点的框架 | Observation 名称与配置前缀、流式线程切换、原始重试的可见性 |
| OTLP 原生导出 | 模型网关、支持该能力的推理服务 | 实际生成的 Span 类型、上下游关联和鉴权 |
| Prometheus 拉取 | 推理服务、GPU exporter、无 Trace 能力的组件 | 实际 /metrics 名称、单位、标签、重置与多副本重复采集 |

Spring AI 基于 Micrometer 提供观测，文档中的 ChatModel 观测名为 gen_ai.client.operation；观测名、指标导出名与配置属性不是同一层概念。库原生字段也可能使用旧版 GenAI 约定，例如所引 Spring AI ChatModel 文档仍使用 gen_ai.system；须按字段实际含义对齐 §3.1 基线，不能将框架标识和模型提供者直接混写。LangChain4j 的 ChatModelListener 提供请求/响应/错误扩展点，但文档说明其回调并非每次底层重试都触发，流式回调还可能跨线程；不能据此单独还原所有收费尝试。[[13]](#ref-13) [[14]](#ref-14)

接入清单应记录语言、框架、Provider、版本、采集方式、覆盖信号与已知缺口。每个调用层指定一个主埋点责任方；库原生观测与自动探针组合后验证是否重复，不能假设双探针必然兼容或必然崩溃。替换厂商维护的埋点库时，保留语义映射并回放代表性查询，核对替代实现的覆盖缺口。OTLP 互通降低协议适配成本，仍需重做目标后端的索引、查询与 UI 验证。[[15]](#ref-15) [[13]](#ref-13)

<a id="sec-3-4"></a>
### 3.4 与异构存量服务链路的互通

**调用时上下文传播**与**遥测上报协议**分别验证。存量服务可使用 B3 等传播格式并保留原有数据管道；支持某种上报格式，不证明请求头提取、续传与父子关系兼容。事后转换报文不能补回调用时未记录的因果关系。OTel 定义传播器注入/提取接口及 B3 要求；B3 的共享 Span ID 表示与 OTel 服务端新建 Span 的要求存在差异，查询层必须明确处理来源模型。[[16]](#ref-16) [[17]](#ref-17)

| 级别 | 经验证的条件 | 可承诺效果 |
|---|---|---|
| L3 | 上下文兼容、身份及父子关系可解释、两侧可联合查询 | 统一展示两侧已观测到的调用结构 |
| L2 | 关联身份一致，但联合查询不可用 | 两个系统间按身份精确跳转 |
| L1 | 两侧 ID 不同，边界保存了可信、受授权的映射 | 显式关联两段执行记录；界面保留跨系统边界 |
| L0 | 无有效传播，也无可靠映射 | 不能宣称已打通；时间和服务名仅作检索线索 |

这是本文的交付能力分级，不是 OTel 标准。实测至少覆盖双传播头冲突、不同方向的 ID 接受行为、未采样父上下文、共享 Span ID、边界映射及跨集群查询。冲突优先级由策略明确，并在目标语言 SDK 上验证；不预设所有实现具有相同覆盖顺序。

查询以显式身份和父子/Link 关系关联，不以时间戳猜层级；须处理缺父、跨日、精度差、各侧数据迟到和查询截断。取各侧时间范围并集并受控扩窗，不能用单侧窄窗裁掉另一侧。L3 只说明能统一展示，完整性须按各侧生产者、采样及损失证据分别标注；存量侧未纳入 §4.3 清单时，不得随 Agent 侧获得“完整”结论。

<a id="sec-4"></a>
## 4. 应用级生命周期与完整性契约

<a id="sec-4-1"></a>
### 4.1 Run 与 Attempt 双状态机

Run 是业务目标的权威状态，Attempt 是执行租约的一次代次；二者分别持久化。Run 维持 pending、running、waiting_human、succeeded、failed、cancelled 六态。一次 Attempt 失败但仍有重试机会时，Run 保持 running；仅当重试策略用尽、业务判定无法继续，或不可重试的高后果失败发生时，Run 才进入 failed。Run 终态须附权威结果 ID、结果校验、原因和决策主体。

~~~mermaid
stateDiagram-v2
    [*] --> pending
    pending --> running: 任务受理／调度
    pending --> cancelled: 取消
    running --> running: Attempt 失败后重试／接管
    running --> waiting_human: 等待人工
    waiting_human --> running: 有效审批后继续；或拒绝／超时后按策略重试或回退
    waiting_human --> waiting_human: 重新发起审批或延长等待
    running --> succeeded: 权威结果校验通过
    running --> failed: 重试用尽／不可重试失败
    running --> cancelled: 取消
    waiting_human --> failed: 超时或拒绝且不可继续
    waiting_human --> cancelled: 取消
    succeeded --> [*]
    failed --> [*]
    cancelled --> [*]
~~~

Attempt 的 finished 表示该次执行已报告结果，另有 outcome=success/failed；它不直接决定 Run 终态。人工等待后如原租约仍有效，可由同一 Attempt 从 suspended 恢复 active；若调度器签发新执行者接管且旧 Attempt 尚未终止，旧 Attempt 进入 superseded；若已先撤销租约并判定 abandoned，则保留该终态。新 Attempt 由调度器签发更高 epoch 后进入 claimed；无有效租约不得恢复旧 Attempt。abandoned 表示调度器在撤销租约后判定该 Attempt 失效；单纯心跳超时只产生 lost 活性标记，不自动进入 abandoned。新执行者提交外部副作用前，目标服务仍须校验 fencing token，避免旧执行者继续写入。

对不支持单调 fencing token 的第三方 API 与存量 MCP 服务端，工具网关须提供兜底契约（本文建议）：副作用请求携带由 (tenant_id, run_id, attempt_id, epoch, logical_action_id) 派生的幂等键，网关对支持幂等的端点去重、对无幂等能力的端点按“可能重复执行”定级；撤销、接管与取消事件须传播到工具网关及出站凭据层，并记录传播时延与失败；对不可去重且不可中止的端点采用执行后核对与补偿动作，并记录“已执行、结果未确认”的残留副作用。兜底不能等价于目标端点自身的代次校验；无法闭环的端点须列入已知残余风险清单，在 Run 视图与安全评审中可见，不得默认其重复副作用风险已消除。

审批拒绝或等待超时且该 Attempt 仍是当前未终止代次时，授权调度器可根据权威审批记录提交 suspended → finished、outcome=failed，附审批/超时结果 ID 与原因；不是用模型自报结果代替审批。该事件按控制权限校验，执行者自行提交仍须有效租约。Run 是否失败由业务重试与高后果策略裁决，不因 Attempt finished 自动推断：重试或回退路径使 Run 保持 running 并由调度器签发新 Attempt；重新发起审批或延长等待使 Run 保持 waiting_human 并更新等待记录与期限；仅当策略判定不可继续时 Run 进入 failed。已 abandoned/superseded/cancelled 的 Attempt 不改写终态，等待结果关联到 Run；若 Run 被取消，当前未终止 Attempt 级联 cancelled。

本文的人工等待契约是：suspended 期间不要求执行者继续发心跳或保持开放 Span；调度器耐久保存等待原因、审批期限、当前代次与租约归属，并监测等待协调组件自身健康。有效等待显示 waiting，不因无执行者心跳标 lost；租约仅证明当前授权归属，不能证明执行进程存活。租约失效须撤销并按 abandoned/接管规则处置，审批超时按上述失败结果规则处置；两者不得混同。审批获准后，只有原租约仍有效才可恢复同一 Attempt，否则签发新 Attempt/epoch；恢复生效时重新起算心跳期限，随后按 active 契约检查心跳与进展。claimed 的领取期限从租约签发起算，active 的首个心跳宽限从激活/恢复生效起算；期限、起算证据和逾期动作均须预先固定，宽限内无心跳不记 fresh。

~~~mermaid
stateDiagram-v2
    [*] --> claimed: 调度签发 epoch／租约
    claimed --> active: 执行者领取
    claimed --> cancelled: Run 取消
    claimed --> abandoned: 租约撤销
    claimed --> superseded: 新 Attempt 接管
    active --> suspended: 等待人工
    active --> cancelled: Run 取消
    active --> finished: 提交成功或失败结果
    active --> abandoned: 租约撤销／执行者失效
    active --> superseded: 新 Attempt 接管
    suspended --> active: 同一租约内恢复
    suspended --> cancelled: Run 取消
    suspended --> finished: 审批拒绝／超时（outcome=failed）
    suspended --> abandoned: 租约撤销／执行者失效
    suspended --> superseded: 新 Attempt 接管
    finished --> [*]
    abandoned --> [*]
    superseded --> [*]
    cancelled --> [*]
~~~

| 字段 | 类型／必填 | 生成方与校验 |
|---|---|---|
| event_id、schema_version | 字符串／必填 | 调度器或执行者按事件来源生成事件 ID；接收端以 ID 和内容摘要去重 |
| tenant_id、run_id、attempt_id | 字符串／必填 | 任务账本签发；接收端查归属和权限 |
| producer_id、epoch、lease_token | 字符串、整数、字符串／必填 | 调度器签发并持久化单调 epoch；执行事件校验有效租约，控制事件按独立权限校验 |
| event_type、seq | 枚举、整数／必填 | claimed、activated、heartbeat、progress、suspended、resumed、finished、abandoned、superseded、cancelled；同一 (tenant_id, run_id, attempt_id, producer_id, epoch) 流的所有类型共用递增 seq，心跳与 progress 不各自计数 |
| occurred_at、emitted_at | 时间／必填 | 分别为业务事件发生与生产者发出时间；OTel Log 的 ObservedTimestamp 若存在由接收方另记，不能映射为 occurred_at |
| attempt_state、outcome、result_id、reason | 枚举／字符串／条件必填 | 状态变化时提交；finished 必须带 outcome，结果由账本另行核验 |
| trace_id、span_id | 字符串／可选 | 仅作关联，不作为身份或状态权威 |

事件经专用 API 或耐久消息队列进入任务账本，采用 outbox 与幂等消费持久化；可复制成 OTel Log 供查询，副本不成为权威来源。同 ID 同内容重投无副作用；同 ID 不同内容进入协议冲突；接收端先验证来源身份与租户归属；执行者的旧 epoch 或过期租约事件、跨租户事件及非法转换被拒绝并审计。调度器的撤销、失效和接管事件按独立控制权限验证，可引用已撤销租约，但不得冒充执行者继续写入。seq 只能在已定义的流内比较；时间戳不能替代代次授权。activated 对应 claimed → active；heartbeat/progress 只更新当前合法状态下的活性或进展证据。各生产者流不形成全局总序，权威状态服务负责裁决状态转换；乱序事件可补入历史，但不得按到达顺序倒退当前状态或跨越终态。控制事件与执行者事件的允许来源须分别限定。heartbeat 的事件 seq 递增不等于业务进展；进展超期另以受信 progress/已完成 step 水位和等待状态判断。

<a id="sec-4-2"></a>
### 4.2 活性、完整性和覆盖范围

业务状态、活性标记、完整性结论与覆盖范围在界面上分列；不得把 lost、unknown、open_or_abandoned 作为 Run 业务终态。下表的“可修订”指新证据进入后保留旧结论及修订水位，不能静默覆盖历史。

| 维度 | 判定／含义 | 迟到证据可修订 | 界面显示 |
|---|---|---|---|
| 活性 | fresh：当前 active 代次的有效心跳在期限内 | 是 | 执行者活性正常；附最后心跳 |
| 活性 | starting：claimed 尚在领取期限内，或 active 激活/恢复后尚处预定心跳宽限且无有效心跳 | 是 | 等待领取／首个心跳；不宣称执行进程存活 |
| 活性 | waiting：suspended 的权威等待记录、期限与租约归属仍有效 | 是 | 人工等待；不宣称执行进程存活 |
| 活性 | lost：当前 active 代次超过心跳期限；claimed 超过领取期限则另记调度超时 | 是，仅接受同一有效租约或新 Attempt 证据 | 失联／调度超时分别显示；不写业务失败 |
| 完整性 | unknown／unsealed：清单未封闭或迟到窗口未结束 | 是 | 无法判定；显示待补生产者和水位 |
| 完整性 | complete：指定范围内 E=O | 是，须留修订记录 | 已核对完整；显示覆盖边界 |
| 完整性 | missing／unexpected／both：分别为 E−O 非空、O−E 非空或二者均非空 | 是 | 分列缺失数与清单外数 |
| 完整性 | unverifiable_timeout：到封闭期限仍缺声明或分块 | 是，限恢复保留期并审计 | 超时无法判定；独立告警 |
| 覆盖明细 | open_or_abandoned：已创建但未正常结束的 Span | 是，收到有效结束或接管证据后 | 开放／放弃数量，不并入 E |
| 覆盖明细 | sampled_excluded：按记录的采样决定排除 | 否，除非纠正错误决定记录 | 采样排除数量；不承诺全量 |
| 覆盖明细 | uncovered：未纳入清单的生产者或路径 | 是，扩展覆盖契约后只影响后续段 | 未覆盖范围，不显示完整 |

心跳新鲜度仅适用于要求心跳的执行状态，人工等待按 §4.1 的等待契约判定；等待记录或协调组件证据不可用时显示不可判并告警。心跳新鲜度须结合有效租约、受信时间界限与接收时刻判定；延迟批量到达的旧心跳不能仅因刚被接收就刷新活性，时钟偏差超界时须显示时间证据不可判并独立告警。心跳丢失可能由进程、网络、调度或遥测故障造成，归因须有宿主、队列或网络独立证据。业务成功但遥测缺失、业务失败但遥测完整都是有效组合。

<a id="sec-4-3"></a>
### 4.3 完整性清单与成本边界

对约定为全量的生产者，生产端维护独立于普通 OTLP 的清单：manifest_id、tenant_id、run_id、attempt_id、epoch、producer_id、segment_id、采样策略版本、created_count、ended_count、export_intended_count、sampled_excluded_count、分块数、摘要与 seal 状态。清单记录 Span 创建、结束及导出意图；分块按有界 ID 数量写入受控对象存储，并由任务账本保存块摘要和地址。普通 Span 的处理与导出时机须按 SDK Span Processor 配置核验。[[18]](#ref-18)

清单写入会增加业务热路径的持久化 I/O、尾延迟和吞吐压力，必须在目标负载下测量。建议用本地有界缓冲与批量耐久写降低同步开销，同时明确可承受的清单丢失窗口。清单写失败时业务请求 **fail-open**，该执行段立即通过独立健康通道或任务账本标为 unverifiable，不得继续宣称完整；若标记通道也故障，核对服务根据任务账本中存在的 Run 与缺失的生产者声明给出 unknown/unverifiable_timeout。业务与授权失败策略仍由业务系统独立决定。

export_intended_count 只计入生产端采样后已结束且拟导出的 Span；生产端采样排除数另记 sampled_excluded_count。尾部采样若在下游丢弃，须取得可核对的采样决策记录并把被排除 ID 从预期集合 E 中剔除；缺少决策证据时，该段不能做逐 Span 完整性声明（实施选项与边界见 §6.2）。计数与摘要只能发现差异，不能定位缺失 ID；需要逐项定位时才保留完整 ID 分块，并以分段、大小上限、保留期和压测控制开销。

清单封闭要求业务执行段终止、已声明生产者提交最后水位、分块可读及迟到窗口结束。生产者崩溃后由调度器记录失效和接管；未结束 Span 归为 open_or_abandoned。到期仍缺声明或分块时标记 unverifiable_timeout 并保留恢复窗口。对已封闭、采样决定已核实的范围，E 是应导出的已结束 Span 身份集，O 是实际入库身份集，均以 (tenant_id, trace_id, span_id) 为键并绑定生产者、执行段与采样范围；E−O 为 missing，O−E 为 unexpected，二者可同时存在。迟到补齐可修订结论但须留版本和水位。身份到齐不等于属性、Event、Link 或正文完整，截断、映射损失与内容引用状态须另行校验。根 Span 结束不会自动结束子 Span，不能据此宣布链路完整。[[19]](#ref-19)

<a id="sec-5"></a>
## 5. 指标、评估、SLO 与运营

<a id="sec-5-1"></a>
### 5.1 指标口径

| 六类证据 | 建议量化 | OTel 标准名／本地扩展 |
|---|---|---|
| 任务结果 | Run 完成率、终态分布、结果校验通过率 | 业务账本本地 SLI；分母为符合准入条件的 Run |
| 执行路径 | 步骤数、循环疑似率、Agent/工具调用数 | gen_ai.invoke_agent.inference_calls、gen_ai.invoke_agent.tool_calls 为每次调用的分布指标；路径版本为本地扩展 |
| 运行状态与性能 | 活跃、等待、失联、恢复时长；Agent、工具、工作流及模型调用时延，首块/首 Token 时间 | gen_ai.invoke_agent.duration、gen_ai.invoke_workflow.duration、gen_ai.execute_tool.duration、gen_ai.client.operation.duration、gen_ai.client.operation.time_to_first_chunk、gen_ai.server.time_to_first_token；状态为本地扩展 |
| 资源成本 | 输入/输出 Token、工具及评估器用量、单 Run 可计费成本 | gen_ai.client.token.usage；工具与评估用量、价格版本和唯一记账源为本地扩展 |
| 安全控制 | 授权拒绝、护栏命中、误报、越权企图 | 策略执行点本地事件；不得只凭模型自报 |
| 遥测健康 | 导出失败、队列水位、丢弃、入库延迟、清单封闭率 | Collector 内部遥测和本地核对指标 |

GenAI 指标名称与单位以固定提交的官方约定为准；上述同名指标不是“业务成功率”。[[12]](#ref-12) 推理引擎还应核对排队、缓存、抢占与逐 Token 延迟；vLLM 的生产指标应按目标版本的使用文档和实际 /metrics 输出配置。[[4]](#ref-4)

建议维护统一指标字典：名称、来源与计算服务、统计单位、分子/分母、窗口、去重键、缺值处理、标签基数上限、业务/探针/Judge 隔离方式、告警路由和责任人。不同指标采用不同的有效样本集合时，必须公布各自分母，不能用同一“成功率”名称掩盖差异。

| 层次 | 需要补充的观察维度 | 判读限制 |
|---|---|---|
| 模型 | 缓存输入、推理用量、finish_reason、拒答与输出截断 | Provider 返回字段及包含关系须核验；不能把缓存、推理 Token 再加到已包含它们的总量中 |
| 工具/MCP | 参数契约失败、真实重试、工具选择正确性、可用工具数及描述 Token 规模、路径约束违规 | 调用成功不等于选对工具；正确性/召回需期望标签，工具数量不预设统一拐点 |
| Run | 步数、成本、延迟尾部和预算触达率 | 同时报告分布、窗口和样本量；仅报告均值可能掩盖少量昂贵执行 |
| 会话/业务 | 采纳、放弃、人工接管、升级、审批耗时 | 按业务阶段定义，等待与执行耗时分列 |
| 质量信号健康 | 反馈覆盖率、抽检覆盖率、未评分率、探针覆盖与生产失败类型 | 少反馈或探针全通过不证明质量正常，需人工抽检和持续补充任务集 |

模型用量及终止字段以固定约定和供应商实际返回为准。[[8]](#ref-8) 上表扩展维度为本文指标设计建议。人工反馈有选择偏差，固定任务只覆盖已设计场景，自动 Judge 有校准与注入风险；三者须交叉核验，不能相互替代。

<a id="sec-5-2"></a>
### 5.2 质量与评估数据

确定性业务断言应先核验权威结果；固定任务集保存输入、前置状态、工具权限、参考结果和全部执行版本；生产样本分层抽检并接收用户反馈。τ-bench 的 pass^k 提醒多次执行一致性与单次通过率不同。[[20]](#ref-20) 自动评估器须版本化、与人工标注校准，并单独统计超时、错误、Token 和成本。评估器不可用应显示“未评分”，不能算通过。

标准 gen_ai.evaluation.result 事件使用 gen_ai.evaluation.name；gen_ai.evaluation.score.value 和 gen_ai.evaluation.score.label 按条件设置，可附 gen_ai.evaluation.explanation、gen_ai.response.id、error.type。事件应关联被评估操作的 Span 上下文；异步评估通过携带目标上下文的事件记录关联，不能追加修改已结束 Span；无法关联该上下文时以 response.id 关联。评估器版本、样本来源、标注者、规则版本和数据集版本是**本地扩展**，须另定保留与权限。解释文本可能含敏感内容，应按正文策略处理。[[21]](#ref-21)

满足二项比例设计的通过率可报 Wilson 区间；存在同一任务重复时，先核验依赖结构与统计单位，不能把全部 Run 当独立样本。成本、延迟及新旧差异可在条件适当时按任务簇重抽样；具体限制和放行规则见 §5.4.1。模型或提示词变更保留配对任务、失败样本和未评分比例，重复次数与可检测差异由试验设计和功效分析确定。[[22]](#ref-22)

<a id="sec-5-2-1"></a>
#### 5.2.1 四类活动与数据资产

| 活动 | 对象与输入 | 触发和产出 |
|---|---|---|
| 可观测 | 实际运行的自有 Agent，生产执行证据 | 常态；回答发生了什么、证据是否可靠 |
| 在线评估 | 自有 Agent，按准入规则抽取的生产样本 | 常态；质量分、覆盖率与人工复核队列 |
| 离线回归 | 新旧变体，相同受控任务及环境 | 变更；差异、不确定性与放行证据 |
| 公共基准/私有准入评测 | 候选模型或框架，外部任务或代表性私有保留集 | 选型/准入；特定能力比较与风险证据 |

任务定义、沙箱执行、规则断言和轨迹留存可复用；日常调参集、准入保留集、生产反馈集须分别版本化并限制用途。生产失败沉淀有助于发现先验任务集的盲区，但在上线前也应依据业务契约和威胁模型构造测试，不能把“先有生产观测”视作开展任何评测的必要条件。

<a id="sec-5-2-2"></a>
#### 5.2.2 金标准任务的可重复性与判定

金标准任务保存输入、业务前置状态、允许工具与权限、参考结果、断言、执行版本及环境快照，按场景、原子能力、复杂度、风险、模态、环境标签切片。规则断言校验实际结果及副作用，语义 Judge 评价文本质量，分数分列；必须通过的业务和安全断言失败时，不允许高语义分抵消。τ-bench 以执行后的数据库状态与目标状态比较，支持从实际结果判定任务完成；本文把该原则推广为任务级断言设计。[[20]](#ref-20)

每次重复及每个新旧变体均须重置数据库、队列、缓存、记忆和配额等外部状态，或使用可验证的独立快照/资源；串行执行与容器隔离不足以恢复业务状态。生产栈探针须使用专用身份，声明真实依赖与沙箱替身、允许出网和副作用范围，并由业务负责人验证不会改动非测试资产。

执行记录分列业务失败、评分基础设施失败、缺结果、未执行及超时；这些是评测记录的分类，不扩充 §4 的 Run 业务状态。附上计划数、已执行数、可判定数、成功数与基础设施故障数，未知不计成功，也不得静默剔除。频率、任务数与重复次数按发现时延、统计目标和成本共同确定，变更事件可额外触发回归。

<a id="sec-5-2-3"></a>
#### 5.2.3 防评分投机与 Judge 风险

BenchJack 对选定 Agent 基准做对抗性审计，揭示评分资产隔离、答案暴露、评分逻辑和 Judge 注入等缺陷；这是对受测版本与攻击条件的研究，不能推断所有公共基准或当前版本都不可用。[[23]](#ref-23) 据其设计检查思路，本文建议：

1. 评分代码、参考答案和判定权限不得由被测 Agent 读取或修改；评分器仍须通过受控只读接口核验实际产物和副作用。
2. 参考答案不得放在 Agent 可读的任务元数据、工作区、缓存或网络位置；日常调参集与准入保留集隔离，保留集使用须登记并周期性更新。
3. 评分器不得执行被测输出中的可控字符串；格式合法不等于结果正确。
4. Agent 输出作为不可信数据传给 Judge，采用结构化边界、转义、最小权限及对抗用例；隔离与转义不保证免疫提示注入，异常与高后果判定仍需人工复核。
5. 沙箱网络默认关闭，按任务开放必要目的地；定期测试评分篡改、答案获取、Judge 注入和结果伪造。

Judge 校准须保存人工标签、分歧类型和评分版本，并监测分布变化；判官自身也可能错误高分。确定性业务断言提供不同来源的证据，但其代码和结果读取路径同样需要验证，不能称为天然可靠的“金标准”。

<a id="sec-5-2-4"></a>
#### 5.2.4 评估工作台、执行器与健康信号

工作台承担评估器创作、调试、人工标注、校准和数据集/实验管理；执行器按批准的规则、提示词、输出 schema、模型与版本消费不可变定义，采样执行并写回结果。可用 Git 或受控制品库管理定义，但权威来源只设一处；产品是否能完整导出这些资产必须逐项验证。工作台是可替换组件，不应成为生产执行器的必需在线依赖。这是本文的职责划分建议。[[24]](#ref-24)

生产与测试的关键执行语义、字段映射、评分版本和写回契约应一致，凭据、规模及允许数据范围可以不同；配置同源不保证行为一致，仍需代表性回放和故障测试。生产衍生样本跨环境使用须定级、授权、脱敏、限定用途、保留和删除；脱敏不能免除来源治理。评估旁路须有独立预算、队列和资源限额，故障时业务及主遥测通道应在声明范围内继续服务。

为防递归，评估入口只接收由受信埋点/网关确认的业务角色样本，如 org.telemetry.role=subject；evaluator、probe 和 unknown 默认不进入生产在线评估旁路；探针/离线回归通过独立受控调度器执行评分，模型或工具不得自行赋予角色。漏标表现为覆盖率下降并告警。Judge 调用有独立关联与记账身份，不并入被评估 Run 的业务步数、延迟或成本；“全体系总成本”可以另行汇总。

| 健康信号 | 分子／分母与状态 | 处置 |
|---|---|---|
| Judge 调用失败率 | 超时、调用错误、输出 schema 失败／实际 Judge 调用数 | 评估状态 judge_failed；排查判官与参数 |
| 分数写回失败率 | 已成功评分但写回失败／需写回的成功评分数 | write_failed；耐久保存待写结果，幂等重试与到期告警 |
| 最终缺分率 | 到评分期限仍无有效分数／计划应评分样本数 | 未评分；按调度、调用、写回阶段定位 |
| 漏标与未执行率 | 无合法角色或未被执行的应覆盖任务／独立定义的业务覆盖集合 | 不因没有发起 Judge 调用而从覆盖分母消失 |

评估结果按 (tenant_id, target_id, evaluator_version, evaluation_attempt_id) 幂等写入，重投不新增逻辑分数；重新评分产生新 attempt 并保留旧结果。写回超时但实际成功须通过身份核对，不能直接启动重复业务执行。耐久恢复的介质故障与保留期亦须纳入演练。

<a id="sec-5-3"></a>
### 5.3 SLI、告警模板与运营闭环

先固定准入、窗口和判定期限：A 为进入窗口且已到约定判定期限的合格 Run 集，D 为 A 中权威结果可判定的子集，S 为 D 中结果通过的子集。结果质量 SLI=数量(S)/数量(D)，同时公布未判定比例=数量(A−D)/数量(A)；端到端达标 SLI=在时限内完成且结果通过的 Run 数/数量(A)，不因缺结果或超时缩小分母。另列遥测不完整比例，空分母标记无数据。排队、人工等待和流式首块时延按业务目标分别展示，SLO 须明确采用哪个 SLI。SLO 应绑定业务后果、窗口和明确排除项；错误预算等于窗口内允许失败数，燃烧率为实际预算消耗速度与均匀消耗速度之比。预算告警采用短窗与长窗组合并经历史数据和演练校准，不照搬固定阈值；低流量任务应单独评估窗口和样本量。Google SRE Workbook 给出了多窗口、多燃烧率告警的方法。[[25]](#ref-25)

| 类别 | 信号与条件形态 | 窗口／级别 | 处置与责任人 |
|---|---|---|---|
| 高后果结果 | 权威结果断言失败或未经授权副作用发生 | 单事件／高 | 隔离执行、保全证据；业务负责人和安全值班 |
| Run SLO | 错误预算短窗、长窗同时快速消耗 | 双窗口／按预算 | 回滚变更、限制流量；服务 SRE |
| 质量漂移 | 分层通过率区间下降且样本充分 | 多批次／中 | 对照任务、模型及输入分布；评估负责人 |
| 模型/工具漂移 | 实际响应模型或工具接口版本偏离批准清单 | 单次或连续窗口／按风险 | 冻结发布、核对供应商与契约；平台负责人 |
| 成本失控 | 单 Run 预算触达、重复无进展或评估成本异常 | Run 内／按风险 | 由运行时限额并转人工；应用负责人 |
| 遥测失真 | 丢弃、入库延迟、清单超时、评分缺失升高 | 短窗及趋势／中 | 排查 SDK/队列/存储；可观测平台值班 |

周度运营应报告质量、SLO、预算、成本归属和缺数；把用户反馈、人工复核与生产事故转为受控数据集案例，定期校准评估器，再以回归结果进入发布门禁。输入分布、供应商实际模型、工具 schema、检索语料和评估器自身都应监测漂移。运行时的步数、时间、Token 和工具预算由有权组件执行；可观测系统记录判定与结果，不负责授予权限。

<a id="sec-5-4"></a>
### 5.4 变更度量、放行与轨迹归因

<a id="sec-5-4-1"></a>
#### 5.4.1 重复可靠性与统计放行

τ-bench 的 pass^k 衡量同一任务重复 k 次均成功的可靠性；在每任务 n 次可交换、独立重复的设计下，任务 i 有 c_i 次成功，可用 C(c_i,k)/C(n_i,k) 估计，并按任务集权重汇总，要求 n_i≥k。pass@k 衡量至少一次成功，两者不同。单任务在独立同分布条件下为 p_i^k；异质任务集整体是各任务 p_i^k 的加权平均，通常不能用整体 pass^1 的 k 次方反推。状态残留或共享依赖引起的相关性会破坏该解释，必须披露。[[20]](#ref-20)

Wilson 区间适用于相应二项比例设计，不能直接套在 pass^k 组合估计或全部相关重复上；固定任务集与对真实任务分布的推断也须区别。若独立任务簇足够且任务抽样目标适当，可对整个任务簇重抽样比较新旧差异；少量任务簇或时间相关漂移时需重新设计，不能无条件宣称 cluster bootstrap 有效。配对同一任务也不消除外部状态和调用环境混杂。[[22]](#ref-22)

“未检出显著差异”不能证明不劣；ASA 强调不能仅依赖 p 值阈值作决策。[[26]](#ref-26) 本文建议在执行前冻结以下规则：

| 要素 | 必须明确 |
|---|---|
| 主指标与统计单位 | 任务/Run/调用，抽样总体、分层权重、重复次数以及哪些变量受控 |
| 配对及区间方法 | 新旧任务、输入、前置状态和环境如何对应；区间方法与依赖结构匹配 |
| 允许劣化界 δ | 质量、成本、时延等分别确定业务可接受边界，不以零差异显著性替代 |
| 停止规则 | 固定样本/窗口或预先选定的序贯规则；禁止看到满意结果即停 |
| 多重比较 | 主指标与硬门槛分别列出；需推断的多项指标说明比较策略与错误率控制 |
| 不确定性与失败动作 | 缺结果、区间跨界、样本不足判“未定”；继续按既定规则补证或维持原版本 |

以“越高越好”的主指标为例，定义 Δ=新−旧，质量非劣要求预先选择的差异置信下界≥−δ，并同时通过安全硬门槛；成本/延迟按相反方向的上界判定。该规则是示例，置信水平、检验族、统计模型和 δ 须由业务及统计负责人选定。单次确定性高后果断言失败可以直接阻断，不等待聚合；通过少量重复不能证明高可靠。

<a id="sec-5-4-2"></a>
#### 5.4.2 变体记录与多维记分卡

| 本地字段示例 | 用途 |
|---|---|
| org.variant.id、org.variant.config_hash | 稳定配置组合标识和完整配置指纹；记录哈希算法/范围版本 |
| org.prompt.version、org.toolset.version、org.harness.version | 提示词、工具/Skill 集与编排版本 |
| org.rag.snapshot_version、org.rag.config_version | 语料/索引快照和检索配置 |
| org.experiment.id、org.variant.effective_at | 实验分组与开始承接流量时间 |
| 标准请求/响应模型及采样参数 | 模型别名、实际模型与生成配置；符合基线的标准键优先 |

以上 org.* 字段均为本地契约，须绑定受信发布/配置记录；配置哈希不授予权限。灰度期间按实际承接版本归属，不把混合时间段当成单一变体。无法归属者标记 transition/unknown；能准确分组且满足实验设计的灰度样本可使用。应从一开始留存版本证据，历史缺失无法可靠补造。

变更记分卡维度为质量、成本、时延、效率、工具健康、用户侧体验；分别观察通过率/重复可靠性、单 Run 成本、执行及首块时延、步数/预算触达、选择和参数错误、拒答/放弃/接管。它用于决策权衡，与第 2 章的六类证据分类分别管理。每维预先约定接受界和可判定样本，不能用综合高分抵消安全硬门槛。

<a id="sec-5-4-3"></a>
#### 5.4.3 从差异到诊断

轨迹归因按“任务标签切片 → 找到关键动作/依赖的分叉 → 核验分叉原因”展开。每步保留受控 step_id、父分支/消息因果关系、工具名及版本、输入/输出的受保护摘要、耗时、Token、状态和终止原因；摘要计算范围、归一化及脱敏版本随记录保存。低熵敏感值宜用受控密钥的摘要，仍按敏感关联数据治理，不能以哈希代替匿名化。

步骤数和顺序可能随变体改变，不能只靠 step_number+tool_name 强行一一对齐。先按任务阶段、关键动作和因果结构匹配，不可对齐部分显式展示；首个不同摘要是分叉线索，不能单独证明根因。可进一步标注多条允许路径，分析工具选错、参数错误、检索遗漏、越过权限或提前放弃；存在多种合法路径时，不要求机械复现唯一轨迹。

多智能体失效归因已有自动化研究：Zhang 等的 Who&When 基准把“定位失败 Agent 与关键错误步骤”形式化为归因任务，并评估 All-at-Once、Step-by-Step、Binary-Search 三类自动判官；其报告的最优方法 Agent 级准确率 53.5%、步骤级仅 14.2%，部分方法低于随机，推理模型参与时也未达到实用水平（结果限其数据集与受测方法）。[[27]](#ref-27) 该结果说明此类方法当前适合作为轨迹诊断的假设生成器：定位输出仍须回到因果结构对齐、步骤摘要比对、版本与工具证据及实际副作用核验；判官与数据集版本、已知混淆须随实验记录，不得把归因分数直接当作根因结论或发布裁决依据。

| 变更对象 | 重点回归 |
|---|---|
| 提示词 | 指令遵从、格式、拒答和原有任务的重复可靠性 |
| 工具/Skill 集 | 原任务是否被新增描述干扰；工具选择混淆矩阵、参数错误、描述规模及权限 |
| 模型 | 全记分卡、路由与实际模型、生成配置；需要时影子/灰度验证 |
| 编排框架 | 调度、恢复、工具发现、产物验证；对代表性模型作交叉比较 |

PawBench 将模型与 Harness 作为独立维度，提供任务切片、混合评分和执行记录，支持用同一任务检查二者的交互。[[7]](#ref-7) 本文据此建议受控交叉实验；不把该项目某次排名外推为“弱模型普遍更依赖框架”，也不预设工具数量的统一风险拐点。

<a id="sec-5-5"></a>
### 5.5 生产漂移的分诊与确证

主动变更可从发布记录定位变量，生产漂移还可能来自同名模型更新、路由、远端工具描述、下游规则、检索语料、输入分布或评分器变化。下表为本文诊断建议；固定探针缩小搜索范围，不能替代归因取证。

| 探针 | 固定条件与观察 |
|---|---|
| 模型探针 | 不调用外部工具的固定任务/描述集合；版本化格式、指令及推理判据 |
| 依赖探针 | 绕过模型，直接调用工具/MCP/检索的固定契约断言 |
| 端到端探针 | 在受控身份和状态下执行完整金标准任务 |

| 模型 | 依赖 | 端到端 | 生产表现 | 优先排查方向 |
|---|---|---|---|---|
| 退化 | 正常 | 退化 | 退化 | 模型、路由或推理配置；核对探针自身评分版本 |
| 正常 | 退化 | 退化 | 退化 | 依赖服务、检索或业务状态 |
| 正常 | 正常 | 退化 | 退化 | 编排/配置、工具描述与交互，或探针覆盖不足 |
| 正常 | 正常 | 正常 | 退化 | 输入分布变化、未覆盖场景、生产环境差异或评分漂移 |
| 正常 | 正常 | 正常 | 正常 | 具体个例、稀有路径或尚未形成聚合信号的故障 |
| 退化/正常/未知 | 退化/正常/未知 | 退化/正常/未知 | 正常 | 探针/评分器故障、环境/权限差异、聚合掩盖或生产尚未触及该场景；先验证探针并核对生产覆盖，不直接宣称生产故障 |

矩阵末行表示三类探针中至少一类已证实退化而生产表现仍正常；分别记录三列实测结果，不以缺结果充当退化。缺探针结果必须标 unknown，不能填“正常”；多类同时退化须允许多因解释。确证使用网关实际路由、请求/响应模型、部署与配置记录、工具定义版本、依赖发布记录、检索快照、输入标签分布和失败 Run。模型别名解析或批准降级属于正常变化；同名字段下的权重更新可能不被字符串比对发现。下游 schema 不变但业务语义变化时，调用成功率也可能正常，需结果断言和受控重放进一步核验。

工具定义建议保存原始摘要及规范化摘要，并限定相同服务身份、工具作用域、主体权限集合与批准基线再比较。canonical 算法需版本化工具排序、字段范围、Unicode/数值等规则，可参考 RFC 8785；自然语言描述不得未经说明删除语义相关空白或大小写。规范化变化不证明语义变化或恶意篡改，原始摘要变化也可能只是表示变化；哈希不替代来源认证和签名。[[28]](#ref-28) 输入分布漂移确认后应扩充覆盖；证据不足时不直接归咎模型或自动回滚。

<a id="sec-5-6"></a>
### 5.6 重复、振荡与无进展

本文建议按运行时受控步骤和分支因果顺序检测，不按入库到达顺序拼接。对同一执行分支，在有界窗口计算工具身份及受保护的输入/输出摘要；只有连续相同输入且结果未变化时，先输出“疑似重复/无进展”。连续次数、持续时间按工具契约与历史基线标定，不预设统一 N。间隔重复和多工具图环另行分析，图环本身不证明失控。

| 判定边界 | 要求 |
|---|---|
| 输入/输出归一化 | 仅处理工具 schema 明确声明的非业务动态字段；保留订单 ID、游标、业务时间等真实意图 |
| 正常轮询 | 相同 pending 结果可以合法；结合显式等待、预期完成时限和轮询预算判定 |
| 结果变化 | 参数相同但结果/进度改变属于可能的正常迭代；变化也不保证业务进展 |
| 不可判 | 归一化后无有效表示、数据缺失或版本不一致标 undecidable，不当作一致 |
| 原始空值 | 工具实际返回空与归一化后为空分开处理；前者可以是有效结果 |
| 并行分支 | 在各自因果序列检查，跨分支环需额外消息/调度证据 |
| 告警升级 | 叠加工具语义、进展、水位、显式等待、次数及时间预算，再判为失控 |

摘要相同只证明选定表示一致；脱敏合并、碰撞和归一化版本均须披露。无论诊断是否可判，运行时仍独立执行步数、时间、Token 和工具预算；循环算法不能代替硬限制。

<a id="sec-5-7"></a>
### 5.7 公共基准的选择及证据边界

| 代表性基准 | 主要用途 | 限制 |
|---|---|---|
| τ-bench | 工具—Agent—用户交互、策略遵从与重复可靠性 | 模拟用户、任务域及受测环境影响可迁移性 [[20]](#ref-20) |
| BFCL | 函数/工具调用相关能力；按所用版本选择子集 | 不能单独代表完整业务成功与授权 [[29]](#ref-29) |
| PawBench | Model × Harness、任务切片与执行诊断 | 固定任务、评分器及环境；不可外推生产效果 [[7]](#ref-7) |
| SWE-bench | 软件仓库问题修复 | 只适用于相关编码任务；测试通过的有效性仍须审计 [[30]](#ref-30) |
| OSWorld | 真实桌面环境中的多模态任务 | 界面/系统及执行配置有影响，不作为 API 型 Agent 的通用排名 [[31]](#ref-31) |

按应用所需能力选择基准并保存任务、Harness、工具、评分器、模型和环境版本，比较不同维度而非合并无同口径的榜单。行业应用还须用代表性业务约束、权限及副作用构造私有保留集；公共基准可以提供筛选线索，不能作为唯一或充分的准入依据。BenchJack 的受控攻击结果提示评分管道须接受对抗审计；不以“公开”或“私有”标签直接判定其可信性。[[23]](#ref-23)

<a id="sec-6"></a>
## 6. 采集韧性、存储与容量

Collector 队列、重试及可选 WAL 可缓解短时下游故障，但不提供无条件零丢失。官方列举的七类损失场景应分别注入：下游不可用导致重试超期、下游不可用导致队列溢出、无持久化时 Collector 崩溃、持久化介质故障、外部消息队列故障、配置错误、关闭队列或重试机制。每项记录输入量、已确认量、丢失量、恢复时长和数据修订结果；Collector 自身指标须独立告警。[[32]](#ref-32) [[33]](#ref-33)

~~~text
峰值 Span/秒 ≈ 日 Run 数 × 每 Run 平均 Span 数 ÷ 86400 × 实测峰值系数
遥测日增量 ≈ Span、Log、生命周期 Event 各自数量 × 各自平均字节数
热存空间 ≈ 各类实测压缩后日增量 × 保留天数 × 副本及运维余量
内容空间 ≈ 捕获率 × 每 Run 内容字节 × 日 Run 数 × 保留天数 × 副本余量
评估 Token/月 ≈ 月评估样本数 × 每样本评估次数 × 单次输入及输出 Token
~~~

还需预算索引、回放、跨区域传输、对象存储请求及 WAL 空间。指标序列基数应按租户、服务、模型、工具等标签组合估算；run_id、session_id、用户 ID 不得直接进入常规指标标签。成本口径选唯一计费源，保存价格版本；缺失用量记未知，重复事件按身份幂等核对。

ClickHouse exporter 官方将 traces/logs 标为 beta、metrics 标为 alpha，并建议生产环境自行管理 schema（create_schema: false）；持久化队列和重试形成至少一次交付风险。[[34]](#ref-34) 需按稳定事件 ID 在写入或查询时去重，验证重复率和修正成本。ReplacingMergeTree 的后台合并具有延迟，不能把它当即时唯一约束；需要查询时去重，应按排序键与版本规则验证 FINAL 或等价查询。[[35]](#ref-35) 分区、排序键、查询限额及热冷保留应由真实工作负载压测确定。

<a id="sec-6-1"></a>
### 6.1 Collector 部署、发行版与故障隔离

Collector 的 Exporter Helper、Batch Processor 及 Contrib Tail Sampling、Redaction、ClickHouse Exporter 文档固定以各仓库 **v0.162.0** 为引用基线；核心仓库稳定模块与实验组件可采用不同版本号，部署仍须锁定实际发行版、组件版本和 feature gate。这里固定研究证据，不代表推荐直接部署该版本。[[34]](#ref-34) [[36]](#ref-36) [[37]](#ref-37) [[38]](#ref-38) [[39]](#ref-39)

Agent 部署模式用于就近采集或本地缓冲，Gateway 模式用于集中处理、策略和导出，也可组合。这里的 Collector Agent 是部署角色，与业务智能体分别命名。拓扑选择需权衡应用部署成本、跨网络损失、故障域、资源和运维能力；本地层也不能承诺无条件耐久。[[40]](#ref-40)

发行版按 receiver/processor/exporter 清单、稳定级、许可、CVE 与运维能力选择；core、contrib、厂商发行版和 ocb 自定义构建不设统一优劣。自定义构建可收敛组件范围，但须承担构建、制品签名、升级及漏洞修补责任。锁定 Collector 版本、组件清单与配置摘要，升级前回放和演练；不因组件开源就推断供应链风险已消除。[[41]](#ref-41)

<a id="sec-6-2"></a>
### 6.2 批处理、队列和尾采样的不同状态

Exporter Helper 的 sending_queue 可配置 requests/items/bytes 计量，queue_size 单位取决于 sizer，不能统一按“批数”或“Span 数”估算。v0.162.0 Exporter Helper 文档的队列批处理默认关闭；需要时显式配置 sending_queue.batch，并在目标 exporter 及版本核验支持情况。启用 storage 时使用持久化队列，但永久错误、入队失败及重试耗尽仍可能丢失。[[36]](#ref-36)

batch processor 在持久化 exporter 队列之前缓冲，故其尚未进入耐久层的数据不受该队列保护；可以评估使用队列侧批处理以减少前置易失缓冲，但不存在“所有 pipeline 都应禁用 batch processor”的通用结论。实际确认边界、最大发送量和崩溃损失须注入测试，不能以接收端 ACK 单独证明最终入库。[[37]](#ref-37) [[36]](#ref-36)

尾采样按 Trace 维护内存状态，要求同一 Trace 的 Span 汇聚到同一决策实例；Exporter WAL 不保护它前面的等待缓存。须独立测试实例 kill、路由抖动、扩缩容、执行段超过等待期、决策后的晚到错误/成本字段和缓存淘汰。等待期、决策缓存、内存限制和接收负载共同标定；全保留场景可不加载尾采样，不能把 always_sample 策略等同于不存在等待缓存。[[38]](#ref-38)

标准 tailsamplingprocessor（v0.162.0）在作出决策后直接丢弃未选中的数据：它只维护用于决策的内存状态与有限的决策缓存（默认不启用），不输出可分发的逐 Span 丢弃收据；决策缓存只用于等待期内晚到 Span 的一致决策，不构成可核对的排除证据（按目标版本核验）。[[38]](#ref-38) 因此 §4.3 的逐 Span E−O 扣减只有在能取得决策证据时才成立。实施按二选一（本文建议）：或将逐 Span 完整性断言限定在头采样与全保留执行段，尾采样段仅按执行段/Trace 级声明覆盖范围并标注采样排除；或自行部署收据管道——在决策点旁路记录被排除 Span 身份，或以自定义 processor/connector 输出决策记录——并承担其可用性、性能与版本维护责任。收据管道本身须纳入完整性监测：收据缺失或损坏时，相应范围降级为不可验证，不得回退为“完整”。

成本、权威生命周期、安全审计及核对必需信号使用独立覆盖契约，不随诊断 Trace 采样自动丢弃。持久化队列不能被假定保留所有临时身份上下文：Exporter Helper 文档特别说明 Auth 扩展上下文不经持久化恢复；尾采样重组也会改变原请求上下文。接收端须从认证事实绑定租户与来源，以受保护的记录或隔离管道持久化该归属，导出和查询端再校验；不能信任客户端自填 tenant_id，也不能仅依赖入站内存上下文。[[36]](#ref-36) [[38]](#ref-38)

内部指标经 service.telemetry 暴露，与业务 metrics pipeline 分别接入；每个出口的排队、丢弃与恢复单独监测。[[33]](#ref-33) 指标拉取、正文写入和清单写入不必具有 Exporter Helper 队列，需分别申报状态及耐久边界。

<a id="sec-6-3"></a>
### 6.3 存储与查询工作负载

Agent 元数据、业务生命周期、内容引用和评分结果采用明确实体及版本契约；若与存量服务数据同库，物理表与索引布局仍由查询和字段差异决定，不预设必须混表或分表。ClickHouse 排序、分区及跳数索引存在读写取舍，可比较时间窗/服务检索、整 Trace、Run/会话检索和变体聚合的真实扫描量、写吞吐、索引内存、parts 及 TTL 行为。[[42]](#ref-42)

保留期按元数据、正文、清单、评估结果、审计用途分别设置。时间范围辅助索引/物化视图只用于缩小查询，不作为完整性的权威来源；派生结构失败、空索引和主表中间可见状态须有受限回退与提示。跨集群查询复用 §3.4 的范围与身份规则，压测权限过滤、查询并发和截断行为。

<a id="sec-6-4"></a>
### 6.4 用量记账与持续评估成本

| 偏差 | 处理口径 |
|---|---|
| 同一次调用多处上报 | 按可信供应商/网关请求身份与来源映射去重，指定唯一权威记账源 |
| 真实收费重试/重放 | 保留每个真实调用身份并累计；不能按逻辑 Run 或逻辑请求 ID 合并 |
| 用量缺失 | 标 unknown，公布缺失比例及未计金额范围，不填 0；估算须另列方法和区间 |
| 价格变化 | 按调用时点、区域、模型/缓存类别及价格版本计算，币种与转换时点明确 |
| Trace 采样 | 优先从未随 Trace 采样的权威用量源核算；只有纳入概率有效、已知且非零时才讨论加权还原 |

上述为本文记账设计建议；若错误/高成本 Trace 全留、普通 Trace 抽样，样本均值不能直接作为总体均值。无有效纳入概率或关键路径从不纳入时，不承诺还原总金额；应转向计费账单与网关对账。供应商不提供独立收费请求 ID 时，须记录可用关联及剩余误差，不能假定已实现精确去重。

业务、定时探针、离线回归和 Judge 分列消耗，同一调用只归属一个计算类别；可另汇总体系总成本。金标准/回归日执行量≈任务数×每任务重复次数×日批次数，额外加变更触发批次；Judge 日调用量由实际评分样本数×每样本判官次数并计入真实重试。容量预算还包含 Worker 占用、环境重置、人工标注、对象请求、保留和回放。频率与发现时延共同决策，不把持续探针成本藏进生产 Run 均值。

<a id="sec-7"></a>
## 7. 安全、隐私与调查证据

默认仅采集结构化元数据。OTel 对 gen_ai.input.messages、gen_ai.output.messages 采用 Opt-In，并提示内容可能包含个人信息；提示词、响应、工具参数和检索文本的全文采集须另行审批。[[8]](#ref-8) 唯一内容写入服务执行分类、脱敏、加密、租户绑定、保留期和审计；Trace 只保存不可直接访问的对象键。服务端读取时验证用户身份、租户、应用、对象权限与用途，不能凭合法格式的键放行。删除流程须覆盖 Trace/Log、Collector WAL、对象存储、评估数据集、导出副本和备份，并留完成证明及依法需保留部分的例外记录。

中国场景应评估《个人信息保护法》《数据安全法》对采集、处理、留存和跨境的适用要求；《生成式人工智能服务管理暂行办法》针对向境内公众提供生成式 AI 服务的情形，不能一概套用于内部系统。向公众提供生成合成内容时，还应按适用情形评估《人工智能生成合成内容标识办法》及 GB 45438-2025；二者均于 2025-09-01 施行。具体义务需结合服务性质和司法辖区由法律与安全负责人判定。[[43]](#ref-43) [[44]](#ref-44) [[45]](#ref-45) [[46]](#ref-46) [[47]](#ref-47)

下表以 OWASP Agentic Applications Top 10 的 ASI01–ASI10 为威胁建模索引。信号用于调查，阻断必须由运行时、网关、身份服务或工具服务执行；“有日志”不等于控制生效。[[48]](#ref-48)

| 风险 | 可观测信号 | 控制执行点／调查证据 |
|---|---|---|
| ASI01 目标劫持 | 目标或计划偏离、指令来源突变 | 运行时目标校验；原目标、来源、决策版本 |
| ASI02 工具滥用 | 异常工具序列、参数校验失败 | 工具网关；参数摘要、策略判定、结果 |
| ASI03 身份权限滥用 | 跨租户/越权请求、审批缺失 | 身份与授权服务；主体、范围、审批 ID |
| ASI04 Agent 供应链 | 模型、工具、插件版本漂移 | 发布与签名校验；清单、签名、部署记录 |
| ASI05 意外代码执行 | 沙箱逃逸企图、异常执行 | 沙箱与执行网关；镜像、命令审计、隔离结果 |
| ASI06 记忆/上下文投毒 | 检索来源或记忆写入异常 | 检索权限与写入审批；文档版本、来源链 |
| ASI07 Agent 间通信不安全 | 消息伪造、重放、接收主体不符 | A2A 通信鉴权；消息 ID、签名、主体 |
| ASI08 级联失效 | 子 Agent 错误传播、重试放大 | 编排限额与熔断；因果链、预算消耗 |
| ASI09 人与 Agent 信任利用 | 伪造审批请求、误导性解释 | 审批界面与双人复核；呈现内容、批准动作 |
| ASI10 Rogue Agent | 偏离允许工具集、失控持续运行 | 会话撤销与强制终止；策略、撤销、残余动作 |

<a id="sec-7-1"></a>
### 7.1 内容写入契约与引用状态

以下为本文建议的一致性契约：默认关闭全文捕获，按环境、场景和字段 Opt-In；由唯一授权服务执行分类与脱敏，生成稳定 capture_id，并把租户、Run/Trace、用途、正文版本、保留期和内容摘要绑定到写入记录。正文确认写入后才发布可读取的引用，Trace 只存对象键及状态。Trace 中的状态是导出时快照；其后恢复、过期和删除由独立引用登记及状态事件更新，界面读取当前授权状态，不依赖修改已结束 Span。对象存储与 Trace 库通常没有同一事务，不能把先后顺序称作原子提交。

| 情形 | 可见状态与恢复 |
|---|---|
| 正文失败或写入超时，引用未发布 | pending/failed；先按 capture_id 核对超时写入是否实际成功，再有限重试；记录缺内容原因，不输出伪 ready 引用 |
| 正文成功，引用失败 | 引用待补；按 capture_id 幂等重试，孤儿对象按保留与合法留置规则清理 |
| 引用存在，对象暂不可读 | missing/unavailable；鉴权后重查和核对，不绕过权限从日志取全文 |
| 对象到期或已删除 | expired/deleted；保留许可范围内的状态证据，禁止缓存继续提供正文 |
| 捕获范围或规则改变 | 新正文版本与策略版本；历史状态留痕，变更不自动扩大旧授权 |

脱敏后上传、确认写入、发布引用及清除遥测全文分别验收。Trace 属性、Event、Log body、嵌套工具参数、SDK/组件错误日志和队列均须扫描；未验证时不能宣称“全文已不进入遥测或 WAL”。观测旁路写失败可降级为缺内容，业务侧法定或授权所需记录的失败策略由业务系统独立决定。

<a id="sec-7-2"></a>
### 7.2 内容读取、安全渲染与副本脱敏

服务端将合法对象键解析到固定受控端点，拒绝任意 URL、路径穿越和不属于当前对象归属的取值；工具或模型不能直接写受信引用。该设计用于降低 SSRF 和越权风险，仍须验证端点、网络和对象级授权。[[49]](#ref-49)

按 Trace 批量获取受授权的引用清单，正文随节点展开懒加载，缓存键绑定租户、对象版本和许可范围；每次响应仍校验当前权限及对象存续状态，撤销/删除需失效缓存。批量接口不能用一项授权放行整批。正文作为不可信文本安全渲染，禁用活动脚本及未经批准的远程资源；链接与下载走独立授权，取证时保留原始对象的完整性。日志内容的清洗、保护、查看权限和故障测试可参考 OWASP Logging 指南。[[50]](#ref-50)

业务侧脱敏处理提交给模型或交付用户的数据，观测侧脱敏处理用于存储的副本，两者覆盖对象与失败后果不同。观测默认按字段允许清单采集，协议必需身份字段由受信组件写入且不被误删；字符串模式匹配不覆盖所有嵌套结构、编码内容或敏感业务语义。redaction processor 的支持范围与属性/body处理须按版本验证；Metrics 标签、Log body、Event/Link 属性及组件日志分别验收，不能以单个 processor 配置声称全覆盖。[[39]](#ref-39)

WAL、评估结果缓冲和清单属于实际数据驻留，须声明内容、期限、加密介质、账号权限、磁盘水位和故障清理；不因临时性免除治理。脱敏、哈希和导出副本仍按可关联性和用途定级。[[50]](#ref-50)

<a id="sec-7-3"></a>
### 7.3 资产、批准基线与过程/结果证据

建议建立 Agent、模型、工具/MCP、插件、提示模板、Harness、检索/记忆资源及评估器的版本台账，登记负责人、环境、服务身份、许可来源、数据级别、批准范围、依赖和撤销状态；与部署事实核对。台账记录批准状态，执行点仍独立校验实际权限；仅有版本标签或哈希不能证明授权控制生效。其威胁覆盖可与 ASI03/04/06/10 对照。[[48]](#ref-48)

适用生成内容标识义务时，分别记录显式/隐式标识的注入过程和对实际交付内容的独立抽检。组件自己报告“已注入”只能作为过程证据；文件转换、缓存、导出或界面展示后的实际标识需验证。内容编号和提供者编码按适用规范绑定到实际输出；可观测系统采集注入及验证事件，执行义务仍由提供服务的业务组件承担。[[46]](#ref-46) [[47]](#ref-47)

<a id="sec-8"></a>
## 8. 候选项目与技术路线

项目按**职责**列示，单元格只代表官方资料可确认的公开能力，不是横向性能排名。“待核验”表示不能从所引资料确认目标部署版本的行为。共同准入条件是：在目标版本中以 OTLP 或经验证的 OTel 适配器接入，能够导出原始数据与评估定义，完成租户隔离、权限和删除测试；不能满足准入条件的候选不得因界面便利直接承担权威遥测库。

| 项目／角色 | OTLP 接入 | 自托管关键组件 | 许可 | 评估 | 标注 | 数据集 | RBAC | 原始数据导出 |
|---|---|---|---|---|---|---|---|---|
| OpenLLMetry／埋点 | OTel SDK 可导出 | SDK，后端自选 | Apache-2.0 | — | — | — | 后端决定 | OTLP [[15]](#ref-15) |
| OpenLIT／埋点与平台 | OTel 原生 SDK | 平台及其存储依赖按目标版核验 | Apache-2.0 | 有 | 待核验 | 待核验 | 待核验 | OTLP；平台导出待核验 [[51]](#ref-51) |
| Jaeger／Trace 后端 | OTLP Trace，v2 支持 gRPC/HTTP | v2 基于 OTel Collector；可分 collector/query/ingester 与存储 | Apache-2.0 | — | — | — | 部署验证 | Trace API／目标版验证 [[52]](#ref-52) |
| Tempo／Trace 后端 | OTLP Trace | Tempo、对象存储等 | AGPL-3.0-only，部分例外 | — | — | — | Grafana 集成验证 | Trace API／目标版验证 [[53]](#ref-53) |
| SigNoz／可观测平台 | OTel 接入 | 平台组件按目标版核验 | 核心 MIT，企业模块另有许可 | —（所引 LLM 文档未描述评估） | —（同左） | —（同左） | 目标版验证 | 目标版验证 [[54]](#ref-54) |
| ClickStack／可观测平台 | OTel Collector 发行版 | ClickHouse、HyperDX 等 | ClickHouse Apache-2.0；HyperDX MIT | — | — | — | 目标版验证 | ClickHouse 查询；格式验证 [[55]](#ref-55) |
| Langfuse／Agent 评估平台 | /api/public/otel：OTLP HTTP/JSON 或 HTTP/protobuf；不支持 gRPC，Collector 用 otlphttp | v4：Web、Worker、PostgreSQL、ClickHouse、Redis/Valkey、S3 | 核心 MIT；企业功能需 license key | 在线/离线 | 标注队列 | 有 | 组织级角色可用；项目级角色属企业功能 | API/原始数据导出验证 [[24]](#ref-24) [[56]](#ref-56) [[57]](#ref-57) |
| Phoenix／Agent 评估平台 | 自托管支持 OTLP：HTTP /v1/traces 通常在 6006，gRPC 通常在 4317；目标版核验端口 | 默认 SQLite；生产可配 PostgreSQL | ELv2 | 有 | 目标版验证 | 有 | 管理员/成员/查看者；认证默认关闭 | 目标版验证 [[58]](#ref-58) [[59]](#ref-59) [[60]](#ref-60) |
| Opik／Agent 评估平台 | /api/v1/private/otel：OTLP HTTP；gRPC exporter 会报错，Collector 用 otlphttp | 自托管组件按目标版核验 | Apache-2.0 | 有 | 有 | 有 | 自托管无用户管理 | 目标版验证 [[61]](#ref-61) [[62]](#ref-62) |
| MLflow Tracing／实验平台 | OTel 兼容采集/导出 | MLflow 服务；数据集需 SQL 后端 | Apache-2.0 | 有 | 反馈/标注流程验证 | 有 | 目标版验证 | OTel 兼容导出 [[63]](#ref-63) |

Phoenix 自托管接入按所引官方 FAQ 的 HTTP 6006 与 gRPC 4317 示例配置，端口与认证配置必须以目标部署实际监听及设置为准；其摄入侧自 arize-phoenix 15.10.0 起可将 gen_ai.* 自动转换为 OpenInference，转换覆盖与优先级按目标版本核验。[[10]](#ref-10) Langfuse 与 Opik 的 HTTP 限制按所引官方文档处理；接入验收仍须验证实际路径、鉴权与字段映射。

“有”指官方文档描述该能力；“—”指该角色不承担完整的 Agent 评估工作流，不能推断其所有版本绝无相邻功能。“目标版验证”要求现场试验，不能直接记为满足准入条件。表中许可指所引主仓库或公开版，插件、依赖和企业模块须逐项复核。对应官方许可依据见各项目主仓库与许可页。[[64]](#ref-64)

评估路线时，建议先设硬门槛：关联与原始数据可导出、内容权限、目标版本许可与部署位置、故障恢复、删除能力。通过门槛后，使用任务排障与质量闭环、互操作与数据出口、安全治理、运维可靠性、总成本五个维度评分；由业务方先填写权重和评分规则，改变合理权重范围做敏感性分析，报告排序是否稳定。已有列式存储的组织应计入 Langfuse v4 自带 ClickHouse 的重复运维与数据复制成本。三种可比较路线是扩展现有平台、引入专用平台、组合式架构；组合式方案须额外证明跨系统身份、时间、授权、评估定义和故障责任能闭合。未完成试验前，不给出某一产品“最优”的结论。

<a id="sec-9"></a>
## 9. 验收证据与结论边界

| 主题 | 判定准则 | 留存证据 | 责任人 |
|---|---|---|---|
| 关联 | 指定语言、协议、同步/异步路径可还原因果；跨段 Link 可查询 | 固定版本的 Trace、Run、消息和结果 ID | Agent/平台负责人 |
| 生命周期 | 重启、重复、乱序、旧 epoch、伪造主体和租约失效均产生预期拒绝或状态 | 事件输入、账本输出、授权与冲突日志 | 运行时负责人 |
| 完整性 | 覆盖生产者与采样边界明确；缺失、清单外、开放、超时可区分 | 清单块、摘要、水位和修订记录 | 可观测平台负责人 |
| 结果与评估 | 权威结果和评估分开；未评分、用量缺失及不确定性可见 | 任务集、评分版本、人工校准与配对结果 | 业务/评估负责人 |
| 管道韧性 | 第 6 章故障场景逐项注入并量化损失与恢复 | 负载、配置、队列指标、丢失量 | SRE/平台负责人 |
| 安全与删除 | 跨租户、恶意对象键、审批撤销和全链路删除测试通过 | 访问决策、审计、残留扫描、备份处置 | 安全/数据负责人 |
| 告警运营 | SLO、数据质量和安全告警能路由到值班并形成处置闭环 | 触发、通知、处置、回归记录 | SRE/业务负责人 |

每项通过须绑定目标版本、负载和故障范围。报告、配置或静态策略只能证明设计存在，不能证明运行时隔离、恢复或质量结果。对外结论应列明已验证范围、未覆盖路径、数据缺口、剩余风险和责任人。

<a id="sec-9-1"></a>
### 9.1 关键反例与预期结果

下表为可复用的设计验收用例，尚未执行。每项须记录目标版本/配置摘要、输入/负载、操作、预期/实际、可见证据、是否通过、失败处置和责任人；状态协议以第 4 章为准。样本通过只支持该范围，不能外推为全生产证明。

| 编号 | 输入／操作 | 明确预期与证据 |
|---|---|---|
| V01 | 同事件原样重投、同 ID 改内容、不同 ID 矛盾终态、同流乱序、跨流 seq 差异 | 幂等/冲突分列；历史可补，当前状态不倒退，不跨流比较 |
| V02 | 时钟回拨后重启、旧 epoch 终态、伪造更高 epoch、租约撤销后旧执行者写入、不支持 fencing 的第三方端点重放 | 合法代次不依赖墙钟排序；权威身份及租约校验；旧数据不覆盖当前；目标服务 fencing 生效；兜底端点按网关幂等键、撤销传播与补偿契约处置，残余风险可见 |
| V03 | 首调用卡住、台账任务仅排队、延迟旧心跳；suspended 无心跳、审批拒绝/超时、等待协调组件故障、租约失效后批准、拒绝或超时后按策略重试或重新发起审批 | 任务可见；排队及有效人工等待不误判失联；等待证据缺失不可判；当前挂起代次可按授权提交失败结果；旧心跳不刷活性，失效租约不获恢复权限，恢复后重新起算心跳期限；拒绝或超时后重试／重审分支按 §4.1 保持 running／waiting_human，不误判 Run 失败 |
| V04 | E={A,B,C}，O={A,B,C}/{A,B}/{A,B,C,D}/{A,D}；生产者晚登记、数据已齐但迟到窗口未结束 | 封闭范围内判完整/缺失/清单外/两者并存；生产者范围变动遵守授权规则；按 §4.3 未最终封闭仍为 unknown，分块缺失到期为 unverifiable_timeout |
| V05 | 跨 Trace 相同 span_id、同身份不同载荷、载荷截断、尾采样决策记录缺失 | 不误去重；载荷冲突留痕，身份与载荷完整性分列；缺采样证据不承诺逐 Span 完整 |
| V06 | 正常 pending 轮询、不同订单/游标、并行分支、真实无进展、归一化后为空 | 正常行为不判失控；异常按工具/时间/预算证据升级；不可判可见 |
| V07 | 相同有状态任务重复，新旧变体并行、外部余额/缓存未重置 | 状态污染可被测试识别；重置/独立快照证据充分才使用可靠性结论 |
| V08 | 小样本全通过、缺评分、追加样本直到满意、六指标同时比较 | 证据不足未定；未知不算成功；停止和多重比较规则生效 |
| V09 | 篡改评分代码、读取答案、恶意 Judge 输入、合法格式但错误结果 | 评分资产与权限隔离；任务结果真实校验；Judge 攻击及剩余风险留痕 |
| V10 | 同一定义跨执行器回放、evaluator/unknown 角色进入旁路、Judge 超时、写回失败/ACK 丢失、执行器重启 | 关键语义与字段映射一致；无递归；漏标、调用失败、写回失败及缺分分列；结果幂等恢复，业务指标不污染 |
| V11 | 对象/引用各自失败、重投、进程退出、到期与孤儿清理 | §7.1 状态准确可补偿；无未授权内联全文回退；证据可查询 |
| V12 | 猜他人合法 key、恶意 URL/HTML、批量混入无权对象、缓存命中后撤销 | 对象级授权与安全渲染有效；缓存/批量不绕过权限；访问有审计 |
| V13 | PII 放入属性、Event/Link、Log body、Metrics 标签、嵌套值和错误日志 | 按位置矩阵验证，必需身份不误删；记录覆盖缺口，WAL 驻留如实申报 |
| V14 | 第 6 章七类损失、SDK 未 flush、Collector kill/重建、ACK 丢失 | 各耐久边界损失和恢复量化；重投不重复计费；接收确认不伪作入库确认 |
| V15 | 尾采样缓存中 kill、路由抖动、扩缩容、晚到错误/成本、执行段超过等待期、逐 Span 收据缺失 | 测量决策/保留/损失边界；无收据的尾采样段不做逐 Span E−O 声明；未达声明目标不启用对应采样策略 |
| V16 | 双头冲突、仅 B3/仅 W3C、共享 Span ID、边界 ID 重建、跨日/空索引/缺父 | §3.4 实测定级；不自指、不丢端、不靠时间猜关系；范围/截断可见 |
| V17 | 正常别名/批准路由、同名静默更新、JSON 重排、合法按权限切换工具集 | 正常不误判；指纹不是语义或授权证明；字段无法检测的边界明确 |
| V18 | 生产质量下降而三探针正常、探针缺结果、评分器版本变化 | 不直接归因输入漂移；核对覆盖、生产差异、评分与输入证据 |
| V19 | SDK/网关重复上报、真实收费重试、缺 usage、带偏采样、价格变化 | 去重与累计方向正确；未知可见；无纳入概率不承诺总额还原 |
| V20 | 生产衍生数据导出、跨租户、全链路删除/备份恢复、评估旁路队列满 | 用途/权限/保留受控；删除与合法例外有证明；恢复不无意重引已删除正文；旁路故障隔离实测 |
| V21 | Collector 持久化恢复后 Auth 上下文缺失、尾采样重组、多租户同批 | 受信租户归属仍可验证；不跨租户路由、查询或混批泄露 |
| V22 | 首期及恢复期的高后果断言单次失败、一般质量波动、重复告警、结果未定、到期未完成 | 风险路由、告警去重与恢复正确；A/D/S 分母一致；未定与超时不使端到端 SLI 虚高 |
| V23 | 状态服务在事件持久化、状态更新及检查点边界崩溃并重放 | 权威状态可恢复；无漏更新或重复副作用；冲突及迟到结果按 §4.1 裁决，旧执行者不获恢复权限 |
| V24 | 从其他实例/主机分别发送 Traces、Logs、Metrics，使用有效/无效凭据并拉取业务及内部指标 | 接收鉴权、网络策略和受信租户绑定有效；三类信号字段映射完整；内部与业务指标出口分别可查 |
| V25 | 多实例指标上报、连接切换、生产者重启、原生直方图抓取 | 无无法解释的重复或重置；累计/增量时态、序列身份、单位与分桶符合指标字典；缺值及重置可见 |
| V26 | 目标 ClickHouse exporter 配合自管 DDL 写入 Traces/Logs，执行字段、查询与索引压测 | schema 与版本兼容；身份、属性、时间精度及去重可核对；保存真实写入/查询负载和性能证据 |

<a id="sec-10"></a>
## 10. 类似背景下的落地建议

对已有 APM、列式存储和告警平台，但缺少 Agent 语义与质量评估的组织，建议先核对现有平台能否接入 OTLP、按 Run/Trace 检索、隔离租户、处理敏感内容和导出数据；再用同一代表性任务链比较现有平台扩展、专用平台和组合式方案。建议实施顺序及进入/退出条件如下，属于**通用落地建议**，适用于具有此类基础能力的组织。

| 阶段 | 进入条件 | 退出条件 |
|---|---|---|
| 任务与证据契约 | 已确定业务目标和权威结果系统 | Run/Attempt、终态、六类证据、权限和负责人获确认 |
| 有界链路接入 | 契约版本冻结 | 模型、工具、MCP/RAG、异步跨段可关联；内容默认最小化 |
| 运行与完整性核对 | 账本与专用通道可用 | 重启、迟到、失联、清单超时、采样边界测试通过 |
| 质量与运营 | 权威结果和数据集可用 | 评估校准、SLO、告警、成本分摊及发布门禁运行 |
| 规模与治理 | 前述反例验证完成 | 峰值、七类故障、租户隔离、删除与恢复有实测证据 |

代表性任务链至少注入“模型调用成功而任务失败”“工具报错却生成可信答案”“执行者重启”“遥测断流”“越权内容读取”，并分别判定结果、路径、状态、成本、安全和遥测健康。业务团队负责结果与高后果断言；运行时维护任务账本与生命周期；平台团队负责采集和核对；安全团队负责权限与内容；评估团队维护数据集；SRE 负责告警与演练。跨团队指标须指定唯一口径负责人。

## 参考资料

沿用资料的访问日期为 **2026-09-30**；v1.4 轮重新核对的 [5]、[13]、[22]、[23]、[34]、[36]、[37]、[38]、[39]、[60] 访问日期为 **2026-10-01**；本轮（v1.5）新增 [10]、[27] 并重新核对 [22]、[38] 相关链接，访问日期均为 **2026-10-15**。Collector 组件文档固定 v0.162.0；所引规范与产品能力仍应按目标部署版本复核。

<a id="ref-1"></a>[1] Cemri 等，[Why Do Multi-Agent LLM Systems Fail?](https://arxiv.org/abs/2503.13657)，arXiv:2503.13657，v3，2025-10-26。  
<a id="ref-2"></a>[2] Wu，[When Errors Become Narratives](https://arxiv.org/abs/2606.14589)，arXiv:2606.14589，2026；单作者预印本、个人助理运行时、8 周。  
<a id="ref-3"></a>[3] OpenTelemetry，[GenAI Semantic Conventions 仓库](https://github.com/open-telemetry/semantic-conventions-genai)。  
<a id="ref-4"></a>[4] vLLM，[Production Metrics](https://docs.vllm.ai/en/latest/usage/metrics/)。  
<a id="ref-5"></a>[5] 阿里云云原生，比扬，[AI Agent 可观测公开方案](https://developer.aliyun.com/article/1739437)，2026-06-03，阿里云开发者社区厂商账号产品介绍，非独立测试。  
<a id="ref-6"></a>[6] Anthropic，[How we built our multi-agent research system](https://www.anthropic.com/engineering/multi-agent-research-system)，2025-06-13，厂商工程实践；只支持该案例的经验。  
<a id="ref-7"></a>[7] PawBench，[官方仓库](https://github.com/agentscope-ai/PawBench)，Model × Harness、任务标签、评分及执行记录；当前仓库许可 Apache-2.0。  
<a id="ref-8"></a>[8] OpenTelemetry，[GenAI Agent Spans](https://github.com/open-telemetry/semantic-conventions-genai/blob/0c87594975195608dc91b3f702e250a7b240c151/docs/gen-ai/gen-ai-agent-spans.md)、[Client Spans](https://github.com/open-telemetry/semantic-conventions-genai/blob/0c87594975195608dc91b3f702e250a7b240c151/docs/gen-ai/gen-ai-spans.md)，固定提交 0c875949；对应合并日期 2026-09-10。  
<a id="ref-9"></a>[9] W3C，[Trace Context](https://www.w3.org/TR/trace-context/)；OpenTelemetry，[Baggage](https://opentelemetry.io/docs/concepts/signals/baggage/)。  
<a id="ref-10"></a>[10] Arize，[OpenInference Specification](https://arize-ai.github.io/openinference/spec)；Phoenix，[OTel GenAI 语义约定自动转换发布说明](https://www.arize.com/docs/phoenix/release-notes/05-2026/05-15-2026-otel-semconv-conversion)（arize-phoenix 15.10.0+）；属性与 span kind 清单以规范站为准，转换行为按目标版本核验。  
<a id="ref-11"></a>[11] OpenTelemetry，[MCP Semantic Conventions](https://github.com/open-telemetry/semantic-conventions-genai/blob/0c87594975195608dc91b3f702e250a7b240c151/docs/gen-ai/mcp.md)。  
<a id="ref-12"></a>[12] OpenTelemetry，[GenAI Metrics](https://github.com/open-telemetry/semantic-conventions-genai/blob/0c87594975195608dc91b3f702e250a7b240c151/docs/gen-ai/gen-ai-metrics.md)，固定提交。  
<a id="ref-13"></a>[13] Spring AI，[Observability](https://docs.spring.io/spring-ai/reference/observability/index.html)，Micrometer、观测名及配置；不等同于本文 GenAI 固定提交。  
<a id="ref-14"></a>[14] LangChain4j，[Observability](https://docs.langchain4j.dev/tutorials/observability/)，ChatModelListener、流式线程与重试回调边界。  
<a id="ref-15"></a>[15] Traceloop，[OpenLLMetry 文档](https://traceloop.com/docs/openllmetry)。  
<a id="ref-16"></a>[16] OpenZipkin，[B3 Propagation](https://github.com/openzipkin/b3-propagation)，传播身份及共享 Span ID；与上报格式分别处理。  
<a id="ref-17"></a>[17] OpenTelemetry，[Propagators API](https://opentelemetry.io/docs/specs/otel/context/api-propagators/)，传播器及 B3 服务端 Span 要求。  
<a id="ref-18"></a>[18] OpenTelemetry，[Tracing SDK：Span Processor](https://opentelemetry.io/docs/specs/otel/trace/sdk/#span-processor)。  
<a id="ref-19"></a>[19] OpenTelemetry，[Tracing API：End](https://opentelemetry.io/docs/specs/otel/trace/api/#end)。  
<a id="ref-20"></a>[20] Yao 等，[τ-bench](https://arxiv.org/abs/2406.12045)，arXiv:2406.12045，2024。  
<a id="ref-21"></a>[21] OpenTelemetry，[GenAI Events](https://github.com/open-telemetry/semantic-conventions-genai/blob/0c87594975195608dc91b3f702e250a7b240c151/docs/gen-ai/gen-ai-events.md)，固定提交。  
<a id="ref-22"></a>[22] NIST，[Binomial proportion confidence intervals](https://www.itl.nist.gov/div898/handbook/prc/section2/prc241.htm)；Efron 与 Tibshirani，[An Introduction to the Bootstrap](https://www.routledge.com/An-Introduction-to-the-Bootstrap/Efron-Tibshirani/p/book/9780412042317)，Chapman & Hall/CRC，1994（所引版本版权页；见[出版社预览](https://api.pageplace.de/preview/DT0400.9781000064988_A38593564/preview-9781000064988_A38593564.pdf)）；Field 与 Welsh，[Bootstrapping clustered data](https://rss.onlinelibrary.wiley.com/doi/10.1111/j.1467-9868.2007.00593.x)，Journal of the Royal Statistical Society B，2007。  
<a id="ref-23"></a>[23] Wang 等，[BenchJack](https://arxiv.org/abs/2605.12673)，arXiv:2605.12673v1，2026-05-12；评分资产与对抗审计，另见 [v1 PDF Appendix C：The Agent-Eval Checklist](https://arxiv.org/pdf/2605.12673v1#page=18)。  
<a id="ref-24"></a>[24] Langfuse，[Evaluation Overview](https://langfuse.com/docs/evaluation/overview)。  
<a id="ref-25"></a>[25] Google，[SRE Workbook: Alerting on SLOs](https://sre.google/workbook/alerting-on-slos/)。  
<a id="ref-26"></a>[26] American Statistical Association，[Statement on Statistical Significance and P-Values](https://www.amstat.org/asa/files/pdfs/P-ValueStatement.pdf)，2016；统计决策不能仅依赖 p 值阈值。  
<a id="ref-27"></a>[27] Zhang 等，[Which Agent Causes Task Failures and When? On Automated Failure Attribution of LLM Multi-Agent Systems](https://arxiv.org/abs/2505.00212)，arXiv:2505.00212，v3，2025-06-02，ICML 2025；Who&When 数据集与 All-at-Once、Step-by-Step、Binary-Search 三类自动归因方法；结果限其数据集与受测方法。  
<a id="ref-28"></a>[28] RFC 8785，[JSON Canonicalization Scheme](https://www.rfc-editor.org/rfc/rfc8785)，JSON 规范化；不提供语义等价或来源授权证明。  
<a id="ref-29"></a>[29] UC Berkeley，[BFCL 官方页面](https://gorilla.cs.berkeley.edu/leaderboard.html)，按使用版本及子集复核。  
<a id="ref-30"></a>[30] SWE-bench，[官方文档](https://www.swebench.com/SWE-bench/)，软件问题修复与评测环境。  
<a id="ref-31"></a>[31] OSWorld，[官方项目](https://os-world.github.io/)，桌面任务及执行环境。  
<a id="ref-32"></a>[32] OpenTelemetry，[Collector Resiliency](https://opentelemetry.io/docs/collector/resiliency/)。  
<a id="ref-33"></a>[33] OpenTelemetry，[Collector Internal Telemetry](https://opentelemetry.io/docs/collector/internal-telemetry/)。  
<a id="ref-34"></a>[34] OpenTelemetry Collector Contrib，[ClickHouse Exporter README](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/v0.162.0/exporter/clickhouseexporter/README.md)。  
<a id="ref-35"></a>[35] ClickHouse，[ReplacingMergeTree 指南](https://clickhouse.com/docs/concepts/features/operations/update/replacing-merge-tree)。  
<a id="ref-36"></a>[36] OpenTelemetry Collector，[Exporter Helper](https://github.com/open-telemetry/opentelemetry-collector/blob/v0.162.0/exporter/exporterhelper/README.md)，sending_queue、sizer、batch、storage 与持久化上下文边界；实现按目标版本核验。  
<a id="ref-37"></a>[37] OpenTelemetry Collector，[Batch Processor](https://github.com/open-telemetry/opentelemetry-collector/blob/v0.162.0/processor/batchprocessor/README.md)，批处理缓存、大小及元数据分组。  
<a id="ref-38"></a>[38] OpenTelemetry Contrib，[Tail Sampling Processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/v0.162.0/processor/tailsamplingprocessor/README.md)，内存状态、同 Trace 汇聚、等待与晚到决策；实现按目标版本核验。  
<a id="ref-39"></a>[39] OpenTelemetry Contrib，[Redaction Processor](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/v0.162.0/processor/redactionprocessor/README.md)，属性/body支持和规则按目标版本验证。  
<a id="ref-40"></a>[40] OpenTelemetry，[Agent/Gateway deployment patterns](https://opentelemetry.io/docs/collector/deploy/agent/)，另见 [Gateway](https://opentelemetry.io/docs/collector/deploy/gateway/)。  
<a id="ref-41"></a>[41] OpenTelemetry，[Collector distributions 与 Builder](https://opentelemetry.io/docs/collector/distributions/)，另见 [ocb](https://opentelemetry.io/docs/collector/extend/ocb/)。  
<a id="ref-42"></a>[42] ClickHouse，[ClickStack Performance Tuning](https://clickhouse.com/docs/clickstack/managing/performance-tuning)，查询、schema 与索引取舍；示例性能不作为本文保证。  
<a id="ref-43"></a>[43] 全国人大常委会，[中华人民共和国个人信息保护法](https://www.cac.gov.cn/2021-08/20/c_1631050028355286.htm)。  
<a id="ref-44"></a>[44] 全国人大常委会，[中华人民共和国数据安全法](https://www.miit.gov.cn/zwgk/zcwj/flfg/art/2022/art_284b390b84484f10b0e43eeafaad0f6d.html)。  
<a id="ref-45"></a>[45] 国家网信办等，[生成式人工智能服务管理暂行办法](https://www.cac.gov.cn/2023-07/13/c_1690898327029107.htm)。  
<a id="ref-46"></a>[46] 国家网信办等，[人工智能生成合成内容标识办法](https://www.cac.gov.cn/2025-03/14/c_1743654684782215.htm)。  
<a id="ref-47"></a>[47] 国家标准全文公开系统，[GB 45438-2025 人工智能生成合成内容标识方法](https://openstd.samr.gov.cn/bzgk/std/newGbInfo?hcno=F32EA2A561F1886CD8D606513512D547)。  
<a id="ref-48"></a>[48] OWASP GenAI Security Project，[Top 10 for Agentic Applications 2026](https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/)。  
<a id="ref-49"></a>[49] OWASP，[SSRF Prevention Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html)，受控端点与请求验证。  
<a id="ref-50"></a>[50] OWASP，[Logging Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html)，日志数据排除、清洗、访问保护及测试。  
<a id="ref-51"></a>[51] OpenLIT，[项目概览](https://github.com/openlit/openlit/blob/main/README.md)。  
<a id="ref-52"></a>[52] Jaeger，[Jaeger v2.21 文档](https://www.jaegertracing.io/docs/2.21/)、[架构](https://www.jaegertracing.io/docs/2.21/architecture/)。  
<a id="ref-53"></a>[53] Grafana，[Tempo Architecture](https://grafana.com/docs/tempo/latest/introduction/architecture/)。  
<a id="ref-54"></a>[54] SigNoz，[LLM Observability](https://signoz.io/docs/llm-observability/)。  
<a id="ref-55"></a>[55] ClickHouse，[ClickStack](https://clickhouse.com/clickstack)。  
<a id="ref-56"></a>[56] Langfuse，[Self-hosting](https://langfuse.com/self-hosting)。  
<a id="ref-57"></a>[57] Langfuse，[OpenTelemetry 接入](https://langfuse.com/integrations/native/opentelemetry)、[RBAC](https://langfuse.com/docs/administration/rbac)。  
<a id="ref-58"></a>[58] Arize，[Phoenix 文档](https://arize.com/docs/phoenix/)、[自托管部署](https://arize.com/docs/phoenix/self-hosting/deploying-phoenix)。  
<a id="ref-59"></a>[59] Arize，[Phoenix Authentication](https://arize.com/docs/phoenix/deployment/authentication)。  
<a id="ref-60"></a>[60] Arize Phoenix，[Endpoint FAQ](https://arize.com/docs/phoenix/learn/faqs/what-is-my-phoenix-endpoint)，以官方重定向后的页面为准。  
<a id="ref-61"></a>[61] Comet，[Opik Self-hosting](https://www.comet.com/docs/opik/self-host/overview?from=llm)、[Evaluation](https://www.comet.com/docs/opik/evaluation/overview/)。  
<a id="ref-62"></a>[62] Comet，[Opik OpenTelemetry 接入](https://www.comet.com/docs/opik/integrations/opentelemetry)。  
<a id="ref-63"></a>[63] MLflow，[Tracing](https://mlflow.org/docs/latest/genai/tracing/)、[GenAI Datasets](https://mlflow.org/docs/latest/genai/datasets/)。  
<a id="ref-64"></a>[64] 各项目官方许可资料：[OpenLLMetry](https://github.com/traceloop/openllmetry)、[OpenLIT](https://github.com/openlit/openlit)、[Jaeger](https://github.com/jaegertracing/jaeger)、[Tempo](https://github.com/grafana/tempo/blob/main/LICENSING.md)、[SigNoz](https://github.com/SigNoz/signoz/blob/main/LICENSE)、[Langfuse](https://github.com/langfuse/langfuse/blob/main/LICENSE)、[Phoenix](https://github.com/Arize-ai/phoenix/blob/main/LICENSE)、[Opik](https://github.com/comet-ml/opik)、[MLflow](https://github.com/mlflow/mlflow)、[ClickHouse](https://github.com/ClickHouse/ClickHouse/blob/master/LICENSE)、[HyperDX](https://github.com/hyperdxio/hyperdx/blob/main/LICENSE)。  

## 更新历史

| 版本 | 日期 | 概要 |
|---|---|---|
| v1.0 | 2026-09-30 | 首次公开发布。 |
| v1.1 | 2026-09-30 | 增加候选项目比较、OTel 字段映射、生命周期与完整性契约、SLO/运营、安全风险映射和验收判据；修订引用与术语。 |
| v1.2 | 2026-09-30 | 拆分 Run/Attempt 状态机；统一活性、完整性和性能口径；修正产品 OTLP 接入、许可与引用，补充清单成本和失败边界。 |
| v1.3 | 2026-09-30 | 补充变更放行、变体与轨迹归因、分层探针、评分可信性、评估执行器、循环判别、异构链路互通、内容一致性、埋点与 Collector 机制、基准与治理证据，以及 26 项关键反例；修正身份、SLI、版本相关表述，补充一手来源。 |
| v1.4 | 2026-10-01 | 完善挂起中失败结束、等待活性及授权裁决；删除无依据的 Phoenix 云端协议限制；重写摘要并补章节导读、术语与分诊反例；固定 Collector 引用版本，更新公开案例与书目来源；完成终审修订复核。 |
| v1.5 | 2026-10-15 | 按外部审查意见修订：补充 OpenInference 并存约定的映射与静默丢失防护（§3.1、§8）、不支持 fencing 端点的网关兜底契约（§4.1）、尾采样收据边界与逐 Span 核对范围限制（§4.3、§6.2）、多智能体自动失败归因方法对照（§5.4.3）；补齐 Run 状态机重试／重审分支（§4.1）；修正书目链接并同步重排引用编号（新增 [10]、[27]）。 |
