Ambient Context: Local Text-Based Activity Logging for LLM Memory

Ambient Context 是一款專為 macOS 設計的應用程式,旨在建立使用者數位活動的持久性書面記錄,作為大型語言模型 (LLM) 的長期記憶。與依賴螢幕截圖或影片的傳統活動追蹤器不同,Ambient Context 利用 macOS accessibility tree 直接從目前聚焦的視窗中提取文字,並將數據儲存為本地 Markdown 檔案。

Local-First Architecture and Privacy

Ambient Context 遵循嚴格的「本地優先」隱私模型,以確保敏感的使用者數據絕不會離開機器。該應用程式不需要帳號,不使用伺服器,也不包含任何內建模型或遙測數據。

關鍵的隱私保護措施包括:

  • Focused Window Only: 應用程式僅讀取目前聚焦的視窗;它會忽略背景、最小化或螢幕外的視窗,並在螢幕鎖定時停止運作。
  • Automatic Redaction: 密碼管理員和私密瀏覽視窗會被排除在擷取範圍之外。安全輸入欄位會在 accessibility level 進行跳過,且應用程式在寫入磁碟前會清除憑證、API keys 和信用卡號碼。
  • User-Owned Data: 所有記錄都以純 Markdown 檔案的形式儲存在使用者選擇的資料夾中,方便進行 grep 搜尋、手動刪除或遷移。

Technical Implementation via Accessibility API

Ambient Context 並非對螢幕截圖使用光學字元辨識 (OCR),而是利用 macOS accessibility API 來每隔幾秒鐘讀取一次目前聚焦視窗的文字。這種方法能將儲存開銷降至最低,並避免與影像擷取相關的隱私風險。

Compatibility and Limitations

由於該應用程式依賴 accessibility tree,其有效性會因應用程式而異:

  • Chromium and Electron Apps: 像 Chrome、Slack、VS Code 和 Obsidian 等應用程式僅在收到請求時才會建立其 accessibility tree。這可能導致初始擷取內容較「薄」,並在幾秒鐘內逐漸填滿。Chrome 在擷取期間也可能出現輕微的視窗縮放動畫。
  • Terminals: 像 Kitty 和 Alacritty 等 GPU 渲染的終端機幾乎無法透過此 API 提供文字。標準工具如 Terminal.app 和 iTerm2 則獲得完全支援。
  • System Requirements: 應用程式需要在 Apple Silicon 上的 macOS 14+\n

LLM-Optimized Data Format

擷取的數據經過特別結構化,以便讓 AI agent (例如 Claude Code) 讀取並回答有關過去工作內容或自動化狀態報告的問題。

每一天的活動都會記錄在單一的 Markdown 檔案中,具有以下特性:

  • Timeline Structure: 區塊標題會根據時間、應用程式和文件標題來組織當日的活動 (例如:## 09:41–10:05 · Chrome · Tauri tray documentation)。
  • Deduplication: 無論內容出現的頻率如何,正文行內容每天只會寫入一次,以防止檔案變得太大而超出 LLM 的 context window。
  • Contextual Metadata: 每個區塊都會記錄文件路徑或 URL,讓 agent 可以引用原始來源而非僅依賴片段資訊。
  • Agent Guidance: 擷取資料夾中包含一個 AGENTS.md 檔案,向任何讀取該目錄的 LLM 解釋數據格式。

Community Perspectives and Trade-offs

開發者之間的討論顯示,雖然使用 accessibility API 的方法非常精簡,但它在數據「流失性」方面面臨挑戰。

"The accessibility tree works for a lot of things but the more I worked on it the more stuff I found needed pixels."

一些使用者指出,許多應用程式在 accessibility 方面的「佈線」並不正確,這可能需要針對特定應用程式建立自定義設定檔 (profiles) 以實現高保真度的擷取。其他人則建議,整合結構化的數位足跡——例如 git commits、Slack 訊息和電子郵件——對於某些工作流程來說,可能比螢幕抓取 (screen scraping) 提供更可靠的替代方案。

Sources

相關

  • 專案
  • 專案
  • Dispatch
  • 專案
  • Dispatch