工具返回值如何压缩并尽量保留信息?
未标记
询问 AI
考查重点:任务相关信息保留与按需回读。先裁掉无关字段与重复,保任务所需数值单位、条件、错误和来源;大结果外置并返回摘要与引用,需要时分页回读,以任务检查信息未丢
本题目录
参考答案
核心回答
我会先判断任务需要什么信息,再做结构化精简、原文外置和按需回读,最后才考虑用模型摘要。压缩后的内容应足够支持下一步决策,完整数据则保存在可访问、可追溯的位置。
具体做法是:
- 先减少不必要的返回:工具支持字段选择、筛选、分页、去重和聚合,避免把无关数据送进模型。
- 保留关键内容和结果说明:任务所需字段、数字与单位、条件和例外,以及工具状态、数据范围、总量和是否截断。
- 大结果外置:给模型摘要或预览,同时提供原始结果的标识、版本和读取方式,需要细节时再查询。
- 用任务验证压缩质量:检查结论、数值和引用是否一致,重要细节能否找回。自然语言摘要不能保证任意信息都不丢失。
例如工具返回五六千只股票,而用户要求全量数据,我会生成完整的表格文件或提供分页结果,再让模型说明范围和使用方法。只给一段摘要或前几十条,不能算满足了全量要求。
展开说明
1. 压缩目标是支持任务,不只是减少字符数
先看工具结果接下来用于什么:做统计、比较几个对象、定位异常,还是向用户交付全部记录。不同任务需要保留的信息不同。用于精确计算的数据应交给程序计算,不能先让模型总结,再从总结里重新算总额。
预算也要看整次模型请求,包括指令、历史、工具定义和其他上下文,并为输出预留空间。单条结果过大可以在工具返回后处理;很多结果累积过长,则还需要模型调用前的上下文管理。触发条件应按实际模型窗口、任务和结果分布设置,没有通用的固定字符数。
2. 优先做可检查的结构化精简
如果问题只涉及订单号、金额和状态,就让工具只返回这些字段。若任务是按地区汇总,可由查询或程序返回汇总结果,并保留统计口径、时间范围和原始记录入口。去重时也要明确判断依据,不能把内容相似但时间、对象或版本不同的记录随意合并。
返回结果可以包含:调用标识、状态、筛选条件、数据时间、总记录数、当前页或覆盖范围、任务所需数据,以及 truncated 和原文引用。并非每个工具都必须用同一套字段,但模型应能分清“完整结果”“部分结果”“合法空数据”和“调用失败”。错误码和失败原因不能被一句“暂无相关信息”替代。
当前 Deep Agents 文档展示了把大工具结果保存到后端、向模型返回位置和预览的做法。DeepSeek Harness 也有确定性裁剪工具结果、保留原始事件与调用关联的设计。首尾截断可以控制上下文大小,但中间内容仍可能是关键证据,因此必须清楚标注省略范围并支持回查。
3. 原文外置以后,要真的能取回来
原始数据可以保存在文件、对象存储或查询结果集中,摘要关联稳定的结果标识、数据版本和记录范围。读取工具支持按记录 ID、字段、页码或行区间获取,模型不必每次重新加载全量。
引用应指向此次调用的数据快照或明确的版本。若只能重新查询实时系统,应说明数据可能发生变化;否则第一次统计和第二次回读可能不再对应同一批数据。原始结果的保留时间要覆盖任务需要,读取时沿用用户和任务的访问范围,不能因换成文件链接就绕过权限。
“保存在上下文外”解决的是容量问题;模型需要细节时仍要主动读取。只有一个路径,却没有相应读取能力或文件已经被清理,就不能算可恢复。
4. 需要语义摘要时,保留条件和证据位置
对长网页、日志或检索材料,可以按当前子任务提取相关事实,再给出简短摘要。应保留来源、时间、数字单位、否定词、适用条件、重要例外,以及信息冲突或尚未确定的部分。关键结论关联到原文段落、记录或行区间,便于引用和核对。
摘要可以写成“发现了什么、依据在哪里、还有什么缺口”,不必复述全部过程。原文中的猜测不能被压成确定事实,工具返回的指令性文字也不应升级成系统指令。压缩本身不承担授权和提示注入防护的全部职责。
历史摘要还要保留工具调用与结果之间的必要关联,避免留下一个孤立结果,让后续模型误认它回答了另一个问题。对仍在使用的关键片段,可以直接保留原文;没有必要对所有内容连续多轮摘要,积累细节偏差。
5. 全量数据和较小窗口怎样处理?
如果用户要求全量股票列表,应先确认范围、日期和所需字段,再由工具或程序生成完整 CSV、表格或分页输出。模型负责解释结果和给出入口,可以展示少量样例,但应明确样例不是全部。若结果需直接在界面展开,则由分页或文件预览承担大量记录展示。
换成较小上下文窗口的模型时,重新计算输入预算,减少一次读取量、缩小当前子任务范围,必要时分批处理并通过稳定 ID 合并。跨批统计、去重和完整导出仍由程序处理,不能靠多段摘要拼接来承诺逐条不丢。
验证可用一组代表性工具结果:包含长表格、关键细节在中间、否定条件、空数据、部分失败和版本变化。分别比较压缩前后的任务答案、关键字段与统计值,检查引用回读是否成功,并观察压缩带来的额外延迟。压缩率只是辅助指标,不能代替任务正确性。
常见追问
能保证压缩后完全不丢信息吗?
任意自然语言摘要不能作这种保证。若要求逐条无损,就保留完整原始数据,通过结构化查询、分页或文件交付使用它;摘要仅作为索引和阅读入口。对于特定任务,可以通过字段约束和校验保证所需信息完整,但要明确保证的范围。
为什么不直接截取前几千个字符?
可以把截断作为有标记的预览,但不能默认它足以支持回答。结论、异常和限定条件可能在中间或末尾。应保留总量、截断说明和原文入口,再根据任务读取有关位置。
工具结果已保存到日志,为什么模型还会遗漏?
模型只依据当前提供的上下文作答。日志里有原文,并不等于模型已经读取;摘要还需要给出能定位的引用,工具也要支持按需回查。对于必须核对的结论,可以在生成最终答案前显式读取证据。
对应教程
- 研搜:中间件机制与 Skills 配置:阅读工具返回后的结果改写、上下文进入模型前的处理,以及历史摘要的触发和保留范围,理解这些动作可放在执行链路的什么位置。大结果外置和精确回读还需结合所用后端与工具实现。
参考资料
- 国内:JavaGuide:上下文工程:依据工具观察与摘要中对参数、错误、来源和回查信息的保留,说明正文中压缩结果仍需留下的判断依据。
- 国内:ranxi2001:记忆与上下文:借鉴中间结果外置、按需恢复与关键约束保留,说明正文中短摘要如何配合上下文外的原始材料。
- 国内:DeepSeek Harness:压缩与裁剪:依据固定版本的工具结果裁剪与事件保存机制,说明正文中精简表示如何关联底层记录,以及截断仍会省略内容。
- 国外:Anthropic:Effective context engineering:依据轻量引用按需读取和过度摘要的细节损失,说明正文中如何按任务评估摘要质量及回读成本。
- 国外:LangChain:Deep Agents context engineering:借鉴大结果外置、位置预览与历史摘要的分工,说明正文中如何分别控制单条大结果和长期历史增长。

