记忆
概述#
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 上下文中会附带截断警告。
建议定期清理过时的记忆,保持索引精简。