Skip to main content

记忆

概述#

JoyCode 长期记忆是一套跨会话的知识持久化系统。它让 AI 助手能够在对话中自动归档有价值的信息(你的角色、偏好、项目背景等),并在后续会话中召回这些信息,从而避免每次都从零开始。

核心价值:

  • AI 记住你是谁、你喜欢怎样的协作方式
  • 项目的关键决策和背景在会话之间不再丢失
  • 外部系统的文档和看板地址无需反复告知

快速开始#

1. 开启记忆#

打开 JoyCode 设置面板 → 切换到「记忆」标签 → 开启「开启自动生成」开关。

记忆功能默认开启。如果你是第一次使用,无需额外操作。

2. 自然对话,自动记忆#

正常与 AI 对话即可。AI 会在适当时机自动保存有价值的信息:

  • 你:"我是后端开发,主要写 Go,负责支付模块"
  • AI:[自动保存用户记忆:后端 Go 开发,负责支付模块]

3. 主动要求记住#

你也可以直接要求 AI 记住某些信息:

  • 你:"记住:我们的 API 文档在 Notion 的 API-Docs 页面"
  • AI:[保存外部引用记忆]

4. 查看和管理#

对话中 AI 执行记忆操作时,聊天区会显示一个卡片。点击「查看」可以跳转到设置面板的记忆管理页。


记忆类型#

JoyCode 将记忆分为 4 种类型,每种类型有不同的用途和触发场景:

类型名称用途触发场景示例
user用户记忆你的角色、目标、知识背景和长期偏好"我是数据科学家" / "我写了十年 Go"
feedback反馈偏好你对协作方式、输出风格的反馈"别在回答末尾总结" / "用表格展示比较好"
project项目记忆项目目标、背景、约束、关键决策"周四后冻结合并" / "这次重构是法务要求的"
reference外部引用外部系统、文档、看板等位置指针"Bug 在 Linear 的 INGEST 项目里跟踪"

什么会被记住#

  • 你的角色和技能背景
  • 你对 AI 工作方式的纠正或确认
  • 项目的关键决策和非代码事实
  • 外部资源的位置信息

什么不会被记住#

  • 代码模式、架构和文件路径 —— 这些可以从代码库直接读取
  • Git 历史和提交记录 ——git log是权威来源
  • 调试方案和修复方法 —— 修复已经在代码中
  • 临时的任务细节和当前会话上下文
  • 密钥、Token、密码等敏感信息 —— 系统会主动拒绝保存

记忆的生命周期#

保存#

AI 保存记忆是一个两步过程:

写入文件—— 在项目记忆目录创建一个.md文件,包含 YAML 元数据和正文

更新索引—— 在MEMORY.md索引文件中添加一行指针

召回#

每次新会话开始时,MEMORY.md索引会自动注入到 AI 的上下文中。AI 可以根据索引判断哪些记忆与当前任务相关,并在需要时读取完整内容。

验证#

记忆可能会过时。AI 在使用记忆前会验证其准确性 —— 如果记忆中提到某个文件或函数,AI 会先确认它是否仍然存在。如果发现记忆已过时,AI 会更新或删除。

遗忘#

你可以随时要求 AI 遗忘某条信息:

  • 你:"忘掉之前记的关于部署流程的记忆"
  • AI:[删除相关记忆]

你也可以在设置面板中手动删除。


设置面板操作指南#

在 JoyCode 设置面板的「记忆」标签中,你可以对记忆进行完整管理。

记忆开关#

操作说明
开启自动生成AI 会在对话中自动归纳和保存有价值的信息
关闭自动生成AI 不再自动保存记忆,但已有记忆仍会被召回

记忆列表#

记忆列表按类型展示所有已保存的记忆。每条记忆显示:

  • 标题—— 记忆的名称
  • 类型标签—— 用户记忆 / 反馈偏好 / 项目记忆 / 外部引用
  • 展开箭头—— 点击展开查看描述和完整内容

编辑记忆#

点击记忆条目右侧的编辑按钮,打开编辑弹窗: | | | | | --- | --- | --- | | 字段 | 限制 | 说明 | | 标题 | 最多 200 字 | 记忆的名称 | | 描述 | 最多 200 字 | 用于判断记忆是否与当前任务相关 | | 内容 | 最多 1000 字 | 记忆的完整正文 | 标题、描述和内容均不能为空。

删除记忆#

  • 单条删除—— 点击记忆条目右侧的删除按钮,确认后删除
  • 清空全部—— 点击列表上方的「清空全部」按钮,确认后删除所有记忆

刷新#

点击「刷新」按钮可以重新从磁盘加载记忆列表,确保显示最新状态。


聊天中的记忆卡片#

当 AI 在对话中执行记忆操作时,聊天区域会显示一个紧凑的操作卡片:

状态显示内容
正在探索记忆加载动画 + "正在探索记忆..."
正在更新记忆加载动画 + "正在更新记忆..."
探索完成数据库图标 + "记忆已探索" +查看链接
更新完成数据库图标 + "记忆已更新" +查看链接

点击查看链接会直接跳转到设置面板的记忆标签,并自动展开和定位到相关记忆条目。

索引文件(MEMORY.md)#

纯 Markdown 格式,每条记忆占一行:

- [用户角色](user_profile.md) — 后端 Go 开发,负责支付模块- [测试偏好](feedback_testing.md) — 集成测试必须用真实数据库,不用 mock

限制:最多 200 行 / 25KB。超出后自动截断尾部内容。

主题文件#

带 YAML 前置元数据的 Markdown 文件:

---name: 用户角色description: 后端 Go 开发,负责支付模块type: user---用户是后端开发工程师,主要使用 Go 语言,负责支付模块。Why: 用户在首次对话中自我介绍How to apply: 在讨论架构和代码时,优先使用 Go 相关的惯例和最佳实践

同一 Git 仓库的不同子目录共享同一套记忆。路径解析基于git rev-parse --show-toplevel

与 AI 的交互方式#

主动保存#

你:"记住我们的 CI 在 Jenkins 上,地址是 jenkins.internal/job/api"

主动查询#

你:"你还记得我之前说的部署流程吗?"

主动遗忘#

你:"忘掉关于旧 auth 中间件的记忆,我们已经迁移完了"

忽略记忆#

你:"忽略记忆,从零开始帮我分析这个问题"

AI 在收到「忽略记忆」指令后,会像 MEMORY.md 为空一样处理当前会话。

纠正记忆#

如果 AI 基于过时记忆给出了错误建议,直接纠正即可:

  • 你:"我们已经不用 Jenkins 了,现在用 GitHub Actions"
  • AI:[更新相关记忆]

常见问题#

Q: 为什么有些记忆文件显示「frontmatter 不完整」?#

记忆文件必须包含完整的 YAML 元数据(name、description、type),如果手动编辑文件时格式不正确,该文件会被标记为无效,不在列表中展示。

Q: 可以手动编辑记忆文件吗?#

可以。记忆存储在.joycode/memory/目录下的 Markdown 文件中,你可以直接用编辑器修改。但请确保 YAML 前置元数据格式正确(包含 name、description、type 三个字段),否则文件会被标记为无效。

Q: 记忆会被提交到 Git 吗?#

取决于你的.gitignore配置。如果不希望记忆被提交,可以在.gitignore中添加:

.joycode/memory/

Q: 记忆数量有限制吗?#

单条记忆的限制:标题 200 字、描述 200 字、内容 1000 字。索引文件 MEMORY.md 最多 200 行 / 25KB。超出索引限制后,尾部内容会被截断,AI 上下文中会附带截断警告。

建议定期清理过时的记忆,保持索引精简。