架构

四层管线 · 采集 → 存储 → 推断 → 呈现。除 Claude API 调用外,全部在本机。

Chronicler 架构图

四层管线

📝

采集

三个独立采集源(菜单栏、ambient widget、后台轮询)由 launchd 托管开机自启。5 分钟无操作自动暂停,整夜挂机不算入任何身份。

💾

存储

单文件 SQLite(~/.chronicle/chronicle.db)· 6 个表 · WAL 模式 · 零配置 · 完全离线可用。

🧠

推断

Classifier(主,LLM)+ Heuristic(降级,纯关键词)+ Budget(守门,$10 / 月上限)。唯一跨网络的层。

📖

呈现

每日 digest、离场卡片、周报、inferred 分段。全部以 Markdown 写入 Obsidian vault(iCloud 同步,iOS 可读)。

技术栈

  • Python 3.11+ · pyobjc (AppKit / Quartz) · AppleScript (osascript)
  • SQLite 3 (stdlib) · WAL mode · 6 tables
  • pywebview 6.2.1 · rumps 0.4 · PyYAML · python-dateutil
  • Anthropic SDK · Claude Opus 4.7 · prompt caching
  • launchd · 4 plist agents (collector / menubar / lobby / classify)

数据模型

events                  -- 30s poll rows (app + title + ts + context)
sessions                -- manual switches; may carry an exit-card
state                   -- singleton: current context
inferred_segments       -- classifier output (per-day time slices)
classifier_corrections  -- user overrides, fed back as few-shot
llm_calls               -- cost tracking + budget cap
← 返回首页