Skip to content

记忆与会话

每个会话都从零上下文开始,随着进程终止而结束。在两者之间存活下来的,是这个插件写下并在下次启动时递还的东西。本页描述这套机制:会话开启时会注入什么、一条原始笔记如何变成一条持久记忆或一条参考条目,以及从一个会话到下一个会话的循环是什么样子。至于插件为何采用这种形态而非别的形态,请见 philosophy.md

在智能体看到你的第一条消息之前,一个 SessionStart 钩子就已运行。它先读取 using-superpowers 技能(路由到所有其他技能的引导技能),然后在旁边组合出一份 beads 上下文:一份精选的记忆、一个指向最新 continuation 线索的指针,以及一个指向知识库的指针。这一切都会在你输入任何内容之前,落入智能体的上下文中。

精选的记忆偏向少数几条高显著度的条目,而非整个记忆库的穷举转储,因此一个已经积累了成百条记忆的会话,不会一次性把它们全部打开。如果这个项目里已有另一个钩子注册了 bd prime,SessionStart 钩子会检测到这一点并让出,因此 beads 上下文永远不会被注入两次。

sequenceDiagram
  participant H as 用户 / 宿主环境
  participant SH as SessionStart 钩子
  participant BD as bd
  participant A as 智能体

  H->>SH: 会话开始
  SH->>SH: 检查是否已注册 `bd prime` 钩子
  alt bd prime 已在别处注册
    SH-->>A: 仅注入技能引导内容(让出,避免重复注入记忆)
  else
    SH->>BD: 请求精选记忆、最新线索指针、知识库指针
    BD-->>SH: 按显著度精选的记忆与指针
    SH->>SH: 组合技能引导 + 精选记忆 + 线索指针 + 知识库指针
    SH-->>A: 注入组合后的上下文
  end
  Note over A: 智能体已就绪定位:技能已加载,此前状态尽在眼前

“记忆”在这里涵盖两个不同的存储,而两者的区别决定了某样东西是会主动出现,还是要等你去找它才会出现。

存储 内容 如何浮现 合成示例
注入记忆 经验、模式、根因和纠正:你希望被主动递到手上的独立规则 每次会话开始时,按显著度精选 “lesson:预发布环境的配置文件在 config/staging.yaml 里,而不是仓库根目录”
延迟知识 bead 研究笔记、设计说明和决策:你会在相关问题出现时重新翻开的参考材料 按需检索,通过主题标签或关键词 “design:为什么重试队列使用指数退避,而不是固定间隔”

两个存储都会持久化,并随你的 beads 数据库同步,但只有第一个会被主动推到会话面前。延迟知识 bead 是一个指针,而非死存储:你一搜索,它就在那里。

一条记忆的生命始于一条原始笔记,通常在某个技能完成一项工作时由 bd remember 捕获。从那里起,一次整理扫描会对它分类并路由:经验、模式、根因和纠正留作注入记忆;研究笔记、设计理由和决策则变成延迟知识 bead。无论走哪条分支都不是终点——被路由后的条目仍会在之后被检索、随理解变化原地更新,或在有新内容取代它时被替换并立墓碑。

flowchart TD
  A["一个技能完成一项工作"] --> B["`bd remember` 捕获一条原始笔记"]
  B --> C["整理扫描对笔记分类"]
  C -->|"lesson / pattern / root-cause / correction"| D["留作注入记忆"]
  C -->|"research / design / decision"| E["变成延迟知识 bead"]
  D --> F["在之后的会话开始时再次浮现"]
  E --> G["按需检索,通过主题或关键词"]
  F --> H["原地更新,或被替换并立墓碑"]
  G --> H

这次扫描从不自行应用结论。它会提议一份完整清单,列出想要新增、更新、合并或遗忘的内容,并在触碰记忆库之前等待批准,因为一次糟糕的自动化操作会悄悄污染此后每个会话看到的内容。

一个会话的收尾,衔接着下一个会话的开始。工作先发生,然后会话收尾:关闭已完成的任务、同步记忆库、推送结果。从这里起,交接文档是可选的:有些会话收尾得足够干净,注入记忆和知识库指针足以自行承接线索;另一些则受益于一份指明下一步的书面笔记。无论走哪条路径,下一个会话打开时都已就绪定位,因为钩子会注入它组合好的上下文,一个定位技能也可以按需把当前状态汇总起来。

flowchart LR
  A["会话中进行工作"] --> B["会话收尾:Land the Plane"]
  B --> C["关闭已完成任务,同步记忆库,推送"]
  C --> D["可选:撰写交接文档"]
  D --> E["下一个会话开始"]
  E --> F["钩子注入精选上下文"]
  F --> G["定位技能确认当前状态"]
  G --> A

延迟知识 bead 存储是靠搜索的,不是靠浏览的。两个入口覆盖了大多数查找:

bd list --label <topic> --status all       # 按主题标签
bd search "<keyword>" --status all         # 按关键词(仅匹配标题)

标题命中不代表正文说的就是你需要的内容。搜索默认只匹配标题,所以当你关心的关键词藏在正文而非标题里时,改用正文词条搜索:

bd list --label kb --status all --desc-contains "<term>"

把每一份命中列表当作索引,而非答案。在依赖任何内容之前,先读正文:

bd show <id1> <id2>

本插件里的技能都是纯文本指令,无论有没有安装 bd,它们都能用。没有它,你失去的就是本页所写的一切:会话开始时什么都不会被注入,什么都不会被整理,也没有知识库可供搜索。每个会话都从零开始,上一个会话学到的东西,都得靠手动重新讲一遍。

创建: 2026-07-17最后更新: 2026-07-19