夜雨聆风学习资料网

ARTICLE · 1116461

AI智能体记忆的一个缺口:它记住你说过什么,却记不住自己错在哪

AI智能体记忆的一个缺口:它记住你说过什么,却记不住自己错在哪

各位打工人,不知道你有没有遇到过:同一个坑,你的AI踩了第三遍,或者换了一个AI,又踩了同一个坑

现在的 AI 助手已经很擅长「记住上下文」了。你把项目背景说一遍,它能顺着聊三天。

但有一个缺口很少被单独拿出来讲:Agent 记住了你告诉它的一切,唯独记不住自己在哪里栽过跟头。

具体一点。这周你让 Agent 修一个 CI 失败,它卡在一个 pip install timeout 上。你查了两小时,定位到是 WSL2 的网络命名空间问题,改完 CI 绿了。

第二天换个项目,同一个 pip install timeout。Agent 又从头试。你又查了两小时。

第三天,产线上一个看不懂的报警码。Agent 试了四种读法,第四种对了。

这三件事在技术层面完全无关,但它们有一个共同点:修复方案都已经存在了——在你的终端历史里、在你的笔记里、在某个同事三年前发过的群消息里。只是对当前这个 Agent、当前这个项目来说,它们不可见。

Agent 每次都从零开始。不是因为它笨,而是因为没有人把「失败」当成一种值得沉淀的知识。

现在的记忆方案,绝大多数在记「事实」:你的偏好、项目的结构、过去的对话。这些是关于你的信息。

而「上次这里失败了,根因是 X,修复是 Y,验证方式是 Z」这类信息不属于「事实」,它属于「经验」。前者让 Agent 更懂你,后者让 Agent 变强。

任务:让失败经验可被检索,且不要求你先准备任何东西

要解决这件事,有几条看起来很自然的路:起一个向量数据库,把所有报错和修复存进去,每轮检索一遍;或者做一个在线服务,所有人共用一份公共踩坑库。

我放弃这两条的理由很实际。

第一,Agent 的失败是低频但高成本的。 一个项目一年可能只遇到几十次真正的卡壳,不值得为它维护一套常驻基础设施。向量库、embedding 服务、索引重建——都是要装、要升级、会在某天早上因为版本冲突而崩掉的东西。

第二,个人记忆解决不了这个问题。 关键在于:你在项目 A 踩的坑,对项目 B 的 Agent 一样有用。只属于个人的记忆方案,天然浪费掉了最有价值的那一部分。

第三,也是最要命的:别让读者先干活。 这是我最后才想明白的一点。一个失败经验库如果需要你先 clone 仓库、装依赖、确认 Python 版本,那它在「我正卡在一个 pip 超时上」这个时刻就已经输了——那个时刻你没有耐心做任何准备。所以默认路径必须是:不装、不配、不注册,点一下就能查。

三条约束合起来,可选空间已经被压得很小。

行动:failure-memory protocol 与 MisakaNet

我把这套做法抽象成了一个协议,叫 failure-memory protocol(失败记忆协议),参考实现是 MisakaNet,Apache-2.0 开源。

三个核心概念:

概念
是什么
Lesson
一条经验,一个 Markdown 文件,结构固定为:问题 → 根因 → 修复 → 验证
Node
一个 Agent 或开发者,贡献和检索 lesson
Search
BM25 关键词检索,纯 Python 标准库实现,零第三方依赖

检索跑在远端,你本地不需要 Python。

「验证」那一栏是我认为最重要、也最容易被省略的一栏。一条没验证过修复是否生效的经验,和一条猜测没有区别。所以每条 lesson 都必须写清楚「我怎么确认它修好了」。

证据等级。 不是所有经验都同样可靠,所以用 E0–E4 标注可信度:E0 是未验证的个人推测,E4 是维护者已复现验证。检索结果自带可信度标注,用的人自己决定信多少。

三层结构,这是最容易被忽略的一层拆解:

层
是什么
缺了会怎样
① 服务
远端 Streamable HTTP 端点,7 个工具,读取匿名且不限量
没有可查的地方
② 接入
一行命令把端点写进各家 Agent 的配置;或直接用插件市场里现成的包
你得知道五种助手各自的配置怎么写
③ 触发
规则块(遇错先查)加检查点钩子,约 20 轮提醒沉淀
端点在,但没有任何人会去调用它

第一层用的是 MCP——目前让 Agent 调用外部工具最通用的协议。你不用记这个词:对你来说它就是一个网址,填进助手的配置就能用。

第三层是我踩过坑之后才补上的。MCP 工具是 pull 型的,端点永远不会主动调用它——「要不要查」这件事最终始终由 Agent 自己决定。安装器能保证的只是「工具确实在」和「该查的时刻更容易被抓住」,它做不到「自动查询」,这一点我不想含糊过去。

另外,不存储原始日志,不做 prompt 注入。lesson 是人写的、经过结构化整理的知识,不是从对话里偷偷捞出来的原始记录。

试试看:一行命令

npx @misaka-net/misakanet-setup

装完把助手窗口关掉再打开一次,然后随便问一句带报错的(比如「pip install timeout 是什么原因」)——它应该先去查经验库再回答。

想确认状态加 --verify,想看它要改什么加 --dry-run,想关掉用 --uninstall(改过的文件都留了 .misakanet.bak 备份)。

不想碰命令行的,还有更省事的办法:把下面这句话复制给你的 Agent,它会自己装、自己检查、然后用大白话告诉你结果。

帮我接入 MisakaNet 失败经验库:读 https://raw.githubusercontent.com/Ikalus1988/MisakaNet/main/integrations/agent-autostart/INSTALL_FOR_ME.md,按「第 2 部分」执行。

已经在用 Claude Code 的话有专门的通道,不用跑安装命令:

/plugin marketplace add Ikalus1988/MisakaNet/plugin install misakanet@misakanet

而如果你的 Agent 本身就支持 MCP——Cursor、Gemini CLI、Windsurf 等等——最省事的是什么都不装,直接把 https://misakanet.org/mcp 这个网址填进它的 MCP 配置里。

至于 git clone——它不是给新读者的路。那条路是给要读源码、要离线用、或者想自己贡献一条 lesson 的人的。想看文件再 clone。

  • 代码仓库:https://github.com/Ikalus1988/MisakaNet
  • 官网:https://misakanet.org/
  • 在线搜索:https://misakanet.org/search/

结果

截至 2026-10-02,MisakaNet 收录 436 条 lesson,GitHub 上 519 star、216 fork,当前版本 v2.40.0,Apache-2.0 开源,当天仍有提交。领域覆盖 RAG、DevOps、飞书、工业报警、网络、模型接入等方向。

除了 MCP 端点,它还有几个不用装的入口:浏览器里的 WebMCP(navigator.modelContext)、给爬虫读的 llms.txt、A2A 的 .well-known/agent-card.json,以及一个 GitHub Action——CI 一挂,它自动去经验库里搜最接近的一条,评论到对应的 PR 上。

最直接的变化是:上面那三个问题——WSL2 的 pip 超时、工业报警码、CI 的 token 失效——现在都能在几秒内被搜出来,而不是被重新 debug 两小时。

最后说一句被问得最多的话:这和 Skill 有什么区别?

Lesson
Skill
本质
失败经验
可执行能力
目标
避免重复踩坑
完成某类任务
内容
问题 → 根因 → 修复 → 验证
指令、脚本、模板、工具
使用时机
出错前预防、出错后排查
执行任务时调用

Skill 教 Agent 怎么做事,Lesson 教 Agent 以前在哪里失败过、下次别再踩。

两者不是替代关系。一个 Agent 装了五十个 Skill 却每次掉进同一个坑,和一个 Agent 什么 Skill 都没有但从不再犯已知错误,都不是完整的状态。

如果你用下来觉得某条 lesson 帮到了你,或者发现它漏了你踩过的坑,都欢迎来提。这种反馈比 star 更能决定这个库往哪走。

相关学习资料