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

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

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

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

回填不是简单追加字符串

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

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

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

四种回填方式

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

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

截断必须显式

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

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

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

并行结果怎样归并

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

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

我会怎样测量回填策略

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

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

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

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

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

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

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