Skip to main content
当上下文窗口被填满时,AgentScope 通过 ContextConfig 控制的两套自动机制保持其形态:上下文压缩(汇总较早消息)与工具结果截断(截断过大的工具输出)。两者均透明运行,智能体不会因此中断。

配置压缩

ContextConfig 在创建智能体时传入:
可用字段:

自动压缩

压缩在每次推理步骤前自动执行,流程如下:
1

计算 token 数

智能体累计系统提示、摘要、上下文与工具 schema 的全部 token。
2

判断阈值

若总数超过 trigger_ratio × context_size,触发压缩;否则跳过此步,正常发起模型调用。
3

切分消息

较早消息标记为待压缩;落在 reserve_ratio × context_size 内的最近消息保留。工具调用 / 结果对在切分时保持成对,不会被拆开。
4

生成摘要

模型基于较早消息生成一份结构化摘要,包含五个字段:task_overviewcurrent_stateimportant_discoveriesnext_stepscontext_to_preserve
5

更新状态

摘要替换被压缩的消息,保留下来的最近消息成为新的上下文。智能体随后继续完成本次推理步骤。
trigger_ratio(最高 0.9)与完整上下文之间的剩余 10% 是给压缩调用本身预留的:模型需要空间生成摘要。

手动压缩

也可以调用智能体的 compress_context() 方法手动触发压缩。不传参数时使用智能体自身的 context_config;可通过传入一份临时的 ContextConfig 进行覆盖,或传入 instructions(一个 HintBlock)来引导摘要行为:
当 token 用量低于 trigger_ratio × context_size 时该方法为空操作,因此可以安全地在轮次之间或自定义检查点处随时调用。

截断工具结果

每次工具调用之后,智能体会比较结果的 token 数与 tool_result_limit。超出限额时,结果被切分为保留部分(留在上下文中)与卸载部分(如挂载了卸载器,则交由其持久化,见卸载上下文)。 保留部分会追加一段截断标记,让智能体知道输出已被截断:
挂载了卸载器时,标记还会指向已持久化的完整输出:
tool_result_limit 设置过低会让智能体错过关键的工具输出;过高则可能让一次结果填满整个上下文。