Skill: renguanjie/elite-memory-skill (version 1.0.1)

--- name: elite-memory description: 终极 AI 记忆系统 - WAL 协议 + 每日记忆 + 长期记忆 + GitHub 自动同步 + 飞书通知 homepage: https://github.com/renguanjie/ai-memory metadata: {"clawdbot":{"emoji":"🧠","requires":{"bins":["git","node"],"env":["FEISHU_USER_ID"]},"primaryEnv":"FEISHU_USER_ID"}} --- # Elite Memory - 终极 AI 记忆系统 为 AI Agent 打造的完整记忆管理系统，支持双层记忆架构、GitHub 自动同步、飞书通知。 ## 核心功能 ### 双层记忆架构 ``` 当日对话 → memory/YYYY-MM-DD-temp.md (临时记忆，实时写入) ↓ 次日 08:00 ↓ 分析临时记忆 → 提取关键点 ↓ ┌───────────┴───────────┐ ↓ ↓ memory/YYYY-MM-DD.md MEMORY.md (正式日记) (长期记忆提炼) ``` ### 自动化任务 | 时间 | 任务 | 脚本 | |------|------|------| | **每日 23:55** | Git 同步到 GitHub | `sync-memory-to-github.sh` | | **每日 08:00** | 读取昨日记忆 + 创建今日记忆 | `morning-memory-read.sh` | | **每次对话后** | 实时写入临时记忆 | 手动调用 `analyze-memory.sh` | ## 使用方法 ### 初始化记忆系统 ```bash # 1. 创建记忆目录 node scripts/init.mjs # 2. 配置 GitHub remote gh repo create ai-memory --private git remote add memory [REDACTED_SECRET]:username/ai-memory.git # 3. 配置飞书通知 (可选) export FEISHU_USER_ID="ou_xxxxx" ``` ### 记忆操作 ```bash # 分析对话并写入临时记忆 node scripts/analyze.mjs "对话内容" --topic "主题" # 手动同步到 GitHub node scripts/sync.mjs # 查看记忆状态 node scripts/status.mjs ``` ### 定时任务配置 ```bash # 添加到 crontab crontab -e # 每日 23:55 同步 55 23 * * * ~/.openclaw/workspace/scripts/sync-memory-to-github.sh # 每日 08:00 读取 0 8 * * * ~/.openclaw/workspace/scripts/morning-memory-read.sh ``` ## 记忆文件结构 ``` workspace/ ├── MEMORY.md # 长期记忆 (curated) ├── SESSION-STATE.md # 会话状态 └── memory/ ├── YYYY-MM-DD-temp.md # 临时记忆 (当日) ├── YYYY-MM-DD.md # 正式记忆 (归档后) ├── projects/ │ └── [project-name].md # 项目记忆 ├── skills/ │ └── [skill-name].md # 技能学习记忆 └── people/ └── [person-name].md # 人员记忆 ``` ## 飞书通知 配置 `FEISHU_USER_ID` 环境变量后，同步完成会自动发送通知： - ✅ 同步成功：包含变更详情 - ❌ 同步失败：包含错误信息 ## WAL 协议 (Write-Ahead Logging) 记忆写入规则： 1. **用户表达偏好** → 立即写入 `MEMORY.md` → 再回应 2. **用户做出决策** → 立即写入当日记忆 + `MEMORY.md` → 再回应 3. **发现错误/教训** → 立即写入当日记忆 → 再回应 4. **项目相关上下文** → 写入 `memory/projects/[project].md` ## 故障排查 ### 日志位置 ```bash # 同步日志 tail -f ~/.openclaw/workspace/logs/memory-sync.log # 晨间读取日志 tail -f ~/.openclaw/workspace/logs/memory-morning.log ``` ### 常见问题 **Q: Git 推送失败** A: 检查网络连接，运行 `git pull --rebase memory main` 后再试 **Q: 飞书通知不发送** A: 检查 `FEISHU_USER_ID` 是否配置正确 **Q: 记忆文件丢失** A: 从 GitHub 恢复：`git pull memory main` ## 相关资源 - GitHub 仓库：https://github.com/renguanjie/ai-memory - 文档：https://docs.openclaw.ai/memory

path: _meta.json
content: {
  "name": "elite-memory",
  "version": "1.0.0",
  "description": "终极 AI 记忆系统 - WAL 协议 + GitHub 自动同步 + 飞书通知",
  "author": "renguanjie",
  "license": "MIT",
  "homepage": "https://github.com/renguanjie/ai-memory",
  "clawdbot": {
    "emoji": "🧠",
    "requires": {
      "bins": ["git", "node"],
      "env": ["FEISHU_USER_ID"]
    },
    "primaryEnv": "FEISHU_USER_ID"
  }
}


path: install.sh
content: #!/bin/bash
# Elite Memory Skill 安装脚本

set -e

SKILL_NAME="elite-memory"
TARGET_DIR="${1:-$HOME/.openclaw/workspace/skills/$SKILL_NAME}"
SOURCE_DIR="$(cd "$(dirname "$0")" && pwd)"

echo "🧠 正在安装 Elite Memory 技能..."
echo "源目录：$SOURCE_DIR"
echo "目标目录：$TARGET_DIR"

# 创建目标目录
mkdir -p "$TARGET_DIR"

# 复制文件
cp -r "$SOURCE_DIR"/* "$TARGET_DIR/"

# 设置权限
chmod +x "$TARGET_DIR/scripts"/*.sh 2>/dev/null || true

echo ""
echo "✅ 安装完成！"
echo ""
echo "下一步配置:"
echo "1. 配置飞书通知 (可选):"
echo "   export FEISHU_USER_ID=\"ou_xxxxx\""
echo ""
echo "2. 配置 GitHub remote:"
echo "   cd ~/.openclaw/workspace"
echo "   gh repo create ai-memory --private"
echo "   git remote add memory [REDACTED_SECRET]:username/ai-memory.git"
echo ""
echo "3. 添加定时任务:"
echo "   crontab -e"
echo "   55 23 * * * ~/.openclaw/workspace/scripts/sync-memory-to-github.sh"
echo "   0 8 * * * ~/.openclaw/workspace/scripts/morning-memory-read.sh"
echo ""


path: templates/daily-memory.md
content: # {{DATE}} 记忆日志

**日期**: {{DATE_FULL}} {{WEEKDAY}}  
**时区**: Asia/Shanghai (GMT+8)

---

## 📝 今日重要事件

### 上午 (08:00-12:00)
- [待记录]

### 下午 (12:00-18:00)
- [待记录]

### 晚上 (18:00-24:00)
- [待记录]

---

## 🎯 今日决策

| 时间 | 决策 | 原因 |
|------|------|------|
| - | - | - |

---

## 💡 今日教训

| 问题 | 原因 | 改进 |
|------|------|------|
| - | - | - |

---

## 📋 待办事项

- [ ] [待添加]

---

## 🔗 相关链接

- [记忆仓库]: 待同步

---

*创建时间：{{TIMESTAMP}}*  
*最后更新：{{TIMESTAMP}}*  
*同步状态：⏳ 待同步 (下次：今日 23:55)*


path: scripts/analyze-memory.sh
content: #!/bin/bash
# 记忆分析归档脚本
# 每日 08:00 运行，分析前一天临时记忆 → 创建正式记忆 → 更新长期记忆

set -e

WORKSPACE=~/.openclaw/workspace
MEMORY_DIR=$WORKSPACE/memory
MEMORY_MD=$WORKSPACE/MEMORY.md
SESSION_STATE=$WORKSPACE/SESSION-STATE.md
YESTERDAY=$(date -v-1d +%Y-%m-%d)
TODAY=$(date +%Y-%m-%d)
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

echo "[$TIMESTAMP] 开始分析昨日记忆..."

# 检查临时记忆文件是否存在
TEMP_FILE=$MEMORY_DIR/${YESTERDAY}-temp.md
FORMAL_FILE=$MEMORY_DIR/${YESTERDAY}.md

if [ ! -f "$TEMP_FILE" ]; then
    echo "ℹ️  无昨日临时记忆文件，跳过分析"
    # 如果没有临时文件，检查是否已有正式文件
    if [ -f "$FORMAL_FILE" ]; then
        echo "✅ 昨日正式记忆文件已存在：${FORMAL_FILE}"
    else
        echo "⚠️  昨日无任何记忆文件"
    fi
    exit 0
fi

echo "📖 读取临时记忆：${TEMP_FILE}"

# 如果正式文件已存在，跳过创建
if [ -f "$FORMAL_FILE" ]; then
    echo "ℹ️  正式记忆文件已存在，仅更新长期记忆"
else
    # 创建正式记忆文件（简化版，实际需要 AI 分析）
    cat > "$FORMAL_FILE" << EOF
# ${YESTERDAY} 记忆日志

**日期**: $(date -v-1d +%Y 年 %-m 月 %-d 日) $(date -v-1d +%A)  
**时区**: Asia/Shanghai (GMT+8)

---

## 📝 今日重要事件

### 上午 (08:00-12:00)
- [待 AI 分析临时记忆后填充]

### 下午 (12:00-18:00)
- [待 AI 分析临时记忆后填充]

### 晚上 (18:00-24:00)
- [待 AI 分析临时记忆后填充]

---

## 🎯 今日决策

| 时间 | 决策 | 原因 |
|------|------|------|
| - | - | - |

---

## 💡 今日教训

| 问题 | 原因 | 改进 |
|------|------|------|
| - | - | - |

---

## 📋 待办事项

- [ ] [待 AI 分析临时记忆后填充]

---

## 🔗 相关链接

- [记忆仓库]: 待同步

---

*创建时间：${TIMESTAMP}*  
*最后更新：${TIMESTAMP}*  
*同步状态：⏳ 待同步 (下次：今日 23:55)*
EOF
    echo "✅ 创建正式记忆文件：${FORMAL_FILE}"
fi

# 更新 SESSION-STATE.md
if [ -f "$SESSION_STATE" ]; then
    echo "📝 更新 SESSION-STATE.md..."
    # 添加记忆分析完成标记
    sed -i.bak "s/## 记忆系统状态.*/## 记忆系统状态 (${TODAY} 更新)\n- ✅ 昨日记忆已分析归档/" "$SESSION_STATE"
    rm -f "${SESSION_STATE}.bak"
fi

# 从 GitHub 拉取最新记忆
if git -C $WORKSPACE remote get-url memory >/dev/null 2>&1; then
    echo "🔄 从 GitHub 拉取最新记忆..."
    cd $WORKSPACE
    git fetch memory main 2>/dev/null || true
    git merge memory/main --ff-only 2>/dev/null || echo "ℹ️  无需合并或已是最新"
fi

echo "✅ 记忆分析归档完成"
echo ""
echo "📋 下一步："
echo "   1. AI 读取 ${FORMAL_FILE} 和 ${TEMP_FILE}"
echo "   2. AI 分析临时记忆，填充正式记忆文件"
echo "   3. AI 提炼长期记忆，更新 MEMORY.md"
echo "   4. 今晚 23:55 自动同步到 GitHub"


path: scripts/sync-memory-to-github.sh
content: #!/bin/bash
# 记忆系统自动化脚本
# 每日 23:55 同步记忆到 GitHub 仓库
# 添加到 crontab: 55 23 * * * ~/.openclaw/workspace/scripts/sync-memory-to-github.sh

set -e

WORKSPACE=~/.openclaw/workspace
MEMORY_DIR=$WORKSPACE/memory
MEMORY_MD=$WORKSPACE/MEMORY.md
LOG_DIR=$WORKSPACE/logs
TODAY=$(date +%Y-%m-%d)
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
LOG_FILE=$LOG_DIR/memory-sync.log

# 确保日志目录存在
mkdir -p $LOG_DIR

# 日志函数
log() {
    echo "[$TIMESTAMP] $1" | tee -a $LOG_FILE
}

# 飞书通知函数
send_feishu_notification() {
    local status=$1
    local message=$2
    local feishu_user_id="${FEISHU_USER_ID:-}"
    
    if [ -z "$feishu_user_id" ]; then
        log "⚠️ 未配置 FEISHU_USER_ID，跳过飞书通知"
        return 0
    fi
    
    log "📤 发送飞书通知..."
    
    # 使用 openclaw message 命令发送
    if [ "$status" == "success" ]; then
        emoji="✅"
        title="记忆同步成功"
    else
        emoji="❌"
        title="记忆同步失败"
    fi
    
    # 构建通知内容
    notification="$emoji **$title**

📅 日期：$TIMESTAMP
📊 状态：$status

$message

---
*自动推送通知*"

    # 尝试使用 openclaw 命令发送
    if command -v openclaw >/dev/null 2>&1; then
        export PATH="/opt/homebrew/opt/node@22/bin:$PATH"
        openclaw message send --channel feishu --target "user:$feishu_user_id" --message "$notification" 2>/dev/null || log "⚠️ 飞书消息发送失败"
    else
        log "⚠️ openclaw 命令不可用，跳过飞书通知"
    fi
}

log "开始同步记忆到 GitHub..."

# 检查是否已配置 memory remote
if ! git -C $WORKSPACE remote get-url memory >/dev/null 2>&1; then
    error_msg="❌ 未配置 memory remote。请先运行：gh repo create ai-memory --private"
    log "$error_msg"
    send_feishu_notification "failure" "$error_msg"
    exit 1
fi

# 更新 MEMORY.md 的同步时间
if [ -f "$MEMORY_MD" ]; then
    sed -i.bak "s/\*同步状态：.*/\*同步状态：✅ 已同步 (上次：$TIMESTAMP)/" "$MEMORY_MD"
    sed -i.bak "s/\*下次同步：.*/\*下次同步：明日 23:55/" "$MEMORY_MD"
    rm -f "${MEMORY_MD}.bak"
fi

# 更新今日记忆文件的同步状态
TODAY_FILE=$MEMORY_DIR/${TODAY}.md
if [ -f "$TODAY_FILE" ]; then
    sed -i.bak "s/\*同步状态：.*/\*同步状态：✅ 已同步 (上次：$TIMESTAMP)/" "$TODAY_FILE"
    sed -i.bak "s/\*下次同步：.*/\*下次同步：明日 23:55/" "$TODAY_FILE"
    rm -f "${TODAY_FILE}.bak"
fi

# Git 操作
cd $WORKSPACE

git add -A
git commit -m "🧠 记忆同步 $(date '+%Y-%m-%d %H:%M')" --allow-empty 2>/dev/null || echo "无变更"

# 推送并捕获结果
push_result=0
git push memory main 2>&1 || {
    log "⚠️ 推送失败，尝试先拉取..."
    git pull --rebase memory main 2>/dev/null || push_result=1
    if [ $push_result -eq 0 ]; then
        git push memory main 2>/dev/null || push_result=1
    fi
}

if [ $push_result -eq 0 ]; then
    log "✅ 记忆同步完成"
    
    # 统计变更
    changed_files=$(git diff-tree --no-commit-id --name-only -r HEAD 2>/dev/null | wc -l | tr -d ' ')
    
    success_msg="**本次同步内容:**
- 临时记忆文件 (${TODAY}-temp.md)
- 正式记忆文件 (${TODAY}.md)
- 长期记忆 (MEMORY.md)
- SESSION-STATE.md

**同步详情:**
- 提交：$(git rev-parse --short HEAD 2>/dev/null || echo "N/A")
- 文件变更：${changed_files} 个
- GitHub: renguanjie/ai-memory"
    
    send_feishu_notification "success" "$success_msg"
else
    error_msg="⚠️ GitHub 推送失败，可能是网络问题。已本地提交，下次同步时重试。"
    log "$error_msg"
    send_feishu_notification "failure" "$error_msg"
fi


path: scripts/morning-memory-read.sh
content: # 每日早晨自动读取记忆脚本

# 每日 08:00 读取昨日记忆和长期记忆
# 添加到 crontab: 0 8 * * * ~/.openclaw/workspace/scripts/morning-memory-read.sh

#!/bin/bash
set -e

WORKSPACE=~/.openclaw/workspace
MEMORY_DIR=$WORKSPACE/memory
MEMORY_MD=$WORKSPACE/MEMORY.md
YESTERDAY=$(date -v-1d +%Y-%m-%d)
TODAY=$(date +%Y-%m-%d)
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')

echo "[$TIMESTAMP] 晨间记忆读取..."

# 创建今日记忆文件
TODAY_FILE=$MEMORY_DIR/${TODAY}.md
if [ ! -f "$TODAY_FILE" ]; then
    cat > "$TODAY_FILE" << EOF
# ${TODAY} 记忆日志

**日期**: $(date -v-1d +%Y 年 %-m 月 %-d 日) $(date -v-1d +%A)  
**时区**: Asia/Shanghai (GMT+8)

---

## 📝 今日重要事件

### 上午 (08:00-12:00)
- [待记录]

### 下午 (12:00-18:00)
- [待记录]

### 晚上 (18:00-24:00)
- [待记录]

---

## 🎯 今日决策

| 时间 | 决策 | 原因 |
|------|------|------|
| - | - | - |

---

## 💡 今日教训

| 问题 | 原因 | 改进 |
|------|------|------|
| - | - | - |

---

## 📋 待办事项

- [ ] [待添加]

---

## 🔗 相关链接

- [记忆仓库]: 待同步

---

*创建时间：${TIMESTAMP}*  
*最后更新：${TIMESTAMP}*  
*同步状态：⏳ 待同步 (下次：今日 23:55)*
EOF
    echo "✅ 创建今日记忆文件：${TODAY_FILE}"
fi

# 读取昨日记忆（如果有）
YESTERDAY_FILE=$MEMORY_DIR/${YESTERDAY}.md
if [ -f "$YESTERDAY_FILE" ]; then
    echo "📖 昨日记忆存在：${YESTERDAY_FILE}"
    # 可以在这里添加逻辑将昨日记忆摘要添加到今日文件
else
    echo "ℹ️  无昨日记忆文件"
fi

# 检查长期记忆
if [ -f "$MEMORY_MD" ]; then
    echo "📖 长期记忆存在：${MEMORY_MD}"
else
    echo "⚠️  长期记忆文件不存在"
fi

# 从 GitHub 拉取最新记忆（如果已配置）
if git -C $WORKSPACE remote get-url memory >/dev/null 2>&1; then
    echo "🔄 从 GitHub 拉取最新记忆..."
    cd $WORKSPACE
    git fetch memory main 2>/dev/null || true
    git merge memory/main --ff-only 2>/dev/null || echo "ℹ️  无需合并或已是最新"
fi

echo "✅ 晨间记忆读取完成"


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