#!/usr/bin/env python3
"""
技能清理腳本 - 基於 OpenClaw Skills 管理指南
移除無用技能，降低 80% Token 消耗
"""

import os
import json

class SkillCleanupManager:
    """技能清理管理器"""
    
    def __init__(self):
        # 基於指南的核心技能清單
        self.essential_skills = {
            # 投研核心技能 (工作區優先級)
            'taiwan-stock-cost-monitor': '成本監控 - 追蹤 $0.84/月',
            'taiwan-stock-quality-checker': '品質檢查 - 保證 9.0/10',
            'taiwan-stock-weather-integration': '天氣整合 - 投資參考',
            
            # 系統核心技能 (已驗證安全)
            'healthcheck': '系統安全審計',
            'skill-creator': '技能管理',
            'weather': '天氣 API (無需 API key)',
            
            # 待評估技能 (需安全掃描)
            'summarize': '內容摘要 (需 Agent Trust Hub 掃描)',
            'model-usage': '成本分析 (需安全驗證)'
        }
        
        # 預計清理的技能數量
        self.cleanup_targets = [
            '1password', 'apple-notes', 'apple-reminders', 'bear-notes',
            'blogwatcher', 'blucli', 'bluebubbles', 'camsnap', 'clawhub',
            'coding-agent', 'discord', 'eightctl', 'gemini', 'gh-issues',
            'gifgrep', 'github', 'gog', 'goplaces', 'himalaya', 'imsg',
            'mcporter', 'nano-banana-pro', 'nano-pdf', 'notion', 'obsidian',
            'openai-image-gen', 'openai-whisper', 'openai-whisper-api',
            'openhue', 'oracle', 'ordercli', 'peekaboo', 'sag',
            'session-logs', 'sherpa-onnx-tts', 'slack', 'songsee',
            'sonoscli', 'spotify-player', 'things-mac', 'tmux',
            'trello', 'video-frames', 'voice-call', 'wacli'
        ]
    
    def analyze_token_savings(self):
        """分析 Token 節省潛力"""
        current_skills = 50
        missing_skills = 47
        ready_skills = 3
        
        # 基於指南的 Token 消耗估算
        token_per_skill = 120  # 平均每技能描述 Token
        current_token_cost = current_skills * token_per_skill
        
        target_skills = len(self.essential_skills)
        optimized_token_cost = target_skills * token_per_skill
        
        token_savings = current_token_cost - optimized_token_cost
        cost_savings_per_day = (token_savings * 0.0001) * 30  # 假設每天 30 次調用
        monthly_savings = cost_savings_per_day * 30
        
        print("🔍 技能 Token 消耗分析")
        print("=" * 40)
        print(f"當前技能數: {current_skills}")
        print(f"Missing 技能: {missing_skills}")
        print(f"Ready 技能: {ready_skills}")
        print(f"當前 Token 消耗: {current_token_cost} tokens/次")
        
        print(f"\n🎯 優化後預期:")
        print(f"目標技能數: {target_skills}")
        print(f"優化 Token 消耗: {optimized_token_cost} tokens/次")
        print(f"Token 節省: {token_savings} tokens/次")
        print(f"節省比例: {(token_savings/current_token_cost)*100:.1f}%")
        print(f"月度成本節省: ~${monthly_savings:.2f}")
        
        return {
            'current_tokens': current_token_cost,
            'optimized_tokens': optimized_token_cost,
            'savings': token_savings,
            'monthly_savings': monthly_savings
        }
    
    def generate_cleanup_plan(self):
        """生成清理計畫"""
        print(f"\n🚀 技能清理執行計畫")
        print("=" * 40)
        
        print("✅ 保留技能:")
        for skill, description in self.essential_skills.items():
            if skill.startswith('taiwan-stock'):
                print(f"  {skill} (工作區) - {description}")
            else:
                print(f"  {skill} (系統) - {description}")
        
        print(f"\n❌ 擬清理技能 ({len(self.cleanup_targets)} 個):")
        for skill in self.cleanup_targets[:10]:  # 只顯示前10個
            print(f"  {skill}")
        print(f"  ... 以及其他 {len(self.cleanup_targets)-10} 個技能")
        
        # 生成清理命令
        cleanup_commands = []
        for skill in self.cleanup_targets:
            cleanup_commands.append(f"openclaw skills disable {skill}")
        
        return cleanup_commands
    
    def create_skills_override_config(self):
        """創建技能覆蓋配置"""
        skills_config = {
            'enabled_skills': list(self.essential_skills.keys()),
            'disabled_skills': self.cleanup_targets,
            'optimization_date': '2026-02-20',
            'cost_savings_target': '80% token reduction',
            'safety_note': 'Based on OpenClaw Skills security guidelines'
        }
        
        # 儲存配置
        os.makedirs('data/skills-management', exist_ok=True)
        with open('data/skills-management/optimized-skills-config.json', 'w') as f:
            json.dump(skills_config, f, indent=2)
            
        print(f"\n📁 技能配置已儲存: data/skills-management/optimized-skills-config.json")
        
        return skills_config

def main():
    """主清理程序"""
    print("🛡️ OpenClaw Skills 清理優化")
    print("基於安全管理指南 + Token 成本控制")
    print("=" * 60)
    
    manager = SkillCleanupManager()
    
    # 分析節省潛力
    savings = manager.analyze_token_savings()
    
    # 生成清理計畫
    cleanup_commands = manager.generate_cleanup_plan()
    
    # 創建優化配置
    config = manager.create_skills_override_config()
    
    print(f"\n💰 總體優化效果預期:")
    print(f"Token 節省: {savings['savings']} tokens/次")
    print(f"成本節省: ${savings['monthly_savings']:.2f}/月")
    print(f"結合 API 優化: ${0.84 + savings['monthly_savings']:.2f}/月 → ${0.84:.2f}/月 (API) + ${savings['monthly_savings']:.2f}/月 (Token節省)")
    
    print(f"\n🎯 下一步執行:")
    print(f"1. 手動禁用不需要的技能")
    print(f"2. 測試系統功能完整性")
    print(f"3. 驗證明日晨報正常運作")
    print(f"4. Agent Trust Hub 掃描候選技能")
    
    return savings, config

if __name__ == "__main__":
    main()