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: 密码管理器和私密浏览窗口会被排除在捕获范围之外。安全输入字段会在辅助功能层面被跳过,且应用会在写入磁盘之前清除凭据、API keys 和信用卡号。
- User-Owned Data: 所有记录都以纯 Markdown 文件形式存储在用户选择的文件夹中,便于进行 grep 搜索、手动删除或迁移。
Technical Implementation via Accessibility API
Ambient Context 并不使用截图的光学字符识别 (OCR),而是利用 macOS 辅助功能 API 来每隔几秒钟读取一次聚焦窗口的文本。这种方法最大限度地减少了存储开销,并避免了与基于图像的捕获相关的隐私风险。
Compatibility and Limitations
由于该应用依赖于辅助功能树,其有效性因应用程序而异:
- Chromium and Electron Apps: 像 Chrome、Slack、VS Code 和 Obsidian 等应用程序仅在被请求时才构建其辅助功能树。这可能导致初始捕获的内容较为“薄弱”,并在几秒钟内逐渐填充。Chrome 在捕获过程中也可能表现出轻微的窗口调整大小的动画。
- Terminals: Kitty 和 Alacritty 等 GPU 渲染的终端几乎无法通过此 API 提供文本。标准的 Terminal.app 和 iTerm2 则得到完全支持。
- System Requirements: 该应用要求在 Apple Silicon 芯片的设备上运行 macOS 14+
LLM-Optimized Data Format
捕获的数据经过专门结构化,以便被 AI 智能体 (例如 Claude Code) 摄取,从而回答有关过去工作的问题或自动生成状态报告。
每天的记录会保存在一个单一的 Markdown 文件中,具有以下特点:
- Timeline Structure: 块标题按时间、应用程序和文档标题对当天的活动进行组织 (例如,
## 09:41–10:05 · Chrome · Tauri tray documentation)。 - Deduplication: 无论内容被看到多少次,正文行仅每天写入一次,以防止文件变得过大而超出 LLM 的上下文窗口。
- Contextual Metadata: 每个块都会记录文档路径或 URL,允许智能体引用原始出处,而不是仅依赖于片段。
- Agent Guidance: 捕获文件夹中包含一个
AGENTS.md文件,向任何读取该目录的 LLM 提供数据格式说明。
Community Perspectives and Trade-offs
开发者之间的讨论表明,虽然辅助功能 API 的方法非常精简,但它在数据“损耗”方面面临挑战。
"The accessibility tree works for a lot of things but the more I worked on it the more stuff I found needed pixels."
一些用户指出,许多应用程序并未针对辅助功能进行“正确配置”,这可能需要为特定应用创建自定义配置文件以实现高保真捕获。其他人则建议,将与结构化的数字足迹(如 git commits、Slack 消息和电子邮件)集成,可能为某些工作流提供比屏幕抓取更可靠的替代方案。
Sources
相关
- 项目
- 项目
- Dispatch
- 项目
- Dispatch