关于 import
将导出的记忆导入当前项目的 Mem0 技能。也支持从多种 AI 编码工具的配置文件及 Claude Code 原生 MEMORY.md 导入记忆。
主要功能
- 01解析 Mem0 导出文件
- 02连同元数据导入记录
- 03导入指定编码工具的配置
- 04导入 Claude Code MEMORY.md
适用场景
- 01从导出文件恢复记忆
- 02迁移受支持编码工具中的规则
- 03将 Claude Code 记忆导入 Mem0
MCP 相关
调用 add_memory 等 Mem0 MCP 工具,将导入的记录写入项目。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mem0ai/ mem0 --skill import安装后在 Claude Code 中输入/import确认已加载。
详细介绍
Mem0 导入
将记忆从 mem0 导出文件导入当前项目。
执行
步骤 1:确定要导入的导出文件
如果用户在 /mem0:import <filename> 中提供了文件名参数,请使用该文件。
否则,列出当前目录中名称包含 mem0-export 的 .md 文件:
ls -1 *.md 2>/dev/null | grep mem0-export || echo "No export files found"
如果找到多个文件,请询问用户要导入哪一个。如果没有找到,请输出:
No mem0-export files found in the current directory.
Run /mem0:export first, or provide the filename: /mem0:import <path-to-file>
步骤 2:解析导出文件
确定插件根目录。根据当前平台使用相应的变量:
- Claude Code:
${CLAUDE_PLUGIN_ROOT} - Codex:
${CODEX_PLUGIN_ROOT} - Cursor:
${CURSOR_PLUGIN_ROOT}
运行解析器脚本,将记忆记录提取为 JSON:
python3 "<PLUGIN_ROOT>/scripts/parse_export_file.py" "<path-to-export-file>"
这会输出一个 JSON 数组,其中每个元素包含:
id— 原始记忆 ID(仅供参考;导入时会分配新 ID)type— 元数据类型confidence— 元数据置信度值branch— 元数据分支files— 相关文件列表categories— 类别列表content— 记忆文本
如果脚本失败或输出 [],请输出:
Failed to parse <filename> or file contains no valid memory blocks.
并停止。
步骤 3:解析身份信息
确定当前身份:
user_id:取自MEM0_USER_ID环境变量,否则取$USER,再否则使用"default"project_id(用作app_id):取自MEM0_PROJECT_ID环境变量,或通过项目解析器获取
步骤 4:导入每条记忆
对于解析后的 JSON 数组中的每条记录,调用 add_memory,并传入:
text="<record.content>"user_id=<active_user_id>app_id=<active_project_id>metadata={"type": "<record.type>"(如果非空)"confidence": "<record.confidence>"(如果非空)"branch": "<record.branch>"(如果非空)"files": <record.files>(如果非空,则传入该列表)"source": "import"}
infer=False
注意:
- 不要传入原始
id——平台会分配新 ID。 - 跳过
content为空的记录(解析器已过滤这些记录,但仍需做好防护)。 - 即使个别记录导入失败,也要继续导入;记录成功数量。
步骤 5:打印结果
Imported <N> memories into project <project_id>
其中 <N> 为成功导入的记忆数量。
如果有失败项:
Imported <N>/<total> memories into project <project_id> (<failed> failed)
从其他 AI 工具导入(--tools)
使用 --tools 调用时(例如 /mem0:import --tools),检测并从其他 AI 工具的配置文件导入:
支持的工具
| 工具 | 文件/目录 |
|---|---|
| Cursor | .cursorrules |
| GitHub Copilot | .github/copilot-instructions.md |
| Cline | memory-bank/(包含 .md 文件的目录) |
| Continue | .continue/rules.md |
T1:检测
test -f .cursorrules && echo "cursor: .cursorrules"
test -f .github/copilot-instructions.md && echo "copilot: .github/copilot-instructions.md"
test -d memory-bank/ && echo "cline: memory-bank/"
test -f .continue/rules.md && echo "continue: .continue/rules.md"
T2:询问用户
列出找到的文件,并询问要导入哪些文件(输入编号,以逗号分隔,或输入 "all")。 如果没有找到:
No competing tool configuration files found.
Checked: .cursorrules, .github/copilot-instructions.md, memory-bank/, .continue/rules.md
T3:运行导入
对于每个选定的工具:
python3 "<PLUGIN_ROOT>/scripts/import_competing_tools.py" <tool> --path <file>
工具:cursorrules、copilot、cline、continue。
T4:报告
Imported <N> memories into <project_id> (cursor: <N>, copilot: <N>)
注意:使用 infer=False,标记为 metadata.source=<tool>-import,跳过少于 50 个字符的章节,将超过 10k 个字符的文本块截断,可安全重复运行(去重机制会处理重复内容)。
导入 Claude Code 的原生 MEMORY.md
使用 Claude Code 原生 MEMORY.md 文件的路径调用时(通常为
~/.claude/projects/<proj-key>/memory/MEMORY.md),或当 on_session_start.sh
检测到原生自动记忆且用户选择导入时:
- 读取文件。文件包含以换行符分隔的记忆条目(每行一条事实,
有时带有
-项目符号前缀)。 - 按非空行拆分。每行成为一条记忆。
- 跳过少于 20 个字符或仅为标题(
#)的行。 - 对每一行,调用
add_memory,并传入:text="<line>"user_id=<active_user_id>app_id=<active_project_id>metadata={"type": "task_learning", "source": "memory-md-import", "confidence": 0.8}infer=False
- 报告:
已从 MEMORY.md 导入 <N> 条记忆到项目 <project_id> - 建议禁用原生自动记忆:
To avoid duplicate memory systems, add to ~/.claude/settings.json: "autoMemoryEnabled": false
这可弥补用户一直使用 Claude Code 原生记忆、随后切换到 mem0 时的冷启动空档。
错误处理
- 如果在
<PLUGIN_ROOT>/scripts/parse_export_file.py找不到解析器脚本,打印错误并停止。 - 如果
add_memory调用持续失败(例如,身份验证错误),报告问题并尽早停止。