工具结果必须假设会超长:默认全量塞回对话是 Agent 不稳定的常见原因。 正确做法是「先短后长」——摘要进上下文,细节按指针再取。

问题从哪来

  • 网页抓取返回整页。
  • 数据库查询忘记 LIMIT。
  • 日志接口一次吐出数万行。
  • 模型在摘要后仍声称「已逐行分析」。

策略一:硬截断 + 元数据

返回头保留:总长度、是否截断、续读游标。正文只留前 N 字符或首尾各一段。Agent 需要中间部分时再调 read_range。

策略二:结构化摘要

对 JSON 数组:返回计数、字段列表、若干样例行。对日志:返回错误级别聚合与最近 K 条 ERROR。

策略三:提示词约束

若工具结果标记 truncated=true,你必须假设未看到全文。
需要细节时调用续读工具,禁止声称已完整阅读。
总结时区分「基于样例」与「基于全文」。

和幂等、重试的关系

续读应是只读且可重复;不要因为超时把「写入工具」连着重试。可与幂等设计一起做可靠性。

测试建议

  • 人为返回 1MB 文本,看 Agent 是否爆上下文或胡编。
  • 截断后问一个只在尾部出现的字段,应触发续读而非臆造。

落地检查

给最胖的三个工具加截断契约测试:超长输入必须带 truncated 与游标。提示词回归:截断后询问尾部独有字段,Agent 应续读而非臆造。观察失败日志里是否出现「基于完整日志」却 usage 显示不可能读完。与幂等设计一起评审写入类工具的重试策略。

文档里写明各工具的默认 N 与谁有权改大,避免每人私自调参。

相关阅读:工具调用幂等、上下文预算。

写完模板后,建议在真实场景试运行一次,把含糊句子改成你们行话,并删掉任何模型编造的数字、法规条款号或保证措辞。把终版存入共享文档并注明适用日期,避免同事继续使用过期口径。

写完模板后,建议在真实场景试运行一次,把含糊句子改成你们行话,并删掉任何模型编造的数字、法规条款号或保证措辞。把终版存入共享文档并注明适用日期,避免同事继续使用过期口径。

写完模板后,建议在真实场景试运行一次,把含糊句子改成你们行话,并删掉任何模型编造的数字、法规条款号或保证措辞。把终版存入共享文档并注明适用日期,避免同事继续使用过期口径。

写完模板后,建议在真实场景试运行一次,把含糊句子改成你们行话,并删掉任何模型编造的数字、法规条款号或保证措辞。把终版存入共享文档并注明适用日期,避免同事继续使用过期口径。

写完模板后,建议在真实场景试运行一次,把含糊句子改成你们行话,并删掉任何模型编造的数字、法规条款号或保证措辞。把终版存入共享文档并注明适用日期,避免同事继续使用过期口径。