Skip to content

[Feature]: LocalAgentRunner 增加 context-window 感知的上下文管理与按需压缩 #3

Description

@huanghuoguoguo

背景

这是 #2051 的后续议题,提出了 LocalAgentRunner 在 Agent loop 中缺少基本保护机制的问题。

即使模型上下文窗口已经很大,context-aware 的上下文管理仍然有价值:

  • 成本控制:上下文越长,token 成本越高
  • 延迟控制:长上下文会显著拉高单次调用耗时
  • 回答质量:上下文变长后,旧噪音会稀释模型对关键信息的注意力

当前不足

  1. context window 感知:现在是按回合数截断,而不是按 token budget 管理
  2. 每轮调用前的主动预算:tool loop 中每一轮也应该检查上下文
  3. 分层裁剪策略:应先裁低价值的大块内容
  4. 按需压缩:接近预算时才触发,而不是默认压缩
  5. 超窗后的自动自救:返回 context_length_exceeded 时应自动裁剪重试

建议方向

第一阶段:MVP

  • 为每次 LLM 调用建立统一的 token budget
  • tool loop 每一轮调用前预算
  • 按优先级裁剪:旧 tool 结果 → 冗长 RAG → 更早历史轮次
  • 超窗时自动触发更强裁剪后重试

第二阶段:按需压缩旧历史

  • 保留最近 3-5 个 user 回合原文
  • 把更老的历史合成一条 summary message

第三阶段:模型元数据显式化

  • 为模型配置增加 context_windowrecommended_max_output_tokens 元数据

原 issue: langbot-app/LangBot#2066

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions