Skill: nikol-coder/memory-mi (version 1.0.0)

--- name: memory-mi description: 个性化记忆框架，提供用户记忆的自动存储和检索。CRITICAL:每轮对话必须执行检索和保存，不可跳过。Use when:(1) 用户对话需要历史上下文, (2) 需要记住用户偏好/身份, (3) 多轮对话需要连续性。 allowed-tools: Bash(python3:*) --- # 🧠 Memory MI ⚠️ **CRITICAL - 必须执行的流程** 每轮对话必须按以下顺序执行，**不可跳过任何步骤**： ``` [用户输入] ↓ Step 1: [MUST] 执行 memory_search.py 检索记忆 ↓ Step 2: 生成回复（融入记忆） ↓ Step 3: [MUST] 执行 memory_daemon.py queue 保存记忆（后台） ↓ Step 4: 显示回复给用户 ``` **自检清单**（每轮对话后确认）： - [ ] 是否执行了 `memory_search.py`？ - [ ] 是否执行了 `memory_daemon.py queue`？ - [ ] 是否看到 "已加入保存队列"？ --- ## 🚀 快速使用 ### 1. 确保守护进程已启动 ```bash # 检查状态 python3 scripts/memory_daemon.py status # 如未启动，执行 python3 scripts/memory_daemon.py start ``` ### 2. 检索记忆（同步，必须等待） ```bash python3 scripts/memory_search.py --user-id "<USER_ID>" --query "<用户输入>" ``` **示例**: ```bash python3 scripts/memory_search.py \ --user-id "ou_c4f3245c6fca9" \ --query "我想喝奶茶" ``` **输出**: ```json { "success": true, "memories": { "l0": "用户喜欢少糖奶茶", "l1": "用户是比亚迪车主" } } ``` ### 3. 保存记忆（后台异步，立即返回） ```bash python3 scripts/memory_daemon.py queue \ --user-id "<USER_ID>" \ --query "<用户输入>" \ --response "<AI回复>" ``` **示例**: ```bash python3 scripts/memory_daemon.py queue \ --user-id "ou_c4f3245c6fca9" \ --query "我想喝少糖奶茶" \ --response "好的主人，记得要少糖哦～" ``` **输出**: ``` [OK] 已加入保存队列 ``` --- ## 👤 用户ID获取 从 `inbound_meta` 中提取： ```python user_id = inbound_meta.get("sender_id") or inbound_meta.get("user_id") ``` 各平台字段： | 平台 | 字段 | 示例 | |------|------|------| | Feishu | `sender_id` | `ou_c4f3245c6fca9` | | Discord | `sender_id` | `123456789012345678` | | Telegram | `sender_id` | `123456789` | --- ## 🔄 完整对话示例 ### 场景：用户点奶茶 **用户输入**: "我刚点了杯奶茶" **AI 内部执行**: ```bash # Step 1: 检索记忆 USER_ID="ou_c4f3245c6fca9" QUERY="我刚点了杯奶茶" MEMORIES=$(python3 scripts/memory_search.py \ --user-id "$USER_ID" \ --query "$QUERY") # 返回: {"memories": {"l0": "用户喜欢少糖"}} # Step 2: 生成回复（融入记忆） RESPONSE="哈哈，主人你这奶茶频率可以啊！记得要少糖哦～" # Step 3: 后台保存（立即返回） python3 scripts/memory_daemon.py queue \ --user-id "$USER_ID" \ --query "$QUERY" \ --response "$RESPONSE" # 输出: [OK] 已加入保存队列 # Step 4: 显示回复给用户 echo "$RESPONSE" ``` **用户看到**: "哈哈，主人你这奶茶频率可以啊！记得要少糖哦～" ✅ **后台处理**: 守护进程自动将记忆写入文件 --- ## 📊 性能对比 | 步骤 | 方式 | 耗时 | 是否阻塞 | |------|------|------|----------| | 检索 | `memory_search.py` | 0.1-0.3s | ✅ 必须等待 | | 保存 | `memory_add.py` (同步) | 0.5-2s | ❌ 不推荐 | | 保存 | `memory_add_async.py` | 0.08s | ✅ 推荐 | | 保存 | `memory_daemon.py queue` | **0.05s** | ✅ **最推荐** | --- ## 📋 列出已有记忆（memory_list） 用于查看用户所有的对话记忆，支持按层级统计和限制返回数量。 ### 基本用法 ```bash python3 scripts/memory_list.py --user-id "<USER_ID>" ``` **示例**: ```bash # 列出所有记忆 python3 scripts/memory_list.py \ --user-id "ou_c4f3245c6fca9" # 只列出 L2 长期偏好 python3 scripts/memory_list.py \ --user-id "<USER_ID>" \ --level l2 # 只列出最近的 5 条 L1 记忆 python3 scripts/memory_list.py \ --user-id "<USER_ID>" \ --level l1 \ --limit 5 ``` ### 输出格式（JSON） ```json { "success": true, "user_id": "ou_c4f3245c6fca9", "memories": [ { "line_num": 1, "level": "l2", "query": "我喜欢喝拿铁", "response": "记住了，你喜欢拿铁咖啡～", "timestamp": "2026-03-09T10:30:00" } ], "count": 15, "by_level": { "l0": 5, "l1": 3, "l2": 7 }, "filtered_by_level": "l2", "returned": 10 } ``` ### 参数说明 | 参数 | 说明 | 默认值 | |------|------|--------| | `--user-id` | 用户唯一标识（必需） | - | | `--level` | 记忆层级过滤：`l0`/`l1`/`l2` | 全部 | | `--limit` | 限制返回的记录数 | 全部 | | `--format` | 输出格式：`json` 或 `text` | `json` | | `--data-path` | 记忆数据目录 | `~/.openclaw/workspace/skills/memory-mi/data` | ### 层级说明 | 层级 | 含义 | 示例 | |------|------|------| | `l0` | 短期事实 | 具体事件、问答记录 | | `l1` | 用户画像 | 身份、职业、个人信息 | | `l2` | 长期偏好 | 喜欢/讨厌/习惯/偏好 | ### 文本格式输出 ```bash python3 scripts/memory_list.py --user-id "<USER_ID>" --format text ``` 输出示例： ``` ============================================================ 用户记忆列表 - ou_c4f3245c6fca9c724dc9eeababb4a523 ============================================================ 总记录数: 15 - L0 (短期事实): 5 条 - L1 (用户画像): 3 条 - L2 (长期偏好): 7 条 [1] [L2] #1 Q: 我喜欢喝拿铁 A: 记住了，你喜欢拿铁咖啡～ ``` --- ## 🔧 故障排查 ### 1. 检查守护进程状态 ```bash python3 scripts/memory_daemon.py status ``` ### 2. 重启守护进程 ```bash python3 scripts/memory_daemon.py stop python3 scripts/memory_daemon.py start ``` ### 3. 查看日志 ```bash cat ~/.openclaw/memory_daemon.log ``` ### 4. 验证保存结果 ```bash cat data/<user_id>.jsonl ``` --- ## ⚠️ 重要提醒 1. **守护进程必须先启动**，否则 `queue` 命令会失败 2. **每轮对话必须执行保存**，不可遗漏 3. **用户ID必须正确**，确保多用户隔离 4. **保存后立即返回**，不等待后台完成 --- ## 📖 更多信息 - 守护进程: `scripts/memory_daemon.py` - 搜索记忆: `scripts/memory_search.py` - 列出记忆: `scripts/memory_list.py`

path: 安装教程.md
content: 执行 install.sh 安装依赖即可

path: xiugai/install.sh
content: #!/bin/bash

# Memory-Mi 配置文件安装脚本
# 功能：将技能配置文件复制到 OpenClaw Workspace

set -e  # 遇到错误立即退出

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 路径定义
SKILL_DIR="$HOME/.openclaw/workspace/skills/memory-mi/xiugai"
WORKSPACE_DIR="$HOME/.openclaw/workspace"

# 文件列表
FILES=("AGENTS.md" "SOUL.md" "start.sh")

echo -e "${YELLOW}开始安装 Memory-Mi 配置文件...${NC}"

# 检查源目录是否存在
if [ ! -d "$SKILL_DIR" ]; then
    echo -e "${RED}错误：源目录不存在: $SKILL_DIR${NC}"
    echo "请确认 memory-mi 技能已正确安装"
    exit 1
fi

# 检查目标目录是否存在
if [ ! -d "$WORKSPACE_DIR" ]; then
    echo -e "${RED}错误：OpenClaw workspace 目录不存在: $WORKSPACE_DIR${NC}"
    exit 1
fi

# 备份已有文件（如果存在）
echo -e "${YELLOW}检查现有配置...${NC}"
BACKUP_DIR="$WORKSPACE_DIR/backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"

for file in "${FILES[@]}"; do
    if [ -f "$WORKSPACE_DIR/$file" ]; then
        echo -e "  备份: $file → backup/"
        cp "$WORKSPACE_DIR/$file" "$BACKUP_DIR/"
    fi
done

# 执行复制
echo -e "${YELLOW}复制新配置...${NC}"
for file in "${FILES[@]}"; do
    source_file="$SKILL_DIR/$file"
    target_file="$WORKSPACE_DIR/$file"
    
    if [ -f "$source_file" ]; then
        cp "$source_file" "$target_file"
        echo -e "${GREEN}✓ $file 已安装${NC}"
    else
        echo -e "${RED}✗ $file 不存在于 $SKILL_DIR${NC}"
        exit 1
    fi
done

# 设置权限（start.sh 需要可执行）
if [ -f "$WORKSPACE_DIR/start.sh" ]; then
    chmod +x "$WORKSPACE_DIR/start.sh"
    echo -e "${GREEN}✓ start.sh 已设置为可执行${NC}"
fi

echo -e "\n${GREEN}=== 安装完成 ===${NC}"
echo -e "配置文件路径: $WORKSPACE_DIR"
if [ -d "$BACKUP_DIR" ] && [ "$(ls -A $BACKUP_DIR)" ]; then
    echo -e "原配置备份: $BACKUP_DIR"
fi
echo -e "\n${YELLOW}请执行以下命令重启 OpenClaw:${NC}"
echo -e "  openclaw gateway restart"

Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: suspicious | SkillSpector: suspicious (CRITICAL)