AUTOMATION NOTE

把“处理昨天日记”自动化到凌晨 2 点

2026-01-13 · Zon (个人 LifeOS) · myObsidian · DailyRecord

launchd 定时 + 脚本(git 证据 → 写回流水线 → 自动 commit/push)


TL;DR

Key Insights

  1. 全自动的关键不是“更聪明”,而是“可重复 + 幂等”:每天跑多次也不重复写入。
  2. 先把证据固定为 Git(.html commit)这条硬口径,避免把 mtime/未提交改动误写进日记。
  3. 把失败模式当正常:push 失败时保留本地 commit,下次任务再补推送。

Step-by-step Playbook

Beginner Mode

  1. 把脚本放进仓库
    脚本已在 /Users/zon/Desktop/MINE/6 Obsidian/myObsidian/scripts/autofill_yesterday_diary.py,默认处理“昨天”,并会自动 commit/push。
  2. 把 launchd 配置放进 LaunchAgents
    复制 /Users/zon/Desktop/MINE/6 Obsidian/myObsidian/automation/com.eomzon.myobsidian.autofill-yesterday.plist 到 ~/Library/LaunchAgents/,并 load 启用。
  3. 验证能跑通一次
    手动执行:/usr/bin/python3 /Users/zon/Desktop/MINE/6 Obsidian/myObsidian/scripts/autofill_yesterday_diary.py --dry-run(确认无报错后去掉 --dry-run)。
  4. 确认 SSH/权限
    确保 02:00 时段也能访问 git remote(SSH key/agent 可用);否则 push 会失败但不会损坏文件。
  5. 看日志与回滚
    查看 ~/Library/Logs/myObsidian-autofill-yesterday.*.log;要停用就 unload + 删除 plist。

Checklist

  • 02:00 机器是开机/唤醒状态(否则不会执行)。
  • repo 路径没有变化(plist 里写死了绝对路径)。
  • git push 需要的网络与 SSH key 可用。
  • 脚本幂等:重复执行不会重复插入同一条 HTML 证据。
  • 只改昨日日记文件,不写入其它产物/日志到仓库。
Occam First (keep only what you need)
  • 第一阶段只做 HTML(提交)证据(你 SOP 的强制项)。
  • 不要引入“未提交改动/mtime”自动写回,除非你明确要。
  • 一旦冲突多发,再考虑把“写回 + 提交”改成“只生成摘要”。

SVG Diagrams

Expert Views

Apple launchd / launchd.plist(5) — macOS 计划任务(LaunchAgents)最佳实践

“paraphrase: Schedule is easy; correctness comes from idempotency + explicit environment.” — launchd.plist(5)

Options

Option Best for Upside Downside Key risk First step
A 你要“尽可能全自动”,并接受偶尔 push 失败的情况下仍自动 commit。 每天自动写回 + 自动 push;你基本不用再手动触发。 需要维护绝对路径;偶发冲突/无网时需要人工处理一次。 02:00 时 SSH key 不可用导致 push 失败;或日记文件被同时编辑导致冲突。 安装 LaunchAgent 并手动跑通一次(含 push)。
B 你想保留“人工确认写回/提交”的安全阀。 冲突/误写风险更低。 还是需要你点一下或跑一次命令。 仍可能忘记执行,回到“手动触发很愚蠢”的问题。 先只生成证据摘要文件,白天再由你确认写回。

Evidence & Confidence

Claim Evidence Confidence Source
launchd + 幂等脚本可以把“处理昨天日记”自动化到每天固定时间执行。 本仓库已新增脚本与 plist,且脚本 dry-run 可跑通。 High autofill_yesterday_diary.py

Next Steps

Details (Optional)

Second page

Keep this page minimal. Put complex derivations, long tables, and deep dives into a secondary HTML page, then link it here.

Sources

Closing Summary

把“证据收集 + 写回 + 提交推送”变成一个每天 02:00 自动运行的幂等任务,就不需要你再手动触发。

  • 先只自动写回 HTML(提交)证据,口径最硬、误写风险最低。
  • push 失败是正常分支:保留 commit,下一次或你醒来后再推送。
  • 如果冲突频繁,再回退到“只生成摘要文件”的半自动方案。

One next action

现在就安装 LaunchAgent,然后手动跑一次脚本(不带 --dry-run)验证 commit/push。