关于 health
用于诊断 Mem0 插件的技能,检查配置、身份解析、MCP 连接、记忆写入和会话跟踪。深度模式还会扫描记忆质量问题。
主要功能
- 01检查 API 密钥和身份信息
- 02测试 MCP 连接
- 03测试记忆写入与清理
- 04验证会话统计文件
- 05深度扫描记忆质量
适用场景
- 01排查 Mem0 插件配置问题
- 02验证记忆读写权限
- 03检查已存记忆的质量
MCP 相关
诊断时使用 Mem0 MCP 工具搜索、新增、检查和删除记忆;深度模式还会检索记忆进行分析。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mem0ai/ mem0 --skill health安装后在 Claude Code 中输入/health确认已加载。
详细介绍
Mem0 健康检查
运行 mem0 插件诊断检查。适用于故障排查。
执行
运行所有检查,然后显示单个摘要。不要在首次失败时停止。
检查 1:API 密钥
_KEY="${MEM0_API_KEY:-${CLAUDE_PLUGIN_OPTION_MEM0_API_KEY:-}}"
[ -n "$_KEY" ] && echo "${_KEY:0:6}..." || echo "NOT_SET"
- 如果为
NOT_SET:失败 —“未配置 API 密钥” - 如果已设置:通过 — 该命令只会打印前 6 个字符
检查 2:身份解析
使用插件自身的解析脚本解析身份,以匹配钩子的行为:
SCRIPT_DIR="${CLAUDE_PLUGIN_ROOT:-${CODEX_PLUGIN_ROOT:-${CURSOR_PLUGIN_ROOT:-}}}/scripts"
source "$SCRIPT_DIR/_identity.sh" 2>/dev/null
echo "user_id=${MEM0_RESOLVED_USER_ID:-}"
echo "project_id=${MEM0_PROJECT_ID:-}"
echo "branch=${MEM0_BRANCH:-}"
如果 CLAUDE_PLUGIN_ROOT 不可用,则回退到:
user_id:取自MEM0_USER_ID或$USERproject_id:取自MEM0_PROJECT_ID,或检查~/.mem0/project_map.json中$PWD对应的值branch:取自git branch --show-current
如果这三项均非空,则通过。如果任何一项回退到默认值,则发出警告。
检查 3:MCP 服务连通性
调用 search_memories,参数如下:
-
query="health check" -
filters={"AND": [{"user_id": "<active_user_id>"}, {"app_id": "<active_project_id>"}]} -
top_k=1 -
如果调用成功返回(即使结果为空):通过
-
如果出错:失败 — 显示错误消息
检查 4:记忆写入能力
调用 add_memory,参数如下:
text="Health check probe — safe to delete."user_id=<active_user_id>app_id=<active_project_id>metadata={"type": "health_check", "probe": true}infer=False
响应会返回 event_id(v3 写入为异步操作)。调用 get_event_status(event_id=<event_id>) 检查处理状态。
- 如果状态为
SUCCEEDED:通过 — 从事件结果中提取记忆 ID,然后调用delete_memory并传入该 ID 进行清理。 - 如果 5 秒后状态仍为
PENDING:通过(写入已接受,处理延迟) - 如果出错:失败 — 显示错误。
检查 5:会话统计跟踪器
检查会话统计文件是否存在且可读:
STATS_FILE="/tmp/mem0_session_stats_${USER}.json"
if [ -f "$STATS_FILE" ] && python3 -c "import json; json.load(open('$STATS_FILE'))" 2>/dev/null; then
echo "OK"
else
echo "FAIL"
fi
此文件由 SessionStart 钩子创建,并在整个会话期间由 PostToolUse 钩子更新。如果文件不存在,会话钩子可能尚未触发 — 请先发送一条消息,然后重新检查。
显示
## mem0 health
PASS API Key m0-dVe...
PASS Identity user=kartik, project=mem0, branch=main
PASS MCP Connection 142ms
PASS Write/Read write + delete OK
PASS Session Tracker stats file active
All checks passed.
如果任何检查失败,则添加 ## Troubleshooting 部分,并针对每项失败提供具体的修复步骤。
扩展模式:记忆质量分析
使用 --deep 调用时(例如 /mem0:health --deep),运行上述标准的 5 项检查,并且执行记忆质量扫描。
质量检查 1:重复项
调用 get_memories,参数为 filters={"AND": [{"user_id": "<active_user_id>"}, {"app_id": "<active_project_id>"}]}、page_size=200。比较同一 metadata.type 分组中的所有记忆对,找出文本高度重叠(共享名词/关键词 > 60%)的情况。报告:
Potential duplicates: <N> pairs
[mem0:<id1>] ≈ [mem0:<id2>] — both about "<shared topic>"
质量检查 2:过期记忆
标记符合以下条件的记忆:
metadata.type为session_state或compact_summary,且时间早于 90 天metadata.confidence< 0.3,且时间早于 30 天
Stale candidates: <N>
[mem0:<id>] — session_state, 142d old
质量检查 2b:低置信度记忆
标记 metadata.confidence < 0.5 的记忆(不考虑年龄)。与过期记忆分开报告:
Low-confidence memories: <N>
[mem0:<id>] — confidence=0.3, "<content preview>"
质量检查 3:矛盾
在每个 metadata.type 分组中,标记针对同一主题提出相反事实的记忆对。使用语义判断 — 查找否定模式、相互冲突的工具/框架选择或相反的决策。
Possible contradictions: <N>
[mem0:<idA>] vs [mem0:<idB>] — conflicting on "<topic>"
质量检查 4:孤立记忆
未设置 metadata.type,或 metadata.type 不属于 17 个已知编码类别的记忆。这些记忆很可能是在未正确添加标签的情况下写入的。
Untagged/orphan memories: <N>
质量摘要
## Memory Quality
Duplicates: <N> · Stale: <N> · Contradictions: <N> · Orphans: <N>
如果所有计数均为 0:Memory quality: clean.
如果有任意非零计数:追加 Run /mem0:dream to fix.
要修复 --deep 发现的问题,请运行 /mem0:dream 以自动整合(合并、精简、解决冲突)。