mcpField
M
memory-dag-compactor

memory-dag-compactor

github.com/archieindianAgent 工作流7345 次安装26 周前更新
代码仓库

关于 memory-dag-compactor

Memory DAG Compactor 将 MEMORY.md 条目整理为多层摘要图,同时保留原始条目。它适用于需要跨会话检索上下文的 Agent,并支持检查、搜索和撤销摘要合并。

主要功能

  1. 01构建分层 DAG 摘要
  2. 02保留原始 MEMORY.md 条目
  3. 03搜索原始条目和各层摘要
  4. 04检查 DAG 结构与摘要溯源
  5. 05撤销摘要合并

适用场景

  1. 01压缩不断增长的 Agent 记忆
  2. 02从记忆摘要中查找细节
  3. 03查看摘要与源条目的关联
  4. 04撤销不合适的摘要合并

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/archieindian/openclaw-superpowers --skill memory-dag-compactor

安装后在 Claude Code 中输入/memory-dag-compactor确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

compact.py
example-state.yaml
STATE_SCHEMA.yaml

详细介绍

Memory DAG Compactor

功能

标准的记忆压缩有损——较早的条目会被截断,细节也会永久消失。Memory DAG Compactor 用受 lossless-claw 的 Lossless Context Management 方法启发的**有向无环图(DAG)**分层摘要,取代扁平压缩。

DAG 的每一层深度都使用专门设计的提示词,并针对相应的抽象层级进行优化:

深度名称保留内容时间线粒度
d0叶节点文件操作、时间戳、具体操作、错误小时
d1精简相较之前的上下文发生了哪些变化、做出的决定会话
d2脉络目标 → 结果 → 后续延续内容天
d3+长期闲置数周后仍有价值的长期上下文日期范围

原始 MEMORY.md 条目绝不会被删除——它们只会被整理成可搜索的多层摘要层级。

何时调用

  • 每晚 11 点自动运行(cron)——压缩当天的记忆条目
  • MEMORY.md 超过可配置的阈值时(默认值:200 个条目)
  • 执行长时间运行的任务之前——确保记忆精简且可搜索
  • Agent 对本应存在于记忆中的内容表示“我不记得了”时

使用方法

python3 compact.py --compact                      # Run leaf + condensation passes
python3 compact.py --compact --depth 0            # Only leaf summaries (d0)
python3 compact.py --compact --depth 2            # Condense up to d2 arcs
python3 compact.py --status                       # Show DAG stats and health
python3 compact.py --tree                         # Print the summary DAG as a tree
python3 compact.py --search "deployment issue"    # Search across all depths
python3 compact.py --inspect <summary-id>         # Show a summary with its children
python3 compact.py --dissolve <summary-id>        # Reverse a condensation
python3 compact.py --format json                  # Machine-readable output

操作步骤

步骤 1 — 运行压缩

python3 compact.py --compact

压缩器会:

  1. 读取 MEMORY.md 中的所有条目
  2. 将条目分组为若干块(默认:每个叶节点 20 个条目)
  3. 生成保留操作细节的 d0 叶节点摘要
  4. 当叶节点数量超过分支数(默认值:5)时,将其精简为 d1 摘要
  5. 在每个深度重复精简,直到 DAG 符合预算
  6. 将摘要 DAG 写入状态

步骤 2 — 跨深度搜索记忆

python3 compact.py --search "API migration"

搜索原始条目和所有深度的摘要。结果按相关性和深度排序——更深层的摘要(d0)更加详细,较浅层的摘要(d3+)则提供整体概览。

步骤 3 — 检查和修复

python3 compact.py --tree             # Visualize the full DAG
python3 compact.py --inspect s-003    # Show summary with lineage
python3 compact.py --dissolve s-007   # Reverse a bad condensation

按深度设计提示词

d0(叶节点)— 操作细节

保留:时间戳、文件路径、运行过的命令、错误消息、具体数值。舍弃:对话中的冗余内容、重复尝试、冗长的工具输出。

d1(精简)— 会话上下文

保留:相较之前状态发生的变化、做出的决定及其原因、遇到的阻碍。舍弃:单个文件的细节、精确时间戳、中间步骤。

d2(脉络)— 从目标到结果的脉络

保留:目标定义、最终结果、后续延续内容、未解决的问题。舍弃:会话级细节、单项决策、使用过的具体工具。

d3+(长期)— 长期上下文

保留:项目身份、架构决策、用户偏好、重复出现的模式。舍弃:闲置 2 周后便不再重要的任何内容。

配置

参数默认值描述
chunk_size20每个叶节点摘要包含的条目数
fanout5触发精简前允许的最大子节点数
max_depth4DAG 的最大深度
token_budget8000组装上下文的目标 token 数

状态

DAG 结构、摘要内容和谱系信息存储在 ~/.openclaw/skill-state/memory-dag-compactor/state.yaml。

字段:last_compact_at、dag_nodes、dag_edges、entry_count、compact_history。

备注

  • 从不修改或删除 MEMORY.md——DAG 是覆盖在其上的结构
  • 每个摘要都包含 [Expand for details about: ...] 页脚,列出被压缩的内容
  • Dissolve 会撤销精简,将子摘要恢复到活动集合中
  • 灵感来自 lossless-claw 基于 DAG 的摘要层级和按深度设计的提示词系统

评论

支持 Markdown