#!/usr/bin/env python3 """ 每日记忆检查脚本 在晚上10点后触发,检查今日是否已写入L2 """ import os import sys from datetime import datetime from pathlib import Path def get_workspace_path() -> Path: """获取workspace路径。""" return Path.home() / ".openclaw" / "workspace" def check_today_journal() -> bool: """检查今日是否已有L2记录。""" workspace = get_workspace_path() today = datetime.now().strftime("%Y-%m-%d") journal_file = workspace / "memory" / "journal" / f"{today}.md" return journal_file.exists() def get_l0_size() -> int: """获取MEMORY.md文件大小(字节)。""" workspace = get_workspace_path() memory_file = workspace / "MEMORY.md" if memory_file.exists(): return memory_file.stat().st_size return 0 def format_size(size_bytes: int) -> str: """格式化文件大小显示。""" kb = size_bytes / 1024 return f"{kb:.1f}KB" def main(): """主函数。""" today_str = datetime.now().strftime("%Y-%m-%d") print(f"📅 日期检查: {today_str}") print("=" * 50) # 检查今日L2 has_today_journal = check_today_journal() print(f"\n📝 L2记录检查:") if has_today_journal: print(" ✅ 今日已有journal记录") else: print(" ⚠️ 今日尚未创建journal记录") print(" 💡 建议:如有重要决策或事件,写入L2详情层") # 检查L0大小 l0_size = get_l0_size() print(f"\n📊 L0 (MEMORY.md) 大小检查:") print(f" 当前: {format_size(l0_size)} / 4KB") if l0_size > 4096: print(" 🚨 警告:超过4KB红线!需要立即归档到L1") elif l0_size > 3500: print(" ⚠️ 提醒:接近4KB限制,建议准备归档") else: print(" ✅ 大小正常") print("\n" + "=" * 50) print("📋 每日维护清单:") if not has_today_journal: print(" [ ] 如有重要事件,写入今日L2") else: print(" [x] L2记录已存在") print(" [ ] 检查MEMORY.md最近活动摘要") if l0_size > 3500: print(" [ ] L0接近限制,考虑归档到L1") print(" [ ] 确认L0层引用链接有效") return 0 if has_today_journal else 1 if __name__ == "__main__": sys.exit(main())