Skip to content

Resize 与策略扩展

适用版本:4.0.8+

resize 是 Session 的窗口治理入口:

  • 控制 context_window
  • 可选更新 memo

1. 默认行为:max_length + simple_cut

默认分析器逻辑:

  • session.max_length 是整数且窗口超限,返回策略名 simple_cut

默认执行器 simple_cut

  • 从最新消息向前保留,直到窗口总长度 <= max_length

配置示例:

python
agent.set_settings("session.max_length", 12000)

2. 自动与手动触发

  • 自动:auto_resize=True(默认)时,写入 chat_history 后自动触发
  • 手动:随时调用 session.resize()
python
agent.activate_session(session_id="resize_demo")
session = agent.activated_session

session.resize()  # 同步
# await session.async_resize()  # 异步

3. 自定义策略:保留最近 N 轮

python
def analysis_handler(full_context, context_window, memo, session_settings):
    if len(context_window) > 10:
        return "keep_last_ten"
    return None


def keep_last_ten(full_context, context_window, memo, session_settings):
    return None, list(context_window[-10:]), memo


session.register_analysis_handler(analysis_handler)
session.register_execution_handlers("keep_last_ten", keep_last_ten)

4. 关闭自动 resize 的场景

当你希望在特定批处理时机统一压缩:

python
from agently.core import Session

session = Session(auto_resize=False, settings=agent.settings)
# ... 批量写入消息
session.resize()

5. 常见误区

  • 只设置 session.max_length,但从未激活 session:不会生效
  • 策略返回名未注册:会有 warning,且不更新状态
  • 执行器返回结构不完整:务必返回 (new_full, new_window, new_memo) 三元组