diff --git a/scripts/context_memory_guard.py b/scripts/context_memory_guard.py index 41bb8af..3cb16a3 100755 --- a/scripts/context_memory_guard.py +++ b/scripts/context_memory_guard.py @@ -9,9 +9,6 @@ import re import os from datetime import datetime -# 加载环境变量 -os.environ["SILICONFLOW_API_KEY"] = "sk-fpjdtxbxrhtekshircjhegstloxaodriekotjdyzzktyegcl" - def log(msg): timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") print(f"[{timestamp}] {msg}") @@ -58,14 +55,8 @@ def main(): log("✅ 文件记忆已更新") - # 2. 保存向量记忆 - os.chdir(os.path.expanduser("~/openclaw-memory-vector")) - subprocess.run([ - "python3", "memory_cli.py", "add", - f"【自动保存】上下文使用量达到 {max_usage}%,系统自动保存记忆。时间: {timestamp}", - "--tag", "auto-save,context-90" - ], capture_output=True, text=True) - log("✅ 向量记忆已保存") + # 2. 文件记忆已保存(向量记忆统一走 main.sqlite) + log("✅ 文件记忆已更新") log("✅ 记忆保存完成") else: diff --git a/scripts/context_memory_guard.sh b/scripts/context_memory_guard.sh index d194465..9a0950c 100755 --- a/scripts/context_memory_guard.sh +++ b/scripts/context_memory_guard.sh @@ -6,9 +6,6 @@ set -e -# 加载环境变量 -export SILICONFLOW_API_KEY="sk-fpjdtxbxrhtekshircjhegstloxaodriekotjdyzzktyegcl" - LOG_FILE="/tmp/openclaw/context_memory_check.log" TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') @@ -65,11 +62,8 @@ if [ "$MAX_USAGE" -ge 90 ]; then echo -e "\n## 🔄 上下文自动保存 (${TIMESTAMP})\n\n**触发原因**: 上下文使用量达到 ${MAX_USAGE}%\n" >> "$MEMORY_FILE" log "✅ 文件记忆已更新" - # 2. 保存向量记忆 - cd ~/openclaw-memory-vector && python3 memory_cli.py add \ - "【自动保存】上下文使用量达到 ${MAX_USAGE}%,系统自动保存记忆。时间: ${TIMESTAMP}" \ - --tag "auto-save,context-90" 2>&1 | tail -1 - log "✅ 向量记忆已保存" + # 2. 文件记忆已保存(向量记忆统一走 main.sqlite) + log "✅ 文件记忆已更新" log "✅ 记忆保存完成" else diff --git a/vector_memory/backup_main_sqlite.sh b/vector_memory/backup_main_sqlite.sh new file mode 100755 index 0000000..4d19d91 --- /dev/null +++ b/vector_memory/backup_main_sqlite.sh @@ -0,0 +1,55 @@ +#!/bin/bash +# ============================================================================ +# 向量记忆增量备份脚本 +# 策略:每日一个快照,通过 rsync --link-dest 指向前一天快照 +# 文件内容未变时使用硬链接(不占额外空间) +# 保留最近 14 个每日快照 +# ============================================================================ + +set -e + +SOURCE="$HOME/.openclaw/memory/main.sqlite" +BACKUP_DIR="$HOME/openclaw-backup/vector_memory/snapshots" +TODAY=$(date +%Y%m%d) +YESTERDAY=$(date -d "yesterday" +%Y%m%d) +SNAPSHOT_TODAY="$BACKUP_DIR/$TODAY" +SNAPSHOT_YESTERDAY="$BACKUP_DIR/$YESTERDAY" + +mkdir -p "$BACKUP_DIR" + +log() { + echo "[$(date '+%Y-%m-%d %H:%M:%S')] [vector_backup] $1" +} + +# ---- 检查源文件 ---- +if [ ! -f "$SOURCE" ]; then + log "ERROR: 源文件不存在 $SOURCE" + exit 1 +fi + +# ---- 执行增量/全量备份 ---- +if [ -n "$SNAPSHOT_YESTERDAY" ] && [ -d "$SNAPSHOT_YESTERDAY" ]; then + # 有昨天快照:增量硬链接 + mkdir -p "$SNAPSHOT_TODAY" + rsync -a --link-dest="$SNAPSHOT_YESTERDAY" "$SOURCE" "$SNAPSHOT_TODAY/main.sqlite" + log "增量备份完成 → $SNAPSHOT_TODAY/main.sqlite ($(du -h "$SNAPSHOT_TODAY/main.sqlite" | cut -f1))" +else + # 无昨天快照(首次或跨天后首次):全量 + mkdir -p "$SNAPSHOT_TODAY" + cp "$SOURCE" "$SNAPSHOT_TODAY/main.sqlite" + log "全量备份完成 → $SNAPSHOT_TODAY/main.sqlite ($(du -h "$SNAPSHOT_TODAY/main.sqlite" | cut -f1))" +fi + +# ---- 清理 14 天前的快照 ---- +SNAP_COUNT=$(ls -d "$BACKUP_DIR"/20* 2>/dev/null | wc -l) +if [ "$SNAP_COUNT" -gt 14 ]; then + ls -dt "$BACKUP_DIR"/20* | tail -n +15 | xargs -r rm -rf + log "已清理 14 天前的旧快照" +fi + +# ---- 打印当前快照列表 ---- +log "当前每日快照(共 $SNAP_COUNT 个):" +for d in $(ls -dt "$BACKUP_DIR"/20* 2>/dev/null); do + log " $(basename $d) ($(du -sh "$d" | cut -f1))" +done +log "总磁盘占用: $(du -sh "$BACKUP_DIR" | cut -f1)" diff --git a/vector_memory/chroma_20260328.tar.gz b/vector_memory/chroma_20260328.tar.gz new file mode 100644 index 0000000..b849f45 Binary files /dev/null and b/vector_memory/chroma_20260328.tar.gz differ diff --git a/vector_memory/main_20260328.sqlite b/vector_memory/main_20260328.sqlite new file mode 100644 index 0000000..42d9dc7 Binary files /dev/null and b/vector_memory/main_20260328.sqlite differ diff --git a/vector_memory/snapshots/20260327/main.sqlite b/vector_memory/snapshots/20260327/main.sqlite new file mode 100644 index 0000000..42d9dc7 Binary files /dev/null and b/vector_memory/snapshots/20260327/main.sqlite differ diff --git a/vector_memory/snapshots/20260328/main.sqlite b/vector_memory/snapshots/20260328/main.sqlite new file mode 100644 index 0000000..42d9dc7 Binary files /dev/null and b/vector_memory/snapshots/20260328/main.sqlite differ diff --git a/workspace/skills/stock-monitor-skill/scripts/__pycache__/analyser.cpython-310.pyc b/workspace/skills/stock-monitor-skill/scripts/__pycache__/analyser.cpython-310.pyc deleted file mode 100644 index c2c3e44..0000000 Binary files a/workspace/skills/stock-monitor-skill/scripts/__pycache__/analyser.cpython-310.pyc and /dev/null differ diff --git a/workspace/skills/stock-monitor-skill/scripts/__pycache__/monitor.cpython-310.pyc b/workspace/skills/stock-monitor-skill/scripts/__pycache__/monitor.cpython-310.pyc deleted file mode 100644 index ae67705..0000000 Binary files a/workspace/skills/stock-monitor-skill/scripts/__pycache__/monitor.cpython-310.pyc and /dev/null differ diff --git a/workspace_backup_20260327/skills/stock-monitor-skill/scripts/__pycache__/analyser.cpython-310.pyc b/workspace_backup_20260327/skills/stock-monitor-skill/scripts/__pycache__/analyser.cpython-310.pyc deleted file mode 100644 index f3a7bca..0000000 Binary files a/workspace_backup_20260327/skills/stock-monitor-skill/scripts/__pycache__/analyser.cpython-310.pyc and /dev/null differ diff --git a/workspace_backup_20260327/skills/stock-monitor-skill/scripts/__pycache__/monitor.cpython-310.pyc b/workspace_backup_20260327/skills/stock-monitor-skill/scripts/__pycache__/monitor.cpython-310.pyc deleted file mode 100644 index 7f94d39..0000000 Binary files a/workspace_backup_20260327/skills/stock-monitor-skill/scripts/__pycache__/monitor.cpython-310.pyc and /dev/null differ