Lore

日常维护

轻量的每周例行检查、清理方式,以及用节点历史保持记忆可用。

简短的每周例行检查就能让记忆保持准确,不必搞一次大规模清理。

每周例行检查

  1. 一做出有长期价值的决定,就立刻保存为记忆。停留在聊天中的决定,会随会话结束而丢失。
  2. 在 召回 页面,为每个活跃项目运行三到五条真实的召回查询。
  3. 查看下一节的召回信号。优先修复缺失或错误的记忆。
  4. 审阅过去一周的 Dream 变更。通过好的变更。对于不好的变更,请编辑节点;在自托管服务器上,也可以从节点历史中回滚该节点。只有当某次运行是最近的一次,并且其中每项变更都不好时,才回滚整次运行。
  5. 按下文所述,清理一条过时或过宽的记忆。
  6. 检查最近的备份是否及时。在自托管服务器上,请查看 备份操作 下的列表。在 Loremem 云服务上,请查看 备份 标签页中的 最近备份。

需要维护的召回信号

召回分析能显示记忆在哪里失效。在自托管服务器上,打开 召回。在 Loremem 云服务上,打开 概览,查看召回分析和渠道概览。

信号通常意味着什么应该怎么做
你预期能命中的查询没有返回结果记忆缺少术语(glossary),或其触发条件与人们的提问方式不符。补上缺失的术语,或重写触发条件。在调整阈值或权重之前,先修正记忆的结构。
某条记忆经常出现,却从未被采用它给提示词增加了噪声。收窄它的触发条件,或将它拆分,让每一部分都有自己的触发条件。
区分度(Separation)低或为负被采用的记忆与未被采用的记忆得分差不多。检查那些在许多查询中出现的记忆的术语和触发条件。
同一个过宽的节点反复出现它涵盖的内容太多。将它拆分。

召回分析中的术语含义如下:

  • 融合统计排序后的候选数量。展示统计注入提示词的记忆数量。采用统计智能体通过召回 ID 打开过的记忆数量。
  • 区分度等于“采用样本的 p25 分数”减去“未采用展示样本的 p75 分数”。当它低或为负时,被采用与未被采用的记忆分数存在重叠。

清理过时或过宽的记忆

与其直接删除过宽的记忆,不如优先拆分它。过宽的记忆通常混杂着一两条有用的事实和过时的细节。

  1. 进行大规模清理之前,先做一次备份。
  2. 打开节点,阅读它的内容、触发条件、术语和优先级。
  3. 从以下操作中选择一种:
    • 当某项事实已经改变时,修改 内容。节点的历史会保留之前的文本。
    • 拆分 涵盖多个概念的节点。保留父节点作为抽象节点,并把每个概念移入一个子节点。
    • 移动 位于路径树中错误位置的节点。
    • 只有当其中的内容都已不再成立时,才 删除 节点。
  4. 在删除或替换内容之前,先检查节点的历史。如果某项事实已经改变,但旧版本仍能解释过去的决定,就修改节点,而不是删除它。
  5. 运行那些本应找到这条记忆的召回查询,并确认返回了正确的节点。

下面是一个拆分的示例。这个节点混合了两个主题,并且触发条件使用了 OR 逻辑:

URI:        project://checkout_api/deploy
Priority:   2
Disclosure: When working on checkout-api releases or database migrations
Glossary:   deploy, release, migration
Content:    Deploy with make release. Roll back by redeploying the previous tag. Migrations must run before the new pods start.

把父节点保留为总体概览,并为每个主题各建一个子节点:

URI:        project://checkout_api/deploy/release
Priority:   2
Disclosure: When cutting or rolling back a checkout-api release
Glossary:   make release, release, rollback
Content:    Release with make release. Roll back by redeploying the previous tag.
URI:        project://checkout_api/deploy/migrations
Priority:   2
Disclosure: When adding or changing a checkout-api database migration
Glossary:   migration, database migration
Content:    Migrations must run before the new pods start.

父节点 project://checkout_api/deploy 必须先作为真实节点存在,并带有自己的内容、触发条件和术语,然后才能为它添加子节点。

使用节点历史与回滚

每一次新增、修改、移动和删除都会记录在节点历史中,包括 Dream 做出的变更。

  • 自托管:打开节点的历史,查看每个事件及其差异。在新增或修改事件上选择 回滚,即可把节点恢复到该事件之后的状态。其他类型的事件不能这样回滚。这适合撤销较早的变更,例如某次已不是最近一次的 Dream 运行所做的修改。
  • Loremem 云服务:节点历史以差异形式显示每次变更。控制台不提供单个节点的回滚,因此请编辑节点,恢复之前的文本。

为新项目准备记忆

在智能体需要之前,先创建项目的记忆。多段路径需要一个真实的父节点,因此请先创建项目根节点,并为它填写内容、触发条件和术语。然后添加以下起始集合:

路径内容
project://my_app/overview项目是什么,以及它位于哪里。
project://my_app/commands安装、开发、测试、构建和部署命令。
project://my_app/constraints架构规则、禁止的变更和产品约束。
project://my_app/deployment托管方式、环境变量、发布流程和回滚说明。

为每条记忆补充术语,覆盖产品名、别名和缩写。只有每个任务都需要的事实,才使用优先级 1。优先级预算会把整个记忆库限制为最多五个优先级 0 节点和十五个优先级 1 节点。

写完第一批记忆后,用一条真实的任务提示运行召回。如果概览没有出现,请先改进它的触发条件和术语。