agent 在第三轮调用了错的工具时,你手上只有一坨扁平的 messages 数组,而要回答的问题是——那一轮模型到底看到了什么。这个工具把数组重建成循环结构:每一轮框出模型收到的输入、它做的决定、你喂回的结果,tool_call_id 的配对直接显示而不必自己找。每轮的输入切片是依标准发送规则从最终数组反推的重建值,不是线上抓包,工具会在每张切片上标明这一点。全程在浏览器本机解析。
agent 在第三轮调用了错的工具时,你手上只有一坨扁平的 messages 数组,而要回答的问题是——那一轮模型到底看到了什么。这个工具把数组重建成循环结构:每一轮框出模型收到的输入、它做的决定、你喂回的结果,tool_call_id 的配对直接显示而不必自己找。每轮的输入切片是依标准发送规则从最终数组反推的重建值,不是线上抓包,工具会在每张切片上标明这一点。全程在浏览器本机解析。
关于这个主题的常见疑问与实用解答。
每一则 assistant 消息开启一轮。它之前的所有消息是这一轮的输入,assistant 消息本身是决定,它之后到下一则 assistant 之前的工具结果是这一轮的结果。这对应循环真正的跑法:送出历史、模型决定、你执行并喂回、再来一圈。Anthropic 的对话把工具结果包在 user 消息里而不是独立的 tool 消息,所以切换 API 规则版本会改变哪些消息算结果。
那些平台是为持续监控而生:接上 SDK、注册账号,trace 送往它们的服务器。这个工具站在相反的一侧——完全不碰你的执行环境。当有人在 bug report 里贴了一坨数组、当你从 production log 捞出一段对话、当你看的是别人服务的 trace,那里没有东西可以埋点。粘贴进来就看得到循环结构,而且什么都不离开你的浏览器。
不是,而且工具在每张切片上都这样标示。它是依「每次请求带上到那个时点为止的历史」这条标准规则从最终数组重建的。框架常常打破这条规则——裁剪旧消息、注入系统前缀、改写工具描述、摘要历史。所以请把切片当成输入的形状,不是逐位元的复本。如果你的框架改写得很凶,重建结果呈现的是一个朴素 client 会送出的东西——那仍然是判断「模型的视野从哪里开始不再变化」的正确基准。
安全。解析、轮次切分与配对全部在你的浏览器内执行——不上传、不储存、不进 analytics。agent trace 里常常带着客户数据、内部工具参数,system prompt 里甚至有 API key,这正是这个工具完全没有服务器端的原因。粘贴时打开浏览器的 network 分页就能自己验证。