<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>长期记忆 on KnightLi的博客</title>
        <link>https://www.knightli.com/tags/%E9%95%BF%E6%9C%9F%E8%AE%B0%E5%BF%86/</link>
        <description>Recent content in 长期记忆 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Fri, 01 May 2026 03:01:02 +0800</lastBuildDate><atom:link href="https://www.knightli.com/tags/%E9%95%BF%E6%9C%9F%E8%AE%B0%E5%BF%86/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Claude-Mem：给 Claude Code 加上跨会话长期记忆</title>
        <link>https://www.knightli.com/2026/05/01/claude-mem-persistent-memory-for-claude-code/</link>
        <pubDate>Fri, 01 May 2026 03:01:02 +0800</pubDate>
        
        <guid>https://www.knightli.com/2026/05/01/claude-mem-persistent-memory-for-claude-code/</guid>
        <description>&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 是一个给 &lt;code&gt;Claude Code&lt;/code&gt; 使用的持久化记忆系统。&lt;/p&gt;
&lt;p&gt;它想解决的问题很具体：AI 编程助手每次开新会话时，往往会忘记之前讨论过的架构决策、踩过的坑、项目偏好和实现背景。&lt;br&gt;
如果一个项目做得久，每次都重新解释上下文，非常浪费时间。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 的思路是：把 Claude Code 的会话内容压缩成记忆，存进本地数据库和向量库，之后再通过搜索工具找回来。&lt;/p&gt;
&lt;h2 id=&#34;它解决什么问题&#34;&gt;它解决什么问题
&lt;/h2&gt;&lt;p&gt;Claude Code 很适合处理代码任务，但会话上下文毕竟有限。&lt;/p&gt;
&lt;p&gt;常见痛点包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;新会话不知道旧会话做过什么&lt;/li&gt;
&lt;li&gt;项目里的设计决策需要反复解释&lt;/li&gt;
&lt;li&gt;曾经排查过的问题容易重复踩&lt;/li&gt;
&lt;li&gt;长期任务缺少连续记忆&lt;/li&gt;
&lt;li&gt;多次对话之间很难沉淀项目知识&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 就是围绕这些问题设计的。&lt;/p&gt;
&lt;p&gt;它不是简单保存聊天记录，而是把会话压缩成更容易检索的记忆片段。这样后续需要时，可以通过语义搜索把相关上下文找回来。&lt;/p&gt;
&lt;h2 id=&#34;工作方式&#34;&gt;工作方式
&lt;/h2&gt;&lt;p&gt;从 README 的设计看，&lt;code&gt;Claude-Mem&lt;/code&gt; 主要由几部分组成。&lt;/p&gt;
&lt;p&gt;第一部分是 hooks。&lt;/p&gt;
&lt;p&gt;它会接入 Claude Code 的会话流程，在合适的时机捕获会话数据。&lt;/p&gt;
&lt;p&gt;第二部分是后台 worker。&lt;/p&gt;
&lt;p&gt;worker 负责把原始会话内容处理成更短、更可检索的记忆。&lt;/p&gt;
&lt;p&gt;第三部分是本地存储。&lt;/p&gt;
&lt;p&gt;项目使用 &lt;code&gt;SQLite&lt;/code&gt; 保存结构化元数据，用 &lt;code&gt;Chroma&lt;/code&gt; 保存向量索引。这样既能保留会话记录的基本信息，也能支持语义检索。&lt;/p&gt;
&lt;p&gt;第四部分是 &lt;code&gt;mem-search&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;这是给 Claude Code 使用的查询入口。需要找回旧上下文时，可以通过它搜索相关记忆。&lt;/p&gt;
&lt;p&gt;整体流程可以理解为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Claude Code 会话产生内容&lt;/li&gt;
&lt;li&gt;hooks 捕获会话数据&lt;/li&gt;
&lt;li&gt;worker 异步压缩和整理&lt;/li&gt;
&lt;li&gt;记忆写入 SQLite 与 Chroma&lt;/li&gt;
&lt;li&gt;后续通过 &lt;code&gt;mem-search&lt;/code&gt; 检索&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;适合什么场景&#34;&gt;适合什么场景
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 适合长期项目，而不是一次性小任务。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;一个仓库持续开发很多天&lt;/li&gt;
&lt;li&gt;代码结构复杂，背景说明很多&lt;/li&gt;
&lt;li&gt;需要记住项目约定、命名习惯和架构选择&lt;/li&gt;
&lt;li&gt;经常让 Claude Code 修 Bug、写功能、整理文档&lt;/li&gt;
&lt;li&gt;希望 AI 能记住“之前为什么这么改”&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是临时让 Claude Code 改一行代码，长期记忆意义不大。&lt;br&gt;
但如果你把 Claude Code 当作长期协作者，它就会变得有用。&lt;/p&gt;
&lt;h2 id=&#34;安装和启动&#34;&gt;安装和启动
&lt;/h2&gt;&lt;p&gt;README 中给出的安装方式很直接：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install -g claude-mem
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem install
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;启动时可以使用：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;查看状态：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem status
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果需要停止：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude-mem stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这些命令背后的目标，是把记忆系统作为一个长期运行的本地服务接到 Claude Code 工作流里。&lt;/p&gt;
&lt;h2 id=&#34;mem-search-怎么用&#34;&gt;&lt;code&gt;mem-search&lt;/code&gt; 怎么用
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;mem-search&lt;/code&gt; 是找回记忆的关键入口。&lt;/p&gt;
&lt;p&gt;它的用途不是替代普通搜索，而是让 Claude Code 能按语义查询过去会话中的内容。&lt;/p&gt;
&lt;p&gt;比如你可以让 Claude Code 查询：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;某个模块之前为什么这样设计&lt;/li&gt;
&lt;li&gt;某个 Bug 当时怎么排查&lt;/li&gt;
&lt;li&gt;项目里约定的命名规则&lt;/li&gt;
&lt;li&gt;之前讨论过的技术取舍&lt;/li&gt;
&lt;li&gt;某次重构的背景原因&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种查询和简单关键词搜索不同。&lt;br&gt;
如果记忆压缩和向量索引做得好，即使你不记得原话，也能找回相近语义的内容。&lt;/p&gt;
&lt;h2 id=&#34;和普通项目文档有什么区别&#34;&gt;和普通项目文档有什么区别
&lt;/h2&gt;&lt;p&gt;项目文档适合记录稳定结论。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;架构说明&lt;/li&gt;
&lt;li&gt;部署流程&lt;/li&gt;
&lt;li&gt;API 约定&lt;/li&gt;
&lt;li&gt;数据库结构&lt;/li&gt;
&lt;li&gt;开发规范&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 更适合记录会话过程中产生的上下文。&lt;/p&gt;
&lt;p&gt;比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;为什么某个方案被放弃&lt;/li&gt;
&lt;li&gt;某个临时问题怎么绕过&lt;/li&gt;
&lt;li&gt;某个实现背后的讨论过程&lt;/li&gt;
&lt;li&gt;还没来得及写进文档的项目偏好&lt;/li&gt;
&lt;li&gt;多次对话里积累出的任务背景&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;两者不是互相替代。&lt;br&gt;
比较好的方式是：稳定知识写进项目文档，过程性上下文交给记忆系统辅助检索。&lt;/p&gt;
&lt;h2 id=&#34;使用时要注意什么&#34;&gt;使用时要注意什么
&lt;/h2&gt;&lt;p&gt;第一，长期记忆不是越多越好。&lt;/p&gt;
&lt;p&gt;如果所有对话都无差别保存，后续检索可能会变得嘈杂。真正有价值的是项目决策、实现背景、问题排查和长期偏好。&lt;/p&gt;
&lt;p&gt;第二，记忆不能替代代码和文档。&lt;/p&gt;
&lt;p&gt;AI 搜到的旧上下文只能作为参考。最终判断仍然要看当前代码、测试结果和最新需求。&lt;/p&gt;
&lt;p&gt;第三，隐私和本地数据要注意。&lt;/p&gt;
&lt;p&gt;既然它会保存会话内容，就要清楚哪些项目适合接入，哪些敏感信息不应该进入对话。&lt;/p&gt;
&lt;p&gt;第四，记忆系统需要维护。&lt;/p&gt;
&lt;p&gt;随着项目推进，旧记忆可能过时。过时的上下文如果被误用，反而会误导后续任务。&lt;/p&gt;
&lt;h2 id=&#34;为什么这类工具值得关注&#34;&gt;为什么这类工具值得关注
&lt;/h2&gt;&lt;p&gt;AI 编程工具正在从“单次问答”走向“长期协作”。&lt;/p&gt;
&lt;p&gt;单次问答里，模型只要回答当前问题就够了。&lt;br&gt;
长期协作里，它需要知道项目历史、之前的决策、团队偏好和已经踩过的坑。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 这类工具的意义就在这里：它把“记住上下文”从临时聊天能力，变成一个可以安装、运行、检索的本地系统。&lt;/p&gt;
&lt;p&gt;对真实工程项目来说，这比单纯让模型上下文窗口变长更实用。&lt;br&gt;
因为很多信息不是一次性塞进上下文就好，而是需要在合适的时候被找回来。&lt;/p&gt;
&lt;h2 id=&#34;适合谁尝试&#34;&gt;适合谁尝试
&lt;/h2&gt;&lt;p&gt;如果你符合下面几种情况，可以考虑试试：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;高频使用 Claude Code&lt;/li&gt;
&lt;li&gt;经常跨天处理同一个项目&lt;/li&gt;
&lt;li&gt;项目上下文比较复杂&lt;/li&gt;
&lt;li&gt;经常需要向 AI 重复解释背景&lt;/li&gt;
&lt;li&gt;想把会话里的经验沉淀下来&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔使用 Claude Code，或者项目很小，暂时不一定需要这类系统。&lt;/p&gt;
&lt;h2 id=&#34;参考&#34;&gt;参考
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thedotmack/claude-mem&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;thedotmack/claude-mem&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;最后一句&#34;&gt;最后一句
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Claude-Mem&lt;/code&gt; 的重点不是“保存聊天记录”，而是让 Claude Code 能在后续任务里找回有用上下文。&lt;/p&gt;
&lt;p&gt;当 AI 编程从一次性任务变成长期项目协作，记忆系统会越来越重要。&lt;br&gt;
它不能替代文档和测试，但可以减少重复解释，让 AI 更像一个了解项目历史的助手。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
