面向电脑小白的 Windows C 盘清理助手(经真机实战验证)。两种模式:①开荒保洁——C盘已爆满时,先只读体检、用大白话讲清每类文件是什么/删了有啥影响,等用户逐条点头才动手,且一律只搬不删、可恢复;②日常保洁——记住你的清理习惯,定期自动体检或你随时喊一声,只清安全项。绝不自行删除任何文件,任何清理动作前必须取得用户明确同意。实战已验证:微信等聊天数据走官方"更改存储位置"迁移、可重建缓存只搬 Cache/Temp 子目录、软件主程序目录绝不碰、搬前检测进程锁防"半搬走"。触发词:"C盘满了""C盘爆红""清理C盘""C盘瘦身""腾空间""定期清理C盘""电脑卡"。
集成
asset-cleanup-daily
试用每日资产清理器,Cron每日03:00清理过期临时文件/旧日志/无效缓存/过期素材,释放磁盘空间+写入清理报告。触发:asset-cleanup-daily Cron(每日03:00)/素材清理/资产清理/磁盘清理/临时文件清理。不触发:实时资产告警(health-monitor-mcp负责)
它能做什么
每日资产清理器,Cron每日03:00清理过期临时文件/旧日志/无效缓存/过期素材,释放磁盘空间+写入清理报告。触发:asset-cleanup-daily Cron(每日03:00)/素材清理/资产清理/磁盘清理/临时文件清理。不触发:实时资产告警(health-monitor-mcp负责)
技能文档
Asset Cleanup Daily 每日资产清理器
版本: v1.0.0 | 优先级: P2(基础设施维护) | 所属层: 基础设施层(资产清理)
来源: T2-6素材清理 | 05文档§五L1096 | BUG-ASSET-CLEANUP-SKILL-MISSING修复 Cron配置: data/cron_tasks.json
asset-cleanup-daily(schedule:0 3 * * *)
使用场景
- 每日03:00自动清理过期临时文件(data/temp_.txt, data/test_.txt等临时产物)
- 清理旧日志文件(data/*.jsonl超过30天的日志,与log-rotate Cron互补)
- 清理无效缓存文件(data/*.lock过期锁文件, *.bak备份文件)
- 清理过期素材(调用scripts/asset_cleanup.py清理tenant_assets表中过期记录+物理文件)
- 输出结构化清理报告(删除文件数/释放空间/跳过数/错误列表)
- 仅清理+报告,不触发告警(告警由health-monitor-mcp负责)
设计背景
问题诊断(BUG-ASSET-CLEANUP-SKILL-MISSING)
cron_tasks.json中已配置asset-cleanup-daily Cron任务(schedule: 0 3 * * *),但对应的Skill未创建,导致Cron触发时OpenClaw找不到Skill执行清理逻辑。
业务规则(来源:04部署文档§2环境+§10故障)
- 临时文件保留期: 1天(当日生成的temp/test文件次日清理)
- 日志文件保留期: 30天(与log-rotate Cron互补,log-rotate处理scripts/operation_logger.py日志,本Skill处理data/*.jsonl)
- 锁文件保留期: 1天(超过1天的.lock文件视为僵尸锁,安全清理)
- 备份文件保留期: 7天(.bak/.backup文件超过7天清理)
- 素材有效期: tenant_assets.expires_at < NOW()(来源:09设计文档U2,scripts/asset_cleanup.py已实现)
部署约束(来源:04部署文档)
- JUEJIN_HOME环境变量: 项目根路径(默认d:\JueJin)
- 数据目录: $JUEJIN_HOME/data/
- 日志统一入口: db_logger(来源:18_统一入口规则)
- 原子写入入口: atomic_write(来源:18_统一入口规则)
- PG连接: POSTGRES_CONNECTION_STRING环境变量(scripts/asset_cleanup.py使用)
闭环验证标准
- L1: frontmatter格式正确,tools/metadata完整
- L2: py_compile语法通过,正常→success=true+data,异常→success=false+error+code
- L3: Cron触发→Skill加载→exec执行→JSON输出
- L4: 磁盘空间释放可验证(清理前后data/目录大小对比)
工作流
-
初始化清理环境
- 读取JUEJIN_HOME环境变量确定项目根路径
- 初始化db_logger记录清理过程
- 执行:
python skills/asset-cleanup-daily/scripts/asset_cleanup.py [--dry-run]
-
清理过期临时文件
- 扫描data/目录下temp_.txt/test_.txt/test_.json/test_.out等临时产物
- 文件修改时间超过1天(86400秒)的视为过期
- 删除过期临时文件,记录删除数量和释放空间
-
清理旧日志文件
- 扫描data/目录下*.jsonl日志文件
- 文件修改时间超过30天(2592000秒)的视为过期
- 删除过期日志文件(与log-rotate Cron互补,log-rotate处理operation_logger日志)
- 跳过活跃日志文件(alert_queue.jsonl/budget_alerts.jsonl等高频写入文件即使超龄也保留)
-
清理无效缓存和锁文件
- 扫描data/目录下*.lock文件(超过1天的僵尸锁)
- 扫描项目根目录下*.bak/*.backup文件(超过7天的旧备份)
- 安全删除,记录清理结果
-
清理过期素材(可选,PG可用时执行)
- 调用scripts/asset_cleanup.py清理tenant_assets表中expires_at < NOW()的记录
- 删除PG记录+物理文件+AList远程文件
- PG不可用时跳过(降级处理,不影响其他清理步骤)
-
输出清理报告
- 汇总各类清理结果(临时文件/日志/缓存/素材)
- 使用atomic_write写入清理报告到data/audit/asset_cleanup_YYYY-MM-DD.json
- stdout输出JSON: {success, data:{temp_files, log_files, cache_files, assets, total_freed}, error, code}
输入格式
{
"dry_run": false
}
参数说明:
dry_run(可选): true时只扫描不删除,默认false
输出格式
{
"success": true,
"data": {
"temp_files": {
"scanned": 15,
"deleted": 12,
"freed_bytes": 245678,
"errors": []
},
"log_files": {
"scanned": 18,
"deleted": 3,
"freed_bytes": 1024000,
"errors": []
},
"cache_files": {
"scanned": 5,
"deleted": 2,
"freed_bytes": 512,
"errors": []
},
"assets": {
"cleaned": true,
"expired_count": 5,
"deleted_records": 5,
"deleted_files": 4,
"freed_bytes": 8192000,
"skipped": "PG不可用时为null"
},
"total_freed_bytes": 9457190,
"total_freed_human": "9.0MB",
"report_path": "data/audit/asset_cleanup_2026-07-14.json"
},
"error": null,
"code": null
}
异常处理
- JUEJIN_HOME环境变量未设置 → 使用默认值d:\JueJin,记录warning
- data/目录不存在 → 返回success=false+code=DATA_DIR_NOT_FOUND
- 临时文件删除失败(OSError/PermissionError) → 记录错误到errors列表,继续清理其他文件
- PG连接失败(scripts/asset_cleanup.py) → 跳过素材清理,其他清理正常执行,assets.cleaned=false
- atomic_write报告写入失败 → 记录db_logger错误,不影响stdout JSON输出
- 未知异常 → 返回success=false+error+code=INTERNAL_ERROR,exit(2)
清理规则明细
临时文件模式(保留1天)
data/temp_*.txt- 临时文本片段data/test_*.txt/data/test_*.json/data/test_*.out- 测试产物data/kanban/test.*- 看板测试文件data/ops/_vacuum_temp.sql- PG真空临时SQL
日志文件模式(保留30天)
data/*.jsonl- JSONL格式日志(排除活跃日志:alert_queue.jsonl, budget_alerts.jsonl, tenant_notifications.jsonl, mcp_pending_tasks.jsonl)- 与log-rotate Cron互补: log-rotate处理scripts/operation_logger.py的30天轮转,本Skill处理data/目录下的JSONL日志
缓存/锁文件模式(保留1天锁/7天备份)
data/*.lock- 过期锁文件(超过1天视为僵尸锁)*.bak/*.backup- 旧备份文件(超过7天)
素材清理(委托scripts/asset_cleanup.py)
- 查询tenant_assets表expires_at < NOW()的记录
- 删除PG记录+物理文件+AList远程文件
- PG不可用时降级跳过
R72.1保护声明
本Skill实现R72.1: asset-cleanup-daily(基础设施层资产清理)为05文档§五L1096要求的Cron编排组件。
- 每日03:00执行,不影响调度公平性(R16例外:维护任务非调度任务)
- 清理操作不可逆,但仅清理过期/临时文件,不影响生产数据
- 与log-rotate Cron互补,不重复清理同一批文件
示例
示例1: 正常清理
python skills/asset-cleanup-daily/scripts/asset_cleanup.py
输出:
{
"success": true,
"data": {
"temp_files": {"scanned": 5, "deleted": 3, "freed_bytes": 1024, "errors": []},
"log_files": {"scanned": 18, "deleted": 1, "freed_bytes": 512000, "errors": []},
"cache_files": {"scanned": 2, "deleted": 1, "freed_bytes": 256, "errors": []},
"assets": {"cleaned": true, "expired_count": 0, "deleted_records": 0, "deleted_files": 0, "freed_bytes": 0},
"total_freed_bytes": 513280,
"total_freed_human": "501.2KB",
"report_path": "data/audit/asset_cleanup_2026-07-14.json"
},
"error": null,
"code": null
}
示例2: 试运行(不删除)
python skills/asset-cleanup-daily/scripts/asset_cleanup.py --dry-run
输出同上,deleted字段表示待删除数量(实际未删除),dry_run标记为true。
示例3: PG不可用降级
PG连接失败时,assets字段降级:
{
"assets": {"cleaned": false, "expired_count": 0, "skipped": "PG不可用,跳过素材清理"}
}
相关技能
AI-powered cross-platform disk storage analyzer. Scans system/user/dev space usage, generates interactive HTML report with 3-tier cleanup tiers (立即清/确认后清/保留)...
Mac 磁盘空间盘点与清理建议技能。当用户说「硬盘不够用」「空间不足」「磁盘快满了」「帮我清理 Mac」「扫描大文件」「哪些可以删」时触发。 自动扫描系统、用户目录、开发项目中的空间占用,生成三级清理建议(立即清 / 确认后清 / 保留),提供可直接复制执行的命令。 绝不自动删除任何文件,只出报告和命令,执行前必...
根据输入生成日报 Markdown 草稿并写入 reports 目录,适合个人工作记录。Use when 需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于实时流数据处理。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。
每日完成报告生成器,聚合task_result+daily_completion_report表+30天WelcomeBackCard摘要+待处理事项+租户完成率统计。触发:每日23:00 Cron(completion-report-generator)。不触发:实时查询(用task-dispatcher)
Lightweight watchdog for daily report cron failures — independent Feishu alerter that doesn't rely on OpenClaw's failureAlert. 30-min checks, 4h cooldown, 36...