📝 Hermes 有界记忆管理速记笔记

1. 核心痛点与选型

  • 问题:记忆无上限,Token 有上限。简单截断导致失忆(金鱼脑),不处理导致 Context 溢出报错。
  • 方案有界记忆管理(字符限制 + 压缩策略 + 快照机制)。
  • 选型建议
    • 短任务 → 滑动窗口
    • 长任务/自主执行 → 有界压缩

2. 持久记忆:字符限制与硬拒策略

  • 边界定义:使用字符数而非 Token 数(模型无关性,适配 200+ 模型)。
    • MEMORY.md:2200 字符(~800 tokens),存环境事实/项目约定。
    • USER.md:1375 字符(~500 tokens),存用户画像。
  • 溢出处理硬拒写入(Hard Reject),不静默截断。
    • 返回 current_entries,让 Agent 自主决策删旧添新。

3. 对话历史:三阶段递进压缩

当 Context 使用率达到 50% 时触发,按顺序执行:

  1. 工具输出预剪枝(零成本)
    • 将大块日志替换为摘要(如 [read_file] read config.py (12,000 chars))。
  2. 头尾保护(零成本)
    • 头部:System Prompt + 前 3 条非系统消息。
    • 尾部:保留最近约 20% 的 Token 预算。
  3. LLM 结构化摘要(核心成本)
    • 格式:包含当前任务、已完成操作、当前状态、待处理请求、关键上下文、剩余工作。
    • 迭代更新:基于上一次摘要(_previous_summary)进行增量更新,而非从零重建。
    • 防误读:添加 SUMMARY_PREFIX,明确告知模型“这是背景,不是新指令”。

4. 关键工程保障

  • 边界对齐:压缩时不能切断 tool_calltool_result 的配对。
    • 修复:若出现“孤儿调用”,插入占位符结果修复配对,防止 API 400 错误。
  • 快照机制(缓存优化)
    • 本轮 memory add 立即写盘,但不更新 System Prompt(保持前缀缓存有效)。
    • 生效时机:下一轮对话启动时刷新快照。
  • 三重脱敏(安全)
    1. 输入脱敏:拦截零宽字符、Prompt Injection 模式。
    2. 生成约束:提示词要求输出 [已脱敏]
    3. 输出复检:摘要生成后再次扫描。

5. 防抖与降级兜底

  • Anti-thrashing:连续 2 次压缩无效(节省 <10%)则自动暂停压缩。
  • 故障降级
    • LLM 摘要失败 → 使用静态兜底消息。
    • 摘要模型挂了 → 自动切回主模型。
    • 主模型也失败 → 进入 60 秒冷却期。

🔗 原文链接 Hermes有界记忆管理:字符限制+压缩策略,永不溢出

On this page