Skip to main content

Memory 长期记忆

PilotDeck 内置了基于 PilotDeck Memory Core 的长期记忆系统,能够自动捕获对话中的关键知识,并在新会话中自动检索和注入相关上下文。让你的 Agent 真正"记住"你的 WorkSpace。

核心能力​

自动捕获

每轮对话结束后,自动提取关键信息存入记忆

智能检索

新会话开始时,根据用户查询自动检索相关上下文

WorkSpace 感知

检索时考虑当前 WorkSpace 上下文,返回最相关的记忆

跨会话

记忆跨越会话边界,上一次对话的知识在新对话中自动可用

工作原理​

Memory 系统的工作流分为 写入(Capture) 和 读取(Retrieve) 两个阶段:

Turn Completedconversation transcriptCaptureextract key factstag session / timestampPilotDeck Memorypersistent knowledge store~/.pilotdeck/memoryNew Turnlatest query + contextRetrievesearch relevant memoryrank by query and workspaceSystem Contextinject retrieved factsbefore model requestread pathwrite path

捕获阶段 (Capture)​

每轮对话结束后,Memory 系统自动:

  1. 将对话消息转换为标准化的 ContextMemoryMessage 格式
  2. 调用 PilotDeck Memory 的 captureTurn 提取关键知识片段
  3. 关联 sessionKey 和时间戳存入持久化存储

检索阶段 (Retrieve)​

在新会话或新 Turn 开始时:

  1. 将用户的最新消息和最近对话上下文作为 query
  2. 调用 PilotDeck Memory 的 retrieveContext 检索相关记忆
  3. 将检索结果作为 systemContext 注入到 Prompt 中

检索模式​

Memory 支持两种检索模式:

系统自动判断是否需要检索记忆,并选择最佳策略:

memory:
retrievalMode: auto

配置​

memory:
enabled: true
rootDir: ~/.pilotdeck/memory # 可选,默认为 PilotHome/memory
retrievalMode: auto # auto | explicit

Memory 数据默认存储在 ~/.pilotdeck/memory 目录下。

与 Context 系统的集成​

Memory 是 PilotDeck Context 系统的一部分。Context 系统负责管理 Agent 每次请求的完整上下文,包括:

组件职责
PromptAssembler组装 System Prompt,包括指令、技能、记忆等
MessageProjector投影历史消息,控制上下文窗口大小
TokenBudgetManager管理 Token 预算,避免超出模型上下文限制
CompactionEngine当上下文过长时,自动压缩历史消息
MemoryResolver从 PilotDeck Memory 检索长期记忆并注入上下文

Memory 在 Context 中的位置​

System Prompt
├── 核心指令
├── 项目级指令 (Instructions)
├── 技能上下文 (Skills)
├── 记忆上下文 (Memory) ← MemoryResolver 注入
└── 工具说明

Attachment 机制​

Memory 检索结果通过 MemoryAttachmentBuilder 构建为标准化的附件格式,与其他 Context 附件(如文件内容、图片等)统一管理:

// MemoryAttachmentBuilder 的输出
{
systemContext: "基于之前的讨论,该项目使用 React 18 + TypeScript...",
diagnostics: [],
metadata: { trace: ..., debug: ... }
}

诊断信息​

Memory 系统在运行过程中会产出诊断信息,帮助排查问题:

诊断代码说明
memory_context_empty检索未找到相关记忆(Info 级别)
memory_provider_errorPilotDeck Memory 服务出错(Warning 级别)
提示 · Tip

如果发现 Memory 效果不理想,可以检查 ~/.pilotdeck/memory 目录下的数据,确认捕获是否正常工作。