我每天都在用 Claude 写代码。
用久了以后,我发现一个很现实的问题:
Claude 很聪明,但它有时候真的“健忘”。
尤其是在企业项目中,这个问题会更加明显。
一个真实的项目,往往不是一个简单的 Demo。
里面可能有几十个模块、复杂的业务逻辑、历史遗留代码,以及很多没有写进文档,却已经成为团队共识的“约定”。
有些代码为什么不能动?
某个字段为什么不能直接修改?
一个看起来很奇怪的判断,到底是在解决什么问题?
这些东西,可能连项目文档里都没有。
但对于真正参与这个项目开发的人来说,它们却非常重要。
一个新会话,意味着重新认识项目
假设今天我和 Claude 一起处理一个问题。
我们花了两个小时。
在这个过程中,Claude 不仅帮我修改了代码,我们还逐渐确定了一些东西:
这个项目应该采用什么方式开发
某个模块存在什么特殊规则
哪些代码不能随便修改
某个历史逻辑为什么必须保留
之前遇到过什么问题
最终采用了什么解决方案
两个小时之后,问题解决了。
按理说,这些经验应该已经成为 Claude 对项目理解的一部分。
但第二天,我重新开启一个会话。
很多时候,我又要从头开始解释。
“这个项目是这样的……”
“这个地方之前遇到过一个问题……”
“这里不要这么修改……”
“这个模块有个特殊情况……”
然后 Claude 才重新进入状态。
这其实是 AI 编程过程中一个非常容易被忽略的问题:
我们解决了问题,但 AI 没有真正留下经验。
后来,我开始给 Claude 建 Memory
后来我的思路发生了一点变化。
既然每一次开发都会产生新的经验,那为什么不能把这些经验保存下来?
于是,我开始在一次会话结束之后,让 Claude 整理:
这次对话中,有哪些内容是未来继续开发这个项目时值得长期记住的?
注意,这里有一个非常重要的区别。
不是保存整个聊天记录。
而是提炼真正有价值的内容。
例如:
项目规则
项目使用什么技术栈。
目录结构是什么。
某些模块应该遵循什么开发方式。
业务规则
某个字段为什么这样设计。
某个流程为什么不能改变。
某些特殊逻辑背后的业务原因。
开发约定
哪些代码可以修改。
哪些代码不要轻易动。
新增功能应该放在哪里。
历史经验
之前出现过什么问题。
当时为什么会出现。
最终是怎么解决的。
以后应该避免什么做法。
这些内容,才是真正值得留下来的东西。
聊天记录,不等于 Memory
这是我在实际使用过程中比较深的一点感受。
一次聊天可能持续几个小时。
里面会有大量:
尝试
猜测
错误方案
临时修改
已经被否定的思路
最终没有采用的方案
如果把这些全部保存下来,看起来信息很多。
但实际上,它们未必对下一次开发有帮助。
甚至可能产生干扰。
所以我现在更倾向于把 Memory 理解成:
从聊天记录中提炼出来的“项目知识”。
聊天记录记录的是:
我们聊了什么。
Memory 保存的是:
我们最终确定了什么。
这两者完全不是一回事。
Memory 真正有价值的地方
如果只是把几条信息保存起来,其实意义并没有那么大。
真正有价值的是:
Memory 会随着项目开发不断积累。
今天解决一个问题。
留下一个经验。
明天修改一个模块。
留下一个规则。
后天又发现一个历史坑。
再留下一个注意事项。
时间久了以后,这些东西会逐渐形成一个属于这个项目的“知识层”。
于是,新会话开始的时候,我不需要再从零开始告诉 Claude:
“这个项目以前发生过什么。”
而是可以让它先读取已有的 Memory,再开始工作。
这时候,AI 和项目之间的关系就发生了一点变化。
它不再只是:
打开一个会话 → 完成一个任务 → 会话结束。
而逐渐变成:
不断工作 → 不断积累 → 不断理解 → 继续工作。
这其实很像一个“老同事”
我越来越喜欢用一个简单的比喻来理解这件事情。
刚加入项目的 Claude,就像一个新同事。
你交给它一个任务,它当然可以完成。
但它不知道这个项目的历史。
不知道哪些代码是“雷区”。
也不知道团队为什么会形成现在这些奇怪的约定。
你需要不断给它解释。
而 Memory 做的事情,有点像给这个新同事留下了一份不断更新的“项目经验”。
今天告诉它一个规则。
明天告诉它一个历史问题。
后天再补充一个业务背景。
时间久了,它对项目的理解自然会越来越深。
所以我现在越来越觉得:
AI 编程真正有意思的地方,不只是让 AI 写代码。
而是让 AI 开始积累经验。
当然,Memory 也不是越多越好
这里其实还有一个很容易踩的坑。
既然 Memory 有用,是不是把所有东西都保存下来最好?
我反而认为不是。
如果什么都记:
“今天修改了 A 文件。”
“刚才测试失败了一次。”
“用户让我把按钮改成蓝色。”
这些信息可能只对当前任务有效。
如果全部变成长期记忆,Memory 最后很容易变成一个巨大的垃圾场。
所以我认为,一个好的 Memory 应该满足一个标准:
这条信息,下次继续开发这个项目时,还值得知道吗?
如果答案是“值得”,就应该考虑留下。
如果只是当前任务的临时信息,那么让它随着会话结束而结束,反而是一件好事。
我现在更关注的是“经验沉淀”
过去使用 AI 编程工具,我关注的是:
能不能写代码?
后来关注的是:
能不能理解我的需求?
再后来,我开始关注:
能不能理解我的项目?
而现在,我更关心的是:
能不能随着项目不断开发,让 AI 对这个项目越来越熟悉?
这其实是完全不同的思路。
代码本身只是项目的一部分。
真正复杂的东西,往往是那些隐藏在代码背后的:
规则、约定、历史和经验。
而这些东西,恰恰是一个项目最难重新学习的部分。
AI 编程的下一步,可能是“经验管理”
以前我们管理代码,所以有了 Git。
后来我们管理文档,所以有了 Wiki、知识库。
而现在,我越来越觉得:
AI 也需要自己的项目记忆。
代码告诉 AI:
项目现在是什么样。
文档告诉 AI:
项目应该是什么样。
Memory 则可以告诉 AI:
这个项目为什么会变成现在这样,以及过去我们踩过什么坑。
三者结合起来,AI 才可能真正从“代码生成工具”,逐渐变成一个能够长期参与项目开发的协作者。
最后
我以前使用 Claude,更关注它能不能把代码写出来。
现在,我开始关注另外一件事情:
怎么让 Claude 越用越懂我的项目。
因为真正高效的 AI 编程,可能并不是每一次都让 AI 从零开始认识你的项目。
而是让它:
第一次认识项目,第二次记住经验,第三次开始复用经验。
最终,我们获得的可能不只是一个“会写代码的 AI”。
而是一个:
不断参与项目、不断积累经验、越来越懂这个项目的 AI 同事。
代码可以让 AI 帮你写。
而项目经验,也可以让 AI 帮你积累。
这或许才是 Memory 真正有意思的地方。