v0.3.4 — per-task automation
🎯 8 个任务,各自独立调度
之前只能装 1 个每日任务(共享 interval)。这版把自动化拆成 8 个独立任务,每个有自己的 schedule 和触发时间。
| 任务 | 默认触发时间 |
|---|---|
daily_distill 每日知识蒸馏 |
每天 21:00 |
idea_tracker 想法成熟度追踪 |
每天 21:05 |
clipping_refiner Clippings 提炼 + 卡片 |
每天 21:10 |
skill_detector Skill 候选检测 |
每天 21:15 |
link_suggester 结构性双链建议 |
每天 21:20 |
feedback_loop 输出反馈回流 |
每天 21:25 |
weekly_review 每周知识复盘 |
每周日 14:00 |
quarterly_audit 季度知识健康审计 |
季度最后一天 12:00 |
每日任务错开 5 分钟,避免同时启动 & LLM API 扎堆,日志也好读。
✨ 新增
交互式安装向导
python3 scripts/setup_preflight.py --ask-tasks
# Y=全按默认装(推荐) / e=逐项编辑 / n=不装非交互 CLI(可脚本化)
python3 scripts/setup_preflight.py --set-task daily_distill=22:30
python3 scripts/setup_preflight.py --disable-task feedback_loop
python3 scripts/setup_preflight.py --set-task-dow weekly_review=1 --set-task weekly_review=15:00
python3 scripts/setup_preflight.py --list-tasks三平台原生调度器
- macOS:每任务一个
com.knowledge-iteration.<task_key>.plist,季度任务用StartCalendarInterval数组精准命中 3/31、6/30、9/30、12/31。 - Linux:crontab 内 BEGIN/END 块,每任务一行;季度任务拆两行
M H 31 3,12 *+M H 30 6,9 *。 - Windows:每任务一个
KnowledgeIteration_<task_key>Scheduled Task;季度用 4 个-Once触发器 + 365 天重复。
日志分离
从 scripts/distill.log → scripts/logs/<task_key>.log / <task_key>.error.log,8 任务 8 份日志。
手动触发(不变)
# macOS
launchctl kickstart -k gui/$(id -u)/com.knowledge-iteration.daily_distill
# Linux / macOS 直接跑脚本
python3 scripts/daily_distill.py --days 2
# Windows
Start-ScheduledTask -TaskName KnowledgeIteration_daily_distill🔧 迁移(v0.1.x → v0.3.4)
- 拉取最新
scripts/ python3 scripts/setup_preflight.py --ask-tasks(或跳过让默认生效)- 重跑对应平台的
install_automation.*—— 会自动 bootout 旧的单任务 LaunchAgent 并装 8 个新的 - 老的
scripts/distill.log不会自动删(也不会再写入),可自行清理
旧配置字段 automation.dailyIntervalDays 保留在 .knowledge-iteration-system.json 里但会被忽略;新安装完全依据 automation.tasks 表。
🧪 验证过
- ✅
--list-tasks默认输出正确 - ✅ CLI 覆盖 hour/minute/dayOfWeek/enabled 全能持久化
- ✅ macOS installer 生成的 plist 包含季度 4-dict 数组
- ✅ Linux installer 生成的 crontab 块含季度 2 行
- ✅ 无效时间 / 未知任务名被 validator 拦截
⚠️ Windows.ps1结构与其它两端对齐,未做本机运行时测试
📎 相关
- PR: #3
- 上一版:v0.1.1 — automation hotfix
- Full changelog: v0.1.1...v0.3.4