文档导航
文档 / Tool Compression

Tool Compression

OpenSquilla 的 agents 会使用工具。工具调用可能产生大量输出:命令日志、 JSON、网页、搜索结果、diffs、文件内容、表格以及 artifacts。 Tool compression 在不让这些输出占满整个模型上下文的前提下,仍保持其有用。

这是一项面向用户的上下文管理功能。它不会改变工具实际返回的内容; 只会改变向模型展示多少结果以便进行下一步操作。

为什么重要

Tool compression 在以下情形中提供帮助:

  • 命令打印大量日志;
  • 网页或搜索结果对于有用的 prompt 来说太长;
  • 文件读取返回的文本超出下一步所需;
  • 长 session 接近上下文预算;
  • 你希望保留原始结果,同时让模型只看到紧凑的预览。

如果没有 compression,一个大型工具结果就可能挤掉用户的目标、 近期对话以及下一步操作。

用户可能会看到的内容

在长 turn 或工具密集的 turn 中,模型可见的结果可能包含:

  • 紧凑的预览;
  • 表明结果已被缩短的说明;
  • 指向带外存储结果的 tool_result_handle
  • 在启用诊断时,估算的 token 节省诊断信息。

这是预期行为。它意味着 OpenSquilla 正在保护当前的上下文窗口。

产品层级模型

OpenSquilla 将两种视图分开:

视图用途
运行时视图OpenSquilla 可以保留、检查或导出的持久化结果。
Provider 视图发送回模型以进行下一步推理的有界文本。

agent 可以基于关键事实继续推进,同时大型原始材料仍可在配置允许时通过 文件、session 导出、诊断或工具结果 handles 获取。

Compression 模式

OpenSquilla 根据配置和工具输出形态支持几种 compression 风格。

模式最适用于取舍
truncate快速、确定的预览。可能省略中间有用的部分。
summarize受益于语义摘要的较慢/后台 workflows。增加一次模型调用,应当作为可选项启用。
结构化投影日志、diffs、JSON、表格以及已知的工具输出形态。取决于针对该输出类型的 reducer 覆盖情况。

大多数用户应保留默认行为,仅当 workflow 仍然过大时再使用诊断。

如何处理大型输出

请求聚焦的后续读取:

Look at the failing test names and the last 80 lines of the log.

优先使用 handles、路径与摘要:

Use the compacted result to identify likely causes, then read the exact file
sections you need.

除非确切文本就是交付物,否则不要让 agent 粘贴一个巨大结果的每一行:

Paste the entire 50,000-line log into chat.

检查与调试

当你需要了解上下文增长时,开启诊断:

opensquilla diagnostics on

当你需要在聊天界面之外检查持久化历史时,导出 session:

opensquilla sessions export <session-key>

在一次工具密集的大型运行之后,查看成本与用量:

opensquilla cost

最佳实践

  • 保持工具请求具体明确。
  • 请求能回答问题的最小文件范围、日志尾部或 JSON 字段。
  • 对于大型交付物,使用 artifacts,而不是把所有内容都塞入聊天。
  • 使用 session 导出进行审计和调试。
  • 将 tool compression 视为连续性功能,而不是存储重要文件的替代品。

文档索引 · 产品指南 · 改进此页面 · 反馈文档问题

在 GitHub 上编辑此页(英文原稿) OpenSquilla 文档 · 中文社区翻译