AI Agent 工程课程

从入口到业务证据的完整 Trace

一句话收获:可观测性服务定位和验收,不是把所有日志堆给用户。

这个场景在解决什么问题

这个场景讲的是"Trace"(追踪/轨迹)——把一次任务从头到尾的关键环节串成一条可回溯的证据链。目标(goal)是把请求、模型候选、Harness 决定、工具回执、业务验收这五样串起来。观察点(observation)是:沿一个任务,看不同角色(开发者、运维、审计、接手的人)各自需要什么样的可观测信息。

为什么值得单独学?因为很多人以为"可观测性 = 把日志全吐给用户"。这个场景告诉你:可观测性是为了"定位问题"和"做验收",不是为了把日志堆给人看;而且模型内部的思维链是不该展示的,只记录可观察的输入、候选和决定。

先理清这条判断链(文字版)

这个场景的四步讲的是从任务起点到业务验收的一条证据链,本质是"请求与上下文 → 候选与决定 → 工具与状态 → 业务与责任验收":

  1. 先记录请求与上下文——任务目标、输入来源、装载版本,回答"任务从哪开始"。
  2. 再记录模型候选与策略决定——候选动作 + Harness 通过/拒绝的原因,区分"提议"和"执行"。
  3. 接着记录工具与状态——工具回执绑定外部对象,任务和业务状态同时更新。
  4. 最后做业务与责任验收——最终结果、权限轨迹、接管信息进入同一证据链。

这条链的核心逻辑是:每个环节都留"可观察的证据",不同角色从同一条事实链上各取所需,而不是各看各的、或把日志堆给人。

逐层详解

第 1 步:请求与上下文

原文:记录任务目标、输入来源和装载版本。

白话:Trace 的第一个环节,是记录"任务从哪开始"——任务目标是什么、输入是从哪来的、装载的上下文是什么版本。这是整条证据链的起点。

类比:像查案先记录"案发时间和报案人"——不记清楚起点,后面全链条都找不到根。

举例:一个"给订单退款"的任务,Trace 起点记录:目标 = "订单 123 退款"、输入来源 = "用户工单 #456"、装载版本 = "AGENTS.md v3 + Spec v2"。

为什么重要:入口证据说明任务从何开始。也就是说,入口证据回答"这件事是从哪、为什么开始的",是后续一切判断的锚点。

怎么验证(证据点)

  • 任务目标:目标清晰记录。
  • 输入摘要:输入被摘要保留。
  • 版本信息:装载的版本被记录。

别踩的坑(边界):请求存在不证明模型已正确理解。意思是,记录到"有请求",不代表模型真的正确理解了这个请求——两者是两回事。

落地检查:保留可回查输入。也就是说,落地时要把输入保留成"可回查"的形式,方便事后追溯。

第 2 步:模型候选与策略决定

原文:记录候选动作和 Harness 通过或拒绝的原因。

白话:这一步记录两样:模型提出的"候选动作"(建议),以及 Harness 对这个候选"通过还是拒绝"以及为什么。这样"提议"和"执行决定"就能清楚区分开。

类比:像会议纪要——既记"某人提议了什么",也记"最终批不批、为什么批/不批",而不是只记结果。

举例:Trace 记录:模型候选 = "调用 refund 工具",Harness 决定 = "拒绝",原因 = "订单状态为已取消,不满足退款条件"。这个"拒绝原因"就是关键证据。

为什么重要:候选与执行必须可区分。也就是说,必须能分清"这是模型提的建议"和"这是最终执行的决定",否则审计时一片糊涂。

怎么验证(证据点)

  • 候选动作:候选动作被记录。
  • 策略结果:Harness 的通过/拒绝结果被记录。
  • 拒绝原因:拒绝的原因被记录。

别踩的坑(边界):不展示模型内部思维链。意思是,Trace 里不记录模型的内部思维链(chain-of-thought),因为那是不可验证、也不该暴露的内部过程。

落地检查:只记录可观察输入、候选和决定。也就是说,落地时只记"可观察的"三样:输入、候选、决定,不碰内部思维链。

第 3 步:工具与状态

原文:工具回执绑定外部对象,任务与业务状态同时更新。

白话:工具真正执行后,要把"工具回执"和"外部对象"绑定起来记录,同时更新任务状态和业务状态。这样真实副作用就有外部证据可查。

类比:像快递签收——不只记"寄出去了",还要记"单号对应哪个包裹、签收状态是什么",把动作和对象绑死。

举例:refund 工具执行后,Trace 记录:工具回执 = "退款成功"、绑定外部对象 = "订单 123"、任务状态更新为"已完成"、业务状态更新为"已退款"。

为什么重要:真实副作用需要外部证据。也就是说,真实世界里的副作用(退款、发货等)必须有外部系统的证据来证明,不能只靠"工具说成功了"。

怎么验证(证据点)

  • 工具回执:工具执行的回执被记录。
  • 对象状态:外部对象的状态被记录。
  • 任务状态:任务状态同步更新。

别踩的坑(边界):工具返回成功不证明业务验收通过。意思是,工具层面返回"成功",不代表业务验收就通过了——业务验收还要再读权威状态确认。

落地检查:验收继续读取权威状态。也就是说,落地时做完工具这一步,验收还要继续去读权威状态,不能停在"工具成功"。

第 4 步:业务与责任验收

原文:最终结果、权限轨迹和接管信息进入同一证据链。

白话:最后,把三样东西汇总进同一条证据链:最终结果、权限轨迹(谁在什么权限下做了什么)、接管信息(交给谁、怎么交)。这样不同角色能从同一条链上各取所需。

类比:像一份完整的项目结案卷宗——结果、审批痕迹、交接材料都装在一个档案袋里,谁来了都能按需翻看。

举例:退款任务收尾时,证据链里包含:最终结果 = "退款成功到账"、权限轨迹 = "由账号 A 在退款权限下发起"、接管信息 = "无需接管,已正常完成"(若失败则附接管包)。

为什么重要:不同角色从同一事实获得所需视图。也就是说,开发、运维、审计、接手的人,都从同一条事实链上拿到自己需要的那个视图,而不是各看各的。

怎么验证(证据点)

  • 外部结果:最终外部结果被记录。
  • 权限轨迹:权限轨迹完整。
  • 责任明确:责任归属明确。

别踩的坑(边界):完整 Trace 不等于所有业务判断都能自动化。意思是,Trace 再完整,也不代表所有业务判断都能交给机器自动化——有些判断仍要人来拍板。

落地检查:必要判断仍由有权主体完成。也就是说,落地时那些"必要判断"仍要由有权限的主体(人/有权系统)来完成,不能图省事全自动化。

落地可行性小结

本场景涉及的技术栈和落地要点:Trace(追踪/轨迹)、可观测性(observability)、模型候选、Harness 决定、工具回执、权限轨迹、接管信息、思维链(不展示)

真实落地时要注意:Trace 要有明确的环节划分(请求/候选/决定/工具/验收),每个环节留"可观察"的证据;候选与执行要分开记录,Harness 的拒绝原因尤其要留;工具回执必须绑定外部对象,不能是孤立的"成功"字符串;最终把结果、权限轨迹、接管信息汇总成一条证据链。常见坑是:把日志无脑堆给用户;以及把模型内部思维链也记录进 Trace,混入不可验证的信息。

回顾

  • 可观测性服务定位和验收,不是把日志堆给用户。
  • Trace 从入口(目标/输入/版本)开始,逐环节留证据。
  • 候选与执行必须可区分,Harness 的拒绝原因要记录。
  • 工具回执要绑定外部对象,工具成功不等于业务验收通过。
  • 不同角色从同一事实链各取所需,必要判断仍由有权主体完成。