edit | blame | history | raw

---
words:

2026-08-25: 1213

[!question]
我不理解,这里面为什么还需要workbuddy的定时任务,我需要这套逻辑要能完全脱离workbuddy来起作用

好问题,这其实点出了我之前方案里一个"设计冗余"——你直觉是对的。我先确认一下监视器(watch)现在到底有没有自己调生成器,再跟你讲清楚,然后把 WorkBuddy 的依赖去掉。

让我读一下 tagfeed.py 里那段关键代码确认现状:
确认了——关键代码在 tagfeed.py 第 1372–1386 行:**watch 模式在每次检测到笔记变动时,自己就用子进程调一次 sync_0inbox.py**(只对有 00index/标签聚合 结构的 vault 执行)。也就是说,生成新页面这件事,**监视器自己已经干了**。

为什么之前会有 WorkBuddy 定时任务

这是个"历史遗留 + 我当初没删干净"的问题:

  • 最早这套系统里,sync_0inbox.py(生成器)**唯一的触发源**就是那个 WorkBuddy 每日 04:00 自动化。watcher 当时只负责"刷新已有页",不负责新建。
  • 后来你要求"新标签要即时生成"(不是等 04:00),我在上一轮把"调用生成器"接进了 watcher(就是上面那段代码)。**这一步做完后,WorkBuddy 任务就已经是多余的了**——只是我当时把它当"兜底"留着,没删。

所以它现在确实是个冗余依赖,你的直觉完全正确。

现在的真实触发链(已脱离 WorkBuddy)

macOS 登录
   └─ launchd  (com.ar.tagfeedwatch-login.plist, 系统级, 非 WorkBuddy)
        └─ TagfeedWatch.app
             └─ /Users/ar/bin/tagfeed.py --watch   ← 常驻进程
                  ├─ 笔记一变动(≈15s) → 刷新已有 tagfeed 页 / 日记足迹 / 目录脑图
                  └─ 同时 subprocess 调用 sync_0inbox.py  → 新标签即时进 0inbox

整条链是 launchd(macOS 系统机制)→ app → python,从头到尾没有 WorkBuddy 参与。我把那个 WorkBuddy 自动化删掉,系统照样跑。

让我把它删掉:
已删除。现在做个**无 WorkBuddy 的端到端实证**,让你亲眼确认:生成新标签页面这件事,不依赖 WorkBuddy 也能跑。

先确认监视器常驻进程在跑,再放一个临时笔记+全新标签,看它是否自动建页:
实证完成,结果很干净:

  • 监视器进程 PID 31269 常驻,父级是 com.ar.tagfeedwatch-login(launchd 托管)——这是 macOS 系统级机制,**与 WorkBuddy 无关**。
  • 临时笔记 nwbproof9z(带 # 前缀的测试标签) 在约 16 秒后**自动建页**到 00index/0inbox/,日志明证:0inbox 新标签建页: 新建 1 个。全程没有 WorkBuddy 参与。
  • 测试产物已清理。

现在整个工作流**已经 100% 脱离 WorkBuddy** 了。让我把这条变更记进日志:

一句话结论

WorkBuddy 定时任务本来就不是必需的——它是早期"生成器只有这一个触发源"的历史遗留。自从我们在监视器(watch)里接入了"自动调用生成器"的逻辑后,它就成了冗余。我已经把它删了,并实测证明整条链路现在零依赖 WorkBuddy。

现在的完整链路(全部 macOS 原生机制)

macOS 登录
  └─ launchd 系统守护 (com.ar.tagfeedwatch-login)   ← 非 WorkBuddy
       └─ TagfeedWatch.app
            └─ /Users/ar/bin/tagfeed.py --watch      ← 常驻进程
                 ├─ 笔记变动 ≈15s → 刷新已有页 / 日记足迹 / 目录脑图
                 └─ 同时 subprocess 调 sync_0inbox.py → 新标签即时进 0inbox
  • 触发:文件变动(FSEvents + 轮询),进程常驻,mac 唤醒后会重扫。
  • 生成sync_0inbox.py 由 watcher 直接调用,不需要任何外部调度器。
  • 已删:原 WorkBuddy 每日 04:00 自动化 automation-1787588745696

为什么当初会有它 / 现在为什么能删

阶段 新标签建页的触发源 是否即时
最早 仅 WorkBuddy 04:00 自动化 否(等每天 04:00)
上一轮改完后 watcher 每次变动自调生成器 + WorkBuddy 兜底 是(≈15s)+ 冗余兜底
现在 仅 watcher 自调生成器 是,且完全无 WorkBuddy

实测佐证(无 WorkBuddy 参与)

  • 监视器 PID 31269 由 com.ar.tagfeedwatch-login(launchd)托管;
  • 临时标签 nwbproof9z(带 # 前缀的测试标签) 约 16s 内自动建页,日志:0inbox 新标签建页: 新建 1 个
  • 测试产物已清理。

唯一提醒:launchd 代理在"你登录 mac"后才运行。如果 mac 关机/登出期间,你在别的设备改了笔记再同步回来,watcher 要在你下次唤醒并触发一次变动时才会补扫(它本身每轮也会基于 mtime 重扫,所以唤醒后一般会自动追上)。如果你想要一个"即便长期睡眠也定时兜底"的纯系统方案(比如用 launchd 的 StartCalendarInterval 每日跑一次 sync_0inbox.py,同样不依赖 WorkBuddy),我可以帮你加——但当前 watcher 已覆盖日常 99% 场景,要不要加那个兜底你定。