ZON
Best Minds Board Private
Phase Summary · 2026-03-17
Todo × Diary × Obsidian

从分散页面到统一 LifeOS Hub

这不是一份“又做了几个页面”的周报,而是一次架构定性:你的真实目标是什么,当前已经 live 的能力到哪一步, 为什么不该做每分钟实时同步,以及如何把 todo.zondev.topdiary.zondev.top、myObsidian、任务执行流水、优先级矩阵,收口到同一套 数据底座和多视图驾驶舱里。

Jason Fried / DHH:界面要清晰、安静、分层 Kent Beck:先定义可演化的边界,再做功能 Google SRE:同步要有预算、可观测、可回滚
Live Views
3
Overview / Focus / Editor 已在 todo live。
Current Sync
25
最近一次 Obsidian→D1 同步:25 条 unchanged。
Recommended Cadence
8/day
活跃时段 2h 一次 + 夜间 1 次 full reconcile。
Canonical Sources
4
Obsidian / Diary / Task Ops / Manual Editor。

你的真实目标

不是再做一个 Todo 页面

你真正要的是一个统一的 LifeOS 操作台:它能告诉你当前最重要的事、哪些 AI 可以做、哪些必须你亲自做、今天和最近几天真正该收口什么。

也不是把所有文档都硬塞进 todo

最佳实践不是让 todo 变成“所有原文的唯一仓库”,而是让它成为 决策层 / 驾驶舱。原始内容仍保留在 Obsidian、Diary 和任务执行日志里,todo 负责聚合、排序、展示和行动入口。

你要的东西 正确定位 为什么
一个统一入口 todo.zondev.top = 操作台 / cockpit 它应该回答“现在最该做什么”,而不是承担所有原始记忆。
四象限、时间轴、AI/人分类 这些都应该是 derived views 它们是展示透镜,不应反过来污染原始数据结构。
Diary 的评分/总结/任务引用整合 Diary = 每日证据流;Todo = 决策聚合层 Diary 擅长“当天发生了什么”,Todo 擅长“接下来该做什么”。
可逐渐替换样式 数据层 / 视图层 / 主题层三段式 否则每次想换样式都会拖着解析逻辑一起重写。

当前已经完成

Live

Todo 站点已可用

todo.zondev.top 在 2026-03-17 实测 HTTP 200,密码登录、CRUD、D1 写入都已跑通。

Live

三种工作模式已分层

Overview 负责总览,Focus 负责单任务阅读,Editor 负责文本优先写作,避免“浏览和编辑塞在一个弹窗里”。

Live

文本优先的数据模型已开始成型

任务已支持原始 body 持久化,能从文本里解析 status / priority / date / tags / creator 等结构。

Live

Obsidian → D1 单向同步已存在

launchd watcher + 定时兜底已安装;最近一次 2026-03-17 同步为 25 incoming / 25 unchanged / 0 change。

Live

Diary 站点已形成多个现成视图

diary.zondev.top 当前已有 Public Board、Task Ops、Priority 等页面,说明数据碎片已经存在,只是没有统一汇总。

Naming Fix

域名命名需收口

2026-03-17 实测 dairy.zondev.top 无法解析,真实 live 域名是 diary.zondev.top。这类命名分叉要在数据字典里统一。

还差哪些关键能力

缺口 现状 为什么关键 最佳实践
Todo ↔ Obsidian 双向闭环 现在只有单向导入,Editor 还没有真正写回文件。 没有 round-trip,编辑页就还是“平行系统”。 先做模板化写回和冲突策略,再谈双向同步;不要先做实时双写。
Diary / Task Ops / Priority 的统一数据层 这些页面已经 live,但还是各自生成、各自展示。 你看到的是多个视图,不是一套共同底座。 先定义统一实体:task / daily_entry / score / execution_event / project / source_doc。
数据层与展示层抽离 当前 todo 仍是单页 HTML,样式和逻辑耦合较深。 后面一旦批量换皮、换布局,会拖着业务逻辑一起动。 拆为 data / materializer / renderer / theme
真正的驾驶舱首页 现在首页更多还是任务列表,不是高层决策界面。 你想看到的是“现在最该做什么”,不是所有任务平铺。 首页优先展示:四象限、时间轴、AI/人分工、阻塞、今日/本周聚焦。
冲突治理与预算治理 已有同步,但还没有公开的预算策略和冲突策略。 一旦你同时从多个入口修改,系统会开始失真。 定义 source-of-truth、同步频率、手动强制同步、夜间 reconcile、冲突优先级。

最重要的架构判断

Jason Fried / DHH

界面必须安静、职责分层。Todo 不应该同时扮演长文仓库、事件总线、日报页面和行动列表的全部角色。

  • 首页是驾驶舱,不是档案柜。
  • 浏览、聚焦、编辑要分层。
  • 同步要“平静”,不要制造一分钟一次的噪音系统。

Kent Beck

先让变化容易,再让变化更快。你现在最该做的不是更多页面,而是先把 canonical data model 定下来。

  • 把任务原文、日记摘要、执行流水分开建模。
  • 让四象限、时间轴、AI/人分工都成为 derived views。
  • 保证 Editor ↔ Obsidian round-trip 可逆。

Google SRE

同步不是“能不能更快”,而是“是否有预算、是否可观测、是否失败可恢复”。

  • 给同步定义预算上限。
  • 默认 no-op 不通知,有变化才提醒。
  • 每天至少一次全量 reconcile,平时走 diff。

建议的同步策略

结论先说:不建议实时同步。对你当前这套免费额度和真实使用习惯,更稳的做法是 “本地即时记录,云端批量同步”

Recommended Cadence
Local Cloud Board 08:00 10:00 14:00 18:00 22:00 write in Obsidian / Diary diff sync diff sync diff sync diff sync materialize views notify if changed 02:10 nightly full reconcile
推荐默认:活跃时段每 2 小时 diff,同步完成后再生成视图;夜里单独跑一次全量对账。

为什么这个频率最合理

  • 2026-03-17 当前规模只有 25 条同步任务,2h 一次已经足够“感觉上实时”。
  • Cloudflare Workers Free 当前官方 limit 是 100,000 requests/day;D1 Free 是 5 million rows read/day100,000 rows written/day
  • 对你现在的规模,8 次 / 天的 diff sync + 1 次 nightly reconcile,完全在安全区内。
  • 即使以后扩到 5,000 条任务,8 次全量扫描也只是约 40,000 rows/day 量级,仍远低于 D1 免费读取上限。

推荐默认:08:00–22:00 每 2 小时 1 次;02:10 夜间全量对账;用户手动触发“Sync now”高优先于定时任务。

策略 说明
本地记录层 即时 Obsidian / Diary / 手工编辑本地立即生效,不消耗云预算。
云端任务同步 2h diff 只传增量,不做“每改一行就上云”。
全量对账 每天 1 次 用于纠偏、补漏、稳定 ID、清理误差。
通知 只在 change / failure no-op 不打扰,保持系统安静。

Diary 与 Todo 应该怎么整合

正确关系

Diary 是每日证据流,Todo 是决策层。

  • Diary 保留分数、总结、今日焦点、健康记录、任务执行流水。
  • Todo 不复制所有原文,只吸收可操作的结构化摘要和引用。
  • Todo 首页展示的是“今天 / 本周应该收什么”,点进去再跳回 Diary 原文证据。
System Layering
myObsidian tasks · project README · DailyRecord Diary score · summary · task execution · priority Manual Editor issue-like writing · structured text Canonical Data task daily_entry execution_event score_snapshot source_doc / relation Overview list · filters · fold preview Priority quadrant · urgency · importance Timeline scatter · owner type · sequence
最关键的一层不是“页面”,而是居中的 canonical data。页面和皮肤都应该从它派生。

首页应该怎么改

你的判断是对的:首页不该只是任务列表,应该先回答“今天最该做什么”。但四象限和时间轴要作为透镜,不要反过来定义原始任务。

Homepage Lens A
重要性 → 紧急性 → 重要 · 紧急 重要 · 不紧急 不重要 · 紧急 不重要 · 不紧急 你今天必须推进 重要但可计划 别人催、但不该吞掉你 降级、归档或删除
四象限适合做“第一屏判断”,但它只能基于 importance / urgency 的衍生分数来画。
Homepage Lens B
Today +2d +5d +8d +12d 必须你做 协作/判断 AI可做 你今天亲自处理 需要确认/协作 AI 批处理队列
时间轴散点适合回答“什么时候做、谁来做、哪些其实可以下沉给 AI”。

数据层与展示层怎么抽离

职责 建议产物
Source layer 保留原始真相 Obsidian Markdown、Diary 导出的 daily summary、task execution log、manual note
Canonical data layer 统一实体和关系 tasksdaily_entriesexecution_eventsscoresrelations
Materializer layer 计算各种视图数据 overview.jsonpriority.jsontimeline.jsontoday-focus.json
Renderer layer 根据 view spec 渲染页面 render-overview.mjsrender-priority.mjsrender-timeline.mjs
Theme layer 只负责视觉皮肤 themes/github-light.cssthemes/editorial-light.css

一句话:先让数据层稳定,再让页面风格自由生长。 你后面想批量换皮,应该只替换 renderer / theme,不该去碰原始数据和同步逻辑。

推荐的 4 阶段路线

Phase 1

定 canonical schema

先把 task、daily_entry、execution_event、score、relation 定清楚;不要继续让每个页面自己发明字段。

Phase 2

接 Diary 结构化输入

把 diary 当前已有的 Priority / Task Ops / Daily summary 抽成统一 feed,而不是页面互相拷数据。

Phase 3

做 Obsidian round-trip

Editor 写回 Obsidian 文件,定义冲突优先级和 nightly reconcile。到这一步才算真正闭环。

Phase 4

再做高级驾驶舱

四象限、时间轴、AI/人散点、聚焦卡片、周视图,都应该建立在 Phase 1–3 的数据层之上。

现在最正确的下一步

建议下一步不是再画更多页面,而是做这两件事:

  • 第一:把 Diary 的 daily summary / task execution / priority 抽成统一数据 feed,接进 todo 的 canonical data layer。
  • 第二:把 Editor 保存结果按模板写回 myObsidian,完成第一次真正的 round-trip。

这样做完后,todo.zondev.top 就不再只是一个任务前端,而会开始成为你要的那个 “统一 LifeOS Hub”。

Sources & Verification

这份阶段总结把 todo.zondev.top 当前真正完成的东西、还没完成的关键缺口、为什么不该做实时同步、以及如何把 Obsidian、diary.zondev.top、任务执行与优先级收口到同一套 LifeOS Hub 架构里讲清楚。
— One small system