96 lines
2.7 KiB
Python
96 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
向量记忆系统 - 飞书云盘同步脚本
|
|
功能:将本地备份自动上传到飞书云盘
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import json
|
|
import subprocess
|
|
from datetime import datetime
|
|
from pathlib import Path
|
|
|
|
# 飞书云盘配置
|
|
FOLDER_TOKEN = "C9jPf8MVwlvWgldZ7VHcHrLTnCf" # openclaw 文件夹
|
|
|
|
|
|
def get_latest_backup():
|
|
"""获取最新备份文件"""
|
|
backup_dir = Path("./backups")
|
|
if not backup_dir.exists():
|
|
return None
|
|
|
|
# 找最新的 JSON 备份
|
|
json_files = list(backup_dir.glob("memory_backup_*.json"))
|
|
if not json_files:
|
|
return None
|
|
|
|
return max(json_files, key=os.path.getmtime)
|
|
|
|
|
|
def upload_to_feishu(file_path: str):
|
|
"""上传文件到飞书云盘"""
|
|
try:
|
|
# 使用飞书 CLI 或 API 上传
|
|
# 这里需要飞书开放平台的应用权限
|
|
print(f"📤 准备上传: {file_path}")
|
|
print(f"⚠️ 飞书云盘上传需要应用权限,请手动上传")
|
|
print(f" 1. 打开飞书云盘")
|
|
print(f" 2. 进入 openclaw 文件夹")
|
|
print(f" 3. 上传文件: {file_path}")
|
|
return False
|
|
except Exception as e:
|
|
print(f"❌ 上传失败: {e}")
|
|
return False
|
|
|
|
|
|
def sync_to_feishu():
|
|
"""同步最新备份到飞书"""
|
|
print("=" * 50)
|
|
print("🧠 向量记忆系统 - 飞书云盘同步")
|
|
print("=" * 50)
|
|
|
|
# 获取最新备份
|
|
latest = get_latest_backup()
|
|
if not latest:
|
|
print("❌ 没有找到备份文件,请先运行: python3 memory_backup.py backup")
|
|
return
|
|
|
|
print(f"\n📦 最新备份: {latest.name}")
|
|
print(f" 大小: {latest.stat().st_size / 1024:.1f} KB")
|
|
print(f" 时间: {datetime.fromtimestamp(latest.stat().st_mtime)}")
|
|
|
|
# 提示用户手动上传
|
|
print("\n" + "=" * 50)
|
|
print("📋 手动上传步骤:")
|
|
print("=" * 50)
|
|
print(f"1. 打开飞书 → 云空间 → openclaw 文件夹")
|
|
print(f"2. 点击「上传」按钮")
|
|
print(f"3. 选择文件: {latest.absolute()}")
|
|
print(f"4. 完成!")
|
|
print("=" * 50)
|
|
|
|
|
|
def main():
|
|
import argparse
|
|
parser = argparse.ArgumentParser(description="飞书云盘同步工具")
|
|
parser.add_argument("command", nargs="?", default="sync",
|
|
help="命令: sync(同步), latest(查看最新)")
|
|
args = parser.parse_args()
|
|
|
|
if args.command == "sync":
|
|
sync_to_feishu()
|
|
elif args.command == "latest":
|
|
latest = get_latest_backup()
|
|
if latest:
|
|
print(f"📦 最新备份: {latest.name}")
|
|
print(f" 路径: {latest.absolute()}")
|
|
else:
|
|
print("❌ 没有找到备份文件")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|