出差/长时间离线·任务提前执行工作流
场景:用户将长时间离线(出差/休假),无法登录 WorkBuddy,自动化任务会因宿主离线而静默错过。 目标:把离线期间会触发的有产出任务提前执行,生成一份离线前清单,给关键机制配三重触发器,回归后按清单核对补齐。
⚠️ 2026-09-18 实测修订(必读:旧假设被推翻)
旧假设(08-15 写的):日级及以上任务"宿主登录时自动补跑,离线期错过 = 登录补跑,非丢失"。
18 天离线实测(2026-08-31 ~ 09-17,宿主全程未上电):
- 15 个周期、约 150 次触发全部落空,无一次补跑;回归后也没有追溯补齐
- 唯一真实单点 = 宿主是否在线——触发器外包只把单点从「黑盒无时钟」转移到「白盒在线率」,没有消除它
- 结论:离线期错过的任务 = 真的丢了,必须靠"离线前垫做 + 清单化"兜住,不能指望登录补跑
修正后的补跑口径:
| 离线情形 | 口径 |
|---|---|
| 当天错过、当天/次日登录 | 日级任务可能被宿主补跑(08-11 起多次实证)→ 可以指望 |
| ≥3 天连续离线 | 不保证补跑(18 天实测零补跑)→ 一律按"丢失"处理,必须离线前垫做 |
| 小时级任务(如邮箱巡检) | 从不补跑历史周期 → 忽略,回归后核对即可 |
前提(已建机制,直接复用)
- 共享状态文件(
~/.workbuddy/会话共享状态.md):跨会话协作中枢 + 值守说明落点 - 发送记录台账(
想法邮件发送记录.md):防重复发信(ideas_archive.py mark-sent) - 离线前清单(见步骤 0):本 skill 的核心产物
- 自动化盘点:
scripts/automation_status.py(拿全部自动化 + last_run) - 邮件通道:agent-mail MCP(<你的 Agent 邮箱>,详见 mail-manager skill;两阶段确认)
执行步骤(0~6 步)
步骤 0:离线前清单化(2026-09-18 立项,先做这步)
生成 ~/Downloads/谢尔比的记忆/离线前清单-<离线起日>.md,逐行列:
| 列 | 说明 |
|---|---|
| 任务 | 自动化名 / 机制名 |
| 离线期原触发点 | 列全具体日期时间(不写"每天",否则无法核对) |
| 处理方式 | 提前执行 / 可放弃 / 需人工回归补 |
| 触发器冗余 | 白盒定时 ✅ / 平台侧定时 / 用户手动(三重的落实情况) |
| 产出与落点 | 产出物 + 本地/邮件落点路径 |
| 防重复标记 | 已写共享状态值守说明 / mark-sent 日期 |
| 回归核对 | 回归后逐项要查什么 |
- 清单必须落在能从迁移包恢复的位置(随 backup/pack 迁移),不能只活在对话里
- 清单写完再读一遍核对(防"写了没人用");回归时以清单为准逐项打勾
步骤 1:盘点离线期间会触发的任务
列出离线期间所有自动化的触发时间表,分三类:
- 有产出任务(想法分享/维护/周报/论文采集/备份导出)→ 需提前执行或明确放弃
- 巡检类任务(邮箱巡检/健康快照/影子待办巡检)→ 无产出,离线期停跑,回归后核对即可
- 已提前完成的任务(如周维护已提前做)→ 确认防重复机制已就位
步骤 2:逐个提前执行有产出任务
对每个有产出任务,按该任务自动化 prompt 的完整流程执行:
- 内容产出(想法/预判/报告)
- 本地存档(
ideas_archive.py add/ 报告落盘) - 邮件双份发送走 agent-mail MCP(两阶段确认:先拿
CONFIRMATION_REQUIRED→ 展示 summary → 用户批准 → 带confirmation_token重试;绝不自动重试) - 发送记录标记(
ideas_archive.py mark-sent <日期>)
步骤 3:设置防重复机制
对每个「已提前执行」的自动化,确保回归补跑时不会重复产出:
- 在自动化 prompt 加「防重复前置」步骤(读共享状态/产出目录最新文件,本周/当日已有则跳过)
- 在共享状态文件写「离线期值守说明」——明确列出已提前执行的任务清单,回归补跑时应跳过
- 在发送记录台账标记已发日期(
mark-sent)
步骤 4:固化回归必做清单
QUICK_INDEX.md加置顶块「⚠️ 离线回归后必做」(新会话必读,防失忆遗漏)TODO.md加回归必做条目(含 verify_sync 一次补齐 + 验证点 + 自动补)- 内容三件套:① 跑
verify_sync.py补齐离线期新资产 ② 验证离线前拍板的验证点 ③ 自动补预判/待办/积压 - 回归后先读离线前清单,逐项打勾,缺则补
步骤 5:更新日志与简报
- 今日工作日志:写「明日任务提前执行」段(含每项任务的处理方式)
DAILY_SUMMARY.md:预写离线首日的条目(标注「提前执行版」)- 共享状态文件:写离线期值守说明(含"回归后应跳过哪些")
步骤 6:最终收工
- 跑
eod_runner.py全量验证(8 件事) - 备份(
backup.py) - 收工措辞带温度(「晚安,X 天后见」风格)
触发器冗余(2026-09-18 立项,与步骤 0/4 配套)
单触发器的可靠性 = 宿主在线率。给关键机制配三重触发器:
| 层 | 触发器 | 覆盖的失效场景 |
|---|---|---|
| ① 白盒定时 | WorkBuddy 本机自动化(rrule) | 正常情况 |
| ② 平台侧定时 | 独立于本机运行的云端任务(WorkBuddy 平台侧 automation,如 cloud:* 类型) |
本机离线 |
| ③ 用户手动 | 离线前清单 + 回归必做清单(写进 QUICK_INDEX 置顶块 / TODO) | 前两层都失灵 |
- 原则:关键机制(备份导出 / 收工 / 周维护 / 论文采集)至少要有 ② 或 ③ 兜底
- 只有 ① 的机制,必须在离线前清单里明确标「本机离线 = 归零」
- 止损判据:若某机制连续 2 个周期靠 ③ 手动才跑起来,说明 ① 形同虚设 → 改设计,别加人工
注意事项
- 防重复是关键:回归后登录补跑会触发离线期间错过的任务,若不设防重复会重复产出/重复发信(教训:2026-08-15 双通道重复补发事故)
- 别指望补跑:≥3 天离线一律当"丢失"处理(见上方实测修订)
- 预判可提前写:离线首日的预判可提前产出(如「回归首对话会先问 X」),回归后验证
- 邮件提前发:内容型邮件(想法/周报)可提前发送,用户离线也能收到
- 巡检类不提前:邮箱巡检/健康快照等无产出任务无需提前执行,离线期停跑,回归后核对
- 收工保底不提前:离线期收工保底不跑属正常(用户不在线),回归后按"≥3 天=丢失"口径核对当天即可
参考实证
- 2026-08-15 首次跑通:用户 08-16 出差青岛约一周,22:45 拍板「08-16 周维护放到现在做」+ 23:06 拍板「明天任务都现在执行」;提前执行:早间深度+晚间轻量想法、周维护(提前版+正式版)、画像周报;防重复:自动化加防重复前置 + 共享状态值守说明 +
mark-sent 08-16 - 2026-09-18 回归复盘(反例,价值更高):08-31~09-17 计划外离线 18.5 天,离线前清单未生成(当时是"约一周"预期,被现实超出)→ 15 个周期 150 次触发零执行、论文试点 14 天只采到 1 天(缺 93%)、PDF 合订 09-01 dry-run 从未跑。教训:预期离线性不大时也要出清单,且清单里要写"若离线超出预期怎么办"
更新记录
- 2026-08-15 建立(用户拍板「明天任务都现在执行」后沉淀)
- 2026-09-18 修订(skill 体检驱动):① 推翻"日级任务登录自动补跑"旧假设(18 天实测零补跑)并给出分档口径;② 新增步骤 0「离线前清单化」(本次立项);③ 新增**「触发器冗余」**小节(本次立项,含平台侧
cloud:*自动化可用性);④ 步骤 2 邮件通道由 CLI 改为 agent-mail MCP(改掉 08-15 过时表述);⑤ 补 09-18 反例实证
