我正在构建一个常驻内存代理,它会全天监视我的屏幕,而它的记忆存储在 SQLite 而非模型中。来告诉我它在哪些地方会出问题。
摘要
作者描述了他正在构建一个在 Mac 上本地运行的常驻内存代理,它能监视屏幕并可选地监听音频,将所有内容通过 OCR 或转录转换为结构化 Markdown 存储在 Obsidian 库中,并以 SQLite 作为数据来源。他邀请大家对设计选择提出反馈,例如使用 SQLite 而非向量/图数据库、成本以及此类系统的持久性。
我搭建的每个“第二大脑”最终都变成了坟场。上千条笔记,华丽的图谱视图,却没有一个真正让我的决策变得更好。问题始终在我自己——我必须停下来把事情写下来,而我从来都不做。所以我正在构建一个无论我是否费心记录都能自动抓取的系统。它运行在我的 Mac 上,监视屏幕上的一切(可选地还有麦克风和系统音频),通过 OCR 或转录将所有内容转换为结构化 Markdown 并存入 Obsidian 库。关键点在于捕捉那些我自己永远不会记下的东西:那些不经意间做出的微小决策,以及到第二天早上就消失的上下文。有点像 Rewind 在被 Meta 收购之前做的事情,只不过它不是一个搜索框,而是一个自我维护的维基,而且除非我插入自己拥有的 API 密钥,否则没有任何内容会离开我的机器。以下是我真正希望你们吐槽的地方:数据库是真实来源,Markdown 是可丢弃的。所有真正的状态(身份、去重、搜索、成本跟踪、脱敏守卫)都存储在 SQLite 中。Obsidian 库——即每日笔记、时间线叙述以及每个人员/项目/主题的维基页面——只是我从数据库中重新生成的投影。删掉库文件我可以重建。模型从不拥有记忆,它只是对存储提供的数据进行推理。我之所以这样做,是因为见过太多代理依赖聊天历史“记住”内容,然后在跨会话时完全崩溃。脱敏机制是故障时关闭的。屏幕文本在发送给 LLM 之前会被清除秘密信息,每次发送都会记录到一个只追加的文件中。如果清除器无法运行,则不会向外发送任何内容。绝对如此。自带 API 密钥。支持 Anthropic、OpenAI、OpenRouter,或通过 Ollama 完全本地运行。没有账户,没有托管云。每个文件都有“勿动”和“自由发挥”区域。LLM 只会在标记之间重写其自己的部分。我在这些标记之外输入的任何内容都保持原样,这样我们就不会互相覆盖。我真正不确定的地方:将“DB 作为真实来源,Markdown 作为缓存”是否明智?还是说当我需要真正的检索时,会希望自己使用向量/图数据库?目前我只用 SQLite 加全文搜索,没有嵌入。始终开启的捕获会产生大量近乎相同的文本。我在将内容交给 LLM 之前会压缩近似重复项,但肯定也丢失了一些信号。全天候捕获的成本迅速变得惊人。你们是如何让始终在线的代理保持低成本的?在调用昂贵的模型之前使用更多本地模型分流?真正的问题是:有什么办法能让记忆系统在两个月后依然持续使用,而不是变成只写不读?我独自在构建这个,很乐意在评论中深入探讨任何部分。主要是想听听设计上哪些地方比较天真。
相似文章
我曾以为Markdown记忆对智能体足够用了。结果它变成了提示债。
作者反思了将扁平化Markdown文件用作智能体长期记忆的局限性,随着记忆增长,这导致了提示债,并提倡使用基于图的记忆表示方法,动态检索相关上下文。
@svpino:开源总有办法!这是一个面向 Mac 用户的开源、本地优先的 LLM 智能体记忆层
一个面向 macOS 的开源、本地优先的 LLM 智能体记忆层,可捕捉用户活动并保存为 Markdown 文件
我曾询问是否存在一种以本地优先的 Markdown 记忆服务器。你们给出了约 20 个建议。以下是我逐一调研后的发现。
全面回顾以本地优先的 AI 智能体记忆系统,对比了 mem0、Hindsight 和 mnem 等选项,最终推荐 Engram,因为它独特地结合了本地存储和人类可读的 Markdown 文件。
寻求反馈:一个AI智能体和人类都能使用的记忆系统
作者介绍了Noosphere,一个面向AI智能体和人类的开源记忆与维基层,正在寻求对其基于Postgres的结构化记忆、Redis缓存的召回机制以及可人工编辑的维基页面的反馈。
我开发了一款开源桌面应用,让你的AI跨所有平台拥有持久记忆(100%本地SQLite,零Docker)
ArcRift是一款开源桌面应用和Chrome扩展,通过本地SQLite数据库和Ollama,为跨平台(如Claude和ChatGPT)的AI聊天提供持久化的本地记忆,解决了AI健忘症的问题。