博客 · 指南 · 2026年10月28日

生产环境中 AI 智能体的可追溯性清单:记录什么、签名什么、给审阅者看什么

其他语言: English, Español, Português, 日本語, Deutsch, Français, 한국어, Italiano, हिन्दी · 全部中文指南

声明:100monkeys.ai 开发开源智能体编排器 AEGIS,并维护下文引用的 awesome-agent-traceability 列表。这份清单不绑定任何厂商:每一项都可以用开放工具完成,没有一项需要我们的产品。它由我们的一个 AI 智能体起草,并经公司审阅;这个简体中文版是英文原版指南的译文。

当 AI 智能体在真实系统上行动时,迟早会有人问它做了什么、为什么做。这份清单是在这个问题到来之前要做的工作:每次运行要记录什么,为了让日志可信要签名什么,以及要把什么摆在审阅者面前。每一项都对应 awesome-agent-traceability 列表中的一个开放标准或工具。

这个框架来自我们的论文 Red levers: traceable, deterministic agents in production(英文)。论文把一个智能体系统在生产中的安全定义为:人能看到它做出的每一个决定、做出决定的原因,并且能让它停下。日志服务于第一点,记录下来的理由服务于第二点,审阅步骤服务于第三点。

第一部分. 记录什么

第 1 步. 给每次运行一个标识

在开始时给每次运行分配一个 ID,并让它贯穿每一次模型调用、工具调用和副作用。没有它,日志就是一堆谁也无法归组的事件。使用 面向生成式 AI 的 OpenTelemetry 语义约定 中的 trace ID 和 span ID,它为模型调用、智能体步骤和工具调用定义了共同的名称,让不同框架的追踪数据读起来一致。智能体 span 的约定涵盖了智能体的创建和调用。

第 2 步. 用文字记录请求和意图

记录智能体被要求做什么、由谁要求、给出的理由是什么。然后在每一个有后果的行为发生时,记录智能体自己写下的一句话理由。行为发生那一刻写下的理由是证据;事后重构的理由只是故事。

第 3 步. 记录模型及其设置

每次模型调用都记录:提供方、模型名称和版本、会改变输出的参数(temperature、最大 token 数、提供的工具)以及 token 数量。无法对应到模型版本的行为,在提供方更新模型之后就无法复现。

第 4 步. 记录每次工具调用及其输入和输出

记录工具名称、参数、结果和时间。在存储之前而不是之后对个人数据做脱敏;Presidio 是一个开源选项。写入了某处的工具调用还应记录它改了什么:diff、记录 ID、消息 ID。

第 5 步. 记录每个策略决定

如果策略引擎允许或拒绝了一次调用,记录这个决定以及做出决定的规则。Open Policy Agent 正是为此保留决策日志。拒绝和允许同样值得保留:它表明限制起了作用。

第 6 步. 记录身份和权限范围

记录这次运行使用了哪个凭据或令牌,以及该凭据能触及什么,而不是记录它的密钥值。审阅者常问的是"它本来能不能做出更糟的事",答案就是它所持有的权限范围。

第 7 步. 让运行可以重放

保存足以重新运行这项工作的内容:输入、每一步的状态,以及事件的顺序。像 Temporal 这样的持久执行引擎会保留工作流事件历史,使工作流可以被确定性地重放。

第二部分. 签名什么

第 8 步. 让日志只追加并形成链

事后可以改写的记录什么也证明不了。把事件写入只追加的存储,并用哈希把每一条与前一条连起来,这样删除或修改任何一条都会让链条断开。IETF SCITT 工作组定义了登记在只追加透明服务中的签名声明,这正是现成可用的形式。

第 9 步. 为智能体的产出签名

当一次运行产出制品(构建产物、报告、发布的文件)时,附上一份关于它如何产生的签名声明。in-toto Attestation Framework 承载这类声明,SLSA 定义了构建来源(provenance)的等级。对于媒体,C2PA 规范 会附加签名的来源清单,包括由 AI 生成或编辑的内容。

第 10 步. 为批准签名

如果有人批准了某个行为,记录是谁批准的、什么时候、以及他们看到的确切内容。把批准绑定到内容上:如果批准之后行为发生了变化,这个批准就不再有效。

第三部分. 给审阅者看什么

第 11 步. 展示行为本身,而不是摘要

审阅者应当看到由运行自身输出渲染出来的邮件、diff 或将要执行的命令。由想要获得批准的同一个模型写出的摘要,不能作为审阅界面。

第 12 步. 在行为旁边展示理由

把智能体记录下来的意图放在它所做的改动旁边。"这一行为什么在这里"应当由这一行落地时写下的那句话来回答。

第 13 步. 展示它运行时的限制

在运行旁边展示策略和凭据范围。看到智能体只能写入一个分支的审阅者,和不得不假设它能触及一切的审阅者,对这次运行的理解是不同的。

第 14 步. 给审阅者一个停止手段

每个审阅界面都需要一种拒绝的方式,而且拒绝必须生效。Red levers 中引用的欧盟《人工智能法》第 14 条要求,监督高风险系统的人能够 "intervene in the operation of the high-risk AI system or interrupt the system"(干预高风险 AI 系统的运行或中断该系统)。在这里引用它,是为了说明控制手段的形态,而不是声称合规。

自查

从上周挑一次运行,只凭记录试着回答:谁提出的请求、智能体调用了什么、改了什么、在哪个策略之下、谁批准的,以及这份记录之后是否可能被改过。每个你答不上来的问题,都对应上面的某一步。

我们如何应用

我们为这份清单中的部分内容开发工具。AEGIS by 100monkeys.ai, in beta 是一个自托管的编排器,在隔离的、强制执行策略的运行时中运行智能体,并保存持久状态;How to give an orchestrator an approval step(英文)以它的审批关卡作为实例,这篇安装指南 带你在服务器上把它跑起来。Carbon Forge 把代码和文字放在同一份记录里,其中的 blame 会显示落地时写下的意图。

从 100monkeys.ai 安装 AEGIS