ReMe/docs/zh/auto_dream.md
2026-09-11 14:08:29 +08:00

7.8 KiB
Raw Blame History

Auto Dream

auto_dream 是 ReMe 的 daily 到 digest 的长期记忆沉淀流程。它默认扫描目标日期及前一天的 daily 输入,只处理相对上次 dream 发生变化的文件,从整个扫描窗口中抽取少量高价值 memory units并整合进 digest/

它消费的 daily 输入通常来自 Auto MemoryAuto Resourcedigest/、Sources 章节 和 wikilink 的文件语义见 Memory as FileIntegrate 阶段的链接策略详见 Auto Link。 主动发现是独立流程,见 Proactive

配置入口

默认配置在 reme/config/default.yaml

auto_dream:
  backend: base
  parameters:
    date:
      type: string
      default: ""
    hint:
      type: string
      default: ""
    scan_days:
      type: integer
      default: 2
    max_units:
      type: integer
      default: 5
  steps:
    - backend: dream_extract_step
      file_catalog: dream
      scan_days: 2
      max_units: 5
    - backend: dream_integrate_step
    - backend: dream_finish_step
      file_catalog: dream
    - backend: auto_tag_step

参数含义:

参数 作用
date 要处理的日期,格式为 YYYY-MM-DD。为空时使用应用时区中的今天。
hint 调用方给抽取和整合阶段的额外指导。
scan_days date 结尾的最近日期窗口;默认扫描 2 天,最小为 1。
max_units 一次最多抽取多少个可复用 unit默认 5。

输入和输出

输入来自以指定日期结尾的最近 scan_days 天 daily markdown。例如 date=2026-06-20scan_days=2 时会扫描:

daily/2026-06-19.md
daily/2026-06-19/**/*.md
daily/2026-06-20.md
daily/2026-06-20/**/*.md

Auto Dream 只扫描 Markdown 日期索引和笔记,不读取 proactive 状态或 interests.yaml

主要输出有三类:

输出 说明
digest/procedure/*.md 方法、流程、runbook、可执行经验。
digest/personal/*.md 用户、团队、项目相关的偏好、事实、长期上下文。
digest/wiki/*.md 通用知识、概念、观察、决策先例。
metadata/file_catalog/dream* dream 专用 catalog用于判断 daily 输入是否变化。

四个阶段

1. Extract

dream_extract_step 做三件事:

  1. 刷新扫描窗口内每天的索引页 daily/<date>.md
  2. 扫描这些日期的索引页和 daily/<date>/**/*.md,与 file_catalog: dream 中记录的 mtime 对比。
  3. 只把 changed files 一起交给 LLM全局抽取结构化 memory units

units 是准备沉淀进 digest 的长期记忆单元,包含 namebucketsummarypaths。一次最多返回 max_units 个,抽取器会优先合并指向同一抽象的跨文件证据,并丢弃短暂提及、逐文件摘要和缺少复用价值的弱候选。bucket 只允许 procedurepersonalwiki;未知值会路由到 wiki

如果没有 changed filesExtract 会成功返回空 unitsIntegrate 随后没有 unit 可处理Finish 仍会正常汇总 catalog。 如果有变化但没有配置 LLMExtract 会失败,因为抽取依赖 LLM。

2. Integrate

dream_integrate_step 对每个 unit 独立调用 Agent将一个 unit 整合成一个 digest 节点。它会给 Agent 暴露这些工具:

node_search, read, frontmatter_read, write, edit, frontmatter_update

这一阶段承担 auto_link 的核心职责:先用 node_search 在 digest 节点级召回相似或相关节点,再判断是新建还是更新,最后把来源和相关 digest 节点写成 wikilink。具体召回、去重和写边规则见 Auto Link

Extract 已经承担“是否值得长期记住”的过滤,因此 Integrate 不提供 SKIP 动作:每个进入本阶段的 unit 都应落到且只落到一个 digest 节点。新增与更新都必须保留来源,并把相关 digest 链接写进有上下文的句子;不能只写裸 Wikilink 或独立的关系字段。

整合动作只有四种:

动作 含义
CREATE 没有相同抽象,创建新的 digest 节点。
CORROBORATE 同一记忆再次出现,追加来源或强化表述。
REFINE 新材料补充了边界、步骤、前提、适用范围或细节。
CORRECT 新材料修正了旧节点的错误、遗漏或冲突。

Integrate 成功的 unit 会记录到 integrate_results;失败的 unit 会进入 failed_units,其来源路径会进入 failed_paths。 Finish 阶段不会 checkpoint 失败路径,保证下次还能重试。

3. Finish

dream_finish_step 负责收尾:

  1. 将成功处理的 changed paths 写入 file_catalog: dream
  2. 将扫描窗口内每个已刷新的 day-index 页也写入 catalog。
  3. 如果有 upsert 或 delete持久化 dream catalog。
  4. 返回包含 scanned、changed、integrated、checkpoint 等计数的摘要。

Auto Dream 不读取或写入 proactive 状态和 interests.yaml。这些文件由 proactive refresh writer 链路负责, 见 Proactive

失败路径不会被 checkpoint。这样下一次 auto_dream 仍会把它们视作 changed input直到整合成功。

4. Auto Tag

Finish 后,auto_dreamdream_cron 都会通过 auto_tag_step 为本轮整合实际新增或修改的 Markdown digest 文件打标, 包括 Agent 异常后恢复的落盘结果。同一文件被多次写入时只打标一次。该 Step 复用 Auto Memory 的请求级 changes 协议,将实体标签写入配置的 frontmatter 字段,默认为 memory_tags。Dream 不为未变化文件或 daily 来源笔记打标。

打标诊断记录在 metadata.auto_tag。单文件打标失败保留 dream 原有的摘要、成功状态和 checkpoint 决策;后续没有文件变化的 调用不会自动重试失败的打标。标签索引通过现有文件 watcher 异步更新。

运行方式

CLI

reme auto_dream date=2026-06-20

带调用提示:

reme auto_dream date=2026-06-20 hint="优先沉淀工程决策和长期偏好"

覆盖默认扫描窗口和 unit 上限:

reme auto_dream date=2026-06-20 scan_days=3 max_units=8

也可以在配置中把同一组 step 放进 cron job例如每天凌晨运行

jobs:
  daily_auto_dream:
    backend: cron
    cron: "30 3 * * *"
    steps:
      - backend: dream_extract_step
        file_catalog: dream
      - backend: dream_integrate_step
      - backend: dream_finish_step
        file_catalog: dream
      - backend: auto_tag_step

关键边界

auto_dream 只消费 daily 输入,不改写 daily 正文。daily 是事实和现场记录digest 才是抽象后的长期记忆层。

digest 不是原文复制。正文应保留可复用抽象Sources 章节用带上下文的完整句子指回来源,例如 该决策记录在 [[daily/<date>/decision.md]] 中。链接写法遵循 Memory as File 中的 workspace-relative wikilink 语义。

auto_dream 不凭空生成总览。只有 daily 输入中确实出现、并被抽取为 memory unit 的内容,才会进入 digest。

完整流程依赖 LLM 完成 Extract、Integrate 和 Auto Tag。