The-BlueCrow

agent-memory-opt

"Audit and optimize an agent's memory footprint end to end."

The-BlueCrow 1 Updated 2h ago
GitHub

Install

npx skillscat add the-bluecrow/agent-skills-retro-wiki-memory/agent-memory-opt

Install via the SkillsCat registry.

SKILL.md

Agent 记忆优化(四步法)

瓶颈不在“存不下”,而在常驻窗口写满即截断、且没有淘汰机制——这是多人交叉实测(四台真实运行的 agent 逐条核数、互相挑错)收敛出的结论。本 skill 是自洽的执行流程:所需判断标准、阈值依据、测量口径全部在本文件内,动手盘点/改造记忆时按步骤走即可,不依赖任何外部文件。

When to Use

  • 盘点某个 agent / profile 的记忆占用,判断会不会截断
  • 设计或审查告警、淘汰、分层、元数据这套机制
  • 把记忆相关数字写进方案、汇报、总结前核口径

不要用:单纯清历史聊天记录、清日志缓存(那是运维清理,不是记忆优化)。

Prerequisites

  • 能读写目标 agent 的记忆存储(常驻记忆区 + 记忆文件所在目录,具体路径按目标 agent 的实际布局确定)
  • terminal + write_file;无需联网、无需额外安装
  • 只读盘点可直接做;改动任何记忆内容前先列清单报批

Procedure

第 0 步:先分清两个“容量”(判错这步后面全白做)

记忆有两个完全不同的指标:

  1. 库存(记忆文件总大小,KB/MB 级)——通常远未到瓶颈,du -sh 一扫就知道
  2. 常驻窗口(每次会话开头整段注入的 MEMORY/profile 区,字符数+上限)——真正吃紧的是它,91–99% 常见

完成标准:两者分别有数字,且明确说了“瓶颈在哪个”。库存不是瓶颈时就别提议扩容。

第 1 步:实测各层占用,带齐三要素

每层记忆都要报:数值 + 单位(bytes 还是 chars)+ 测量时刻 + 获取命令。

  • 文件大小用 du -sh <dir>、wc -c <file>(bytes)
  • 常驻窗口用字符数(chars):python3 -c "t=open('<file>').read(); print(len(t))"
  • 完成标准:每层数字可被第三方用同一条命令复算

第 2 步:告警按“绝对余量”算,且必须响在截断之前

  • 弃用统一百分比:小池子上百分比毫无操作窗口(实测 2500 字符记忆 99% 时只剩 25 字符,一次汇报就爆)
  • 用剩余字符下限触发(如 <300 chars),阈值随该实例的写入峰值动态校准(写得猛的实例 300 字符两轮就穿)
  • 完成标准:说清“剩余多少触发”,而不是“用了百分之多少触发”

第 3 步:告警必须接淘汰评估(告警是铃,淘汰是活)

  • 只上告警不上淘汰 = 提前知道要满,但满的结局一点没变
  • 铃响 → 触发“这轮该扔谁”的评估 → 按元数据字段(第 4 步)判定 → 覆写/压缩/降级
  • 顺序固定:先告警钩子,后标记字段(反了会没有触发时机)
  • 完成标准:画得出铃响之后的处理链路,链路末端是具体动作不是“人工看看”

第 4 步:入库四字段,作为一切策略的单一前置项

每条记忆写入时带:来源(谁写的/哪次会话引用的)、时间戳、类型(永久事实 / 可覆写任务 / 可验证后固化)、引用计数(被检索或注入命中几次)。

分层(空间策略)、生命周期(时间策略)、告警(触发策略)三者共用这一套字段,不要各写一套元数据。

完成标准:四字段在写入路径上真实落下来(能打印出一条样例记录看得到四个字段)。

第 5 步:冷热分层转移

  • 热:当前任务上下文 → 留对话窗口
  • 温:用户偏好、常用流程 → 轻量记忆,按需注入
  • 冷:历史难题、长尾知识 → 落盘文件系统,关键词检索按需调取
  • 全塞永久记忆的后果是条目稀释、检索信噪比下降
  • 完成标准:每类记忆能指认它归哪一层,且“怎么找回来”有明确机制

数字口径铁律(写进任何方案/汇报都适用)

讨论实测出两次报错:拿 bytes 去比 chars 上限(中文 1 字符=3 字节,余量直接算错)、时间戳事后写错一小时。两者都是报错的人自己发现不了的。

规则:任何进入方案的数字必须带 单位 + 测量时刻 + 来源,且要能让第三方用同一条命令复算;关键数字落文件,不只留在聊天里。只有口头数字 → 标「待核」,不作决策依据。

Pitfalls

  • 把扩容当答案:库存没满时扩存储零收益,真正的坑在常驻窗口和检索命中率
  • 百分比阈值在小体量失效:见第 2 步,这是实测级教训
  • 字节/字符混算:中英文混排时差 3 倍,务必先看单位再比
  • 自己报的数字自己信:至少换一条命令或换个人复算一次(两次实战勘误都是第三方核出来的,报错的人自己发现不了)
  • 三层记忆不是一个量:分层架构的实例(如四层结构)要逐层报,别只报总和

Verification

  • 库存与常驻窗口分别有带单位的数字,瓶颈指向明确
  • 告警条件写成“剩余 < N 字符”,N 有该实例写入峰值的依据
  • 告警→淘汰→覆写/降级链路完整,末端是具体动作
  • 四字段能在写入路径上打印出样例
  • 每类记忆归层明确、找回机制明确
  • 引用的每个数字可复算,单位/时刻/来源齐;口头数字全标待核