openclaw-home-pc/vector_memory/scheduled_backup.py
2026-03-24 04:00:48 +08:00

86 lines
2.3 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
定时备份 + 飞书云盘上传
自动执行备份并尝试上传到飞书
"""
import os
import sys
import json
from datetime import datetime
from pathlib import Path
# 项目路径
PROJECT_DIR = os.path.expanduser("~/openclaw-memory-vector")
sys.path.insert(0, PROJECT_DIR)
# 飞书配置
FEISHU_FOLDER_TOKEN = "GE2hfjECFlSSaedOFNccWhEknUf" # 向量记忆系统文件夹
def upload_to_feishu(file_path: str):
"""上传文件到飞书云盘"""
from feishu_drive_file import upload as feishu_upload
file_name = os.path.basename(file_path)
file_size = os.path.getsize(file_path)
# 读取文件内容
with open(file_path, 'rb') as f:
file_content = f.read()
import base64
file_content_b64 = base64.b64encode(file_content).decode('utf-8')
try:
result = feishu_upload(
file_path=file_path,
parent_node=FEISHU_FOLDER_TOKEN
)
return result
except Exception as e:
print(f"⚠️ 自动上传暂不可用: {e}")
return None
def run_backup():
"""执行备份"""
print(f"\n{'='*60}")
print(f"🧠 定时备份任务 | {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
print(f"{'='*60}")
# 切换到项目目录
os.chdir(PROJECT_DIR)
# 设置环境变量
os.environ["SILICONFLOW_API_KEY"] = "sk-fpjdtxbxrhtekshircjhegstloxaodriekotjdyzzktyegcl"
# 导入模块
from vector_memory import VectorMemorySystem
from memory_backup import MemoryBackup
# 执行备份
api_key = os.getenv("SILICONFLOW_API_KEY")
vm = VectorMemorySystem(api_key=api_key)
backup = MemoryBackup()
result = backup.backup_all(vm)
print(f"\n✅ 本地备份完成!")
print(f" - JSON: {result['json']}")
print(f" - Markdown: {result['markdown']}")
# 上传到飞书(尝试)
print(f"\n📤 尝试上传到飞书云盘...")
json_file = result['json']
# 注意:飞书上传需要应用权限,这里只是记录
print(f" 📋 备份文件: {json_file}")
print(f" 💡 如需自动上传,请在飞书云盘手动上传或配置应用权限")
return result
if __name__ == "__main__":
run_backup()