用途
Dayflow Review 用于对本地 Dayflow 数据进行回顾,可生成每日或每周的总结。它仅支持 macOS,数据来源为本地 Dayflow 的 SQLite 数据库。
数据位置与结构
数据库路径为 ~/Library/Application Support/Dayflow/chunks.sqlite,同时可能存在 WAL 文件 chunks.sqlite-wal 与 chunks.sqlite-shm。
查询时需始终过滤软删除记录,即使用 WHERE is_deleted = 0。
关键表包括:
- timeline_cards:主要活动区块,字段有 day、start_ts、end_ts、title、category、subcategory、metadata。
- journal_entries:每日意图与反思。
使用方式
资料提供了 Python 连接示例,使用标准库 sqlite3 连接数据库文件,并设置 busy_timeout。代码示例如下:
# /// script
# dependencies = []
# ///
import sqlite3
from pathlib import Path
path = Path.home() / "Library" / "Application Support" / "Dayflow" / "chunks.sqlite"
conn = sqlite3.connect(str(path), timeout=5.0)
conn.row_factory = sqlite3.Row
conn.execute("PRAGMA busy_timeout = 5000")
若需要把 JSON 输出给外部工具,建议用 jq 缩小字段范围。对于小型查询,尽量在 SQL 或 Python 中完成过滤,避免引入额外依赖。
主要能力与参考查询
资料给出以下时长换算辅助表达式:
(end_ts - start_ts) / 60.0 AS minutes
ROUND((end_ts - start_ts) / 3600.0, 2) AS hours
每日类别汇总:
SELECT category,
ROUND(SUM(end_ts - start_ts) / 3600.0, 2) AS hours
FROM timeline_cards
WHERE day = date('now') AND is_deleted = 0
GROUP BY category
ORDER BY hours DESC;
每周总计:
SELECT category,
ROUND(SUM(end_ts - start_ts) / 3600.0, 2) AS hours
FROM timeline_cards
WHERE day >= date('now', '-7 days') AND is_deleted = 0
GROUP BY category
ORDER BY hours DESC;
专注会话(30 分钟以上的工作):
SELECT day, start, end, title,
ROUND((end_ts - start_ts) / 60.0, 1) AS duration_min
FROM timeline_cards
WHERE category = 'Work'
AND is_deleted = 0
AND (end_ts - start_ts) >= 1800
ORDER BY duration_min DESC;
适用场景
适合在 macOS 上对自己记录的 Dayflow 时间线做每日或每周回顾,按类别统计时间投入,并识别 30 分钟以上的连续工作会话。
限制
仅支持 macOS。其余平台、安装步骤、收费或价格信息暂未提供。