Ambient Context
一个 macOS 菜单栏应用,记录你工作内容的文字记录,供你自己的 LLM 阅读。

当菜单栏中的眼睛睁开时,Ambient Context 会读取你当前聚焦窗口的文本(通过 macOS 辅助功能树,每隔几秒一次),并将其追加到一个纯 Markdown 文件中:每天一个文件,保存在你选择的文件夹中。将 Claude Code 或任何其他代理指向该文件夹,它就能回答“我周二做了什么?”,建立关于你项目的记忆,或为你撰写站会报告。
- 无截图、无视频。 它只通过辅助功能 API 读取文本,别无其他。
- 数据不会离开你的设备。 无需账户、无需服务器、无遥测、无内置模型。此版本完全不做网络调用;签名发布版将仅增加一次针对 GitHub 的更新检查。
- 你拥有的文件。 纯 Markdown 存储在你选择的文件夹中。可随意移动、grep、删除。
- 写入前脱敏。 密码管理器和隐私浏览窗口永远不会被捕获。密码字段在源头即被跳过,凭据、API 密钥和卡号形状的数字在写入磁盘前会被清除。
- 为 LLM 读取而构建。 每天的行会去重,界面垃圾信息被过滤,每个块记录其来源文档路径或 URL,以便你的代理可以打开真实内容而不是依赖片段。文件夹中带有
AGENTS.md文件,向任何读取者解释该格式。
需要 Apple Silicon 上的 macOS 14+。
状态
早期版本且未签名。目前还没有公证过的下载(Apple Developer 注册正在进行中),所以现在你需要自行构建,大约需要两分钟:
构建与运行
你需要 Node、Rust 和 Xcode Command Line Tools。
git clone https://github.com/dragthelake/ambient-context
cd ambient-context
npm install
npm run tauri build
应用生成在 src-tauri/target/release/bundle/macos/ 中。将 Ambient Context.app 拖到 Applications 文件夹并打开。
开发时,npm run tauri dev 可热重载运行。
首次运行
- 设置窗口会自动打开。按提示授予辅助功能权限:这是让应用读取窗口文本的权限,没有它一切都无法工作。
- 选择保存位置。默认是
~/Ambient Context,特意放在~/Documents之外,以免 iCloud 把你的记录同步到其他设备。 - 就这样。设置完成后即开始录制,并从此随应用启动。点击菜单栏中的眼睛可停止;停止状态会被记住,直到你再次启动。
眼睛睁开:录制中。眼睛闭合:未录制。右键点击图标可查看今天的文件、文件夹和设置。
一天文件的样子
---
date: 2026-08-25
captured_by: Ambient Context 0.1.0
---
## 09:41–10:05 · Chrome · Tauri 托盘文档
url: https://v2.tauri.app/learn/system-tray/
<该窗口中看到的文本,当日首次出现>
块标题是当天的时间线。正文行每天只写一次,无论被看到多少次,因此文件保持足够小,可以整体交给 LLM。捕获文件夹中的 AGENTS.md 记录了格式和最佳读取方式。
测试者注意事项
- Chromium 和 Electron 应用(Chrome、Slack、VS Code、Obsidian、Figma 等)仅在请求时才构建辅助功能树,因此这些应用在捕获的前几秒内容较稀疏,后续轮次会补全。Chrome 在启用时可能显示轻微异常的窗口调整大小动画;这是该机制的已知代价。
- GPU 渲染的终端(Kitty、Alacritty)暴露的文本很少或没有。Terminal.app 和 iTerm2 可以。
- 记录你的发现:哪些应用内容丰富、部分或为空,这正是有用的反馈(
docs/census.md中有模板)。
测试
cd src-tauri && cargo test
隐私模型,一段话
该应用仅读取聚焦窗口:从不读取后台窗口、其他显示器或最小化窗口,也绝不在屏幕锁定时读取。它完全排除密码管理器和隐私浏览,在辅助功能层面跳过安全输入字段,并在写入前通过模式匹配清除机密。它生成的所有内容都是你自己磁盘上的纯文本,且捕获文件夹本身被排除在捕获之外,因此它无法观察自身。如果你在其中发现任何漏洞,请提交 issue。