记忆与会话
每个会话都从零上下文开始,随着进程终止而结束。在两者之间存活下来的,是这个插件写下并在下次启动时递还的东西。本页描述这套机制:会话开启时会注入什么、一条原始笔记如何变成一条持久记忆或一条参考条目,以及从一个会话到下一个会话的循环是什么样子。至于插件为何采用这种形态而非别的形态,请见 philosophy.md。
会话启动时发生了什么
Section titled “会话启动时发生了什么”在智能体看到你的第一条消息之前,一个 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: 智能体已就绪定位:技能已加载,此前状态尽在眼前
这里的“记忆”是什么
Section titled “这里的“记忆”是什么”“记忆”在这里涵盖两个不同的存储,而两者的区别决定了某样东西是会主动出现,还是要等你去找它才会出现。
| 存储 | 内容 | 如何浮现 | 合成示例 |
|---|---|---|---|
| 注入记忆 | 经验、模式、根因和纠正:你希望被主动递到手上的独立规则 | 每次会话开始时,按显著度精选 | “lesson:预发布环境的配置文件在 config/staging.yaml 里,而不是仓库根目录” |
| 延迟知识 bead | 研究笔记、设计说明和决策:你会在相关问题出现时重新翻开的参考材料 | 按需检索,通过主题标签或关键词 | “design:为什么重试队列使用指数退避,而不是固定间隔” |
两个存储都会持久化,并随你的 beads 数据库同步,但只有第一个会被主动推到会话面前。延迟知识 bead 是一个指针,而非死存储:你一搜索,它就在那里。
记忆如何被整理
Section titled “记忆如何被整理”一条记忆的生命始于一条原始笔记,通常在某个技能完成一项工作时由 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 运行
Section titled “不使用 bd 运行”本插件里的技能都是纯文本指令,无论有没有安装 bd,它们都能用。没有它,你失去的就是本页所写的一切:会话开始时什么都不会被注入,什么都不会被整理,也没有知识库可供搜索。每个会话都从零开始,上一个会话学到的东西,都得靠手动重新讲一遍。
创建: 2026-07-17最后更新: 2026-07-19