已经是最新一篇文章了!
已经是最后一篇文章了!

agent runtime lab · 2026 · 技术研究笔记

14. 怎样记录一条可以重放的 Agent 轨迹

重放不是重新展示最终回答,而是按因果顺序恢复每一次决策和外部动作

统一模型、工具、权限和状态事件,用轨迹标识与顺序号重建一项任务的完整过程

研究版 · 9 个章节 · 约 7 分钟 · 更新于 2026-07-27

版本 A · 中文 B · English
SCROLL

Codex 的标准输出区分命令开始、命令完成、Agent 消息和用量完成;Kimi 的消息链区分工具请求、工具结果和最终内容。这些信息如果被拼成一段终端文本,仍然很难回答某个结果来自哪次模型决策。

模型、工具与日志之间的事件路径

三层标识缺一不可

标识范围
trace_id整项用户任务
turn_id一次模型决策
tool_call_id一次工具调用

并行事件还需要单调递增的 sequence。时间戳不能单独承担排序:不同线程和主机的时钟可能存在偏差,多个事件也可能具有相同时间精度。

统一事件而不是统一成文本

轨迹至少包含:

  • 上下文组装完成。
  • 模型请求开始与完成。
  • 工具调用提出、校验、授权、开始与完成。
  • 用户批准或拒绝。
  • 状态转移。
  • 用量与终止原因。

事件正文可以因模型和工具不同而变化,外层信封保持相同字段。这样查询系统才能跨产品统计模型轮次、工具失败和权限拒绝。

OpenTelemetry 的生成式 AI 语义约定使用 gen_ai.operation.name 等属性描述模型和 Agent 操作;其 Agent 示例把 invoke_agent 作为父 Span,把模型调用和工具执行作为子 Span。Span 是一次有开始、结束和属性的可观测操作。OpenTelemetry GenAI Observability

可重放分为两个等级

等级做法用途
只读重放使用保存的模型响应和工具结果调试界面、回归分析
执行重放重新调用模型或工具验证环境变化

执行重放具有风险。外部发送、写入和创建操作不能默认再次执行,应替换为模拟工具或要求新的授权。

轨迹还要记录版本

同一输入在模型版本、系统 Prompt、工具 Schema 或项目规则变化后可能产生不同结果。轨迹元数据至少保存:

  • 模型与客户端版本。
  • Prompt 模板版本。
  • 工具 Schema 版本。
  • 权限策略版本。
  • 项目状态引用。

否则“重放结果不同”无法定位是模型变化还是运行时变化。

敏感内容与可调试性之间的边界

完整轨迹可能包含文件正文、命令输出和认证头。采集时就要分类:

数据保存策略
API Key、Cookie不进入事件正文
文件路径按公开范围脱敏
工具参数保存结构,敏感值替换
大型结果保存引用与摘要
Prompt按来源和公开权限分别处理

先记录秘密再定期清理,会扩大泄漏窗口。脱敏应尽量发生在事件进入持久化系统之前。

一条轨迹能够重放,意味着我们可以从事件恢复因果关系,而不是仅仅保存了一份看起来完整的聊天记录。

事件信封需要稳定字段

每个事件至少包含版本、类型、轨迹标识、父事件标识、顺序号、发生时间、写入时间、主体和负载引用。发生时间描述动作何时出现,写入时间描述日志何时持久化,两者差异可以暴露队列延迟和乱序。

事件格式升级时,读取器应支持旧版本或执行明确迁移。直接修改历史事件会破坏审计;派生字段可以重新计算,但原始事件保持只追加。

重放还要控制非确定性

模型采样、当前时间、随机数、网络响应和文件状态都会改变结果。只读重放使用保存结果替代这些依赖;执行重放则记录新的环境快照,并与原轨迹形成分支关系。

重放结果不应覆盖原轨迹。它要生成新的 trace_id,引用来源轨迹和重放模式,使比较系统能够逐事件显示相同、缺失、新增和改变的内容。

决定重放与副作用重放不同

决定重放把保存的工具结果重新给模型,观察下一步;副作用重放重新执行工具。前者适合调试,后者需要隔离快照、模拟器或幂等。生产轨迹默认不能再次发送邮件、付款或删除。

Span 与领域事件互补

OpenTelemetry 的 Span 表示有开始和结束的操作,适合模型和工具耗时;领域事件表示授权拒绝、结果采纳等状态变化。两者用轨迹标识关联。OpenTelemetry 2026 年的 GenAI 示例记录模型、Token、工具和结果,也提醒完整内容是可选高敏感数据。OpenTelemetry:Inside the LLM Call

等级能恢复什么
L1请求顺序与耗时
L2模型输入输出和工具结果
L3用模拟器重建状态转移
L4在隔离快照中重建外部结果

报告说明达到哪一级及缺失变量。任一失败轨迹都应回答模型看见什么、工具是什么、参数来自哪里、谁授权、动作是否发生、结果如何回填以及为何停止。

版权声明: 如无特别声明,本文版权归 sshipanoo 所有,转载请注明本文链接。

(采用 CC BY-NC-SA 4.0 许可协议进行授权)

本文标题:14. 怎样记录一条可以重放的 Agent 轨迹

本文链接:https://www.sshipanoo.com/blog/ai/agent-runtime-lab/14-可重放的Agent轨迹/