跳到主要内容

智能体系统中的决策溯源:真正有效的审计追踪

· 阅读需 15 分钟
Tian Pan
Software Engineer

你的生产系统中有一个智能体删除了 10,000 条数据库记录。这次删除符合有效的业务逻辑 —— 这些记录被正确标记了。但三个月后,监管机构提出了一个简单的问题:谁授权了这个操作,智能体是根据什么依据做出决定的?你打开日志,找到了 SQL 语句,找到了时间戳,但什么都找不到了。

这就是决策溯源问题。你可以证明你的智能体采取了行动;但你无法证明它为什么这样做,或者这个行动是否曾经得到了一个真正理解自己在批准什么的人的授权。随着自主智能体开始执行跨越数小时、数十次工具调用、且决策具有真实世界影响的工作流,"我们有日志"与"我们有问责机制"之间的鸿沟已经在运营上变得危险。

传统的后端可观测性回答的是延迟和错误方面的问题。决策溯源回答的是另一个问题:既然这个智能体采取了这个行动,我们能否重建导致该行动的完整推理链、数据链和授权链? 对于当今大多数生产环境中的智能体系统来说,答案是否定的 —— 而这一鸿沟的代价正在迅速上升。

为什么标准可观测性远远不够

OpenTelemetry span 是追踪执行流程、延迟和错误传播的正确工具,但它不是决策问责的正确工具。一个 span 告诉你工具调用 X 在时间 T 发生,耗时 230 毫秒。它不会告诉你:

  • 是什么推理促使智能体调用了该工具而不是其他工具
  • 智能体使用的数据在决策时是否是最新的
  • 谁授权智能体采取了不可逆的行动
  • 工作流中哪个先前的决策导致了这个决策
  • 智能体的中间推理步骤是正确的还是幻觉产生的

这是根本性的差距。span 是延迟/依赖图。决策溯源是关于为什么而不仅仅是做了什么的语义丰富记录。当一个多智能体流水线产生幻觉并将这个错误通过三个下游智能体级联传播,然后才有人发现时,你的 span 追踪会以完美的顺序显示每一次服务调用,但不会显示是哪个智能体引入了错误的事实,以及为什么每个后续智能体都信任了它。

团队犯的错误是混淆了可观测性(我的系统行为如何?)和溯源(我的智能体为什么做出这个决定?)。两者都需要,而且需要不同的埋点方式。

决策溯源必须回答的四个问题

在设计任何审计架构之前,先明确你需要重建什么。四个问题定义了最小可行溯源记录:

智能体使用了哪些数据,这些数据有多新鲜? 陈旧的检索是智能体错误最常见的来源之一。如果一个智能体在一次限时抢购期间基于 45 分钟前的库存数据做出了定价决策,你需要在审计日志中记录这个事实。工具调用输出应该携带来源时间戳;检索步骤应该记录决策时的数据新鲜度。

哪条推理路径导致了这个行动? 一个删除了记录的智能体,和一个因为错误分类了过滤条件而删除了记录的智能体,是同一个行动但却是不同的失败。中间推理步骤 —— 智能体生成的计划、它做出的自我修正、它应用的解释 —— 是区分模型错误、业务逻辑错误和提示词失败的关键。这些步骤需要被记录为一等事件。

这个行动是否得到了授权,由谁授权的? 不可逆的行动需要在审计追踪中有人工审批标记。可逆行动应该记录其可逆性状态。当授权链跨越多个智能体时 —— 智能体 A 委托给子智能体 B,B 调用了外部 API —— 每次委托都必须可以追溯到授予原始权限的人类。

如果出了问题,谁来负责? 不是哪个智能体执行了行动,而是哪个人类拥有这个结果。在一个拥有 50 个智能体且没有明确所有权的系统中,监管机构和事件响应者最终会面对同样的问题:谁负责?每个能够采取具有业务影响行动的智能体都需要一个在决策时记录的指定人类所有者。

设计决策事件模式

智能体系统的审计追踪不是一个日志文件 —— 它是一个事件流,其中每个事件代表一个离散的决策。决策事件的模式需要捕获六类信息:

身份和谱系: decision_id(UUID)、session_id(父工作流追踪)、agent_idparent_agent_id(如果没有委托则为 null)以及 parent_decision_id(触发此决策的内容)。这四个字段让你能够在任何多智能体委托层级中重建因果链。

时间和上下文: ISO8601 时间戳、环境(生产/预发布)以及生成时使用的模型版本和采样参数。模型版本比大多数团队意识到的更重要 —— 提供商在服务端悄悄更新模型会在不更改 API 端点的情况下改变行为。

推理追踪: 推理步骤的有序列表,每个步骤包含智能体得出的中间结论,以及可用的置信度分数。这是当你发现多步骤工作流出错时,能让你找到哪里出了问题的记录,而不是仅仅发现最终输出是错误的。

工具调用: 对于每次工具调用:名称、版本、参数、结果、延迟、状态(成功/失败/超时),以及一个布尔值,指示该调用是否产生了副作用。工具版本很重要;工具定义中的模式漂移是智能体无声失败的主要原因。

数据谱系: 对于每条检索或获取的数据:来源、检索时间戳,以及决策时的数据年龄(新鲜度,以秒为单位)。这是让你能在事后审查中回答"智能体是否在使用陈旧数据?"的记录。

可逆性和授权: 一个布尔值,表示行动是否可以撤销;如果不能,则有一条包含审批者 ID 和时间戳的人工审批结构化记录。如果一个智能体在没有填充此字段的情况下采取了不可逆行动,你的系统就存在治理漏洞。

这些字段会增加开销 —— 但远少于事后重建问责机制的开销。目标不是记录一切,而是记录你回答上述四个溯源问题所需的内容,不多也不少。

所有权移交问题

多智能体系统中决策溯源最难的部分不是模式设计。而是回答这个问题:当智能体 A 委托给子智能体 B 时,谁拥有子智能体 B 的决策?

没有通用答案,但有三种在实践中有效的模式,每种都有不同的问责含义:

保留责任。 智能体 A 将子智能体 B 作为工具调用来调用。从治理角度来看,B 是 A 使用的一种能力。B 的决策就是 A 的决策。A 的审计追踪必须将 B 的决策事件作为子事件包含在内。如果 B 产生了错误的输出,失败归因于 A —— A 在对 B 的输出采取行动之前应该验证过它。

明确的范围委托。 智能体 A 授予子智能体 B 在定义范围内行动的权限:特定工具、特定资源限制、定义的时间窗口。B 的决策事件记录了继承的范围和 parent_agent_id。如果 B 在范围内操作,B 拥有该决策。如果 B 超出范围,该事件会被标记为上报给 A 的人类所有者。Aegis 框架通过要求所有下游请求携带父智能体 ID 标头并将其与允许委托的 DAG 进行验证来强制执行这一点。

人工关卡移交。 智能体 A 在委托或行动之前将决策标记为人工审查。人类批准(或修改),批准记录了审批者 ID 和时间戳。后续智能体行动将该审批记录作为其授权链携带。这种模式在延迟方面代价高昂,但对于超过一定风险阈值的不可逆行动是合适的。

常见的失败模式是所谓的"无主智能体":能够采取具有业务影响行动的智能体,没有指定的人类所有者,也没有可追溯到人类的委托链。在 2025 年一项关于智能体身份访问事件的调查中,最常见的发现是智能体为特定任务被授予了广泛访问权限,然后无限期地保留了该访问权限,没有任何记录表明谁授予了它或为什么。决策溯源要求每个拥有重要权限的智能体在系统中记录一个人类所有者 —— 不是假设的,不是隐含的,而是明确记录的。

以事件溯源为基础

实现决策溯源最可靠的模式是将智能体决策视为仅追加的事件流,借鉴金融和分布式系统中使用的事件溯源模式。

每次状态变更 —— 每个决策 —— 都作为不可变事件写入。不允许事后修改。完整的决策历史可以通过按顺序重放事件来重建。这给你提供了时间旅行能力:你可以重建工作流任意时间点的系统状态,这对事后事件分析和监管审计至关重要。

这种模式的实践基础设施:用于吞吐量和保留的事件代理(Kafka 或 Pulsar 都很好用)、用于在事件格式演变时强制执行模式契约的模式注册表(Confluent 或 AWS Glue),以及用于索引查询的时序数据库或文档存储。模式注册表不是可选的 —— 审计事件中的模式漂移与 API 中的模式漂移是同一个问题:会使旧事件无法读取的静默破坏性变更。

对于多智能体谱系而言,图数据库比平面日志存储更具可查询性。将决策建模为节点,将因果关系建模为边(决策 A 触发了决策 B;决策 B 使用了来自检索 C 的数据),让你能够以一种通过按会话 ID 过滤日志记录无法实现的方式,将特定结果追溯到完整的因果链。

幻觉传播以及溯源如何捕获它

决策溯源鲜少被讨论的好处之一是,它能够在多智能体流水线中实现幻觉归因。

当智能体 A 产生了一个幻觉事实,智能体 B 将该事实作为输入接收时,B 的决策建立在一个被污染的基础上。没有每个智能体的决策日志,你只会发现流水线的最终输出是错误的。有了决策溯源,你可以追踪谱系:B 的决策事件将 A 的输出引用为输入数据源;A 的推理追踪显示了引入幻觉事实的步骤;你现在确切知道了错误起源于哪里以及它污染了哪些下游决策。

这在本质上不同于在确定性系统中发现 bug,在那里你可以进行二分查找。在智能体系统中,相同的提示词在不同运行中产生不同的输出;同一个智能体可能在某些任务上产生幻觉,而在其他任务上不产生。找到错误进入流水线位置的唯一可靠方法是拥有每个智能体决定了什么以及基于什么依据的完整因果记录。

不可忽视的监管背景

欧盟 AI 法案对高风险系统的执行时间线将于 2026 年 8 月达到完整合规要求。该法案要求高风险 AI 系统自动生成日志并进行上市后监控。违规罚款为 3500 万欧元或全球年营业额的 7%,以较高者为准。

"高风险"包括在就业、信贷、基本服务以及越来越多的领域做出重要决策的系统。如果你的智能体系统涉及其中任何一个,决策溯源就不是锦上添花 —— 而是具有真实财务风险的合规要求。

GDPR 增加了另一层压力:处理个人数据的智能体必须支持解释权和被遗忘权。解释自动化决策需要决策溯源。在保持审计追踪完整性的同时从智能体的长期记忆中删除用户数据,需要仔细的模式设计。这两个要求都指向同样的基础设施需求:关于你的智能体决定了什么以及为什么的持久、可查询、仅追加的记录。

从已经解决这个问题的团队中浮现出来的实践方法是:构建一个同时满足两种要求的单一追踪。为你提供事件调查能力的决策事件流,与满足监管审计请求的事件流是同一个。将它们维护为独立系统的运营成本是不合理的。

OpenTelemetry 集成点

OpenTelemetry 应该作为你发送决策事件的传输层 —— 但单独的 OTel span,如果没有语义丰富化,是不够的。目前的标准化工作为生成式 AI 智能体 span 增加了语义约定(截至 2025 年仍处于实验阶段),但这些约定专注于执行元数据而非决策推理。

实际的集成模式:为执行追踪(延迟、工具调用排序、错误传播)发出标准 OTel span,并将决策特定属性作为 span 事件附加 —— 有序推理步骤、数据新鲜度记录、授权元数据。span 图给你执行追踪;span 事件给你语义决策内容。两者都输入同一个后端,都可以通过你现有的可观测性堆栈进行查询。

原生实现了这一点的框架 —— LangChain 的 LangSmith、更广泛集成的 Langfuse、轻量级监控的 AgentOps —— 为你提供了起点。W3C PROV 数据模型,由 PROV-AGENT 框架(2025 年为 AI 智能体工作流发布)扩展,为溯源关系应该如何表示提供了一个概念性标准。这些尚未被普遍采用,但代表了生态系统发展的方向。

轻量级起点

完整的决策溯源是一项重大的埋点投资。对于刚起步的团队来说,最小可行版本是三件事:

在行动前记录推理。 在任何不可逆的工具调用之前,记录智能体的计划以及导致这个具体行动的推理。这是你能做出的单一最有价值的变更,因为它能让你在事后审查中回答"智能体为什么这样做?"。

明确标记可逆性。 在每条工具调用记录中添加一个布尔值:这能被撤销吗?对于标记为不可逆的工具调用,要求人工审批记录。在工具包装层强制执行这一点,以便各个智能体实现无法绕过它。

在会话开始时追踪所有权。 在每个智能体会话开始时,记录负责该会话决策的人类所有者。将此字段设为必填,而不是可选。当会话涉及委托给子智能体时,传播并记录所有权链。

这三项变更不需要图数据库或重大的基础设施投资。它们需要严格的模式设计和在工具层的强制执行。从这个基准出发,你可以随着每项内容的实际运营需求从实际事件调查中变得清晰,逐步添加推理追踪、数据谱系和谱系图。

将问责内建于智能体,而非绕过它

从做好这件事的团队中得到的更深层教训是,决策溯源无法事后补救。它必须从一开始就设计进智能体与工具的交互中。

当溯源是事后想到的,你最终会在事件发生后翻看日志,试图从从未被设计来回答问责问题的执行追踪中重建发生了什么。当它被设计进去时,审计追踪是正常智能体操作的副产品 —— 每次工具调用都发出一个决策事件,每次委托都携带一个链标识符,每次不可逆行动都需要一个填充的授权记录。

在你的系统中采取重要行动的智能体每次会话都在做出数百个决策。问题不在于你是否需要这些决策的问责基础设施 —— 你需要 —— 而在于你是在导致你希望早有它的事件之前还是之后构建它。


复合问题是,随着智能体变得更有能力、更加自主,重要决策的数量在增长,可追溯性要求也随之增长。现在解决溯源问题的团队将发现自己在监管曲线和调试复杂多智能体失败的运营现实上都走在了前面。推迟这件事的团队将在他们最糟糕的生产事件中被迫回过头来构建审计追踪。

References:Let's stay in touch and Follow me for more thoughts and updates