记忆系统

了解 Letta Code 的分层记忆系统

使用 Letta Code,您可以无限期地使用同一个代理 - 跨会话、跨天或跨月 - 让它随时间变得更好。您的代理记住过去的交互,学习您的偏好,并在工作时自我编辑自己的记忆。

Letta Code 代理旨在随时间变得更加复杂。通常,每个 git 仓库使用一个代理是良好的实践——这将有助于开发高度专门化于特定项目或任务的代理。您还可以通过使用专注于项目特定方面的代理来进一步专门化您的代理,例如设计、后端、安全、数据库等。

有关 Letta 记忆系统的更多一般信息,请参阅主要指南

开始会话

当您在项目目录中运行 letta 时,Letta Code 会与您上次使用的代理开始新对话:

letta
● Starting new conversation with my-agent
→ /agents list all agents
→ /resume resume a previous conversation
  • 现有项目 → 与上次使用的代理开始新对话(记忆持久存在)
  • 新项目 → 自动创建新代理

您的代理记忆无限期持久存在——关闭终端,几天后回来,您的代理仍然记得一切。使用 letta --resume 继续您确切的最后一次会话,包括消息历史。

代理选项

letta --new                    # 强制创建新代理
letta --agent <agent-id>       # 通过 ID 连接到特定代理

固定代理

固定代理以便在项目之间快速访问它们。

固定代理

> /pin          # 全局固定当前代理(到处可用)
> /pin -l       # 本地固定当前代理(仅限此项目)
> /unpin        # 取消全局固定
> /unpin -l     # 取消本地固定

您也可以在固定时重命名代理:

> /pin MyAgent  # 重命名并固定

管理固定代理

> /pinned       # 打开固定代理选择器
> /resume       # 浏览所有代理

使用选择器:

  • Enter - 切换到代理
  • P - 本地固定/取消固定选中的代理
  • D - 从所有位置取消固定

初始化记忆

开始新项目时,运行 /init 帮助您的代理了解代码库:

> /init

/init 做什么

/init/remember 和其他命令使用的内部提示在 Letta Code 仓库中可用。这些定义了您运行每个命令时代理接收的确切指令。

代理会首先询问您问题以了解您的需求:

  • 研究深度:标准(快速,约 5-20 次工具调用)或深度(全面,约 100+ 次工具调用)
  • 您的身份:您是哪个 git 贡献者?这有助于将 git 历史与您的编码风格关联起来
  • 相关仓库:是否有其他仓库(后端、共享库)您经常使用?
  • 工作流偏好:代理应该多主动?自动提交还是先询问?
  • 沟通风格:简洁还是详细的回复?

然后代理会研究您的项目:

标准初始化专注于要点:

  • 读取 README、package.json、配置文件
  • 查看 git 状态和最近的提交(自动提供)
  • 探索关键目录
  • 创建/更新记忆块,包含项目命令、架构和您的偏好

深度研究初始化是全面的:

  • 包含标准初始化的所有内容,加上:
  • 分析 git 历史以了解提交模式和约定
  • 识别主要贡献者和团队动态
  • 深入探索多个目录的架构
  • 识别痛点(经常出 bug 的区域)和代码演化
  • 为约定、注意事项和架构创建专门的记忆块

创建的记忆块

/init 通常创建或更新这些块:

  • human:您的身份、工作流偏好和沟通风格
  • persona:您希望代理遵循的行为规则
  • project:通常分成多个专注的块:
    • project-commands:构建、测试、lint 命令
    • project-architecture:目录结构和关键模块
    • project-conventions:提交风格、PR 流程、代码模式
    • project-gotchas:注意事项和需要警惕的事情

代理在研究时增量更新记忆,确保即使在长时间研究会话中也不会丢失任何内容。

每当您希望代理重新分析项目时,再次运行 /init,例如在重大更改后或添加您希望代理摄取的文档后。

更新记忆

自动更新

随着代理的工作,它可能会用重要信息更新其记忆。例如,在发现您的项目使用 pnpm 而不是 npm 后,它可能会决定为将来的会话记住这一点。

手动更新

代理有时可能无法自行存储信息,或者它们可能没有注意到特定信息对将来有用。

您可以使用 /remember 明确告诉代理记住某些内容:

> /remember Always use pnpm instead of npm in this project

不带参数时,代理会反思最近的交互并适当更新记忆:

> /remember

调用 /remember 时使用的提示在这里可用。

如果您的代理没有一致地记住重要信息,请让代理更新其策略以便将来更加勤奋,并传达您期望它存储什么信息。例如,"主动存储关于我的偏好、决策以及我明确要求您记住的任何内容的信息。"

睡眠时间记忆

代理使用工具(如 memory)记住信息。代理必须主动选择记住信息,除非代理附加了睡眠时间代理。当睡眠时间代理附加到您的编程代理时,记忆操作被卸载到异步代理,该代理设计用于在主代理工作时被动更新记忆。

创建新代理时启用睡眠时间代理:

letta --new --sleeptime

或在 ~/.letta/settings.json 中将其设置为默认:

{
  "enableSleeptime": true
}

有关睡眠时间如何工作的更多详细信息,请参阅睡眠时间代理文档

睡眠时间可能会提高您主要编程代理的记忆质量,但也可能导致额外成本。

查看记忆块

使用 /memory 命令查看附加到代理的所有记忆块:

> /memory

记忆查看器显示:

  • 列表视图:所有块及其标签、字符数、描述预览和内容预览(3 行)
  • 详情视图:在块上按 Enter 查看其完整内容和滚动

导航:

  • j/k 或方向键在块之间导航
  • Enter 查看完整块内容
  • ESC 返回或关闭

您也可以点击"在 ADE 中查看/编辑"链接,在 Letta ADE 中打开块进行直接编辑。

记忆如何工作

记忆作为存储在 Letta 服务器上。

每个块都有一个标签、描述、内容和大小限制。

代理可以读取和写入自己的块。

要了解更多关于记忆块的信息,请查看主要文档页面

配置文件

本地文件跟踪固定代理和设置:

文件 用途 Git
~/.letta/settings.json 全局固定代理、API 密钥 N/A
.letta/settings.local.json 上次使用的代理、本地固定代理 忽略
.letta/settings.json 共享项目设置 提交

最佳实践

  1. 在新项目上运行 /init - 帮助代理了解您的代码库
  2. 使用 /remember 保存重要上下文 - 明确保存您希望持久化的信息
  3. 提交 .letta/settings.json - 与您的团队共享项目上下文
  4. 保持 .letta/settings.local.json 在 gitignore 中 - 个人设置保持个人