OpenClaw学习总结_I_核心架构_8:SessionPruning详解

I. 核心架构 - 8. Session Pruning

📍 课程位置

阶段 :I. 核心架构
课序 :第 8 课
前置知识 :I-7. Streaming
后续课程:I-9. Multi-Agent


🎯 本课核心问题

如果你问我:"Session 文件越来越大,磁盘空间不够怎么办?之前的对话记录能删掉一些吗?"

我会这样回答:这就是 **Session Pruning(会话修剪)**要做的事情------它像"整理磁盘"一样,删除不需要的 Session 文件,释放空间。


📚 为什么需要 Pruning?

问题 1:磁盘空间耗尽

  • 每个 Session 都保存完整的对话
  • 对话越多,文件越大
  • 总有一天磁盘会满

问题 2:性能下降

  • 列出 Session 时需要扫描所有文件
  • 文件太多 → 越来越慢

问题 3:隐私问题

  • 旧对话可能包含敏感信息
  • 不需要保留太久

🔧 Pruning 的策略

策略 1:按时间删除

复制代码
删除 X 天之前的 Session
例如:保留最近 30 天

策略 2:按大小删除

复制代码
当总大小超过 X MB 时
删除最早的 Session

策略 3:按活跃度删除

复制代码
超过 X 天不活跃的 Session
→ 删除

⏱️ 什么时候触发 Pruning?

自动触发

1. 定时检查

复制代码
每次 Gateway 启动时
→ 检查是否需要 Pruning
→ 执行删除

2. 空间检查

复制代码
当磁盘使用 > 80% 时
→ 自动触发 Pruning
→ 释放空间

手动触发

bash 复制代码
# 手动清理
openclaw sessions prune

# 查看空间使用
df -h ~/.openclaw/agents/

🔧 实战:配置 Pruning

基本配置

json5 复制代码
{
  "cron": {
    "enabled": true,
    
    // Session 保留策略
    "sessionRetention": "30d",  // 保留 30 天,false = 不自动删除
    
    // 空间管理
    "maxSessionStorage": "500mb",  // 最大存储 500MB
    
    // 日志清理
    "runLog": {
      "maxBytes": "2mb",    // 单个日志最大 2MB
      "keepLines": 2000     // 保留行数
    }
  }
}

更细粒度的配置

json5 复制代码
{
  "agents": {
    "defaults": {
      "session": {
        // 保留策略
        "retention": {
          "maxAgeDays": 30,      // 保留 30 天
          "maxMessages": 1000,   // 最多 1000 条消息
          "maxSize": "10mb"      // 单个 Session 最大 10MB
        },
        
        // 何时清理
        "prune": {
          "onStartup": true,     // 启动时清理
          "threshold": "80%"     // 超过 80% 时清理
        }
      }
    }
  }
}

📊 Pruning 的效果

效果示例

Pruning 前

  • Session 文件数:1,000 个
  • 总大小:2 GB
  • 列出 Session:需要 5 秒

Pruning 后

  • Session 文件数:100 个
  • 总大小:200 MB
  • 列出 Session:需要 0.5 秒

效果:节省 90% 空间!


⚠️ 常见陷阱

陷阱 表现 原因 解决
删除太多 需要的 Session 没了 保留时间太短 调整保留时间
没删除 空间仍然不够 Pruning 没启用 检查配置
误删重要 重要对话被删 没有排除规则 设置排除列表

📝 学习心得

我学这一课时的体会

我以前以为 Session 文件会一直保存,没想过要"清理"。

学完后才知道:

  • Pruning 是必要的维护工作
  • 要在"保留历史"和"节省空间"之间平衡
  • 设置合适的保留策略很重要

这让我想到:Compaction 是优化单个 Session,Pruning 是清理整个 Session 集合

与其他课程的关联

  • 前置课程:Session 管理 - Session 是什么
  • 前置课程:Compaction - 压缩单个 Session
  • 后续课程:Multi-Agent - 多 Agent 的 Session

✅ 你现在应该理解的

  • 解释为什么需要 Pruning
  • 说出三种 Pruning 策略
  • 知道什么时候触发 Pruning
  • 能配置 Pruning 参数

📚 快速参考表

概念 简单说
Session Pruning 清理不需要的 Session
按时间删除 删除 X 天前的
按大小删除 删除最大的
按活跃度删除 删除不活跃的

🔗 相关资源

官方文档

相关课程

  • 上一课:I-7. Streaming
  • 下一课:I-9. Multi-Agent

📊 本课总结

最关键的 3 点

  1. 为什么需要

    • 节省磁盘空间
    • 提升性能
    • 保护隐私
  2. 三种策略

    • 按时间、按大小、按活跃度
    • 可以组合使用
  3. 配置建议

    • 启用 Pruning
    • 设置合理的保留时间
    • 定期检查

现在你应该理解了如何管理 Session 文件。下一课会讲如何管理多个 Agent(Multi-Agent)。

相关推荐
小程故事多_802 小时前
OpenClaw工具引擎架构全解析,AI Agent的“双手”如何落地实操
人工智能·架构·aigc·ai编程·openclaw
工程师老罗2 小时前
Image(图像)的用法
java·前端·javascript
swipe3 小时前
把 JavaScript 原型讲透:从 `[[Prototype]]`、`prototype` 到 `constructor` 的完整心智模型
前端·javascript·面试
妄汐霜3 小时前
小白学习笔记(spring框架的aop和tx)
笔记·学习
问道飞鱼4 小时前
【前端知识】React 组件生命周期:从底层原理到实践场景
前端·react.js·前端框架·生命周期
CHU7290354 小时前
定制专属美丽时刻:美容预约商城小程序的贴心设计
前端·小程序
浩~~4 小时前
反射型XSS注入
前端·xss
AwesomeDevin5 小时前
AI时代,我们的任务不应沉溺于与 AI 聊天,🤔 从“对话式编程”迈向“数字软件工厂”
前端·后端·架构
harrain5 小时前
antvG2折线图和区间range标记同时绘制
前端·javascript·vue.js·antv·g2