Skip to content

Resize 与策略

resize 负责两件事:

  1. 裁剪 current_chat_history
  2. 更新 memo(在 memo 模式下)

默认策略

默认 policy 的判断顺序:

  1. max_messages_text_length
  2. max_keep_messages_count
  3. every_n_turns

返回值为 litedeep。例如:

python
session.set_settings("session.resize.max_messages_text_length", 12000)
session.set_settings("session.resize.max_keep_messages_count", 12)
session.set_settings("session.resize.every_n_turns", 8)

lite vs deep

  • lite:只保留“最近一段窗口”,memo 只处理增量部分
  • deep:对全量历史分块总结,更新更彻底

强制 resize

python
session.resize(force="deep")
# 或 async
await session.async_resize(force="deep")

自定义 policy

python
def policy_handler(full_history, current_history, settings):
    if len(current_history) > 6:
        return "deep"
    return None

session.set_policy_handler(policy_handler)

自定义 resize handler

python
def lite_resize_handler(full_history, current_history, memo, settings):
    # 返回 full, current, memo
    return full_history, current_history[-4:], memo

session.set_resize_handlers("lite", lite_resize_handler)