这一层关注的是在生产环境中如何监控、调试并确保 Agent 行为的可靠性。与以往框架将可观测性视为生命周期钩子(Lifecycle Hooks)的副产物不同,本文将可观测性与运维提升为一等公民,因为它已经催生了专门的平台、规范和工程实践生态系统。

image.png

1. 追踪与监控平台 (Tracing and Monitoring)

可观测性的基石是结构化轨迹捕获(Structured Trace Collection),其核心在于将每一次 LLM 调用、工具执行和检索步骤记录为一棵 tree of spans。这种结构支持对智能体行为进行过滤、回放和深度分析。

论文列举了 Langfuse、Opik、Arize Phoenix 和 MLflow 等代表性平台。为了降低系统集成门槛,业界正趋向于采用统一的检测标准,而 OpenTelemetry (OTel) 逐步成为通用的事实标准。OTel 社区发布了生成式 AI 的语义规范,定义了模型名称、温度、Token 计数和延迟等标准属性。有两个开源项目落地了这套规范,分别是 OpenLLMetry 和 OpenInference。通过 OTel,智能体轨迹数据可以无缝流入传统的微服务监控后端(如 Prometheus, Jaeger, Grafana等),减少了运维负担。

此外,作者还介绍了两种更具创新性的监测范式:

  • 基于 eBPF 的系统级监控 (AgentSight)
    • 机制:从应用程序进程外部进行监控,在 SSL 边界拦截加密流量以捕获意图,并监控内核事件(进程创建、文件 I/O、网络调用)以捕获动作。
    • 核心优势:具有框架无关性,且不会被已攻破或配置错误的智能体绕过,这对安全性要求极高的部署场景至关重要。其 CPU 开销极低(小于 3%)。
  • 结构化日志 (AgentTrace)
    • 认知表面(Cognitive):捕捉显式的推理步骤、计划和反思。这对于调试由“推理错误”而非“系统错误”引发的故障至关重要。
    • 操作表面(Operational):记录工具调用和 API 交互。
    • 上下文表面(Contextual):记录环境状态和用户输入。

AgentTrace: <a href=\https://arxiv.org/abs/2602.10133" loading="lazy" src="/posts/harness-engineering-06-observability/images/image01.png"> 引用 AgentTrace: https://arxiv.org/abs/2602.10133

在看可观测性相关的内容时,以及平时与同事的交流中,发现大家对 trace 和 trajectory 这两个词常常混着用,宏观上它们应该是同义的,但不太能区分两者间细微的差异。故在此做一个记录与说明。

Trace vs. Trajectory

  • Trace:其核心释义是“痕迹”**。**在计算机科学中,它侧重于日志记录和程序执行流的复现。它像是一份详尽的“账单”,记录了系统在每一个微观瞬间发生了什么。
  • Trajectory:其核心释义是“物体移动的路径”,也就是“轨迹”。在智能体语境中,它侧重于“动作的演进过程”,展示了智能体如何从起点状态逐步移动到终点状态,强调的是宏观的连贯性和方向性。

总结,Trace 是构建 Trajectory 的基础。没有详尽的 Trace 捕捉,就无法抽象出准确的 Trajectory;而 Trajectory 是对 Trace 数据的高级叙事化表达。

2. 智能体专用运维平台 (Agent-Specific Operations)

通用的 tracing 平台通常将 LLM 调用或工具执行视为孤立的 Span 事件,而智能体专用平台则引入了更高维度的抽象,用于捕捉智能体特有的业务逻辑,关注点包括多步会话追踪、智能体身份与角色管理、工具选择策略以及跨会话的状态移交等。代表平台有 AgentOps SDK、RagaAI Catalyst、Laminar 等。

此外,学术界也开始对智能体运维的关注点进行标准化。Moshkovich 提出了 AgentOps 六阶段管线:观察(Observe) → 指标采集(Collect Metrics) → 异常检测(Detect Anomalies) → 根因分析(Root-cause Analysis) → 建议修复(Recommend Fixes) → 自动修复(Automate Remediation)。

更进一步地,Natural-Language Agent Harnesses (NLAH) 框架将 Harness 层本身视为“一等公民”进行研究。通过系统性的消融实验,包括移除或调整工具注册表、权限系统、Hooks、Skills、上下文等模块,量化每个组件对最终性能的贡献。因此,观测平台不仅仅是监控工具,更是 Harness 进化的数据源,其意义在于,通过观测发现的问题可以直接反馈到 Harness 层的特定模块进行微调。

最后,我们还需重点关注一个概念,即 Cognitive Observability(认知观测性)。它讲的是,我们不仅要观测 Agent 做了什么,还要关注它是为什么这么做的。作者介绍了两个该方向的工作,分别是 WatsonAgentLens

Cognitive observability extends agent-level monitoring to ask not just what an agent did, but why.

3. 成本追踪与优化 (Cost Tracking and Optimization)

本节探讨的是智能体在处理长程任务时的成本压力,并系统性地梳理从追踪到优化的工程解决方案。

追踪的目的是明确“Token 都花在了哪里”,当前的工程实践分为全栈式和轻量化两种路线:

  • 全栈式管理(TensorZero):提供统一的运维能力,支持对每一次调用和每一个任务进行精确的成本归因。
  • 轻量化代理(Helicone):采用无侵入的代理模式,无需更改代码即可实现成本和延迟监控,适合追求快速落地的团队。

优化策略则涵盖了从提示词设计到模型路由,再到基础设施运行的多个层级:

  • 模型级优化(FrugalGPT):
    • 策略:提出提示词适配、模型近似和**级联(Cascading)**机制。
    • 效果:通过将简单查询路由到廉价模型,在保持 GPT-4 级别性能的同时,最高可降低 98% 的成本。
  • 缓存机制(GPTCache):利用嵌入向量相似性实现语义缓存,在查询到达 LLM 之前拦截重复或表述相近的请求,从而节省开销。
  • 质量感知路由(QC-Opt):在预算约束下,通过预测器动态优化模型选择、Token 数量和延迟之间的平衡。
  • Token 弹性管理(TALE):揭示了一个反直觉的工程现象——预算设得太低反而可能增加总消耗。如果思维链推理的预算不足,模型可能会因超出限制而反复重试或生成更多无效 Token。
  • 服务端资源分配(Dual-Pool Routing):将统一的 vLLM 集群划分为短上下文资源池与长上下文资源池,并基于预估 token 预算分发请求。实验证明这种路由方式可减少 31%-42% 的 GPU 工时,年均节省数百万美元。

这一节最重要的洞察在于:**成本优化不是孤立的财务行为,它会直接影响智能体的性能表现。**论文引用了 Anthropic 的研究指出,仅仅是基础设施配置(如为了省钱而做的调整)就能导致基准测试分数出现 6 个百分点 的波动。这意味着,如果没有精细的观测,激进的成本削减可能会在开发者不知情的情况下导致智能体性能的“隐性崩溃”。

4. 可靠性工程 (Reliability Engineering)

本节主要探讨了智能体如何通过 Harness 工程设计,确保长周期运行的任务能够应对瞬时故障、维持状态连贯性并在逻辑偏离时进行自我修复。可靠性工程在智能体语境下是指:当任务跨越多个上下文窗口运行,且每一轮交互都可能因网络、环境或逻辑错误而中断时,Harness 层如何保证任务的可恢复性健壮性

根据 Anthropic 在长程编码智能体中的观察,主要存在四种破坏可靠性的典型模式:

  • 一发即忘(One-shotting):智能体试图在没有任何分解的情况下一次性完成复杂任务,导致逻辑崩溃。
  • 过早宣布成功(Premature Completion):在未完成所有步骤的情况下提前终止任务。
  • 环境状态损坏(Broken State):在不同会话之间,智能体留下的执行环境(如文件系统、数据库)处于不可用的状态。
  • 测试缺失(Untested Features):智能体虽然生成了功能,但没有进行验证就标记为完成。

为了解决上述问题,Harness 层引入了多种架构层面的约束与机制:

  • 任务分解与进度固化
    • 初始化代理 (Initializer Agent):将模糊的规约分解为结构化的任务列表。
    • 进度制品 (Progress Artifacts):使用 Git 仓库、进度文件(如 todo.md)和初始化脚本来追踪状态。这使得即使智能体崩盘,新实例也能通过读取这些物理制品来接手工作。
  • 多智能体权力制衡 (Planner-Generator-Evaluator)
    • 对抗性逻辑:将“做事”与“评判”分离。由于智能体倾向于赞美自己的工作(自我评价宽容),独立的 Evaluator 可以通过“Sprint Contracts”强制执行严格的质量关卡。
    • Playwright 自动化测试:Evaluator 使用工具(如 Playwright)真实地点击应用程序,寻找逻辑 Bug,而不仅仅是检查文本生成。
  • Managed Agents 架构。将智能体系统拆分为三个独立可恢复的部分:
    • 大脑 (Brain):由 Harness 层和 LLM 组成的逻辑中心。
    • 手 (Hands):沙盒环境与工具集。
    • 会话 (Session):持久化的事件日志。

<a href=\https://www.anthropic.com/engineering/managed-agents" loading="lazy" src="/posts/harness-engineering-06-observability/images/image02.png">

引用 https://www.anthropic.com/engineering/managed-agents

Managed Agents 架构的恢复机制。如果逻辑中心崩溃,可以通过 wake(sessionId) 重启并从日志中的最后一个事件恢复;如果沙盒故障,Harness 层会捕获错误并自动重新配置新沙盒。这种设计将组件从“宠物”转变为“牲畜”,即可互换且可自动重新部署的单元。(注:为什么作者用“from Pets to Cattle”的比喻?因为”宠物”是不可替代的、需要人工照料的实例,而"牲畜"是可互换、可自动重新配置的实例… orz…)

<a href=\https://www.anthropic.com/engineering/managed-agents" loading="lazy" src="/posts/harness-engineering-06-observability/images/image03.png">

引用 https://www.anthropic.com/engineering/managed-agents

此外,可靠性工程还包括对失败的深度分析:

  • AgentErrorTaxonomy:将错误归类为内存、反思、规划、行动或系统层级。研究发现,错误传播(Error Propagation)——即单一根因错误像瀑布一样引发后续连锁决策失效——是可靠性的核心瓶颈。
  • 三层监控 (SentinelAgent):利用图形模型对异常进行全局、单点或多点分类,辅以人类在环的策略优化。
  • 确定性校验:如 AgentFixer 发现,38% 的任务失败源于解析错误(Parsing errors),这类错误完全可以通过装备层中的确定性逻辑来拦截和修复。

本节还提出了一个深刻的原则:Harness-as-Assumption —— Harness层的每一个组件实际上都代表了一个关于“模型目前还做不到什么”的假设

Harness-as-Assumption. Every harness component encodes an assumption about what the model cannot do on its own, and those assumptions go stale as models improve.

随着模型能力的提升(如从 Claude 4.5 升级到 4.6),原本为了辅助模型而设计的复杂 harness 逻辑(如频繁的上下文重置或多级验证)可能变成多余的开销,甚至降低效率。因此,理想的可观测系统不仅要监控失败,还应监控哪些干预措施不再起支撑作用,从而随着模型升级主动简化系统。