给 Claude Code 装上记忆:claude-mem 一天冲进前 5

2026-05-27 14 预计阅读时间:1 分钟
来源:oschina.net AI 摘要 原文链接

免责声明:本文为 AI 摘要整理,建议结合原文阅读。摘要可能省略上下文、版本差异或边界条件,不作为官方说明。

预计阅读时间:10 分钟

用过 Claude Code 的人大概都经历过这种崩溃:昨天刚让它熟悉了整个项目的架构,今天开新会话,它又一脸茫然地问"这个项目用的什么框架?"——每次都要重新喂一遍上下文,像跟一个每天失忆的同事搭档。

thedotmack/claude-mem 就是冲着这个痛点来的。一个纯 TypeScript 写的"记忆插件",昨天还无人知晓,今天直接 +352 星杀进 GitHub 日榜前 5。

Claude Code 的记忆断层

Claude Code 本身是 Anthropic 官方的 CLI 编程助手,能力很强,但有一个结构性缺陷:会话之间没有持久记忆。每次 claude 启动都是一张白纸,之前聊过的项目约定、踩过的坑、你明确说过的偏好——全没了。

开发者常见的应对方式是手动维护 CLAUDE.md 文件,把项目规则写进去让 Claude Code 每次启动时读取。这能解决一部分问题,但维护成本高,而且它不会自动从交互中学习和积累。

claude-mem 的思路不同:它不是让你手动写规则文件,而是自动捕获并持久化交互中的关键信息,下次启动时自动注入上下文。

它大概怎么运作

根据项目定位和技术栈(TypeScript),claude-mem 的工作模式可以这样理解:

  1. 记录层——在每次 Claude Code 交互中,提取值得记住的信息:项目技术栈、你反复强调的编码偏好、已确认的架构决策、踩过的 bug 及解法。
  2. 存储层——把这些信息持久化到本地(大概率是 JSON/Markdown 文件,轻量且可读)。
  3. 注入层——下次 Claude Code 启动时,自动把累积的记忆作为上下文喂进去,省去重复说明。

本质上是在 CLI 和 LLM 之间加了一个"长期记忆中间件"。

快速上手试试

以下是基于 claude-mem 这类记忆插件思路的实践方式,具体参数以项目仓库 README 为准:

# 克隆并安装
git clone https://github.com/thedotmack/claude-mem.git
cd claude-mem
npm install

# 如果项目提供了全局安装方式,也可以直接
npm install -g claude-mem

安装后,核心一步是让 claude-mem 和 Claude Code 的启动流程挂钩。假设它通过配置文件指定记忆存储路径,可以这样设置:

# 在项目根目录初始化记忆配置
claude-mem init

# 这通常会在 ~/.claude-mem/ 或项目目录下生成配置文件
# 查看生成的配置
cat .claude-mem/config.json

配置文件可能类似这样(以下为示意结构,具体字段以实际项目为准):

{
  "memoryStore": "./.claude-mem/memories.json",
  "autoCapture": true,
  "injectOnStart": true,
  "categories": [
    "project-stack",
    "coding-preferences",
    "bug-fixes",
    "architecture-decisions"
  ]
}

然后正常启动 Claude Code,记忆插件会在后台工作:

# 启动 Claude Code(记忆插件自动挂钩)
claude

# 在交互中,你告诉它:
> "这个项目用 Next.js 14 + App Router,样式用 Tailwind,不要用 CSS modules"

# claude-mem 会自动把这条偏好记录下来
# 下次新会话启动时,它已经知道你的技术栈和样式偏好

如果你更倾向手动控制记忆的写入,也可以关闭自动捕获、用命令主动保存:

# 手动保存一条记忆
claude-mem save "数据库用 Prisma,不要裸写 SQL"

# 查看当前积累的所有记忆
claude-mem list

# 删除一条过时的记忆
claude-mem remove "旧架构决策:用 REST API"

自己造一个简易版:理解原理的最快路径

如果你想先不装插件、自己理解记忆注入的原理,最简方案就是程序化维护 CLAUDE.md。Claude Code 启动时会自动读取项目根目录的 CLAUDE.md,所以核心逻辑是:把交互中的重要结论自动追加到这个文件里。

一个极简的 Python 脚本演示这个思路:

#!/usr/bin/env python3
"""simple-mem.py: 极简版 Claude Code 记忆助手
把关键信息追加到项目的 CLAUDE.md,下次启动自动生效
"""
import sys
from datetime import datetime

MEMORY_FILE = "CLAUDE.md"

def add_memory(text: str, category: str = "general"):
    timestamp = datetime.now().strftime("%Y-%m-%d %H:%M")
    entry = f"\n## [{category}] {timestamp}\n- {text}\n"
    with open(MEMORY_FILE, "a") as f:
        f.write(entry)
    print(f"✅ 已记录到 {MEMORY_FILE}: {text}")

def list_memories():
    try:
        with open(MEMORY_FILE, "r") as f:
            print(f.read())
    except FileNotFoundError:
        print("暂无记忆文件,首次 add 会自动创建。")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("用法: python simple-mem.py add '你的记忆内容' --cat 项目偏好")
        print("用法: python simple-mem.py list")
        sys.exit(1)

    cmd = sys.argv[1]
    if cmd == "add":
        text = sys.argv[2] if len(sys.argv) > 2 else ""
        cat = "general"
        if "--cat" in sys.argv:
            cat = sys.argv[sys.argv.index("--cat") + 1]
        add_memory(text, cat)
    elif cmd == "list":
        list_memories()

运行方式:

# 记录一条项目偏好
python simple-mem.py add "测试框架用 Vitest,不要 Jest" --cat 编码偏好

# 记录一个踩坑经验
python simple-mem.py add "Prisma generate 前必须确保 schema.prisma 无语法错误" --cat bug-fixes

# 查看所有记忆
python simple-mem.py list

# 下次启动 claude,它会自动读取更新后的 CLAUDE.md
claude

这个脚本粗糙但管用——它揭示了 claude-mem 这类插件的核心价值:不是存储本身有多复杂,而是"自动捕获 + 自动注入"这个闭环。手动写 CLAUDE.md 能达到同样效果,但人总是懒的,自动化才是让它真正可依赖的关键。

装不装?什么时候最有价值

claude-mem 目前还是早期项目(一天 352 星说明热度高,但生产稳定性待验证),适合这几类人先试:

  • 长期维护单体项目的人——项目约定多、架构决策频繁,每次重新说明成本高。
  • 多项目切换的独立开发者——在不同项目间跳转时,记忆插件帮你快速恢复上下文。
  • 团队共享编码规范——如果记忆文件可以提交到 Git,全团队的 Claude Code 都能读取同一套偏好。

需要注意的边界:

  • 记忆文件会随时间膨胀,可能需要定期清理过时条目,否则注入的上下文反而干扰判断。
  • 涉及敏感信息(API key、内部架构细节)时,注意记忆文件的访问权限,别把 .claude-mem/ 目录意外提交到公开仓库。
  • 记忆注入是"软影响"——LLM 可能仍然忽略注入的偏好,这不是硬约束,更像是强烈提示。

一个简单的 .gitignore 保护:

# 如果记忆文件含敏感内容,不要提交
echo ".claude-mem/" >> .gitignore

# 如果记忆文件是团队共享的编码规范,则可以提交
# 但要 review 内容,确保没有敏感信息

AI 编程助手的能力边界正在快速推移,但"记不住之前说过什么"这个缺陷一直卡在日常体验的咽喉上。claude-mem 的思路不复杂——在会话间隙加一层持久化——但恰好打中了最疼的地方。值得装上玩几天,看看你的 Claude Code 是否终于不用每天重新认识你的项目了。


相关推荐