传统的可观测性之所以成立,是因为失败的模式在执行前就已为人所知:
- 请求失败了
- 延迟增加了
- 任务超时了
- 用户点错了按钮
这些对软件工程师来说是非常合理的假设。分布式系统虽然复杂,但系统的本体(ontology)是相对稳定的——我们知道事件的大致形状、属性有哪些、哪些指标值得追踪。可观测性本质上是在解决一个效率问题:定义感兴趣的对象、记录它们、计算指标。
但 Agent 活在另一个世界。
Agent 的系统本体在执行前根本无法获知。执行之前,我们不知道 Agent 会表现出哪些行为组合、它会走什么捷径、发现什么有效策略,更不知道它会进入怎样灾难性的失败模式。
这就改变了操作的顺序。
传统可观测性:ontology 在前,测量在后
我们先知道什么重要,再去测量它。
Agent 可观测性:ontology 跟随执行出现
Agent 先行为,我们再从它的轨迹中识别哪些行为在语义上是重要的。
技术挑战变了。 不再是事件捕获的问题,而是行为发现的问题。
一个不同的调试体验
对 Agent 有效的可观测性系统,优化的是这个循环:
- 执行 Agent
- 快速发现、分流、调查有趣的行为(好的或坏的)
- 让人类快速评估这些行为
- 把人类信号转化为指标、评估、干预
- 用这些 artifact 塑造未来的 Agent 行为
Leonard Tang 把这叫做 Semantic Observability(语义可观测性)。
"Semantic"这个词是关键。Trace 本身大部分是句法层面的——一个事件账本。它不告诉你哪些轨迹应该被强化或抑制,也就是什么是好的、什么是坏的。
传统指标太粗糙了。成功率、任务完成率、Judge 评分,都把 Agent 行为的丰富性压缩成了有损摘要。这些摘要只在行为已经被定义之后才有用——它们不解决发现问题本身。
构建 Agent 时,最难的部分是发现问题:
- Agent 表现出哪些长尾且可能具灾难性的行为?
- Agent 经常陷入哪些模式?
- 这些模式在什么场景和条件下出现?
- 这些模式最终是否满足了人类设定的规范?
这些都是语义问题,不是加更多日志能解决的。
捕获并规模化人类判断
语义可观测性系统必须能快速摄入人类信号。
系统本身可能无法判断一个模式是 desirable、undesirable、brittle 还是 deceptive。这种知识只能通过人类判断来获取——是人类注意到了"这个行为用错误的原因奏效了"、"这个行为在某些上下文里失败了"、或者"这个行为出人意料地有效,但现有指标完全捕捉不到"。
一旦一个行为被发现、人类信号被捕获,就可以转化为更持久、更可规模化的 artifact:指标、Judge、评估、警告信号、回归测试、路由启发式、Skill、在线验证器。一次性的观察,最终成为系统未来训练和 steering loop 的一部分。
TLDR:
- 传统可观测性测量预定义的行为
- 语义可观测性发现涌现行为,再将其结构化为指标
核心问题在于设计一个能实现快速语义发现、快速人类评估、快速将新行为转化为指标和干预的系统。这不是工程师训练做的事——这是研究员做的事,是宽客做的事,是数据科学家做的事。
你观察你的数据,然后搞清楚发生了什么。
语义可观测性把这种能力规模化。
这篇的贡献是把 Agent 调试和传统软件调试的本质区别说清楚了——ontology 的顺序变了。传统 O11y 的核心是"先定义要观测什么",Agent 时代必须反过来。这个框架对做 Agent 基础设施的人很有价值:你在设计的不是日志系统,是一个行为发现和人类判断之间的反馈回路。