import json, shutil, os from datetime import datetime # 1. 删小果相关 cron job(quick-scan / tunnel-watchdog / 情感分析 / 独立扫描) REMOVE_JOBS = {'xiaoguo-quick-scan', 'xiaoguo-tunnel-watchdog', '小果情感分析', '小果独立扫描'} for jf in ['/home/hmo/.hermes/profiles/position-analyst/cron/jobs.json', '/home/hmo/.hermes/cron/jobs.json']: shutil.copy(jf, jf + '.bak-20260720-xiaoguo') d = json.load(open(jf)) is_list = isinstance(d, list) jobs = d if is_list else d.get('jobs', []) kept = [j for j in jobs if j.get('name') not in REMOVE_JOBS] removed = [j.get('name') for j in jobs if j.get('name') in REMOVE_JOBS] if removed: print(f'{jf}: removed {removed}') if is_list: json.dump(kept, open(jf, 'w'), ensure_ascii=False, indent=2) else: d['jobs'] = kept json.dump(d, open(jf, 'w'), ensure_ascii=False, indent=2) else: print(f'{jf}: nothing to remove') # 2. 归档小果脚本和数据文件 ARCHIVE = '/home/hmo/MoFin/archive/xiaoguo-retired-20260720' os.makedirs(ARCHIVE, exist_ok=True) candidates = [ '/home/hmo/MoFin/deploy/profile-scripts/xiaoguo_scanner.py', '/home/hmo/MoFin/deploy/profile-scripts/xiaoguo_news_processor.py', '/home/hmo/MoFin/deploy/profile-scripts/xiaoguo_sentiment_bridge.py', '/home/hmo/MoFin/deploy/profile-scripts/xiaoguo_signal_consumer.py', '/home/hmo/MoFin/scripts/inject_xiaoguo_insight.py', '/home/hmo/web-dashboard/data/xiaoguo_insights.json', '/home/hmo/web-dashboard/data/xiaoguo_sentiment.json', '/home/hmo/MoFin/data/xiaoguo_insights.json', '/home/hmo/MoFin/data/xiaoguo_sentiment.json', ] for f in candidates: if os.path.exists(f): shutil.move(f, os.path.join(ARCHIVE, os.path.basename(f))) print('archived:', f) # 3. 处理 profile scripts 里残留的 xiaoguo 硬链接 import glob for f in glob.glob('/home/hmo/.hermes/profiles/position-analyst/scripts/xiaoguo_*.py'): os.unlink(f) print('unlinked:', f) # 4. 检查 default profile scripts 的 xiaoguo 文件 for f in glob.glob('/home/hmo/.hermes/scripts/xiaoguo_*.py') + glob.glob('/home/hmo/.hermes/scripts/xiaoguo_*.sh'): print('default profile xiaoguo file:', f) print('DONE')