全部文章
ai agentsgovernance

每次 AI 智能体运行该记录什么

一只放大镜和一个计算器搁在打印的文件上

一个在演示里跑通的 AI 智能体只证明了一件事:它能成功一次。生产环境提出的问题更难:当它出错时,你能不能说清发生了什么、以及为什么?

如果答案是不能,你运营的就不是一个系统,而是一份期待。填上这道缺口的,是一份每次运行都留下的记录,且要能被你团队之外的人在几个月后读懂。

一句话要点

  • 你的监控面板不是审计记录。读者不同、时间尺度不同、规则也不同。
  • 标准的 AI 追踪默认不保存提示词和回复,需要你主动开启。
  • 审计记录绝不能抽样。你将来必须解释的那次运行,往往就在被丢弃的部分里。
  • 记录每一次工具调用及其结果、走过的分支、成本,以及谁批准的。
  • 对于审批,要记录当事人实际看到了什么,而不只是「点了同意」。

面板不是审计记录

两者看起来相似,实则不是同一种东西。面板由它的作者在几分钟后阅读,事故还在脑子里。审计记录则由一个冷漠甚至敌意的第三方在几个月后阅读,而且他无法向你追问。

监控面板审计记录
谁来读你,几分钟后第三方,几个月后
抽样正常,常见 10% 到 20%绝不
提示词与回复内容通常关闭开启,直到保留期结束
写入失败时记一笔然后继续该操作本身就应当失败
排序依据时间戳由你分配的序号
之后能否更改能,这是设计如此不能,只追加
失效后果排查变慢你无法回答那个问题

一次 Trinyx 工作流运行的可观测视图:执行过的图上每个节点都有绿色对勾,旁边是运行检查面板,列出该轮次、起止时间戳,以及每个节点的状态、耗时和成本。

可观测视图里的一次运行:每一步、状态、耗时、成本。确实有用,但它仍是面板,而不是本文后面所说的那种可长期留存的记录。

「我们有追踪」不等于「我们有记录」

这是最让团队措手不及的一点。

业内追踪 AI 调用的标准约定,把提示词、回复、工具参数和工具结果都定为可选项,并且规范本身的立场是:工具默认不应采集它们。所以一套刚装好的追踪只给你模型名、token 计数、延迟和一个结束原因,全都不是能重建一个决定的材料。

打开内容采集也比想象中麻烦:至少在一个流行实现里,还必须启用另一个几乎没有文档的设置。请去核实你的系统究竟存了什么,而不是假设,并且用完整读一条真实记录的方式去核实。

同一问题的另一半,是几乎所有可观测性指南都会给的建议:量大时大幅抽样,并在数据进入后端前清洗内容。这两条对监控是合理的,对审计是致命的。当你必须为之辩护的那个决定落在另外 90% 里时,10% 的抽样毫无价值。

每次运行要记录什么

每次运行一条记录,这是别人最先读到的抬头。

该记录什么为什么重要
在派发时生成的运行标识其余一切都挂在它上面,生成太晚就会丢失
是谁或什么发起的,以及怎么发起的人、定时、Webhook:这决定了谁负责
开始时间和结束时间,两个时间戳时长无法与外部时间线对齐
计费的是哪个模型,实际跑的是哪个两者可能不同,只记一个会让其余都失真
当时生效的价格价目变动之后,成本仍然说得通
输入、输出、缓存的 token,以及花费你的账单,也是你的早期预警
状态,以及为什么停止你将被要求辩护的那个结论
当时生效的配置与策略版本那一刻是否要求审批
当时运行的构建版本这次运行是否早于修复
是否需要审批,及其引用空值必须表示「不需要」,而不是「未知」

其中两点必须坚持。两个时间戳而不是一段时长,因为只有时间戳才能和别人的记录对上。以及当时的价格,因为价格和模型名会在你脚下变化,无法复现的成本就是无法辩护的成本。

有一样东西不该存:每次运行都存完整的系统提示词。按每天一万次运行算,一份 6KB 的提示词一年就是约 20GB 的纯重复。每个版本只存一次,然后引用它。

每一步要记录什么

每一次模型轮次、工具调用、判断或审批各一条记录。它们的数量大约是运行记录的二十五倍,并且承载了几乎全部内容。

该记录什么为什么重要
真实顺序,由写入方分配时间戳会打平、会乱序,计数器不会
是否有步骤并行执行把并行批次读成因果链,比留一个空缺更糟
属于哪种步骤模型轮次、工具调用、判断、审批
工具名与调用标识在重试与乱序中把请求与结果对上
参数与结果真实内容,按你为内容设定的保留期
两者的指纹内容删除很久之后仍能证明发送过什么
内容的体量让后来的读者知道发生过截断,以及截掉了多少
走了哪条分支让这次运行在纸面上可复盘
某一步为什么没有执行「被跳过」和「从未到达」是两个不同的事实
错误码,与错误消息分开码可查询;消息常常把出错的输入原样带出来
是否执行了脱敏否则一条看起来干净的记录什么也证明不了

指纹那一行是这张表里低调的主角。为进出内容各留一个哈希,每一步只多花几个字节,却能让你在几个月后删除内容的同时,把证据保留数年。当有人拿出一份文件、声称你的智能体看过它时,指纹就能定案。

一点必要的提醒:对可枚举的内容(比如邮编或出生日期)做哈希,可以靠穷举反推。这类字段必须用单独保管的密钥加盐。

审批记录值得单独一行

如果有人做了审批,就把它当作一条独立记录,而不是运行上的一个标记。

记下谁批准、何时、通过什么渠道、超时前有多长时间,以及最重要的:审批人实际看到了什么。把那段文本在运行暂停的那一刻冻结,并与记录一起保存。否则「有人批准了」什么也说明不了,因为没人知道他当时在批准什么。

同一处还有三个小陷阱。空的审批字段必须表示「当时生效的策略不要求审批」,这就要求策略版本可被追回。像「system」或「api」这样的默认身份,绝不能与任何真实人员重名。如果你的记录里写了审批人角色,就要确保确实有东西校验过这个角色,否则就在记录里明说没有校验。

两个会悄悄毁掉记录的错误

用「尽力而为」的方式写入。 如果审计写入是发出去就不管、失败只记为「非关键」,那么你的记录会在系统承压时变稀疏,也就是恰好在你将被要求解释的那些事故期间。覆盖率于是与系统健康度相关,这是最糟糕的性质。把记录写在它所记录的那件事的同一个事务里。

只存时长而不存时间线。 听上去无关紧要,直到有人要求你把记录和客户邮件的时间戳对齐,而你做不到。

常见问题

我的模型服务商不是已经记录这些了吗?

他们记录的是他们那一侧的调用,按他们的保留期、他们的格式,而且你无法把它当作证据来查询。你能辩护的记录,是你自己保存的那份。

什么都记录不会很贵吗?

骨架部分(标识、时间、状态、计数、指纹、分支)非常小,按每天一万次运行算,一年也就几十 GB。昂贵的是内容,这正是它应当走更短保留期的原因。这种切分正是 该保留多久 的主题。

日志里的个人数据怎么办?

假定其中有个人数据,尤其是错误消息,它们经常把出错的输入原样带出来。标识保持假名化,内容走短保留期,长期保留的部分只留指纹和错误码。

我怎么知道记录是否够用?

取上个月的一次运行,只用已存储的记录把它从头到尾还原一遍。如果你需要重跑任何东西,或者需要问同事,那就还不够。

下一步

拿一次真实运行,尝试只凭记录把它解释清楚。凡是你不得不猜的地方,就是下一个要补的字段。然后决定每一部分需要存活多久:AI 智能体审计记录该保留多久

把你的利基数据变成一个能用的自动化

在聊天里描述这份任务,Trinyx 就在你眼前构建出工作流。

免费开始