SuperAPI AI 工具集

memory-flush

智能体与模型

查看项目

更新于 10-15 10:06

技能介绍

memory-flush 是一个面向长期记忆文件(MEMORY.md)的整理与维护技能,来自 aeonfun/aeon,页面地址为 https://www.skills.sh/aeonfun/aeon/memory-flush。它的核心目标是把近期日志中重要的记录提升为长期记忆,并清理已经过时或不再需要的条目,从而让记忆文件保持精简、准确、可用。

用途与定位

该技能主要用于定期整理记忆存储。随着运行次数增加,记忆库会积累大量日志、临时条目和重复信息。memory-flush 负责将这些内容进行筛选、去重、更新和归档,使 MEMORY.md 继续作为索引存在,而详细内容则分散到 memory/topics/ 下的主题文件中。

聚焦模式

技能支持通过 ${var} 指定一个主题。如果该变量为空,则整理所有近期活动;如果设置了主题,则只提升与该主题相关的条目。需要注意的是,清理(步骤 3)、索引维护(步骤 6)以及确定性的水位线和轮转(步骤 0 和 8)仍然全局执行,聚焦整理不会让存储的其余部分变得陈旧。

确定性准备(步骤 0)

首先运行 python3 scripts/memory_prep.py window 并读取其标准输出。该脚本会:

  • 根据结构化水位线 memory/memory-flush-state.json 计算扫描窗口,首次运行迁移时回退到 MEMORY.md 中的“Last consolidated:”行,再回退到最近 3 天;如果间隔超过 14 天则截断为 14 天并标记。
  • 打印需要读取的窗口内日志文件的确切列表。
  • 当 memory/logs/ 目录中的文件超过约 45 个时,已经按完整的旧自然月把日志轮转到 memory/logs/archive/YYYY-MM.md,且保持内容不变。

步骤要求只读取脚本列出的文件,不要自行重新计算窗口或手动轮转日志,因为这部分工作已经由 scripts/memory_prep.py 确定并经过单元测试,避免回退到 3 天或被跳过。这解决了两个旧问题:代理跳过运行时丢失超过 3 天的条目,以及每日调度重复扫描相同的 3 天。

扫描与筛选(步骤 1)

在窗口内的日志中查找值得提升为长期记忆的条目,包括:

  • 新学到的经验(遇到的错误、找到的变通方法)
  • 涉及的主题(文章、摘要),加入最近产出/文章/摘要表
  • 构建的功能或创建的工具
  • 监控器的重要发现(链上、GitHub、论文)
  • 仍然相关的想法
  • 完成的目标或进展里程碑

去重与合并(步骤 2)

对每个候选条目与 MEMORY.md 现有内容进行精确去重。按事实主体判断,而不是字符串匹配:识别候选项是关于什么(技能、代币、仓库、经验、优先级);如果 MEMORY.md 已经包含该主体,则就地编辑现有行,合并新细节并更新日期;不要追加第二个意思相近的条目。只有当主体确实不存在时才新增条目。

清理过时条目(步骤 3)

清理与新增同样重要:

  • 开放改进 PR 部分:运行 gh pr list --state open --search "improve:" --json number,title,url,与 MEMORY.md 中的“Open Improvement PRs”部分比较。如果列出的 PR 都已合并或关闭,则删除该部分;如果部分已合并,则更新列表只保留当前开放的。
  • 下一优先级部分:对照近期日志和当前仓库状态,删除已完成优先级,添加新出现的紧急优先级。
  • 经验教训:删除过时或已解决的经验。
  • 溢出部分:如果某部分超过最近约 10-15 行(通常是 Skills Built 表最先超限,但规则是通用的),把最旧的行归档到 memory/topics/<section>-history.md,并留一行指向该文件。保留最新的,归档最旧的。

更新记忆(步骤 4)

向 MEMORY.md 添加简要条目,保持其作为索引在约 50 行以内。如果某个主题需要更多细节,写入 memory/topics/<topic>.md,并在索引中登记。更新表格(最近文章、最近摘要)并添加新行。添加新部分前,检查其 ## 标题是否已存在于 MEMORY.md 中;如果存在,就地更新,绝不预置重复标题。不要手动编辑合并日期,它由步骤 8(memory_prep.py stamp)写入结构化水位线 memory/memory-flush-state.json 并镜像到 MEMORY.md 的“Last consolidated:”行。

定向编辑(步骤 5)

不要重写整个文件,只做有针对性的添加和删除。

登记新主题文件(步骤 6)

如果步骤 4 创建了新的 memory/topics/<topic>.md(或步骤 3d 中的 *-history.md 归档),在 memory/topics/index.md 的 # Reference 部分添加一行指向它,匹配现有行格式。未从索引链接的新主题笔记会成为其他运行无法找到的孤儿。

自动日志轮转(步骤 7)

日志轮转现在在步骤 0 中确定性地运行:整个早于 14 天扫描下限的自然月会追加到 memory/logs/archive/YYYY-MM.md,并在 memory/logs/ 超过约 45 个文件后执行 git rm。归档保留每一行,遵守只追加约定,同时限制文件数量。扫描窗口内的日志永远不会被触碰。

记录运行并标记水位线(步骤 8)

把提升、清理和归档的内容,以及使用的扫描窗口(开始日期到今天,注明是否因超过 14 天间隔而截断),以 ### memory-flush 标题下的项目符号记录到 memory/logs/${today}.md。然后运行 python3 scripts/memory_prep.py stamp 作为最后一步,它把今天的日期写入 memory/memory-flush-state.json 并镜像到 MEMORY.md 的“Last consolidated:”行。如果没有任何值得提升或删除的内容,记录 MEMORY_FLUSH_OK,但仍要运行 stamp,因为干净的整理也是一次合并,必须推进水位线。

网络说明

gh pr list 使用 gh CLI 内置认证,不做 curl 环境变量展开。python3 scripts/memory_prep.py 及其他工作都是针对 memory/ 的本地文件 I/O(日志轮转时额外使用 git rm)。

约束

  • 保持 MEMORY.md 为索引(约 50 行),细节放在 memory/topics/ 中。
  • 绝不重复已有的 ## 标题或已存在的事实,就地更新。
  • 清理过时条目与新增条目同等重要。
  • 水位线和日志轮转由 scripts/memory_prep.py 负责(步骤 0 和 8),不手工处理。模型的职责是判断:提升什么、去重什么、清理什么。
  • 该技能负责 MEMORY.md 的合并。其他技能(如 self-improve)可以标记记忆卫生问题,但 MEMORY.md 的结构性清理和归档应在这里完成,避免两个技能反复修改同一文件。如果 self-improve 在审计中做了清理,应视为临时措施,而不是跳过下一次整理的借口。