用AI开发了一个页面后,我把经验"复制粘贴"到了另外10个页面
开发第一个页面花了3小时,后面10个页面平均只用了40分钟。秘密不是我变强了,而是我学会了"偷"自己的经验。

一个让我抓狂的场景
上个月,我用Claude Code开发了一个复杂的数据表格页面。整个过程和AI反复讨论:用虚拟滚动还是分页?筛选条件存URL还是Store?动态行高怎么处理?
3小时后,页面完美上线。
一周后,产品经理说:“这个页面做得不错,我们还有10个类似的页面要做。”
我心想:太好了,有经验了,应该很快。
然后我发现——我忘了上次是怎么做的。
翻聊天记录?太长了。看代码?只有结果没有推理过程。问AI?它不记得上次的对话。
我不得不重新踩一遍坑:虚拟滚动的VariableSizeList要在数据更新后调用resetAfterIndex,这个细节我又花了20分钟才想起来。
这就是AI协作开发最大的悖论:每次对话都产生宝贵的经验,但每次对话结束,经验就消失了。
问题的本质:你的经验正在"蒸发"
如果你也在用AI写代码,回想一下:
- 上周和AI讨论的那个技术决策,现在还记得为什么那样选吗?
- 那个折腾了半小时才解决的bug,下次遇到还能立刻想起解法吗?
- AI纠正你的那个代码习惯,你写进文档了吗?
大概率没有。
不是你懒,是这件事太反人性了——对话刚结束时,一切都清晰在脑子里,谁会想着马上整理?等到需要时,细节早就模糊了。
我统计过自己的情况:每10次AI协作对话,大约产生3-5个值得记住的经验点。一个月下来就是近百个。但真正被我记住并复用的,不到10%。
90%的经验,蒸发了。
解法:让AI自己"记住"
既然问题出在人工整理太反人性,那就让AI来干这件事。
我设计了一个叫catch-memories的命令,核心逻辑很简单:
对话结束后,让AI分析整个会话记录,自动提取值得记住的经验,存成结构化的JSON文件。
不是记录"做了什么",而是提取"为什么这样做"和"学到了什么"。
比如那个表格页面的会话,提取出来的记忆是这样的:
决策:表格使用虚拟滚动而非分页
原因:用户需要频繁对比不同行数据,分页会打断操作流程
适用边界:数据量>100行且有跨行对比需求时适用
学习:react-window动态行高处理
关键点:使用VariableSizeList,数据更新后必须调用resetAfterIndex
踩坑记录:不调用会导致滚动位置错乱,很难排查
纠正:筛选条件不要存URL
原因:复杂筛选条件会超出URL长度限制
规范:统一存Store,URL只存简单的页面状态
下次开发类似页面,直接检索这些记忆,40分钟搞定。
开发第一个页面是探索,开发第十个页面应该是复制。
什么样的经验值得被记住?
不是所有对话都值得记忆。“帮我读一下这个文件”、“格式调整一下”——这些是噪音。
真正有价值的是五种"意外时刻":
1. 从失败中恢复
工具报错→换个方法→成功了。这个"换"的过程就是经验。
2. 方向被纠正
你说"用方案A",AI或你自己后来发现"其实应该用B"。为什么?这个"为什么"值千金。
3. 意外的惊喜
“这个方法比我想的好用多了”——说明你发现了一个超出预期的解法,值得记录。
4. 预期被打破
以为是X问题,查下来是Y问题。这种认知纠偏是最宝贵的学习。
5. 重复出现的场景
第二次遇到类似需求了?说明这是个值得抽象的模式。
经验提取的本质,是在对话中寻找这些"认知转折点"。
十种记忆类型:建立你的经验分类体系
为了让提取的经验可检索、可复用,我设计了十种记忆类型:
| 类型 | 说明 | 复用价值 |
|---|---|---|
| 决策 | 在A和B之间选了A,以及为什么 | 直接指导相似场景的选择 |
| 学习 | 技术细节、API用法、踩坑记录 | 避免重复踩坑 |
| 纠正 | 被指出的错误做法 | 形成个人代码规范 |
| 洞察 | 对项目/系统的新认知 | 加速理解新项目 |
| 模式种子 | 可能值得抽象的重复场景 | 识别通用模式 |
| 承诺 | 答应要做但还没做的事 | 技术债务追踪 |
| 缺口 | 发现的知识或能力盲区 | 指导学习方向 |
| 工作流备注 | 偏离标准流程的特殊处理 | 理解项目特殊性 |
| 置信度 | 对某结论的确定程度 | 判断经验可靠性 |
| 跨Agent | 需要告诉其他工具的信息 | 多工具协作 |
分类的目的不是为了好看,是为了检索。 当你要开发一个新表格页面,直接搜"决策+表格",相关经验就出来了。
质量比数量重要一万倍
这是我踩过的最大的坑:一开始贪多,每个会话提取二三十条"记忆"。
结果呢?记忆库变成了垃圾场。太多低价值信息淹没了真正重要的经验,检索出来的结果噪音太大,最后干脆不用了。
现在的原则是:每个会话只提取3-10条,宁缺毋滥。
具体的过滤规则:
跳过这些:
- 没有推理过程的常规操作
- 简单的文件读写
- 确认性回复(“好的”、“明白”)
- 纯格式调整
必须捕获这些:
- 考虑了多个方案的决策点
- 从错误中学到的教训
- 用户的明确纠正
- 任何让你说"原来如此"的时刻
还有一个硬指标:置信度评分。
- 90-100分:对话中明确说了的
- 70-89分:从上下文能强烈推断的
- 50-69分:有一定不确定性的推断
- 50分以下:不提取,太不靠谱
宁可漏掉一些经验,也不要记录不靠谱的"经验"。错误的经验比没有经验更危险。
一个真实的经验复制案例
让我用一个完整的例子说明这套方法的威力。
第一个页面开发(3小时):
和AI讨论了虚拟滚动vs分页、筛选条件存储方案、动态行高处理、列配置设计等问题。中间踩了几个坑,被AI纠正了两次代码习惯。
会话结束后执行记忆提取,得到7条记忆:
- [决策] 虚拟滚动vs分页的选择标准
- [学习] react-window动态行高的正确用法
- [纠正] 筛选条件应存Store而非URL
- [纠正] 不要在组件内直接调用API
- [洞察] 项目API分页使用cursor而非offset
- [模式种子] 表格配置可抽象为useTableConfig
- [学习] 虚拟列表滚动位置保持的技巧
第二个页面开发(50分钟):
开始前检索"表格"相关记忆,看到第1条决策记忆,判断当前场景适合虚拟滚动。直接应用第2条学习避免了动态行高的坑。按照第3、4条纠正规范写代码。
唯一新遇到的问题是列宽拖拽,补充了1条新记忆。
第五个页面开发(35分钟):
流程已经完全标准化。检索记忆→应用决策→避开已知坑→只处理新问题。
这时候第6条模式种子已经被触发3次了,于是花时间抽象出了useTableConfig hook。之后的页面更快了。
第十个页面开发(25分钟):
大部分代码是复制粘贴+微调。记忆库里已经有了这类页面的完整知识图谱。
这就是经验复制的威力:不是你变强了,是你的"外部大脑"变强了。
与传统知识管理的本质区别
你可能会说:这不就是写文档吗?
不一样。区别在于三点:
| 传统文档 | 会话记忆提取 | |
|---|---|---|
| 谁来写 | 人工撰写 | AI自动提取 |
| 写什么 | 事后总结的结论 | 实时捕获的推理过程 |
| 什么时候写 | 项目结束后(经常忘记) | 每次对话后(自动化) |
传统文档的问题是:它依赖你"事后想起来要写",而这恰恰是最反人性的。
对话刚结束时,细节都在脑子里,感觉"这么简单的事不用记"。等到真需要时,细节早就模糊了,想写也写不出来了。
会话记忆提取把这个过程自动化了。你不需要改变任何习惯,只需要在对话结束时跑一个命令,剩下的AI帮你搞定。
最好的知识管理,是你感觉不到在做知识管理。
五条实践原则
用了三个月,总结出五条原则:
原则一:记"为什么"而不是"做了什么"
错误示范:“使用了react-window”
正确示范:“选择react-window而非react-virtualized,因为API更简洁,且项目不需要后者的Grid功能”
原则二:保留原始对话片段
每条记忆都要附带原始对话。当简短描述不够用时,可以回溯完整上下文。
这也是审计需要——你得能证明这条经验是怎么来的。
原则三:建立实体关联
把记忆和具体的项目、文件、技术栈关联起来。"React性能优化"太泛,"React 18 + Next.js 14的Suspense边界问题"才有检索价值。
原则四:定期做"模式升级"
当同一个"模式种子"被触发3次以上,说明这是个真正的模式,值得升级为正式的最佳实践或代码抽象。
原则五:宁缺毋滥
再强调一次:3-10条高质量记忆,胜过30条噪音。
这套方法适合谁?
适合:
- 重度AI协作开发者(每天和AI对话超过1小时)
- 需要开发大量相似功能的场景(后台管理系统、多页面应用)
- 团队想积累可复用的开发经验
- 个人想建立"第二大脑"
不太适合:
- 偶尔用AI写几行代码
- 每个项目都是全新领域,没有复用场景
- 不愿意花5分钟跑提取命令的人
写在最后
AI协作开发的时代,真正的竞争力不是"会用AI",而是"能积累用AI的经验"。
每个人都能让AI写代码。但如果你的每次AI对话都是从零开始,而别人能站在之前100次对话的肩膀上,效率差距会越来越大。
会话记忆提取,本质上是在回答一个问题:
如何让你的第100次AI协作,比第1次更高效?
答案是:把每次协作的经验变成可检索、可复用的资产。
开发第一个页面是探索,开发第十个页面应该是复制。如果你还在为每个相似页面重新探索,是时候改变工作方式了。
参考与致谢
本文的记忆提取方法论参考了 GitHub 用户 alexknowshtml 分享的 memory-catcher.md。
原始 gist 定义了一个完整的 Memory Catching Agent 规范,包括:
- 10 种记忆类型的详细定义和提取规则
- 12 种实体类型的分类体系
- 意外触发器(Surprise Triggers)的识别方法
- 置信度评分标准和质量过滤规则
我在此基础上做了以下补充和完善:
- 加工为 Slash Command:将 Agent 规范转化为可直接在 Claude Code 中调用的
/catch-memories命令 - 简化处理流程:优化了会话记录的获取和存储逻辑,支持分析当前会话或指定历史会话
- 本地化存储:设计了按日期组织的
./memories/目录结构,便于检索和管理 - 中文适配:调整了输出格式和提示语,更适合中文开发者使用
感谢 alexknowshtml 的开源分享,让更多开发者能够构建自己的 AI 协作记忆系统。
如果这篇文章对你有启发,欢迎关注我,后续会分享更多AI协作开发的实战经验。
有问题欢迎评论区交流,我会尽量回复。
1873





