#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
向量记忆系统 - 命令行工具
用法:
    python3 memory_cli.py add "记忆内容" --importance 4 --tags tag1,tag2
    python3 memory_cli.py search "查询内容"
    python3 memory_cli.py recent
    python3 memory_cli.py count
"""

import os
import sys
import argparse

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))

from vector_memory import VectorMemorySystem


def main():
    parser = argparse.ArgumentParser(description="OpenClaw 向量记忆系统 CLI")
    subparsers = parser.add_subparsers(dest="command", help="命令")
    
    # 添加记忆
    add_parser = subparsers.add_parser("add", help="添加记忆")
    add_parser.add_argument("content", help="记忆内容")
    add_parser.add_argument("--importance", "-i", type=int, default=3, 
                          help="重要性 1-5 (默认: 3)")
    add_parser.add_argument("--tags", "-t", type=str, default="",
                          help="标签，用逗号分隔")
    
    # 搜索
    search_parser = subparsers.add_parser("search", help="语义搜索")
    search_parser.add_argument("query", help="查询内容")
    search_parser.add_argument("--top", "-n", type=int, default=5, 
                             help="返回数量 (默认: 5)")
    
    # 最近
    subparsers.add_parser("recent", help="查看最近记忆")
    subparsers.add_parser("count", help="统计记忆数量")
    
    # 删除
    delete_parser = subparsers.add_parser("delete", help="删除记忆")
    delete_parser.add_argument("memory_id", help="记忆 ID")
    
    args = parser.parse_args()
    
    # 获取 API Key
    api_key = os.getenv("SILICONFLOW_API_KEY")
    if not api_key:
        print("❌ 请设置 SILICONFLOW_API_KEY 环境变量")
        sys.exit(1)
    
    # 初始化
    vm = VectorMemorySystem(api_key=api_key)
    
    # 执行命令
    if args.command == "add":
        tags = args.tags.split(",") if args.tags else []
        metadata = {"tags": tags} if tags else {}
        vm.add_memory(args.content, metadata, args.importance)
        
    elif args.command == "search":
        results = vm.search(args.query, args.top)
        print(f"\n🔍 搜索: '{args.query}' (共 {len(results)} 条)")
        for i, r in enumerate(results, 1):
            print(f"\n{i}. {r['content']}")
            print(f"   相似度: {r['similarity']:.2%} | ID: {r['id']}")
            
    elif args.command == "recent":
        recent = vm.get_recent(10)
        print(f"\n📅 最近 {len(recent)} 条记忆:")
        for i, r in enumerate(recent, 1):
            print(f"{i}. {r['content'][:50]}...")
            print(f"   创建于: {r['created_at']} | 重要性: {r['importance']}")
            
    elif args.command == "count":
        print(f"\n📊 记忆总数: {vm.count()}")
        
    elif args.command == "delete":
        vm.delete(args.memory_id)
        
    else:
        parser.print_help()


if __name__ == "__main__":
    main()
