v2 上下文预算

模型每次能接收的内容有限,但会话历史可以持续增长。v2 会先保留固定指令和当前请求,再在剩余空间中安排历史;需要压缩时,为较早的历史生成摘要。下文的 token 数是预算估算,不是模型供应商的计费统计。

所有裁剪与摘要只作用于模型请求投影,不删除 Session 的原始消息、工具结果或事件。system 与 developer 都是固定指令,不进入历史裁剪或摘要区。

预算边界

区域 默认约束 超限处理
固定指令 16,384 个估算 token 明确报错,不截断,也不调用模型压缩固定指令
当前回合 最新真实 user 消息及后续消息,工具调用与结果成组 工具结果可使用持久引用;仍放不下则报错
较早的近期历史 最多 4 个单元、8,192 token,且不超过扣除固定指令后可用预算的 1/3 压缩时将超出保护额度的历史移入可压缩前缀
可压缩历史 连续前缀,验证并复用已有摘要 分批滚动摘要,不反复压缩重叠原始前缀
请求预留 工具 schema、隐藏工具索引、续跑指引、协议和输出预算 先预留,发送前再检查完整请求

标准 Builder 与 Desktop 未配置模型窗口或输入预算时使用 32,768 token 默认窗口。应填写真实模型窗口;这些是估算值,不是供应商计费数据。直接使用 DefaultContextAssembler(budget=None) 的宿主负责总输入预算,固定指令上限仍生效。

配置

Agent 与全局区域预算取较小值。下面是 manifest 片段:

policies:
  budgets:
    input_tokens: 32768
    system_tokens: 16384
    protected_recent_tokens: 8192
agents:
  main:
    budgets:
      system_tokens: 12000
      protected_recent_tokens: 4096

protected_recent_tokens: 0 取消当前回合之前的额外历史保护,不允许删除当前用户请求。Context API 对应 ContextBudget.max_system_tokens 和 ContextBudget.protected_recent_tokens。

Persistent-summary 默认 max_summary_calls=4,摘要源预算 max_summary_source_tokens=24000,包含滚动摘要空间。工具调用与结果不跨批次拆分。单个单元无可用持久引用且超限时,在调用摘要模型前拒绝。max_summary_calls 是单次投影的调用上限:做完能覆盖的前缀就写入检查点,下一轮接着压,不再用 context.summary_work_limit 让整轮 Run 失败。前缀对不上时不套用旧摘要,也不删除检查点,直到一段新的部分摘要替换它。摘要哈希对齐规范历史,推理视图里的未完成工具对与 runtime 注入不参与覆盖校验。每次逻辑摘要先请求一次;返回格式不合格时最多再试一次。因此默认每次投影最多 8 次摘要生成请求,每次仍受超时约束。

已有摘要可与新增可压缩历史共同缩短。摘要没有缩小源内容、或摘要本身超出预留预算时,不保存派生摘要。一次投影只完成部分前缀时,已覆盖的检查点会先写入;剩余仍超窗则本轮失败、下轮续压。不反复扩大源区重试。压缩前把最新用户将注入的 runtime context 计入预留,避免压完再塞导致超窗。同一最新用户请求内的长工具轨迹不会自动成为旧历史;大型工具结果应提供持久引用。

指令与 Skill 来源

  • AGENT.md 最多 16,000 字符,超限报错;MEMORY.md 最多 4,096 字符,USER.md 最多 2,048 字符,超限使用明确标注的节选。SOUL / IDENTITY 也使用小型节选。
  • 可用 Skill 列表和描述不做数量或字符截断。 不再有 128 项、12,000 字符或单描述 500 字符上限;多行 YAML 描述完整解析。
  • 加载后的活跃 Skill 默认总预算为 6,000 token,按 XML 转义后的注入文本计算。单 Skill 超限在物化前拒绝;多个 Skill 超限时淘汰较早的活跃项。原始文件不截断,源 provider 的文件大小限制仍独立生效。
  • Server 的 Skill 描述使用长文本字段;旧截断描述可重新导入原文件修复。
  • 完整列表仍计入最终固定指令预算;总预算不足时明确报错,而不是悄悄省略 Skill。

并发边界与验证

估算器缓存最多 2,048 条摘要与计数,不保存完整提示词。内置可加性估算器通过累计值裁剪;自定义估算器保留完整请求估算语义。同一事件循环共享后台名额:token/指纹计算 2 个、Skill I/O 8 个、模型摘要 4 个。取消不会提前释放仍在运行的线程名额。文件 Skill 描述缓存最多 2,048 项,按文件变化失效。

这些是上下文准备的辅助额度,不替代 Scheduler、租户配额、模型连接池或存储限制。

python scripts/v2/benchmark_v2_context.py --messages 800 --sessions 8
python -m pytest tests/sagents/v2/test_context_efficiency.py tests/sagents/v2/test_skill_provider_matrix.py

基准只测合成历史的裁剪成本,不代表真实模型、数据库吞吐或生产容量。

实现入口:persistent_reducer.py · summarizer_model.py · provider.py。


Sage documentation for the current repository layout. Source available under the MIT license.

This site uses Just the Docs, a documentation theme for Jekyll.