Skip to content

v0.3.4 — per-task automation

Choose a tag to compare

@CharlotteLiii CharlotteLiii released this 04 Jul 18:31
5e840c1

🎯 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.logscripts/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)

  1. 拉取最新 scripts/
  2. python3 scripts/setup_preflight.py --ask-tasks(或跳过让默认生效)
  3. 重跑对应平台的 install_automation.* —— 会自动 bootout 旧的单任务 LaunchAgent 并装 8 个新的
  4. 老的 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 结构与其它两端对齐,未做本机运行时测试

📎 相关