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

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

06. 工具结果应该怎样回填给模型

模型不会自动知道工具执行结果,运行时必须把证据带回下一轮

比较完整回填、截断、摘要和外部引用,分析工具结果怎样影响下一轮推理与上下文长度

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

版本 A · 中文 B · English
SCROLL

模型生成 pwd 时,并不知道命令会返回哪个路径。执行发生在模型外部,模型内部状态不会随本机进程自动更新。

因此工具调用后还需要一次模型请求:

原任务 → 模型提出调用 → 运行时执行 → 回填结果 → 模型继续判断

省略调用记录,模型可能不知道结果对应哪个动作;省略工具结果,模型只能猜测;直接把原始结果展示给用户,则无法让模型组合多项证据或生成约定格式。

回填不是简单追加字符串

结果至少要表达以下字段:

字段解决的问题
调用标识对应哪次请求
状态完成、失败、拒绝还是未知
正文模型实际需要的证据
错误为什么没有结果
截断标记正文是否完整
外部引用完整数据保存在哪里

日志可以保留完整字段,发送给模型时再按任务压缩。两者不能共用一段已经删减的字符串,否则调试系统也会失去原始证据。

四种回填方式

方式适用内容代价
完整回填小型结构化结果占用上下文
头尾截断长日志、错误栈中间证据可能丢失
结构化摘要大型文档、搜索结果摘要可能遗漏
外部引用数据集、构建产物模型需要再次按需读取

100 KB 日志不应默认全部进入上下文。更稳妥的做法是保存原文,回填总行数、错误行、头尾片段和内容引用。模型若需要某一段,再调用带范围参数的读取工具。

截断必须显式

若运行时悄悄截断结果,模型会把不完整数据当作完整数据。结果中应同时提供:

  • 原始字节数。
  • 已返回字节数。
  • 截断位置。
  • 是否保留头部或尾部。
  • 获取其余内容的方法。

“没有找到错误”与“错误可能位于未返回部分”是两种结论。

并行结果怎样归并

Kimi 第二次请求中,两条 role=tool 消息分别引用 Bash_0Bash_1。运行时可以按调用标识匹配,而不依赖完成时间。

并行工具回填还要保留部分失败。若一个调用成功、一个超时,不能把整批结果表示为单一失败。模型需要看到每个调用的独立状态,才能决定重试哪一个。

我会怎样测量回填策略

让同一工具分别返回 1 KB、100 KB 和 1 MB 文本,对四种策略记录:

指标说明
下一轮输入 Token上下文增加多少
事实回答正确率是否找到指定证据
额外工具次数是否需要再次读取
首 Token 延迟大输入是否拖慢响应
可追踪性是否能回到完整原文

结果回填的目标不是尽可能少,也不是尽可能完整,而是在证据完整性、上下文成本和可恢复性之间建立可检查的边界。

摘要必须能够指向原始证据

结构化摘要中的每条事实应带来源范围,例如日志行号、文件片段标识或结果对象路径。模型回答若引用摘要中的错误信息,调试者才能判断错误来自工具、摘要器还是后续推理。

摘要器也应受到输出契约约束,至少返回事实、未确定项、遗漏范围和原始结果引用。只生成一段流畅文字,会把缺失信息隐藏在表达中。

回填策略需要按工具类型配置

目录列表适合结构化数组,命令日志适合头尾截断和错误行提取,搜索结果适合带来源的分项摘要,二进制产物只应返回元数据与引用。统一使用一个字符上限,会让不同工具失去各自最重要的证据。

回归测试还要加入编码错误、空输出、重复字段和超大单行文本。系统只有在这些边界条件下仍能明确表示完整性,才算拥有稳定的结果协议。

回填预算应由下一步决策决定

工具产生多少内容,与模型下一步需要多少内容不是同一个问题。目录列表需要名称和类型;编译失败需要首个根因及其附近上下文;搜索结果需要出处、相关片段和可重新获取的引用。

层次内容默认进入上下文
控制面状态、错误类型、截断标记、耗时
决策面下一步动作所需的关键字段
证据面完整正文、日志、二进制对象按需引用

控制面描述运行状态,决策面支持动作选择,证据面保存可复查材料。MCP 工具规范允许结果同时提供文本、结构化内容和资源引用,并用 outputSchema 校验结构化结果。MCP Tools specification

截断位置会改变结论

保留前 10 KB、后 10 KB 或按相关性选取 10 KB,可能得到不同结论。实验需要三类夹具:关键信息分别位于开头、中间和结尾。每次截断保存原始字节数、保留范围、编码、完整结果引用和原因;模型可见文本也要明确显示缺口。

摘要后再用原文构造的问题反向检查,例如错误码、失败文件、对象数量和是否存在成功回执。数字、路径和对象标识必须原样保留,不能用近似表达。

计量单位应是完整循环

1 KB、100 KB 和 1 MB 三档结果分别采用全文、截断、摘要和外部引用。除了最终回答,还记录下一轮是否重复调用、是否请求补充片段、累计输入 Token、首 Token 延迟和实际引用的证据范围。

摘要组若因为缺少退出码而重复调用三次,单轮输入虽然更少,任务总成本仍可能高于全文组。回填策略只有放进完整 Agent 循环里才能比较。

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

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

本文标题:06. 工具结果应该怎样回填给模型

本文链接:https://www.sshipanoo.com/blog/ai/agent-runtime-lab/06-工具结果怎样回填/