Skip to content

Memory 记忆系统

AI「失忆」是使用 AI 编程工具时最让人头疼的问题之一。每次开始新会话,AI 就不记得之前的项目上下文、你偏好的代码风格、之前谈过的架构决策。Qoder 的 Memory 系统专门解决这个问题。

记忆的价值不只是"备忘"——它是你和 AI 之间不断积累的共同语境。使用越久,AI 越了解你的偏好、你的项目结构、你踩过的坑,新会话的"预热时间"越来越短。

但记忆有一把双刃剑:存的越多,越需要治理。100 条精心维护的记忆比 1000 条杂乱的记忆有用得多。Skill 也是如此——20 个精心维护的 Skill 比 100 个过时的 Skill 有用得多。


使用篇 —— 与记忆交互

1. 如何与记忆对话

记忆操作的接口只有一种:自然语言对话。你不需要打开任何管理界面。

主动存入

你不需要手动决定"存什么、怎么存"。最高效的方式是让 AI 来建议和创建记忆

方式一:让 AI 主动总结对话中的关键信息

在讨论完一个重要话题后,直接说:

刚才讨论的架构决策,你觉得哪些值得记住?请帮我创建记忆。

AI 会自行判断哪些信息有价值、归属哪个类别,然后压缩提炼后存储。它比你更清楚自己需要记住什么。

方式二:让 AI 根据代码/规范变化更新记忆

当项目代码或规则发生变化时:

我刚更新了编码规范,请扫描 Rule 文件的变化,自动更新相关记忆。

AI 会对比新旧规范,识别需要创建或更新的记忆点,自动完成治理。

方式三:在日常对话中自然沉淀

AI 会在对话中判断哪些信息值得记住——当你解决了一个踩坑问题、确认了一个架构选型、约定了一种编码方式时,直接告诉 AI:

这个经验很重要,请更新记忆。

按需查询

需要 AI 回忆已有经验时:

搜索你的记忆,找出关于 FFmpeg 调试的经验

记忆中有没有关于 EmbeddedAgent 的架构决策?

全景查看

定期查看 AI 记得什么:

你现在的全局记忆保存了哪些信息,请列出来

全局记忆总览——按类别整理的记忆清单

AI 会返回按类别整理的清单,这张截图就是一个真实项目的"常见坑点"类别展开后的样子——你能看到每一条记忆的标题和内容摘要,一目了然。这是做"记忆审计"的基础。

2. 记忆的类别

Qoder 的记忆按类别组织。一个实际项目(21 个模块、52 条记忆)的分类如下:

类别数量存什么
常见坑点11踩坑记录:PowerShell 多行提交、FFmpeg -y 参数
项目介绍13架构说明、模块职责、废弃模块标记
技能经验7可复用的标准化操作流程
环境配置6工具路径和目录结构
重要决策3架构选型理由
其他配置类5构建、依赖、IDE、Git 提交规范

案例篇 —— 一个改变前端开发方式的记忆

3. ui-ux-pro-max:用记忆补齐 AI 的设计短板

如果你用 AI 写过前端页面,一定有过这样的体验:生成的界面能用,但怎么看都像"AI 风格"——布局呆板、配色奇怪、字体不协调。这不是模型的能力问题,而是AI 缺乏设计领域的知识沉淀

ui-ux-pro-max 就是解决这个问题的。它是 GitHub 上最受欢迎的 AI 编程设计 Skill,拥有 88,700+ stars。它的工作方式非常简单:把一套完整的设计系统注入到 AI 的上下文中

它存了什么

ui-ux-pro-max 本质就是一个精心设计的记忆包 + 指令包,包含了:

类型数量作用
UI 风格67+Glassmorphism、Neumorphism、Brutalism、Bento Grid 等
配色方案96+按行业分类(SaaS、电商、教育、金融等)
字体搭配56+成套的标题/正文/等宽字体组合
UX 最佳实践98+表单设计、导航布局、响应式策略

当 AI 需要生成前端界面时,它会从这些记忆中找到匹配的设计模式,直接应用到生成的代码中。结果是:不再需要你在 prompt 里写"好看一点",AI 自己就知道什么叫好看。

它是怎么工作的

传统方式:用户写 prompt "设计一个好看的登录页面,用玻璃拟态风格"

        依赖 AI 的训练数据中是否有足够的玻璃拟态案例

        结果随机,大部分时候是"能用但不精致"

有 ui-ux-pro-max 的记忆:
        用户写 prompt "帮我创建一个登录页面"

        AI 从记忆中找到 67+ 种 UI 风格的知识

        AI 主动选择最匹配的风格(如 Glassmorphism)

        自动应用该风格的色值、圆角、阴影、字体规范

        结果:专业级别的 UI,不用额外描述

这个案例的启示

ui-ux-pro-max 展示了 Memory 系统的真正价值:它不只是用来记忆"项目架构"和"踩坑记录"的,更是用来给 AI 注入专业领域知识的

传统路径记忆驱动路径
你描述细节 → AI 按文字还原你描述意图 → AI 从记忆中匹配最佳方案
每次都要重复说"用玻璃拟态"一次存入,每次自动应用
依赖 AI 训练数据中的偶遇知识主动注入经过验证的专业知识

这就是为什么我们说「最好的标准,是让人不需要记住标准」——ui-ux-pro-max 把"设计标准"变成了 AI 的记忆,你只需要告诉 AI 你的意图。


治理篇 —— 记忆与 Skill 的健康管理

4. 记忆的压缩与过期治理

Qoder 在存入记忆时会做自动压缩——一段长篇讨论被提炼为摘要。这个过程不可逆,查询时看到的是要点而非细节。

压缩的最大副作用:过期的记忆不会自动消失。 今天约定"函数不超过 30 行",下个月改成 50 行,旧记忆还在。AI 同时读到两条冲突的记忆,不知道该遵循哪个。

发现问题时直接说:

那条"函数不超过30行"的记忆已经过时了,现在统一是50行,请删除旧的记忆

我的 Rule 已经更新了编码规范,请搜索你的记忆,删除所有与当前 Rule 冲突的旧记忆

一个真实案例: Growth 项目重构了接口命名——从 IXxxProvider 改为 IXxxService。新规范写进了 Rule,但记忆里还存着旧的规范。AI 每次生成时,Rule 说用 Service,记忆说用 Provider,陷入矛盾。一句话"请更新记忆"就解决了。

5. Skill 治理:不要让技能成为负担

Skill 和 Memory 面临同一个问题:积累越多,管理成本越高。当团队热情高涨地创建了大量 Skill 后,会不可避免地遇到三个问题:

上下文膨胀

每个 Skill 都需要在 AGENTS.md 中注册索引。100 个 Skill,即使每个只写一行描述,AGENTS.md 也要多出 100 行。每次对话都要加载这些内容,即使你只是想写一个简单的函数。

这就像每次出门前都要读完整个宜家目录——哪怕你只想买一个螺丝刀。

发现困难

100 个 Skill,用户能记住的不超过 20 个。大部分 Skill 静静躺在目录里,没人知道它们存在,更没人用。创造了却没人用,比不创造更浪费——你投入了维护成本,却没有得到收益。

Memory 也一样——当记忆条目超过 200 条时,AI 在检索时也会"挑花眼",相关记忆被淹没在噪声中。

路由准确率下降

大模型在选择 Skill 时,需要从 AGENTS.md 的索引列表中匹配当前任务。候选越多,选错或犹豫的概率就越高。实践中我们发现,当 Skill 超过 30 个时,模型自动路由的准确率就开始明显下降

Memory 的语义检索虽然不会"路由错误",但噪声记忆会拉低检索结果的精确度——模型找到 10 条相关记忆,其中可能只有 3 条是真正有用的。

6. 共同的治理原则

Memory 和 Skill 的治理遵循同一套原则:

原则MemorySkill
准入标准只有确实重要、不记就会忘的信息才存入只有每周至少出现一次的任务才值得创建
定期检查每季度让 AI 审计一次,删除过时条目每季度审视一次,废弃零使用的 Skill
精而不多100 条精心维护的记忆 > 1000 条杂乱的20 个活跃的 Skill > 100 个无人问津的
去重合并同类信息合并为一条,避免碎片化功能重叠的 Skill 合并,避免选择困难

操作上,治理不需要你手动翻列表,一句话就能完成:

请审计我的记忆,是否有和当前代码不匹配的过时条目?

请检查我的 Skill 列表,过去三个月没使用过的标记为废弃。


知识篇 —— 理解记忆系统

7. 三种记忆架构路线

业内对"如何管理 AI 记忆"有三种完全不同的设计路线。看懂这三条路线,你就知道 Qoder 的 Memory 设计为什么是今天这个样子。

OpenViking:图书馆编目(最精细)

字节跳动旗下 Coze 的开源记忆系统。把记忆分为 8 个类别(用户画像、偏好、实体、事件、案例、模式、工具、技能),用 LLM 自动提取和分类,配合去重和合并机制。每个类别有不同的合并策略——PROFILE 始终合并、CASES 禁止合并。

适合:长生命周期、知识密集项目。

MAF(Microsoft Agent Framework):搜索引擎(最灵活)

微软的 AI Agent 框架,不分类,所有记忆以 flat 的 vector embedding 存储在 VectorStore 中,检索靠语义相似度 + 四维过滤(应用/Agent/用户/会话)。靠 Compaction 系统(5 种压缩策略)管理膨胀。

适合:需要模糊发现、不需要精确分类的场景。

Hermes:两个笔记本(最简单)

Agent 只维护两个文件:USER.md(用户画像)和 MEMORY.md(Agent 笔记),条目用 § 分隔。所有内容全量注入到上下文。

适合:快速原型、个人实验。

三条路线的核心取舍

三种记忆架构路线对比

精确性(分类)         ←  →  灵活性(embedding)
     │                           │
  OpenViking ───────────────── MAF
  (8类+去重+合并)          (flat vector)

  Hermes
  (2类文件)

8. 记忆在 Agent 中的处理方式

理解记忆架构后,还有一个关键问题:当 Agent 执行任务时,记忆是如何被加载和使用的? 这决定了你在实际操作中应该如何对待记忆。

加载时机

记忆不是在每次对话时全部加载的。如果每次都将全部记忆注入上下文,几轮对话后上下文窗口就会耗尽。Qoder 的处理方式是按需检索

用户提出需求

Agent 解析需求,提取关键词

Agent 向记忆系统发起语义检索

记忆系统返回 Top-K 相关条目(通常 5-10 条)

Agent 将检索结果注入当前上下文

Agent 执行任务(同时参考记忆 + Rule + AGENTS.md)

检索与排序

记忆检索的核心机制是语义相似度匹配。Agent 把当前问题转化为向量,与记忆库中的所有条目进行相似度计算,返回最相关的若干条。

这意味着:

  • 越具体的记忆越容易被召回——模糊的描述在匹配时得分低
  • 越近期的记忆没有额外加分——语义匹配只看"像不像",不看"新不新"
  • 重复的记忆不会自动去重——两条内容相似的记忆都会被召回,占用上下文空间

记忆与上下文的融合

检索到的记忆不是简单拼接到上下文末尾。Agent 在融合记忆时会做几件事:

  1. 去重过滤:如果多条记忆内容相似,只保留一条
  2. 冲突检测:如果记忆与当前 Rule 或 AGENTS.md 矛盾,以 Rule 为准
  3. 优先级排序:AGENTS.md > Rule > Memory(约束力越强的越优先)
  4. 压缩合并:相关记忆合并为一段摘要,减少 token 占用

这个融合过程是 Agent 自己完成的,你不需要干预。但理解这个过程,你就明白为什么记忆不能替代 Rule——在冲突时,记忆永远被 Rule 覆盖

9. 这对你使用 Qoder Memory 的启发

理解以上原理后,你就明白:

  • 为什么记忆需要治理——因为没有自动过期机制,也没有自动去重
  • 为什么记忆不能替代 Rule——因为记忆在融合时会被 Rule 覆盖
  • 为什么精而不多——因为检索是语义匹配,噪声越多,精确度越低
  • 为什么你不需要关心"怎么存"——因为 Agent 会自动完成压缩、分类和融合
场景用什么
必须遵守的编码规范Rule(强制)
踩坑记录、架构决策理由Memory(辅助)
用户个人偏好Memory(PROFILE 类)
工具的标准化调用方式Memory + Skill 组合
大规模知识库MCP 或 RepoWiki

写在最后

记忆系统的设计路线没有对错,只有适不适合。OpenViking 的精细编目适合长生命周期项目,MAF 的扁平向量适合需要灵活发现的知识体,Hermes 的两个文件适合快速原型。

Qoder 选择了中间路线——用自然语言作为记忆操作的统一接口,让 AI 自动完成分类和压缩。你只需要记住一句话:重要的东西主动告诉 AI 存下来,过时的东西主动让 AI 删掉

配合本章讲的治理原则——精而不多、定期审计、去重合并——你的记忆库会随着使用时间增长变得越来越精准,而不是越来越混乱。